From e6b39a9512c4fe048ef7a3215a9d97d16b26bb57 Mon Sep 17 00:00:00 2001 From: "re.kovalev" Date: Tue, 20 Dec 2022 15:50:32 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9A=D0=BE=D0=BF=D0=B8=D1=8F=20=D0=BF=D1=80?= =?UTF-8?q?=D0=BE=D0=B5=D0=BA=D1=82=D0=B0=20=D1=81=2009?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/c_cpp_properties.json | 20 ++ .vscode/settings.json | 46 ++++ .vscode/tasks.json | 32 +++ 10 | Bin 0 -> 889624 bytes Makefile | 101 +++++++ include/Buffers.h | 88 +++++++ include/Camera.h | 73 ++++++ include/Lights.h | 59 +++++ include/Model.h | 99 +++++++ include/Scene.h | 35 +++ include/Shader.h | 30 +++ include/Texture.h | 37 +++ shaders/bulb.frag | 16 ++ shaders/bulb.vert | 17 ++ shaders/gshader.frag | 38 +++ shaders/gshader.vert | 30 +++ shaders/lighting.frag | 85 ++++++ shaders/quad.vert | 11 + src/Buffers.cpp | 196 ++++++++++++++ src/Camera.cpp | 189 ++++++++++++++ src/Lights.cpp | 217 +++++++++++++++ src/Model.cpp | 478 ++++++++++++++++++++++++++++++++++ src/Scene.cpp | 222 ++++++++++++++++ src/Shader.cpp | 154 +++++++++++ src/Texture.cpp | 142 ++++++++++ src/main.cpp | 215 +++++++++++++++ 26 files changed, 2630 insertions(+) create mode 100644 .vscode/c_cpp_properties.json create mode 100644 .vscode/settings.json create mode 100644 .vscode/tasks.json create mode 100755 10 create mode 100644 Makefile create mode 100644 include/Buffers.h create mode 100644 include/Camera.h create mode 100644 include/Lights.h create mode 100644 include/Model.h create mode 100644 include/Scene.h create mode 100644 include/Shader.h create mode 100644 include/Texture.h create mode 100644 shaders/bulb.frag create mode 100644 shaders/bulb.vert create mode 100644 shaders/gshader.frag create mode 100644 shaders/gshader.vert create mode 100644 shaders/lighting.frag create mode 100644 shaders/quad.vert create mode 100644 src/Buffers.cpp create mode 100644 src/Camera.cpp create mode 100644 src/Lights.cpp create mode 100644 src/Model.cpp create mode 100644 src/Scene.cpp create mode 100644 src/Shader.cpp create mode 100644 src/Texture.cpp create mode 100755 src/main.cpp diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..04cf9c6 --- /dev/null +++ b/.vscode/c_cpp_properties.json @@ -0,0 +1,20 @@ +{ + "configurations": [ + { + "name": "some_name", + "includePath": [ + "${workspaceFolder}/include", + "${workspaceFolder}/../dependencies/GLFW/include", + "${workspaceFolder}/../dependencies/glad/include", + "${workspaceFolder}/../dependencies/glm", + "${workspaceFolder}/../dependencies/stb", + "${workspaceFolder}/../dependencies/tinyobjloader" + ], + "compilerPath": "C:/MinGW/bin/g++.exe", + "cStandard": "c11", + "cppStandard": "c++11", + "intelliSenseMode": "gcc-x86" + } + ], + "version": 4 +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..d7f31e6 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,46 @@ +{ + "files.associations": { + "fstream": "cpp", + "iosfwd": "cpp", + "map": "cpp", + "atomic": "cpp", + "array": "cpp", + "*.tcc": "cpp", + "cctype": "cpp", + "clocale": "cpp", + "cmath": "cpp", + "cstdarg": "cpp", + "cstddef": "cpp", + "cstdint": "cpp", + "cstdio": "cpp", + "cstdlib": "cpp", + "cstring": "cpp", + "cwchar": "cpp", + "cwctype": "cpp", + "deque": "cpp", + "unordered_map": "cpp", + "vector": "cpp", + "exception": "cpp", + "algorithm": "cpp", + "functional": "cpp", + "iterator": "cpp", + "memory": "cpp", + "memory_resource": "cpp", + "numeric": "cpp", + "random": "cpp", + "string": "cpp", + "system_error": "cpp", + "tuple": "cpp", + "type_traits": "cpp", + "utility": "cpp", + "initializer_list": "cpp", + "iostream": "cpp", + "istream": "cpp", + "limits": "cpp", + "ostream": "cpp", + "sstream": "cpp", + "stdexcept": "cpp", + "streambuf": "cpp", + "cinttypes": "cpp", + "typeinfo": "cpp" +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..f8939c6 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,32 @@ +{ + "tasks": [ + { + "type": "cppbuild", + "label": "C/C++: make сборка", + "command": "make", + "args": [ + "${input:target}" + ], + "options": { + "cwd": "${workspaceRoot}" + }, + "problemMatcher": [ + "$gcc" + ], + "group": { + "kind": "build", + "isDefault": true + }, + "detail": "Задача создана отладчиком." + } + ], + "inputs": [ + { + "id": "target", + "description": "Цель сборки (all, list, clean)", + "default": "all", + "type": "promptString" + }, + ], + "version": "2.0.0" +} \ No newline at end of file diff --git a/10 b/10 new file mode 100755 index 0000000000000000000000000000000000000000..ccf2b2d81a2cd0b364363ced28ea46eb8e5ac2a7 GIT binary patch literal 889624 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Ð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

?zO?heAf(r8PMPuF}e!DvHx7^K9hh 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ϔ|&t?FHBun*Oso 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 PyCV7jS$0A8=idJVFupvV literal 0 HcmV?d00001 diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..c270acc --- /dev/null +++ b/Makefile @@ -0,0 +1,101 @@ +# Компилятор и директория проекта +ifeq ($(OS), Windows_NT) + # С возможностью сборки x32 + ifeq ($(MAKECMDGOALS), x32) + CC = C:/MinGW/bin/g++.exe + else + CC = C:/MinGW64/bin/g++.exe + endif + PROJECT_DIR = $(shell echo %cd%) + PATH_SEPARATOR = \\ + # Имя исполняемого файла + EXECUTABLE = $(notdir $(strip $(PROJECT_DIR))).exe +else + CC = g++ + PROJECT_DIR = $(shell pwd) + PATH_SEPARATOR = / + # Имя исполняемого файла + EXECUTABLE = $(notdir $(strip $(PROJECT_DIR))) +endif + +# Опции компилятора +CFLAGS += -c +CFLAGS += -I./include +CFLAGS += -I../dependencies/GLFW/include +CFLAGS += -I../dependencies/glad/include +CFLAGS += -I../dependencies/glm +CFLAGS += -I../dependencies/stb +CFLAGS += -I../dependencies/tinyobjloader + +# Опции линкера +LDFLAGS += --std=c++11 +# Архитектурозависимые опции линкера +ifeq ($(OS), Windows_NT) + # GLFW в зависимости от архитектуры + ifeq ($(MAKECMDGOALS), x32) + LDFLAGS += -L../dependencies/GLFW/lib-mingw + else + LDFLAGS += -L../dependencies/GLFW/lib-mingw-w64 + endif + + LDFLAGS += -static + LDFLAGS += -lglfw3dll + LDFLAGS += -lopengl32 +else + LDFLAGS += -lglfw + LDFLAGS += -lGL +endif + +# Библиотека GLAD +GLAD := ../dependencies/glad/src/glad.c +GLAD_O := $(GLAD:.c=.o) + +# Файлы из директории src +SOURCES_C = $(wildcard src/*.c) +SOURCES_CPP = $(wildcard src/*.cpp) + +# Директория с объектными файлами +OBJ_DIR := Obj +# Объектные файлы +OBJECTS = $(addprefix $(OBJ_DIR)/,$(SOURCES_C:src/%.c=%.o) $(SOURCES_CPP:src/%.cpp=%.o)) + +# Для x32 сборки под Windows +ifeq ($(OS), Windows_NT) + ifeq ($(MAKECMDGOALS), x32) +x32: all + endif +endif + +# Цель по умолчанию, зависит от EXECUTABLE +all: $(EXECUTABLE) + +# Цель сборки исполняемого файла, зависит от OBJ_DIR, OBJECTS и GLAD_O +$(EXECUTABLE): $(OBJ_DIR) $(OBJECTS) $(GLAD_O) + $(CC) $(OBJECTS) $(GLAD_O) $(LDFLAGS) -o $@ + +# Цель для сборки GLAD +$(GLAD_O): $(GLAD) + $(CC) $(CFLAGS) $< -o $@ + +# Цель для создания директории с объектными файлами +$(OBJ_DIR): + @mkdir $(OBJ_DIR) + +# Цель сборки объектных файлов +$(OBJ_DIR)/%.o: src/%.c + $(CC) $(CFLAGS) $< -o $@ +$(OBJ_DIR)/%.o: src/%.cpp + $(CC) $(CFLAGS) $< -o $@ + +# Цель вывода всех файлов, учавствтующих в сборке +list: + @echo "В сборке участвуют:" $(OBJECTS) + +# Очистка +ifeq ($(OS), Windows_NT) +clean: $(OBJ_DIR) + @rmdir /s /q $(OBJ_DIR) +else +clean: $(OBJ_DIR) + @rm -f $(EXECUTABLE) $(OBJECTS) +endif diff --git a/include/Buffers.h b/include/Buffers.h new file mode 100644 index 0000000..d7bae95 --- /dev/null +++ b/include/Buffers.h @@ -0,0 +1,88 @@ +#ifndef BUFFERS_H +#define BUFFERS_H + +#include + +#include + +// Объект массива вершин +class VAO +{ + public: + VAO(); // Создает VAO и активирует его + ~VAO(); // Уничтожает VAO + VAO(const VAO & copy); // Конструктор копирования + VAO& operator=(const VAO & other); // Оператор присваивания + + void use(); // Активация VAO + static void disable(); // Деактивация активного VAO + + private: + GLuint handler; // Дескриптор + static std::map handler_count; // Счетчик использований дескриптора +}; + +// Тип буфера +enum BUFFER_TYPE { VERTEX = GL_ARRAY_BUFFER + , ELEMENT = GL_ELEMENT_ARRAY_BUFFER + , UNIFORM = GL_UNIFORM_BUFFER + }; + +// Объект вершинного буфера +class BO +{ + public: + BO(BUFFER_TYPE type); // Создает пустой буфер заданного типа + BO(BUFFER_TYPE type, const void *data, int size); // Создает и загружает туда данные + ~BO(); // Уничтожает буфер + BO(const BO & copy); // Конструктор копирования + BO& operator=(const BO & other); // Оператор присваивания + + void load(const void *data, int size, GLuint mode = GL_STATIC_DRAW); // Загрузка данных в буфер + void use(); + + protected: + GLuint handler; // Дескриптор + BUFFER_TYPE type; // Тип буфера + private: + static std::map handler_count; // Счетчик использований дескриптора +}; + +// Объект uniform-буфера +class UBO : public BO +{ + public: + UBO(int size, int binding); // Создает пустой uniform-буфер заданного размера с автоматической привязкой + UBO(const void *data, int size, int binding); // Создает пустой uniform-буфер заданного размера с автоматической привязкой + + void rebind(int binding); // Перепривязка + void loadSub(const void *data, int size, int offset = 0); // Загрузка с отступом +}; + +// Объект буфера кадра +class FBO +{ + public: + FBO(GLuint *attachments, int count); // Создает буфер кадра с нужным числом прикреплений текстур + ~FBO(); // Уничтожение буфера + + void use(GLuint mode = GL_FRAMEBUFFER); // Активирует буфер кадра в заданном режиме + static void useDefault(GLuint mode = GL_FRAMEBUFFER); // Активирует базовый буфер в заданном режиме + void assignRenderBuffer(GLuint hander, GLuint attachment = GL_DEPTH_ATTACHMENT); // Привязка рендер буфера + protected: + GLuint handler; // Дескриптор +}; + +// Объект буфера рендера +class RBO +{ + public: + RBO(int w, int h, GLuint component = GL_DEPTH_COMPONENT); // Создает буфер рендера с заданными параметрами размеров и используемых компонент + ~RBO(); // Уничтожение буфера + + GLuint getHandler(); // Возвращает дескриптор буфера рендера + protected: + GLuint handler; // Дескриптор +}; + +#endif // BUFFERS_H diff --git a/include/Camera.h b/include/Camera.h new file mode 100644 index 0000000..9f3e97e --- /dev/null +++ b/include/Camera.h @@ -0,0 +1,73 @@ +#ifndef CAMERA_H +#define CAMERA_H + +#include +#include +#include +#include + +#include "Model.h" + +// Ближняя граница области отсечения +#define CAMERA_NEAR 0.1f +// Дальняя граница области отсечения +#define CAMERA_FAR 100.0f +// Вектор, задающий верх для камеры +#define CAMERA_UP_VECTOR glm::vec3(0.0f, 1.0f, 0.0f) +// Вектор, задающий стандартный поворот углами Эйлера (в положительном направлении оси Z) +#define CAMERA_DEFAULT_ROTATION glm::vec3(0.0f, 180.0f, 0.0f) +// Стандартный угол обзора +#define CAMERA_FOVy 60.0f +// Стандартная чувствительность +#define CAMERA_DEFAULT_SENSIVITY 0.005f + +// Данные о камере для шейдера +struct CameraData +{ + glm::mat4 projection; + glm::mat4 view; + glm::vec3 position; +}; + +// Класс камеры +class Camera : public Node +{ + public: + Camera(float aspect, const glm::vec3 &position = glm::vec3(0.0f), const glm::vec3 &initialRotation = CAMERA_DEFAULT_ROTATION, float fovy = CAMERA_FOVy); // Конструктор камеры с проекцией перспективы + Camera(float width, float height, const glm::vec3 &position = glm::vec3(0.0f), const glm::vec3 &initialRotation = CAMERA_DEFAULT_ROTATION); // Конструктор ортографической камеры + Camera(const Camera& copy); // Конструктор копирования камеры + Camera& operator=(const Camera& other); // Оператор присваивания + virtual ~Camera(); // Деструктор + + const glm::mat4& getVP(); // Возвращает ссылку на константную матрицу произведения матриц вида и проекции + const glm::mat4& getProjection(); // Возвращает ссылку на константную матрицу проекции + const glm::mat4& getView(); // Возвращает ссылку на константную матрицу вида + + void rotate(const glm::vec2 &xyOffset); // Поворачивает камеру на dx и dy пикселей с учетом чувствительности + + void setPerspective(float fov, float aspect); // Устанавливает заданную матрицу перспективы + void setOrtho(float width, float height); // Устанавливает заданную ортографическую матрицу + void setSensitivity(float sensitivity); // Изменяет чувствительность мыши + const float& getSensitivity() const; // Возвращает чувствительность мыши + + void use(); // Использование этой камеры как текущей + static Camera& current(); // Ссылка на текущую используемую камеру + + CameraData& getData(); // Данные о камере для шейдера + protected: + Camera(const glm::vec3 &position, const glm::vec3 &initialRotation); // Защищенный (protected) конструктор камеры без перспективы + + glm::mat4 view; // Матрица вида + glm::mat4 projection; // Матрица проекции + glm::mat4 vp; // Матрица произведения вида и проекции + bool requiredRecalcVP; // Необходимость пересчета матрицы вида и проекции камеры + + float sensitivity; // Чувствительность мыши + + virtual void recalcMatrices(); // Метод пересчета матрицы вида и произведения Вида*Проекции по необходимости, должен сбрасывать флаг changed + + static Camera* p_current; // Указатель на текущую используемую камеру +}; + + +#endif // CAMERA_H \ No newline at end of file diff --git a/include/Lights.h b/include/Lights.h new file mode 100644 index 0000000..ffe2423 --- /dev/null +++ b/include/Lights.h @@ -0,0 +1,59 @@ +#ifndef LIGHTS_H +#define LIGHTS_H + +#include + +#include "Model.h" + +// Максимальное число источников света +#define MAX_LIGHTS 300 + +// Точечный источник света +struct LightData +{ + alignas(16) glm::vec3 position; // Позиция + alignas(16) glm::vec3 color; // Цвет + alignas(16) glm::vec3 attenuation; // Радиус действия источника, линейный и квадратичный коэф. угасания +}; + +// Источник света +class Light : public Node +{ + public: + static int getUBOsize(); // Возвращает размер буфера в байтах + static void upload(UBO& lights_data); // Загрузка данных в буфер + + static Light& getNew(); // Возвращает ссылку на новый источник света + void destroy(); // Уничтожает источник света + + const glm::vec3& c_color() const; // Константный доступ к цвету + glm::vec3& e_color(); // Неконстантная ссылка для изменений цвета + + const float& c_radius() const; // Константный доступ к радиусу + float& e_radius(); // Неконстантная ссылка для изменений радиуса + + static void render(ShaderProgram &shaderProgram, UBO &material_buffer); // Рисование отладочных лампочек + private: + Light(); // Конструктор без параметров + Light(const Light& copy) = delete; // Конструктор копирования ОТКЛЮЧЕН + Light& operator=(const Light& other); // Оператор присваивания + virtual ~Light(); + + glm::vec3 color; // Цвет + float radius; // Радиус действия источника + + int index; // Индекс в массиве отправки (может не совпадать с lights) для дефрагментированного доступа + static Light& findByIndex(GLuint index); // Возвращает ссылку на источник с нужным индексом + + bool uploadReq; // Необходимость загрузки в следствии изменений + void check_id(); // Проверка что не взаимодествуем с пустым источником + void toData(); // Преобразует информацию об источнике в структуру LightData + + virtual void recalcMatrices(); // Метод пересчета матрицы трансформации по необходимости, должен сбрасывать флаг changed + + static GLuint count; // количество используемых источников (должно быть <= MAX_LIGHTS) + static LightData data[MAX_LIGHTS]; // Массив данных по источникам света + static Light lights[MAX_LIGHTS]; // Массив источников-узлов сцены +}; + +#endif // LIGHTS_H diff --git a/include/Model.h b/include/Model.h new file mode 100644 index 0000000..5016a30 --- /dev/null +++ b/include/Model.h @@ -0,0 +1,99 @@ +#ifndef MODEL_H +#define MODEL_H + +#include "Buffers.h" +#include "Texture.h" +#include "Shader.h" + +#include +#include +#include + +#include + +class Model genShpere(float radius, int sectorsCount, class Node* parent = NULL); // Генерирует сферу заданного радиуса с определенным количеством сегментов + +// Класс узла сцены +class Node +{ + public: + Node(Node* parent = NULL); // Конструктор с заданным родителем (по умолчанию NULL) + Node(const Node& copy); // Конструктор копирования + Node& operator=(const Node& other); // Оператор присваивания + virtual ~Node(); + + void setParent(Node * parent); // Устанавливает родителя для узла + + virtual const glm::mat4& getTransformMatrix(); // Возвращает матрицу трансформации модели + bool isChanged(); // Возвращает необходимость пересчета матрицы трансформации + + const glm::vec3& c_position() const; // Константный доступ к позиции + const glm::quat& c_rotation() const; // Константный доступ к повороту + const glm::vec3& c_scale() const; // Константный доступ к масштабированию + virtual glm::vec3& e_position(); // Неконстантная ссылка для изменений позиции + virtual glm::quat& e_rotation(); // Неконстантная ссылка для изменений поворота + virtual glm::vec3& e_scale(); // Неконстантная ссылка для изменений масштабирования + + Node* getParent(); // Возвращает указатель на родителя + const std::vector& getChildren() const; // Возвращает ссылку на вектор дочерних узлов + + protected: + Node *parent; // Родительский узел + std::vector children; // Узлы-потомки !Не должны указывать на NULL! + + glm::vec3 position; // позиция модели + glm::quat rotation; // поворот модели + glm::vec3 scale; // масштабирование модели + + bool changed; // Флаг необходимости пересчета матрицы трансформации + glm::mat4 transform; // Матрица трансформации модели + bool parent_changed; // Флаг изменений у родителя - необходимость пересчета итоговой трансформации + glm::mat4 result_transform; // Итоговая трансформация с учетом родительской + + virtual void recalcMatrices(); // Метод пересчета матрицы трансформации по необходимости, должен сбрасывать флаг changed + void invalidateParent(); // Проход потомков в глубину с изменением флага parent_changed +}; + +// Материал модели +struct Material +{ + alignas(16) glm::vec3 ka; // коэф. фонового отражения (цвет фонового освещения) + alignas(16) glm::vec3 kd; // коэф. диффузного отражения (цвет объекта) + alignas(16) glm::vec3 ks; // коэф. зеркального блика + float p; // показатель глянцевости + // Значения по умолчанию + Material() : ka(0.2f), kd(0.2f), ks(0.2f), p(1) { }; +}; + +// Класс модели +class Model : public Node +{ + public: + Model(Node *parent = NULL); // Конструктор по умолчанию + Model(const Model& copy); // Конструктор копирования + Model& operator=(const Model& other); // Оператор присваивания + virtual ~Model(); + + void render(); // Вызов отрисовки без uniform-данных + void render(ShaderProgram &shaderProgram, UBO &material_buffer); // Вызов отрисовки + + void load_verteces(glm::vec3* verteces, GLuint count); // Загрузка вершин в буфер + void load_indices(GLuint* indices, GLuint count); // Загрузка индексов в буфер + void load_texCoords(glm::vec2* texCoords, GLuint count); // Загрузка текстурных координат в буфер + void load_normals(glm::vec3* normals, GLuint count); // Загрузка нормалей в буфер + void set_index_range(size_t first_byteOffset, size_t count); // Ограничение диапазона из буфера индексов + void set_texture(Texture& texture); // Привязка текстуры к модели + + Material material; // Материал модели + private: + VAO vao; + BO vertex_vbo, index_vbo; // вершинный и индексный буферы + BO normals_vbo, texCoords_vbo; // буферы с нормалями и текстурными координатами + GLuint verteces_count; // Количество вершин + size_t first_index_byteOffset, indices_count; // Сдвиг в байтах для первого и количество индексов + Texture texture_diffuse; // Диффузная текстура + Texture texture_ambient; // Текстура фонового освщения + Texture texture_specular; // Текстура зеркального отражения +}; + +#endif // MODEL_H diff --git a/include/Scene.h b/include/Scene.h new file mode 100644 index 0000000..c2ed12a --- /dev/null +++ b/include/Scene.h @@ -0,0 +1,35 @@ +#ifndef SCENE_H +#define SCENE_H + +#include "Model.h" +#include "Camera.h" + +#define DEFAULT_MTL_DIR "./" +class Scene loadOBJtoScene(const char* filename, const char* mtl_directory = DEFAULT_MTL_DIR, const char* texture_directory = DEFAULT_MTL_DIR); + +// Класс сцены +class Scene +{ + public: + Scene(); // Конструктор пустой сцены + Scene(const Scene ©); // Конструктор копирования + Scene& operator=(const Scene& other); // Оператор присваивания + + void render(ShaderProgram &shaderProgram, UBO &material_buffer); // Рендер сцены + + Node root; // Корневой узел + + // Списки объектов, выступающих узлами + std::vector nodes; // Список пустых узлов + std::vector models; // Список моделей для рендера + std::vector cameras; // Список камер + + protected: + void rebuld_tree(const Scene& from); // Перестройка дерева после копирования или присваивания + template + void rebuild_Nodes_vector(T& nodes, const Scene& from); // Перестройка узлов выбранного списка + template + bool move_pointer(Node& for_node, const std::vector& from_nodes, std::vector& this_nodes); // Сдвигает родителя узла между двумя списками при условии его принадлежности к оригинальному, возвращает признак замены +}; + +#endif // SCENE_H diff --git a/include/Shader.h b/include/Shader.h new file mode 100644 index 0000000..0562dd7 --- /dev/null +++ b/include/Shader.h @@ -0,0 +1,30 @@ +#ifndef SHADER_H +#define SHADER_H + +#include + +#include +#include + +// Класс шейдерной программы +class ShaderProgram +{ + public: + ShaderProgram(); + ShaderProgram(const ShaderProgram ©); + ~ShaderProgram(); + ShaderProgram& operator=(const ShaderProgram& other); + + void use(); // Использование шейдеров + void load(GLuint type, const char* filename); // Функция для загрузки шейдеров + void link(); // Формирование программы из загруженных шейдеров + GLuint getUniformLoc(const char* name); // Возвращает местоположение uniform-переменной + void bindUniformBlock(const char* name, int binding); // Привязка uniform-блока + void bindTextures(const char* textures_base_shader_names[], int count); // Инициализация текстур на шейдере + private: + GLuint program; // Дескриптор + static std::map handler_count; // Получение количества использований по дескриптору шейдера (Shared pointer) + std::map uniformLocations; // Местоположения uniform-переменных +}; + +#endif // SHADER_H \ No newline at end of file diff --git a/include/Texture.h b/include/Texture.h new file mode 100644 index 0000000..e64599c --- /dev/null +++ b/include/Texture.h @@ -0,0 +1,37 @@ +#ifndef TEXTURE_H +#define TEXTURE_H + +#include + +#include +#include + +enum TexType { + TEX_DIFFUSE, + TEX_AMBIENT, + TEX_SPECULAR, + TEX_AVAILABLE_COUNT +}; + +class Texture +{ + public: + Texture(GLuint type = TEX_AVAILABLE_COUNT, const std::string& filename = ""); // Загрузка текстуры с диска или использование "пустой" + Texture(GLuint width, GLuint height, GLuint attachment, GLuint texType = TEX_DIFFUSE, GLint internalformat = GL_RGBA, GLint format = GL_RGBA, GLenum dataType = GL_FLOAT); // Конструктор текстуры заданного размера для использования в буфере + Texture(const Texture& other); // Конструктор копирования + ~Texture(); + + Texture& operator=(const Texture& other); // Оператор присваивания + + void use(); // Привязка текстуры + static void disable(GLuint type); // Отвязка текстуры по типу + GLuint getType(); // Возвращает тип текстуры + void setType(GLuint type); // Задает тип текстуры + private: + GLuint handler; // Дескриптор текстуры + GLuint type; // Тип текстуры, соответствует её слоту + static std::map filename_handler; // Получение дескриптора текстуры по её имени + static std::map handler_count; // Получение количества использований по дескриптору текстуры (Shared pointer) +}; + +#endif // TEXTURE_H diff --git a/shaders/bulb.frag b/shaders/bulb.frag new file mode 100644 index 0000000..9329edf --- /dev/null +++ b/shaders/bulb.frag @@ -0,0 +1,16 @@ +#version 420 core + +layout(std140, binding = 1) uniform Material +{ + vec3 ka; + vec3 kd; + vec3 ks; + float p; +}; + +out vec4 color; + +void main() +{ + color = vec4(ka, 1); +} \ No newline at end of file diff --git a/shaders/bulb.vert b/shaders/bulb.vert new file mode 100644 index 0000000..7ce8b0b --- /dev/null +++ b/shaders/bulb.vert @@ -0,0 +1,17 @@ +#version 420 core + +layout(location = 0) in vec3 pos; + +layout(std140, binding = 0) uniform Camera +{ + mat4 projection; + mat4 view; + vec3 position; +} camera; + +uniform mat4 model; + +void main() +{ + gl_Position = camera.projection * camera.view * model * vec4(pos, 1.0); +} \ No newline at end of file diff --git a/shaders/gshader.frag b/shaders/gshader.frag new file mode 100644 index 0000000..4e35b24 --- /dev/null +++ b/shaders/gshader.frag @@ -0,0 +1,38 @@ +#version 420 core + +layout(std140, binding = 1) uniform Material +{ + vec3 ka; + vec3 kd; + vec3 ks; + float p; +}; + +layout (location = 0) out vec3 gPosition; +layout (location = 1) out vec3 gNormal; +layout (location = 2) out vec4 gDiffuseP; +layout (location = 3) out vec4 gAmbientSpecular; + +in vec3 vertex; // Позиция вершины в пространстве +in vec3 N; // Нормаль трансформированноая +in vec2 texCoord; // Текстурные координаты + +uniform sampler2D tex_diffuse; +uniform sampler2D tex_ambient; +uniform sampler2D tex_specular; + +void main() +{ + // Сохранение позиции фрагмента в G-буфере + gPosition = vertex; + // Сохранение нормали в G-буфере + gNormal = N; + // Сохранение диффузного цвета + gDiffuseP.rgb = texture(tex_diffuse, texCoord).rgb * kd; + // Сохранение глянцевости + gDiffuseP.a = p; + // Сохранение фоновой составляющей + gAmbientSpecular.rgb = texture(tex_ambient, texCoord).rgb * ka; + // Сохранение зеркальной составляющей + gAmbientSpecular.a = texture(tex_specular, texCoord).r * ks.r; +} \ No newline at end of file diff --git a/shaders/gshader.vert b/shaders/gshader.vert new file mode 100644 index 0000000..0d7ea72 --- /dev/null +++ b/shaders/gshader.vert @@ -0,0 +1,30 @@ +#version 420 core + +layout(location = 0) in vec3 pos; +layout(location = 1) in vec2 inTexCoord; +layout(location = 2) in vec3 normals; + +layout(std140, binding = 0) uniform Camera +{ + mat4 projection; + mat4 view; + vec3 position; +} camera; + +uniform mat4 model; + +out vec3 vertex; // Позиция вершины в пространстве +out vec3 N; // Нормаль трансформированноая +out vec2 texCoord; // Текстурные координаты + +void main() +{ + vec4 P = model * vec4(pos, 1.0); // трансформация вершины + vertex = P.xyz; + + N = normalize(mat3(model) * normals); // трансформация нормали + + texCoord = inTexCoord; // Текстурные координаты + + gl_Position = camera.projection * camera.view * P; +} \ No newline at end of file diff --git a/shaders/lighting.frag b/shaders/lighting.frag new file mode 100644 index 0000000..88b259d --- /dev/null +++ b/shaders/lighting.frag @@ -0,0 +1,85 @@ +#version 420 core + +in vec2 texCoord; + +layout(std140, binding = 0) uniform Camera +{ + mat4 projection; + mat4 view; + vec3 position; +} camera; + +struct LightData +{ + vec3 position; + vec3 color; + vec3 attenuation; +}; + +layout(std140, binding = 2) uniform Light +{ + LightData data[300]; + int count; +} light_f; + +uniform sampler2D gPosition; +uniform sampler2D gNormal; +uniform sampler2D gDiffuseP; +uniform sampler2D gAmbientSpecular; + +out vec4 color; + +void main() +{ + // Получим данные из текстур буфера + vec3 fragPos = texture(gPosition, texCoord).rgb; + vec3 N = texture(gNormal, texCoord).rgb; + vec3 kd = texture(gDiffuseP, texCoord).rgb; + vec3 ka = texture(gAmbientSpecular, texCoord).rgb; + float ks = texture(gAmbientSpecular, texCoord).a; + float p = texture(gDiffuseP, texCoord).a; + + // Переменные используемые в цикле: + vec3 L_vertex; // Данные об источнике относительно фрагмента + vec3 Cam_vertex = normalize(camera.position - fragPos); // Данные о камере относительно фрагмента + float diffuse; // Диффузная составляющая + vec3 H; // Вектор половины пути + float specular; // Зеркальная составляющая + float L_distance; // Расстояние от поверхности до источника + float attenuation; // Коэф. угасания + + // Фоновая освещенность + color = vec4(ka, 1); + + // Цикл по источникам света + int i; + for (i = 0; i < light_f.count; i++) + { + // Данные об источнике относительно фрагмента + L_vertex = light_f.data[i].position - fragPos; + + // Расстояние от поверхности до источника + L_distance = length(L_vertex); + + // Проверка на дистанцию + if (L_distance < light_f.data[i].attenuation.r) + { + // Нормирование вектора + L_vertex = normalize(L_vertex); + + // Диффузная составляющая + diffuse = max(dot(L_vertex, N), 0.0); // скалярное произведение с отсеканием значений < 0 + + // Вектор половины пути + H = normalize(L_vertex + Cam_vertex); + // Зеркальная составляющая + specular = pow(max(dot(H, N), 0.0), p*4); // скалярное произведение с отсеканием значений < 0 в степени p + + // Угасание с учетом расстояния + attenuation = 1 / (1 + light_f.data[i].attenuation[1] * L_distance + light_f.data[i].attenuation[2] * L_distance * L_distance); + + color += vec4(light_f.data[i].color*kd*diffuse * attenuation, 1) + + vec4(light_f.data[i].color*ks*specular * attenuation, 1); + } + } +} \ No newline at end of file diff --git a/shaders/quad.vert b/shaders/quad.vert new file mode 100644 index 0000000..fb0683c --- /dev/null +++ b/shaders/quad.vert @@ -0,0 +1,11 @@ +#version 420 core + +layout(location = 0) in vec3 pos; + +out vec2 texCoord; + +void main() +{ + gl_Position = vec4(pos, 1.0); + texCoord = (pos.xy + vec2(1.0)) / 2; // Переход от [-1;1] к [0;1] +} \ No newline at end of file diff --git a/src/Buffers.cpp b/src/Buffers.cpp new file mode 100644 index 0000000..c0acea7 --- /dev/null +++ b/src/Buffers.cpp @@ -0,0 +1,196 @@ +#include "Buffers.h" + +// Счетчики использований дескрипторов +std::map VAO::handler_count; +std::map BO::handler_count; + +// Создает VAO и активирует его +VAO::VAO() +{ + glGenVertexArrays(1, &handler); // Генерация одного объекта массива вершин + glBindVertexArray(handler); // Привязка для использования + handler_count[handler] = 1; // Инициализация счетчика для дескриптора +} + +// Уничтожает VAO +VAO::~VAO() +{ + // Если дескриптор никем не используется - освободим его + if (!--handler_count[handler]) + { + glDeleteVertexArrays(1, &handler); + handler_count.erase(handler); // Удаление из словаря + } +} + +// Конструктор копирования +VAO::VAO(const VAO & copy) : handler(copy.handler) +{ + handler_count[handler]++; +} + +// Оператор присваивания +VAO& VAO::operator=(const VAO & other) +{ + // Если это разные дескрипторы + if (handler != other.handler) + { // то следуюет удалить текущий перед заменой + this->~VAO(); + handler = other.handler; + handler_count[handler]++; + } + + return *this; +} + +// Активация VAO +void VAO::use() +{ + glBindVertexArray(handler); // Привязка VAO для использования +} + +// Деактивация активного VAO +void VAO::disable() +{ + glBindVertexArray(0); // Отключение VAO +} + +// Создает пустой буфер заданного типа +BO::BO(BUFFER_TYPE t) : type(t) +{ + glGenBuffers(1, &handler); // Генерация одного объекта буфера + handler_count[handler] = 1; + use(); // Привязка буфера +} + +// Создает и загружает туда данные +BO::BO(BUFFER_TYPE t, const void *data, int size) : BO(t) +{ + load(data, size); +} + +// Уничтожает буфер +BO::~BO() +{ + if (handler) // Если буфер был создан + { + // Если дескриптор никем не используется - освободим его + if (!--handler_count[handler]) + { + glDeleteBuffers(1, &handler); + handler_count.erase(handler); // Удаление из словаря + } + handler = 0; + } +} + +// Конструктор копирования +BO::BO(const BO & copy) : handler(copy.handler), type(copy.type) +{ + handler_count[handler]++; +} + +// Оператор присваивания +BO& BO::operator=(const BO & other) +{ + // Если это разные дескрипторы + if (handler != other.handler) + { // то следуюет удалить текущий перед заменой + this->~BO(); + handler = other.handler; + handler_count[handler]++; + } + // Изменим тип + type = other.type; + + return *this; +} + +// Загрузка вершин в буфер +void BO::load(const void *data, int size, GLuint mode) +{ + use(); // Привязка буфера + glBufferData(type, size, data, mode); +} + +void BO::use() +{ + glBindBuffer(type, handler); // Привязка элементного буфера +} + +// Создает пустой uniform-буфер заданного размера с автоматической привязкой +UBO::UBO(int size, int binding) : BO(UNIFORM, 0, size) +{ + rebind(binding); +} + +// Создает пустой uniform-буфер заданного размера с автоматической привязкой +UBO::UBO(const void *data, int size, int binding) : BO(UNIFORM, data, size) +{ + rebind(binding); +} + +// перепривязка +void UBO::rebind(int binding) +{ + glBindBufferBase(type, binding, handler); +} + +// Загрузка с отступом +void UBO::loadSub(const void *data, int size, int offset) +{ + use(); + glBufferSubData(type, offset, size, data); +} + +// Создает буфер кадра с нужным числом прикреплений текстур +FBO::FBO(GLuint *attachments, int count) +{ + glGenFramebuffers(1, &handler); + use(); + glDrawBuffers(count, attachments); +} + +// Уничтожение буфера +FBO::~FBO() +{ + glDeleteFramebuffers(1, &handler); +} + +// Активирует буфер кадра в заданном режиме +void FBO::use(GLuint mode) +{ + glBindFramebuffer(mode, handler); +} + +// Активирует базовый буфер в заданном режиме +void FBO::useDefault(GLuint mode) +{ + glBindFramebuffer(mode, 0); +} + +// Привязка рендер буфера +void FBO::assignRenderBuffer(GLuint hander, GLuint attachment) +{ + glFramebufferRenderbuffer(GL_FRAMEBUFFER, attachment, GL_RENDERBUFFER, hander); +} + +// Создает буфер рендера с заданными параметрами размеров и используемых компонент +RBO::RBO(int w, int h, GLuint component) +{ + glGenRenderbuffers(1, &handler); + glBindRenderbuffer(GL_RENDERBUFFER, handler); + glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT, w, h); +} + +// Уничтожение буфера +RBO::~RBO() +{ + glDeleteRenderbuffers(1, &handler); +} + +// Возвращает дескриптор буфера рендера +GLuint RBO::getHandler() +{ + return handler; +} diff --git a/src/Camera.cpp b/src/Camera.cpp new file mode 100644 index 0000000..0e39742 --- /dev/null +++ b/src/Camera.cpp @@ -0,0 +1,189 @@ +#include "Camera.h" + +// Указатель на текущую используемую камеру +Camera* Camera::p_current = NULL; + +// Защищенный (protected) конструктор камеры без перспективы +Camera::Camera(const glm::vec3 &pos, const glm::vec3 &initialRotation) +{ + sensitivity = CAMERA_DEFAULT_SENSIVITY; + position = pos; // задаем позицию + // Определяем начальный поворот + glm::quat rotationAroundX = glm::angleAxis( glm::radians(initialRotation.x), glm::vec3(1.0f, 0.0f, 0.0f)); + glm::quat rotationAroundY = glm::angleAxis(-glm::radians(initialRotation.y), glm::vec3(0.0f, 1.0f, 0.0f)); + glm::quat rotationAroundZ = glm::angleAxis( glm::radians(initialRotation.z), glm::vec3(0.0f, 0.0f, 1.0f)); + rotation = rotationAroundX * rotationAroundY * rotationAroundZ; + // Признак изменения + changed = true; +} + +// Конструктор камеры с проекцией перспективы +Camera::Camera(float aspect, const glm::vec3 &position, const glm::vec3 &initialRotation, float fovy) +: Camera(position, initialRotation) +{ + setPerspective(fovy, aspect); +} + +// Конструктор ортографической камеры +Camera::Camera(float width, float height, const glm::vec3 &position, const glm::vec3 &initialRotation) +: Camera(position, initialRotation) +{ + setOrtho(width, height); +} + +// Конструктор копирования камеры +Camera::Camera(const Camera& copy) +: projection(copy.projection), requiredRecalcVP(copy.requiredRecalcVP), sensitivity(copy.sensitivity) +{ + // Если у оригинала не было изменений - перепишем матрицу вида-проекции + if (!requiredRecalcVP) + vp = copy.vp; +} + +// Оператор присваивания +Camera& Camera::operator=(const Camera& other) +{ + projection = other.projection; + requiredRecalcVP = other.requiredRecalcVP; + sensitivity = other.sensitivity; + + // Если у оригинала не было изменений - перепишем матрицу вида-проекции + if (!requiredRecalcVP) + vp = other.vp; + + return *this; +} + +// Деструктор +Camera::~Camera() +{ + if (p_current == this) + p_current = NULL; +} + +// Возвращает ссылку на константную матрицу проекции +const glm::mat4& Camera::getProjection() +{ + return projection; +} + +// Возвращает ссылку на константную матрицу вида +const glm::mat4& Camera::getView() +{ + recalcMatrices(); + + return view; +} + +// Возвращает ссылку на константную матрицу вида +const glm::mat4& Camera::getVP() +{ + recalcMatrices(); + + return vp; +} + +// Устанавливает заданную матрицу перспективы +void Camera::setPerspective(float fovy, float aspect) +{ + projection = glm::perspective(glm::radians(fovy), aspect, CAMERA_NEAR, CAMERA_FAR); + requiredRecalcVP = true; +} + +// Устанавливает заданную ортографическую матрицу +void Camera::setOrtho(float width, float height) +{ + const float aspect = width / height; + projection = glm::ortho(-1.0f, 1.0f, -1.0f/aspect, 1.0f/aspect, CAMERA_NEAR, CAMERA_FAR); + requiredRecalcVP = true; +} + +// Изменяет чувствительность мыши +void Camera::setSensitivity(float sens) +{ + sensitivity = sens; +} + +// Возвращает чувствительность мыши +const float& Camera::getSensitivity() const +{ + return sensitivity; +} + +// Метод пересчета матрицы вида и произведения Вида*Проекции по необходимости, должен сбрасывать флаг changed +void Camera::recalcMatrices() +{ + if (changed || parent_changed) + { + glm::vec3 _position = position; + glm::quat _rotation = rotation; + if (parent) // Если есть родитель + { + glm::mat4 normalized_transform = parent->getTransformMatrix(); + for (int i = 0; i < 3; i++) + { + glm::vec3 axis = glm::vec3(normalized_transform[i]); + normalized_transform[i] = glm::vec4(glm::normalize(axis), normalized_transform[i].w); + } + glm::vec4 tmp = normalized_transform * glm::vec4(_position, 1.0f); + tmp /= tmp.w; + _position = glm::vec3(tmp); + _rotation = glm::quat_cast(normalized_transform) * _rotation; + } + glm::mat4 rotationMatrix = glm::mat4_cast(glm::conjugate(_rotation)); + glm::mat4 translationMatrix = glm::translate(glm::mat4(1.0f), -_position); + view = rotationMatrix * translationMatrix; + requiredRecalcVP = true; + } + + Node::recalcMatrices(); + + if (requiredRecalcVP) + { + vp = projection * view; + requiredRecalcVP = false; // Изменения применены + } +} + +// Поворачивает камеру на dx и dy пикселей с учетом чувствительности +void Camera::rotate(const glm::vec2 &xyOffset) +{ + // xyOffset - сдвиги координат мыши, xyOffset.x означает поворот вокруг оси Y, а xyOffset.y - поворот вокруг оси X + + // Вращение вокруг оси Y + glm::quat qY = glm::angleAxis(-xyOffset.x * sensitivity, glm::vec3(0.0f, 1.0f, 0.0f)); + + // Вращение вокруг оси X + glm::quat qX = glm::angleAxis(xyOffset.y * sensitivity, glm::vec3(1.0f, 0.0f, 0.0f)); + + // Сначала применяем вращение вокруг Y, затем вокруг X + rotation = qY * rotation * qX; + + changed = true; + invalidateParent(); // Проход потомков в глубину с изменением флага parent_changed +} + +// Использование этой камеры как текущей +void Camera::use() +{ + p_current = this; +} + +// Ссылка на текущую используемую камеру +Camera& Camera::current() +{ + static Camera default_cam(800.0f/600.0f); + + if (!p_current) + return default_cam; + else + return *p_current; +} + +// Данные о камере для шейдера +CameraData& Camera::getData() +{ + static CameraData data; + data = {getProjection(), getView(), position}; + return data; +} diff --git a/src/Lights.cpp b/src/Lights.cpp new file mode 100644 index 0000000..2734514 --- /dev/null +++ b/src/Lights.cpp @@ -0,0 +1,217 @@ +#include "Lights.h" + +#include "Scene.h" // Для отладочного вывода лампочек + +#include + +GLuint Light::count = 0; // количество используемых источников (должно быть <= MAX_LIGHTS) +LightData Light::data[MAX_LIGHTS]; // Массив данных по источникам света +Light Light::lights[MAX_LIGHTS]; // Массив источников-узлов сцены + +// возвращает размер буфера в байтах +int Light::getUBOsize() +{ + return sizeof(LightData) * MAX_LIGHTS + sizeof(GLuint); +} + +// Загрузка данных в буфер +void Light::upload(UBO& lights_data) +{ + GLuint LightDataSize = sizeof(LightData); // Одного экземпляра структуры LightData + int first = MAX_LIGHTS, last = -1; // Начало и конец диапазона загрузки источников + static GLuint prev_count = -1; // Кол-во источников в прошлую посылку + + if (count) + { + for (int i = 0; i < MAX_LIGHTS; i++) + { + lights[i].recalcMatrices(); // Пересчитаем матрицы по необходимости (проверка внутри метода) + + // Если требуется загрузка + if (lights[i].uploadReq) + { + lights[i].toData(); // Перевод ноды в данные для шейдера + + // Определение диапазона загрузки + if (first > lights[i].index) + first = lights[i].index; + if (last < lights[i].index) + last = lights[i].index; + + lights[i].uploadReq = false; // Сброс флага + } + } + + // Если есть что загрузить (определен диапазон) + if (last > -1) + lights_data.loadSub(data + first, LightDataSize*(last - first +1), LightDataSize*(first)); // Загрузка данных об источниках + } + + // Если кол-во изменилось + if (prev_count != count) + { + prev_count = count; + + // Загружаем кол-во источников + lights_data.loadSub(&count, sizeof(count), LightDataSize*MAX_LIGHTS); + } +} + +// Метод пересчета матрицы трансформации по необходимости, должен сбрасывать флаг changed +void Light::recalcMatrices() +{ + // Если были изменения - необходимо загрузить данные + if (changed || parent_changed) + uploadReq = true; + + // Выполняем вычисление матриц методом родительского класса + Node::recalcMatrices(); +} + +// Константный доступ к цвету +const glm::vec3& Light::c_color() const +{ + return color; +} + +// Неконстантная ссылка для изменений цвета +glm::vec3& Light::e_color() +{ + uploadReq = true; + + return color; +} + +// Проверка что не взаимодествуем с пустым источником +void Light::check_id() +{ + if (index < 0 + || index >= count) + throw std::runtime_error("Попытка использовать ссылку на пустой или некорректный источник"); +} + +// Преобразует информацию об источнике в структуру LightData +void Light::toData() +{ + check_id(); // Проверка на работу с корректным индексом + + data[index].position = glm::vec3(result_transform[3]); // Позиция из матрицы трансформации + data[index].color = color; // Цвет + // Если радиус изменился + if (data[index].attenuation.r != radius) + { + data[index].attenuation.r = radius; // Радиус действия источника + data[index].attenuation[1] = 4.5/radius; // Линейный коэф. угасания + data[index].attenuation[2] = 4 * data[index].attenuation[1] * data[index].attenuation[1]; // Квадратичный коэф. угасания + } +} + +// Возвращает ссылку на новый источник света +Light& Light::getNew() +{ + Light& refNew = findByIndex(-1); + + refNew.index = count++; + refNew.uploadReq = true; + + return refNew; +} + +// Уничтожает источник света +void Light::destroy() +{ + check_id(); // Проверка на работу с корректным индексом + // Если удаляемый элемент не последний + if (count-1 != index) + { + // Найдем элемент для замены + Light& replace = findByIndex(--count); + + replace.uploadReq = true; // Требуется загрузить данные + replace.index = index; // Заменяем индекс данных + } + + operator=(Light()); // Обнулим источник путем замены на новый +} + +// Возвращает ссылку на источник с нужным индексом +Light& Light::findByIndex(GLuint index) +{ + // Если нет источников - возвращаем нулевой + if (!count) + return lights[0]; + + // Цикл по перебору источников + for (int i = 0; i < MAX_LIGHTS; i++) + if (lights[i].index == index) + return lights[i]; + + throw std::runtime_error("Запрашиваемый источник освещения не найден, либо достигнут лимит"); +} + +// Конструктор без параметров +Light::Light() : Node(), index(-1), uploadReq(false), color(1.0f), radius(10.0f) +{ + +} + +// Оператор присваивания +Light& Light::operator=(const Light& other) +{ + // Проверка на самоприсваивание + if (this != &other) + { + index = other.index; // Переносим индекс + uploadReq = other.uploadReq; // Необходимость загрузки + color = other.color; + radius = other.radius; + + Node::operator=(other); + } + return *this; +} + +Light::~Light() +{ + +} + +// Рисование отладочных лампочек +void Light::render(ShaderProgram &shaderProgram, UBO &material_buffer) +{ + // Загрузка модели лампочки при первом вызове функции + static Scene bulb = loadOBJtoScene("../resources/models/bulb.obj", "../resources/models/", "../resources/textures/"); + static Model sphere = genShpere(1, 16, &bulb.root); + + // Цикл по источникам света + for (int i = 0; i < count; i++) + { + // Сдвиг на позицию источника + bulb.root.e_position() = data[i].position; + sphere.e_scale() = glm::vec3(data[i].attenuation.r); // Масштабирование сферы + // Задание цвета + bulb.models[0].material.ka = sphere.material.ka = data[i].color; + + // Вызов отрисовки + bulb.render(shaderProgram, material_buffer); + + // Рисование сферы покрытия источника в режиме линий + glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); + sphere.render(shaderProgram, material_buffer); + glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); + } +} + +// Константный доступ к радиусу +const float& Light::c_radius() const +{ + return radius; +} + +// Неконстантная ссылка для изменений радиуса +float& Light::e_radius() +{ + uploadReq = true; + + return radius; +} diff --git a/src/Model.cpp b/src/Model.cpp new file mode 100644 index 0000000..70c55e7 --- /dev/null +++ b/src/Model.cpp @@ -0,0 +1,478 @@ +#include "Model.h" + +#include + +// Конструктор с заданным родителем (по умолчанию NULL) +Node::Node(Node* parent_) : parent(parent_), result_transform(1), parent_changed(false), +position(0), rotation(1.0f, 0.0f, 0.0f, 0.0f), scale(1), changed(false), transform(1) +{ + if (parent) + { + // Запишем себя в потомки + parent->children.push_back(this); + parent_changed = true; + } +} + +// Конструктор копирования +Node::Node(const Node& copy): position(copy.position), rotation(copy.position), scale(copy.scale), +parent(copy.parent), parent_changed(copy.parent_changed), transform(1), result_transform(1) +{ + // Запишем себя в потомки + if (parent) + parent->children.push_back(this); + // Если у оригинала не было изменений - перепишем матрицу трансформации + if (!changed) + transform = copy.transform; + // Если у родителя не было изменений для оригинала - перепишем результирующую матрицу трансформации + if (!parent_changed) + result_transform = copy.result_transform; +} + +Node::~Node() +{ + setParent(NULL); // Удаляем себя из потомков + // Сообщаем потомкам об удалении родителя + for (Node* child : children) + child->setParent(NULL); +} + +// Возвращает необходимость пересчета матрицы трансформации +bool Node::isChanged() +{ + return changed; +} + +// Константный доступ к позиции +const glm::vec3& Node::c_position() const +{ + return position; +} + +// Константный доступ к повороту +const glm::quat& Node::c_rotation() const +{ + return rotation; +} + +// Константный доступ к масштабированию +const glm::vec3& Node::c_scale() const +{ + return scale; +} + +// Неконстантная ссылка для изменений позиции +glm::vec3& Node::e_position() +{ + changed = true; // Флаг о изменении + invalidateParent(); // Проход потомков в глубину с изменением флага parent_changed + return position; +} + +// Неконстантная ссылка для изменений поворота +glm::quat& Node::e_rotation() +{ + changed = true; // Флаг о изменении + invalidateParent(); // Проход потомков в глубину с изменением флага parent_changed + return rotation; +} + +// Неконстантная ссылка для изменений масштабирования +glm::vec3& Node::e_scale() +{ + changed = true; // Флаг о изменении + invalidateParent(); // Проход потомков в глубину с изменением флага parent_changed + return scale; +} + +// Возвращает матрицу трансформации модели +const glm::mat4& Node::getTransformMatrix() +{ + // Если требуется - пересчитаем матрицу + recalcMatrices(); + + return result_transform; +} + +// Пересчет матрицы трансформации модели, если это требуется +void Node::recalcMatrices() +{ + // Если было изменение по векторам позиции, поворота и масштабирования + if (changed) + { + transform = glm::mat4(1.0f); + // Перемещение модели + transform = glm::translate(transform, position); + // Поворот модели + transform = transform * glm::mat4_cast(rotation); + // Масштабирование + transform = glm::scale(transform, scale); + } + + // Если собственная или родительская матрицы менялись - необходимо пересчитать итоговую + if (changed || parent_changed) + { + if (parent) // Если есть родитель + result_transform = parent->getTransformMatrix() * transform; + else // Если нет родителя + result_transform = transform; + + parent_changed = changed = false; // Изменения применены + } +} + +// Проход потомков в глубину с изменением флага parent_changed +void Node::invalidateParent() +{ + // Цикл по потомкам + for (Node* child : children) + { + child->parent_changed = true; // Флаг + child->invalidateParent(); // Рекурсивный вызов для потомков выбранного потомка + } +} + +// Устанавливает родителя для узла +void Node::setParent(Node * parent) +{ + // Если замена происходит на другого родителя + if (parent != this->parent) + { + Node* tmp = parent; + // Проверка на зацикливание об самого себя + while (tmp) + { + if (tmp == this) + return; // Можно выдать exception + tmp = tmp->parent; + } + // Если есть старый родитель - удалим себя из его потомков + if (this->parent) + { + // Поиск в списке родительских потомков + auto position = std::find(this->parent->children.begin(), this->parent->children.end(), this); + // Если итератор указывает в конец - ничего не найдено + if (position != this->parent->children.end()) + this->parent->children.erase(position); // Само удаление + } + + this->parent = parent; // Заменяем указатель на родителя + // Если родитель не NULL - добавляем себя в детей + if (parent) + parent->children.push_back(this); + // В любом случае необходимо пересчитать собственную итоговую матрицу + parent_changed = true; + } +} + +// Возвращает указатель на родителя +Node* Node::getParent() +{ + return parent; +} + +// Возвращает ссылку на вектор дочерних узлов +const std::vector& Node::getChildren() const +{ + return children; +} + +// Оператор присваивания +Node& Node::operator=(const Node& other) +{ + position = other.position; + rotation = other.rotation; + scale = other.scale; + changed = other.changed; + + if (!changed) + transform = other.transform; + + setParent(other.parent); + + // Если у other флаг parent_changed == false, то можно переписать матрицу результата с него + if (!other.parent_changed) + { + result_transform = other.result_transform; + parent_changed = false; // Сбрасываем флаг после смены родителя + } + + return *this; +} + +// Конструктор по умолчанию +Model::Model(Node *parent) : Node(parent), verteces_count(0), first_index_byteOffset(0), indices_count(0), +vertex_vbo(VERTEX), index_vbo(ELEMENT), normals_vbo(VERTEX), texCoords_vbo(VERTEX) +{ + +} + +// Конструктор копирования +Model::Model(const Model& copy) : Node(copy), +vao(copy.vao), +verteces_count(copy.verteces_count), first_index_byteOffset(copy.first_index_byteOffset), indices_count(copy.indices_count), +vertex_vbo(copy.vertex_vbo), index_vbo(copy.index_vbo), normals_vbo(copy.normals_vbo), texCoords_vbo(copy.texCoords_vbo), +texture_diffuse(copy.texture_diffuse), texture_ambient(copy.texture_ambient), texture_specular(copy.texture_specular), +material(copy.material) +{ + +} + +// Оператор присваивания +Model& Model::operator=(const Model& other) +{ + Node::operator=(other); // Явный вызов родительского оператора копирования + + vao = other.vao; + verteces_count = other.verteces_count; + first_index_byteOffset = other.first_index_byteOffset; + indices_count = other.indices_count; + + vertex_vbo = other.vertex_vbo; + index_vbo = other.index_vbo; + texCoords_vbo = other.texCoords_vbo; + + texture_diffuse = other.texture_diffuse; + texture_ambient = other.texture_ambient; + texture_specular = other.texture_specular; + + material = other.material; + + return *this; +} + +Model::~Model() +{ + +} + +// Вызов отрисовки без uniform-данных +void Model::render() +{ + // Подключаем VAO + vao.use(); + // Если есть индексы - рисуем с их использованием + if (indices_count) + { + index_vbo.use(); + glDrawElements(GL_TRIANGLES, indices_count, GL_UNSIGNED_INT, (void*)(first_index_byteOffset)); + } + // Если есть вершины - рисуем на основании массива вершин + else if (verteces_count) + glDrawArrays(GL_TRIANGLES, 0, verteces_count); +} + +// Вызов отрисовки +void Model::render(ShaderProgram &shaderProgram, UBO &material_buffer) +{ + // Расчитаем матрицу трансформации + glUniformMatrix4fv(shaderProgram.getUniformLoc("model"), 1, GL_FALSE, &this->getTransformMatrix()[0][0]); + + // Подключаем текстуры + texture_diffuse.use(); + texture_ambient.use(); + texture_specular.use(); + + + // Загружаем данные о материале + material_buffer.load(&material, sizeof(material)); + + render(); +} + +// Функция для конфигурации атрибута вершинного буфера +void vertex_attrib_config() +{ + // Включаем необходимый атрибут у выбранного VAO + glEnableVertexAttribArray(0); + // Устанавливаем связь между VAO и привязанным VBO + glVertexAttribPointer( 0 // индекс атрибута, должен совпадать с Layout шейдера + , 3 // количество компонент одного элемента + , GL_FLOAT // тип + , GL_FALSE // нормализованность значений + , 0 // шаг + , (void *)0 // отступ с начала массива + ); +} + +// Загрузка вершин в буфер +void Model::load_verteces(glm::vec3* verteces, GLuint count) +{ + // Подключаем VAO и вершинный буфер + vao.use(); + vertex_vbo.use(); + + // Загрузка вершин в память буфера + vertex_vbo.load(verteces, sizeof(glm::vec3)*count); + vertex_attrib_config(); + // Запоминаем количество вершин для отрисовки + verteces_count = count; +} + +// Загрузка индексов в буфер +void Model::load_indices(GLuint* indices, GLuint count) +{ + // Подключаем VAO и индексный буфер + vao.use(); + index_vbo.use(); + + // Загрузка вершин в память буфера + index_vbo.load(indices, sizeof(GLuint)*count); + // Запоминаем количество вершин для отрисовки + indices_count = count; +} + +// Функция для конфигурации атрибута вершинного буфера +void texCoords_attrib_config() +{ + // Включаем необходимый атрибут у выбранного VAO + glEnableVertexAttribArray(1); + // Устанавливаем связь между VAO и привязанным VBO + glVertexAttribPointer( 1 // индекс атрибута, должен совпадать с Layout шейдера + , 2 // количество компонент одного элемента + , GL_FLOAT // тип + , GL_FALSE // нормализованность значений + , 0 // шаг + , (void *)0 // отступ с начала массива + ); +} + +// Загрузка текстурных координат в буфер +void Model::load_texCoords(glm::vec2* texCoords, GLuint count) +{ + // Подключаем VAO + vao.use(); + + texCoords_vbo.use(); + + // Загрузка вершин в память буфера + texCoords_vbo.load(texCoords, sizeof(glm::vec2)*count); + texCoords_attrib_config(); +} + +// Функция для конфигурации атрибута вершинного буфера +void normals_attrib_config() +{ + // Включаем необходимый атрибут у выбранного VAO + glEnableVertexAttribArray(2); + // Устанавливаем связь между VAO и привязанным VBO + glVertexAttribPointer( 2 // индекс атрибута, должен совпадать с Layout шейдера + , 3 // количество компонент одного элемента + , GL_FLOAT // тип + , GL_FALSE // нормализованность значений + , 0 // шаг + , (void *)0 // отступ с начала массива + ); +} + +// Загрузка нормалей в буфер +void Model::load_normals(glm::vec3* normals, GLuint count) +{ + // Подключаем VAO + vao.use(); + + normals_vbo.use(); + + // Загрузка вершин в память буфера + normals_vbo.load(normals, sizeof(glm::vec3)*count); + normals_attrib_config(); +} + +// Ограничение диапазона из буфера индексов +void Model::set_index_range(size_t first_byteOffset, size_t count) +{ + first_index_byteOffset = first_byteOffset; + indices_count = count; +} + +// Привязка текстуры к модели +void Model::set_texture(Texture& texture) +{ + GLuint type = texture.getType(); + switch(type) + { + case TEX_DIFFUSE: + texture_diffuse = texture; + break; + case TEX_AMBIENT: + texture_ambient = texture; + break; + case TEX_SPECULAR: + texture_specular = texture; + break; + }; +} + +// Генерирует сферу заданного радиуса с определенным количеством сегментов +Model genShpere(float radius, int sectorsCount, Node* parent) +{ + Model result(parent); + + std::vector vertices; + std::vector normals; + std::vector indices; + + float x, y, z, xy; // Позиция вершины + float nx, ny, nz, lengthInv = 1.0f / radius; // Нормаль вершины + float PI = 3.14159265; + float sectorStep = PI / sectorsCount; // Шаг сектора + float longAngle, latAngle; // Углы + + for(int i = 0; i <= sectorsCount; ++i) + { + latAngle = PI / 2 - i * sectorStep; // Начиная с pi/2 до -pi/2 + xy = radius * cos(latAngle); // r * cos(lat) + z = radius * sin(latAngle); // r * sin(lat) + + // добавляем (sectorCount+1) вершин на сегмент + // Последняя и первая вершины имеют одинаковые нормали и координаты + for(int j = 0; j <= sectorsCount; ++j) + { + longAngle = j * 2 * sectorStep; // Начиная с 0 до 2*pi + + // Положение вершины (x, y, z) + x = xy * cos(longAngle); // r * cos(lat) * cos(long) + y = xy * sin(longAngle); // r * cos(lat) * sin(long) + vertices.push_back({x, y, z}); + + // Нормали (nx, ny, nz) + nx = x * lengthInv; + ny = y * lengthInv; + nz = z * lengthInv; + normals.push_back({nx, ny, nz}); + } + } + int k1, k2; + for(int i = 0; i < sectorsCount; ++i) + { + k1 = i * (sectorsCount + 1); // начало текущего сегмента + k2 = k1 + sectorsCount + 1; // начало следующего сегмента + + for(int j = 0; j < sectorsCount; ++j, ++k1, ++k2) + { + // 2 треугольника на один сегмент + // k1, k2, k1+1 + if(i != 0) + { + indices.push_back(k1); + indices.push_back(k2); + indices.push_back(k1 + 1); + } + + // k1+1, k2, k2+1 + if(i != (sectorsCount-1)) + { + indices.push_back(k1 + 1); + indices.push_back(k2); + indices.push_back(k2 + 1); + } + + } + } + // Загрузка в модель + result.load_verteces(&vertices[0], vertices.size()); + result.load_normals(&normals[0], normals.size()); + result.load_indices(&indices[0], indices.size()); + + return result; +} diff --git a/src/Scene.cpp b/src/Scene.cpp new file mode 100644 index 0000000..299d1b4 --- /dev/null +++ b/src/Scene.cpp @@ -0,0 +1,222 @@ +#include "Scene.h" + +// Конструктор пустой сцены +Scene::Scene() +{ + +} + +// Конструктор копирования +Scene::Scene(const Scene ©): root(copy.root), +nodes(copy.nodes), models(copy.models), cameras(copy.cameras) +{ + rebuld_tree(copy); +} + +// Оператор присваивания +Scene& Scene::operator=(const Scene& other) +{ + root = other.root; + nodes = other.nodes; + models = other.models; + cameras = other.cameras; + + rebuld_tree(other); + + return *this; +} + +// Рендер сцены +void Scene::render(ShaderProgram &shaderProgram, UBO &material_buffer) +{ + for (auto & model : models) + model.render(shaderProgram, material_buffer); +} + +// Перестройка узлов выбранного списка +template +void Scene::rebuild_Nodes_vector(T& nodes, const Scene& from) +{ + for (int i = 0; i < nodes.size(); i++) + { + // Берем родителя, который указывает на оригинальный объект + Node* parent = nodes[i].getParent(); + + // Если родитель - оригинальный корневой узел, то меняем на собственный корневой узел + if (parent == &from.root) + { + nodes[i].setParent(&root); + continue; + } + + // Если наши родителя - меняем на него + if (move_pointer(nodes[i], from.nodes, this->nodes)) + continue; + if (move_pointer(nodes[i], from.models, models)) + continue; + if (move_pointer(nodes[i], from.cameras, cameras)) + continue; + + // Не нашли родителя - значит он не часть этой сцены + // и изменений по нему не требуется + } +} + +// Сдвигает родителя узла между двумя списками при условии его принадлежности к оригинальному, возвращает признак замены +template +bool Scene::move_pointer(Node& for_node, const std::vector& from_nodes, std::vector& this_nodes) +{ + // Определим отступ в памяти + std::ptrdiff_t offset = (T*)for_node.getParent() - from_nodes.data(); + // Если отступ является частью оригинального списка + if (offset >= 0 && offset < from_nodes.size()) + { + for_node.setParent(this_nodes.data() + offset); // Замена родителя + return true; + } + return false; +} + +// Перестройка дерева после копирования или присваивания +void Scene::rebuld_tree(const Scene& from) +{ + // Восстановим родителей в пустых узлах для копии + rebuild_Nodes_vector(nodes, from); + rebuild_Nodes_vector(models, from); + rebuild_Nodes_vector(cameras, from); +} + +#define TINYOBJLOADER_IMPLEMENTATION +#include "tiny_obj_loader.h" + +#include + +inline void hash_combine(std::size_t& seed) { } + +template +inline void hash_combine(std::size_t& seed, const T& v, Rest... rest) { + std::hash hasher; + seed ^= hasher(v) + 0x9e3779b9 + (seed<<6) + (seed>>2); + hash_combine(seed, rest...); +} + +Scene loadOBJtoScene(const char* filename, const char* mtl_directory, const char* texture_directory) +{ + Scene result; + Model model; + // Все модели образованные на основании этой модели будут иметь общего родителя + model.setParent(&result.root); + + tinyobj::attrib_t attrib; + std::vector shapes; + std::vector materials; + + std::string err; + + // Если в процессе загрузки возникли ошибки - выдадим исключение + if (!tinyobj::LoadObj(&attrib, &shapes, &materials, &err, filename, mtl_directory)) + throw std::runtime_error(err); + + std::vector indices; // индексы модели + std::vector verteces; // вершины + std::vector normals; // нормали + std::vector texCords; // текстурные координаты + size_t hash; // Для уникальных вершин + std::map uniqueVerteces; // словарь для уникальных вершин: ключ - хеш, значение - индекс вершины + + int last_material_index = 0; // индекс последнего материала (для группировки моделей) + int count = 0, offset; // для индексов начала и конца в индексном буфере + std::vector materials_range; // хранилище индексов + std::vector materials_ids; // индексы материалов + + materials_range.push_back(count); // Закидываем начало отрезка в индексном буфере + // Цикл по считанным моделям + for (const auto& shape : shapes) + { + offset = count; // Переменная для + last_material_index = shape.mesh.material_ids[(count - offset)/3]; // Запоминаем индекс материала + + // Цикл по индексам модели + for (const auto& index : shape.mesh.indices) + { + hash = 0; + hash_combine( hash + , attrib.vertices[3 * index.vertex_index + 0], attrib.vertices[3 * index.vertex_index + 1], attrib.vertices[3 * index.vertex_index + 2] + , attrib.normals[3 * index.normal_index + 0], attrib.normals[3 * index.normal_index + 1], attrib.normals[3 * index.normal_index + 2] + , attrib.texcoords[2 * index.texcoord_index + 0], attrib.texcoords[2 * index.texcoord_index + 1]); + + if (!uniqueVerteces.count(hash)) + { + uniqueVerteces[hash] = verteces.size(); + + // группируем вершины в массив на основании индексов + verteces.push_back({ attrib.vertices[3 * index.vertex_index + 0] + , attrib.vertices[3 * index.vertex_index + 1] + , attrib.vertices[3 * index.vertex_index + 2] + }); + // группируем нормали в массив на основании индексов + normals.push_back({ attrib.normals[3 * index.normal_index + 0] + , attrib.normals[3 * index.normal_index + 1] + , attrib.normals[3 * index.normal_index + 2] + }); + // группируем текстурные координаты в массив на основании индексов + texCords.push_back({ attrib.texcoords[2 * index.texcoord_index + 0] + , 1-attrib.texcoords[2 * index.texcoord_index + 1] + }); + } + // Сохраняем индекс в массив + indices.push_back(uniqueVerteces[hash]); + + // Если индекс последнего материала изменился, то необходимо сохранить его + if (last_material_index != shape.mesh.material_ids[(count - offset)/3]) + { + materials_range.push_back(count); // как конец отрезка + materials_ids.push_back(last_material_index); // как используемый материал + last_material_index = shape.mesh.material_ids[(count - offset)/3]; + } + count++; + } // for (const auto& index : shape.mesh.indices) + + // Если последний материал не загружен - загружаем его + if (materials_range[materials_range.size()-1] != count-1) + { + materials_range.push_back(count); // последний конец отрезка + materials_ids.push_back(last_material_index); // последний используемый материал + } + } // for (const auto& shape : shapes) + + + + // Загрузка в буферы + model.load_verteces (&verteces[0], verteces.size()); + model.load_normals (&normals[0], normals.size()); + model.load_texCoords(&texCords[0], texCords.size()); + // Загрузка индексного буфера + model.load_indices (&indices[0], indices.size()); + + + // Создаем копии модели, которые будут рендериться в заданном диапазоне + // И присваиваем текстуры копиям на основании материала + for (int i = 0; i < materials_range.size()-1; i++) + { + result.models.push_back(model); // Создание копии с общим VAO + auto s = --result.models.end(); + s->set_index_range(materials_range[i]*sizeof(GLuint), materials_range[i+1]-materials_range[i]); + + // Текстуры + Texture diffuse(TEX_DIFFUSE, texture_directory + materials[materials_ids[i]].diffuse_texname); + s->set_texture(diffuse); + Texture ambient(TEX_AMBIENT, texture_directory + materials[materials_ids[i]].ambient_texname); + s->set_texture(ambient); + Texture specular(TEX_SPECULAR, texture_directory + materials[materials_ids[i]].specular_texname); + s->set_texture(specular); + + // Материал + s->material.ka = glm::vec3(materials[materials_ids[i]].ambient[0], materials[materials_ids[i]].ambient[1], materials[materials_ids[i]].ambient[2]); + s->material.kd = glm::vec3(materials[materials_ids[i]].diffuse[0], materials[materials_ids[i]].diffuse[1], materials[materials_ids[i]].diffuse[2]); + s->material.ks = glm::vec3(materials[materials_ids[i]].specular[0], materials[materials_ids[i]].specular[1], materials[materials_ids[i]].specular[2]); + s->material.p = (materials[materials_ids[i]].shininess > 0.0f) ? 1000.0f / materials[materials_ids[i]].shininess : 1000.0f; + } + + return result; +} diff --git a/src/Shader.cpp b/src/Shader.cpp new file mode 100644 index 0000000..ad9b1a8 --- /dev/null +++ b/src/Shader.cpp @@ -0,0 +1,154 @@ +#include "Shader.h" + +#include +#include +#include + +std::map ShaderProgram::handler_count; // Получение количества использований по дескриптору ШП (Shared pointer) + +ShaderProgram::ShaderProgram() +{ + program = glCreateProgram(); + handler_count[program] = 1; +} + +ShaderProgram::ShaderProgram(const ShaderProgram ©) : program(copy.program) +{ + handler_count[program]++; +} + +ShaderProgram::~ShaderProgram() +{ + if (!--handler_count[program]) // Если количество ссылок = 0 + { + // Удаление шейдерной программы + glDeleteProgram(program); + } +} + +// Оператор присваивания +ShaderProgram& ShaderProgram::operator=(const ShaderProgram& other) +{ + // Если это разные шейдерные программы + if (program != other.program) + { + this->~ShaderProgram(); // Уничтожаем имеющуюся + // Заменяем новой + program = other.program; + handler_count[program]++; + } + return *this; +} + +// Использование шейдеров +void ShaderProgram::use() +{ + glUseProgram(program); +} + +// Функция чтения шейдера из файла +std::string readFile(const char* filename) +{ + std::string text; + std::ifstream file(filename, std::ios::in); // Открываем файл на чтение + // Если файл доступен и успешно открыт + if (file.is_open()) + { + std::stringstream sstr; // Буфер для чтения + sstr << file.rdbuf(); // Считываем файл + text = sstr.str(); // Преобразуем буфер к строке + file.close(); // Закрываем файл + } + + return text; +} + +// Функция для загрузки шейдеров +void ShaderProgram::load(GLuint type, const char* filename) +{ + // Создание дескрипторов шейдера + GLuint handler = glCreateShader(type); + + // Переменные под результат компиляции + GLint result = GL_FALSE; + int infoLogLength; + + // Считываем текст вершинного шейдера + std::string code = readFile(filename); + const char* pointer = code.c_str(); // Преобразование к указателю на const char, так как функция принимает массив си-строк + + // Компиляция кода вершинного шейдера + glShaderSource(handler, 1, &pointer, NULL); + glCompileShader(handler); + + // Проверка результата компиляции + glGetShaderiv(handler, GL_COMPILE_STATUS, &result); + glGetShaderiv(handler, GL_INFO_LOG_LENGTH, &infoLogLength); + if (infoLogLength > 0) + { + char* errorMessage = new char[infoLogLength + 1]; + glGetShaderInfoLog(handler, infoLogLength, NULL, errorMessage); + std::cout << errorMessage; + delete errorMessage; + } + + // Привязка скомпилированного шейдера + glAttachShader(program, handler); + + // Освобождение дескриптора шейдера + glDeleteShader(handler); +} + +// Формирование программы из загруженных шейдеров +void ShaderProgram::link() +{ + // Переменные под результат компиляции + GLint result = GL_FALSE; + int infoLogLength; + + // Формирование программы из привязанных шейдеров + glLinkProgram(program); + + // Проверка программы + glGetProgramiv(program, GL_LINK_STATUS, &result); + glGetProgramiv(program, GL_INFO_LOG_LENGTH, &infoLogLength); + if (infoLogLength > 0) + { + char* errorMessage = new char[infoLogLength + 1]; + glGetProgramInfoLog(program, infoLogLength, NULL, errorMessage); + std::cout << errorMessage; + delete errorMessage; + } + + // Используем шейдерную программу объекта из которого вызван метод + this->use(); +} + +// Возвращает местоположение uniform-переменной +GLuint ShaderProgram::getUniformLoc(const char* name) +{ + GLuint result; // Результат + // Если такую переменную ещё не искали - найдем, иначе вернем уже известный дескриптор + if (!uniformLocations.count(name)) + uniformLocations[name] = result = glGetUniformLocation(program, name); + else + result = uniformLocations[name]; + + return result; +} + +// Привязка uniform-блока +void ShaderProgram::bindUniformBlock(const char* name, int binding) +{ + glUniformBlockBinding( program + , glGetUniformBlockIndex(program, name) + , binding); +} + +// Инициализация текстур на шейдере +void ShaderProgram::bindTextures(const char* textures_base_shader_names[], int count) +{ + // Цикл по всем доступным текстурам + for (int i = 0; i < count; i++) + glUniform1i(getUniformLoc(textures_base_shader_names[i]), i); +} diff --git a/src/Texture.cpp b/src/Texture.cpp new file mode 100644 index 0000000..82effa8 --- /dev/null +++ b/src/Texture.cpp @@ -0,0 +1,142 @@ +#include "Texture.h" + +#define STB_IMAGE_IMPLEMENTATION +#include + +std::map Texture::filename_handler; // Получение дескриптора текстуры по её имени +std::map Texture::handler_count; // Получение количества использований по дескриптору текстуры (Shared pointer) + +// Загрузка текстуры с диска или использование "пустой" +Texture::Texture(GLuint t, const std::string& filename) : type(t) +{ + if (!filename_handler.count(filename)) + { + std::string empty = ""; + int width, height, channels; // Ширина, высота и цветовые каналы текстуры + unsigned char* image = stbi_load(filename.c_str(), &width, &height, &channels, STBI_default); // Загрузка в оперативную память изображения + // Если изображение успешно счиитано с диска или отсутствует пустая текстура + if (image || !filename_handler.count(empty)) + { + glActiveTexture(type + GL_TEXTURE0); + glGenTextures(1, &handler); // Генерация одной текстуры + glBindTexture(GL_TEXTURE_2D, handler); // Привязка текстуры как активной + + filename_handler[filename] = handler; // Запоминим её дескриптор для этого имени файла + handler_count[handler] = 0; // Создадим счетчик использований дескриптора, который будет изменен в конце + + // Если изображение успешно считано + if (image) + { + // Загрузка данных с учетом прозрачности + if (channels == 3) // RGB + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, image); + else if (channels == 4) // RGBA + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, image); + + glGenerateMipmap(GL_TEXTURE_2D); // Генерация мипмапа для активной текстуры + glBindTexture(GL_TEXTURE_2D, 0); // Отвязка активной текстуры + + stbi_image_free(image); // Освобождение оперативной памяти + } + // Иначе изображение не считано и надо создать пустую текстуру + else + { + image = new unsigned char[3] {255,255,255}; // RGB по 1 байту на + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, image); // Загрузка данных на видеокарту + delete image; // Освобождение оперативной памяти + + filename_handler[empty] = handler; // Запоминим дополнительно её дескриптор для NULL-строки + } + } + // Иначе используем существующую пустую текстуру (текстура не загружена, пустую создавать не нужно) + else + handler = filename_handler[empty]; + } + // Иначе используем уже существующую по имени файла + else + handler = filename_handler[filename]; + + handler_count[handler]++; +} + +// Конструктор текстуры заданного размера для использования в буфере +Texture::Texture(GLuint width, GLuint height, GLuint attachment, GLuint texType, GLint internalformat, GLint format, GLenum dataType) : type(texType) +{ + // Генерация текстуры заданного размера + glGenTextures(1, &handler); + glBindTexture(GL_TEXTURE_2D, handler); + glTexImage2D(GL_TEXTURE_2D, 0, internalformat, width, height, 0, format, dataType, NULL); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + + // Привязка к буферу кадра + glFramebufferTexture2D(GL_FRAMEBUFFER, attachment, GL_TEXTURE_2D, handler, 0); + + // Создаем счетчик использований дескриптора + handler_count[handler] = 1; +} + +// Конструктор копирования +Texture::Texture(const Texture& other) : handler(other.handler), type(other.type) +{ + // Делаем копию и увеличиваем счетчик + handler_count[handler]++; +} + +// Оператор присваивания +Texture& Texture::operator=(const Texture& other) +{ + // Если это разные текстуры + if (handler != other.handler) + { + this->~Texture(); // Уничтожаем имеющуюся + // Заменяем новой + handler = other.handler; + handler_count[handler]++; + } + type = other.type; + + return *this; +} + +Texture::~Texture() +{ + if (!--handler_count[handler]) // Если количество ссылок = 0 + { + glDeleteTextures(1, &handler); // Удаление текстуры + // Удаление из словаря имен файлов и дескрипторов + for (auto it = filename_handler.begin(); it != filename_handler.end();) + { + if (it->second == handler) + it = filename_handler.erase(it); + else + it++; + } + } +} + +// Привязка текстуры +void Texture::use() +{ + glActiveTexture(type + GL_TEXTURE0); + glBindTexture(GL_TEXTURE_2D, handler); // Привязка текстуры как активной +} + +// Отвязка текстуры по типу +void Texture::disable(GLuint type) +{ + glActiveTexture(type + GL_TEXTURE0); + glBindTexture(GL_TEXTURE_2D, 0); // Отвязка текстуры +} + +// Возвращает тип текстуры +GLuint Texture::getType() +{ + return type; +} + +// Задает тип текстуры +void Texture::setType(GLuint type) +{ + this->type = type; +} diff --git a/src/main.cpp b/src/main.cpp new file mode 100755 index 0000000..a941eed --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,215 @@ + +#include +#include +#include + +#include + +#include "Scene.h" +#include "Shader.h" +#include "Lights.h" + +#define WINDOW_WIDTH 800 +#define WINDOW_HEIGHT 600 +#define WINDOW_CAPTION "OPENGL notes on rekovalev.site" + +// Функция-callback для изменения размеров буфера кадра в случае изменения размеров поверхности окна +void framebuffer_size_callback(GLFWwindow* window, int width, int height) +{ + glViewport(0, 0, width, height); +} + +bool firstMouse = true; +float lastX, lastY; + +void mouse_callback(GLFWwindow* window, double xpos, double ypos) +{ + if (firstMouse) + { + lastX = xpos; + lastY = ypos; + firstMouse = false; + } + + glm::vec2 offset(xpos - lastX, lastY - ypos); + lastX = xpos; + lastY = ypos; + + Camera::current().rotate(offset); +} + +int main(void) +{ + GLFWwindow* window; // Указатель на окно GLFW3 + + // Инициализация GLFW3 + if (!glfwInit()) + { + std::cout << "GLFW init error\n"; + return -1; + } + + // Завершение работы с GLFW3 перед выходом + atexit(glfwTerminate); + + glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4); // Мажорная версия спецификаций OpenGL + glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 6); // Минорная версия спецификаций OpenGL + glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); // Контекст OpenGL, который поддерживает только основные функции + + // Создание окна GLFW3 с заданными шириной, высотой и заголовком окна + window = glfwCreateWindow(WINDOW_WIDTH, WINDOW_HEIGHT, WINDOW_CAPTION, NULL, NULL); + if (!window) + { + std::cout << "GLFW create window error\n"; + return -1; + } + + // Установка основного контекста окна + glfwMakeContextCurrent(window); + // Установка callback-функции для изменения размеров окна и буфера кадра + glfwSetFramebufferSizeCallback(window, framebuffer_size_callback); + + glfwSwapInterval(1); // Вертикальная синхронизация + + // Установка callback-функции для мыши и камеры + glfwSetCursorPosCallback(window, mouse_callback); + + // Загрузка функций OpenGL с помощью GLAD + if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) + { + std::cout << "GLAD load GL error\n"; + return -1; + } + + // Включаем проверку по буферу глубины + glEnable(GL_DEPTH_TEST); + + // Шейдер для G-буфера + ShaderProgram gShader; + // Загрузка и компиляция шейдеров + gShader.load(GL_VERTEX_SHADER, "shaders/gshader.vert"); + gShader.load(GL_FRAGMENT_SHADER, "shaders/gshader.frag"); + gShader.link(); + // Установим значения текстур + const char* textures_base_shader_names[] = {"tex_diffuse", "tex_ambient", "tex_specular"}; + gShader.bindTextures(textures_base_shader_names, sizeof(textures_base_shader_names)/sizeof(const char*)); + + // Загрузка сцены из obj файла + Scene scene = loadOBJtoScene("../resources/models/blob.obj", "../resources/models/", "../resources/textures/"); + scene.root.e_scale() = glm::vec3(0.01); + scene.root.e_position().z = 1; + scene.models[0].material.kd = {0.5,0.5,0.5}; + scene.models[0].material.ka = {0.2,0.2,0.2}; + + // Установка цвета очистки буфера цвета + glClearColor(0.0f, 0.0f, 0.0f, 1.0f); + + // Источники света + Light& first = Light::getNew(); + first.e_color() = {1.0f, 0.0f, 0.0f}; // цвет + first.e_position() = {0.3f, 0.1f, 0.5f}; // Позиция + Light& second = Light::getNew(); + second.e_color() = {0.0f, 0.0f, 1.0f}; // цвет + second.e_position() = {-0.3f, -0.1f, 0.5f}; // Позиция + + // Uniform-буферы + UBO cameraUB(sizeof(CameraData), 0); + UBO material_data(sizeof(Material), 1); + UBO light_data(Light::getUBOsize(), 2); + + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); // Использование уменьшенных версий mipmap + + // Создадим G-буфер с данными о используемых привязках + GLuint attachments[] = { GL_COLOR_ATTACHMENT0, GL_COLOR_ATTACHMENT1, GL_COLOR_ATTACHMENT2, GL_COLOR_ATTACHMENT3 }; + FBO gbuffer(attachments, sizeof(attachments) / sizeof(GLuint)); + // Создадим текстуры для буфера кадра + Texture gPosition(WINDOW_WIDTH, WINDOW_HEIGHT, GL_COLOR_ATTACHMENT0, 0, GL_RGB32F, GL_RGB); // Позиция вершины + Texture gNormal(WINDOW_WIDTH, WINDOW_HEIGHT, GL_COLOR_ATTACHMENT1, 1, GL_RGB16F, GL_RGB); // Нормали + Texture gDiffuseP(WINDOW_WIDTH, WINDOW_HEIGHT, GL_COLOR_ATTACHMENT2, 2, GL_RGBA16F); // Диффузная составляющая и коэф. глянцевости + Texture gAmbientSpecular(WINDOW_WIDTH, WINDOW_HEIGHT, GL_COLOR_ATTACHMENT3, 3); // Фоновая составляющая и один канал зеркальной + // Создадим буфер рендера под буфер глубины и привяжем его + RBO grbo(WINDOW_WIDTH, WINDOW_HEIGHT); + gbuffer.assignRenderBuffer(grbo.getHandler()); + // Активируем базовый буфер кадра + FBO::useDefault(); + + // Шейдер для расчета освещенности + ShaderProgram lightShader; + // Загрузка и компиляция шейдеров + lightShader.load(GL_VERTEX_SHADER, "shaders/quad.vert"); + lightShader.load(GL_FRAGMENT_SHADER, "shaders/lighting.frag"); + lightShader.link(); + const char* gtextures_shader_names[] = {"gPosition", "gNormal", "gDiffuseP", "gAmbientSpecular"}; + lightShader.bindTextures(gtextures_shader_names, sizeof(gtextures_shader_names)/sizeof(const char*)); + + glm::vec3 quadVertices[] = { {-1.0f, 1.0f, 0.0f} + , {-1.0f, -1.0f, 0.0f} + , { 1.0f, 1.0f, 0.0f} + , { 1.0f, -1.0f, 0.0f} + }; + + GLuint quadIndices[] = {0,1,2,2,1,3}; + + Model quadModel; + quadModel.load_verteces(quadVertices, 4); + quadModel.load_indices(quadIndices, 6); + + // Шейдер для рисования отладочных лампочек + ShaderProgram bulbShader; + // Загрузка и компиляция шейдеров + bulbShader.load(GL_VERTEX_SHADER, "shaders/bulb.vert"); + bulbShader.load(GL_FRAGMENT_SHADER, "shaders/bulb.frag"); + bulbShader.link(); + + // Пока не произойдет событие запроса закрытия окна + while(!glfwWindowShouldClose(window)) + { + // Загрузка данных о камере + cameraUB.loadSub(&Camera::current().getData(), sizeof(CameraData)); + // Загрузим информацию об источниках света + Light::upload(light_data); + + // Активируем G-кадра + gbuffer.use(); + // Используем шейдер с освещением + gShader.use(); + // Очистка буфера цвета и глубины + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + // Тут производится рендер + scene.render(gShader, material_data); + + // Активируем базовый буфер кадра + FBO::useDefault(); + // Подключаем шейдер для прямоугольника + lightShader.use(); + // Очистка буфера цвета и глубины + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + // Подключаем текстуры G-буфера + gPosition.use(); + gNormal.use(); + gDiffuseP.use(); + gAmbientSpecular.use(); + // Рендерим прямоугольник с расчетом освещения + quadModel.render(); + + // Перенос буфера глубины + FBO::useDefault(GL_DRAW_FRAMEBUFFER); // Базовый в режиме записи + gbuffer.use(GL_READ_FRAMEBUFFER); // Буфер геометрии в режиме чтения + // Копирование значений глубины + glBlitFramebuffer(0, 0, WINDOW_WIDTH, WINDOW_HEIGHT, 0, 0, WINDOW_WIDTH, WINDOW_HEIGHT, GL_DEPTH_BUFFER_BIT, GL_NEAREST); + FBO::useDefault(); // Использование базового буфера для дальнейших работ + + // Отрисовка отладочных лампочек со специальным шейдером + bulbShader.use(); + Light::render(bulbShader, material_data); + + // Представление содержимого буфера цепочки показа на окно + glfwSwapBuffers(window); + // Обработка системных событий + glfwPollEvents(); + } + + // Отключение атрибутов + glDisableVertexAttribArray(0); +}