2013-12-19 19:32:50 +01:00

596 lines
14 KiB
Plaintext

// ***-- Begin HLSL section --**
vertex_program Ogre/DepthShadowmap/CasterVP_HLSL hlsl
{
source DepthShadowmap.hlsl
entry_point casterVP
target vs_2_0
preprocessor_defines LINEAR_RANGE=0
default_params
{
param_named_auto worldViewProj worldviewproj_matrix
param_named_auto texelOffsets texel_offsets
//param_named_auto depthRange scene_depth_range
}
}
fragment_program Ogre/DepthShadowmap/CasterFP_HLSL hlsl
{
source DepthShadowmap.hlsl
entry_point casterFP
target ps_2_0
preprocessor_defines LINEAR_RANGE=0
default_params
{
}
}
vertex_program Ogre/DepthShadowmap/ReceiverVP_HLSL hlsl
{
source DepthShadowmap.hlsl
entry_point receiverVP
target vs_2_0
preprocessor_defines LINEAR_RANGE=0
default_params
{
param_named_auto world world_matrix
param_named_auto worldIT inverse_transpose_world_matrix
param_named_auto worldViewProj worldviewproj_matrix
param_named_auto texViewProj texture_viewproj_matrix
param_named_auto lightPosition light_position 0
param_named_auto lightColour light_diffuse_colour 0
//param_named_auto shadowDepthRange shadow_scene_depth_range 0
}
}
fragment_program Ogre/DepthShadowmap/ReceiverFP_HLSL hlsl
{
source DepthShadowmap.hlsl
entry_point receiverFP
target ps_2_0
preprocessor_defines LINEAR_RANGE=0,FUZZY_TEST=0,PCF=0
default_params
{
param_named inverseShadowmapSize float 0.0009765625
param_named fixedDepthBias float 0.0005
param_named gradientClamp float 0.0098
param_named gradientScaleBias float 0
//param_named shadowFuzzyWidth float 1
}
}
fragment_program Ogre/DepthShadowmap/ReceiverFPPCF_HLSL hlsl
{
source DepthShadowmap.hlsl
entry_point receiverFP
target ps_2_0
preprocessor_defines LINEAR_RANGE=0,FUZZY_TEST=0,PCF=1
default_params
{
param_named inverseShadowmapSize float 0.0009765625
param_named gradientClamp float 0.0098
param_named gradientScaleBias float 0
//param_named shadowFuzzyWidth float 1
}
}
vertex_program Ogre/DepthShadowmap/NormalMapReceiverVP_HLSL hlsl
{
source DepthShadowmap.hlsl
entry_point normalMapShadowReceiverVp
target vs_2_0
preprocessor_defines LINEAR_RANGE=0
default_params
{
param_named_auto world world_matrix
param_named_auto worldViewProj worldviewproj_matrix
param_named_auto texViewProj texture_viewproj_matrix
param_named_auto lightPosition light_position_object_space 0
//param_named_auto shadowDepthRange shadow_scene_depth_range 0
}
}
fragment_program Ogre/DepthShadowmap/NormalMapReceiverFP_HLSL hlsl
{
source DepthShadowmap.hlsl
entry_point normalMapShadowReceiverFp
target ps_2_0
preprocessor_defines LINEAR_RANGE=0,FUZZY_TEST=0,PCF=0
default_params
{
param_named_auto lightColour light_diffuse_colour 0
param_named inverseShadowmapSize float 0.0009765625
param_named fixedDepthBias float 0.0005
param_named gradientClamp float 0.0098
param_named gradientScaleBias float 0
//param_named shadowFuzzyWidth float 1
}
}
fragment_program Ogre/DepthShadowmap/NormalMapReceiverFPPCF_HLSL hlsl
{
source DepthShadowmap.hlsl
entry_point normalMapShadowReceiverFp
target ps_2_0
preprocessor_defines LINEAR_RANGE=0,FUZZY_TEST=0,PCF=1
default_params
{
param_named_auto lightColour light_diffuse_colour 0
param_named inverseShadowmapSize float 0.0009765625
param_named fixedDepthBias float 0.0005
param_named gradientClamp float 0.0098
param_named gradientScaleBias float 0
//param_named shadowFuzzyWidth float 1
}
}
// **-- End HLSL Section --**
// **-- Begin GLSL Section --**
vertex_program Ogre/DepthShadowmap/CasterVP_GLSL glsl
{
source DepthShadowmapCasterVp.glsl
preprocessor_defines LINEAR_RANGE=0
default_params
{
param_named_auto worldViewProj worldviewproj_matrix
param_named_auto texelOffsets texel_offsets
//param_named_auto depthRange scene_depth_range
}
}
fragment_program Ogre/DepthShadowmap/CasterFP_GLSL glsl
{
source DepthShadowmapCasterFp.glsl
preprocessor_defines LINEAR_RANGE=0
default_params
{
}
}
vertex_program Ogre/DepthShadowmap/ReceiverVP_GLSL glsl
{
source DepthShadowmapReceiverVp.glsl
preprocessor_defines LINEAR_RANGE=0
default_params
{
param_named_auto world world_matrix
param_named_auto worldIT inverse_transpose_world_matrix
param_named_auto worldViewProj worldviewproj_matrix
param_named_auto texViewProj texture_viewproj_matrix
param_named_auto lightPosition light_position 0
param_named_auto lightColour light_diffuse_colour 0
//param_named_auto shadowDepthRange shadow_scene_depth_range 0
}
}
fragment_program Ogre/DepthShadowmap/ReceiverFP_GLSL glsl
{
source DepthShadowmapReceiverFp.glsl
preprocessor_defines LINEAR_RANGE=0,FUZZY_TEST=0,PCF=0
default_params
{
param_named shadowMap int 0
param_named inverseShadowmapSize float 0.0009765625
param_named fixedDepthBias float 0.0005
param_named gradientClamp float 0.0098
param_named gradientScaleBias float 0
//param_named shadowFuzzyWidth float 1
}
}
fragment_program Ogre/DepthShadowmap/ReceiverFPPCF_GLSL glsl
{
source DepthShadowmapReceiverFp.glsl
preprocessor_defines LINEAR_RANGE=0,FUZZY_TEST=0,PCF=1
default_params
{
param_named inverseShadowmapSize float 0.0009765625
param_named gradientClamp float 0.0098
param_named gradientScaleBias float 0
//param_named shadowFuzzyWidth float 1
}
}
vertex_program Ogre/DepthShadowmap/NormalMapReceiverVP_GLSL glsl
{
source DepthShadowmapNormalMapReceiverVp.glsl
preprocessor_defines LINEAR_RANGE=0
default_params
{
param_named_auto world world_matrix
param_named_auto worldViewProj worldviewproj_matrix
param_named_auto texViewProj texture_viewproj_matrix
param_named_auto lightPosition light_position_object_space 0
//param_named_auto shadowDepthRange shadow_scene_depth_range 0
}
}
fragment_program Ogre/DepthShadowmap/NormalMapReceiverFP_GLSL glsl
{
source DepthShadowmapNormalMapReceiverFp.glsl
preprocessor_defines LINEAR_RANGE=0,FUZZY_TEST=0,PCF=0
default_params
{
param_named_auto lightColour light_diffuse_colour 0
param_named inverseShadowmapSize float 0.0009765625
param_named fixedDepthBias float 0.0005
param_named gradientClamp float 0.0098
param_named gradientScaleBias float 0
//param_named shadowFuzzyWidth float 1
param_named shadowMap int 0
param_named normalMap int 1
}
}
fragment_program Ogre/DepthShadowmap/NormalMapReceiverFPPCF_GLSL glsl
{
source DepthShadowmapNormalMapReceiverFp.glsl
preprocessor_defines LINEAR_RANGE=0,FUZZY_TEST=0,PCF=1
default_params
{
param_named_auto lightColour light_diffuse_colour 0
param_named inverseShadowmapSize float 0.0009765625
param_named fixedDepthBias float 0.0005
param_named gradientClamp float 0.0098
param_named gradientScaleBias float 0
//param_named shadowFuzzyWidth float 1
param_named shadowMap int 0
param_named normalMap int 1
}
}
// **-- End GLSL Section --**
// **-- Begin Unified Section --**
vertex_program Ogre/DepthShadowmap/CasterVP unified
{
delegate Ogre/DepthShadowmap/CasterVP_GLSL
delegate Ogre/DepthShadowmap/CasterVP_HLSL
}
fragment_program Ogre/DepthShadowmap/CasterFP unified
{
delegate Ogre/DepthShadowmap/CasterFP_GLSL
delegate Ogre/DepthShadowmap/CasterFP_HLSL
}
vertex_program Ogre/DepthShadowmap/ReceiverVP unified
{
delegate Ogre/DepthShadowmap/ReceiverVP_GLSL
delegate Ogre/DepthShadowmap/ReceiverVP_HLSL
}
fragment_program Ogre/DepthShadowmap/ReceiverFP unified
{
delegate Ogre/DepthShadowmap/ReceiverFP_GLSL
delegate Ogre/DepthShadowmap/ReceiverFP_HLSL
}
fragment_program Ogre/DepthShadowmap/ReceiverFPPCF unified
{
delegate Ogre/DepthShadowmap/ReceiverFPPCF_GLSL
delegate Ogre/DepthShadowmap/ReceiverFPPCF_HLSL
}
vertex_program Ogre/DepthShadowmap/NormalMapReceiverVP unified
{
delegate Ogre/DepthShadowmap/NormalMapReceiverVP_HLSL
delegate Ogre/DepthShadowmap/NormalMapReceiverVP_GLSL
}
vertex_program Ogre/DepthShadowmap/NormalMapReceiverFP unified
{
delegate Ogre/DepthShadowmap/NormalMapReceiverFP_HLSL
delegate Ogre/DepthShadowmap/NormalMapReceiverFP_GLSL
}
vertex_program Ogre/DepthShadowmap/NormalMapReceiverFPPCF unified
{
delegate Ogre/DepthShadowmap/NormalMapReceiverFPPCF_HLSL
delegate Ogre/DepthShadowmap/NormalMapReceiverFPPCF_GLSL
}
// **-- End Unified Section --**
// Generic Shadow caster material (floating point shadowmap)
material Ogre/DepthShadowmap/Caster/Float
{
technique
{
pass
{
vertex_program_ref Ogre/DepthShadowmap/CasterVP
{
}
fragment_program_ref Ogre/DepthShadowmap/CasterFP
{
}
}
}
}
// Generic Shadow receiver material (floating point shadowmap)
material Ogre/DepthShadowmap/Receiver/Float
{
technique
{
pass
{
vertex_program_ref Ogre/DepthShadowmap/ReceiverVP
{
}
fragment_program_ref Ogre/DepthShadowmap/ReceiverFP
{
}
texture_unit ShadowMap
{
tex_address_mode clamp
filtering none
}
}
}
}
// Specific receiver material for rockwall
material Ogre/DepthShadowmap/Receiver/RockWall
{
// This is the preferred technique which uses both vertex and
// fragment programs, supports coloured lights
technique
{
// Base ambient pass
pass
{
// base colours, not needed for rendering, but as information
// to lighting pass categorisation routine
ambient 1 1 1
diffuse 0 0 0
specular 0 0 0 0
// Really basic vertex program
vertex_program_ref Ogre/BasicVertexPrograms/AmbientOneTextureUnified
{
}
}
// Now do the lighting pass
// NB we don't do decal texture here because this is repeated per light
pass lighting
{
// base colours, not needed for rendering, but as information
// to lighting pass categorisation routine
ambient 0 0 0
// do this for each light
iteration once_per_light
scene_blend add
// Vertex program reference
vertex_program_ref Ogre/DepthShadowmap/ReceiverVP
{
}
shadow_receiver_vertex_program_ref Ogre/DepthShadowmap/ReceiverVP
{
}
// Fragment program
fragment_program_ref Ogre/DepthShadowmap/ReceiverFP
{
}
shadow_receiver_fragment_program_ref Ogre/DepthShadowmap/ReceiverFP
{
}
// shadowmap texture will be bound by code
}
// Decal pass
pass
{
// base colours, not needed for rendering, but as information
// to lighting pass categorisation routine
lighting off
// Really basic vertex program
vertex_program_ref Ogre/BasicVertexPrograms/AmbientOneTextureUnified
{
param_named ambient float4 1 1 1 1
}
scene_blend dest_colour zero
texture_unit
{
texture rockwall.tga
}
}
}
}
// Specific receiver material for Athene
material Ogre/DepthShadowmap/Receiver/Athene
{
// This is the preferred technique which uses both vertex and
// fragment programs, supports coloured lights
technique
{
// Base ambient pass
pass
{
// base colours, not needed for rendering, but as information
// to lighting pass categorisation routine
ambient 1 1 1
diffuse 0 0 0
specular 0 0 0 0
// Really basic vertex program
vertex_program_ref Ogre/BasicVertexPrograms/AmbientOneTextureUnified
{
}
}
// Now do the lighting pass
// NB we don't do decal texture here because this is repeated per light
pass lighting
{
// base colours, not needed for rendering, but as information
// to lighting pass categorisation routine
ambient 0 0 0
// do this for each light
iteration once_per_light
scene_blend add
// Vertex program reference
vertex_program_ref Ogre/DepthShadowmap/NormalMapReceiverVP
{
}
shadow_receiver_vertex_program_ref Ogre/DepthShadowmap/NormalMapReceiverVP
{
}
// Fragment program
fragment_program_ref Ogre/DepthShadowmap/NormalMapReceiverFP
{
}
shadow_receiver_fragment_program_ref Ogre/DepthShadowmap/NormalMapReceiverFP
{
}
// shadowmap texture will be bound by code
// Base bump map
texture_unit
{
texture atheneNormalMap.png
colour_op replace
}
// Normalisation cube map
texture_unit
{
cubic_texture nm.png combinedUVW
tex_coord_set 1
tex_address_mode clamp
}
}
// Decal pass
pass
{
// base colours, not needed for rendering, but as information
// to lighting pass categorisation routine
lighting off
// Really basic vertex program
vertex_program_ref Ogre/BasicVertexPrograms/AmbientOneTextureUnified
{
param_named ambient float4 1 1 1 1
}
scene_blend dest_colour zero
texture_unit
{
texture egyptrockyfull.jpg
}
}
}
}
// Specialisation to use PCF
material Ogre/DepthShadowmap/Receiver/Float/PCF : Ogre/DepthShadowmap/Receiver/Float
{
technique
{
pass
{
// override just receiver program
fragment_program_ref Ogre/DepthShadowmap/ReceiverFPPCF
{
}
}
}
}
// Specialisation to use PCF
material Ogre/DepthShadowmap/Receiver/RockWall/PCF : Ogre/DepthShadowmap/Receiver/RockWall
{
technique
{
pass lighting
{
// override just receiver program
shadow_receiver_fragment_program_ref Ogre/DepthShadowmap/ReceiverFPPCF
{
}
}
}
}
// Specialisation to use PCF
material Ogre/DepthShadowmap/Receiver/Athene/PCF : Ogre/DepthShadowmap/Receiver/Athene
{
technique
{
pass lighting
{
// override just receiver program
shadow_receiver_fragment_program_ref Ogre/DepthShadowmap/NormalMapReceiverFPPCF
{
}
}
}
}