fixed normals
This commit is contained in:
parent
fde77eed31
commit
91dc1864d3
195
__tmp_scene.yaml
195
__tmp_scene.yaml
@ -1,195 +0,0 @@
|
|||||||
engine_version: 0.1.0
|
|
||||||
scene_name: __tmp_scene
|
|
||||||
scene_hash: a0262a35199dae8ff5db4383e9e2d30c63c7a681d14f524a60210fde4c9dc71e
|
|
||||||
format_version: 1
|
|
||||||
objects:
|
|
||||||
- name: Tiles
|
|
||||||
uid: f5e01f7892874a67b662633650b41dbd
|
|
||||||
id: 3
|
|
||||||
position: [0, 0]
|
|
||||||
layer: 0
|
|
||||||
visable: true
|
|
||||||
components: []
|
|
||||||
children:
|
|
||||||
- name: Bark
|
|
||||||
uid: 7dc3bbf8affb4844ae3801f03857b904
|
|
||||||
id: 4
|
|
||||||
position: [0, 0]
|
|
||||||
layer: 0
|
|
||||||
visable: true
|
|
||||||
components:
|
|
||||||
- type: SpriteComponent
|
|
||||||
texture: C:\Users\spenc\OneDrive\Pictures\textures\bark_willow_02_diff_1k.png
|
|
||||||
normalMap: C:\Users\spenc\OneDrive\Pictures\textures\bark_willow_02_nor_gl_1k.png
|
|
||||||
renderType: Lit
|
|
||||||
children: []
|
|
||||||
- name: Planks
|
|
||||||
uid: 13d8988343354e3c8a1f51c03ed40cda
|
|
||||||
id: 5
|
|
||||||
position: [1024, 0]
|
|
||||||
layer: 0
|
|
||||||
visable: true
|
|
||||||
components:
|
|
||||||
- type: SpriteComponent
|
|
||||||
texture: C:\Users\spenc\OneDrive\Pictures\textures\wood_floor_worn_diff_1k.png
|
|
||||||
normalMap: C:\Users\spenc\OneDrive\Pictures\textures\wood_floor_worn_nor_gl_1k.png
|
|
||||||
renderType: Lit
|
|
||||||
children: []
|
|
||||||
- name: Rocks
|
|
||||||
uid: cff28abe7e3b455ab9b756acc84cd2d7
|
|
||||||
id: 6
|
|
||||||
position: [0, 1024]
|
|
||||||
layer: 0
|
|
||||||
visable: true
|
|
||||||
components:
|
|
||||||
- type: SpriteComponent
|
|
||||||
texture: C:\Users\spenc\OneDrive\Pictures\textures\ganges_river_pebbles_diff_1k.png
|
|
||||||
normalMap: C:\Users\spenc\OneDrive\Pictures\textures\ganges_river_pebbles_nor_gl_1k.png
|
|
||||||
renderType: Lit
|
|
||||||
children: []
|
|
||||||
- name: Metal
|
|
||||||
uid: 98967eb30e5b429b992766d8062b7c17
|
|
||||||
id: 7
|
|
||||||
position: [1024, 1025]
|
|
||||||
layer: 0
|
|
||||||
visable: true
|
|
||||||
components:
|
|
||||||
- type: SpriteComponent
|
|
||||||
texture: C:\Users\spenc\OneDrive\Pictures\textures\metal_plate_diff_1k.png
|
|
||||||
normalMap: C:\Users\spenc\OneDrive\Pictures\textures\metal_plate_nor_gl_1k.png
|
|
||||||
renderType: Lit
|
|
||||||
children: []
|
|
||||||
- name: Logo
|
|
||||||
uid: c4ce6f16dfb347b0ae0ac67f5881b243
|
|
||||||
id: 8
|
|
||||||
position: [2048, 0]
|
|
||||||
layer: 0
|
|
||||||
visable: true
|
|
||||||
components:
|
|
||||||
- type: SpriteComponent
|
|
||||||
texture: C:\Users\spenc\OneDrive\Pictures\blue_logo.png
|
|
||||||
normalMap: C:\Users\spenc\OneDrive\Pictures\textures\circuits_normal.jpg
|
|
||||||
renderType: Lit
|
|
||||||
children: []
|
|
||||||
- name: Carbooon Fobar
|
|
||||||
uid: 5ea269572751401da6d86519d3513b7d
|
|
||||||
id: 9
|
|
||||||
position: [2567, 1545]
|
|
||||||
layer: 1
|
|
||||||
visable: true
|
|
||||||
components:
|
|
||||||
- type: SpriteComponent
|
|
||||||
texture: C:\Users\spenc\OneDrive\Pictures\textures\carbon-fiber-smooth-bl\carbon-fiber-smooth-bl\carbon-fiber_smooth_albedo.png
|
|
||||||
normalMap: C:\Users\spenc\OneDrive\Pictures\textures\carbon-fiber-smooth-bl\carbon-fiber-smooth-bl\carbon-fiber_smooth_normal-ogl.png
|
|
||||||
renderType: Lit
|
|
||||||
children: []
|
|
||||||
- name: Mud
|
|
||||||
uid: a36b71937ba349bd8e6414f75be9ee16
|
|
||||||
id: 10
|
|
||||||
position: [0, 2561.80005]
|
|
||||||
layer: 0
|
|
||||||
visable: true
|
|
||||||
components:
|
|
||||||
- type: SpriteComponent
|
|
||||||
texture: C:\Users\spenc\OneDrive\Pictures\textures\mud-bl\mud-bl\mud_albedo.png
|
|
||||||
normalMap: C:\Users\spenc\OneDrive\Pictures\textures\mud-bl\mud-bl\mud_normal-ogl.png
|
|
||||||
renderType: Lit
|
|
||||||
children: []
|
|
||||||
- name: Lights
|
|
||||||
uid: 051b338a725a4076ad53ad8fa00c5f4e
|
|
||||||
id: 12
|
|
||||||
position: [-556, 951]
|
|
||||||
layer: 0
|
|
||||||
visable: true
|
|
||||||
components: []
|
|
||||||
children:
|
|
||||||
- name: Red
|
|
||||||
uid: 6afde2dd47aa4557b6afb1a607c99dc8
|
|
||||||
id: 13
|
|
||||||
position: [512, 1024]
|
|
||||||
layer: 2
|
|
||||||
visable: true
|
|
||||||
components:
|
|
||||||
- type: LightComponent
|
|
||||||
color:
|
|
||||||
- 1
|
|
||||||
- 0
|
|
||||||
- 0
|
|
||||||
intensity: 2
|
|
||||||
radius: 1000
|
|
||||||
falloff: 0.100000001
|
|
||||||
type: 0
|
|
||||||
- type: SpriteComponent
|
|
||||||
texture: C:\Users\spenc\OneDrive\Documents\GitHub\Create-Engine\src\assets\icons\lightbulb-on-10.png
|
|
||||||
normalMap: ""
|
|
||||||
renderType: Unlit
|
|
||||||
children: []
|
|
||||||
- name: Green
|
|
||||||
uid: 0f950d76d24b4dc18f54cab2c3aaaf9a
|
|
||||||
id: 14
|
|
||||||
position: [1024, 512]
|
|
||||||
layer: 2
|
|
||||||
visable: true
|
|
||||||
components:
|
|
||||||
- type: LightComponent
|
|
||||||
color:
|
|
||||||
- 0
|
|
||||||
- 1
|
|
||||||
- 0
|
|
||||||
intensity: 2
|
|
||||||
radius: 1000
|
|
||||||
falloff: 1
|
|
||||||
type: 0
|
|
||||||
- type: SpriteComponent
|
|
||||||
texture: C:\Users\spenc\OneDrive\Documents\GitHub\Create-Engine\src\assets\icons\lightbulb-on-10.png
|
|
||||||
normalMap: ""
|
|
||||||
renderType: Unlit
|
|
||||||
children: []
|
|
||||||
- name: Blue
|
|
||||||
uid: 09f722f51c7c4b0f98de3a0a16d127c4
|
|
||||||
id: 15
|
|
||||||
position: [250, 250]
|
|
||||||
layer: 2
|
|
||||||
visable: true
|
|
||||||
components:
|
|
||||||
- type: LightComponent
|
|
||||||
color:
|
|
||||||
- 0
|
|
||||||
- 0
|
|
||||||
- 1
|
|
||||||
intensity: 2
|
|
||||||
radius: 1000
|
|
||||||
falloff: 1
|
|
||||||
type: 0
|
|
||||||
- type: SpriteComponent
|
|
||||||
texture: C:\Users\spenc\OneDrive\Documents\GitHub\Create-Engine\src\assets\icons\lightbulb-on-10.png
|
|
||||||
normalMap: ""
|
|
||||||
renderType: Unlit
|
|
||||||
children: []
|
|
||||||
- name: Ambient light
|
|
||||||
uid: d4fb425522d84a8cbbd7d1415bcd93df
|
|
||||||
id: 16
|
|
||||||
position: [500, 500]
|
|
||||||
layer: 0
|
|
||||||
visable: true
|
|
||||||
components:
|
|
||||||
- type: LightComponent
|
|
||||||
color:
|
|
||||||
- 1
|
|
||||||
- 1
|
|
||||||
- 1
|
|
||||||
intensity: 0
|
|
||||||
radius: 1000000
|
|
||||||
falloff: 1
|
|
||||||
type: 0
|
|
||||||
children: []
|
|
||||||
- name: ScriptHandler
|
|
||||||
uid: 895c655f3dda4aec9f2a354c1276c53e
|
|
||||||
id: 14
|
|
||||||
position: [0, 0]
|
|
||||||
layer: 0
|
|
||||||
visable: true
|
|
||||||
components:
|
|
||||||
- type: ScriptComponent
|
|
||||||
scriptPath: C:\Users\spenc\OneDrive\Documents\GitHub\Create-Engine\src\assets\lua\test.lua
|
|
||||||
children: []
|
|
@ -1,2 +1,2 @@
|
|||||||
[COMPILE] g++ -std=c++20 -Wall -Isrc/include -Isrc/include/lua -Isrc/vendor -Isrc/vendor/imgui -IC:/msys64/mingw64/include -IC:\msys64\mingw64\lib\libyaml-cpp.a -Isrc\vendor\imgui -MMD -MP -c src\src\Engine.cpp -o src\build\Engine.o
|
|
||||||
[LINK] g++ src\build\Engine.o src\build\main.o src\build\Renderer.o src\build\Components\CameraComponent.o src\build\Components\LightComponent.o src\build\Components\ScriptComponent.o src\build\Components\SpriteComponent.o src\build\Components\TextComonent.o src\build\Components\TilemapComponent.o src\build\Entitys\Object.o src\build\utils\EngineConfig.o src\build\utils\ExceptionHandler.o src\build\utils\FileDialog.o src\build\utils\GameObjectsList.o src\build\utils\Logging.o src\build\utils\Shader.o src\build\utils\UID.o src\build\utils\utils.o src\build\imgui\imgui.o src\build\imgui\imgui_demo.o src\build\imgui\imgui_draw.o src\build\imgui\imgui_impl_glfw.o src\build\imgui\imgui_impl_opengl3.o src\build\imgui\imgui_tables.o src\build\imgui\imgui_widgets.o src\build\lapi.o src\build\lauxlib.o src\build\lbaselib.o src\build\lcode.o src\build\lcorolib.o src\build\lctype.o src\build\ldblib.o src\build\ldebug.o src\build\ldo.o src\build\ldump.o src\build\lfunc.o src\build\lgc.o src\build\linit.o src\build\liolib.o src\build\llex.o src\build\lmathlib.o src\build\lmem.o src\build\loadlib.o src\build\lobject.o src\build\lopcodes.o src\build\loslib.o src\build\lparser.o src\build\lstate.o src\build\lstring.o src\build\lstrlib.o src\build\ltable.o src\build\ltablib.o src\build\ltm.o src\build\lua.o src\build\luac.o src\build\lundump.o src\build\lutf8lib.o src\build\lvm.o src\build\lzio.o -o src\build\app.exe -LC:\msys64\mingw64\lib -lglfw3 -lglew32 -lopengl32 -lgdi32 -lyaml-cpp -lcomdlg32 -lssl -lcrypto
|
[LINK] g++ src\build\Engine.o src\build\main.o src\build\Renderer.o src\build\Components\CameraComponent.o src\build\Components\LightComponent.o src\build\Components\ScriptComponent.o src\build\Components\SpriteComponent.o src\build\Components\TextComonent.o src\build\Components\TilemapComponent.o src\build\Entitys\Object.o src\build\utils\EngineConfig.o src\build\utils\ExceptionHandler.o src\build\utils\FileDialog.o src\build\utils\GameObjectsList.o src\build\utils\Logging.o src\build\utils\Shader.o src\build\utils\UID.o src\build\utils\utils.o src\build\imgui\imgui.o src\build\imgui\imgui_demo.o src\build\imgui\imgui_draw.o src\build\imgui\imgui_impl_glfw.o src\build\imgui\imgui_impl_opengl3.o src\build\imgui\imgui_tables.o src\build\imgui\imgui_widgets.o src\build\lapi.o src\build\lauxlib.o src\build\lbaselib.o src\build\lcode.o src\build\lcorolib.o src\build\lctype.o src\build\ldblib.o src\build\ldebug.o src\build\ldo.o src\build\ldump.o src\build\lfunc.o src\build\lgc.o src\build\linit.o src\build\liolib.o src\build\llex.o src\build\lmathlib.o src\build\lmem.o src\build\loadlib.o src\build\lobject.o src\build\lopcodes.o src\build\loslib.o src\build\lparser.o src\build\lstate.o src\build\lstring.o src\build\lstrlib.o src\build\ltable.o src\build\ltablib.o src\build\ltm.o src\build\lua.o src\build\luac.o src\build\lundump.o src\build\lutf8lib.o src\build\lvm.o src\build\lzio.o -o src\build\app.exe -LC:\msys64\mingw64\lib -lglfw3 -lglew32 -lopengl32 -lgdi32 -lyaml-cpp -lcomdlg32 -lssl -lcrypto
|
||||||
|
[RUN] Executed app.exe successfully.
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
engine_version: 0.1.0
|
engine_version: 0.1.0
|
||||||
scene_name: lighting_test_2
|
scene_name: lighting_test_2
|
||||||
scene_hash: a0262a35199dae8ff5db4383e9e2d30c63c7a681d14f524a60210fde4c9dc71e
|
scene_hash: a0ae96d593e1990a6f3944184fd6595738629af0dcb2d4cdd83011a91aaa738c
|
||||||
format_version: 1
|
format_version: 1
|
||||||
objects:
|
objects:
|
||||||
- name: Tiles
|
- name: Tiles
|
||||||
@ -50,7 +50,7 @@ objects:
|
|||||||
- name: Metal
|
- name: Metal
|
||||||
uid: 98967eb30e5b429b992766d8062b7c17
|
uid: 98967eb30e5b429b992766d8062b7c17
|
||||||
id: 7
|
id: 7
|
||||||
position: [1024, 1025]
|
position: [1024, 1024]
|
||||||
layer: 0
|
layer: 0
|
||||||
visable: true
|
visable: true
|
||||||
components:
|
components:
|
||||||
@ -74,7 +74,7 @@ objects:
|
|||||||
- name: Carbooon Fobar
|
- name: Carbooon Fobar
|
||||||
uid: 5ea269572751401da6d86519d3513b7d
|
uid: 5ea269572751401da6d86519d3513b7d
|
||||||
id: 9
|
id: 9
|
||||||
position: [2567, 1545]
|
position: [2559.30005, 1562]
|
||||||
layer: 1
|
layer: 1
|
||||||
visable: true
|
visable: true
|
||||||
components:
|
components:
|
||||||
@ -178,7 +178,7 @@ objects:
|
|||||||
- 1
|
- 1
|
||||||
- 1
|
- 1
|
||||||
- 1
|
- 1
|
||||||
intensity: 0
|
intensity: 0.0500000007
|
||||||
radius: 1000000
|
radius: 1000000
|
||||||
falloff: 1
|
falloff: 1
|
||||||
type: 0
|
type: 0
|
||||||
|
@ -9,9 +9,9 @@ uniform sampler2D uNormalMap;
|
|||||||
|
|
||||||
#define MAX_LIGHTS 512
|
#define MAX_LIGHTS 512
|
||||||
|
|
||||||
uniform int uLightCount;
|
uniform int uLightCount;
|
||||||
uniform vec2 uLightPos[MAX_LIGHTS];
|
uniform vec2 uLightPos[MAX_LIGHTS];
|
||||||
uniform vec3 uLightColor[MAX_LIGHTS];
|
uniform vec3 uLightColor[MAX_LIGHTS];
|
||||||
uniform float uLightIntensity[MAX_LIGHTS];
|
uniform float uLightIntensity[MAX_LIGHTS];
|
||||||
uniform float uLightRadius[MAX_LIGHTS];
|
uniform float uLightRadius[MAX_LIGHTS];
|
||||||
|
|
||||||
@ -21,8 +21,11 @@ void main()
|
|||||||
if (texColor.a < 0.1)
|
if (texColor.a < 0.1)
|
||||||
discard;
|
discard;
|
||||||
|
|
||||||
vec3 normal = texture(uNormalMap, vUV).rgb * 2.0 - 1.0;
|
// unpack normal map and convert from [0,1] to [-1,1]
|
||||||
normal = normalize(normal);
|
vec3 n = texture(uNormalMap, vUV).rgb * 2.0 - 1.0;
|
||||||
|
// invert the green channel for OpenGL
|
||||||
|
n.y = -n.y;
|
||||||
|
vec3 normal = normalize(n);
|
||||||
|
|
||||||
vec3 finalLight = vec3(0.0);
|
vec3 finalLight = vec3(0.0);
|
||||||
|
|
||||||
|
@ -395,7 +395,7 @@ void Engine::Run()
|
|||||||
Logger::LogInfo("[LoadScene] Loading Scene.");
|
Logger::LogInfo("[LoadScene] Loading Scene.");
|
||||||
if (!file.empty())
|
if (!file.empty())
|
||||||
LoadScene(file);
|
LoadScene(file);
|
||||||
selected = nullptr;
|
selected = nullptr;
|
||||||
}
|
}
|
||||||
ImGui::EndMenu();
|
ImGui::EndMenu();
|
||||||
}
|
}
|
||||||
@ -404,6 +404,8 @@ void Engine::Run()
|
|||||||
{
|
{
|
||||||
// simple checkbox never closes the menu when you click it
|
// simple checkbox never closes the menu when you click it
|
||||||
ImGui::Checkbox("Enable Lighting", &g_engineConfig.lighting_enabled);
|
ImGui::Checkbox("Enable Lighting", &g_engineConfig.lighting_enabled);
|
||||||
|
ImGui::Checkbox("Enable Gizmos", &g_engineConfig.settings.draw_gizmos);
|
||||||
|
|
||||||
ImGui::EndMenu();
|
ImGui::EndMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -542,6 +544,14 @@ void Engine::Run()
|
|||||||
light->GetColor(),
|
light->GetColor(),
|
||||||
light->GetIntensity(),
|
light->GetIntensity(),
|
||||||
light->GetRadius() * cameraZoom);
|
light->GetRadius() * cameraZoom);
|
||||||
|
|
||||||
|
Renderer::DrawGizmoCircle(
|
||||||
|
world,
|
||||||
|
light->GetRadius(),
|
||||||
|
64, // segments
|
||||||
|
light->GetColor(), // circle color
|
||||||
|
cameraPos,
|
||||||
|
cameraZoom);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Collect scripts
|
// Collect scripts
|
||||||
|
@ -294,6 +294,73 @@ void Renderer::DrawEditorGrid(const glm::vec2 &cameraPos, float zoom)
|
|||||||
glEnd();
|
glEnd();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Renderer::DrawGizmoLine(
|
||||||
|
const glm::vec2 &worldStart,
|
||||||
|
const glm::vec2 &worldEnd,
|
||||||
|
const glm::vec3 &color,
|
||||||
|
const glm::vec2 &cameraPos,
|
||||||
|
float zoom)
|
||||||
|
{
|
||||||
|
// Transform to screen space
|
||||||
|
glm::vec2 a = (worldStart - cameraPos) * zoom + glm::vec2(width * 0.5f, height * 0.5f);
|
||||||
|
glm::vec2 b = (worldEnd - cameraPos) * zoom + glm::vec2(width * 0.5f, height * 0.5f);
|
||||||
|
|
||||||
|
glUseProgram(0);
|
||||||
|
glLineWidth(2.0f);
|
||||||
|
glColor3f(color.r, color.g, color.b);
|
||||||
|
|
||||||
|
glBegin(GL_LINES);
|
||||||
|
glVertex2f(a.x, a.y);
|
||||||
|
glVertex2f(b.x, b.y);
|
||||||
|
glEnd();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Renderer::DrawGizmoRect(
|
||||||
|
const glm::vec2 &worldPos,
|
||||||
|
const glm::vec2 &size,
|
||||||
|
const glm::vec3 &color,
|
||||||
|
const glm::vec2 &cameraPos,
|
||||||
|
float zoom)
|
||||||
|
{
|
||||||
|
glm::vec2 p0 = worldPos;
|
||||||
|
glm::vec2 p1 = worldPos + glm::vec2(size.x, 0.0f);
|
||||||
|
glm::vec2 p2 = worldPos + size;
|
||||||
|
glm::vec2 p3 = worldPos + glm::vec2(0.0f, size.y);
|
||||||
|
|
||||||
|
// draw four edges
|
||||||
|
DrawGizmoLine(p0, p1, color, cameraPos, zoom);
|
||||||
|
DrawGizmoLine(p1, p2, color, cameraPos, zoom);
|
||||||
|
DrawGizmoLine(p2, p3, color, cameraPos, zoom);
|
||||||
|
DrawGizmoLine(p3, p0, color, cameraPos, zoom);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Renderer::DrawGizmoCircle(
|
||||||
|
const glm::vec2 &worldCenter,
|
||||||
|
float radius,
|
||||||
|
int segments,
|
||||||
|
const glm::vec3 &color,
|
||||||
|
const glm::vec2 &cameraPos,
|
||||||
|
float zoom)
|
||||||
|
{
|
||||||
|
if (segments < 3)
|
||||||
|
segments = 3;
|
||||||
|
const float thetaStep = 2.0f * 3.14159265f / float(segments);
|
||||||
|
|
||||||
|
glUseProgram(0);
|
||||||
|
glLineWidth(2.0f);
|
||||||
|
glColor3f(color.r, color.g, color.b);
|
||||||
|
|
||||||
|
glBegin(GL_LINE_LOOP);
|
||||||
|
for (int i = 0; i < segments; ++i)
|
||||||
|
{
|
||||||
|
float theta = thetaStep * float(i);
|
||||||
|
glm::vec2 worldPoint = worldCenter + glm::vec2(std::cos(theta), std::sin(theta)) * radius;
|
||||||
|
glm::vec2 screenPoint = (worldPoint - cameraPos) * zoom + glm::vec2(width * 0.5f, height * 0.5f);
|
||||||
|
glVertex2f(screenPoint.x, screenPoint.y);
|
||||||
|
}
|
||||||
|
glEnd();
|
||||||
|
}
|
||||||
|
|
||||||
GLuint Renderer::GetRenderTexture()
|
GLuint Renderer::GetRenderTexture()
|
||||||
{
|
{
|
||||||
return textureColorBuffer;
|
return textureColorBuffer;
|
||||||
|
@ -7,10 +7,6 @@
|
|||||||
#include "Components/SpriteComponent.h"
|
#include "Components/SpriteComponent.h"
|
||||||
#include "utils/EngineConfig.h"
|
#include "utils/EngineConfig.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
struct Light {
|
struct Light {
|
||||||
glm::vec2 screenPos;
|
glm::vec2 screenPos;
|
||||||
glm::vec3 color;
|
glm::vec3 color;
|
||||||
@ -18,25 +14,55 @@ struct Light {
|
|||||||
float radius;
|
float radius;
|
||||||
};
|
};
|
||||||
|
|
||||||
static int MAX_LIGHTS = g_engineConfig.gl_maxLight;
|
|
||||||
|
|
||||||
class Renderer {
|
class Renderer {
|
||||||
public:
|
public:
|
||||||
static void Init();
|
static void Init();
|
||||||
static void Resize(int w, int h);
|
static void Resize(int w, int h);
|
||||||
static void Begin();
|
static void Begin();
|
||||||
static void End();
|
static void End();
|
||||||
|
|
||||||
static void DrawSprite(SpriteComponent* sprite, const glm::vec2& pos, float zoom, glm::vec2& CameraPos);
|
static void DrawSprite(SpriteComponent* sprite, const glm::vec2& pos, float zoom, glm::vec2& CameraPos);
|
||||||
static void AddLight(const glm::vec2& screenPos, const glm::vec3& color, float intensity, float radius);
|
|
||||||
static void DrawTilemap(TilemapComponent* tilemap, const glm::vec2& worldPos, float zoom, const glm::vec2& cameraPos);
|
static void DrawTilemap(TilemapComponent* tilemap, const glm::vec2& worldPos, float zoom, const glm::vec2& cameraPos);
|
||||||
|
|
||||||
|
static void AddLight(const glm::vec2& screenPos, const glm::vec3& color, float intensity, float radius);
|
||||||
static void ClearLights();
|
static void ClearLights();
|
||||||
|
|
||||||
static void DrawEditorGrid(const glm::vec2& cameraPos, float zoom);
|
static void DrawEditorGrid(const glm::vec2& cameraPos, float zoom);
|
||||||
|
|
||||||
|
// —— New gizmo functions ——
|
||||||
|
// Draws a colored line between two world‑space points.
|
||||||
|
static void DrawGizmoLine(
|
||||||
|
const glm::vec2& worldStart,
|
||||||
|
const glm::vec2& worldEnd,
|
||||||
|
const glm::vec3& color,
|
||||||
|
const glm::vec2& cameraPos,
|
||||||
|
float zoom
|
||||||
|
);
|
||||||
|
|
||||||
|
// Draws a colored axis‑aligned rectangle in world space.
|
||||||
|
static void DrawGizmoRect(
|
||||||
|
const glm::vec2& worldPos,
|
||||||
|
const glm::vec2& size,
|
||||||
|
const glm::vec3& color,
|
||||||
|
const glm::vec2& cameraPos,
|
||||||
|
float zoom
|
||||||
|
);
|
||||||
|
|
||||||
|
// Draws a colored circle (approximated by segments) in world space.
|
||||||
|
static void DrawGizmoCircle(
|
||||||
|
const glm::vec2& worldCenter,
|
||||||
|
float radius,
|
||||||
|
int segments,
|
||||||
|
const glm::vec3& color,
|
||||||
|
const glm::vec2& cameraPos,
|
||||||
|
float zoom
|
||||||
|
);
|
||||||
|
|
||||||
static GLuint GetRenderTexture();
|
static GLuint GetRenderTexture();
|
||||||
static glm::ivec2 GetSize();
|
static glm::ivec2 GetSize();
|
||||||
static int GetDrawCallCount();
|
static int GetDrawCallCount();
|
||||||
static int GetLightsCount();
|
static int GetLightsCount();
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static std::vector<Light> s_Lights;
|
static std::vector<Light> s_Lights;
|
||||||
static GLuint fbo, textureColorBuffer, rbo;
|
static GLuint fbo, textureColorBuffer, rbo;
|
||||||
|
@ -7,5 +7,8 @@ EngineConfig g_engineConfig {
|
|||||||
.version = "0.1.0",
|
.version = "0.1.0",
|
||||||
.gl_version = "430",
|
.gl_version = "430",
|
||||||
.gl_maxLight = 512,
|
.gl_maxLight = 512,
|
||||||
|
.settings{
|
||||||
|
.draw_gizmos = true,
|
||||||
|
},
|
||||||
|
|
||||||
};
|
};
|
||||||
|
@ -1,11 +1,17 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
|
struct UserSettings{
|
||||||
|
bool draw_gizmos;
|
||||||
|
};
|
||||||
|
|
||||||
struct EngineConfig {
|
struct EngineConfig {
|
||||||
bool lighting_enabled;
|
bool lighting_enabled;
|
||||||
std::string version;
|
std::string version;
|
||||||
std::string gl_version;
|
std::string gl_version;
|
||||||
int gl_maxLight;
|
int gl_maxLight;
|
||||||
|
|
||||||
|
UserSettings settings;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern EngineConfig g_engineConfig;
|
extern EngineConfig g_engineConfig;
|
||||||
|
Loading…
Reference in New Issue
Block a user