attribute highp vec3 inVertex; attribute mediump vec3 inNormal; attribute mediump vec2 inTexCoord; uniform highp mat4 MVPMatrix; uniform mediump vec3 LightDirection; uniform mediump float DisplacementFactor; varying lowp float LightIntensity; varying mediump vec2 TexCoord; uniform sampler2D sDisMap; void main() { /* Calculate the displacemnt value by taking the colour value from our texture and scale it by out displacement factor. */ mediump float disp = texture2D(sDisMap, inTexCoord).r * DisplacementFactor; /* Transform position by the model-view-projection matrix but first move the untransformed position along the normal by our displacement value. */ gl_Position = MVPMatrix * vec4(inVertex + (inNormal * disp), 1.0); // Pass through texcoords TexCoord = inTexCoord; // Simple diffuse lighting in model space LightIntensity = dot(inNormal, -LightDirection); }