আমি ফোং লাইটিং প্রয়োগ করেছি। সমস্ত কিছু কাজ করে বলে মনে হচ্ছে - টরাস এবং গোলকগুলি প্রত্যাশার মতো আলোকিত হয় তবে আমি দিকনির্দেশক আলোর আলো সংক্রান্ত আলোয় কিছু অদ্ভুত বিষয় লক্ষ্য করি।
এখানে দুটি স্ক্রিনশট রয়েছে।
প্রথম:
দ্বিতীয়ত:
আপনি দেখতে পাচ্ছেন যে ক্যামেরাটি কোনও বস্তুর থেকে দূরে থাকলে আরও বেশি অঞ্চলে আলোকসংক্রান্ত আলো থাকে।
এখানে সরলীকৃত ভার্টেক্স শ্যাডার:
#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);
}
কোনও সরলীকরণ ছাড়াই পুরো উত্স কোডটি এই সংগ্রহস্থলটিতে পাওয়া যাবে ।
আমি জানতে চেয়েছিলাম যে আমি কিছু ভুল প্রয়োগ করেছি কিনা। নাকি ফোং লাইটিংয়ের জন্য ঠিক আছে?