From 78f216e4457323a3b21810cf8f1993624c19c09f Mon Sep 17 00:00:00 2001 From: Brandon Mak Date: Wed, 28 Sep 2022 20:33:29 +0800 Subject: [PATCH] Rendered multiple racoons --- SHADE_Application/src/Scenes/SBTestScene.cpp | 24 +++++++++++++++---- SHADE_Engine/premake5.lua | 3 +++ .../src/Assets/Libraries/SHTextureLoader.cpp | 2 +- .../GlobalData/SHGraphicsGlobalData.cpp | 5 ++++ .../GlobalData/SHGraphicsGlobalData.h | 5 ++-- .../MiddleEnd/Interface/SHRenderable.cpp | 2 +- TempShaderFolder/TestCubeFs.glsl | 22 ++++++++--------- 7 files changed, 44 insertions(+), 19 deletions(-) diff --git a/SHADE_Application/src/Scenes/SBTestScene.cpp b/SHADE_Application/src/Scenes/SBTestScene.cpp index 170f3e10..74ac4c1d 100644 --- a/SHADE_Application/src/Scenes/SBTestScene.cpp +++ b/SHADE_Application/src/Scenes/SBTestScene.cpp @@ -76,10 +76,10 @@ namespace Sandbox customMat->SetProperty("data.alpha", 0.1f); // Create Stress Test Objects - static const SHVec3 TEST_OBJ_SCALE = { 0.2f, 0.2f, 0.2f }; - constexpr int NUM_ROWS = 20; - constexpr int NUM_COLS = 20; - static const SHVec3 TEST_OBJ_SPACING = { 0.2f, 0.2f, 0.2f }; + static const SHVec3 TEST_OBJ_SCALE = { 0.05f, 0.05f, 0.05f }; + constexpr int NUM_ROWS = 100; + constexpr int NUM_COLS = 100; + static const SHVec3 TEST_OBJ_SPACING = { 0.05f, 0.05f, 0.05f }; static const SHVec3 TEST_OBJ_START_POS = { - (NUM_COLS / 2 * TEST_OBJ_SPACING.x ) + 1.0f, -2.0f, -1.0f }; for (int y = 0; y < NUM_ROWS; ++y) @@ -92,6 +92,9 @@ namespace Sandbox renderable.Mesh = handles.front(); renderable.SetMaterial(customMat); + if (y == 50) + renderable.GetModifiableMaterial()->SetProperty("data.color", SHVec4(1.0f, 0.0f, 0.0f, 1.0f)); + //Set initial positions transform.SetWorldPosition(TEST_OBJ_START_POS + SHVec3{ x * TEST_OBJ_SPACING.x, @@ -105,6 +108,19 @@ namespace Sandbox stressTestObjects.emplace_back(entity); } + auto entity = SHEntityManager::CreateEntity(); + auto& renderable = *SHComponentManager::GetComponent_s(entity); + auto& transform = *SHComponentManager::GetComponent_s(entity); + + renderable.Mesh = handles.front(); + renderable.SetMaterial(customMat); + renderable.GetModifiableMaterial()->SetProperty("data.color", SHVec4(0.0f, 0.0f, 0.0f, 0.0f)); + renderable.GetModifiableMaterial()->SetProperty("data.alpha", 1.0f); + renderable.GetModifiableMaterial()->SetProperty("data.textureIndex", 1); + + transform.SetWorldPosition ({-3.0f, -1.0f, -1.0f}); + transform.SetLocalScale({5.0f, 5.0f, 5.0f}); + //auto entity = SHEntityManager::CreateEntity(); //auto& renderable = *SHComponentManager::GetComponent_s(entity); //auto& transform = *SHComponentManager::GetComponent_s(entity); diff --git a/SHADE_Engine/premake5.lua b/SHADE_Engine/premake5.lua index 7de741b7..32a1e30c 100644 --- a/SHADE_Engine/premake5.lua +++ b/SHADE_Engine/premake5.lua @@ -113,6 +113,9 @@ project "SHADE_Engine" filter "configurations:Release" postbuildcommands {"xcopy /r /y /q \"%{IncludeDir.assimp}\\bin\\Release\\assimp-vc142-mt.dll\" \"$(OutDir)\""} + filter "configurations:Publish" + postbuildcommands {"xcopy /r /y /q \"%{IncludeDir.assimp}\\bin\\Release\\assimp-vc142-mt.dll\" \"$(OutDir)\""} + warnings 'Extra' filter "configurations:Debug" diff --git a/SHADE_Engine/src/Assets/Libraries/SHTextureLoader.cpp b/SHADE_Engine/src/Assets/Libraries/SHTextureLoader.cpp index bff15f2b..4f510c0a 100644 --- a/SHADE_Engine/src/Assets/Libraries/SHTextureLoader.cpp +++ b/SHADE_Engine/src/Assets/Libraries/SHTextureLoader.cpp @@ -79,7 +79,7 @@ namespace SHADE } SHTexture::PixelChannel* pixel = new SHTexture::PixelChannel[totalBytes]; - std::memcpy(pixel, file.GetDDSData(), totalBytes); + std::memcpy(pixel, file.GetImageData()->m_mem, totalBytes); //pixel = std::move(reinterpret_cast(file.GetDDSData())); asset.numBytes = totalBytes; diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/GlobalData/SHGraphicsGlobalData.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/GlobalData/SHGraphicsGlobalData.cpp index 219ab933..6a7b23f2 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/GlobalData/SHGraphicsGlobalData.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/GlobalData/SHGraphicsGlobalData.cpp @@ -15,6 +15,11 @@ namespace SHADE SHVertexInputState SHGraphicsGlobalData::defaultVertexInputState; Handle SHGraphicsGlobalData::dummyPipelineLayout; + void SHGraphicsGlobalData::InitHighFrequencyGlobalData(void) noexcept + { + + } + /*-----------------------------------------------------------------------------------*/ /* Function Definitions */ /*-----------------------------------------------------------------------------------*/ diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/GlobalData/SHGraphicsGlobalData.h b/SHADE_Engine/src/Graphics/MiddleEnd/GlobalData/SHGraphicsGlobalData.h index b6f84c52..344c2616 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/GlobalData/SHGraphicsGlobalData.h +++ b/SHADE_Engine/src/Graphics/MiddleEnd/GlobalData/SHGraphicsGlobalData.h @@ -27,8 +27,9 @@ namespace SHADE //! we create a dummy pipeline layout to use it for binding. static Handle dummyPipelineLayout; - static void InitDescSetLayouts (Handle logicalDevice) noexcept; - static void InitDefaultVertexInputState(void) noexcept; + static void InitHighFrequencyGlobalData (void) noexcept; + static void InitDescSetLayouts (Handle logicalDevice) noexcept; + static void InitDefaultVertexInputState (void) noexcept; public: /*-----------------------------------------------------------------------*/ diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHRenderable.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHRenderable.cpp index a4cda42d..0b1c1b66 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHRenderable.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHRenderable.cpp @@ -81,7 +81,7 @@ namespace SHADE if (!material) { SHGraphicsSystem* gfxSystem = SHSystemManager::GetSystem(); - material = gfxSystem->AddOrGetBaseMaterialInstance(sharedMaterial->GetBaseMaterial()); + material = gfxSystem->AddMaterialInstanceCopy(sharedMaterial); } return material; diff --git a/TempShaderFolder/TestCubeFs.glsl b/TempShaderFolder/TestCubeFs.glsl index 93e15e07..3a25ad71 100644 --- a/TempShaderFolder/TestCubeFs.glsl +++ b/TempShaderFolder/TestCubeFs.glsl @@ -3,6 +3,14 @@ #extension GL_ARB_shading_language_420pack : enable #extension GL_EXT_nonuniform_qualifier : require +struct MatPropData +{ + vec4 color; + int textureIndex; + float alpha; + vec3 beta; +}; + layout(location = 0) in struct { vec4 vertColor; @@ -16,18 +24,10 @@ layout(location = 2) flat in struct int materialIndex; } In2; +//layout (set = 0, binding = ) -layout (set = 0, binding = 1) uniform sampler2D textures[]; - -struct MatPropData -{ - vec4 color; - int textureIndex; - float alpha; - vec3 beta; -}; - -layout(set = 3, binding = 0) buffer MaterialProperties +layout (set = 0, binding = 1) uniform sampler2D textures[]; // for textures (global) +layout (set = 3, binding = 0) buffer MaterialProperties // For materials { MatPropData data[]; } MatProp;