diff --git a/Assets/Audio/Cinematics.bank b/Assets/Audio/Cinematics.bank new file mode 100644 index 00000000..3a46d298 Binary files /dev/null and b/Assets/Audio/Cinematics.bank differ diff --git a/Assets/Audio/Cinematics.bank.shmeta b/Assets/Audio/Cinematics.bank.shmeta new file mode 100644 index 00000000..739b926e --- /dev/null +++ b/Assets/Audio/Cinematics.bank.shmeta @@ -0,0 +1,3 @@ +Name: Cinematics +ID: 197932678 +Type: 11 diff --git a/Assets/Audio/Master.strings.bank b/Assets/Audio/Master.strings.bank index b769c07f..a8d82a33 100644 Binary files a/Assets/Audio/Master.strings.bank and b/Assets/Audio/Master.strings.bank differ diff --git a/Assets/Audio/Music.bank b/Assets/Audio/Music.bank index d3aef69c..154d8479 100644 Binary files a/Assets/Audio/Music.bank and b/Assets/Audio/Music.bank differ diff --git a/Assets/Audio/SFX.bank b/Assets/Audio/SFX.bank index 01922b43..66556fd2 100644 Binary files a/Assets/Audio/SFX.bank and b/Assets/Audio/SFX.bank differ diff --git a/Assets/Audio/UI.bank b/Assets/Audio/UI.bank index 92edfdf6..58c11ddb 100644 Binary files a/Assets/Audio/UI.bank and b/Assets/Audio/UI.bank differ diff --git a/Assets/Scenes/Level1.shade b/Assets/Scenes/Level1.shade index 7221f55d..ca74f938 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: -1.48352981, y: 1.39999998, z: -3.50001717} + Rotate: {x: -7.50001717, 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.86932743} - Rotate: {x: -0, y: -1.53675354, z: 0} + Translate: {x: 2.13981342, y: 0.0490087792, z: -1.96055627} + Rotate: {x: 0, y: -1.53675354, z: 0} Scale: {x: 1, y: 1, z: 1} IsActive: true Renderable Component: @@ -8216,24 +8216,4 @@ 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/Scripts/UI/SC_CutSceneEnd.cs b/Assets/Scripts/UI/SC_CutSceneEnd.cs index f5007443..7aa65b1f 100644 --- a/Assets/Scripts/UI/SC_CutSceneEnd.cs +++ b/Assets/Scripts/UI/SC_CutSceneEnd.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.Linq; using SHADE; - +using SHADE_Scripting.Audio; public class CutsceneEnd : Script { @@ -58,6 +58,17 @@ public class CutsceneEnd : Script { initCutscene4(); initCutscene5(); + AudioHandler.audioClipHandlers["cutsceneBGM"] = Audio.CreateAudioClip("event:/Cinematics/BGM"); + AudioHandler.audioClipHandlers["cutscenePanelSlide"] = Audio.CreateAudioClip("event:/Cinematics/panel_slide"); + + //Cutscene 4 Audio + AudioHandler.audioClipHandlers["cutscene4Run"] = Audio.CreateAudioClip("event:/Cinematics/4/1_run"); + + + //Cutscene 5 Audio + AudioHandler.audioClipHandlers["cutscene5Yay"] = Audio.CreateAudioClip("event:/Cinematics/5/2_yay"); + + AudioHandler.audioClipHandlers["cutsceneBGM"].Play(); } protected override void update() @@ -70,6 +81,11 @@ public class CutsceneEnd : Script skip = true; oldDuration = duration; duration = skipDuration; + + AudioHandler.audioClipHandlers["cutscenePanelSlide"].Stop(true); + AudioHandler.audioClipHandlers["cutscene4Run"].Stop(true); + AudioHandler.audioClipHandlers["cutscene5Yay"].Stop(true); + } if (Input.GetKeyUp(Input.KeyCode.Space) && cutscene4Done && canvas4.IsActiveSelf) @@ -90,6 +106,11 @@ public class CutsceneEnd : Script { if (canvas4.IsActiveSelf) { + if(time == 0 && !skip) + { + AudioHandler.audioClipHandlers["cutscenePanelSlide"].Play(); + AudioHandler.audioClipHandlers["cutscene4Run"].Play(); + } if (showPic4a) { if (time < duration) @@ -116,6 +137,10 @@ public class CutsceneEnd : Script if (showPic4b) { + if (time == 0 && !skip) + { + AudioHandler.audioClipHandlers["cutscenePanelSlide"].Play(); + } if (time < duration) { pic4bTran.LocalPosition = Vector3.Lerp(pic4bTran.LocalPosition, listOfCutscene4Points[1].LocalPosition, time / duration); @@ -140,6 +165,10 @@ public class CutsceneEnd : Script if (showPic4c) { + if (time == 0 && !skip) + { + AudioHandler.audioClipHandlers["cutscenePanelSlide"].Play(); + } if (time < duration) { pic4cTran.LocalPosition = Vector3.Lerp(pic4cTran.LocalPosition, listOfCutscene4Points[2].LocalPosition, time / duration); @@ -171,6 +200,10 @@ public class CutsceneEnd : Script { if (showPic5a) { + if (time == 0 && !skip) + { + AudioHandler.audioClipHandlers["cutscenePanelSlide"].Play(); + } if (time < duration) { pic5aTran.LocalPosition = Vector3.Lerp(pic5aTran.LocalPosition, listOfCutscene5Points[0].LocalPosition, time / duration); @@ -195,6 +228,11 @@ public class CutsceneEnd : Script if (showPic5b) { + if (time == 0) + { + AudioHandler.audioClipHandlers["cutscenePanelSlide"].Play(); + AudioHandler.audioClipHandlers["cutscene5Yay"].Play(); + } if (time < duration) { pic5bTran.LocalPosition = Vector3.Lerp(pic5bTran.LocalPosition, listOfCutscene5Points[1].LocalPosition, time / duration); diff --git a/Assets/Scripts/UI/SC_CutsceneIntro.cs b/Assets/Scripts/UI/SC_CutsceneIntro.cs index db393ff9..89f7061d 100644 --- a/Assets/Scripts/UI/SC_CutsceneIntro.cs +++ b/Assets/Scripts/UI/SC_CutsceneIntro.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.Linq; using SHADE; - +using SHADE_Scripting.Audio; public class CutsceneIntro : Script { @@ -87,6 +87,24 @@ public class CutsceneIntro : Script initCutscene1(); initCutscene2(); initCutscene3(); + + //Cutscene BGM + AudioHandler.audioClipHandlers["cutsceneBGM"] = Audio.CreateAudioClip("event:/Cinematics/BGM"); + AudioHandler.audioClipHandlers["cutscenePanelSlide"] = Audio.CreateAudioClip("event:/Cinematics/panel_slide"); + + //Cutscene 2 Audio + AudioHandler.audioClipHandlers["cutscene2Stomach"] = Audio.CreateAudioClip("event:/Cinematics/2/1_stomach"); + AudioHandler.audioClipHandlers["cutscene2Alert"] = Audio.CreateAudioClip("event:/Cinematics/2/2_alert"); + AudioHandler.audioClipHandlers["cutscene2Sparkle"] = Audio.CreateAudioClip("event:/Cinematics/2/3_sparkle"); + + //Cutscene 3 Audio + AudioHandler.audioClipHandlers["cutscene3Jump"] = Audio.CreateAudioClip("event:/Cinematics/3/1_jump"); + AudioHandler.audioClipHandlers["cutscene3Sparkle"] = Audio.CreateAudioClip("event:/Cinematics/3/2_sparkle"); + AudioHandler.audioClipHandlers["cutscene3Carry"] = Audio.CreateAudioClip("event:/Cinematics/3/3_carry"); + AudioHandler.audioClipHandlers["cutscene3Throw"] = Audio.CreateAudioClip("event:/Cinematics/3/4_throw"); + AudioHandler.audioClipHandlers["cutscene3Yay"] = Audio.CreateAudioClip("event:/Cinematics/3/5_yay"); + + AudioHandler.audioClipHandlers["cutsceneBGM"].Play(); } protected override void update() @@ -98,6 +116,16 @@ public class CutsceneIntro : Script if (Input.GetKeyUp(Input.KeyCode.Space) && !skip && (!cutscene1Done || !cutscene2Done || !cutscene3Done)) { skip = true; + AudioHandler.audioClipHandlers["cutscene2Stomach"].Stop(true); + AudioHandler.audioClipHandlers["cutscene2Alert"].Stop(true); + AudioHandler.audioClipHandlers["cutscene2Sparkle"].Stop(true); + AudioHandler.audioClipHandlers["cutscene3Jump"].Stop(true); + AudioHandler.audioClipHandlers["cutscene3Sparkle"].Stop(true); + AudioHandler.audioClipHandlers["cutscene3Carry"].Stop(true); + AudioHandler.audioClipHandlers["cutscene3Throw"].Stop(true); + AudioHandler.audioClipHandlers["cutscene3Yay"].Stop(true); + AudioHandler.audioClipHandlers["cutscenePanelSlide"].Stop(true); + oldDuration = duration; duration = skipDuration; } @@ -128,6 +156,10 @@ public class CutsceneIntro : Script { if (canvas1.IsActiveSelf) { + if(time == 0 && !skip) + { + AudioHandler.audioClipHandlers["cutscenePanelSlide"].Play(); + } if (showPic1a) { if (time < duration) @@ -154,6 +186,10 @@ public class CutsceneIntro : Script if (showPic1b) { + if (time == 0 && !skip) + { + AudioHandler.audioClipHandlers["cutscenePanelSlide"].Play(); + } if (time < duration) { pic1bTran.LocalPosition = Vector3.Lerp(pic1bTran.LocalPosition, listOfCutscene1Points[1].LocalPosition, time / duration); @@ -178,6 +214,10 @@ public class CutsceneIntro : Script if (showPic1c) { + if (time == 0 && !skip) + { + AudioHandler.audioClipHandlers["cutscenePanelSlide"].Play(); + } if (time < duration) { pic1cTran.LocalPosition = Vector3.Lerp(pic1cTran.LocalPosition, listOfCutscene1Points[2].LocalPosition, time / duration); @@ -209,6 +249,11 @@ public class CutsceneIntro : Script { if (showPic2a) { + if (time == 0 && !skip) + { + AudioHandler.audioClipHandlers["cutscenePanelSlide"].Play(); + AudioHandler.audioClipHandlers["cutscene2Stomach"].Play(); + } if (time < duration) { pic2aTran.LocalPosition = Vector3.Lerp(pic2aTran.LocalPosition, listOfCutscene2Points[0].LocalPosition, time / duration); @@ -233,6 +278,11 @@ public class CutsceneIntro : Script if (showPic2b) { + if(time == 0 && !skip) + { + AudioHandler.audioClipHandlers["cutscenePanelSlide"].Play(); + AudioHandler.audioClipHandlers["cutscene2Alert"].Play(); + } if (time < duration) { pic2bTran.LocalPosition = Vector3.Lerp(pic2bTran.LocalPosition, listOfCutscene2Points[1].LocalPosition, time / duration); @@ -257,6 +307,11 @@ public class CutsceneIntro : Script if (showPic2c) { + if (time == 0 && !skip) + { + AudioHandler.audioClipHandlers["cutscenePanelSlide"].Play(); + AudioHandler.audioClipHandlers["cutscene2Sparkle"].Play(); + } if (time < duration) { pic2cTran.LocalPosition = Vector3.Lerp(pic2cTran.LocalPosition, listOfCutscene2Points[2].LocalPosition, time / duration); @@ -288,6 +343,11 @@ public class CutsceneIntro : Script { if (showPic3a) { + if(time == 0 && !skip) + { + AudioHandler.audioClipHandlers["cutscenePanelSlide"].Play(); + AudioHandler.audioClipHandlers["cutscene3Jump"].Play(); + } if (time < duration) { pic3aTran.LocalPosition = Vector3.Lerp(pic3aTran.LocalPosition, listOfCutscene3Points[0].LocalPosition, time / duration); @@ -312,6 +372,11 @@ public class CutsceneIntro : Script if (showPic3b) { + if (time == 0 && !skip) + { + AudioHandler.audioClipHandlers["cutscenePanelSlide"].Play(); + AudioHandler.audioClipHandlers["cutscene3Sparkle"].Play(); + } if (time < duration) { pic3bTran.LocalPosition = Vector3.Lerp(pic3bTran.LocalPosition, listOfCutscene3Points[1].LocalPosition, time / duration); @@ -336,6 +401,11 @@ public class CutsceneIntro : Script if (showPic3c) { + if (time == 0 && !skip) + { + AudioHandler.audioClipHandlers["cutscenePanelSlide"].Play(); + AudioHandler.audioClipHandlers["cutscene3Carry"].Play(); + } if (time < duration) { pic3cTran.LocalPosition = Vector3.Lerp(pic3cTran.LocalPosition, listOfCutscene3Points[2].LocalPosition, time / duration); @@ -360,6 +430,11 @@ public class CutsceneIntro : Script if (showPic3d) { + if (time == 0 && !skip) + { + AudioHandler.audioClipHandlers["cutscenePanelSlide"].Play(); + AudioHandler.audioClipHandlers["cutscene3Throw"].Play(); + } if (time < duration) { pic3dTran.LocalPosition = Vector3.Lerp(pic3dTran.LocalPosition, listOfCutscene3Points[3].LocalPosition, time / duration); @@ -384,6 +459,11 @@ public class CutsceneIntro : Script if (showPic3e) { + if (time == 0 && !skip) + { + AudioHandler.audioClipHandlers["cutscenePanelSlide"].Play(); + AudioHandler.audioClipHandlers["cutscene3Yay"].Play(); + } if (time < duration) { pic3eTran.LocalPosition = Vector3.Lerp(pic3eTran.LocalPosition, listOfCutscene3Points[4].LocalPosition, time / duration); diff --git a/Assets/Scripts/UI/SC_Options.cs b/Assets/Scripts/UI/SC_Options.cs index bccc0317..5020af91 100644 --- a/Assets/Scripts/UI/SC_Options.cs +++ b/Assets/Scripts/UI/SC_Options.cs @@ -31,7 +31,6 @@ namespace SHADE_Scripting.UI if (mv != null) { mv.ScaledValue = Settings.masterVolume; - } if (sfx != null) { @@ -68,19 +67,19 @@ namespace SHADE_Scripting.UI if (mv != null) { - Settings.masterVolume = mv.ScaledValue * 0.01f; - SHADE.Audio.SetVCAVolume("vca:/MASTER", Settings.masterVolume); + Settings.masterVolume = mv.ScaledValue; + SHADE.Audio.SetVCAVolume("vca:/MASTER", Settings.masterVolume * 0.01f); } if (sfx != null) { - Settings.sfxVolume = sfx.ScaledValue * 0.01f; - SHADE.Audio.SetVCAVolume("vca:/SFX", Settings.sfxVolume); - SHADE.Audio.SetVCAVolume("vca:/UI", Settings.sfxVolume); + Settings.sfxVolume = sfx.ScaledValue; + SHADE.Audio.SetVCAVolume("vca:/SFX", Settings.sfxVolume * 0.01f); + SHADE.Audio.SetVCAVolume("vca:/UI", Settings.sfxVolume * 0.01f); } if (bgm != null) { - Settings.bgmVolume = bgm.ScaledValue * 0.01f; - SHADE.Audio.SetVCAVolume("vca:/MUSIC", Settings.bgmVolume); + Settings.bgmVolume = bgm.ScaledValue; + SHADE.Audio.SetVCAVolume("vca:/MUSIC", Settings.bgmVolume * 0.01f); } if (fov != null) { diff --git a/Assets/Shaders/ShadowMapAnim_VS.glsl b/Assets/Shaders/ShadowMapAnim_VS.glsl deleted file mode 100644 index 17b135e0..00000000 --- a/Assets/Shaders/ShadowMapAnim_VS.glsl +++ /dev/null @@ -1,37 +0,0 @@ -#version 450 -#extension GL_KHR_vulkan_glsl : enable - -//#include "ShaderDescriptorDefinitions.glsl" - - -layout(location = 0) in vec3 aVertexPos; -layout(location = 4) in mat4 worldTransform; -layout(location = 9) in uvec4 aBoneIndices; -layout(location = 10) in vec4 aBoneWeights; -layout(location = 11) in uint firstBoneIndex; - -layout(set = 1, binding = 0) uniform CameraData -{ - vec4 position; - mat4 vpMat; - mat4 viewMat; - mat4 projMat; -} cameraData; - -layout (std430, set = 2, binding = 1) buffer AnimBoneMatrices -{ - mat4 data[]; -} BoneMatrices; - -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]; - - // clip space for rendering - // 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 deleted file mode 100644 index 047f485b..00000000 Binary files a/Assets/Shaders/ShadowMapAnim_VS.shshaderb and /dev/null differ diff --git a/Assets/Shaders/ShadowMapAnim_VS.shshaderb.shmeta b/Assets/Shaders/ShadowMapAnim_VS.shshaderb.shmeta deleted file mode 100644 index e31f63b1..00000000 --- a/Assets/Shaders/ShadowMapAnim_VS.shshaderb.shmeta +++ /dev/null @@ -1,3 +0,0 @@ -Name: ShadowMapAnim_VS -ID: 39393999 -Type: 2 diff --git a/Assets/Shaders/ShinyHighlight_VS.glsl b/Assets/Shaders/ShinyHighlight_VS.glsl index 044a2d7a..483af1f0 100644 --- a/Assets/Shaders/ShinyHighlight_VS.glsl +++ b/Assets/Shaders/ShinyHighlight_VS.glsl @@ -7,6 +7,9 @@ layout(location = 2) in vec3 aNormal; layout(location = 3) in vec3 aTangent; layout(location = 4) in mat4 worldTransform; layout(location = 8) in uvec2 integerData; +layout(location = 9) in uvec4 aBoneIndices; +layout(location = 10) in vec4 aBoneWeights; +layout(location = 11) in uint firstBoneIndex; layout(location = 0) out struct { diff --git a/Assets/Shaders/Silhouette_VS.glsl b/Assets/Shaders/Silhouette_VS.glsl index a7fe585d..1b45c333 100644 --- a/Assets/Shaders/Silhouette_VS.glsl +++ b/Assets/Shaders/Silhouette_VS.glsl @@ -40,12 +40,6 @@ 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; @@ -69,13 +63,6 @@ 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 * boneMatrix * vec4 (aVertexPos, 1.0f); - // gl_Position = cameraData.vpMat * worldTransform * 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 63185558..1bb76ec4 100644 Binary files a/Assets/Shaders/Silhouette_VS.shshaderb and b/Assets/Shaders/Silhouette_VS.shshaderb differ diff --git a/SHADE_Engine/src/AudioSystem/SHAudioSystem.cpp b/SHADE_Engine/src/AudioSystem/SHAudioSystem.cpp index eac465ff..1bfa97ce 100644 --- a/SHADE_Engine/src/AudioSystem/SHAudioSystem.cpp +++ b/SHADE_Engine/src/AudioSystem/SHAudioSystem.cpp @@ -115,6 +115,7 @@ namespace SHADE LoadBank((AUDIO_FOLDER_PATH + "Master.bank").data()); LoadBank((AUDIO_FOLDER_PATH + "Master.strings.bank").data()); LoadBank((AUDIO_FOLDER_PATH + "Music.bank").data()); + LoadBank((AUDIO_FOLDER_PATH + "Cinematics.bank").data()); LoadBank((AUDIO_FOLDER_PATH + "SFX.bank").data()); LoadBank((AUDIO_FOLDER_PATH + "UI.bank").data()); diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHBatch.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHBatch.cpp index 4aa33de5..32a4fa76 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHBatch.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHBatch.cpp @@ -726,34 +726,16 @@ namespace SHADE cmdBuffer->BindVertexBuffer(SHGraphicsConstants::VertexBufferBindings::BONE_MATRIX_FIRST_INDEX, transformDataBuffer[frameIndex], 0); } - if (IsAnimated()) + auto const& descMappings = SHGraphicsPredefinedData::GetMappings(SHGraphicsPredefinedData::SystemType::BATCHING); + if (instanceDataDescSet[frameIndex]) { - 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->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/Batching/SHSuperBatch.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHSuperBatch.cpp index 5a2a079c..f8298716 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHSuperBatch.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHSuperBatch.cpp @@ -17,7 +17,6 @@ of DigiPen Institute of Technology is prohibited. #include "Graphics/MiddleEnd/Interface/SHMaterialInstance.h" #include "Graphics/MiddleEnd/Interface/SHRenderable.h" #include "Graphics/Descriptors/SHVkDescriptorPool.h" -#include "Graphics/Commands/SHVkCommandBuffer.h" namespace SHADE { @@ -109,19 +108,11 @@ namespace SHADE } } - void SHSuperBatch::Draw(Handle cmdBuffer, uint32_t frameIndex, bool bindBatchPipeline /*= true*/, Handle nonAnimPipeline/* = {}*/, Handle animPipeline/* = {}*/) noexcept + void SHSuperBatch::Draw(Handle cmdBuffer, uint32_t frameIndex, bool bindBatchPipeline /*= true*/) noexcept { // Build all batches for (auto& batch : batches) { - if (!bindBatchPipeline) - { - if (batch.IsAnimated()) - cmdBuffer->BindPipeline(animPipeline); - else - cmdBuffer->BindPipeline(nonAnimPipeline); - } - batch.Draw(cmdBuffer, frameIndex, bindBatchPipeline); } } diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHSuperBatch.h b/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHSuperBatch.h index 3ef9fc5e..4d831b9c 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHSuperBatch.h +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Batching/SHSuperBatch.h @@ -57,7 +57,7 @@ namespace SHADE void Clear() noexcept; void UpdateBuffers(uint32_t frameIndex, Handle descPool); void Build(Handle device, Handle descPool, uint32_t frameIndex) noexcept; - void Draw(Handle cmdBuffer, uint32_t frameIndex, bool bindBatchPipeline = true, Handle nonAnimPipeline = {}, Handle animPipeline = {}) noexcept; + void Draw(Handle cmdBuffer, uint32_t frameIndex, bool bindBatchPipeline = true) noexcept; /*-----------------------------------------------------------------------------*/ /* Getter Functions */ diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/GlobalData/SHGraphicsPredefinedData.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/GlobalData/SHGraphicsPredefinedData.cpp index 76d34ff7..91ec0cea 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/GlobalData/SHGraphicsPredefinedData.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/GlobalData/SHGraphicsPredefinedData.cpp @@ -14,7 +14,6 @@ namespace SHADE std::vector> SHGraphicsPredefinedData::predefinedLayouts; SHVertexInputState SHGraphicsPredefinedData::defaultVertexInputState; SHVertexInputState SHGraphicsPredefinedData::shadowMapVertexInputState; - SHVertexInputState SHGraphicsPredefinedData::shadowMapAnimVertexInputState; std::vector SHGraphicsPredefinedData::perSystemData; @@ -37,8 +36,7 @@ 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 ({ @@ -335,17 +333,6 @@ namespace SHADE shadowMapVertexInputState.AddBinding(false, false, { SHVertexAttribute(SHAttribFormat::FLOAT_3D)}); shadowMapVertexInputState.AddBinding(true, true, { SHVertexAttribute(SHAttribFormat::MAT_4D) }, 4, 4); // Transform at binding 4 - 7 (4 slots) - - 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) }, 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) }); - //shadowMapAnimVertexInputState.AddBinding(true, true, { SHVertexAttribute(SHAttribFormat::MAT_4D) }, 4, 4); // Transform at binding 4 - 7 (4 slots) - } void SHGraphicsPredefinedData::Init(Handle logicalDevice) noexcept @@ -381,11 +368,6 @@ namespace SHADE return shadowMapVertexInputState; } - SHVertexInputState const& SHGraphicsPredefinedData::GetShadowMapAnimViState(void) noexcept - { - return shadowMapAnimVertexInputState; - } - SHGraphicsPredefinedData::PerSystem const& SHGraphicsPredefinedData::GetSystemData(SystemType systemType) noexcept { return perSystemData[static_cast(systemType)]; diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/GlobalData/SHGraphicsPredefinedData.h b/SHADE_Engine/src/Graphics/MiddleEnd/GlobalData/SHGraphicsPredefinedData.h index 051dce0d..4fbf06c1 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/GlobalData/SHGraphicsPredefinedData.h +++ b/SHADE_Engine/src/Graphics/MiddleEnd/GlobalData/SHGraphicsPredefinedData.h @@ -67,9 +67,6 @@ namespace SHADE //! vertex input state for shadow mapping static SHVertexInputState shadowMapVertexInputState; - //! vertex input state for shadow mapping - static SHVertexInputState shadowMapAnimVertexInputState; - //! Predefined data for each type of system static std::vector perSystemData; @@ -104,7 +101,6 @@ namespace SHADE static std::vector> GetPredefinedDescSetLayouts (SHGraphicsPredefinedData::PredefinedDescSetLayoutTypes types) noexcept; static SHVertexInputState const& GetDefaultViState (void) noexcept; static SHVertexInputState const& GetShadowMapViState (void) noexcept; - static SHVertexInputState const& GetShadowMapAnimViState (void) noexcept; static PerSystem const& GetSystemData (SystemType systemType) noexcept; static SHDescriptorMappings::MapType const& GetMappings (SystemType systemType) noexcept; //static PerSystem const& GetBatchingSystemData(void) noexcept; diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.cpp index 69aa4188..bc50d0a7 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.cpp @@ -128,9 +128,8 @@ namespace SHADE SHFreetypeInstance::Init(); - //SHAssetManager::CompileAsset("../../Assets/Shaders/DeferredComposite_CS.glsl", false); - //SHAssetManager::CompileAsset("../../Assets/Shaders/ShadowMap_VS.glsl", false); - //SHAssetManager::CompileAsset("../../Assets/Shaders/ShadowMapAnim_VS.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); //SHAssetManager::CompileAsset("../../Assets/Shaders/SSAOBlur_CS.glsl", false); @@ -146,25 +145,24 @@ namespace SHADE //SHAssetManager::CompileAsset("../../Assets/Shaders/Anim_VS.glsl", false); // Load Built In Shaders - static constexpr AssetID VS_DEFAULT = 39210065; defaultVertShader = SHResourceManager::LoadOrGet(VS_DEFAULT); - static constexpr AssetID VS_ANIM = 47911992; animtVertShader = SHResourceManager::LoadOrGet(VS_ANIM); - static constexpr AssetID FS_DEFAULT = 46377769; defaultFragShader = SHResourceManager::LoadOrGet(FS_DEFAULT); - static constexpr AssetID VS_DEBUG = 48002439; debugVertShader = SHResourceManager::LoadOrGet(VS_DEBUG); - static constexpr AssetID FS_DEBUG = 36671027; debugFragShader = SHResourceManager::LoadOrGet(FS_DEBUG); - static constexpr AssetID VS_DEBUG_MESH = 42127043; debugMeshVertShader = SHResourceManager::LoadOrGet(VS_DEBUG_MESH); - static constexpr AssetID CS_COMPOSITE = 45072428; deferredCompositeShader = SHResourceManager::LoadOrGet(CS_COMPOSITE); - static constexpr AssetID SSAO = 38430899; ssaoShader = SHResourceManager::LoadOrGet(SSAO); - static constexpr AssetID SSAO_BLUR = 39760835; ssaoBlurShader = SHResourceManager::LoadOrGet(SSAO_BLUR); - static constexpr AssetID TEXT_VS = 39816727; textVS = SHResourceManager::LoadOrGet(TEXT_VS); - static constexpr AssetID TEXT_FS = 38024754; textFS = SHResourceManager::LoadOrGet(TEXT_FS); - static constexpr AssetID RENDER_SC_VS = 48082949; renderToSwapchainVS = SHResourceManager::LoadOrGet(RENDER_SC_VS); - static constexpr AssetID RENDER_SC_FS = 36869006; renderToSwapchainFS = SHResourceManager::LoadOrGet(RENDER_SC_FS); - static constexpr AssetID SHADOW_MAP_VS = 44646107; shadowMapVS = SHResourceManager::LoadOrGet(SHADOW_MAP_VS); - static constexpr AssetID SHADOW_MAP_ANIM_VS = 39393999; shadowMapAnimVS = SHResourceManager::LoadOrGet(SHADOW_MAP_ANIM_VS); - static constexpr AssetID SHADOW_MAP_FS = 45925790; shadowMapFS = SHResourceManager::LoadOrGet(SHADOW_MAP_FS); - static constexpr AssetID TRAJECTORY_VS = 41042628; trajectoryVS = SHResourceManager::LoadOrGet(TRAJECTORY_VS); - static constexpr AssetID TRAJECTORY_FS = 45635685; trajectoryFS = SHResourceManager::LoadOrGet(TRAJECTORY_FS); - static constexpr AssetID SHADOW_BLUR_CS = 38004013; shadowMapBlurCS = SHResourceManager::LoadOrGet(SHADOW_BLUR_CS); + static constexpr AssetID VS_DEFAULT = 39210065; defaultVertShader = SHResourceManager::LoadOrGet(VS_DEFAULT); + static constexpr AssetID VS_ANIM = 47911992; animtVertShader = SHResourceManager::LoadOrGet(VS_ANIM); + static constexpr AssetID FS_DEFAULT = 46377769; defaultFragShader = SHResourceManager::LoadOrGet(FS_DEFAULT); + static constexpr AssetID VS_DEBUG = 48002439; debugVertShader = SHResourceManager::LoadOrGet(VS_DEBUG); + static constexpr AssetID FS_DEBUG = 36671027; debugFragShader = SHResourceManager::LoadOrGet(FS_DEBUG); + static constexpr AssetID VS_DEBUG_MESH = 42127043; debugMeshVertShader = SHResourceManager::LoadOrGet(VS_DEBUG_MESH); + static constexpr AssetID CS_COMPOSITE = 45072428; deferredCompositeShader = SHResourceManager::LoadOrGet(CS_COMPOSITE); + static constexpr AssetID SSAO = 38430899; ssaoShader = SHResourceManager::LoadOrGet(SSAO); + static constexpr AssetID SSAO_BLUR = 39760835; ssaoBlurShader = SHResourceManager::LoadOrGet(SSAO_BLUR); + static constexpr AssetID TEXT_VS = 39816727; textVS = SHResourceManager::LoadOrGet(TEXT_VS); + static constexpr AssetID TEXT_FS = 38024754; textFS = SHResourceManager::LoadOrGet(TEXT_FS); + static constexpr AssetID RENDER_SC_VS = 48082949; renderToSwapchainVS = SHResourceManager::LoadOrGet(RENDER_SC_VS); + static constexpr AssetID RENDER_SC_FS = 36869006; renderToSwapchainFS = SHResourceManager::LoadOrGet(RENDER_SC_FS); + static constexpr AssetID SHADOW_MAP_VS = 44646107; shadowMapVS = SHResourceManager::LoadOrGet(SHADOW_MAP_VS); + static constexpr AssetID SHADOW_MAP_FS = 45925790; shadowMapFS = SHResourceManager::LoadOrGet(SHADOW_MAP_FS); + static constexpr AssetID TRAJECTORY_VS = 41042628; trajectoryVS = SHResourceManager::LoadOrGet(TRAJECTORY_VS); + static constexpr AssetID TRAJECTORY_FS = 45635685; trajectoryFS = SHResourceManager::LoadOrGet(TRAJECTORY_FS); + static constexpr AssetID SHADOW_BLUR_CS = 38004013; shadowMapBlurCS = SHResourceManager::LoadOrGet(SHADOW_BLUR_CS); } @@ -921,19 +919,10 @@ namespace SHADE SHGraphicsPredefinedData::SystemType::BATCHING, SHGraphicsPredefinedData::GetShadowMapViState(), rasterState ); - - tempLibrary.CreateGraphicsPipelines - ( - { shadowMapAnimVS, shadowMapFS }, shadowMapNode->GetRenderpass(), shadowMapDrawSubpass, - SHGraphicsPredefinedData::SystemType::BATCHING_ANIM, - SHGraphicsPredefinedData::GetShadowMapAnimViState(), rasterState - ); - shadowMapPipeline = tempLibrary.GetGraphicsPipeline({ shadowMapVS, shadowMapFS, shadowMapDrawSubpass }); - shadowMapAnimPipeline = tempLibrary.GetGraphicsPipeline({ shadowMapAnimVS, shadowMapFS, shadowMapDrawSubpass }); } - shadowMapDrawSubpass->AddCompanionSubpass(gBufferWriteSubpass, shadowMapPipeline, shadowMapAnimPipeline); // set companion subpass and pipeline - shadowMapDrawSubpass->AddCompanionSubpass(gBufferWriteVfxSubpass, shadowMapPipeline, shadowMapAnimPipeline); // set companion subpass and pipeline + shadowMapDrawSubpass->AddCompanionSubpass(gBufferWriteSubpass, shadowMapPipeline); // set companion subpass and pipeline + shadowMapDrawSubpass->AddCompanionSubpass(gBufferWriteVfxSubpass, shadowMapPipeline); // set companion subpass and pipeline // add the shadow map and the blurred version to the lighting system uint32_t const NEW_SHADOW_MAP_INDEX = lightingSubSystem->AddShadowMap(renderGraph->GetRenderGraphResource(shadowMapBlurredResourceName), EVENT_DATA->lightEntity); diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.h b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.h index e674efb6..68752a6e 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.h +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.h @@ -479,7 +479,6 @@ namespace SHADE Handle renderToSwapchainVS; Handle renderToSwapchainFS; Handle shadowMapVS; - Handle shadowMapAnimVS; Handle shadowMapFS; Handle trajectoryVS; Handle trajectoryFS; @@ -500,7 +499,6 @@ namespace SHADE Handle debugDrawFilledPipeline; Handle debugDrawFilledDepthPipeline; Handle shadowMapPipeline; // initialized only when a shadow map is needed - Handle shadowMapAnimPipeline; // initialized only when a shadow map is needed Handle genericAndTextureDescSet; diff --git a/SHADE_Engine/src/Graphics/RenderGraph/SHRenderGraph.cpp b/SHADE_Engine/src/Graphics/RenderGraph/SHRenderGraph.cpp index b9ca9d56..c44c9464 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) + 1; + auto targetNode = nodes.begin() + nodeIndexing.at(nodeToAddAfter); auto node = nodes.insert(targetNode, renderGraphStorage->resourceHub->Create(nodeName, renderGraphStorage, std::move(descInitParams), std::vector>(), true)); ReindexNodes (); diff --git a/SHADE_Engine/src/Graphics/RenderGraph/SHSubpass.cpp b/SHADE_Engine/src/Graphics/RenderGraph/SHSubpass.cpp index 7eccbc52..ca13155d 100644 --- a/SHADE_Engine/src/Graphics/RenderGraph/SHSubpass.cpp +++ b/SHADE_Engine/src/Graphics/RenderGraph/SHSubpass.cpp @@ -280,8 +280,8 @@ namespace SHADE for (auto& companion : companionSubpasses) { // if not bind pipeline for companion and and execute draw command - //commandBuffer->BindPipeline(companion.nonAnimPipeline); - companion.subpass->superBatch->Draw(commandBuffer, frameIndex, false, companion.nonAnimPipeline, companion.animPipeline); + commandBuffer->BindPipeline(companion.pipeline); + companion.subpass->superBatch->Draw(commandBuffer, frameIndex, false); } } } @@ -496,7 +496,7 @@ namespace SHADE { if (!dummyPipelineLayout) { - auto const& batchingSystemData = SHGraphicsPredefinedData::GetSystemData(SHGraphicsPredefinedData::SystemType::BATCHING_ANIM); + auto const& batchingSystemData = SHGraphicsPredefinedData::GetSystemData(SHGraphicsPredefinedData::SystemType::BATCHING); std::vector newLayouts = batchingSystemData.descSetLayouts; if (inputDescriptorLayout) { @@ -528,9 +528,9 @@ namespace SHADE subpassIndex = index; } - void SHSubpass::AddCompanionSubpass(Handle companion, Handle nonAnimPipeline, Handle animPipeline) noexcept + void SHSubpass::AddCompanionSubpass(Handle companion, Handle pipeline) noexcept { - companionSubpasses.push_back(CompanionSubpass{companion, nonAnimPipeline, animPipeline}); + companionSubpasses.push_back(CompanionSubpass{companion, pipeline}); //companionSubpass.companion = companion; //companionSubpass.pipeline = pipeline; } diff --git a/SHADE_Engine/src/Graphics/RenderGraph/SHSubpass.h b/SHADE_Engine/src/Graphics/RenderGraph/SHSubpass.h index f13e0871..7f843773 100644 --- a/SHADE_Engine/src/Graphics/RenderGraph/SHSubpass.h +++ b/SHADE_Engine/src/Graphics/RenderGraph/SHSubpass.h @@ -35,11 +35,8 @@ namespace SHADE // subpass whose data will be borrowed to draw Handle subpass; - // Pipeline that will be used for all the draw calls from all batches (that render without animation data) of the companion subpass - Handle nonAnimPipeline; - - // Pipeline that will be used for all the draw calls from all batches (that render with animation data) of the companion subpass - Handle animPipeline; + // Pipeline that will be used for all the draw calls from all batches of the companion subpass + Handle pipeline; }; private: @@ -170,7 +167,7 @@ namespace SHADE /*-----------------------------------------------------------------------*/ /* PUBLIC SETTERS AND GETTERS */ /*-----------------------------------------------------------------------*/ - void AddCompanionSubpass (Handle companion, Handle nonAnimPipeline, Handle animPipeline) noexcept; + void AddCompanionSubpass (Handle companion, Handle pipeline) noexcept; Handle GetParentNode(void) const noexcept; SHSubPassIndex GetIndex() const noexcept;