From bec443f5dd1a1750033164d25bdb153492782724 Mon Sep 17 00:00:00 2001 From: Pavlo Penenko Date: Sun, 2 Oct 2022 11:44:19 -0400 Subject: [PATCH 1/3] #5: ported DX12 to Cauldron v1.4.5 --- libs/cauldron | 2 +- src/DX12/GLTFSample.cpp | 4 ++-- src/DX12/Renderer.cpp | 24 +++++++++++++++++++++--- src/DX12/UI.cpp | 4 ++-- 4 files changed, 26 insertions(+), 8 deletions(-) diff --git a/libs/cauldron b/libs/cauldron index 3e4a021..b92d559 160000 --- a/libs/cauldron +++ b/libs/cauldron @@ -1 +1 @@ -Subproject commit 3e4a021fc0d3e0372347126771a5155016810a11 +Subproject commit b92d559bd083f44df9f8f42a6ad149c1584ae94c diff --git a/src/DX12/GLTFSample.cpp b/src/DX12/GLTFSample.cpp index 8d148e7..221fd85 100644 --- a/src/DX12/GLTFSample.cpp +++ b/src/DX12/GLTFSample.cpp @@ -267,7 +267,7 @@ void GLTFSample::LoadScene(int sceneIndex) if (m_pGltfLoader->m_lights.size() == 0) { tfNode n; - n.m_tranform.LookAt(PolarToVector(AMD_PI_OVER_2, 0.58f) * 3.5f, math::Vector4(0, 0, 0, 0)); + n.m_transform.LookAt(PolarToVector(AMD_PI_OVER_2, 0.58f) * 3.5f, math::Vector4(0, 0, 0, 0)); tfLight l; l.m_type = tfLight::LIGHT_SPOTLIGHT; @@ -414,7 +414,7 @@ void GLTFSample::OnRender() // Do any start of frame necessities BeginFrame(); - ImGUI_UpdateIO(); + ImGUI_UpdateIO(m_Width,m_Height); ImGui::NewFrame(); if (m_loadingScene) diff --git a/src/DX12/Renderer.cpp b/src/DX12/Renderer.cpp index 2ddd308..2ab8d95 100644 --- a/src/DX12/Renderer.cpp +++ b/src/DX12/Renderer.cpp @@ -88,8 +88,20 @@ void Renderer::OnCreate(Device* pDevice, SwapChain *pSwapChain, float FontSize) m_ResourceViewHeaps.AllocCBV_SRV_UAVDescriptor(1, &m_ShadowMaskSRV); #endif - m_SkyDome.OnCreate(pDevice, &m_UploadHeap, &m_ResourceViewHeaps, &m_ConstantBufferRing, &m_VidMemBufferPool, "..\\media\\cauldron-media\\envmaps\\papermill\\diffuse.dds", "..\\media\\cauldron-media\\envmaps\\papermill\\specular.dds", DXGI_FORMAT_R16G16B16A16_FLOAT, 4); - m_SkyDomeProc.OnCreate(pDevice, &m_ResourceViewHeaps, &m_ConstantBufferRing, &m_VidMemBufferPool, DXGI_FORMAT_R16G16B16A16_FLOAT, 1); + constexpr bool bInvertedDepth = false; + m_SkyDome.OnCreate( + pDevice, + &m_UploadHeap, + &m_ResourceViewHeaps, + &m_ConstantBufferRing, + &m_VidMemBufferPool, + "..\\media\\cauldron-media\\envmaps\\papermill\\diffuse.dds", + "..\\media\\cauldron-media\\envmaps\\papermill\\specular.dds", + DXGI_FORMAT_R16G16B16A16_FLOAT, + 4, + bInvertedDepth + ); + m_SkyDomeProc.OnCreate(pDevice, &m_ResourceViewHeaps, &m_ConstantBufferRing, &m_VidMemBufferPool, DXGI_FORMAT_R16G16B16A16_FLOAT, 1, bInvertedDepth); m_Wireframe.OnCreate(pDevice, &m_ResourceViewHeaps, &m_ConstantBufferRing, &m_VidMemBufferPool, DXGI_FORMAT_R16G16B16A16_FLOAT, 1); m_WireframeBox.OnCreate(pDevice, &m_ResourceViewHeaps, &m_ConstantBufferRing, &m_VidMemBufferPool); m_DownSample.OnCreate(pDevice, &m_ResourceViewHeaps, &m_ConstantBufferRing, &m_VidMemBufferPool, DXGI_FORMAT_R16G16B16A16_FLOAT); @@ -403,7 +415,13 @@ void Renderer::AllocateShadowMaps(GLTFCommon* pGLTFCommon) std::vector::iterator CurrentShadow = m_shadowMapPool.begin(); for( uint32_t i = 0; CurrentShadow < m_shadowMapPool.end(); ++i, ++CurrentShadow) { - CurrentShadow->ShadowMap.InitDepthStencil(m_pDevice, "m_pShadowMap", &CD3DX12_RESOURCE_DESC::Tex2D(DXGI_FORMAT_D32_FLOAT, CurrentShadow->ShadowResolution, CurrentShadow->ShadowResolution, 1, 1, 1, 0, D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL)); + constexpr float fClearValue = 1.0f; + CurrentShadow->ShadowMap.InitDepthStencil( + m_pDevice, + "m_pShadowMap", + &CD3DX12_RESOURCE_DESC::Tex2D(DXGI_FORMAT_D32_FLOAT, CurrentShadow->ShadowResolution, CurrentShadow->ShadowResolution, 1, 1, 1, 0, D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL), + fClearValue + ); CurrentShadow->ShadowMap.CreateDSV(CurrentShadow->ShadowIndex, &m_ShadowMapPoolDSV); CurrentShadow->ShadowMap.CreateSRV(CurrentShadow->ShadowIndex, &m_ShadowMapPoolSRV); } diff --git a/src/DX12/UI.cpp b/src/DX12/UI.cpp index 67e4ad5..88c42ce 100644 --- a/src/DX12/UI.cpp +++ b/src/DX12/UI.cpp @@ -139,8 +139,8 @@ void GLTFSample::BuildUI() if (ImGui::Button("Set Spot Light 0 to Camera's View")) { int idx = m_pGltfLoader->m_lightInstances[0].m_nodeIndex; - m_pGltfLoader->m_nodes[idx].m_tranform.LookAt(m_camera.GetPosition(), m_camera.GetPosition() - m_camera.GetDirection()); - m_pGltfLoader->m_animatedMats[idx] = m_pGltfLoader->m_nodes[idx].m_tranform.GetWorldMat(); + m_pGltfLoader->m_nodes[idx].m_transform.LookAt(m_camera.GetPosition(), m_camera.GetPosition() - m_camera.GetDirection()); + m_pGltfLoader->m_animatedMats[idx] = m_pGltfLoader->m_nodes[idx].m_transform.GetWorldMat(); } } From 100676d455c6e906e3843251905c0539d0a27185 Mon Sep 17 00:00:00 2001 From: Pavlo Penenko Date: Sun, 9 Oct 2022 12:56:34 -0400 Subject: [PATCH 2/3] #5: ported VK to Cauldron v1.4.5 --- src/VK/GLTFSample.cpp | 6 +++--- src/VK/Renderer.cpp | 29 +++++++++++++++++++++-------- src/VK/UI.cpp | 6 +++--- 3 files changed, 27 insertions(+), 14 deletions(-) diff --git a/src/VK/GLTFSample.cpp b/src/VK/GLTFSample.cpp index 49ff217..dfb0f18 100644 --- a/src/VK/GLTFSample.cpp +++ b/src/VK/GLTFSample.cpp @@ -262,7 +262,7 @@ void GLTFSample::LoadScene(int sceneIndex) if (m_pGltfLoader->m_lights.size() == 0) { tfNode n; - n.m_tranform.LookAt(PolarToVector(AMD_PI_OVER_2, 0.58f) * 3.5f, math::Vector4(0, 0, 0, 0)); + n.m_transform.LookAt(PolarToVector(AMD_PI_OVER_2, 0.58f) * 3.5f, math::Vector4(0, 0, 0, 0)); tfLight l; l.m_type = tfLight::LIGHT_SPOTLIGHT; @@ -420,12 +420,12 @@ void GLTFSample::OnRender() // Do any start of frame necessities BeginFrame(); - ImGUI_UpdateIO(); + ImGUI_UpdateIO(m_Width, m_Height); ImGui::NewFrame(); if (m_loadingScene) { - // the scene loads in chuncks, that way we can show a progress bar + // the scene loads in chunks, that way we can show a progress bar static int loadingStage = 0; loadingStage = m_pRenderer->LoadScene(m_pGltfLoader, loadingStage); if (loadingStage == 0) diff --git a/src/VK/Renderer.cpp b/src/VK/Renderer.cpp index 92aaf34..1141c81 100644 --- a/src/VK/Renderer.cpp +++ b/src/VK/Renderer.cpp @@ -86,10 +86,23 @@ void Renderer::OnCreate(Device *pDevice, SwapChain *pSwapChain, float FontSize) { VkAttachmentDescription depthAttachments; AttachClearBeforeUse(VK_FORMAT_D32_SFLOAT, VK_SAMPLE_COUNT_1_BIT, VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, &depthAttachments); - m_Render_pass_shadow = CreateRenderPassOptimal(m_pDevice->GetDevice(), 0, NULL, &depthAttachments); - } - - m_SkyDome.OnCreate(pDevice, m_RenderPassJustDepthAndHdr.GetRenderPass(), &m_UploadHeap, VK_FORMAT_R16G16B16A16_SFLOAT, &m_ResourceViewHeaps, &m_ConstantBufferRing, &m_VidMemBufferPool, "..\\media\\cauldron-media\\envmaps\\papermill\\diffuse.dds", "..\\media\\cauldron-media\\envmaps\\papermill\\specular.dds", VK_SAMPLE_COUNT_1_BIT); + m_Render_pass_shadow = CreateRenderPassOptimal(m_pDevice->GetDevice(), 0, NULL, &depthAttachments, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL); + } + + constexpr bool bInvertedDepth = false; + m_SkyDome.OnCreate( + pDevice, + m_RenderPassJustDepthAndHdr.GetRenderPass(), + &m_UploadHeap, + VK_FORMAT_R16G16B16A16_SFLOAT, + &m_ResourceViewHeaps, + &m_ConstantBufferRing, + &m_VidMemBufferPool, + "..\\media\\cauldron-media\\envmaps\\papermill\\diffuse.dds", + "..\\media\\cauldron-media\\envmaps\\papermill\\specular.dds", + VK_SAMPLE_COUNT_1_BIT, + bInvertedDepth + ); m_SkyDomeProc.OnCreate(pDevice, m_RenderPassJustDepthAndHdr.GetRenderPass(), &m_UploadHeap, VK_FORMAT_R16G16B16A16_SFLOAT, &m_ResourceViewHeaps, &m_ConstantBufferRing, &m_VidMemBufferPool, VK_SAMPLE_COUNT_1_BIT); m_Wireframe.OnCreate(pDevice, m_RenderPassJustDepthAndHdr.GetRenderPass(), &m_ResourceViewHeaps, &m_ConstantBufferRing, &m_VidMemBufferPool, VK_SAMPLE_COUNT_1_BIT); m_WireframeBox.OnCreate(pDevice, &m_ResourceViewHeaps, &m_ConstantBufferRing, &m_VidMemBufferPool); @@ -190,7 +203,7 @@ void Renderer::OnCreateWindowSizeDependentResources(SwapChain *pSwapChain, uint3 m_DownSample.OnCreateWindowSizeDependentResources(Width, Height, &m_GBuffer.m_HDR, 6); //downsample the HDR texture 6 times m_Bloom.OnCreateWindowSizeDependentResources(Width / 2, Height / 2, m_DownSample.GetTexture(), 6, &m_GBuffer.m_HDR); m_TAA.OnCreateWindowSizeDependentResources(Width, Height, &m_GBuffer); - m_MagnifierPS.OnCreateWindowSizeDependentResources(&m_GBuffer.m_HDR); + m_MagnifierPS.OnCreateWindowSizeDependentResources(Width, Height); m_bMagResourceReInit = true; } @@ -541,8 +554,8 @@ void Renderer::OnRender(const UIState* pState, const Camera& Cam, SwapChain* pSw SetViewportAndScissor(cmdBuf1, 0, 0, ShadowMap->ShadowResolution, ShadowMap->ShadowResolution); // Set per frame constant buffer values - GltfDepthPass::per_frame* cbPerFrame = m_GLTFDepth->SetPerFrameConstants(); - cbPerFrame->mViewProj = pPerFrame->lights[ShadowMap->LightIndex].mLightViewProj; + per_frame* cbPerFrame = m_GLTFDepth->SetPerFrameConstants(); + cbPerFrame->mCameraCurrViewProj = pPerFrame->lights[ShadowMap->LightIndex].mLightViewProj; m_GLTFDepth->Draw(cmdBuf1); @@ -773,7 +786,7 @@ void Renderer::OnRender(const UIState* pState, const Camera& Cam, SwapChain* pSw } // Note: assumes the input texture (specified in OnCreateWindowSizeDependentResources()) is in read state - m_MagnifierPS.Draw(cmdBuf1, pState->MagnifierParams); + m_MagnifierPS.Draw(cmdBuf1, pState->MagnifierParams, m_GBuffer.m_HDRSRV); m_GPUTimer.GetTimeStamp(cmdBuf1, "Magnifier"); } diff --git a/src/VK/UI.cpp b/src/VK/UI.cpp index be8869c..ec418e6 100644 --- a/src/VK/UI.cpp +++ b/src/VK/UI.cpp @@ -138,8 +138,8 @@ void GLTFSample::BuildUI() if (ImGui::Button("Set Spot Light 0 to Camera's View")) { int idx = m_pGltfLoader->m_lightInstances[0].m_nodeIndex; - m_pGltfLoader->m_nodes[idx].m_tranform.LookAt(m_camera.GetPosition(), m_camera.GetPosition() - m_camera.GetDirection()); - m_pGltfLoader->m_animatedMats[idx] = m_pGltfLoader->m_nodes[idx].m_tranform.GetWorldMat(); + m_pGltfLoader->m_nodes[idx].m_transform.LookAt(m_camera.GetPosition(), m_camera.GetPosition() - m_camera.GetDirection()); + m_pGltfLoader->m_animatedMats[idx] = m_pGltfLoader->m_nodes[idx].m_transform.GetWorldMat(); } } @@ -270,7 +270,7 @@ void GLTFSample::BuildUI() if (m_displayModesAvailable[m_currentDisplayModeNamesIndex] == DisplayMode::DISPLAYMODE_FSHDR_Gamma22 || m_displayModesAvailable[m_currentDisplayModeNamesIndex] == DisplayMode::DISPLAYMODE_FSHDR_SCRGB) { - if (ImGui::Checkbox("Enable Local Dimming", &m_enableLocalDimming)) + if (ImGui::Checkbox("Disable Local Dimming", &m_disableLocalDimming)) { OnLocalDimmingChanged(); } From d46755d42d1c5b8e5e0f8f27a5810042cf2bf831 Mon Sep 17 00:00:00 2001 From: Pavlo Penenko Date: Sun, 9 Oct 2022 21:57:09 -0400 Subject: [PATCH 3/3] #5: updated the version in the window title --- src/DX12/GLTFSample.cpp | 2 +- src/VK/GLTFSample.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/DX12/GLTFSample.cpp b/src/DX12/GLTFSample.cpp index 221fd85..98fd04d 100644 --- a/src/DX12/GLTFSample.cpp +++ b/src/DX12/GLTFSample.cpp @@ -458,7 +458,7 @@ int WINAPI WinMain(HINSTANCE hInstance, LPSTR lpCmdLine, int nCmdShow) { - LPCSTR Name = "SampleDX12 v1.4.1"; + LPCSTR Name = "SampleDX12 v1.4.5"; // create new DX sample return RunFramework(hInstance, lpCmdLine, nCmdShow, new GLTFSample(Name)); diff --git a/src/VK/GLTFSample.cpp b/src/VK/GLTFSample.cpp index dfb0f18..a8c773a 100644 --- a/src/VK/GLTFSample.cpp +++ b/src/VK/GLTFSample.cpp @@ -465,7 +465,7 @@ int WINAPI WinMain(HINSTANCE hInstance, LPSTR lpCmdLine, int nCmdShow) { - LPCSTR Name = "SampleVK v1.4.1"; + LPCSTR Name = "SampleVK v1.4.5"; // create new Vulkan sample return RunFramework(hInstance, lpCmdLine, nCmdShow, new GLTFSample(Name));