fragment_program SSAO/HorizonBased_fp_hlsl hlsl { source HorizonBased.hlsl entry_point HorizonBased_fp target ps_4_0 } fragment_program SSAO/HorizonBased_fp_cg cg { source HorizonBased.cg entry_point HorizonBased_fp profiles ps_3_0 arbfp1 } fragment_program SSAO/HorizonBased_fp_glsl glsl { source HorizonBasedFP.glsl default_params { param_named sMRT1 int 0 param_named sMRT2 int 1 param_named sRand int 2 } } fragment_program SSAO/HorizonBased_fp unified { delegate SSAO/HorizonBased_fp_glsl delegate SSAO/HorizonBased_fp_hlsl delegate SSAO/HorizonBased_fp_cg } material SSAO/HorizonBased { technique { pass { depth_check off vertex_program_ref Ogre/Compositor/StdQuad_vp {} fragment_program_ref SSAO/HorizonBased_fp { param_named_auto cViewportSize viewport_size param_named_auto cFov fov param_named cSampleInScreenspace float 0 param_named cSampleLengthScreenSpace float 0.06 param_named cSampleLengthWorldSpace float 2 param_named cAngleBias float 0.2 } texture_unit // fragment normal { content_type compositor SSAO/GBuffer mrt 0 tex_address_mode clamp filtering none } texture_unit // view position { content_type compositor SSAO/GBuffer mrt 1 tex_address_mode clamp filtering none } texture_unit { texture randCosSinJitter4x4.png tex_address_mode wrap filtering none } } } }