/////////////////////////////////// // PASS 0 // HEAT CASTERS PASS /////////////////////////////////// vertex_program Fury/HeatVision/HeatCaster_vp glsl glsles glslang hlsl { source compositors/HeatCasterVp.glsl } fragment_program Fury/HeatVision/HeatCaster_fp glsl glsles glslang hlsl { source compositors/HeatCasterFp.glsl } material Fury/HeatVision/HeatCaster { technique { pass { polygon_mode_overrideable false vertex_program_ref Fury/HeatVision/HeatCaster_vp { param_named_auto eyePosition camera_position_object_space param_named_auto worldViewProj worldviewproj_matrix } fragment_program_ref Fury/HeatVision/HeatCaster_fp { } } } } /////////////////////////////////// // PASS 0 // HEAT CASTERS PASS /////////////////////////////////// vertex_program Fury/HeatVision/ColdCaster_vp glsl glsles glslang hlsl { source compositors/ColdCasterVp.glsl } fragment_program Fury/HeatVision/ColdCaster_fp glsl glsles glslang hlsl { source compositors/ColdCasterFp.glsl } material Fury/HeatVision/ColdCaster { technique { pass { polygon_mode_overrideable false vertex_program_ref Fury/HeatVision/ColdCaster_vp { param_named_auto eyePosition camera_position_object_space param_named_auto worldViewProj worldviewproj_matrix } fragment_program_ref Fury/HeatVision/ColdCaster_fp { } } } } /////////////////////////////////// // PASS 1 // LIGHT TO HEAT CONVERSION PASS /////////////////////////////////// fragment_program Fury/HeatVision/LightToHeat_fp_GL glsl glsles { source compositors/LightToHeatFp.glsl default_params { param_named Input int 0 param_named NoiseMap int 1 param_named HeatLookup int 2 } } fragment_program Fury/HeatVision/LightToHeat_fp_HLSL hlsl glslang { source compositors/LightToHeatFp.glsl } fragment_program Fury/HeatVision/LightToHeat_fp unified { delegate Fury/HeatVision/LightToHeat_fp_GL delegate Fury/HeatVision/LightToHeat_fp_HLSL } material Fury/HeatVision/LightToHeat { technique { pass { cull_hardware none depth_func always_pass polygon_mode_overrideable false vertex_program_ref Ogre/Compositor/StdQuad_Tex2a_vp { } fragment_program_ref Fury/HeatVision/LightToHeat_fp { param_named depth_modulator float4 0.6 0 0 0 // this one can be fixed param_named heatBiasScale float4 0.0 1.0 0 0 param_named_auto time time_0_1 1 } // INPUT (from scene, where entities has "Fury/HeatVision/Caster" material for heat emanation) texture_unit { tex_coord_set 0 filtering linear linear none tex_address_mode clamp } // Noise map texture_unit { texture compositors/Random3D.dds 3d tex_coord_set 0 } // heat conversion texture texture_unit { texture compositors/HeatLookup.tga tex_coord_set 0 filtering point point none } } } } /////////////////////////////////// // PASS 2 // BLUR PASS /////////////////////////////////// fragment_program Fury/HeatVision/Blur_fp_GL glsl glsles { source compositors/HeatBlurFp.glsl default_params { param_named blurAmount float4 0.5 0 0 0 param_named Input int 0 } } fragment_program Fury/HeatVision/Blur_fp_HLSL hlsl glslang { source compositors/HeatBlurFp.glsl default_params { param_named blurAmount float4 0.5 0 0 0 } } fragment_program Fury/HeatVision/Blur_fp unified { delegate Fury/HeatVision/Blur_fp_GL delegate Fury/HeatVision/Blur_fp_HLSL } material Fury/HeatVision/Blur { technique { pass { cull_hardware none depth_func always_pass polygon_mode_overrideable false vertex_program_ref Ogre/Compositor/StdQuad_Tex2a_vp { } fragment_program_ref Fury/HeatVision/Blur_fp { } // INPUT (from previous) texture_unit { tex_coord_set 0 filtering linear linear none tex_address_mode clamp } } } } material Ogre/Compositor/Blur { technique { pass { cull_hardware none depth_func always_pass polygon_mode_overrideable false vertex_program_ref Ogre/Compositor/StdQuad_Tex2a_vp { } fragment_program_ref Fury/HeatVision/Blur_fp { param_named blurAmount float4 0.3 0 0 0 } // INPUT (from previous) texture_unit { tex_coord_set 0 filtering linear linear none tex_address_mode clamp } } } }