1// Template materials for integrated depth shadows 2 3vertex_program Ogre/shadow/caster/depth/vpCg cg 4{ 5 source depthshadowobject.cg 6 profiles vs_1_1 arbvp1 7 entry_point main_vp 8 compile_arguments -DSHADOWCASTER=1 -DDEPTH_SHADOWCASTER=1 -DDEPTH_SHADOWRECEIVER=0 9 10 default_params 11 { 12 param_named_auto worldViewProj worldviewproj_matrix 13 param_named_auto depthRange scene_depth_range 0 14 } 15} 16 17fragment_program Ogre/shadow/caster/depth/fpCg cg 18{ 19 source depthshadowobject.cg 20 profiles ps_2_x arbfp1 21 entry_point main_fp 22 compile_arguments -DSHADOWCASTER=1 -DDEPTH_SHADOWCASTER=1 -DDEPTH_SHADOWRECEIVER=0 23 24 default_params 25 { 26 } 27} 28 29vertex_program Ogre/shadow/receiver/depth/pssm3/vpCg cg 30{ 31 source depthshadowobject.cg 32 profiles vs_1_1 arbvp1 33 entry_point main_vp 34 compile_arguments -DSHADOWCASTER=0 -DDEPTH_SHADOWCASTER=0 -DDEPTH_SHADOWRECEIVER=1 35 36 default_params 37 { 38 param_named_auto worldViewProj worldviewproj_matrix 39 param_named_auto lightPosition light_position_object_space 0 40 param_named_auto lightDiffuse derived_light_diffuse_colour 0 41 param_named_auto depthRange0 shadow_scene_depth_range 0 42 param_named_auto depthRange1 shadow_scene_depth_range 1 43 param_named_auto depthRange2 shadow_scene_depth_range 2 44 45 param_named_auto texWorldViewProjMatrix0 texture_worldviewproj_matrix 0 46 param_named_auto texWorldViewProjMatrix1 texture_worldviewproj_matrix 1 47 param_named_auto texWorldViewProjMatrix2 texture_worldviewproj_matrix 2 48 } 49} 50 51fragment_program Ogre/shadow/receiver/depth/pssm3/fpCg cg 52{ 53 source depthshadowobject.cg 54 profiles ps_2_x arbfp1 55 entry_point main_fp 56 compile_arguments -DSHADOWCASTER=0 -DDEPTH_SHADOWCASTER=0 -DDEPTH_SHADOWRECEIVER=1 57 58 default_params 59 { 60 param_named_auto materialAmbient derived_ambient_light_colour 61 // shadow samplers are indexes 1/2/3 62 param_named_auto inverseShadowmapSize0 inverse_texture_size 1 63 param_named_auto inverseShadowmapSize1 inverse_texture_size 2 64 param_named_auto inverseShadowmapSize2 inverse_texture_size 3 65 //SET THIS MANUALLY! 66 //param_named pssmSplitPoints 0 0 0 0 67 } 68} 69 70vertex_program Ogre/shadow/caster/depth/vphlsl hlsl 71{ 72 source depthshadowobject.hlsl 73 target vs_4_0 vs_4_0_level_9_1 vs_4_0_level_9_3 74 entry_point main_vp 75 preprocessor_defines SHADOWCASTER=1;DEPTH_SHADOWCASTER=1;DEPTH_SHADOWRECEIVER=0 76 77 default_params 78 { 79 param_named_auto worldViewProj worldviewproj_matrix 80 param_named_auto depthRange scene_depth_range 0 81 } 82} 83 84fragment_program Ogre/shadow/caster/depth/fphlsl hlsl 85{ 86 source depthshadowobject.hlsl 87 target ps_4_0 ps_4_0_level_9_1 ps_4_0_level_9_3 88 entry_point caster_fp 89 preprocessor_defines SHADOWCASTER=1;DEPTH_SHADOWCASTER=1;DEPTH_SHADOWRECEIVER=0 90 91 default_params 92 { 93 } 94} 95 96vertex_program Ogre/shadow/receiver/depth/pssm3/vphlsl hlsl 97{ 98 source depthshadowobject.hlsl 99 target vs_4_0 vs_4_0_level_9_1 vs_4_0_level_9_3 100 entry_point main_vp 101 preprocessor_defines SHADOWCASTER=0;DEPTH_SHADOWCASTER=0;DEPTH_SHADOWRECEIVER=1 102 103 default_params 104 { 105 param_named_auto worldViewProj worldviewproj_matrix 106 param_named_auto lightPosition light_position_object_space 0 107 param_named_auto lightDiffuse derived_light_diffuse_colour 0 108 param_named_auto depthRange0 shadow_scene_depth_range 0 109 param_named_auto depthRange1 shadow_scene_depth_range 1 110 param_named_auto depthRange2 shadow_scene_depth_range 2 111 112 param_named_auto texWorldViewProjMatrix0 texture_worldviewproj_matrix 0 113 param_named_auto texWorldViewProjMatrix1 texture_worldviewproj_matrix 1 114 param_named_auto texWorldViewProjMatrix2 texture_worldviewproj_matrix 2 115 } 116} 117 118fragment_program Ogre/shadow/receiver/depth/pssm3/fphlsl hlsl 119{ 120 source depthshadowobject.hlsl 121 target ps_4_0 ps_4_0_level_9_1 ps_4_0_level_9_3 122 entry_point caster_fp 123 preprocessor_defines SHADOWCASTER=0;DEPTH_SHADOWCASTER=0;DEPTH_SHADOWRECEIVER=1 124 125 default_params 126 { 127 param_named_auto materialAmbient derived_ambient_light_colour 128 // shadow samplers are indexes 1/2/3 129 param_named_auto inverseShadowmapSize0 inverse_texture_size 1 130 param_named_auto inverseShadowmapSize1 inverse_texture_size 2 131 param_named_auto inverseShadowmapSize2 inverse_texture_size 3 132 //SET THIS MANUALLY! 133 //param_named pssmSplitPoints 0 0 0 0 134 } 135} 136 137vertex_program Ogre/shadow/caster/depth/vpGLSL glsl 138{ 139 source DepthShadowObjectVp.glsl 140 syntax glsl150 141 preprocessor_defines SHADOWCASTER=1,DEPTH_SHADOWCASTER=1,DEPTH_SHADOWRECEIVER=0 142 143 default_params 144 { 145 param_named_auto worldViewProj worldviewproj_matrix 146 param_named_auto depthRange scene_depth_range 0 147 } 148} 149 150fragment_program Ogre/shadow/caster/depth/fpGLSL glsl 151{ 152 source DepthShadowObjectFp.glsl 153 syntax glsl150 154 preprocessor_defines SHADOWCASTER=1,DEPTH_SHADOWCASTER=1,DEPTH_SHADOWRECEIVER=0 155 156 default_params 157 { 158 param_named diffuseMap int 0 159 } 160} 161 162vertex_program Ogre/shadow/receiver/depth/pssm3/vpGLSL glsl 163{ 164 source DepthShadowObjectVp.glsl 165 syntax glsl150 166 preprocessor_defines SHADOWCASTER=0,DEPTH_SHADOWCASTER=0,DEPTH_SHADOWRECEIVER=1 167 168 default_params 169 { 170 param_named_auto worldViewProj worldviewproj_matrix 171 param_named_auto lightPosition light_position_object_space 0 172 param_named_auto lightDiffuse derived_light_diffuse_colour 0 173 param_named_auto depthRange0 shadow_scene_depth_range 0 174 param_named_auto depthRange1 shadow_scene_depth_range 1 175 param_named_auto depthRange2 shadow_scene_depth_range 2 176 177 param_named_auto texWorldViewProjMatrix0 texture_worldviewproj_matrix 0 178 param_named_auto texWorldViewProjMatrix1 texture_worldviewproj_matrix 1 179 param_named_auto texWorldViewProjMatrix2 texture_worldviewproj_matrix 2 180 } 181} 182 183fragment_program Ogre/shadow/receiver/depth/pssm3/fpGLSL glsl 184{ 185 source DepthShadowObjectFp.glsl 186 syntax glsl150 187 preprocessor_defines SHADOWCASTER=0,DEPTH_SHADOWCASTER=0,DEPTH_SHADOWRECEIVER=1 188 189 default_params 190 { 191 param_named_auto materialAmbient derived_ambient_light_colour 192 // shadow samplers are indexes 1/2/3 193 param_named_auto inverseShadowmapSize0 inverse_texture_size 1 194 param_named_auto inverseShadowmapSize1 inverse_texture_size 2 195 param_named_auto inverseShadowmapSize2 inverse_texture_size 3 196 param_named diffuseMap int 0 197 param_named shadowMap0 int 1 198 param_named shadowMap1 int 2 199 param_named shadowMap2 int 3 200 201 //SET THIS MANUALLY! 202 //param_named pssmSplitPoints 0 0 0 0 203 } 204} 205 206vertex_program Ogre/shadow/caster/depth/vp unified 207{ 208 delegate Ogre/shadow/caster/depth/vpGLSL 209 delegate Ogre/shadow/caster/depth/vphlsl 210 delegate Ogre/shadow/caster/depth/vpCg 211} 212 213vertex_program Ogre/shadow/receiver/depth/pssm3/vp unified 214{ 215 delegate Ogre/shadow/receiver/depth/pssm3/vpGLSL 216 delegate Ogre/shadow/receiver/depth/pssm3/vphlsl 217 delegate Ogre/shadow/receiver/depth/pssm3/vpCg 218} 219 220fragment_program Ogre/shadow/caster/depth/fp unified 221{ 222 delegate Ogre/shadow/caster/depth/fpGLSL 223 delegate Ogre/shadow/caster/depth/fphlsl 224 delegate Ogre/shadow/caster/depth/fpCg 225} 226 227fragment_program Ogre/shadow/receiver/depth/pssm3/fp unified 228{ 229 delegate Ogre/shadow/receiver/depth/pssm3/fpGLSL 230 delegate Ogre/shadow/receiver/depth/pssm3/fphlsl 231 delegate Ogre/shadow/receiver/depth/pssm3/fpCg 232} 233 234material Ogre/shadow/depth/caster 235{ 236 technique 237 { 238 pass 239 { 240 vertex_program_ref Ogre/shadow/caster/depth/vp 241 { 242 } 243 fragment_program_ref Ogre/shadow/caster/depth/fp 244 { 245 } 246 } 247 } 248} 249 250material Ogre/shadow/depth/integrated/pssm 251{ 252 technique 253 { 254 // link to caster material 255 shadow_caster_material Ogre/shadow/depth/caster 256 257 pass 258 { 259 vertex_program_ref Ogre/shadow/receiver/depth/pssm3/vp 260 { 261 } 262 fragment_program_ref Ogre/shadow/receiver/depth/pssm3/fp 263 { 264 // you must specify pssmSplitPoints when you instantiate! 265 } 266 267 texture_unit diffuse 268 { 269 // nothing specified for now,derivers can override 270 } 271 272 texture_unit shadow0 273 { 274 content_type shadow 275 tex_address_mode border 276 tex_border_colour 1 1 1 1 277 } 278 texture_unit shadow1 279 { 280 content_type shadow 281 tex_address_mode border 282 tex_border_colour 1 1 1 1 283 } 284 texture_unit shadow2 285 { 286 content_type shadow 287 tex_address_mode border 288 tex_border_colour 1 1 1 1 289 } 290 } 291 } 292} 293