Added lighting to OpenGL example.

This commit is contained in:
David Williams 2014-05-26 17:00:26 +02:00
parent 4ae25d6b1e
commit 40e528d782

View File

@ -130,34 +130,38 @@ int main(int argc, char *argv[])
void main() void main()
{ {
//vec3 normal = normalize(cross(dFdy(worldPosition.xyz), dFdx(worldPosition.xyz)));
vec3 normal = worldNormal.xyz; vec3 normal = worldNormal.xyz;
vec4 surfaceColor = vec4(0.0, 0.0, 0.0, 0.0);
switch(outMaterial.x) switch(outMaterial.x)
{ {
case 1: case 1:
outputColor = vec4(1.0, 0.0, 0.0, 1.0); surfaceColor = vec4(1.0, 0.0, 0.0, 1.0);
break; break;
case 2: case 2:
outputColor = vec4(0.0, 1.0, 0.0, 1.0); surfaceColor = vec4(0.0, 1.0, 0.0, 1.0);
break; break;
case 3: case 3:
outputColor = vec4(0.0, 0.0, 1.0, 1.0); surfaceColor = vec4(0.0, 0.0, 1.0, 1.0);
break; break;
case 4: case 4:
outputColor = vec4(1.0, 1.0, 0.0, 1.0); surfaceColor = vec4(1.0, 1.0, 0.0, 1.0);
break; break;
case 5: case 5:
outputColor = vec4(1.0, 0.0, 1.0, 1.0); surfaceColor = vec4(1.0, 0.0, 1.0, 1.0);
break; break;
default: default:
outputColor = vec4(1.0, 1.0, 1.0, 1.0); surfaceColor = vec4(1.0, 1.0, 1.0, 1.0);
break; break;
} }
//float color = clamp(abs(dot(normalize(normal.xyz), vec3(0.9,0.1,0.5))), 0, 1); vec3 lightDir = vec3(1.0, 0.0, 0.0);
//outputColor = vec4(1.0, 0.5, color, 1.0); float diffuse = dot(lightDir, normal);
diffuse *= 0.6;
float ambient = 0.4;
float lightVal = diffuse + ambient;
outputColor = surfaceColor * lightVal;
} }
)")) )"))
{ {