From 60e3f8a1d98df472cf970a6b2d27c921e226046d Mon Sep 17 00:00:00 2001 From: "re.kovalev" Date: Wed, 23 Nov 2022 14:12:55 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D1=82=D0=BE=D1=87=D0=BD=D0=B8?= =?UTF-8?q?=D0=BA=20=D1=81=D0=B2=D0=B5=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/Lights.h | 13 +++++++++++++ shaders/shader.frag | 6 ++++++ shaders/shader.vert | 6 ++++++ src/main.cpp | 7 +++++++ 4 files changed, 32 insertions(+) create mode 100644 include/Lights.h diff --git a/include/Lights.h b/include/Lights.h new file mode 100644 index 0000000..8bc0724 --- /dev/null +++ b/include/Lights.h @@ -0,0 +1,13 @@ +#ifndef LIGHTS_H +#define LIGHTS_H + +#include + +// Точечный источник света +struct LightData +{ + alignas(16) glm::vec3 position; // Позиция + alignas(16) glm::vec3 color; // Цвет +}; + +#endif // LIGHTS_H diff --git a/shaders/shader.frag b/shaders/shader.frag index 08d00ca..a54dbb4 100644 --- a/shaders/shader.frag +++ b/shaders/shader.frag @@ -10,6 +10,12 @@ layout(std140, binding = 1) uniform Material float p; }; +layout(std140, binding = 2) uniform Light +{ + vec3 position; + vec3 color; +} light_f; + uniform sampler2D tex_diffuse; uniform sampler2D tex_ambient; uniform sampler2D tex_specular; diff --git a/shaders/shader.vert b/shaders/shader.vert index ffe81bb..ae7a2b4 100644 --- a/shaders/shader.vert +++ b/shaders/shader.vert @@ -10,6 +10,12 @@ layout(std140, binding = 0) uniform Camera mat4 view; }; +layout(std140, binding = 2) uniform Light +{ + vec3 position; + vec3 color; +} light_v; + uniform mat4 model; out vec2 texCoord; diff --git a/src/main.cpp b/src/main.cpp index db8fab1..971af93 100755 --- a/src/main.cpp +++ b/src/main.cpp @@ -7,6 +7,7 @@ #include "Scene.h" #include "Shader.h" +#include "Lights.h" #define WINDOW_WIDTH 800 #define WINDOW_HEIGHT 600 @@ -103,9 +104,15 @@ int main(void) // Расположение Uniform-переменной GLuint model_uniform = base.getUniformLoc("model"); + // Источник света + LightData light = { {1.0f, 3.0f, 0.0f} // позиция + , {1.0f, 1.0f, 1.0f} // цвет + }; + // Uniform-буферы UBO cameraUB(sizeof(glm::mat4)*2, 0); UBO material_data(sizeof(Material), 1); + UBO light_data(&light, sizeof(LightData), 2); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); // Использование уменьшенных версий mipmap