Compare commits
2 Commits
Author | SHA1 | Date |
---|---|---|
Ковалев Роман Евгеньевич | b90a9fe6b3 | |
Ковалев Роман Евгеньевич | 31496bd0ea |
|
@ -18,16 +18,25 @@ layout(std140, binding = 4) uniform gamma
|
|||
float inv_gamma;
|
||||
};
|
||||
|
||||
out vec4 color;
|
||||
layout (location = 1) out vec3 gNormal;
|
||||
layout (location = 3) out vec4 gAmbientSpecular;
|
||||
layout (location = 4) out uvec3 gID;
|
||||
|
||||
uniform float angle;
|
||||
uniform vec3 direction;
|
||||
|
||||
uniform uvec3 ID = uvec3(0);
|
||||
|
||||
void main()
|
||||
{
|
||||
float cosA = dot(normalize(pos_local), normalize(direction));
|
||||
if (degrees(acos(cosA)) <= angle)
|
||||
color = vec4(pow(ka, vec3(inv_gamma)), 1);
|
||||
gAmbientSpecular.rgb = pow(ka, vec3(inv_gamma));
|
||||
else
|
||||
discard;
|
||||
|
||||
gNormal = vec3(0);
|
||||
|
||||
// Сохранение идентификатора объекта
|
||||
gID = ID;
|
||||
}
|
|
@ -205,6 +205,10 @@ void Light::render(ShaderProgram &shaderProgram, UBO &material_buffer)
|
|||
// Цикл по источникам света
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
// Идентификатор источника как узла сцены для всей модели лампочки
|
||||
bulb.set_group_id((GLuint64) &lights[i]);
|
||||
sphere.id.value = (GLuint64) &lights[i];
|
||||
|
||||
// Загрузим направление
|
||||
glUniform3fv(direction_uniform, 1, &data[i].direction_angle.x);
|
||||
// Угол для лампочки = 180 (рисуем целую модель)
|
||||
|
@ -372,4 +376,4 @@ void Light::recalcVP()
|
|||
int Light::getCount()
|
||||
{
|
||||
return count;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -469,6 +469,10 @@ int main(void)
|
|||
scene.render(gShader, material_data);
|
||||
rectangle.render(gShader, material_data);
|
||||
|
||||
// Отрисовка отладочных лампочек со специальным шейдером
|
||||
bulbShader.use();
|
||||
Light::render(bulbShader, material_data);
|
||||
|
||||
// Используем шейдер для инструментов
|
||||
toolsShader.use();
|
||||
// Рендерим инструменты для выбранного объекта
|
||||
|
@ -578,10 +582,6 @@ int main(void)
|
|||
// Возвращаем запись глубины
|
||||
glDepthMask(GL_TRUE);
|
||||
|
||||
// Отрисовка отладочных лампочек со специальным шейдером
|
||||
bulbShader.use();
|
||||
Light::render(bulbShader, material_data);
|
||||
|
||||
// Дополнительная обработка мыши
|
||||
process_mouse_button(mouse.left);
|
||||
process_mouse_button(mouse.right);
|
||||
|
|
Loading…
Reference in New Issue