596 lines
14 KiB
Plaintext
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
|
|
{
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
|