From 166e13a33916222b77d2b36dda5abf1e819015fb Mon Sep 17 00:00:00 2001 From: Brandon Mak Date: Fri, 3 Mar 2023 22:01:34 +0800 Subject: [PATCH 1/3] Shadows WIP - Light direction in 2nd level changed --- Assets/Scenes/Level2.shade | 10 ++++++- Assets/Scenes/Scene2.shade | 19 +++++++----- Assets/Shaders/DeferredComposite_CS.glsl | 8 +++-- Assets/Shaders/DeferredComposite_CS.shshaderb | Bin 9949 -> 10101 bytes .../MiddleEnd/Interface/SHGraphicsSystem.cpp | 28 +++++++++--------- .../MiddleEnd/Lights/SHLightingSubSystem.cpp | 5 +++- .../MiddleEnd/Lights/SHLightingSubSystem.h | 4 +-- .../src/Graphics/RenderGraph/SHSubpass.cpp | 23 ++++++++------ 8 files changed, 61 insertions(+), 36 deletions(-) diff --git a/Assets/Scenes/Level2.shade b/Assets/Scenes/Level2.shade index e3de1671..fec79fec 100644 --- a/Assets/Scenes/Level2.shade +++ b/Assets/Scenes/Level2.shade @@ -17,7 +17,7 @@ Light Component: Position: {x: 0, y: 0, z: 0} Type: Directional - Direction: {x: 15, y: 90, z: 15} + Direction: {x: 15, y: -90, z: 15} Color: {x: 1, y: 1, z: 1, w: 1} Layer: 4294967295 Strength: 1 @@ -2251,6 +2251,8 @@ Text Renderer Component: Text: My name is Brandon. Font: 174412429 + Color: {x: 1, y: 1, z: 1, w: 1} + Text Size: {x: 1, y: 1, z: 1} IsActive: true UI Component: Canvas ID: 199 @@ -2291,6 +2293,8 @@ Text Renderer Component: Text: My name is Brandon. Font: 176667660 + Color: {x: 1, y: 1, z: 1, w: 1} + Text Size: {x: 1, y: 1, z: 1} IsActive: true UI Component: Canvas ID: 199 @@ -2311,6 +2315,8 @@ Text Renderer Component: Text: X2 Font: 174412429 + Color: {x: 1, y: 1, z: 1, w: 1} + Text Size: {x: 1, y: 1, z: 1} IsActive: true UI Component: Canvas ID: 199 @@ -4954,6 +4960,8 @@ Text Renderer Component: Text: Game Pause Font: 176667660 + Color: {x: 1, y: 1, z: 1, w: 1} + Text Size: {x: 1, y: 1, z: 1} IsActive: false UI Component: Canvas ID: 10 diff --git a/Assets/Scenes/Scene2.shade b/Assets/Scenes/Scene2.shade index de902c55..891c9664 100644 --- a/Assets/Scenes/Scene2.shade +++ b/Assets/Scenes/Scene2.shade @@ -14,10 +14,10 @@ Yaw: 0 Roll: 0 Width: 1200 - Height: 1080 Near: 0.00999999978 Far: 10000 Perspective: true + FOV: 90 IsActive: true Scripts: ~ - EID: 1 @@ -26,9 +26,9 @@ NumberOfChildren: 1 Components: Transform Component: - Translate: {x: -1.86388135, y: 0.0544953719, z: 0} - Rotate: {x: -0, y: 0, z: -0} - Scale: {x: 1, y: 1, z: 1} + Translate: {x: 0, y: 0.189419448, z: 0} + Rotate: {x: 0.00523597933, y: -2.96353412, z: -6.40293041e-10} + Scale: {x: 1.00000191, y: 1, z: 1.00000191} IsActive: true Renderable Component: Mesh: 149697411 @@ -55,10 +55,15 @@ IsActive: true NumberOfChildren: 0 Components: + Transform Component: + Translate: {x: 0, y: 1.82978272, z: -3.28967047} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true Light Component: Position: {x: 3, y: 4.5, z: 7} Type: Directional - Direction: {x: -0.298000008, y: 0.522498012, z: 0.798600018} + Direction: {x: 0, y: 0, z: 1} Color: {x: 1, y: 1, z: 1, w: 1} Layer: 4294967295 Strength: 0 @@ -85,8 +90,8 @@ Components: Transform Component: Translate: {x: 0, y: 0.0810000002, z: 0} - Rotate: {x: -1.57079637, y: 0, z: 0} - Scale: {x: 50, y: 50, z: 50} + Rotate: {x: -1.57079625, y: 0, z: -0} + Scale: {x: 50, y: 49.9999924, z: 49.9999924} IsActive: true Renderable Component: Mesh: 141771688 diff --git a/Assets/Shaders/DeferredComposite_CS.glsl b/Assets/Shaders/DeferredComposite_CS.glsl index f17c9d84..12352d4d 100644 --- a/Assets/Shaders/DeferredComposite_CS.glsl +++ b/Assets/Shaders/DeferredComposite_CS.glsl @@ -78,8 +78,12 @@ float CalcShadowValue (sampler2D shadowMap, vec4 worldSpaceFragPos, mat4 lightPV float pMax = LinStep (variance / (variance + (d * d)), 0.9f, 1.0f); return min (max (p, pMax), 1.0f); } + else if (fragPosLightPOV.z > 1.0f) + { + return 0.0f; + } else - return 1.0f; + return 0.3f; // return step (fragPosLightPOV.z, ); } @@ -125,7 +129,7 @@ void main() vec3 dLightNormalized = normalize (DirLightData.dLightData[i].direction); // Get diffuse strength - float diffuseStrength = max (0, dot (dLightNormalized, normalView)); + float diffuseStrength = max (0, dot (-dLightNormalized, normalView)); // Calculate the fragment color fragColor += DirLightData.dLightData[i].diffuseColor.rgb * diffuseStrength.rrr * pixelDiffuse; diff --git a/Assets/Shaders/DeferredComposite_CS.shshaderb b/Assets/Shaders/DeferredComposite_CS.shshaderb index e5a0a7303892bd790d631d8261d5fe2977587f76..a5197b3bb424b07718a21240adc9134a72f08195 100644 GIT binary patch literal 10101 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 K_e|_>oc{p)UnD;O literal 9949 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 diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.cpp index e7f1ae68..e3d30812 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.cpp @@ -128,7 +128,7 @@ namespace SHADE SHFreetypeInstance::Init(); - //SHAssetManager::CompileAsset("../../Assets/Shaders/DeferredComposite_CS.glsl", false); + SHAssetManager::CompileAsset("../../Assets/Shaders/DeferredComposite_CS.glsl", false); //SHAssetManager::CompileAsset("../../Assets/Shaders/ShadowMap_FS.glsl", false); //SHAssetManager::CompileAsset("../../Assets/Shaders/ShadowMap_FS.glsl", false); //SHAssetManager::CompileAsset("../../Assets/Shaders/SSAO_CS.glsl", false); @@ -671,19 +671,19 @@ namespace SHADE static bool shadowAdded = false; - //if (shadowAdded == false && SHInputManager::GetKey(SHInputManager::SH_KEYCODE::B)) - //{ - // shadowAdded = true; - // auto& lightComps = SHComponentManager::GetDense(); - // //if (lightComps.size() > 2) - // //{ - // // lightComps[2].SetEnableShadow(true); - // //} - // for (auto& comp : lightComps) - // { - // comp.SetEnableShadow(true); - // } - //} + if (shadowAdded == false && SHInputManager::GetKey(SHInputManager::SH_KEYCODE::B)) + { + shadowAdded = true; + auto& lightComps = SHComponentManager::GetDense(); + //if (lightComps.size() > 2) + //{ + // lightComps[2].SetEnableShadow(true); + //} + for (auto& comp : lightComps) + { + comp.SetEnableShadow(true); + } + } renderGraph->Begin(frameIndex); auto cmdBuffer = renderGraph->GetCommandBuffer(frameIndex); diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Lights/SHLightingSubSystem.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/Lights/SHLightingSubSystem.cpp index 6f8a9030..cace495c 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Lights/SHLightingSubSystem.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Lights/SHLightingSubSystem.cpp @@ -398,7 +398,10 @@ namespace SHADE { SHTransformComponent* transform = SHComponentManager::GetComponent(lightComp->GetEID()); - return SHMatrix::Transpose(SHMatrix::LookAtLH(transform->GetWorldPosition(), SHVec3::Normalise(lightComp->GetLightData().direction), SHVec3(0.0f, -1.0f, 0.0f))); + if (transform) + return SHMatrix::Transpose(SHMatrix::LookAtLH(transform->GetWorldPosition(), SHVec3::Normalise(lightComp->GetLightData().direction), SHVec3(0.0f, -1.0f, 0.0f))); + else + return{}; } //return SHMatrix::Transpose(SHMatrix::LookAtLH(/*lightComp->GetLightData().position*/SHVec3(1.27862f, 4.78952f, 4.12811f), SHVec3(-0.280564f, -0.66262f, -0.69422f), SHVec3(0.0f, -1.0f, 0.0f))); case SH_LIGHT_TYPE::POINT: diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Lights/SHLightingSubSystem.h b/SHADE_Engine/src/Graphics/MiddleEnd/Lights/SHLightingSubSystem.h index 7794a2fb..69b00f2c 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Lights/SHLightingSubSystem.h +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Lights/SHLightingSubSystem.h @@ -73,8 +73,8 @@ namespace SHADE public: using DynamicOffsetArray = std::array, static_cast(SHGraphicsConstants::NUM_FRAME_BUFFERS)>; static constexpr uint32_t MAX_SHADOWS = 200; - static constexpr uint32_t SHADOW_MAP_WIDTH = 1024; - static constexpr uint32_t SHADOW_MAP_HEIGHT = 1024; + static constexpr uint32_t SHADOW_MAP_WIDTH = 2048; + static constexpr uint32_t SHADOW_MAP_HEIGHT = 2048; private: class PerTypeData diff --git a/SHADE_Engine/src/Graphics/RenderGraph/SHSubpass.cpp b/SHADE_Engine/src/Graphics/RenderGraph/SHSubpass.cpp index d45789ce..14a5d864 100644 --- a/SHADE_Engine/src/Graphics/RenderGraph/SHSubpass.cpp +++ b/SHADE_Engine/src/Graphics/RenderGraph/SHSubpass.cpp @@ -78,6 +78,7 @@ namespace SHADE , viewport {rhs.viewport} , renderer {rhs.renderer} , companionSubpass {rhs.companionSubpass} + , dummyPipelineLayout{rhs.dummyPipelineLayout} { } @@ -115,6 +116,7 @@ namespace SHADE renderer = rhs.renderer; viewport = rhs.viewport; companionSubpass = rhs.companionSubpass; + dummyPipelineLayout = rhs.dummyPipelineLayout; return *this; @@ -457,17 +459,20 @@ namespace SHADE /***************************************************************************/ void SHSubpass::GenerateDummyPipielineLayout(void) noexcept { - auto const& batchingSystemData = SHGraphicsPredefinedData::GetSystemData(SHGraphicsPredefinedData::SystemType::BATCHING); - std::vector newLayouts = batchingSystemData.descSetLayouts; - if (inputDescriptorLayout) + if (!dummyPipelineLayout) { - newLayouts.push_back(inputDescriptorLayout); - } + auto const& batchingSystemData = SHGraphicsPredefinedData::GetSystemData(SHGraphicsPredefinedData::SystemType::BATCHING); + std::vector newLayouts = batchingSystemData.descSetLayouts; + if (inputDescriptorLayout) + { + newLayouts.push_back(inputDescriptorLayout); + } - dummyPipelineLayout = graphStorage->logicalDevice->CreatePipelineLayoutDummy - ( - SHPipelineLayoutParamsDummy{ newLayouts } - ); + dummyPipelineLayout = graphStorage->logicalDevice->CreatePipelineLayoutDummy + ( + SHPipelineLayoutParamsDummy{ newLayouts } + ); + } } /***************************************************************************/ From 17bb7a08ebab15c45d272457b7ec6665a8ea4ce0 Mon Sep 17 00:00:00 2001 From: Brandon Mak Date: Sat, 4 Mar 2023 01:01:26 +0800 Subject: [PATCH 2/3] Fixed render to swapchain errors --- Assets/Shaders/ToSwapchain_FS.glsl | 2 +- Assets/Shaders/ToSwapchain_FS.shshaderb | Bin 881 -> 881 bytes .../src/Graphics/RenderGraph/SHRenderGraph.cpp | 6 +++--- .../SHRenderToSwapchainImageSystem.cpp | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Assets/Shaders/ToSwapchain_FS.glsl b/Assets/Shaders/ToSwapchain_FS.glsl index d353c15f..3cf1752f 100644 --- a/Assets/Shaders/ToSwapchain_FS.glsl +++ b/Assets/Shaders/ToSwapchain_FS.glsl @@ -3,7 +3,7 @@ #extension GL_ARB_shading_language_420pack : enable #extension GL_EXT_nonuniform_qualifier : require -layout (input_attachment_index = 0, set = 3, binding = 0) uniform subpassInput sceneTexture; +layout (input_attachment_index = 0, set = 0, binding = 0) uniform subpassInput sceneTexture; layout(location = 0) out vec4 fragColor; diff --git a/Assets/Shaders/ToSwapchain_FS.shshaderb b/Assets/Shaders/ToSwapchain_FS.shshaderb index 24cb54feb17daf6424b28de97ba12ec39b15e21d..0bee0ac67036b416f1ad7249d12b6e7ea411b98d 100644 GIT binary patch delta 14 Vcmey!_K|HvCnF=n<}SwPi~uZA1yBG0 delta 14 Vcmey!_K|HvCnF>C<}SwPi~uZS1ycY3 diff --git a/SHADE_Engine/src/Graphics/RenderGraph/SHRenderGraph.cpp b/SHADE_Engine/src/Graphics/RenderGraph/SHRenderGraph.cpp index ea650274..e4e6889c 100644 --- a/SHADE_Engine/src/Graphics/RenderGraph/SHRenderGraph.cpp +++ b/SHADE_Engine/src/Graphics/RenderGraph/SHRenderGraph.cpp @@ -512,9 +512,9 @@ namespace SHADE uint32_t h = static_cast(resource->GetHeight()); cmdBuffer->SetViewportScissor(static_cast(w), static_cast(h), w, h); - //static constexpr uint32_t INPUT_IMAGE_SET_INDEX = 0; - auto const& mappings = SHGraphicsPredefinedData::GetMappings(SHGraphicsPredefinedData::SystemType::BATCHING); - newSubpass->BindInputDescriptorSets (cmdBuffer, mappings.at(SHPredefinedDescriptorTypes::RENDER_GRAPH_RESOURCE), frameIndex); + static constexpr uint32_t INPUT_IMAGE_SET_INDEX = 0; + //auto const& mappings = SHGraphicsPredefinedData::GetMappings(SHGraphicsPredefinedData::SystemType::BATCHING); + newSubpass->BindInputDescriptorSets (cmdBuffer, INPUT_IMAGE_SET_INDEX, frameIndex); // draw a quad. cmdBuffer->DrawArrays(4, 1, 0, 0); diff --git a/SHADE_Engine/src/Graphics/RenderGraph/SHRenderToSwapchainImageSystem.cpp b/SHADE_Engine/src/Graphics/RenderGraph/SHRenderToSwapchainImageSystem.cpp index 80260b7b..cffc3aa8 100644 --- a/SHADE_Engine/src/Graphics/RenderGraph/SHRenderToSwapchainImageSystem.cpp +++ b/SHADE_Engine/src/Graphics/RenderGraph/SHRenderToSwapchainImageSystem.cpp @@ -21,7 +21,7 @@ namespace SHADE void SHRenderToSwapchainImageSystem::ConstructPipelines(Handle logicalDevice) noexcept { - auto pipelineLayout = logicalDevice->CreatePipelineLayout(SHPipelineLayoutParams + pipelineLayout = logicalDevice->CreatePipelineLayout(SHPipelineLayoutParams { .shaderModules = {shaderModules.first, shaderModules.second}, .predefinedDescSetLayouts = {} From 13f28d6bdbff84107bbb048c54fa7fb37d567cb3 Mon Sep 17 00:00:00 2001 From: Brandon Mak Date: Sat, 4 Mar 2023 15:55:04 +0800 Subject: [PATCH 3/3] Fixed shiny highlight shaders --- Assets/Shaders/ShinyHighlight_FS.glsl | 10 +++++-- .../MiddleEnd/Interface/SHGraphicsSystem.cpp | 30 +++++++++---------- 2 files changed, 23 insertions(+), 17 deletions(-) diff --git a/Assets/Shaders/ShinyHighlight_FS.glsl b/Assets/Shaders/ShinyHighlight_FS.glsl index 8d7f4a90..bb41a0fb 100644 --- a/Assets/Shaders/ShinyHighlight_FS.glsl +++ b/Assets/Shaders/ShinyHighlight_FS.glsl @@ -78,8 +78,14 @@ void main() outEntityID = In2.eid; lightLayerIndices = In2.lightLayerIndex; - float vpHeight = float (In2.screenSpacePos.y) - MatProp.data[In2.materialIndex].highlightPosition; - vpHeight = float (int (vpHeight) % genericDataBuffer.data.viewportHeight); + // float vpHeight = float (In2.screenSpacePos.y) - MatProp.data[In2.materialIndex].highlightPosition; + // bring the frame of reference to the object's screen space pos + int scale = 470; + float vpHeight = float (In2.screenSpacePos.y); + float relativePos = float(int (-MatProp.data[In2.materialIndex].highlightPosition) % scale) - float (scale / 2); + vpHeight += relativePos; + + // vpHeight = float (int (vpHeight) % genericDataBuffer.data.viewportHeight); float scanlineScale = MatProp.data[In2.materialIndex].thickness * (1.0f - In2.screenSpacePos.z) * 100.0f; float lowerLimit = vpHeight - scanlineScale; diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.cpp index e3d30812..bbbbd1dd 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.cpp @@ -128,7 +128,7 @@ namespace SHADE SHFreetypeInstance::Init(); - SHAssetManager::CompileAsset("../../Assets/Shaders/DeferredComposite_CS.glsl", false); + //SHAssetManager::CompileAsset("../../Assets/Shaders/DeferredComposite_CS.glsl", false); //SHAssetManager::CompileAsset("../../Assets/Shaders/ShadowMap_FS.glsl", false); //SHAssetManager::CompileAsset("../../Assets/Shaders/ShadowMap_FS.glsl", false); //SHAssetManager::CompileAsset("../../Assets/Shaders/SSAO_CS.glsl", false); @@ -669,21 +669,21 @@ namespace SHADE #endif } - static bool shadowAdded = false; + //static bool shadowAdded = false; - if (shadowAdded == false && SHInputManager::GetKey(SHInputManager::SH_KEYCODE::B)) - { - shadowAdded = true; - auto& lightComps = SHComponentManager::GetDense(); - //if (lightComps.size() > 2) - //{ - // lightComps[2].SetEnableShadow(true); - //} - for (auto& comp : lightComps) - { - comp.SetEnableShadow(true); - } - } + //if (shadowAdded == false && SHInputManager::GetKey(SHInputManager::SH_KEYCODE::B)) + //{ + // shadowAdded = true; + // auto& lightComps = SHComponentManager::GetDense(); + // //if (lightComps.size() > 2) + // //{ + // // lightComps[2].SetEnableShadow(true); + // //} + // for (auto& comp : lightComps) + // { + // comp.SetEnableShadow(true); + // } + //} renderGraph->Begin(frameIndex); auto cmdBuffer = renderGraph->GetCommandBuffer(frameIndex);