|
|
|
@@ -0,0 +1,38 @@ |
|
|
|
{$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} |