मैंने फोंग लाइटिंग को लागू किया। सब कुछ काम करने लगता है - टोरस और गोले को उम्मीद के मुताबिक रोशनी दी जाती है, लेकिन मैं दिशात्मक प्रकाश के स्पेक्युलर प्रकाश व्यवस्था के बारे में कुछ अजीब नोटिस करता हूं।
यहाँ दो स्क्रीनशॉट हैं।
प्रथम:
दूसरा:
जैसा कि आप देख सकते हैं कि जब कैमरा किसी ऑब्जेक्ट से दूर होता है तो अधिक क्षेत्र में स्पेक्युलर लाइटिंग होती है।
यहां सरलीकृत वर्धमान शेडर हैं:
#version 330 core
layout(location = 0) in vec3 vertexPos;
layout(location = 1) in vec3 vertexNorm;
layout(location = 2) in vec2 vertexUV;
uniform mat4 MVP;
uniform mat4 M;
out vec2 fragmentUV;
out vec3 fragmentNormal;
out vec3 fragmentPos;
void main() {
fragmentUV = vertexUV;
fragmentNormal = (M * vec4(vertexNorm, 0)).xyz;
fragmentPos = (M * vec4(vertexPos, 1)).xyz;
gl_Position = MVP * vec4(vertexPos, 1);
}
... और टुकड़े टुकड़े करना:
#version 330 core
in vec2 fragmentUV;
in vec3 fragmentNormal;
in vec3 fragmentPos;
struct DirectionalLight {
vec3 Color;
vec3 Direction;
float AmbientIntensity;
float DiffuseIntensity;
};
uniform sampler2D textureSampler;
uniform vec3 cameraPos;
uniform float materialSpecularFactor;
uniform float materialSpecularIntensity;
uniform DirectionalLight directionalLight;
out vec4 color;
void main() {
vec3 normal = normalize(fragmentNormal); // should be normalized after interpolation
vec4 ambientColor = vec4(directionalLight.Color, 1) * directionalLight.AmbientIntensity;
float diffuseFactor = clamp(dot(normal, -directionalLight.Direction), 0, 1);
vec4 diffuseColor = vec4(directionalLight.Color, 1) * directionalLight.DiffuseIntensity * diffuseFactor;
vec3 vertexToCamera = normalize(cameraPos - fragmentPos);
vec3 lightReflect = normalize(reflect(directionalLight.Direction, normal));
float specularFactor = pow(clamp(dot(vertexToCamera, lightReflect), 0, 1), materialSpecularFactor);
vec4 specularColor = vec4(directionalLight.Color, 1) * materialSpecularIntensity * specularFactor;
color = texture(textureSampler, fragmentUV) * (ambientColor + diffuseColor + specularColor);
}
बिना किसी सरलीकरण के पूर्ण स्रोत कोड इस भंडार में पाया जा सकता है ।
मैं जानना चाहता था कि क्या मैंने कुछ गलत लागू किया है। या फोंग लाइटिंग के लिए ठीक है?