diff --git a/shaders/bulb.frag b/shaders/bulb.frag index de2d7f3..2f8fef3 100644 --- a/shaders/bulb.frag +++ b/shaders/bulb.frag @@ -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; } \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index ee9b857..21fb483 100755 --- a/src/main.cpp +++ b/src/main.cpp @@ -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);