From 9d6062d96fb80d5fbed7550aecc909c278b585ba Mon Sep 17 00:00:00 2001 From: dmcdiarmid-ly <63674186+dmcdiarmid-ly@users.noreply.github.com> Date: Wed, 9 Feb 2022 16:18:43 -0700 Subject: [PATCH 1/5] Added an RPISystemInterface method to set the application-wide MSAA state The Editor will now properly apply the MSAA state from MainRenderPipeline.azasset Corrected a race condition with the cubemap baking pipeline Signed-off-by: dmcdiarmid-ly <63674186+dmcdiarmid-ly@users.noreply.github.com> --- .../Code/Source/BootstrapSystemComponent.cpp | 6 ++--- .../Passes/EnvironmentCubeMapDepthMSAA.pass | 6 ++--- .../DiffuseProbeGridRender.precompiledshader | 18 +++++++++++++ ...begridrender-nomsaa_dx12_0.azshadervariant | Bin 0 -> 29668 bytes ...begridrender-nomsaa_null_0.azshadervariant | Bin 0 -> 589 bytes ...gridrender-nomsaa_vulkan_0.azshadervariant | Bin 0 -> 24013 bytes .../diffuseprobegridrender.azshader | Bin 219075 -> 436794 bytes ...fuseprobegridrender_dx12_0.azshadervariant | Bin 30575 -> 30575 bytes ...fuseprobegridrender_null_0.azshadervariant | Bin 589 -> 589 bytes ...seprobegridrender_vulkan_0.azshadervariant | Bin 24081 -> 24081 bytes .../ReflectionProbe/ReflectionProbe.cpp | 16 ++++++++---- .../Source/ReflectionProbe/ReflectionProbe.h | 1 + .../ReflectionProbeFeatureProcessor.cpp | 12 +++++++++ .../ReflectionProbeFeatureProcessor.h | 1 + .../Code/Include/Atom/RPI.Public/RPISystem.h | 5 ++++ .../Atom/RPI.Public/RPISystemInterface.h | 4 +++ .../RPI/Code/Source/RPI.Public/RPISystem.cpp | 24 ++++++++++++++++++ .../PreviewRenderer/PreviewRenderer.cpp | 4 +-- 18 files changed, 82 insertions(+), 15 deletions(-) create mode 100644 Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender-nomsaa_dx12_0.azshadervariant create mode 100644 Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender-nomsaa_null_0.azshadervariant create mode 100644 Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender-nomsaa_vulkan_0.azshadervariant diff --git a/Gems/Atom/Bootstrap/Code/Source/BootstrapSystemComponent.cpp b/Gems/Atom/Bootstrap/Code/Source/BootstrapSystemComponent.cpp index ef03a839d7..60ca6ff429 100644 --- a/Gems/Atom/Bootstrap/Code/Source/BootstrapSystemComponent.cpp +++ b/Gems/Atom/Bootstrap/Code/Source/BootstrapSystemComponent.cpp @@ -318,10 +318,8 @@ namespace AZ RPI::RenderPipelineDescriptor renderPipelineDescriptor = *RPI::GetDataFromAnyAsset(pipelineAsset); renderPipelineDescriptor.m_name = AZStd::string::format("%s_%i", renderPipelineDescriptor.m_name.c_str(), viewportContext->GetId()); - // Make sure non-msaa super variant is used for non-msaa pipeline - bool isNonMsaaPipeline = (renderPipelineDescriptor.m_renderSettings.m_multisampleState.m_samples == 1); - const char* supervariantName = isNonMsaaPipeline ? AZ::RPI::NoMsaaSupervariantName : ""; - AZ::RPI::ShaderSystemInterface::Get()->SetSupervariantName(AZ::Name(supervariantName)); + // The default pipeline determines the initial MSAA state for the application + AZ::RPI::RPISystemInterface::Get()->SetApplicationMultisampleState(renderPipelineDescriptor.m_renderSettings.m_multisampleState); if (!scene->GetRenderPipeline(AZ::Name(renderPipelineDescriptor.m_name))) { diff --git a/Gems/Atom/Feature/Common/Assets/Passes/EnvironmentCubeMapDepthMSAA.pass b/Gems/Atom/Feature/Common/Assets/Passes/EnvironmentCubeMapDepthMSAA.pass index 5abbe7d62d..cb94e75389 100644 --- a/Gems/Atom/Feature/Common/Assets/Passes/EnvironmentCubeMapDepthMSAA.pass +++ b/Gems/Atom/Feature/Common/Assets/Passes/EnvironmentCubeMapDepthMSAA.pass @@ -34,11 +34,11 @@ "Attachment": "Output" } }, + "MultisampleSource": { + "Pass": "Pipeline" + }, "ImageDescriptor": { "Format": "D32_FLOAT_S8X24_UINT", - "MultisampleState": { - "samples": 4 - }, "SharedQueueMask": "Graphics" } } diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseProbeGridRender.precompiledshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseProbeGridRender.precompiledshader index 97c58091a2..613714b0b6 100644 --- a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseProbeGridRender.precompiledshader +++ b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseProbeGridRender.precompiledshader @@ -29,6 +29,24 @@ "RootShaderVariantAssetFileName": "diffuseprobegridrender_null_0.azshadervariant" } ] + }, + { + "Name": "NoMSAA", + "RootShaderVariantAssets": + [ + { + "APIName": "dx12", + "RootShaderVariantAssetFileName": "diffuseprobegridrender-nomsaa_dx12_0.azshadervariant" + }, + { + "APIName": "vulkan", + "RootShaderVariantAssetFileName": "diffuseprobegridrender-nomsaa_vulkan_0.azshadervariant" + }, + { + "APIName": "null", + "RootShaderVariantAssetFileName": "diffuseprobegridrender-nomsaa_null_0.azshadervariant" + } + ] } ] } diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender-nomsaa_dx12_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender-nomsaa_dx12_0.azshadervariant new file mode 100644 index 0000000000000000000000000000000000000000..31ca52ba02b7f81f6bbe2fbb57f4f21bf897008b GIT binary patch literal 29668 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 z zv_vP&z+9>E;BEjffbNFV;Qp7*5MCf%uJ?9~OXfj7_<=%nn?`EVR66n(c*gbWG!>NJ zI4Hl()pGFp2P-V_Rp&ZIC%2bzur0`T6fL5i55u%rA{(N`k2VA>o|fT&0w|7grDdc> z$X^cjykgV!anJYxvdl`~MW+AeEm}w;ZB)BB4%wJdmZ<*M??J7A9ttlQB z#<}(~q}I(Jf1iJL`5_8Ar#(f!CaGS=;ji$Uzrs(W(wgnl@!`|)6yn>&N#ms6Fe$*M zF&oEjRbQ- literal 0 HcmV?d00001 diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender-nomsaa_null_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender-nomsaa_null_0.azshadervariant new file mode 100644 index 0000000000000000000000000000000000000000..299490c1bd28c50ad68e8f24e11146bb75b6f6f3 GIT binary patch literal 589 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 Lqv`BVDEI#XoPY6L literal 0 HcmV?d00001 diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender.azshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender.azshader index 4676c42e8da1743b54f491e17ccc3347aa0fb277..16db49af1ba018c19dc432a74e38029272a65a5a 100644 GIT binary patch delta 996 zcmX@So_E(3sSR2zEZb6=syFMgRJyT+d8ZbZmu_C`wTc7Ajt!P?fU(zlad2$zx_yEP zCJ-Aesk8l$8q+amjwS4ye`hF3E!}R<$Ji${c|MC6W8CDx0ueU9eBWS4$IYi$?z+OX zt@Y|-nl2#DTr*krCfD?HtxOUip5Nq#0G3VH>sUB~id>#(=-x`0yfJ7QOb@C%h||Aa z@CV}=Y>wsnci>vP__0kO$EFA|I!vD$&aA!tyaHn~EDW~ueqiL_nC_6zxCrWk=|BnSNjmqv-SiQ6`Sb{~xn%3YntLu_knRgy#AqzjhJ+udVr9$h zyB|+)W!P@x#vCp>w@}kb;p^PY`DTN;u=S0`6VQ3(~W6GH1#_z01S^ zjRSuhCU_i7Uh5@0y+DjvW&0j(=9BD`w+6*e&u?OKhK4IhdOJ}1pZ50F?MxqFVUMC~ zA}kVMijU}XeA=?aslwQ97AT;b1hIwjG{)`Oc1-RrNEX4};g2`vZc(v)$u)h-L12(4 jlj>IDOy1ro%nVP{NWN<76*uhFS?>VyRfHfUN$UXsAzyR5 delta 336 zcmdmWMe6W+-VItTELok8Pi@v?sdQsYDU66JtK9xDjj@kuv%s|~*2!Cg7QsX(<}=DS zz&J1^P8={1ptPjUb^~YTW6T_H@?|Hl$>{#J-JXxJPiXq8Viu?E&bCa-a2p(Xm^nC* z44)1Zu-|?mpYf~q_JAEsuY+Nx0>v+IK{;?mx3r=5_}p?@v%K^5yX|$_Oc8?9!y=fq zw*xIph1oOx;ayh8?FCm^{XyQzW1TL1h-DqjXrLT7%s=P~w_o#Oy~2c~Qd(#G=}K0h d*H*eKC*1b?`e=K-HdDCZ^bdWk+N=y9005llg7p9Z diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender_dx12_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender_dx12_0.azshadervariant index 9bf8e7f53fcde322f5ff225146544c70979e16c0..23b0c807bf9bc68cb6ac3b7e255aea8829905ac4 100644 GIT binary patch delta 17 YcmaF=j`96F#tj+e?AubBsu>s<08`=zY5)KL delta 17 ZcmaF=j`96F#tj+e>{*?UPcbks0033Z2lD^` diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender_null_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender_null_0.azshadervariant index 98402384db1e019e435ea7756543150375580091..299490c1bd28c50ad68e8f24e11146bb75b6f6f3 100644 GIT binary patch delta 15 WcmX@ha+YO-8x#Asl%{G11_l5vK?Jz~ delta 15 WcmX@ha+YO-8xwn0=i^fh3=9A-ECoUU diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender_vulkan_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender_vulkan_0.azshadervariant index 5caf3084766a8bd2be7d63394f0257af6e304dd6..447f0712d32462d676490ea7496c0233fd1b1b3c 100644 GIT binary patch delta 17 YcmbQZhjHQ_#tmF??AubBsu>s<06s|t(*OVf delta 17 ZcmbQZhjHQ_#tmF?>{*?UPcbks002NV23!CD diff --git a/Gems/Atom/Feature/Common/Code/Source/ReflectionProbe/ReflectionProbe.cpp b/Gems/Atom/Feature/Common/Code/Source/ReflectionProbe/ReflectionProbe.cpp index f5aaec4faa..539531b5a0 100644 --- a/Gems/Atom/Feature/Common/Code/Source/ReflectionProbe/ReflectionProbe.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/ReflectionProbe/ReflectionProbe.cpp @@ -115,10 +115,6 @@ namespace AZ // all faces of the cubemap have been rendered, invoke the callback m_callback(m_environmentCubeMapPass->GetTextureData(), m_environmentCubeMapPass->GetTextureFormat()); - // remove the pipeline - m_scene->RemoveRenderPipeline(m_environmentCubeMapPipelineId); - m_environmentCubeMapPass = nullptr; - // restore exposures sceneSrg->SetConstant(m_globalIblExposureConstantIndex, m_previousGlobalIblExposure); sceneSrg->SetConstant(m_skyBoxExposureConstantIndex, m_previousSkyBoxExposure); @@ -223,6 +219,16 @@ namespace AZ } } + void ReflectionProbe::OnRenderEnd() + { + if (m_environmentCubeMapPass && m_environmentCubeMapPass->IsFinished()) + { + // remove the cubemap pipeline + // Note: this must be done here (not in Simulate) to avoid a race condition with other feature processors + m_scene->RemoveRenderPipeline(m_environmentCubeMapPipelineId); + m_environmentCubeMapPass = nullptr; + } + } void ReflectionProbe::SetTransform(const AZ::Transform& transform) { @@ -282,7 +288,7 @@ namespace AZ AZ::RPI::RenderPipelineDescriptor environmentCubeMapPipelineDesc; environmentCubeMapPipelineDesc.m_mainViewTagName = "MainCamera"; - environmentCubeMapPipelineDesc.m_renderSettings.m_multisampleState.m_samples = 4; + environmentCubeMapPipelineDesc.m_renderSettings.m_multisampleState = RPI::RPISystemInterface::Get()->GetApplicationMultisampleState(); environmentCubeMapPipelineDesc.m_renderSettings.m_size.m_width = RPI::EnvironmentCubeMapPass::CubeMapFaceSize; environmentCubeMapPipelineDesc.m_renderSettings.m_size.m_height = RPI::EnvironmentCubeMapPass::CubeMapFaceSize; diff --git a/Gems/Atom/Feature/Common/Code/Source/ReflectionProbe/ReflectionProbe.h b/Gems/Atom/Feature/Common/Code/Source/ReflectionProbe/ReflectionProbe.h index 17ef54367b..6ec9368167 100644 --- a/Gems/Atom/Feature/Common/Code/Source/ReflectionProbe/ReflectionProbe.h +++ b/Gems/Atom/Feature/Common/Code/Source/ReflectionProbe/ReflectionProbe.h @@ -75,6 +75,7 @@ namespace AZ void Init(RPI::Scene* scene, ReflectionRenderData* reflectionRenderData); void Simulate(uint32_t probeIndex); + void OnRenderEnd(); const Vector3& GetPosition() const { return m_transform.GetTranslation(); } const AZ::Transform& GetTransform() const { return m_transform; } diff --git a/Gems/Atom/Feature/Common/Code/Source/ReflectionProbe/ReflectionProbeFeatureProcessor.cpp b/Gems/Atom/Feature/Common/Code/Source/ReflectionProbe/ReflectionProbeFeatureProcessor.cpp index 155a159447..cfe807610b 100644 --- a/Gems/Atom/Feature/Common/Code/Source/ReflectionProbe/ReflectionProbeFeatureProcessor.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/ReflectionProbe/ReflectionProbeFeatureProcessor.cpp @@ -166,6 +166,18 @@ namespace AZ } } + void ReflectionProbeFeatureProcessor::OnRenderEnd() + { + // call OnRenderEnd on all reflection probes + for (uint32_t probeIndex = 0; probeIndex < m_reflectionProbes.size(); ++probeIndex) + { + AZStd::shared_ptr& reflectionProbe = m_reflectionProbes[probeIndex]; + AZ_Assert(reflectionProbe.use_count() > 1, "ReflectionProbe found with no corresponding owner, ensure that RemoveProbe() is called before releasing probe handles"); + + reflectionProbe->OnRenderEnd(); + } + } + ReflectionProbeHandle ReflectionProbeFeatureProcessor::AddProbe(const AZ::Transform& transform, bool useParallaxCorrection) { AZStd::shared_ptr reflectionProbe = AZStd::make_shared(); diff --git a/Gems/Atom/Feature/Common/Code/Source/ReflectionProbe/ReflectionProbeFeatureProcessor.h b/Gems/Atom/Feature/Common/Code/Source/ReflectionProbe/ReflectionProbeFeatureProcessor.h index ded36f5496..92fb3fe604 100644 --- a/Gems/Atom/Feature/Common/Code/Source/ReflectionProbe/ReflectionProbeFeatureProcessor.h +++ b/Gems/Atom/Feature/Common/Code/Source/ReflectionProbe/ReflectionProbeFeatureProcessor.h @@ -46,6 +46,7 @@ namespace AZ void Activate() override; void Deactivate() override; void Simulate(const FeatureProcessor::SimulatePacket& packet) override; + void OnRenderEnd() override; // find the reflection probe volumes that contain the position using ReflectionProbeVector = AZStd::vector>; diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/RPISystem.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/RPISystem.h index 57f595ccba..dbf70fb0cc 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/RPISystem.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/RPISystem.h @@ -86,6 +86,8 @@ namespace AZ const RPISystemDescriptor& GetDescriptor() const override; Name GetRenderApiName() const override; uint64_t GetCurrentTick() const override; + void SetApplicationMultisampleState(const RHI::MultisampleState& multisampleState) override; + const RHI::MultisampleState& GetApplicationMultisampleState() const override; // AZ::Debug::TraceMessageBus::Handler overrides... bool OnPreAssert(const char* fileName, int line, const char* func, const char* message) override; @@ -136,6 +138,9 @@ namespace AZ bool m_systemAssetsInitialized = false; uint64_t m_renderTick = 0; + + // Application multisample state + RHI::MultisampleState m_multisampleState; }; } // namespace RPI diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/RPISystemInterface.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/RPISystemInterface.h index 693185b6d2..7853e8f51e 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/RPISystemInterface.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/RPISystemInterface.h @@ -90,6 +90,10 @@ namespace AZ //! Get the index of current render tick virtual uint64_t GetCurrentTick() const = 0; + + //! Application multisample state + virtual void SetApplicationMultisampleState(const RHI::MultisampleState& multisampleState) = 0; + virtual const RHI::MultisampleState& GetApplicationMultisampleState() const = 0; }; } // namespace RPI diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/RPISystem.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/RPISystem.cpp index 3416b2895d..57bef2c7e5 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/RPISystem.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/RPISystem.cpp @@ -434,5 +434,29 @@ namespace AZ return m_renderTick; } + void RPISystem::SetApplicationMultisampleState(const RHI::MultisampleState& multisampleState) + { + m_multisampleState = multisampleState; + + bool isNonMsaaPipeline = (m_multisampleState.m_samples == 1); + const char* supervariantName = isNonMsaaPipeline ? AZ::RPI::NoMsaaSupervariantName : ""; + AZ::RPI::ShaderSystemInterface::Get()->SetSupervariantName(AZ::Name(supervariantName)); + + // reinitialize pipelines for all scenes + for (auto& scene : m_scenes) + { + for (auto& renderPipeline : scene->GetRenderPipelines()) + { + renderPipeline->GetRenderSettings().m_multisampleState = multisampleState; + renderPipeline->SetPassNeedsRecreate(); + } + } + } + + const RHI::MultisampleState& RPISystem::GetApplicationMultisampleState() const + { + return m_multisampleState; + } + } //namespace RPI } //namespace AZ diff --git a/Gems/Atom/Tools/AtomToolsFramework/Code/Source/PreviewRenderer/PreviewRenderer.cpp b/Gems/Atom/Tools/AtomToolsFramework/Code/Source/PreviewRenderer/PreviewRenderer.cpp index 27d468e64b..638e8da87c 100644 --- a/Gems/Atom/Tools/AtomToolsFramework/Code/Source/PreviewRenderer/PreviewRenderer.cpp +++ b/Gems/Atom/Tools/AtomToolsFramework/Code/Source/PreviewRenderer/PreviewRenderer.cpp @@ -63,10 +63,8 @@ namespace AtomToolsFramework pipelineDesc.m_mainViewTagName = "MainCamera"; pipelineDesc.m_name = pipelineName; pipelineDesc.m_rootPassTemplate = "ToolsPipelineRenderToTexture"; + pipelineDesc.m_renderSettings.m_multisampleState = AZ::RPI::RPISystemInterface::Get()->GetApplicationMultisampleState(); - // We have to set the samples to 4 to match the pipeline passes' setting, otherwise it may lead to device lost issue - // [GFX TODO] [ATOM-13551] Default value sand validation required to prevent pipeline crash and device lost - pipelineDesc.m_renderSettings.m_multisampleState.m_samples = 4; m_renderPipeline = AZ::RPI::RenderPipeline::CreateRenderPipeline(pipelineDesc); m_scene->AddRenderPipeline(m_renderPipeline); m_scene->Activate(); From 3ad78881076240204bc8adb9bf0baeafba330cd7 Mon Sep 17 00:00:00 2001 From: dmcdiarmid-ly <63674186+dmcdiarmid-ly@users.noreply.github.com> Date: Wed, 9 Feb 2022 22:11:43 -0700 Subject: [PATCH 2/5] Checked the device raytracing feature flag before initializing the visualization raytracing objects Signed-off-by: dmcdiarmid-ly <63674186+dmcdiarmid-ly@users.noreply.github.com> --- .../DiffuseProbeGridFeatureProcessor.cpp | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridFeatureProcessor.cpp b/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridFeatureProcessor.cpp index 84c066604a..5e85c3b247 100644 --- a/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridFeatureProcessor.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridFeatureProcessor.cpp @@ -92,21 +92,24 @@ namespace AZ AZ_Error("DiffuseProbeGridFeatureProcessor", m_probeGridRenderData.m_srgLayout != nullptr, "Failed to find ObjectSrg layout"); } - // initialize the buffer pools for the DiffuseProbeGrid visualization - m_visualizationBufferPools = RHI::RayTracingBufferPools::CreateRHIRayTracingBufferPools(); - m_visualizationBufferPools->Init(device); + if (device->GetFeatures().m_rayTracing) + { + // initialize the buffer pools for the DiffuseProbeGrid visualization + m_visualizationBufferPools = RHI::RayTracingBufferPools::CreateRHIRayTracingBufferPools(); + m_visualizationBufferPools->Init(device); - // load probe visualization model, the BLAS will be created in OnAssetReady() - m_visualizationModelAsset = AZ::RPI::AssetUtils::GetAssetByProductPath( - "Models/DiffuseProbeSphere.azmodel", - AZ::RPI::AssetUtils::TraceLevel::Assert); + // load probe visualization model, the BLAS will be created in OnAssetReady() + m_visualizationModelAsset = AZ::RPI::AssetUtils::GetAssetByProductPath( + "Models/DiffuseProbeSphere.azmodel", + AZ::RPI::AssetUtils::TraceLevel::Assert); - if (!m_visualizationModelAsset.IsReady()) - { - m_visualizationModelAsset.QueueLoad(); - } + if (!m_visualizationModelAsset.IsReady()) + { + m_visualizationModelAsset.QueueLoad(); + } - Data::AssetBus::MultiHandler::BusConnect(m_visualizationModelAsset.GetId()); + Data::AssetBus::MultiHandler::BusConnect(m_visualizationModelAsset.GetId()); + } EnableSceneNotification(); } From aec7b58c39d369ccce23e28742989c1ef16575f5 Mon Sep 17 00:00:00 2001 From: Jeremy Ong Date: Thu, 10 Feb 2022 02:27:49 -0700 Subject: [PATCH 3/5] Introduce Atom/GraphicsDevMode settings registry key When `"Atom": {"GraphicsDevMode": true}` is found in a `.setreg` file, PDBs for all shaders will be emitted to their corresponding output locations. This allows global PDB generation without needing to explicitly modify each `.shader` file to include the `GenerateDebugInfo` compilation option. Signed-off-by: Jeremy Ong --- .../Editor/AzslShaderBuilderSystemComponent.cpp | 2 +- Gems/Atom/RHI/Code/Include/Atom/RHI/RHIUtils.h | 3 +++ Gems/Atom/RHI/Code/Source/RHI/RHIUtils.cpp | 14 ++++++++++++++ .../RHI.Builders/ShaderPlatformInterface.cpp | 10 ++++++---- .../RHI.Builders/ShaderPlatformInterface.cpp | 7 +++++-- 5 files changed, 29 insertions(+), 7 deletions(-) diff --git a/Gems/Atom/Asset/Shader/Code/Source/Editor/AzslShaderBuilderSystemComponent.cpp b/Gems/Atom/Asset/Shader/Code/Source/Editor/AzslShaderBuilderSystemComponent.cpp index 7e510e2e3a..43d67cc95c 100644 --- a/Gems/Atom/Asset/Shader/Code/Source/Editor/AzslShaderBuilderSystemComponent.cpp +++ b/Gems/Atom/Asset/Shader/Code/Source/Editor/AzslShaderBuilderSystemComponent.cpp @@ -82,7 +82,7 @@ namespace AZ // Register Shader Asset Builder AssetBuilderSDK::AssetBuilderDesc shaderAssetBuilderDescriptor; shaderAssetBuilderDescriptor.m_name = "Shader Asset Builder"; - shaderAssetBuilderDescriptor.m_version = 110; // Add "Definitions" field to shader asset to support convenient addition of preprocessor definitions + shaderAssetBuilderDescriptor.m_version = 111; // Enable shader PDB generation globally if Atom/GraphicsDevMode settings registry key is set shaderAssetBuilderDescriptor.m_patterns.push_back(AssetBuilderSDK::AssetBuilderPattern( AZStd::string::format("*.%s", RPI::ShaderSourceData::Extension), AssetBuilderSDK::AssetBuilderPattern::PatternType::Wildcard)); shaderAssetBuilderDescriptor.m_busId = azrtti_typeid(); shaderAssetBuilderDescriptor.m_createJobFunction = AZStd::bind(&ShaderAssetBuilder::CreateJobs, &m_shaderAssetBuilder, AZStd::placeholders::_1, AZStd::placeholders::_2); diff --git a/Gems/Atom/RHI/Code/Include/Atom/RHI/RHIUtils.h b/Gems/Atom/RHI/Code/Include/Atom/RHI/RHIUtils.h index 73e8e1ad56..48a041ad7d 100644 --- a/Gems/Atom/RHI/Code/Include/Atom/RHI/RHIUtils.h +++ b/Gems/Atom/RHI/Code/Include/Atom/RHI/RHIUtils.h @@ -42,6 +42,9 @@ namespace AZ //! Returns if the current bakcend is a null renderer bool IsNullRenderer(); + + //! Returns true if the Atom/GraphicsDevMode settings registry key is set + bool IsGraphicsDevModeEnabled(); } } diff --git a/Gems/Atom/RHI/Code/Source/RHI/RHIUtils.cpp b/Gems/Atom/RHI/Code/Source/RHI/RHIUtils.cpp index bc4cde9406..de27f4ce18 100644 --- a/Gems/Atom/RHI/Code/Source/RHI/RHIUtils.cpp +++ b/Gems/Atom/RHI/Code/Source/RHI/RHIUtils.cpp @@ -9,9 +9,12 @@ #include #include #include +#include #include #include +static constexpr char GraphicsDevModeSetting[] = "/Atom/GraphicsDevMode"; + namespace AZ { namespace RHI @@ -134,5 +137,16 @@ namespace AZ } return false; } + + bool IsGraphicsDevModeEnabled() + { + AZ::SettingsRegistryInterface* settingsRegistry = AZ::SettingsRegistry::Get(); + bool graphicsDevMode = false; + if (settingsRegistry) + { + settingsRegistry->Get(graphicsDevMode, GraphicsDevModeSetting); + } + return graphicsDevMode; + } } } diff --git a/Gems/Atom/RHI/DX12/Code/Source/RHI.Builders/ShaderPlatformInterface.cpp b/Gems/Atom/RHI/DX12/Code/Source/RHI.Builders/ShaderPlatformInterface.cpp index ee293292e1..287c8e4fd5 100644 --- a/Gems/Atom/RHI/DX12/Code/Source/RHI.Builders/ShaderPlatformInterface.cpp +++ b/Gems/Atom/RHI/DX12/Code/Source/RHI.Builders/ShaderPlatformInterface.cpp @@ -12,10 +12,10 @@ #include #include #include +#include #include #include - #include namespace AZ @@ -253,9 +253,11 @@ namespace AZ return false; } + const bool graphicsDevMode = RHI::IsGraphicsDevModeEnabled(); + // Compilation parameters AZStd::string params = shaderCompilerArguments.MakeAdditionalDxcCommandLineString(); - if (BuildHasDebugInfo(shaderCompilerArguments)) + if (graphicsDevMode || BuildHasDebugInfo(shaderCompilerArguments)) { params += " -Zi"; // Generate debug information params += " -Zss"; // Compute Shader Hash considering source information @@ -284,7 +286,7 @@ namespace AZ // If we use the auto-name (hash), there is no way we can retrieve that name apart from listing the directory. // Instead, let's just generate that hash ourselves. AZStd::string symbolDatabaseFileCliArgument{" "}; // when not debug: still insert a space between 5.dxil and 7.hlsl-in - if (BuildHasDebugInfo(shaderCompilerArguments)) + if (graphicsDevMode || BuildHasDebugInfo(shaderCompilerArguments)) { // prepare .pdb filename: AZStd::string md5hex = RHI::ByteToHexString(md5); @@ -353,7 +355,7 @@ namespace AZ byProducts.m_dynamicBranchCount = ByProducts::UnknownDynamicBranchCount; } - if (BuildHasDebugInfo(shaderCompilerArguments)) + if (graphicsDevMode || BuildHasDebugInfo(shaderCompilerArguments)) { byProducts.m_intermediatePaths.emplace(AZStd::move(objectCodeOutputFile)); } diff --git a/Gems/Atom/RHI/Vulkan/Code/Source/RHI.Builders/ShaderPlatformInterface.cpp b/Gems/Atom/RHI/Vulkan/Code/Source/RHI.Builders/ShaderPlatformInterface.cpp index c5f1060ca3..f5716f384f 100644 --- a/Gems/Atom/RHI/Vulkan/Code/Source/RHI.Builders/ShaderPlatformInterface.cpp +++ b/Gems/Atom/RHI/Vulkan/Code/Source/RHI.Builders/ShaderPlatformInterface.cpp @@ -11,6 +11,7 @@ #include #include +#include #include #include @@ -281,7 +282,9 @@ namespace AZ args.m_destinationFolder = tempFolder.c_str(); const auto dxcInputFile = RHI::PrependFile(args); // Prepend header - if (BuildHasDebugInfo(shaderCompilerArguments)) + const bool graphicsDevMode = RHI::IsGraphicsDevModeEnabled(); + + if (graphicsDevMode || BuildHasDebugInfo(shaderCompilerArguments)) { // dump intermediate "true final HLSL" file (shadername.vulkan.shadersource.prepend) byProducts.m_intermediatePaths.insert(dxcInputFile); @@ -334,7 +337,7 @@ namespace AZ byProducts.m_dynamicBranchCount = ByProducts::UnknownDynamicBranchCount; } - if (BuildHasDebugInfo(shaderCompilerArguments)) + if (graphicsDevMode || BuildHasDebugInfo(shaderCompilerArguments)) { byProducts.m_intermediatePaths.emplace(AZStd::move(objectCodeOutputFile)); } From 27abad7564ca607900d6d7d6ca42b5dbf6832699 Mon Sep 17 00:00:00 2001 From: Steve Pham <82231385+spham-amzn@users.noreply.github.com> Date: Thu, 10 Feb 2022 13:32:22 -0800 Subject: [PATCH 4/5] Fix Mac SQL Package (#7538) * Update mac SQLite3 package to fix bad version Signed-off-by: spham <82231385+spham-amzn@users.noreply.github.com> --- cmake/3rdParty/Platform/Mac/BuiltInPackages_mac.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/3rdParty/Platform/Mac/BuiltInPackages_mac.cmake b/cmake/3rdParty/Platform/Mac/BuiltInPackages_mac.cmake index ae51076857..c0bc9060d4 100644 --- a/cmake/3rdParty/Platform/Mac/BuiltInPackages_mac.cmake +++ b/cmake/3rdParty/Platform/Mac/BuiltInPackages_mac.cmake @@ -42,5 +42,5 @@ ly_associate_package(PACKAGE_NAME astc-encoder-3.2-rev5-mac ly_associate_package(PACKAGE_NAME ISPCTexComp-36b80aa-rev1-mac TARGETS ISPCTexComp PACKAGE_HASH 8a4e93277b8face6ea2fd57c6d017bdb55643ed3d6387110bc5f6b3b884dd169) ly_associate_package(PACKAGE_NAME lz4-1.9.3-vcpkg-rev4-mac TARGETS lz4 PACKAGE_HASH 891ff630bf34f7ab1d8eaee2ea0a8f1fca89dbdc63fca41ee592703dd488a73b) ly_associate_package(PACKAGE_NAME azslc-1.7.35-rev1-mac TARGETS azslc PACKAGE_HASH 03cb1ea8c47d4c80c893e2e88767272d5d377838f5ba94b777a45902dd85052e) -ly_associate_package(PACKAGE_NAME SQLite-3.37.2-rev1-mac TARGETS SQLite PACKAGE_HASH f9101023f99cf32fc5867284ceb28c0761c23d2c5a4b1748349c69f976a2fbea) +ly_associate_package(PACKAGE_NAME SQLite-3.37.2-rev2-mac TARGETS SQLite PACKAGE_HASH b7d9abdb68045003e030e1a9a805db1aefa5e8fde6dccfbb4fab3a06249a41fc) ly_associate_package(PACKAGE_NAME AwsIotDeviceSdkCpp-1.15.2-rev2-mac TARGETS AwsIotDeviceSdkCpp PACKAGE_HASH 4854edb7b88fa6437b4e69e87d0ee111a25313ac2a2db5bb2f8b674ba0974f95) From 7150a28ed6050bd27e5a8fc97d556080f7d45c48 Mon Sep 17 00:00:00 2001 From: moraaar Date: Fri, 11 Feb 2022 09:08:33 +0000 Subject: [PATCH 5/5] Mesh Component: Add button to the Mesh Asset field to open mesh FBX settings (#7547) This is an UX improvement for Mesh Component as the user can quickly access FBX settings of the mesh to modify it if they so desire. Video https://user-images.githubusercontent.com/27999040/153414278-f7996b9a-8a28-49d4-92a8-daeb9924b148.mp4 Signed-off-by: moraaar moraaar@amazon.com --- .../RPI/Code/Source/RPI.Reflect/Model/ModelAsset.cpp | 10 ++++++++++ .../Code/Source/Mesh/EditorMeshComponent.cpp | 3 +++ 2 files changed, 13 insertions(+) diff --git a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Model/ModelAsset.cpp b/Gems/Atom/RPI/Code/Source/RPI.Reflect/Model/ModelAsset.cpp index 6780763d7c..5685dfece2 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Model/ModelAsset.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Reflect/Model/ModelAsset.cpp @@ -15,6 +15,7 @@ #include #include +#include namespace AZ { @@ -35,6 +36,15 @@ namespace AZ ->Field("MaterialSlots", &ModelAsset::m_materialSlots) ->Field("LodAssets", &ModelAsset::m_lodAssets) ; + + // Note: This class needs to have edit context reflection so PropertyAssetCtrl::OnEditButtonClicked + // can open the asset with the preferred asset editor (Scene Settings). + if (auto* editContext = serializeContext->GetEditContext()) + { + editContext->Class("Model Asset", "") + ->ClassElement(AZ::Edit::ClassElements::EditorData, "") + ; + } } } diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Mesh/EditorMeshComponent.cpp b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Mesh/EditorMeshComponent.cpp index 255f639cd7..0d6b87e795 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Mesh/EditorMeshComponent.cpp +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Mesh/EditorMeshComponent.cpp @@ -72,6 +72,9 @@ namespace AZ ->ClassElement(AZ::Edit::ClassElements::EditorData, "") ->Attribute(AZ::Edit::Attributes::AutoExpand, true) ->DataElement(AZ::Edit::UIHandlers::Default, &MeshComponentConfig::m_modelAsset, "Mesh Asset", "Mesh asset reference") + ->Attribute(AZ_CRC_CE("EditButton"), "") + ->Attribute(AZ_CRC_CE("EditDescription"), "Open in Scene Settings") + ->Attribute(AZ_CRC_CE("DisableEditButtonWhenNoAssetSelected"), true) ->DataElement(AZ::Edit::UIHandlers::Default, &MeshComponentConfig::m_sortKey, "Sort Key", "Transparent meshes are drawn by sort key then depth. Used this to force certain transparent meshes to draw before or after others.") ->Attribute(AZ::Edit::Attributes::Visibility, &MeshComponentConfig::IsAssetSet) ->DataElement(AZ::Edit::UIHandlers::CheckBox, &MeshComponentConfig::m_excludeFromReflectionCubeMaps, "Exclude from reflection cubemaps", "Mesh will not be visible in baked reflection probe cubemaps")