shader simple( color ambient = color(0.3, 0.3, 0.3), color diffuse = color(0.7, 0.7, 0.7), color specular = color(0.5, 0.5, 0.5), float specularPower = 24, vector lightVec = vector(0, 0, 1), output color Color = ambient ) { float diffFactor = max(0, dot(N, lightVec)); float specFactor = 0; if (diffFactor > 0) specFactor = pow(max(0, dot(I, 2 * N * dot(N, lightVec) - lightVec)), specularPower); float shadow = 1; if (diffFactor != 0) shadow = trace(P, lightVec); Color = ambient + (1-shadow)*(diffFactor * diffuse + specFactor * specular); } |