vertex_program PersonVPglsl glsl { source UeberShader.hlsl preprocessor_defines main_vp=main;USE_GLSL=1;USE_VERTEX_SHADER=1;USE_FRAGMENT_SHADER=0;NUM_LIGHTS=6;NUM_SHADOW_LIGHTS=6;MAX_LIGHTS=8;HAVE_TEN_TEXCOORD=1;DERIVATIVE_SUPPORT=1;USE_SHADOWS=0;USE_BUMP_MAP=0;USE_NORMAL_MAP=1;USE_AMBIENT=1;USE_AMBIENT_OCCLUSION=1;USE_AMBIENT_ENVIRONMENT=1;USE_DIFFUSE=1;USE_SPECULAR=1;USE_GLOSSINESS=0;START_LIGHT=0;COMBINE_DIFFUSE_DIRT=combineOver;COMBINE_DIFFUSE_CRUFT=combineOverlay;COMBINE_SPECULAR_DIRT=combineMultiply;COMBINE_SPECULAR_CRUFT=combineMultiply;USE_DIFFUSE_DIRT=0;USE_DIFFUSE_CRUFT=0;USE_SPECULAR_DIRT=0;USE_SPECULAR_CRUFT=0;USE_GLOW=0;USE_GLOW_DIRT=0;USE_GLOW_CRUFT=0;USE_REFLECTION=1;USE_SPOTLIGHT=0;USE_SUBSURFACE=1;USE_SKINNING=1;NUM_BONES=3;DEBUG=0 includes_skeletal_animation true } fragment_program PersonFPglsl glsl { source UeberShader.hlsl preprocessor_defines main_fp=main;USE_GLSL=1;USE_VERTEX_SHADER=0;USE_FRAGMENT_SHADER=1;NUM_LIGHTS=6;NUM_SHADOW_LIGHTS=6;MAX_LIGHTS=8;HAVE_TEN_TEXCOORD=1;DERIVATIVE_SUPPORT=1;USE_SHADOWS=0;USE_BUMP_MAP=0;USE_NORMAL_MAP=1;USE_AMBIENT=1;USE_AMBIENT_OCCLUSION=1;USE_AMBIENT_ENVIRONMENT=1;USE_DIFFUSE=1;USE_SPECULAR=1;USE_GLOSSINESS=0;START_LIGHT=0;COMBINE_DIFFUSE_DIRT=combineOver;COMBINE_DIFFUSE_CRUFT=combineOverlay;COMBINE_SPECULAR_DIRT=combineMultiply;COMBINE_SPECULAR_CRUFT=combineMultiply;USE_DIFFUSE_DIRT=0;USE_DIFFUSE_CRUFT=0;USE_SPECULAR_DIRT=0;USE_SPECULAR_CRUFT=0;USE_GLOW=0;USE_GLOW_DIRT=0;USE_GLOW_CRUFT=0;USE_REFLECTION=1;USE_SPOTLIGHT=0;USE_SUBSURFACE=1;USE_SKINNING=1;NUM_BONES=3;DEBUG=0 default_params { // assign samplers as required by GLSL param_named ambientOcclusionMap int 0 param_named diffuseMap int 1 param_named diffuseDirtMap int 2 param_named diffuseCruftMap int 2 param_named diffuseEnvironmentMap int 3 param_named bumpMap int 4 param_named normalMap int 5 param_named specularMap int 6 param_named specularDirtMap int 7 param_named glowMap int 8 param_named reflectionMap int 9 param_named shadowMap0 int 10 param_named shadowMap1 int 11 param_named shadowMap2 int 12 param_named shadowMap3 int 13 param_named shadowMap4 int 14 param_named shadowMap5 int 15 } } vertex_program PersonVPhlsl30 hlsl { source UeberShader.hlsl entry_point main_vp target vs_3_0 preprocessor_defines USE_GLSL=0;USE_VERTEX_SHADER=1;USE_FRAGMENT_SHADER=0;NUM_LIGHTS=6;NUM_SHADOW_LIGHTS=6;MAX_LIGHTS=6;HAVE_TEN_TEXCOORD=1;DERIVATIVE_SUPPORT=1;USE_SHADOWS=0;USE_BUMP_MAP=0;USE_NORMAL_MAP=1;USE_AMBIENT=1;USE_AMBIENT_OCCLUSION=1;USE_AMBIENT_ENVIRONMENT=1;USE_DIFFUSE=1;USE_SPECULAR=1;USE_GLOSSINESS=0;START_LIGHT=0;COMBINE_DIFFUSE_DIRT=combineOver;COMBINE_DIFFUSE_CRUFT=combineOverlay;COMBINE_SPECULAR_DIRT=combineMultiply;COMBINE_SPECULAR_CRUFT=combineMultiply;USE_DIFFUSE_DIRT=0;USE_DIFFUSE_CRUFT=0;USE_SPECULAR_DIRT=0;USE_SPECULAR_CRUFT=0;USE_GLOW=0;USE_GLOW_DIRT=0;USE_GLOW_CRUFT=0;USE_REFLECTION=1;USE_SPOTLIGHT=1;USE_SUBSURFACE=1;USE_SKINNING=1;NUM_BONES=3;DEBUG=0 includes_skeletal_animation true } fragment_program PersonFPhlsl30 hlsl { source UeberShader.hlsl target ps_3_0 entry_point main_fp preprocessor_defines USE_GLSL=0;USE_VERTEX_SHADER=0;USE_FRAGMENT_SHADER=1;NUM_LIGHTS=6;NUM_SHADOW_LIGHTS=6;MAX_LIGHTS=6;HAVE_TEN_TEXCOORD=1;DERIVATIVE_SUPPORT=1;USE_SHADOWS=0;USE_BUMP_MAP=0;USE_NORMAL_MAP=1;USE_AMBIENT=1;USE_AMBIENT_OCCLUSION=1;USE_AMBIENT_ENVIRONMENT=1;USE_DIFFUSE=1;USE_SPECULAR=1;USE_GLOSSINESS=0;START_LIGHT=0;COMBINE_DIFFUSE_DIRT=combineOver;COMBINE_DIFFUSE_CRUFT=combineOverlay;COMBINE_SPECULAR_DIRT=combineMultiply;COMBINE_SPECULAR_CRUFT=combineMultiply;USE_DIFFUSE_DIRT=0;USE_DIFFUSE_CRUFT=0;USE_SPECULAR_DIRT=0;USE_SPECULAR_CRUFT=0;USE_GLOW=0;USE_GLOW_DIRT=0;USE_GLOW_CRUFT=0;USE_REFLECTION=1;USE_SPOTLIGHT=1;USE_SUBSURFACE=1;USE_SKINNING=1;NUM_BONES=3;DEBUG=0 } vertex_program PersonVPhlsl hlsl { source UeberShader.hlsl entry_point main_vp target vs_2_0 preprocessor_defines USE_GLSL=0;USE_VERTEX_SHADER=1;USE_FRAGMENT_SHADER=0;NUM_LIGHTS=4;NUM_SHADOW_LIGHTS=4;MAX_LIGHTS=4;HAVE_TEN_TEXCOORD=0;DERIVATIVE_SUPPORT=1;USE_SHADOWS=0;USE_BUMP_MAP=0;USE_NORMAL_MAP=1;USE_AMBIENT=1;USE_AMBIENT_OCCLUSION=1;USE_AMBIENT_ENVIRONMENT=1;USE_DIFFUSE=1;USE_SPECULAR=1;USE_GLOSSINESS=0;START_LIGHT=0;COMBINE_DIFFUSE_DIRT=combineOver;COMBINE_DIFFUSE_CRUFT=combineOverlay;COMBINE_SPECULAR_DIRT=combineMultiply;COMBINE_SPECULAR_CRUFT=combineMultiply;USE_DIFFUSE_DIRT=0;USE_DIFFUSE_CRUFT=0;USE_SPECULAR_DIRT=0;USE_SPECULAR_CRUFT=0;USE_GLOW=0;USE_GLOW_DIRT=0;USE_GLOW_CRUFT=0;USE_REFLECTION=1;USE_SPOTLIGHT=1;USE_SUBSURFACE=1;USE_SKINNING=1;NUM_BONES=3;DEBUG=0 includes_skeletal_animation true } fragment_program PersonFPhlsl hlsl { source UeberShader.hlsl target ps_2_b entry_point main_fp preprocessor_defines USE_GLSL=0;USE_VERTEX_SHADER=0;USE_FRAGMENT_SHADER=1;NUM_LIGHTS=4;NUM_SHADOW_LIGHTS=4;MAX_LIGHTS=4;HAVE_TEN_TEXCOORD=0;DERIVATIVE_SUPPORT=1;USE_SHADOWS=0;USE_BUMP_MAP=0;USE_NORMAL_MAP=1;USE_AMBIENT=1;USE_AMBIENT_OCCLUSION=1;USE_AMBIENT_ENVIRONMENT=1;USE_DIFFUSE=1;USE_SPECULAR=1;USE_GLOSSINESS=0;START_LIGHT=0;COMBINE_DIFFUSE_DIRT=combineOver;COMBINE_DIFFUSE_CRUFT=combineOverlay;COMBINE_SPECULAR_DIRT=combineMultiply;COMBINE_SPECULAR_CRUFT=combineMultiply;USE_DIFFUSE_DIRT=0;USE_DIFFUSE_CRUFT=0;USE_SPECULAR_DIRT=0;USE_SPECULAR_CRUFT=0;USE_GLOW=0;USE_GLOW_DIRT=0;USE_GLOW_CRUFT=0;USE_REFLECTION=1;USE_SPOTLIGHT=1;USE_SUBSURFACE=1;USE_SKINNING=1;NUM_BONES=3;DEBUG=0 } vertex_program PersonVPcgDX cg { source UeberShader.hlsl profiles vs_2_0 entry_point main_vp compile_arguments -DUSE_GLSL=0 -DUSE_VERTEX_SHADER=1 -DUSE_FRAGMENT_SHADER=0 -DNUM_LIGHTS=4 -DNUM_SHADOW_LIGHTS=4 -DMAX_LIGHTS=4 -DHAVE_TEN_TEXCOORD=0 -DDERIVATIVE_SUPPORT=1 -DUSE_SHADOWS=0 -DUSE_BUMP_MAP=0 -DUSE_NORMAL_MAP=1 -DUSE_AMBIENT=1 -DUSE_AMBIENT_OCCLUSION=1 -DUSE_AMBIENT_ENVIRONMENT=1 -DUSE_DIFFUSE=1 -DUSE_SPECULAR=1 -DUSE_GLOSSINESS=0 -DSTART_LIGHT=0 -DCOMBINE_DIFFUSE_DIRT=combineOver -DCOMBINE_DIFFUSE_CRUFT=combineOverlay -DCOMBINE_SPECULAR_DIRT=combineMultiply -DCOMBINE_SPECULAR_CRUFT=combineMultiply -DUSE_DIFFUSE_DIRT=0 -DUSE_DIFFUSE_CRUFT=0 -DUSE_SPECULAR_DIRT=0 -DUSE_SPECULAR_CRUFT=0 -DUSE_GLOW=0 -DUSE_GLOW_DIRT=0 -DUSE_GLOW_CRUFT=0 -DUSE_REFLECTION=1 -DUSE_SPOTLIGHT=1 -DUSE_SUBSURFACE=1 -DUSE_SKINNING=1 -DNUM_BONES=3 -DDEBUG=0 includes_skeletal_animation true } vertex_program PersonVPcgGL cg { source UeberShader.hlsl profiles arbvp1 entry_point main_vp compile_arguments -DBLENDINDICES=ATTR7 -DBLENDWEIGHT=ATTR1 -profileopts MaxLocalParams=144 -DUSE_GLSL=0 -DUSE_VERTEX_SHADER=1 -DUSE_FRAGMENT_SHADER=0 -DNUM_LIGHTS=4 -DNUM_SHADOW_LIGHTS=4 -DMAX_LIGHTS=4 -DHAVE_TEN_TEXCOORD=0 -DDERIVATIVE_SUPPORT=1 -DUSE_SHADOWS=0 -DUSE_BUMP_MAP=0 -DUSE_NORMAL_MAP=1 -DUSE_AMBIENT=1 -DUSE_AMBIENT_OCCLUSION=1 -DUSE_AMBIENT_ENVIRONMENT=1 -DUSE_DIFFUSE=1 -DUSE_SPECULAR=1 -DUSE_GLOSSINESS=0 -DSTART_LIGHT=0 -DCOMBINE_DIFFUSE_DIRT=combineOver -DCOMBINE_DIFFUSE_CRUFT=combineOverlay -DCOMBINE_SPECULAR_DIRT=combineMultiply -DCOMBINE_SPECULAR_CRUFT=combineMultiply -DUSE_DIFFUSE_DIRT=0 -DUSE_DIFFUSE_CRUFT=0 -DUSE_SPECULAR_DIRT=0 -DUSE_SPECULAR_CRUFT=0 -DUSE_GLOW=0 -DUSE_GLOW_DIRT=0 -DUSE_GLOW_CRUFT=0 -DUSE_REFLECTION=1 -DUSE_SPOTLIGHT=1 -DUSE_SUBSURFACE=1 -DUSE_SKINNING=1 -DNUM_BONES=3 -DDEBUG=0 includes_skeletal_animation true } fragment_program PersonFPcg cg { source UeberShader.hlsl profiles arbfp1 ps_2_x entry_point main_fp compile_arguments -profileopts MaxLocalParams=144 -DUSE_GLSL=0 -DUSE_VERTEX_SHADER=0 -DUSE_FRAGMENT_SHADER=1 -DNUM_LIGHTS=4 -DNUM_SHADOW_LIGHTS=4 -DMAX_LIGHTS=4 -DHAVE_TEN_TEXCOORD=0 -DDERIVATIVE_SUPPORT=1 -DUSE_SHADOWS=0 -DUSE_BUMP_MAP=0 -DUSE_NORMAL_MAP=1 -DUSE_AMBIENT=1 -DUSE_AMBIENT_OCCLUSION=1 -DUSE_AMBIENT_ENVIRONMENT=1 -DUSE_DIFFUSE=1 -DUSE_SPECULAR=1 -DUSE_GLOSSINESS=0 -DSTART_LIGHT=0 -DCOMBINE_DIFFUSE_DIRT=combineOver -DCOMBINE_DIFFUSE_CRUFT=combineOverlay -DCOMBINE_SPECULAR_DIRT=combineMultiply -DCOMBINE_SPECULAR_CRUFT=combineMultiply -DUSE_DIFFUSE_DIRT=0 -DUSE_DIFFUSE_CRUFT=0 -DUSE_SPECULAR_DIRT=0 -DUSE_SPECULAR_CRUFT=0 -DUSE_GLOW=0 -DUSE_GLOW_DIRT=0 -DUSE_GLOW_CRUFT=0 -DUSE_REFLECTION=1 -DUSE_SPOTLIGHT=1 -DUSE_SUBSURFACE=1 -DUSE_SKINNING=1 -DNUM_BONES=3 -DDEBUG=0 } vertex_program PersonVP unified { delegate PersonVPhlsl30 delegate PersonVPhlsl delegate PersonVPcgDX delegate PersonVPcgGL delegate PersonVPglsl } fragment_program PersonFP unified { delegate PersonFPhlsl30 delegate PersonFPhlsl delegate PersonFPcg delegate PersonFPglsl } material body { // Hardware skinning techniique technique { pass { ambient 1 1 1 diffuse 1 1 1 specular 1 1 1 1 vertex_program_ref PersonVP { param_named_auto eyePosition camera_position param_named_auto worldViewProj viewproj_matrix param_named_auto worldMatrix world_matrix param_named_auto worldMatrix3x4Array world_matrix_array_3x4 } fragment_program_ref PersonFP { param_named_auto eyePosition camera_position //param_named_auto derived_ambient_light_color derived_ambient_light_colour param_named_auto derived_light_diffuse_color light_diffuse_colour_power_scaled_array 4 param_named_auto derived_light_specular_color light_specular_colour_power_scaled_array 4 param_named_auto light_attenuation light_attenuation_array 4 param_named_auto light_spotlight_params spotlight_params_array 4 param_named_auto spotlight_direction light_direction_array 4 param_named_auto light_position light_position_array 4 param_named_auto derived_ambient_color ambient_light_colour param_named surfaceSpecularEmissive float4 .9 16 .5 .2 } texture_unit { texture casual06_m_AmbientOcclusion.dds tex_address_mode wrap } texture_unit { texture casual06_m_25.dds tex_address_mode wrap } texture_unit { texture white1.dds tex_address_mode wrap } texture_unit { cubic_texture grass_noon_diff.png combinedUVW //cubic_texture test_spec.jpg combinedUVW tex_address_mode clamp } texture_unit { texture white3.dds tex_address_mode wrap } texture_unit { texture casual06_m_25_normal.dds tex_address_mode wrap } texture_unit { texture casual06_m_25_spec.tga tex_address_mode clamp } texture_unit { texture white3.dds tex_address_mode wrap } texture_unit { texture white3.dds tex_address_mode wrap } texture_unit { cubic_texture grass_noon_spec.png combinedUVW //cubic_texture test_spec.jpg combinedUVW tex_address_mode clamp } texture_unit { content_type shadow } texture_unit { content_type shadow } texture_unit { content_type shadow } texture_unit { content_type shadow } texture_unit { content_type shadow } texture_unit { content_type shadow } } } // Software blending technique technique { pass { texture_unit { texture casual06_m_25.dds tex_address_mode clamp } } } } material hair_transparent { // Hardware skinning techniique technique { pass { ambient 1 1 1 diffuse 0 0 0 specular 0 0 0 0 scene_blend alpha_blend //alpha_rejection greater 0 depth_write off vertex_program_ref Ogre/HardwareSkinningThreeWeights { param_named_auto worldMatrix3x4Array world_matrix_array_3x4 param_named_auto worldViewProj viewproj_matrix param_named_auto worldView worldview_matrix param_named_auto lightPos light_position 0 //param_named_auto eyePosition camera_position_object_space param_named_auto eyePositionWorld camera_position } // alternate shadow caster program shadow_caster_vertex_program_ref Ogre/HardwareSkinningThreeWeightsShadowCaster { param_named_auto worldMatrix3x4Array world_matrix_array_3x4 param_named_auto viewProjectionMatrix viewproj_matrix } fragment_program_ref Ogre/AmbientSkinShadingCG { //param_named lightAmbient float4 .3125 .3125 .3125 1 //param_named_auto lightAttenuation light_attenuation 0 //ambient_light_colour } texture_unit { texture casual06_m_25_hair.dds tex_address_mode clamp } texture_unit { texture casual06_m_25_hair_normal.dds tex_address_mode clamp } texture_unit { texture casual06_m_25_hair_spec.png tex_address_mode clamp } texture_unit { cubic_texture grass_noon_diff.png combinedUVW //cubic_texture test_spec.jpg combinedUVW tex_address_mode clamp } texture_unit { cubic_texture grass_noon_spec.png combinedUVW //cubic_texture test_spec.jpg combinedUVW tex_address_mode clamp } texture_unit { cubic_texture cloudy_noon.jpg combinedUVW //cubic_texture test_spec.jpg combinedUVW tex_address_mode clamp } } pass { ambient 0 0 0 diffuse 1 1 1 specular 1 1 1 1 iteration once_per_light //alpha_rejection greater 0 scene_blend src_alpha one //scene_blend alpha_blend depth_write off vertex_program_ref Ogre/HardwareSkinningThreeWeights { param_named_auto worldMatrix3x4Array world_matrix_array_3x4 param_named_auto worldViewProj viewproj_matrix param_named_auto worldView worldview_matrix param_named_auto lightPos light_position 0 //param_named_auto eyePosition camera_position_object_space param_named_auto eyePositionWorld camera_position } // alternate shadow caster program shadow_caster_vertex_program_ref Ogre/HardwareSkinningThreeWeightsShadowCaster { param_named_auto worldMatrix3x4Array world_matrix_array_3x4 param_named_auto viewProjectionMatrix viewproj_matrix } fragment_program_ref Ogre/SkinShadingCG { //param_named_auto lightDiffuse light_diffuse_colour 0 //param_named_auto lightSpecular light_specular_colour 0 //param_named_auto lightAttenuation light_attenuation 0 param_named matDiffuse float4 1 1 1 1 //ambient_light_colour } texture_unit { texture casual06_m_25_hair.dds tex_address_mode clamp } texture_unit { texture casual06_m_25_hair_normal.dds tex_address_mode clamp } texture_unit { texture casual06_m_25_hair_spec.png tex_address_mode clamp } } } // Software blending technique technique { pass { scene_blend alpha_blend texture_unit { texture casual06_m_25_hair.dds tex_address_mode clamp } } } }