From 4378f1f88c11b623e9876b7b8d9fa2ac0e62f481 Mon Sep 17 00:00:00 2001 From: Doug McDiarmid Date: Sat, 19 Jun 2021 22:48:21 -0700 Subject: [PATCH 1/7] Skipped meshes that do not have the required streams when adding to the RayTracingFeatureProcessor. --- .../Common/Code/Source/Mesh/MeshFeatureProcessor.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Gems/Atom/Feature/Common/Code/Source/Mesh/MeshFeatureProcessor.cpp b/Gems/Atom/Feature/Common/Code/Source/Mesh/MeshFeatureProcessor.cpp index 3001831817..d0d1391da2 100644 --- a/Gems/Atom/Feature/Common/Code/Source/Mesh/MeshFeatureProcessor.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/Mesh/MeshFeatureProcessor.cpp @@ -783,7 +783,7 @@ namespace AZ // retrieve vertex/index buffers RPI::ModelLod::StreamBufferViewList streamBufferViews; - [[maybe_unused]] bool result = modelLod->GetStreamsForMesh( + bool result = modelLod->GetStreamsForMesh( inputStreamLayout, streamBufferViews, nullptr, @@ -791,7 +791,12 @@ namespace AZ meshIndex, materialAssignment.m_matModUvOverrides, material->GetAsset()->GetMaterialTypeAsset()->GetUvNameMap()); - AZ_Assert(result, "Failed to retrieve mesh stream buffer views"); + + if (!result) + { + AZ_Warning("MeshFeatureProcessor", false, "Mesh is missing required vertex streams for RayTracing. Skipping."); + continue; + } // note that the element count is the size of the entire buffer, even though this mesh may only // occupy a portion of the vertex buffer. This is necessary since we are accessing it using From c3c69fedd617f14b68e56ac0db3344a1911a9aae Mon Sep 17 00:00:00 2001 From: Doug McDiarmid Date: Wed, 23 Jun 2021 01:17:16 -0700 Subject: [PATCH 2/7] Changed the Tangent and BItangent streams to be optional when setting up ray tracing data for a mesh. --- .../RayTracing/RayTracingSceneSrg.azsli | 10 +++--- .../RayTracing/RayTracingSceneUtils.azsli | 12 ++++--- .../Code/Source/Mesh/MeshFeatureProcessor.cpp | 31 +++++++++++-------- .../RayTracing/RayTracingFeatureProcessor.cpp | 28 +++++++++++++---- .../RayTracing/RayTracingFeatureProcessor.h | 4 ++- 5 files changed, 55 insertions(+), 30 deletions(-) diff --git a/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/RayTracing/RayTracingSceneSrg.azsli b/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/RayTracing/RayTracingSceneSrg.azsli index b8c97ef421..4ccaabd067 100644 --- a/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/RayTracing/RayTracingSceneSrg.azsli +++ b/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/RayTracing/RayTracingSceneSrg.azsli @@ -156,15 +156,15 @@ ShaderResourceGroup RayTracingSceneSrg : SRG_RayTracingScene #define MESH_INDEX_BUFFER_OFFSET 0 #define MESH_POSITION_BUFFER_OFFSET 1 #define MESH_NORMAL_BUFFER_OFFSET 2 - #define MESH_TANGENT_BUFFER_OFFSET 3 - #define MESH_BITANGENT_BUFFER_OFFSET 4 // buffer flag bits indicating if optional buffers are present - #define MESH_BUFFER_FLAG_UV 1 + #define MESH_BUFFER_FLAG_TANGENT 1 + #define MESH_BUFFER_FLAG_BITANGENT 2 + #define MESH_BUFFER_FLAG_UV 3 // Unbounded array of mesh stream buffers: - // - Index, Position, Normal, Tangent, and Bitangent stream buffers are always present - // - Optional stream buffers such as UV are indicated in the MeshInfo.m_bufferFlags field + // - Index, Position, Normal stream buffers are always present + // - Optional stream buffers such as Tangent, Bitangent, and UV are indicated in the MeshInfo.m_bufferFlags field // - Buffers for a particular mesh start at MeshInfo.m_bufferStartIndex ByteAddressBuffer m_meshBuffers[]; } \ No newline at end of file diff --git a/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/RayTracing/RayTracingSceneUtils.azsli b/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/RayTracing/RayTracingSceneUtils.azsli index f858b9a11a..654879f39f 100644 --- a/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/RayTracing/RayTracingSceneUtils.azsli +++ b/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/RayTracing/RayTracingSceneUtils.azsli @@ -79,10 +79,14 @@ VertexData GetHitInterpolatedVertexData(RayTracingSceneSrg::MeshInfo meshInfo, f vertexData.m_normal += asfloat(RayTracingSceneSrg::m_meshBuffers[meshVertexNormalArrayIndex].Load3(normalOffset)) * barycentrics[i]; } + // optional streams begin after MESH_NORMAL_BUFFER_OFFSET + uint optionalBufferOffset = MESH_NORMAL_BUFFER_OFFSET + 1; + // tangent + if (meshInfo.m_bufferFlags & MESH_BUFFER_FLAG_TANGENT) { // array index of the tangent buffer for this mesh in the m_meshBuffers unbounded array - uint meshVertexTangentArrayIndex = meshInfo.m_bufferStartIndex + MESH_TANGENT_BUFFER_OFFSET; + uint meshVertexTangentArrayIndex = meshInfo.m_bufferStartIndex + optionalBufferOffset++; // offset into the tangent buffer for this vertex uint tangentOffset = meshInfo.m_tangentOffset + (indices[i] * 12); @@ -92,9 +96,10 @@ VertexData GetHitInterpolatedVertexData(RayTracingSceneSrg::MeshInfo meshInfo, f } // bitangent + if (meshInfo.m_bufferFlags & MESH_BUFFER_FLAG_BITANGENT) { // array index of the bitangent buffer for this mesh in the m_meshBuffers unbounded array - uint meshVertexBitangentArrayIndex = meshInfo.m_bufferStartIndex + MESH_BITANGENT_BUFFER_OFFSET; + uint meshVertexBitangentArrayIndex = meshInfo.m_bufferStartIndex + optionalBufferOffset++; // offset into the bitangent buffer for this vertex uint bitangentOffset = meshInfo.m_bitangentOffset + (indices[i] * 12); @@ -103,9 +108,6 @@ VertexData GetHitInterpolatedVertexData(RayTracingSceneSrg::MeshInfo meshInfo, f vertexData.m_bitangent += asfloat(RayTracingSceneSrg::m_meshBuffers[meshVertexBitangentArrayIndex].Load3(bitangentOffset)) * barycentrics[i]; } - // optional streams begin after MESH_BITANGENT_BUFFER_OFFSET - uint optionalBufferOffset = MESH_BITANGENT_BUFFER_OFFSET + 1; - // UV if (meshInfo.m_bufferFlags & MESH_BUFFER_FLAG_UV) { diff --git a/Gems/Atom/Feature/Common/Code/Source/Mesh/MeshFeatureProcessor.cpp b/Gems/Atom/Feature/Common/Code/Source/Mesh/MeshFeatureProcessor.cpp index 359d0bd279..4e7dd5d3f0 100644 --- a/Gems/Atom/Feature/Common/Code/Source/Mesh/MeshFeatureProcessor.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/Mesh/MeshFeatureProcessor.cpp @@ -734,10 +734,12 @@ namespace AZ RPI::ShaderInputContract::StreamChannelInfo tangentStreamChannelInfo; tangentStreamChannelInfo.m_semantic = RHI::ShaderSemantic(AZ::Name(TangentSemantic)); tangentStreamChannelInfo.m_componentCount = RHI::GetFormatComponentCount(TangentStreamFormat); + tangentStreamChannelInfo.m_isOptional = true; RPI::ShaderInputContract::StreamChannelInfo bitangentStreamChannelInfo; bitangentStreamChannelInfo.m_semantic = RHI::ShaderSemantic(AZ::Name(BitangentSemantic)); bitangentStreamChannelInfo.m_componentCount = RHI::GetFormatComponentCount(BitangentStreamFormat); + bitangentStreamChannelInfo.m_isOptional = true; RPI::ShaderInputContract::StreamChannelInfo uvStreamChannelInfo; uvStreamChannelInfo.m_semantic = RHI::ShaderSemantic(AZ::Name(UVSemantic)); @@ -776,7 +778,7 @@ namespace AZ // retrieve vertex/index buffers RPI::ModelLod::StreamBufferViewList streamBufferViews; - bool result = modelLod->GetStreamsForMesh( + [[maybe_unused]] bool result = modelLod->GetStreamsForMesh( inputStreamLayout, streamBufferViews, nullptr, @@ -784,12 +786,7 @@ namespace AZ meshIndex, materialAssignment.m_matModUvOverrides, material->GetAsset()->GetMaterialTypeAsset()->GetUvNameMap()); - - if (!result) - { - AZ_Warning("MeshFeatureProcessor", false, "Mesh is missing required vertex streams for RayTracing. Skipping."); - continue; - } + AZ_Assert(result, "Failed to retrieve mesh stream buffer views"); // note that the element count is the size of the entire buffer, even though this mesh may only // occupy a portion of the vertex buffer. This is necessary since we are accessing it using @@ -828,13 +825,21 @@ namespace AZ subMesh.m_normalVertexBufferView = streamBufferViews[1]; subMesh.m_normalShaderBufferView = const_cast(streamBufferViews[1].GetBuffer())->GetBufferView(normalBufferDescriptor); - subMesh.m_tangentFormat = TangentStreamFormat; - subMesh.m_tangentVertexBufferView = streamBufferViews[2]; - subMesh.m_tangentShaderBufferView = const_cast(streamBufferViews[2].GetBuffer())->GetBufferView(tangentBufferDescriptor); + if (tangentBufferByteCount > 0) + { + subMesh.m_bufferFlags |= RayTracingSubMeshBufferFlags::Tangent; + subMesh.m_tangentFormat = TangentStreamFormat; + subMesh.m_tangentVertexBufferView = streamBufferViews[2]; + subMesh.m_tangentShaderBufferView = const_cast(streamBufferViews[2].GetBuffer())->GetBufferView(tangentBufferDescriptor); + } - subMesh.m_bitangentFormat = BitangentStreamFormat; - subMesh.m_bitangentVertexBufferView = streamBufferViews[3]; - subMesh.m_bitangentShaderBufferView = const_cast(streamBufferViews[3].GetBuffer())->GetBufferView(bitangentBufferDescriptor); + if (bitangentBufferByteCount > 0) + { + subMesh.m_bufferFlags |= RayTracingSubMeshBufferFlags::Bitangent; + subMesh.m_bitangentFormat = BitangentStreamFormat; + subMesh.m_bitangentVertexBufferView = streamBufferViews[3]; + subMesh.m_bitangentShaderBufferView = const_cast(streamBufferViews[3].GetBuffer())->GetBufferView(bitangentBufferDescriptor); + } if (uvBufferByteCount > 0) { diff --git a/Gems/Atom/Feature/Common/Code/Source/RayTracing/RayTracingFeatureProcessor.cpp b/Gems/Atom/Feature/Common/Code/Source/RayTracing/RayTracingFeatureProcessor.cpp index 2db396e36d..059a9d92dd 100644 --- a/Gems/Atom/Feature/Common/Code/Source/RayTracing/RayTracingFeatureProcessor.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/RayTracing/RayTracingFeatureProcessor.cpp @@ -243,8 +243,16 @@ namespace AZ meshInfo.m_indexOffset = subMesh.m_indexBufferView.GetByteOffset(); meshInfo.m_positionOffset = subMesh.m_positionVertexBufferView.GetByteOffset(); meshInfo.m_normalOffset = subMesh.m_normalVertexBufferView.GetByteOffset(); - meshInfo.m_tangentOffset = subMesh.m_tangentVertexBufferView.GetByteOffset(); - meshInfo.m_bitangentOffset = subMesh.m_bitangentVertexBufferView.GetByteOffset(); + + if (RHI::CheckBitsAll(subMesh.m_bufferFlags, RayTracingSubMeshBufferFlags::Tangent)) + { + meshInfo.m_tangentOffset = subMesh.m_tangentVertexBufferView.GetByteOffset(); + } + + if (RHI::CheckBitsAll(subMesh.m_bufferFlags, RayTracingSubMeshBufferFlags::Bitangent)) + { + meshInfo.m_bitangentOffset = subMesh.m_bitangentVertexBufferView.GetByteOffset(); + } if (RHI::CheckBitsAll(subMesh.m_bufferFlags, RayTracingSubMeshBufferFlags::UV)) { @@ -257,8 +265,8 @@ namespace AZ meshInfo.m_bufferStartIndex = bufferStartIndex; // add the count of buffers present in this subMesh to the start index for the next subMesh - // note that the Index, Position, Normal, Tangent, and Bitangent buffers are always counted since they are guaranteed - static const uint32_t RayTracingSubMeshFixedStreamCount = 5; + // note that the Index, Position, and Normal buffers are always counted since they are guaranteed + static const uint32_t RayTracingSubMeshFixedStreamCount = 3; bufferStartIndex += (RayTracingSubMeshFixedStreamCount + RHI::CountBitsSet(aznumeric_cast(meshInfo.m_bufferFlags))); meshInfos.emplace_back(meshInfo); @@ -423,8 +431,16 @@ namespace AZ meshBuffers.push_back(subMesh.m_indexShaderBufferView.get()); meshBuffers.push_back(subMesh.m_positionShaderBufferView.get()); meshBuffers.push_back(subMesh.m_normalShaderBufferView.get()); - meshBuffers.push_back(subMesh.m_tangentShaderBufferView.get()); - meshBuffers.push_back(subMesh.m_bitangentShaderBufferView.get()); + + if (RHI::CheckBitsAll(subMesh.m_bufferFlags, RayTracingSubMeshBufferFlags::Tangent)) + { + meshBuffers.push_back(subMesh.m_tangentShaderBufferView.get()); + } + + if (RHI::CheckBitsAll(subMesh.m_bufferFlags, RayTracingSubMeshBufferFlags::Bitangent)) + { + meshBuffers.push_back(subMesh.m_bitangentShaderBufferView.get()); + } if (RHI::CheckBitsAll(subMesh.m_bufferFlags, RayTracingSubMeshBufferFlags::UV)) { diff --git a/Gems/Atom/Feature/Common/Code/Source/RayTracing/RayTracingFeatureProcessor.h b/Gems/Atom/Feature/Common/Code/Source/RayTracing/RayTracingFeatureProcessor.h index 90a9383ae6..11dcc5a11f 100644 --- a/Gems/Atom/Feature/Common/Code/Source/RayTracing/RayTracingFeatureProcessor.h +++ b/Gems/Atom/Feature/Common/Code/Source/RayTracing/RayTracingFeatureProcessor.h @@ -32,7 +32,9 @@ namespace AZ { None = 0, - UV = AZ_BIT(0) + Tangent = AZ_BIT(0), + Bitangent = AZ_BIT(1), + UV = AZ_BIT(2) }; AZ_DEFINE_ENUM_BITWISE_OPERATORS(AZ::Render::RayTracingSubMeshBufferFlags); From 97f4d8e845d01a0ef54370c76d039a95b7d3c273 Mon Sep 17 00:00:00 2001 From: Doug McDiarmid Date: Wed, 23 Jun 2021 01:40:39 -0700 Subject: [PATCH 3/7] Fixed tangent and bitangent interpolation in RayTracingSceneUtils.azsli. --- .../Atom/Features/RayTracing/RayTracingSceneUtils.azsli | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/RayTracing/RayTracingSceneUtils.azsli b/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/RayTracing/RayTracingSceneUtils.azsli index 654879f39f..b96f6d5e1f 100644 --- a/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/RayTracing/RayTracingSceneUtils.azsli +++ b/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/RayTracing/RayTracingSceneUtils.azsli @@ -38,7 +38,7 @@ struct VertexData { float3 m_position; float3 m_normal; - float3 m_tangent; + float4 m_tangent; float3 m_bitangent; float2 m_uv; }; @@ -89,10 +89,10 @@ VertexData GetHitInterpolatedVertexData(RayTracingSceneSrg::MeshInfo meshInfo, f uint meshVertexTangentArrayIndex = meshInfo.m_bufferStartIndex + optionalBufferOffset++; // offset into the tangent buffer for this vertex - uint tangentOffset = meshInfo.m_tangentOffset + (indices[i] * 12); + uint tangentOffset = meshInfo.m_tangentOffset + (indices[i] * 16); // load the tangent data - vertexData.m_tangent += asfloat(RayTracingSceneSrg::m_meshBuffers[meshVertexTangentArrayIndex].Load3(tangentOffset)) * barycentrics[i]; + vertexData.m_tangent += asfloat(RayTracingSceneSrg::m_meshBuffers[meshVertexTangentArrayIndex].Load4(tangentOffset)) * barycentrics[i]; } // bitangent @@ -123,6 +123,9 @@ VertexData GetHitInterpolatedVertexData(RayTracingSceneSrg::MeshInfo meshInfo, f } vertexData.m_normal = normalize(vertexData.m_normal); + vertexData.m_tangent.xyz = normalize(vertexData.m_tangent.xyz); + vertexData.m_tangent.w = clamp(vertexData.m_tangent.w, -1.0f, 1.0f); + vertexData.m_bitangent = normalize(vertexData.m_bitangent); return vertexData; } \ No newline at end of file From ec511dce76bc421958bd2e967aa8a3c4ba001525 Mon Sep 17 00:00:00 2001 From: Doug McDiarmid Date: Wed, 23 Jun 2021 14:25:21 -0700 Subject: [PATCH 4/7] Fixed ray tracing tangent stream format. --- .../Feature/Common/Code/Source/Mesh/MeshFeatureProcessor.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gems/Atom/Feature/Common/Code/Source/Mesh/MeshFeatureProcessor.cpp b/Gems/Atom/Feature/Common/Code/Source/Mesh/MeshFeatureProcessor.cpp index 7594661ed7..67d150c5b6 100644 --- a/Gems/Atom/Feature/Common/Code/Source/Mesh/MeshFeatureProcessor.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/Mesh/MeshFeatureProcessor.cpp @@ -706,7 +706,7 @@ namespace AZ static const char* UVSemantic = "UV"; static const RHI::Format PositionStreamFormat = RHI::Format::R32G32B32_FLOAT; static const RHI::Format NormalStreamFormat = RHI::Format::R32G32B32_FLOAT; - static const RHI::Format TangentStreamFormat = RHI::Format::R32G32B32_FLOAT; + static const RHI::Format TangentStreamFormat = RHI::Format::R32G32B32A32_FLOAT; static const RHI::Format BitangentStreamFormat = RHI::Format::R32G32B32_FLOAT; static const RHI::Format UVStreamFormat = RHI::Format::R32G32_FLOAT; From 6b3a3769230002c1736bd470f6a2c811ba4d9adf Mon Sep 17 00:00:00 2001 From: Doug McDiarmid Date: Wed, 23 Jun 2021 15:13:42 -0700 Subject: [PATCH 5/7] Updated DiffuseProbeGrid raytracing precompiled shaders. --- .../diffuseprobegridraytracing.azshader | Bin 79466 -> 79466 bytes ...probegridraytracing_dx12_0.azshadervariant | Bin 34738 -> 34730 bytes ...probegridraytracing_null_0.azshadervariant | Bin 4502 -> 4502 bytes ...obegridraytracing_vulkan_0.azshadervariant | Bin 36332 -> 36332 bytes ...fuseprobegridraytracingclosesthit.azshader | Bin 79476 -> 79476 bytes ...aytracingclosesthit_dx12_0.azshadervariant | Bin 17150 -> 17142 bytes ...aytracingclosesthit_null_0.azshadervariant | Bin 4502 -> 4502 bytes ...tracingclosesthit_vulkan_0.azshadervariant | Bin 9452 -> 9420 bytes .../diffuseprobegridraytracingmiss.azshader | Bin 79470 -> 79470 bytes ...egridraytracingmiss_dx12_0.azshadervariant | Bin 17222 -> 17218 bytes ...egridraytracingmiss_null_0.azshadervariant | Bin 4502 -> 4502 bytes ...ridraytracingmiss_vulkan_0.azshadervariant | Bin 10364 -> 10364 bytes 12 files changed, 0 insertions(+), 0 deletions(-) diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing.azshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing.azshader index 746ae357ee6493061a828bd02010fab4308b1164..0ee43ff483c1bc40be1aa47c98d3bcd3514d2a4f 100644 GIT binary patch delta 61 zcmV-D0K)(3>;&rU1hCU-2*)z=EHIA&$g|sNDrN{3vm9OVI&^Kb4bVAd2nEL2giRSr Tp|?&o0TclU@Xd#}4*&oFa48uy delta 61 zcmV-D0K)(3>;&rU1hCU-2$E^PP)Gy&%Cp;PDrN}M+IrO+9OyK&4bVAd2zlmEd9u&P Tg11gJ0TclUPX6#yi~s-t#S0ue diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing_dx12_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing_dx12_0.azshadervariant index 841c5defe397a93b9ac9346dc55af05aecb8f5b1..55da637088c652d8c7c5cfb5a9f48ddc87d81e36 100644 GIT binary patch delta 5403 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 KAMD_NB>w~($=f@PH6a0e5NYS@ppW?%l>Z~ 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 diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit.azshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit.azshader index 0f42cd04d6971885c5d9acfd0d5665eee62d132a..dfa0452d92caa22fe6e72fe43774d3eaa05662b2 100644 GIT binary patch delta 68 zcmV-K0K5P6>;&}e1hCy{2qw(R_?TJzU9;tBDrN|puw@FDdgD}+z-lYALeLIn2-Bx* a_2*)_{gc6JDwl#a0qO|w%`_~A0002_w<0Y7 delta 68 zcmV-K0K5P6>;&}e1hCy{2y|UDwiMpjzq93ODrN}D9Ej9I_hC|#z-lYALeLIn2-k6e aK;#n{wUfbWDwl#a0qO`&{`4dl00020Cm(A7 diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit_dx12_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit_dx12_0.azshadervariant index 49bc94767aedae5096c5fa48da27aea383be0522..9719005653f0e0568259f8ad87cf1e2feac9f131 100644 GIT binary patch delta 4610 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 UfXuI%-lD4GjrAoZ)G`bI4G@DMoB#j- delta 4426 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 b*qw(*5tLst5lMM+pb= diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingmiss.azshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingmiss.azshader index 77a0f94f97ef16c456dbd0c1838c5b664280de7c..56293a54570651d08b6d589f6f9abb906a0a4407 100644 GIT binary patch delta 64 zcmV-G0Kfn4>;&%Y1hCg>2;OBJe$;&%Y1hCg>2t=}|NB17gy0hPDDrN||?+xaP;cct45zskh2vu`rWTNDe WrIWjADwljU0qO`&{_i($00010p&x1h diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingmiss_dx12_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingmiss_dx12_0.azshadervariant index c144350c7ff1c7da6a32247b50d0e80f1d29ce31..6330dfa3c86ca4ac1caec2d720ee2aa5b958b351 100644 GIT binary patch delta 1208 zcmZvbZA?>V6vv;Zx4rjLXnQLaL1<|!)GCg(D-@xd-V22AQdvjLg0jpKSgireZo*5Z!cYnEJs@m#ltR_Jt28=j4CR z@1K*LoNx~e^}s--R9yK>!hLhf7z^IpkT?Gn1&KtoUz+`fy|}uts3b2O;eBf_?k#`v zXwdL_69fR*^#BNBIVTpyv9Ry}Ak_e5a95@4c$z>u0CfNd4~ba2y3CBl7%DdAi|K_$ znaJ|Io%)zrLQLrSu zf7P7I*zHb^IRS9gb0=oFM;vy^L$!)~L6Oa+Sn?~vF2w^zaoLqt>{m<&(=IcL=X6p? zm2PJgq1v>$pnRq_DeO;+_|t5RVrF5@PJh}xD6b02rx)ZefnaiCc*BtAQs=LMBeOj! zb;h2PN4t70;9Thmb-C~5@m|g117{p9a5Glgrgk@5y$+wZ&4KMWC)lYa+F9@6K5t7O zRu#oQ(t4X&@4-G|i;ieLy$jR zNS;{4Ewr%RB6+Nn+;@l{Tf|EMzaJGpixOHesM#jXGEH7IJBqa5Nrs(z-#Q@Rj>tcSVn!${m&)w)0wH5*70OK4!7}u2dX>nQjvZJ=yx-~ z%_!uBHljvtHRN*_wM#r0K%-fmxxv*PuHu@tkqE91CJxQhk&ACHU8*)yJA-TNZ1?$N zr#^4et=gjcB!@MUm0y}Eag|T`1NZ)>W(W(>>}$Wn)7<&&fB4i@!)M$6tXUP=r5_bv zKq*QtY?u%T%l*kEKsZbZhY-rQbtdxJTRLT&o&jTVUBH5bQz!f5Q!5Ub2G(XB$QtN3 zy=ZuGBK1|N1UL9_+(=GwsvSOCHNM-WAxmg|-%5nK!eID%ASCsmA+Vh*fUjS9~R!LRXXq-tE)qR)KNtq#Cc&ZJOXUl9N`<1#2xh zUqc>TZlaRVMpHI1g}WQv^#-)d)Br>1vdIK9IQ-24zUesLsB5J8*FfXm=ReV+9#L;J z#VK`TfYDjp1bED?XlPY E7b!Ef)c^nh delta 1059 zcma)5ZA@Eb6n@`(FSmD13oR|CT?@T1=!yd@U!|oj^vejO%sO3cWYJ=AW2|gtGg-En zwWXy+LMHeU!#-5N1vQJNh=en60eE=_s5fyJkNQ~ zd2*7I2*Yb(7~L(*-#PMSdK^*TgMF1vs}E6}BSJ@nHFX}F(_+01EiVpD57BN(PpS7_ z{3ZkdcxnO2V`~Eo8w&>p0Iv)H6|*edfhp$|0Js4Oe&w*Tv)zuf9s%2Sp5-mp*zHmt z0P7s|OZ`r!ReTx3AJL;C8fF;zV;|;KN!8lgvDx85r7th4!H5gB&Ok4vsXK+n^5-h$ zi|iP7U%7l7#O%jVkEGR?;oemjY>aX5x$^I4IjXi2Wv8&hz7_5aX?ViYcG+IBEri9M z{961>V*PVlgYbEd9Xu}Kk$9a*I*RKoH!VxS;0@q-mGoa=78U#RxWwMf&^F9Pib707MIVG0nRk`fA%^Wjy(%XR zF>%#82ItW1E}!&H(W!u~Yx~+7Sr!+~teV!YKE3{h(=OPDTB>9)#=KB90O257s@{MM zbE)PpLh#z^quf`_b>}xfcfT$2Z8I>5`eYt=q??#Bai{5yY4nC}KTk$3(n`wIXcmAz zJ4ixF9nbX(#7L>H;iO4-AMSn+b?N)qyw~)4 zNHdt>9HD=o^r$^1;wJDM+PvlBhxx-ac7Ot(ffX!jfz}3WZ)g`jI(}w@5Vf;9;=PXg?|7BuQJAA6p>%3jT1d_^AcB za?9~spoAwAm=!#hzgY0V)s?)<@%ht} From 22ab33a3f4584155b07cf3c9da50262494387f71 Mon Sep 17 00:00:00 2001 From: Doug McDiarmid Date: Wed, 23 Jun 2021 15:35:55 -0700 Subject: [PATCH 6/7] Updated DiffuseProbeGrid raytracing precompiled shaders --- .../RayTracing/RayTracingSceneUtils.azsli | 2 +- .../diffuseprobegridraytracing.azshader | Bin 79466 -> 79466 bytes ...probegridraytracing_dx12_0.azshadervariant | Bin 34730 -> 34730 bytes ...probegridraytracing_null_0.azshadervariant | Bin 4502 -> 4502 bytes ...obegridraytracing_vulkan_0.azshadervariant | Bin 36332 -> 36332 bytes ...fuseprobegridraytracingclosesthit.azshader | Bin 79476 -> 79476 bytes ...aytracingclosesthit_dx12_0.azshadervariant | Bin 17142 -> 17142 bytes ...aytracingclosesthit_null_0.azshadervariant | Bin 4502 -> 4502 bytes ...tracingclosesthit_vulkan_0.azshadervariant | Bin 9420 -> 9420 bytes .../diffuseprobegridraytracingmiss.azshader | Bin 79470 -> 79470 bytes ...egridraytracingmiss_dx12_0.azshadervariant | Bin 17218 -> 17218 bytes ...egridraytracingmiss_null_0.azshadervariant | Bin 4502 -> 4502 bytes ...ridraytracingmiss_vulkan_0.azshadervariant | Bin 10364 -> 10364 bytes 13 files changed, 1 insertion(+), 1 deletion(-) diff --git a/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/RayTracing/RayTracingSceneUtils.azsli b/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/RayTracing/RayTracingSceneUtils.azsli index 0c4f0ccc29..8847dd09c8 100644 --- a/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/RayTracing/RayTracingSceneUtils.azsli +++ b/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/RayTracing/RayTracingSceneUtils.azsli @@ -119,7 +119,7 @@ VertexData GetHitInterpolatedVertexData(RayTracingSceneSrg::MeshInfo meshInfo, f vertexData.m_normal = normalize(vertexData.m_normal); vertexData.m_tangent.xyz = normalize(vertexData.m_tangent.xyz); - vertexData.m_tangent.w = clamp(vertexData.m_tangent.w, -1.0f, 1.0f); + vertexData.m_tangent.w = sign(vertexData.m_tangent.w); vertexData.m_bitangent = normalize(vertexData.m_bitangent); return vertexData; diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing.azshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing.azshader index 0ee43ff483c1bc40be1aa47c98d3bcd3514d2a4f..f8be95f5192b91e36ac39164ef3a998e5249a4c7 100644 GIT binary patch delta 61 zcmV-D0K)(3>;&rU1hCU-2#Z7>xKe~;#;&rU1hCU-2*)z=EHIA&$g|sNDrN{3vm9OVI&^Kb4bVAd2nEL2giRSr Tp|?&o0TclU@Xd#}4*&oFa48uy diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing_dx12_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing_dx12_0.azshadervariant index 55da637088c652d8c7c5cfb5a9f48ddc87d81e36..d3eee532726b655958f8d3c6f3304fe19a7b2a2a 100644 GIT binary patch delta 1533 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 MF?jUrF!+!E1A#ySB>(^b diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing_null_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing_null_0.azshadervariant index 4b7a7bd176ec955ca412701f831d5aee1e285df0..180baef291333f037f377ecc4d568b3174fda669 100644 GIT binary patch delta 16 XcmbQHJWY8+pCHG_*=&763=9kaGrI)* delta 16 XcmbQHJWY8+pCHGFv+djY85kGl0#NU;qGEN(XKL delta 18 acmaDeo9WGLrVUSeIX;|i-_Fm#zyJVUX9z|B diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit.azshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit.azshader index dfa0452d92caa22fe6e72fe43774d3eaa05662b2..ce93116741f2b387a029a04abeebcd9a89bc4277 100644 GIT binary patch delta 68 zcmV-K0K5P6>;&}e1hCy{2nksc6e%ELBeUgcDrN|6MZ6$nPJ=&_z-lYALeLIn2q74k a0%;5?o0Gw6Dwl#a0qO|xoCvdy0002ATp8*B delta 68 zcmV-K0K5P6>;&}e1hCy{2qw(R_?TJzU9;tBDrN|puw@FDdgD}+z-lYALeLIn2-Bx* a_2*)_{gc6JDwl#a0qO|w%`_~A0002_w<0Y7 diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit_dx12_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit_dx12_0.azshadervariant index 9719005653f0e0568259f8ad87cf1e2feac9f131..5b90c98e4ef51df6cb2f890e2b9e707328581fd9 100644 GIT binary patch delta 18 acmey?%J{97al<<&j*oLVHuo_wFaQ8o2?w_T delta 18 Zcmey?%J{97al<<&jt^%|blMmg7ywqC2ZR6s diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit_null_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit_null_0.azshadervariant index 361e3207493adbafe82138d40b7d1b6b74d7470e..08807cbca3c3edc52c1dd06424b5704d31025af1 100644 GIT binary patch delta 16 XcmbQHJWY8+pCHG_IUJk&7#J7;Hg^S} delta 16 XcmbQHJWY8+pCHGFvnD!i3=9kaHVXx9 diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit_vulkan_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit_vulkan_0.azshadervariant index c865246910827bef12b73a16a542e74e546505f0..b641b8cac0d75fdd56055acdab242915b9b145fb 100644 GIT binary patch delta 16 YcmX@(dB$_Y5fzS)b2v8lF)%Oy07L@@p#T5? delta 16 XcmX@(dB$_Y5fzRPXH9h47#J7;Lzf0_ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingmiss.azshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingmiss.azshader index 56293a54570651d08b6d589f6f9abb906a0a4407..530e25c13be872567db6b82f139b795d9f06be61 100644 GIT binary patch delta 64 zcmV-G0Kfn4>;&%Y1hCg>2>!0H0KS&;!?WLMDrN`|bEpgP>1%Sc5zskh2pO|w80Kw) W!jrpdDwljU0qO|xnmJ}e0000=&K^Ag delta 64 zcmV-G0Kfn4>;&%Y1hCg>2;OBJe$ Date: Wed, 23 Jun 2021 18:46:04 -0700 Subject: [PATCH 7/7] Added comments and updated optional stream buffer bitmasks --- .../RayTracing/RayTracingSceneSrg.azsli | 8 ++++---- .../RayTracing/RayTracingSceneUtils.azsli | 6 +++--- .../diffuseprobegridraytracing.azshader | Bin 79466 -> 79466 bytes ...probegridraytracing_dx12_0.azshadervariant | Bin 34730 -> 34730 bytes ...probegridraytracing_null_0.azshadervariant | Bin 4502 -> 4502 bytes ...obegridraytracing_vulkan_0.azshadervariant | Bin 36332 -> 36332 bytes ...fuseprobegridraytracingclosesthit.azshader | Bin 79476 -> 79476 bytes ...aytracingclosesthit_dx12_0.azshadervariant | Bin 17142 -> 17142 bytes ...aytracingclosesthit_null_0.azshadervariant | Bin 4502 -> 4502 bytes ...tracingclosesthit_vulkan_0.azshadervariant | Bin 9420 -> 9420 bytes .../diffuseprobegridraytracingmiss.azshader | Bin 79470 -> 79470 bytes ...egridraytracingmiss_dx12_0.azshadervariant | Bin 17218 -> 17218 bytes ...egridraytracingmiss_null_0.azshadervariant | Bin 4502 -> 4502 bytes ...ridraytracingmiss_vulkan_0.azshadervariant | Bin 10364 -> 10364 bytes 14 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/RayTracing/RayTracingSceneSrg.azsli b/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/RayTracing/RayTracingSceneSrg.azsli index bdc5680d31..c81426515d 100644 --- a/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/RayTracing/RayTracingSceneSrg.azsli +++ b/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/RayTracing/RayTracingSceneSrg.azsli @@ -152,10 +152,10 @@ ShaderResourceGroup RayTracingSceneSrg : SRG_RayTracingScene #define MESH_POSITION_BUFFER_OFFSET 1 #define MESH_NORMAL_BUFFER_OFFSET 2 - // buffer flag bits indicating if optional buffers are present - #define MESH_BUFFER_FLAG_TANGENT 1 - #define MESH_BUFFER_FLAG_BITANGENT 2 - #define MESH_BUFFER_FLAG_UV 3 + // buffer flag bits indicating if optional buffers are present (note: these are bit masks) + #define MESH_BUFFER_FLAG_TANGENT (1 << 0) + #define MESH_BUFFER_FLAG_BITANGENT (1 << 1) + #define MESH_BUFFER_FLAG_UV (1 << 2) // Unbounded array of mesh stream buffers: // - Index, Position, Normal stream buffers are always present diff --git a/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/RayTracing/RayTracingSceneUtils.azsli b/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/RayTracing/RayTracingSceneUtils.azsli index 8847dd09c8..b3cf1a5783 100644 --- a/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/RayTracing/RayTracingSceneUtils.azsli +++ b/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/RayTracing/RayTracingSceneUtils.azsli @@ -33,9 +33,9 @@ struct VertexData { float3 m_position; float3 m_normal; - float4 m_tangent; - float3 m_bitangent; - float2 m_uv; + float4 m_tangent; // optional: use only if MESH_BUFFER_FLAG_TANGENT in MeshData.m_bufferFlags is set + float3 m_bitangent; // optional: use only if MESH_BUFFER_FLAG_BITANGENT in MeshData.m_bufferFlags is set + float2 m_uv; // optional: use only if MESH_BUFFER_FLAG_UV in MeshData.m_bufferFlags is set }; VertexData GetHitInterpolatedVertexData(RayTracingSceneSrg::MeshInfo meshInfo, float2 builtInBarycentrics) diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing.azshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing.azshader index f8be95f5192b91e36ac39164ef3a998e5249a4c7..d33b502a16dd08ca5d0fc3ac32e73e66984b378f 100644 GIT binary patch delta 61 zcmV-D0K)(3>;&rU1hCU-2nWe^Ly<|5=d;^sDrN}ckdOb{j6_DW4bVAd2+eD)Xw|(s T?6*!e0TclU^ddgwkN^Mx%=8>y delta 61 zcmV-D0K)(3>;&rU1hCU-2#Z7>xKe~;#l0#NU;qGEN(XKL diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit.azshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit.azshader index ce93116741f2b387a029a04abeebcd9a89bc4277..dd8d5952ce92dbda5765410d2f65f9d032ef35c3 100644 GIT binary patch delta 68 zcmV-K0K5P6>;&}e1hCy{2=Jb62U3Zs#IxmTDrN}sSno?ztQ+H#z-lYALeLIn2=N{- a>*W(=f|J2&Dwl#a0qO|!CGv)@0002QkRZeW delta 68 zcmV-K0K5P6>;&}e1hCy{2nksc6e%ELBeUgcDrN|6MZ6$nPJ=&_z-lYALeLIn2q74k a0%;5?o0Gw6Dwl#a0qO|xoCvdy0002ATp8*B diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit_dx12_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit_dx12_0.azshadervariant index 5b90c98e4ef51df6cb2f890e2b9e707328581fd9..f6a665e54ea36a193b67a2c330437872faa66753 100644 GIT binary patch delta 18 acmey?%J{97al<<&jxVa8+SV~JFaQ8p`v@Qa delta 18 acmey?%J{97al<<&j*oLVHuo_wFaQ8o2?w_T diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit_null_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit_null_0.azshadervariant index 08807cbca3c3edc52c1dd06424b5704d31025af1..5280dddf705ced4f6ff39b9c6bd6449c30e0c145 100644 GIT binary patch delta 16 XcmbQHJWY8+pCHE<)lY5f7#J7;IB5n6 delta 16 XcmbQHJWY8+pCHG_IUJk&7#J7;Hg^S} diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit_vulkan_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit_vulkan_0.azshadervariant index b641b8cac0d75fdd56055acdab242915b9b145fb..dfa67b2d0257d2846fd94994a03fcdf7ab55f3d9 100644 GIT binary patch delta 16 YcmX@(dB$_Y5fzRvs-N1{F)%Oy07dl&3IG5A delta 16 YcmX@(dB$_Y5fzS)b2v8lF)%Oy07L@@p#T5? diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingmiss.azshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingmiss.azshader index 530e25c13be872567db6b82f139b795d9f06be61..0e1b365d65882a575eaef4231c4955237516c794 100644 GIT binary patch delta 64 zcmV-G0Kfn4>;&%Y1hCg>2)0pN(^clTRkPn|DrN}XVyW4kDS}J05zskh2+pWuJI@73 WY?HfcDwljU0qO|!CMq(J0000h_#F}e delta 64 zcmV-G0Kfn4>;&%Y1hCg>2>!0H0KS&;!?WLMDrN`|bEpgP>1%Sc5zskh2pO|w80Kw) W!jrpdDwljU0qO|xnmJ}e0000=&K^Ag diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingmiss_dx12_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingmiss_dx12_0.azshadervariant index fc41a85572ef8b861833d44745f66c507425d67d..1cdaa0862de17e8527d4737f7f476b854520606c 100644 GIT binary patch delta 18 ZcmX@q#(1cWaf6jJ#}_p%qX`TQ3;;v#1