From 801da75d877b22d34446aa695d4c7167484772e6 Mon Sep 17 00:00:00 2001 From: Brandon Mak Date: Fri, 10 Mar 2023 18:37:28 +0800 Subject: [PATCH] Fixed shadows for animation --- Assets/Scenes/Level1.shade | 26 ++++++++++++++++-- Assets/Shaders/Silhouette_VS.glsl | 15 +++++++++- Assets/Shaders/Silhouette_VS.shshaderb | Bin 4133 -> 6053 bytes .../GlobalData/SHGraphicsPredefinedData.cpp | 6 ++-- .../src/Graphics/RenderGraph/SHSubpass.cpp | 2 +- 5 files changed, 41 insertions(+), 8 deletions(-) diff --git a/Assets/Scenes/Level1.shade b/Assets/Scenes/Level1.shade index ca74f938..7221f55d 100644 --- a/Assets/Scenes/Level1.shade +++ b/Assets/Scenes/Level1.shade @@ -2419,7 +2419,7 @@ Components: Transform Component: Translate: {x: 0, y: 0, z: 0} - Rotate: {x: -7.50001717, y: 1.39999998, z: -3.50001717} + Rotate: {x: -1.48352981, y: 1.39999998, z: -3.50001717} Scale: {x: 1, y: 1, z: 1} IsActive: true Renderable Component: @@ -6858,8 +6858,8 @@ NumberOfChildren: 0 Components: Transform Component: - Translate: {x: 2.13981342, y: 0.0490087792, z: -1.96055627} - Rotate: {x: 0, y: -1.53675354, z: 0} + Translate: {x: 2.13981342, y: 0.0490087792, z: -1.86932743} + Rotate: {x: -0, y: -1.53675354, z: 0} Scale: {x: 1, y: 1, z: 1} IsActive: true Renderable Component: @@ -8216,4 +8216,24 @@ Hovered: false Clicked: false IsActive: true + Scripts: ~ +- EID: 503 + Name: DirectionalLight + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: -0.407547206, y: 3.60323787, z: 2.62217617} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Light Component: + Position: {x: 0.300000012, y: 0, z: 0} + Type: Directional + Direction: {x: -1.15900004, y: 4.79300022, z: -0.994000018} + Color: {x: 1, y: 1, z: 1, w: 1} + Layer: 4294967295 + Strength: 0.800000012 + Casting Shadows: true + IsActive: true Scripts: ~ \ No newline at end of file diff --git a/Assets/Shaders/Silhouette_VS.glsl b/Assets/Shaders/Silhouette_VS.glsl index 1b45c333..a7fe585d 100644 --- a/Assets/Shaders/Silhouette_VS.glsl +++ b/Assets/Shaders/Silhouette_VS.glsl @@ -40,6 +40,12 @@ layout(set = 1, binding = 0) uniform CameraData mat4 projMat; } cameraData; +layout (std430, set = 2, binding = 1) buffer AnimBoneMatrices +{ + mat4 data[]; +} BoneMatrices; + + void main() { Out2.materialIndex = gl_InstanceIndex; @@ -63,6 +69,13 @@ void main() Out.normal.rgb = transposeInv * aNormal.rgb; Out.normal.rgb = normalize (Out.normal.rgb); + // 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]; + // 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); } \ No newline at end of file diff --git a/Assets/Shaders/Silhouette_VS.shshaderb b/Assets/Shaders/Silhouette_VS.shshaderb index 1bb76ec42331e3ece2cf26e15e72fbbb613e2633..6318555888e0c1f04b668c241c14b5ab73baa8b8 100644 GIT binary patch literal 6053 zcmZ9O`FmVd8OLv$WQr6h1zJ#`&ZKCotp&BzDpDF+48_m{TZ${;lDQ2RCo^F(NoieZ za9^Rg3kbOHJMJRl0x6*)(sf zoQj-|oP%sZo`-Blu0dXnEFwpdCFBJ1Z)A{vE0`Z6=@1#l#;3+6CdS6Enwp-Qo0{(( zX=PKbyq!%o^KLfX%NH~KPO13i?djG+v+6L6N42hD);NVV9JOTSGM-I)SvOBxd)v+I z_QGanPbEpRyt(XaeXV@vmfm=JBG?ddGiVjC{b zByab!nXJ1f?WHiau!CA)wO%5MxXpudR=f0*@bv!aUWw3p}Pl%dkC(&2RZj;4c=e(5NoKrhp54OYz_8P zfA6pQQ%ZfQ)cwx6p7+n8zau#F$vFq-nsU|>oLH`Zmj;V`QJZ(qwe>lhisc(<>f*IT zc|LW-b=2Lrx??@{c?b28@7sooy_iGWWyH8Q_anEt%o+Qsqn`$Ee)H(B?wyy@zM9!s z?Ge8Qto>ZfJ5<^e=q ze|6uBoONByTu035x|c9F5P4_CJkMoz@7m3y?mLq+&o<_Isq23!cmR>tU)^^o=ULU6 zcOXe}>b_$+?c>bGYxjKjF}t>$_6cUsS3c_T-ADWs zxbOR9FPm_l%Y|6{CU}PH!Mnf6ZJkaKFEPH_Roct#2PnehW56yX&Z*C^>ce z=XYTM+0OfRf9}Cy+<#&GKI*%H`69%9s(beSjR;-4zX{YY$L{+*1MzK-l4UjXnTX#8 zzXv;6L0up1o~b{b&q3BA<}lZJh`c_&)u$om@S9)`b$ueogYPM7yi!&%c*Z;egWd!xsLcc z^9vCPFKQhH zySJ$IN^rH--RN?TsA~^cu3GC=C0DKWC2+>;uf1C97`kig6SZCqw$@#U=c=xswO!2o zQsf#$|8eGP5&h$SsOuAZyAEt0PUD7-Fux43X0f&dWxw}>wYk4W!6%8FV}ieS_V9Y- zKq*W`9`_nC2f@aeKVohG%PS6T)tHx~8zUDnuK>#{j)<9L5BtzxiCBxd_4S;5oAT~k zpI0Gr(bLy}{Z@KU+{=xKKJugFonpQT@hs0re3Q}Z6s*6)wQgdTi@2M?5$8LMxM{F) z)^D7CauJt-Bd!UKxIqORN|^#HsN-Ul|;`xo5%!N$r( z><7U5Y74&)f{pbK1ot7Zv2qdnVX(g1!tWzsV+SkTN5RI*MeMy`eYN@b#XjDLxEE_O zw?5HNZPBay!PS0#4BdWukHhByuzd9ML9lW1(a(p#(a#6L(T9(NwT+f{@Dt!AB=Xn6 zpG4%NpPvF7Cm(q}4X*a{Gw5=TIIquwjdjG?d=9Lyw($Er*jRfP+!w&c%0=uK!TM?o zzb}D}wRgdN8EmXv#C`>=ueR{}D%jX+Kfi`+9n_cQXGAIf1M~JO_3C{>Mr?kpBby10FX3 delta 796 zcmX|;(MlUZ7=>rEy9p)~>Pc&Rn zonZ3@g*<@fz7OKN2!1Eo?S#XbbN(~`{xcc89hCD{>A4v#J2jgz#xhy+%v|5*>ysgN z2Xw&|=-u7yr0le5^>6ILix!Sny|G(uw*Am=1}1GXRR7sUtJQz7ixp+;ac1MN(b)9c zVJ-OL85dXGwOoE3xb~?Q)V*M2yL9UIKih@Z`flxAGw`-Ozy2+3Bgv;t58m@z?NGH3 z!B_8iIPZM7qW4sj$#M#_63=2UPn>wE*wd7Wr@e9x*kV%kQ*H~V15X2Gq`R@680)Fg zLn)Ar0~%C1H~gE<*infy2gougfobld{xhHqR2$bFqs!_$s;_cRTF)a-dI|0T-KT)Q zfcXd6sh4AZ!>Y+w9=$LcSf&D(abPA6NbA8>*MU6T>)&TLhHkFmM(e!oE388>2PQ#< z*h}~ake}!y_HV!+&ZvG2l##E@B76dt!ACM>_$QF3m3Y6{%VVVd|K@3Irr;`9*8FEc k4Rk>D6>v*q)y{ziP)3(ngCn5F)E~XZlS(W1$fs7o6FTo%h5!Hn diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/GlobalData/SHGraphicsPredefinedData.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/GlobalData/SHGraphicsPredefinedData.cpp index ae2b6f35..3f312532 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/GlobalData/SHGraphicsPredefinedData.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/GlobalData/SHGraphicsPredefinedData.cpp @@ -337,9 +337,9 @@ namespace SHADE shadowMapAnimVertexInputState.AddBinding(false, false, { SHVertexAttribute(SHAttribFormat::FLOAT_3D) }); shadowMapAnimVertexInputState.AddBinding(true, true, { SHVertexAttribute(SHAttribFormat::MAT_4D) }, 4, 4); // Transform at binding 4 - 7 (4 slots) - shadowMapAnimVertexInputState.AddBinding(false, false, { SHVertexAttribute(SHAttribFormat::UINT32_4D) }, 9, 9); // Attribute bone indices at index 5 - shadowMapAnimVertexInputState.AddBinding(false, false, { SHVertexAttribute(SHAttribFormat::FLOAT_4D) }, 10, 10); // Attribute bone weights at index 6 - shadowMapAnimVertexInputState.AddBinding(true, true, { SHVertexAttribute(SHAttribFormat::UINT32_1D) }, 11, 11); // Instance bone matrix first index at index 7 + shadowMapAnimVertexInputState.AddBinding(false, false, { SHVertexAttribute(SHAttribFormat::UINT32_4D) }, 6, 9); // Attribute bone indices at index 5 + shadowMapAnimVertexInputState.AddBinding(false, false, { SHVertexAttribute(SHAttribFormat::FLOAT_4D) }, 7, 10); // Attribute bone weights at index 6 + shadowMapAnimVertexInputState.AddBinding(true, true, { SHVertexAttribute(SHAttribFormat::UINT32_1D) }, 8, 11); // Instance bone matrix first index at index 7 //shadowMapAnimVertexInputState.AddBinding(false, false, { SHVertexAttribute(SHAttribFormat::FLOAT_3D) }); diff --git a/SHADE_Engine/src/Graphics/RenderGraph/SHSubpass.cpp b/SHADE_Engine/src/Graphics/RenderGraph/SHSubpass.cpp index 87b3fc10..7eccbc52 100644 --- a/SHADE_Engine/src/Graphics/RenderGraph/SHSubpass.cpp +++ b/SHADE_Engine/src/Graphics/RenderGraph/SHSubpass.cpp @@ -496,7 +496,7 @@ namespace SHADE { if (!dummyPipelineLayout) { - auto const& batchingSystemData = SHGraphicsPredefinedData::GetSystemData(SHGraphicsPredefinedData::SystemType::BATCHING); + auto const& batchingSystemData = SHGraphicsPredefinedData::GetSystemData(SHGraphicsPredefinedData::SystemType::BATCHING_ANIM); std::vector newLayouts = batchingSystemData.descSetLayouts; if (inputDescriptorLayout) {