From 75832ffd01c64e30d43e5ff4d13a879750e00cbb Mon Sep 17 00:00:00 2001 From: Laszlo Agocs Date: Thu, 29 Jan 2015 18:27:26 +0100 Subject: Supply ES2 versions of the default material shaders This also means that the building of the default material has to be delayed until the OpenGL context is known. Change-Id: I09c0db35a035cb1cfd16b564071445c2dcd4e53c Reviewed-by: Sean Harmer Reviewed-by: Paul Lemire --- src/render/shaders/es2/diffuse.frag | 22 ++++++++++++++++++++++ src/render/shaders/es2/diffuse.vert | 17 +++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 src/render/shaders/es2/diffuse.frag create mode 100644 src/render/shaders/es2/diffuse.vert (limited to 'src/render/shaders') diff --git a/src/render/shaders/es2/diffuse.frag b/src/render/shaders/es2/diffuse.frag new file mode 100644 index 000000000..b9c7c8919 --- /dev/null +++ b/src/render/shaders/es2/diffuse.frag @@ -0,0 +1,22 @@ +#define FP highp + +uniform FP vec4 lightPosition; +uniform FP vec3 lightIntensity; +uniform FP vec3 kd; // Diffuse reflectivity +uniform FP vec3 ka; // Ambient reflectivity + +varying FP vec3 position; +varying FP vec3 normal; + +void main() +{ + // Calculate the vector from the light to the fragment + FP vec3 s = normalize( vec3( lightPosition ) - position ); + + // Calculate the diffuse lighting factor + FP vec3 n = normalize( normal ); + FP float diffuse = max( dot( s, n ), 0.0 ); + + // Multiply by incoming light intensity + gl_FragColor = vec4( lightIntensity * (kd * diffuse + ka), 1.0 ); +} diff --git a/src/render/shaders/es2/diffuse.vert b/src/render/shaders/es2/diffuse.vert new file mode 100644 index 000000000..255af8f11 --- /dev/null +++ b/src/render/shaders/es2/diffuse.vert @@ -0,0 +1,17 @@ +attribute vec3 vertexPosition; +attribute vec3 vertexNormal; + +varying vec3 position; +varying vec3 normal; + +uniform mat4 modelView; +uniform mat3 modelViewNormal; +uniform mat4 modelViewProjection; + +void main() +{ + normal = normalize( modelViewNormal * vertexNormal ); + position = vec3( modelView * vec4( vertexPosition, 1.0 ) ); + + gl_Position = modelViewProjection * vec4( vertexPosition, 1.0 ); +} -- cgit v1.2.3