diff options
author | Laszlo Agocs <laszlo.agocs@theqtcompany.com> | 2015-11-30 18:03:01 +0100 |
---|---|---|
committer | Laszlo Agocs <laszlo.agocs@theqtcompany.com> | 2015-12-01 14:05:34 +0000 |
commit | f6adee1f24a148a0daafb37a33f9da16095875b4 (patch) | |
tree | cf5a540e5c4ce8acde86430662c389213a6acf61 /src/render/shaders/gl3 | |
parent | c7125de64509411644b7b5ab185ebec40bfa77c3 (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.frag | 22 | ||||
-rw-r--r-- | src/render/shaders/gl3/default.vert | 19 | ||||
-rw-r--r-- | src/render/shaders/gl3/phong.frag | 35 | ||||
-rw-r--r-- | src/render/shaders/gl3/phong.vert | 4 |
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 ); } |