PDA

View Full Version : surface colour derived from vertex y axis



kevindoig
04-28-2014, 07:49 AM
Hi - my first thread/post, and apologies to all if this should be in the OGSL section - I'm an openGL newbie.

I'm generating surfaces that plot the distribution of data, each data point has an x and y value and my surface plots the number of times a particular combination of a x and y have been received - see the attached screen grab. To help visualise the vertical frequency axis I'm also applying a colour map to the z axis. The surface is drawn using triangles. calculation of the vertices colour is calculated before the data is sent to the graphics card [working on using VBOs, at the mo I specify each triangle vertex by vertex]

My question is, can I use a shader [which I assume are compiled and loaded onto the GPU] to calculate the colour from the vertex y axis value? Can I preload a colour map into the GPU that the GPU can use to look up the y value and get the RGB value of the vertex?

The graph has to update regularly as it will be monitoring a live steam of data. Is there any speed advantage in getting the GPU to do the colour calculation?

Brokenmind
04-28-2014, 08:08 AM
The fragment shader would look like the following (though untested):



#version 330

uniform sampler1D heightGradient; // gradient texture with colour transition

uniform float heightMin; // height to be assigned with the lowest colour
uniform float heightMax; // height to be assigned with the highest colour

uniform vec4 vertexPosition; // position of pixel to be drawn (unprojected!)

void main()
{
float coord = (vertexPosition.Y - heightMin) / (heightMax - heightMin) - heightMin; // or any other calculation that suits your needs
coord = clamp(coord, 0.0f, 1.0f); // can also be defined outside of GLSL to handle the behaviour outside the texture

gl_FragColor = texture1D(heightGradient, coord); // final color assign
}


Yes, you can preload the colour transition map to the GPU. The rest works as mentioned above. I am quite unfamiliar with data live streams, so I cannot help you there.

Agent D
04-28-2014, 08:36 AM
I just saw your post here and already responded to you other post elsewhere on the forum (http://www.opengl.org/discussion_boards/showthread.php/184092-Using-a-shader-to-calculate-colour-from-y-value?p=1259167#post1259167). Please do not cross post.