GLSL Specular Highlight Темнее, когда ближе - PullRequest
0 голосов
/ 07 июня 2018

Как я могу исправить свой компонент specluar, чтобы он становился ярче, когда далеко и темно, когда ближе?

Кстати, я использую точечный свет, а не переменные освещения по умолчанию.При необходимости я добавлю строки, которые рассчитывают зеркальный компонент, здесь: (Vertex Shader)

//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;

1 Ответ

0 голосов
/ 07 июня 2018

@ BDL дал ответ: «Какую модель освещения вы используете? Я не знаю ни одного, где зеркальный компонент рассчитывается в зависимости от точки (n, l) ^ p. Обычно это точка (отраженная, вид) ^p (фоновое освещение) или точка (n, на полпути) ^ p (blinn-phong). По крайней мере, вектор представления должен как-то влиять на зеркальное освещение. "

И @ Rabbid76 усилил ответ, сказав:«Обратите внимание, точка (Norm, LightVec)) является диффузным отражением Ламберта, см. Как это подделка света работает на аэротвисте?»

Большое спасибо за вашу помощь, ребята!

...