Определение угла и рисование части отладочной сферы

This commit is contained in:
2022-12-20 15:58:42 +03:00
parent 8ef0116aef
commit 1a74ce4d41
6 changed files with 72 additions and 14 deletions

View File

@@ -7,6 +7,8 @@
// Максимальное число источников света
#define MAX_LIGHTS 300
// Стандартное направление источника без поворота
#define DEFAULT_LIGHT_DIRECTION glm::vec4(0.0f, 0.0f, 1.0f, 0.0f)
// Точечный источник света
struct LightData
@@ -14,6 +16,7 @@ struct LightData
alignas(16) glm::vec3 position; // Позиция
alignas(16) glm::vec3 color; // Цвет
alignas(16) glm::vec3 attenuation; // Радиус действия источника, линейный и квадратичный коэф. угасания
alignas(16) glm::vec4 direction_angle; // Направление и половинный угол освещенности
};
// Источник света
@@ -32,6 +35,9 @@ class Light : public Node
const float& c_radius() const; // Константный доступ к радиусу
float& e_radius(); // Неконстантная ссылка для изменений радиуса
const float& c_angle() const; // Константный доступ к углу освещенности
float& e_angle(); // Неконстантная ссылка для изменений угла освещенности
static void render(ShaderProgram &shaderProgram, UBO &material_buffer); // Рисование отладочных лампочек
private:
Light(); // Конструктор без параметров
@@ -41,6 +47,7 @@ class Light : public Node
glm::vec3 color; // Цвет
float radius; // Радиус действия источника
float angle; // Угол полный освещенности
int index; // Индекс в массиве отправки (может не совпадать с lights) для дефрагментированного доступа
static Light& findByIndex(GLuint index); // Возвращает ссылку на источник с нужным индексом