GLSL, is it possible to offsetting vertices based on height map colour?
- by Rob
I am attempting to generate some terrain based upon a heightmap.
I have generated a 32 x 32 grid and a corresponding height map -
In my vertex shader I am trying to offset the position of the Y axis based upon the colour of the heightmap, white vertices being higher than black ones.
//Vertex Shader Code
#version 330
uniform mat4 modelMatrix;
uniform mat4 viewMatrix;
uniform mat4 projectionMatrix;
uniform sampler2D heightmap;
layout (location=0) in vec4 vertexPos;
layout (location=1) in vec4 vertexColour;
layout (location=3) in vec2 vertexTextureCoord;
layout (location=4) in float offset;
out vec4 fragCol;
out vec4 fragPos;
out vec2 fragTex;
void main()
{
// Retreive the current pixel's colour
vec4 hmColour = texture(heightmap,vertexTextureCoord);
// Offset the y position by the value of current texel's colour value ?
vec4 offset = vec4(vertexPos.x , vertexPos.y + hmColour.r, vertexPos.z , 1.0);
// Final Position
gl_Position = projectionMatrix * viewMatrix * modelMatrix * offset;
// Data sent to Fragment Shader.
fragCol = vertexColour;
fragPos = vertexPos;
fragTex = vertexTextureCoord;
}
However the code I have produced only creates a grid with none of the y vertices higher than any others.