{$INCLUDE 'color.shdr'} {$CLASS PhongLight} {$PROPERTY UsePhongLight 'false'} {$IF UsePhongLight} {$VARYING 'vec3' 'vNormal'} {$VARYING 'vec3' 'vVertex'} {$END} {$END} {$CLASS PhongLightFrag $EXTENDS PhongLight ColorFrag} {$MAIN} vec4 color = {$CALL GetColor}; {$IF UsePhongLight} vec3 eye = normalize(-vVertex); vec3 lightVec = gl_LightSource[0].position.xyz - vVertex; vec3 reflected = normalize(reflect(lightVec, vNormal)); vec4 ambient = gl_LightSource[0].ambient * gl_FrontMaterial.ambient; vec4 diffuse = gl_LightSource[0].diffuse * max(dot(vNormal, lightVec), 0.0) * gl_FrontMaterial.diffuse; vec4 specular = gl_LightSource[0].specular * pow(max(dot(reflected, eye), 0.0), gl_FrontMaterial.shininess) * gl_FrontMaterial.specular; gl_FragColor = vec4((ambient + diffuse) * color) + specular; {$ELSE} gl_FragColor = color; {$END} {$END} {$END} {$CLASS PhongLightVert $EXTENDS PhongLight ColorVert} {$MAIN} {$INHERITED ColorVert $INLINE}; {$IF UsePhongLight} vNormal = normalize(gl_NormalMatrix * gl_Normal); vVertex = vec3(gl_ModelViewMatrix * gl_Vertex); {$END} {$END} {$END}