Deferred rendering mode + Skybox
- Added deferred rendering mode to the renderer - Added a skybox to the forward rendering mode - moved default imported assets directory (temporary fix)
This commit is contained in:
@ -66,13 +66,9 @@ YAML::Emitter& operator<< (YAML::Emitter& emitter, glm::vec3& vector) {
|
||||
emitter << YAML::Key << "Light";
|
||||
emitter << YAML::Value;
|
||||
emitter << YAML::BeginMap;
|
||||
emitter << YAML::Key << "strength";
|
||||
emitter << YAML::Value << entity.GetComponent<LightComponent>().Strength;
|
||||
|
||||
emitter << YAML::Key << "Color";
|
||||
emitter << YAML::Value << entity.GetComponent<LightComponent>().Color;
|
||||
emitter << YAML::EndMap;
|
||||
|
||||
emitter << YAML::EndMap;
|
||||
}
|
||||
|
||||
|
||||
@ -129,7 +125,6 @@ YAML::Emitter& operator<< (YAML::Emitter& emitter, glm::vec3& vector) {
|
||||
}
|
||||
if (entity["Light"]) {
|
||||
LightComponent lc = SE.AddComponent<LightComponent>();
|
||||
lc.Strength = entity["Light"]["strength"].as<float>();
|
||||
lc.Color = glm::vec3(entity["Light"]["Color"][0].as<float>(), entity["Light"]["Color"][1].as<float>(), entity["Light"]["Color"][2].as<float>());
|
||||
}
|
||||
|
||||
|
@ -106,9 +106,10 @@ public:
|
||||
switch (result) {
|
||||
case(NFD_OKAY):
|
||||
// Import Model
|
||||
|
||||
AssetManager::LoadFromSource(
|
||||
path,
|
||||
project.get()->GetProjectDirectory() / "Assets"
|
||||
"build/Debug/Assets"//project.get()->GetProjectDirectory() / "Assets"
|
||||
);
|
||||
break;
|
||||
case(NFD_CANCEL):
|
||||
|
@ -19,8 +19,7 @@ using namespace YoggieEngine;
|
||||
|
||||
auto matrix = glm::mat4(1.0f);
|
||||
auto worldOrigin = glm::mat4(1.0f);
|
||||
auto projection = glm::perspective(45.0f, 0.89f, 0.001f, 1.0f);
|
||||
auto view = glm::mat4(1.0f);
|
||||
|
||||
|
||||
inline void ComponentView(const std::string& componentName, voidFunction func)
|
||||
{
|
||||
@ -40,7 +39,7 @@ public:
|
||||
|
||||
void AddComponentDropDown(Entity& selected )
|
||||
{
|
||||
static char* names[] = { "Script Component", "Camera Component" };
|
||||
static char* names[] = { "Script Component", "Camera Component", "Light Component"};
|
||||
if (ImGui::Button("Add Component"))
|
||||
ImGui::OpenPopup("Component picker");
|
||||
|
||||
@ -82,25 +81,23 @@ public:
|
||||
ImGui::ColorEdit3("Colour", glm::value_ptr(render3d.color));
|
||||
}
|
||||
}
|
||||
|
||||
static bool deferred = true;
|
||||
if (selected.HasComponent<LightComponent>()) {
|
||||
auto& light = selected.GetComponent<LightComponent>();
|
||||
if (ImGui::CollapsingHeader("Light", ImGuiTreeNodeFlags_DefaultOpen)) {
|
||||
ImGui::DragFloat("Strength", &light.Strength, 0.001f);
|
||||
ImGui::ColorEdit3("Colour", glm::value_ptr(light.Color));
|
||||
ImGui::Checkbox("Deferred", &deferred);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (selected.HasComponent <CameraComponent>()) {
|
||||
auto& camera = selected.GetComponent<CameraComponent>();
|
||||
static float Zoom = 90;
|
||||
static glm::vec3 Position, Rotation = glm::vec3(0.0f);
|
||||
ComponentView("Camera", [] {
|
||||
ImGui::SliderFloat("Zoom", &Zoom, 10, 190);
|
||||
ImGui::InputFloat3("Position:", &Position[0]);
|
||||
ImGui::InputFloat3("Rotation:", &Rotation[0]);
|
||||
});
|
||||
if (ImGui::CollapsingHeader("Camera")) {
|
||||
ImGui::DragFloat3("Position:",glm::value_ptr(camera.Position), 0.01f);
|
||||
ImGui::DragFloat3("Rotation:", glm::value_ptr(camera.Rotation), 0.01f);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if (selected.HasComponent<ScriptComponent>()) {
|
||||
@ -131,7 +128,7 @@ public:
|
||||
|
||||
class Viewport : EditorWindow {
|
||||
public:
|
||||
Viewport (Framebuffer& fb, Camera cam ) : EditorWindow("SceneView")
|
||||
Viewport (Framebuffer& fb, Camera cam) : EditorWindow("SceneView")
|
||||
{
|
||||
ImVec2 WinPos = ImGui::GetWindowPos();
|
||||
ImVec2 ContentRegionMin = ImGui::GetWindowContentRegionMin();
|
||||
@ -149,11 +146,13 @@ public:
|
||||
ImGuizmo::Enable(true);
|
||||
ImGuizmo::SetRect(ScreenSpaceMin.x, ScreenSpaceMin.y,ContentRegionMax.x, ContentRegionMax.y);
|
||||
|
||||
ImGuizmo::ViewManipulate(glm::value_ptr(cam.ViewMatrix), 1, { ScreenSpaceMin.x,ScreenSpaceMin.y }, { 90,90 }, 0x22CCCCCC);
|
||||
glm::mat4 transposed_view = glm::transpose(cam.ViewMatrix);
|
||||
|
||||
ImGuizmo::ViewManipulate(glm::value_ptr(transposed_view), 1, { ScreenSpaceMin.x,ScreenSpaceMin.y }, { 90,90 }, 0x22CCCCCC);
|
||||
ImGuizmo::DrawGrid(glm::value_ptr(cam.ViewMatrix), glm::value_ptr(cam.ProjectionMatrix), glm::value_ptr(worldOrigin), 100.0f);
|
||||
|
||||
// Matrix is the model matrix we would want to manipulate
|
||||
ImGuizmo::Manipulate(glm::value_ptr(cam.ViewMatrix), glm::value_ptr(cam.ProjectionMatrix), ImGuizmo::TRANSLATE, ImGuizmo::WORLD, glm::value_ptr(matrix));
|
||||
//ImGuizmo::Manipulate(glm::value_ptr(cam.ViewMatrix), glm::value_ptr(cam.ProjectionMatrix), ImGuizmo::TRANSLATE, ImGuizmo::WORLD, glm::value_ptr(cam.ViewMatrix));
|
||||
|
||||
}
|
||||
|
||||
|
@ -14,8 +14,6 @@
|
||||
#include "SceneSerializer.h"
|
||||
#include "AssetManagement/AssetManager.h"
|
||||
#include "UI/MainMenuBar.h"
|
||||
|
||||
|
||||
const unsigned int MS_PER_UPDATE = 2;
|
||||
void CreateTestProject(std::unique_ptr<Project>& project, Scene& scene);
|
||||
|
||||
@ -26,6 +24,8 @@ RendererConfig EditorSceneRendererConfig{
|
||||
true // Depth testing
|
||||
};
|
||||
|
||||
glm::vec3 temp = glm::vec3(0);
|
||||
Camera cam = Camera(glm::vec3(12.0f, 1.0f, 0.0f), glm::vec3(45.0f, 0.0f, 0.0f), 90);
|
||||
class Editor : public Application {
|
||||
public:
|
||||
Editor()
|
||||
@ -46,7 +46,9 @@ public:
|
||||
viewportRenderer.Submit(renderComponent, t);
|
||||
});
|
||||
|
||||
viewportRenderer.Render();
|
||||
// Render scene
|
||||
viewportRenderer.Render(ActiveScene);
|
||||
|
||||
}
|
||||
|
||||
void RenderEditorGUI() {
|
||||
@ -120,7 +122,6 @@ public:
|
||||
Physics Physics;
|
||||
//Physics.Demo();
|
||||
|
||||
|
||||
double previous = glfwGetTime();
|
||||
double lag = 0.0;
|
||||
while (!AppWindow.WindowShouldClose())
|
||||
@ -145,6 +146,8 @@ public:
|
||||
lag -= MS_PER_UPDATE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
RenderScene();
|
||||
|
||||
RenderEditorGUI();
|
||||
@ -176,7 +179,6 @@ private:
|
||||
std::unique_ptr<Project> CurrentProject;
|
||||
Scene ActiveScene;
|
||||
|
||||
|
||||
};
|
||||
|
||||
YoggieEngine::Application* CreateApplication() {
|
||||
@ -211,8 +213,10 @@ void CreateTestProject(std::unique_ptr<Project>& project, Scene& scene ) {
|
||||
rendercube2.mesh = *(model->renderable->mesh);
|
||||
|
||||
// create an ambient light source
|
||||
auto AmbientLight = scene.AddEntity("AmbientLight");
|
||||
auto light = AmbientLight.AddComponent<LightComponent>();
|
||||
light.Color = glm::vec3(1.0f);
|
||||
light.Strength = 1.0f;
|
||||
auto light = scene.AddEntity("Light");
|
||||
auto lightComponent = light.AddComponent<LightComponent>();
|
||||
lightComponent.Color = glm::vec3(1.0f);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user