From 5241c41ddd33e8e1f01dcc4b9991088b62a75b99 Mon Sep 17 00:00:00 2001 From: Andrzej Kapolka Date: Fri, 14 Jun 2013 11:29:32 -0700 Subject: [PATCH] Shed some light on what these shaders are doing, so to speak. --- interface/resources/shaders/iris.frag | 3 +++ interface/resources/shaders/iris.vert | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/interface/resources/shaders/iris.frag b/interface/resources/shaders/iris.frag index 2f5b06d6c6..edd112d524 100644 --- a/interface/resources/shaders/iris.frag +++ b/interface/resources/shaders/iris.frag @@ -15,7 +15,10 @@ uniform sampler2D texture; varying vec4 normal; void main(void) { + // compute the specular component (sans exponent) based on the normal OpenGL lighting model float specular = max(0.0, dot(normalize(gl_LightSource[0].position + vec4(0.0, 0.0, 1.0, 0.0)), normalize(normal))); + + // modulate texture by diffuse color and add specular contribution gl_FragColor = vec4(gl_Color.rgb * texture2D(texture, gl_TexCoord[0].st).rgb + pow(specular, gl_FrontMaterial.shininess) * gl_FrontLightProduct[0].specular.rgb, 1.0); } diff --git a/interface/resources/shaders/iris.vert b/interface/resources/shaders/iris.vert index 83602f3e99..550b466238 100644 --- a/interface/resources/shaders/iris.vert +++ b/interface/resources/shaders/iris.vert @@ -12,9 +12,17 @@ varying vec4 normal; void main(void) { + + // transform and store the normal for interpolation normal = normalize(gl_ModelViewMatrix * vec4(gl_Normal, 0.0)); + + // compute standard diffuse lighting per-vertex gl_FrontColor = gl_Color * (gl_LightModel.ambient + gl_LightSource[0].ambient + gl_LightSource[0].diffuse * max(0.0, dot(normal, gl_LightSource[0].position))); + + // copy the tex coordinate for interpolation gl_TexCoord[0] = gl_MultiTexCoord0; + + // use standard pipeline transform gl_Position = ftransform(); }