summaryrefslogtreecommitdiffstats
path: root/src/render/shaders
diff options
context:
space:
mode:
authorLaszlo Agocs <laszlo.agocs@theqtcompany.com>2015-01-29 18:27:26 +0100
committerTony Sarajärvi <tony.sarajarvi@digia.com>2015-02-02 08:46:17 +0000
commit75832ffd01c64e30d43e5ff4d13a879750e00cbb (patch)
tree53942450ea55244fcf9d66dd3a0fa6f0178c1220 /src/render/shaders
parent0194b55b8bc761b0337bbfb3f5d39ca82e142649 (diff)
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 <sean.harmer@kdab.com> Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/render/shaders')
-rw-r--r--src/render/shaders/es2/diffuse.frag22
-rw-r--r--src/render/shaders/es2/diffuse.vert17
2 files changed, 39 insertions, 0 deletions
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 );
+}