summaryrefslogtreecommitdiffstats
path: root/src/render/shaders/gl3
diff options
context:
space:
mode:
authorLaszlo Agocs <laszlo.agocs@theqtcompany.com>2015-11-30 18:03:01 +0100
committerLaszlo Agocs <laszlo.agocs@theqtcompany.com>2015-12-01 14:05:34 +0000
commitf6adee1f24a148a0daafb37a33f9da16095875b4 (patch)
treecf5a540e5c4ce8acde86430662c389213a6acf61 /src/render/shaders/gl3
parentc7125de64509411644b7b5ab185ebec40bfa77c3 (diff)
Unify the default and phong shaders
This also means that (Q)PhongMaterial is now lights capable. Change-Id: I8191fa6dfe96dadafdc9a2db47066650a8c96ee6 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/render/shaders/gl3')
-rw-r--r--src/render/shaders/gl3/default.frag22
-rw-r--r--src/render/shaders/gl3/default.vert19
-rw-r--r--src/render/shaders/gl3/phong.frag35
-rw-r--r--src/render/shaders/gl3/phong.vert4
4 files changed, 8 insertions, 72 deletions
diff --git a/src/render/shaders/gl3/default.frag b/src/render/shaders/gl3/default.frag
deleted file mode 100644
index febbc5eae..000000000
--- a/src/render/shaders/gl3/default.frag
+++ /dev/null
@@ -1,22 +0,0 @@
-#version 150 core
-
-uniform vec3 ka; // Ambient reflectivity
-uniform vec3 kd; // Diffuse reflectivity
-uniform vec3 ks; // Specular reflectivity
-uniform float shininess; // Specular shininess factor
-
-uniform vec3 eyePosition;
-
-in vec3 position;
-in vec3 normal;
-
-out vec4 fragColor;
-
-#pragma include light.inc.frag
-
-void main()
-{
- vec3 diffuseColor, specularColor;
- calculateLightColors(position, normal, eyePosition, shininess, diffuseColor, specularColor);
- fragColor = vec4( ka + kd * diffuseColor + ks * specularColor, 1.0 );
-}
diff --git a/src/render/shaders/gl3/default.vert b/src/render/shaders/gl3/default.vert
deleted file mode 100644
index f0a134702..000000000
--- a/src/render/shaders/gl3/default.vert
+++ /dev/null
@@ -1,19 +0,0 @@
-#version 150 core
-
-in vec3 vertexPosition;
-in vec3 vertexNormal;
-
-out vec3 position;
-out 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 );
-}
diff --git a/src/render/shaders/gl3/phong.frag b/src/render/shaders/gl3/phong.frag
index 86990dc0d..febbc5eae 100644
--- a/src/render/shaders/gl3/phong.frag
+++ b/src/render/shaders/gl3/phong.frag
@@ -1,45 +1,22 @@
#version 150 core
-// TODO: Replace with a uniform block
-uniform vec4 lightPosition;
-uniform vec3 lightIntensity;
-
-// TODO: Replace with a struct
uniform vec3 ka; // Ambient reflectivity
uniform vec3 kd; // Diffuse reflectivity
uniform vec3 ks; // Specular reflectivity
uniform float shininess; // Specular shininess factor
+uniform vec3 eyePosition;
+
in vec3 position;
in vec3 normal;
out vec4 fragColor;
-vec3 adsModel( const in vec3 pos, const in vec3 n )
-{
- // Calculate the vector from the light to the fragment
- vec3 s = normalize( vec3( lightPosition ) - pos );
-
- // Calculate the vector from the fragment to the eye position
- // (origin since this is in "eye" or "camera" space)
- vec3 v = normalize( -pos );
-
- // Reflect the light beam using the normal at this fragment
- vec3 r = reflect( -s, n );
-
- // Calculate the diffuse component
- float diffuse = max( dot( s, n ), 0.0 );
-
- // Calculate the specular component
- float specular = 0.0;
- if ( dot( s, n ) > 0.0 )
- specular = pow( max( dot( r, v ), 0.0 ), shininess );
-
- // Combine the ambient, diffuse and specular contributions
- return lightIntensity * ( ka + kd * diffuse + ks * specular );
-}
+#pragma include light.inc.frag
void main()
{
- fragColor = vec4( adsModel( position, normalize( normal ) ), 1.0 );
+ vec3 diffuseColor, specularColor;
+ calculateLightColors(position, normal, eyePosition, shininess, diffuseColor, specularColor);
+ fragColor = vec4( ka + kd * diffuseColor + ks * specularColor, 1.0 );
}
diff --git a/src/render/shaders/gl3/phong.vert b/src/render/shaders/gl3/phong.vert
index c0f907f29..f0a134702 100644
--- a/src/render/shaders/gl3/phong.vert
+++ b/src/render/shaders/gl3/phong.vert
@@ -8,12 +8,12 @@ out vec3 normal;
uniform mat4 modelView;
uniform mat3 modelViewNormal;
-uniform mat4 mvp;
+uniform mat4 modelViewProjection;
void main()
{
normal = normalize( modelViewNormal * vertexNormal );
position = vec3( modelView * vec4( vertexPosition, 1.0 ) );
- gl_Position = mvp * vec4( vertexPosition, 1.0 );
+ gl_Position = modelViewProjection * vec4( vertexPosition, 1.0 );
}