мое освещение правильно? - PullRequest
0 голосов
/ 13 ноября 2011

Я читал файл PDF на освещении OpenGL .

Это говорит о затенении Гуро:

• Gouraud shading
– Set vertex normals
– Calculate colors at vertices
– Interpolate colors across polygon
• Must calculate vertex normals!
• Must normalize vertex normals to unit length!

Так вот, что я и сделал. Вот мой файл вершинного и фрагментного шейдера

V_Shader:

#version 330

layout(location = 0) in vec3 in_Position; //declare position
layout(location = 1) in vec3 in_Color;

// mvpmatrix is the result of multiplying the model, view, and projection matrices */
uniform mat4 MVP_matrix;
vec3 ambient;

out vec3 ex_Color;

void main(void) {

   // Multiply the MVP_ matrix by the vertex to obtain our final vertex position (mvp was created in *.cpp)
   gl_Position = MVP_matrix * vec4(in_Position, 1.0);
   ambient = vec3(0.0f,0.0f,1.0f);
   ex_Color = ambient * normalize(in_Position) ; //anti ex_Color=in_Color;
}

F_shader:

#version 330

in vec3 ex_Color;
out vec4 gl_FragColor;

void main(void) {
   gl_FragColor = vec4(ex_Color,1.0);
}

Об интерполяции заботится фрагментный шейдер, верно?

так вот моя сфера (кстати, это низкий полигон):

enter image description here

Является ли это стандартным способом реализации затенения Гуро? (моя сфера имеет центр (0,0,0)) Спасибо за ваше терпение

1 Ответ

3 голосов
/ 13 ноября 2011
ex_Color = ambient * normalize(in_Position) ; //anti ex_Color=in_Color;

Позвольте мне процитировать себя , "Это, конечно, не квалифицируется как" освещение "".Это не переставало быть правдой между первым разом, когда вы задали этот вопрос, и сейчас.

Это не освещение.Это просто нормализация положения в пространстве модели и умножение ее на цвет окружающей среды.Даже если мы предположим, что позиция модельного пространства центрирована в нуле и представляет точку на сфере, умножение света на нормаль не имеет смысла. не освещение.

Если вы хотите узнать, как работает освещение, прочитайте это. Или это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...