GLSL 镜面反射高光靠近时颜色越暗



如何修复我的specluar组件,使其在远处变亮,在靠近时变暗?

顺便说一下,我使用的是点光源,而不是默认的光源变量。 如有必要,我将计算镜面反射分量的线放在这里:(顶点着色器(

//pl_pos is the raw vec3(x y z) before this
vec3 pointlight = gl_ModelViewMatrix * vec4(pl_pos,1.0);
vec3 Norm = normalize(gl_NormalMatrix * gl_Normal);
//Adding Vertex Calc
vec4 VertexPos = gl_ModelViewMatrix * gl_Vertex;
vec3 LightVec = normalize(pointlight - VertexPos.xyz);
float SpecularExp = 128.0;
float NormLightAng = max(0.0, dot(Norm,LightVec));
vec4 Specular = vec4(pow(NormLightAng, SpecularExp));
gl_FrontColor = Diffuse + Specular;

@BDL给出了答案说 "您使用的是哪种照明型号?我不知道镜面反射分量是根据 dot(n, l(^p 计算的。通常是点(反射,视图(^p(phong照明(或dot(n,中途(^p(blinn-phong(。至少,视向量应该以某种方式影响镜面反射照明。">

@Rabbid76通过说来增强答案: "注意,点(Norm,LightVec((是朗伯漫反射,看看这个假光是如何在aerotwist上工作的?"

非常感谢你们的帮助!

最新更新