#version 430 core layout(location = 0) in vec3 vertexPosition; layout(location = 1) in vec3 vertexNormal; layout(location = 2) in vec2 vertexTexCoord; layout(location = 3) in vec3 vertexTangent; layout(location = 4) in vec3 vertexBitangent; uniform mat4 transformation; uniform mat4 modelMatrix; uniform sampler2D colorTexture; uniform float height; out vec3 vecNormal; out vec3 worldPos; out vec2 vecTex; void main() { worldPos = (modelMatrix* vec4(vertexPosition,1)).xyz; vecNormal = (modelMatrix* vec4(vertexNormal,0)).xyz; vecTex = vertexTexCoord; vecTex.y = 1.0 - vecTex.y; vec4 filters = texture2D(colorTexture, vecTex); float offsetr = filters.r; float offsetg = filters.g; float offsetb = filters.b; float offset = (offsetr+offsetg+offsetb)/20*height; vec3 inc = vec3(offset, offset, offset); vec3 inc2 = inc * vertexNormal; gl_Position = transformation * vec4(vertexPosition + inc2, 1.0); }