diff options
author | Laszlo Agocs <laszlo.agocs@theqtcompany.com> | 2015-01-29 18:27:26 +0100 |
---|---|---|
committer | Tony Sarajärvi <tony.sarajarvi@digia.com> | 2015-02-02 08:46:17 +0000 |
commit | 75832ffd01c64e30d43e5ff4d13a879750e00cbb (patch) | |
tree | 53942450ea55244fcf9d66dd3a0fa6f0178c1220 /src/render/shaders | |
parent | 0194b55b8bc761b0337bbfb3f5d39ca82e142649 (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.frag | 22 | ||||
-rw-r--r-- | src/render/shaders/es2/diffuse.vert | 17 |
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 ); +} |