环境光照Ambient
光颜色 | lightColor | |
物体颜色 | objectColor | |
环境光因子 | ambientStrength | |
环境光颜色 | ambient | vec3 ambient = ambientStrength * lightColor |
观察到的颜色 | result | vec3 result = ambient * objectColor |
漫反射光照Diffuse
法向量 | norm | vec3 norm = normalize(normal); |
物体颜色 | objectColor | |
光颜色 | lightColor | |
光源位置 | lightPos | |
物体位置 | objectPos | |
光照方向向量 | lightDir | vec3 lightDir = normalize(lightPos - objectPos); |
漫反射因子 | diff | vec3 diff = max(dot(norm, lightDir), 0.0) |
漫反射光颜色 | diffuse | vec3 diffuse = diff * lightColor |
观察到的颜色 | result | vec3 result = (ambient + diffuse) * objectColor |
镜面光照Specular
法向量 | norm | |
观察者位置 | viewPos | |
物体位置 | objectPos | |
观察方向向量 | viewDir | vec3 viewDir = normalize(viewPos - objectPos) |
反射方向向量 | reflectDir | vec3 reflectDir = reflect(-lightDir, norm) |
spec | float spec = pow(max(dot(viewDir, reflectDir), 0.0), 32) | |
镜面光因子 | specularStrength | |
镜面光颜色 | specular | vec3 specular = specularStrength * spec * lightColor |
观察到的颜色 | result | vec3 result = (ambient + diffuse + specular) * objectColor |