From 1d16bd274412d0dcaa70407cea0e73a3780593f3 Mon Sep 17 00:00:00 2001 From: Brandon Mak Date: Fri, 10 Mar 2023 19:22:50 +0800 Subject: [PATCH] Fixed more shadows --- Assets/Shaders/ShadowMapAnim_VS.glsl | 12 +++--- Assets/Shaders/ShadowMapAnim_VS.shshaderb | Bin 2025 -> 3749 bytes .../Graphics/MiddleEnd/Batching/SHBatch.cpp | 36 +++++++++++++----- .../GlobalData/SHGraphicsPredefinedData.cpp | 3 +- .../Graphics/RenderGraph/SHRenderGraph.cpp | 2 +- 5 files changed, 36 insertions(+), 17 deletions(-) diff --git a/Assets/Shaders/ShadowMapAnim_VS.glsl b/Assets/Shaders/ShadowMapAnim_VS.glsl index f5f9ab4e..17b135e0 100644 --- a/Assets/Shaders/ShadowMapAnim_VS.glsl +++ b/Assets/Shaders/ShadowMapAnim_VS.glsl @@ -26,12 +26,12 @@ layout (std430, set = 2, binding = 1) buffer AnimBoneMatrices void main() { // // Compute bone matrix - // mat4 boneMatrix = BoneMatrices.data[firstBoneIndex + aBoneIndices[0]] * aBoneWeights[0]; - // boneMatrix += BoneMatrices.data[firstBoneIndex + aBoneIndices[1]] * aBoneWeights[1]; - // boneMatrix += BoneMatrices.data[firstBoneIndex + aBoneIndices[2]] * aBoneWeights[2]; - // boneMatrix += BoneMatrices.data[firstBoneIndex + aBoneIndices[3]] * aBoneWeights[3]; + mat4 boneMatrix = BoneMatrices.data[firstBoneIndex + aBoneIndices[0]] * aBoneWeights[0]; + boneMatrix += BoneMatrices.data[firstBoneIndex + aBoneIndices[1]] * aBoneWeights[1]; + boneMatrix += BoneMatrices.data[firstBoneIndex + aBoneIndices[2]] * aBoneWeights[2]; + boneMatrix += BoneMatrices.data[firstBoneIndex + aBoneIndices[3]] * aBoneWeights[3]; // clip space for rendering - gl_Position = cameraData.vpMat * worldTransform * vec4 (aVertexPos, 1.0f); - // gl_Position = cameraData.vpMat * worldTransform * boneMatrix * vec4 (aVertexPos, 1.0f); + // gl_Position = cameraData.vpMat * worldTransform * vec4 (aVertexPos, 1.0f); + gl_Position = cameraData.vpMat * worldTransform * boneMatrix * vec4 (aVertexPos, 1.0f); } \ No newline at end of file diff --git a/Assets/Shaders/ShadowMapAnim_VS.shshaderb b/Assets/Shaders/ShadowMapAnim_VS.shshaderb index 96c45e4742177cee622935fbe17c8524f09a8178..047f485b41367464e6b0a86d3dd8d80f77753127 100644 GIT binary patch literal 3749 zcmZ9MS(_785QckTGJ^{sB8v)R2Ha6Z1w@f$7%-rN41(YuLefBECJ9Lx7DWa(^vdPh zU*oUx#^>>UJ6+JyJjMCytFO+fQ*|a|f2~ULZ~3yVlSwj`Je;gdejQQCnq(PFl01@3 z3assUP%H1F#^mcWs%s?%!|x z-aMiQF&{PFH}X6;dSLI=xop{MYDzcgYUSNe-}fbF-RoG5 zMV;%5n7n#@-=BKVQ@auKbN@}O*5+OGpJ7$&UCr08Vsgf(3v91qzvl}s{Qdau8U7it zecwbrf2w((&6xuER-^aEG|%a>nq%BL^m_$o-W71n!`h?%KG?I3o2TzviF)k6zd>=I zYXvr6y}obBxc$Aw>RqkHy1rvICa+%K-yJ#ctM(3-BufX>-vya#t-JXPunuSCC;tzO ze;4lM8}m0o?LK^G^#ta;XHYr&Co$*g3`6r&!7rgP=V{D5`57v5#+xzUp>NH&x!!pS zGv@x&tXr@u7W;djt(g38Xv}#QGf#d$x3FfpsOLFwx#kz}t=XA}=0&i4)cg|IJo%{k zWpLDNJZjzsHWoF%0vuS@-ff%z~;%vJZs?cJdfhb`9*Jzfz9=c-noYb@q@8th%H z$-ULYJdMRXKL(fQc^2P!`a2z(Pr&jq&riYT$;UiD1IIj##~eNf8;f~<0j^@P{{;9; zOg`rM71%ua*ryII&+{Ci8V>*f literal 2025 zcmZ9LYflqF6o!{e3!>aaE-GLFub_z6m>4ezrkK=#!RW_k(=Iq>yKS}$sGs}^>QC~Q z_%r-s;`{8(G#jQlJ@dZjoH>`7?fWwn3YHh!^ z-p!ip4fP*X9Mxl!MD?agqefQG@_o3NnksQXG*wH$ipnS zhm&?1H{YjW(miOWEn5?J6WZ};7I5YKuEJOCBzluHO(PO(dG0UgKSt*8Q`Y0T(*u)s zGZ(|8OPU#vWHT`>Xw{bbv#2|NK(aUUN!au63!nDgk*|GOyhFP@$9&+>o?||6%*1o- z;dmcaS=i%;-OqnTn6)D>IL<8P*!qC+nK;Gq`B=`zac(gVOx&Kt=Yu;PM~%feFmXR5 zJ`T>u(Fb*MR#i1~=gSi6^ms{o7TAA>b_Rp_H_6?zu=9O_&p6CogGU_Zj={_h|GUy< z$x8_{+mL4Y9z3Q87Cm^b*aIAWaVGaq556ZbJhxxAI$TKEgk#H_~z~d6uobZG+ z=TaAWxHmroYzTSIOVby2@_@NlIDhU1?a71xw6pp6IcEbC59Z$SXFl`N^h@2uFGyp9 z#~;ic!;#O=HVD4I!2h~BOnBf%(^Lr;BX1C-xsUElNIC}DaD~_YiJx!PST$K=yKlX~` fr_RN8O+tQr=z)8=A>mE(?w+elFn<3uy(g0YL9(8# diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHBatch.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHBatch.cpp index 32a4fa76..4aa33de5 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHBatch.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHBatch.cpp @@ -726,16 +726,34 @@ namespace SHADE cmdBuffer->BindVertexBuffer(SHGraphicsConstants::VertexBufferBindings::BONE_MATRIX_FIRST_INDEX, transformDataBuffer[frameIndex], 0); } - auto const& descMappings = SHGraphicsPredefinedData::GetMappings(SHGraphicsPredefinedData::SystemType::BATCHING); - if (instanceDataDescSet[frameIndex]) + if (IsAnimated()) { - cmdBuffer->BindDescriptorSet - ( - instanceDataDescSet[frameIndex], - SH_PIPELINE_TYPE::GRAPHICS, - descMappings.at(SHPredefinedDescriptorTypes::PER_INSTANCE_BATCH), - dynamicOffset - ); + auto const& descMappings = SHGraphicsPredefinedData::GetMappings(SHGraphicsPredefinedData::SystemType::BATCHING_ANIM); + if (instanceDataDescSet[frameIndex]) + { + cmdBuffer->BindDescriptorSet + ( + instanceDataDescSet[frameIndex], + SH_PIPELINE_TYPE::GRAPHICS, + descMappings.at(SHPredefinedDescriptorTypes::PER_INSTANCE_ANIM_BATCH), + dynamicOffset + ); + } + } + else + { + auto const& descMappings = SHGraphicsPredefinedData::GetMappings(SHGraphicsPredefinedData::SystemType::BATCHING); + if (instanceDataDescSet[frameIndex]) + { + cmdBuffer->BindDescriptorSet + ( + instanceDataDescSet[frameIndex], + SH_PIPELINE_TYPE::GRAPHICS, + descMappings.at(SHPredefinedDescriptorTypes::PER_INSTANCE_BATCH), + dynamicOffset + ); + } + } cmdBuffer->DrawMultiIndirect(drawDataBuffer[frameIndex], static_cast(drawData.size())); cmdBuffer->EndLabeledSegment(); diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/GlobalData/SHGraphicsPredefinedData.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/GlobalData/SHGraphicsPredefinedData.cpp index 3f312532..76d34ff7 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/GlobalData/SHGraphicsPredefinedData.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/GlobalData/SHGraphicsPredefinedData.cpp @@ -37,7 +37,8 @@ namespace SHADE {SHPredefinedDescriptorTypes::STATIC_DATA, 0}, {SHPredefinedDescriptorTypes::CAMERA, 1}, {SHPredefinedDescriptorTypes::PER_INSTANCE_ANIM_BATCH, 2}, - }); + {SHPredefinedDescriptorTypes::RENDER_GRAPH_RESOURCE, 3}, + }); perSystemData[SHUtilities::ConvertEnum(SystemType::TEXT_RENDERING)].descMappings.AddMappings ({ diff --git a/SHADE_Engine/src/Graphics/RenderGraph/SHRenderGraph.cpp b/SHADE_Engine/src/Graphics/RenderGraph/SHRenderGraph.cpp index c44c9464..b9ca9d56 100644 --- a/SHADE_Engine/src/Graphics/RenderGraph/SHRenderGraph.cpp +++ b/SHADE_Engine/src/Graphics/RenderGraph/SHRenderGraph.cpp @@ -497,7 +497,7 @@ namespace SHADE } // get target node - auto targetNode = nodes.begin() + nodeIndexing.at(nodeToAddAfter); + auto targetNode = nodes.begin() + nodeIndexing.at(nodeToAddAfter) + 1; auto node = nodes.insert(targetNode, renderGraphStorage->resourceHub->Create(nodeName, renderGraphStorage, std::move(descInitParams), std::vector>(), true)); ReindexNodes ();