Fading Object Shader
A fade-to-dark effect
Welcome to the new Ogre Wiki!
If you haven't done so already, be sure to visit the Wiki Portal to read about how the wiki works. Especially the Ogre Wiki Overview page.
If you haven't done so already, be sure to visit the Wiki Portal to read about how the wiki works. Especially the Ogre Wiki Overview page.
Description
This shader applies to an object a color that fade to dark when getting away from the camera. I use it for large object, to emphase the feeling of largeness. The object is not textured, but just colorized.
Usage
To use the shader, you will need to give 2 custom parameters:
- the color of the object.
- the radius of the object.
And then apply the shader/gradient material to your object.
Example :
Vector4 vColour = Vector4(circlecolour.r, circlecolour.g, circlecolour.b, circlecolour.a); Vector4 vRadius = Vector4(mRadius,0,0,0); mObject->setCustomParameter(0,vColour); mObject->setCustomParameter(1,vRadius); mObject->setMaterial("shader/gradient");
Gradientshader.cg
// -------------------------------------------------------------------- // Gradient shader : vertex program // Author : David de Lorenzo // ----------------------------------------------------------------- void gradient_vp( in float4 position : POSITION, uniform float4x4 worldViewProj, uniform float3 camera_position_object_space, uniform float4 customParamColour, uniform float4 customParamRadius, out float4 oPosition : POSITION, out float4 oColor : COLOR ) { // Get the custom parameters float objectradius = customParamRadius.x; // calculate output position oPosition = mul(worldViewProj, position); // Calculate the color value, depending on the position float3 vect_center_to_cam = camera_position_object_space; float3 position_closest = normalize(vect_center_to_cam) * objectradius; float Rc = (position_closest.z * position.z ) + (position_closest.x * position.x); // Ratio on Center-to-Cam axis Rc = Rc / (objectradius * objectradius); // recalibrate (-1..1) float ratio = (1+Rc); // recalibrate ( 0..2) - (x2 to emphasis the color) oColor= ratio * customParamColour; } // ----------------------------------------------------------------- // Gradient shader : fragment program // Author : David de Lorenzo // ----------------------------------------------------------------- float4 main_fp(in float4 color : COLOR) : COLOR0 { return (color); }
Gradientshader.material
vertex_program shader/gradientVP cg { source gradientshader.cg entry_point gradient_vp profiles vs_1_1 default_params { param_named_auto worldViewProj worldviewproj_matrix param_named_auto camera_position_object_space camera_position_object_space } } fragment_program shader/gradientFP cg { source gradientshader.cg entry_point main_fp profiles ps_1_1 } material shader/gradient { technique { pass { vertex_program_ref shader/gradientVP { param_named_auto customParamColour custom 0 param_named_auto customParamRadius custom 1 } fragment_program_ref shader/gradientFP { } } } }
Alias: Fading_Object_Shader
Contributors to this page: jacmoe
and
OgreWikiBot
.
Page last modified on Monday 28 of June, 2010 18:06:51 UTC by jacmoe
.
The content on this page is licensed under the terms of the Creative Commons Attribution-ShareAlike License.
As an exception, any source code contributed within the content is released into the Public Domain.

