# Rendering a 3D graphic

Hello all,

I’m developing a shader to render a graphic so I’m trying to make specific heigths (position.y) of specific colors.

I’ve ran into a problem, the heights go from 0 to 255 and I’ve devided this into 4 groups of height that are a gradient between different colors. Example: values between 0 and 63.75 have colores between (0, 0, 255) and (0, 255, 255).
I have very abrupt transformations between strips:
[ATTACH=CONFIG]193[/ATTACH]

``````float interpolate (float z, float lowerBound, float maxRGB){
float scaled = z - lowerBound;
float interval = 63.75;
return (scaled*maxRGB)/interval;
}

void main(){
//Transformation of the object space coordinate to projection space
//coordinates.
//- gl_Position is the standard GLSL variable holding projection space
//position. It must be filled in the vertex shader
//- To convert position we multiply the worldViewProjectionMatrix by
//by the position vector.
//The multiplication must be done in this order.
position = g_WorldMatrix * vec4(inPosition, 0.0);
vec4 pos = vec4(inPosition, 1.0);
gl_Position = g_WorldViewProjectionMatrix * pos;
//________________________________________________________________________
vec4 diffuseColor;
float i;
float alpha = 1;
float interval = 255/4;
int maxRGB_1 = 1;
int maxRGB_255 = 255;
if(position.y < interval){                               // blue to cyan
i = interpolate (position.y, 0, maxRGB_1);
diffuseColor = vec4(0, i, maxRGB_255, alpha);
}
else if(position.y < interval*2){                        // cyan to yellow
i = interpolate (position.y, interval*1, maxRGB_1);
diffuseColor = vec4(i, maxRGB_255, 1-i, alpha);
}
else if(position.y < interval*3){                        // yellow to red
i = interpolate (position.y, interval*2, maxRGB_1);
diffuseColor = vec4(maxRGB_255, 1-i, 0, alpha);
}
else{                                                   // red to dark red
i = interpolate (position.y, interval*3, 0.5);
diffuseColor = vec4(1-i, 0, 0, alpha);
}
gl_FrontColor = diffuseColor;
//________________________________________________________________________

``````

In the Fragment Shader I just have:

``````
vec4 diffuseColor = gl_Color;
``````

Have you tried moving the vertex shader color calculations to fragment shader ?

This topic was automatically closed 183 days after the last reply. New replies are no longer allowed.