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 { param_named refIndex float 200 } } } } 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 { param_named refIndex float 200 } } } } fragment_program DistanceMinMaxPS hlsl { source MetalTeapot.hlsl entry_point DistanceMinMaxPS target ps_3_0 } material DistanceMinMaxCW { technique { pass { cull_hardware clockwise scene_blend max depth_test off polygon_mode points 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 DistanceMinMaxPS { } } } } material DistanceMinMaxCCW { technique { pass { cull_hardware anticlockwise scene_blend max depth_test off polygon_mode points 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 DistanceMinMaxPS { } } } } 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_0 { technique { pass { //cull_hardware none 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 } RenderTechnique ColorCubeMap { resolution 1 layer 3 attach_to_texture_unit false get_minmax true max_var_name minmax update_interval 0 distance_calc false face_angle_calc false update_all_face true render_env true render_self false env_material DistanceMinMaxCW } RenderTechnique ColorCubeMap { resolution 1 layer 4 attach_to_texture_unit false get_minmax true max_var_name minmax1 update_interval 0 distance_calc false face_angle_calc false update_all_face true render_env false render_self true self_material DistanceMinMaxCCW } RenderTechnique ColorCubeMap { resolution 1 layer 5 attach_to_texture_unit false get_minmax true max_var_name minmax2 update_interval 0 distance_calc false face_angle_calc false update_all_face true render_env false render_self true self_material DistanceMinMaxCW } } 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 param_named refIndex float 0.6667 } //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 } } } } material MetalTeapotMultipleBounce { technique { pass { //cull_hardware none 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 get_minmax true min_var_name min max_var_name max } 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 get_minmax true min_var_name min1 max_var_name max1 } 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 get_minmax true min_var_name min2 max_var_name max2 } } 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 param_named refIndex float 0.6667 } //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 } } } }