vertex_program DefaultVS hlsl { source MetalTeapot.hlsl entry_point DefaultVS target vs_2_0 } fragment_program Metal1BouncePS hlsl { source MetalTeapot.hlsl entry_point Metal1BouncePS target ps_3_0 } material MetalTeapot { technique { pass { IllumTechniques { RenderTechnique ColorCubeMap { update_interval 0 distance_calc false face_angle_calc false } RenderTechnique DistanceCubeMap { update_interval 0 distance_calc true false face_angle_calc true false } } vertex_program_ref DefaultVS { param_named_auto worldViewProj worldviewproj_matrix param_named_auto world world_matrix param_named_auto worldview worldview_matrix param_named_auto worldI inverse_world_matrix } fragment_program_ref Metal1BouncePS { param_named_auto cameraPos camera_position //param_named n float3 0.21 0.96 1.17 //param_named k float3 4.16 2.57 2.32 param_named F0 float3 0.95 0.63 0.54 } //Cube map for reflections and refractions texture_unit { } //Cube map of distances texture_unit { } } } } fragment_program NormalDistancePS hlsl { source MetalTeapot.hlsl entry_point NormalDistancePS target ps_3_0 } material NormalDistanceCW { technique { pass { cull_hardware clockwise vertex_program_ref DefaultVS { param_named_auto worldViewProj worldviewproj_matrix param_named_auto world world_matrix param_named_auto worldview worldview_matrix param_named_auto worldI inverse_world_matrix } fragment_program_ref NormalDistancePS { } } } } material NormalDistanceCCW { technique { pass { cull_hardware anticlockwise vertex_program_ref DefaultVS { param_named_auto worldViewProj worldviewproj_matrix param_named_auto world world_matrix param_named_auto worldview worldview_matrix param_named_auto worldI inverse_world_matrix } fragment_program_ref NormalDistancePS { } } } } fragment_program MetalMultipleBouncePS hlsl { //source MetalTeapot.hlsl //entry_point MetalMultipleBouncePS source MetalTeapotNew.hlsl entry_point mainPS target ps_3_0 flow_control prefer } material MetalTeapotMultipleBounce { technique { pass { IllumTechniques { RenderTechnique ColorCubeMap { resolution 1024 update_interval 0 distance_calc false face_angle_calc false update_all_face true } RenderTechnique DistanceCubeMap { resolution 1024 update_interval 0 distance_calc false face_angle_calc false update_all_face true } RenderTechnique ColorCubeMap { resolution 1024 layer 1 texture_unit_id 2 update_interval 0 distance_calc false face_angle_calc false update_all_face true render_env false render_self true self_material NormalDistanceCCW } RenderTechnique ColorCubeMap { resolution 1024 layer 2 texture_unit_id 3 update_interval 0 distance_calc false face_angle_calc false update_all_face true render_env false render_self true self_material NormalDistanceCW } } vertex_program_ref DefaultVS { param_named_auto worldViewProj worldviewproj_matrix param_named_auto world world_matrix param_named_auto worldview worldview_matrix param_named_auto worldI inverse_world_matrix } fragment_program_ref MetalMultipleBouncePS { param_named_auto cameraPos camera_position //param_named n float3 0.21 0.96 1.17 //param_named k float3 4.16 2.57 2.32 param_named F0 float3 0.95 0.95 0.95 param_named SingleBounce float 0.0 } //Cube map of environment texture_unit { //filtering none } //Cube map of environment distances texture_unit { filtering none } //Cube map of reflective object's normals and distances CCW texture_unit { filtering none } //Cube map of reflective object's normals and distances CW texture_unit { filtering none } } } }