Я пытаюсь реализовать модель затенения Фонга, и я не уверен, как выбрать источник света.Точнее, я не понимаю, как должен выглядеть источник света.Должно ли это быть vec3 ?Или, может быть, матрица, которую я определил в своем коде Java?Кроме того, если мы предположим, что я хочу, чтобы камера была источником света, что должно отличаться от другого источника света, такого как точка где-то еще в мире зрения?Я бы действительно оценил объяснение или, возможно, руководство о том, как мне следует решить что-то подобное, а не просто код.
Это то, что я пока имею в своем вершинном шейдере:
#version 330
layout(location=0) in vec3 vertex;
layout(location=1) in vec3 normals;
uniform mat4 viewMatrix;
uniform mat4 projMatrix;
out vec3 vertexColor;
out vec3 pixelCoordinates;
out vec3 normalizedNormals;
void main(){
if (gl_VertexID < 6) {
vertexColor = vec3(1.0, 0.0, 0.0);
} else if (gl_VertexID < 12) {
vertexColor = vec3(0.0, 1.0, 0.0);
} else if (gl_VertexID < 18) {
vertexColor = vec3(0.0, 0.0, 1.0);
} else if (gl_VertexID < 24) {
vertexColor = vec3(1.0, 1.0, 0.0);
} else if (gl_VertexID < 30) {
vertexColor = vec3(1.0, 0.0, 1.0);
} else {
vertexColor = vec3(0.0, 1.0, 1.0);
}
pixelCoordinates = vec3(viewMatrix*vec4(vertex,1.0));
normalizedNormals = normalize(mat3(viewMatrix)*normals);
gl_Position = projMatrix*viewMatrix*vec4(vertex, 1.0);
}
и вот как сейчас выглядит мой фрагментный шейдер:
#version 330
in vec3 vertexColor;
in vec3 pixelCoordinates;
in vec3 normalizedNormals;
out vec3 pixelColor;
void main(){
float il = 1;
float ia = 0.2;
float id ;
vec3 v = normalize(-pixelCoordinates);
}
Когда я компилирую, я получаю черный экран, который, конечно же, происходит, потому что я все еще пропускаю окружающий свет и выходящий последний свет,для которого мне нужно установить источник света.