ソースを参照

Change Build()-> operations in RayTracingPipelineState to declarative interface

Signed-off-by: Markus Prettner <[email protected]>
Markus Prettner 2 ヶ月 前
コミット
3bf7b5976e

+ 7 - 11
Gem/Code/Source/Passes/RayTracingAmbientOcclusionPass.cpp

@@ -88,17 +88,13 @@ namespace AZ
                 GetPathName().GetCStr(), rayGenerationShaderFilePath);
                         
             RHI::RayTracingPipelineStateDescriptor descriptor;
-            descriptor.Build()
-                ->PipelineState(m_globalPipelineState.get())
-                ->ShaderLibrary(rayGenerationShaderDescriptor)
-                ->RayGenerationShaderName(AZ::Name("AoRayGen"))
-                ->ShaderLibrary(missShaderDescriptor)
-                ->MissShaderName(AZ::Name("AoMiss"))
-                ->ShaderLibrary(hitShaderDescriptor)
-                ->ClosestHitShaderName(AZ::Name("AoClosestHit"))
-                ->HitGroup(AZ::Name("ClosestHitGroup"))
-                ->ClosestHitShaderName(AZ::Name("AoClosestHit"))
-                ;
+            descriptor.m_pipelineState = m_globalPipelineState.get();
+
+            descriptor.AddRayGenerationShaderLibrary(rayGenerationShaderDescriptor, Name("AoRayGen"));
+            descriptor.AddMissShaderLibrary(missShaderDescriptor, Name("AoMiss"));
+            descriptor.AddClosestHitShaderLibrary(hitShaderDescriptor, Name("AoClosestHit"));
+
+            descriptor.AddHitGroup(Name("ClosestHitGroup"), Name("AoClosestHit"));
 
             // create the ray tracing pipeline state object
             m_rayTracingPipelineState = aznew RHI::RayTracingPipelineState;

+ 12 - 17
Gem/Code/Source/RHI/RayTracingExampleComponent.cpp

@@ -269,8 +269,8 @@ namespace AtomSampleViewer
         AZ_Assert(m_closestHitGradientShader, "Failed to load closest hit gradient shader");
 
         auto closestHitGradientShaderVariant = m_closestHitGradientShader->GetVariant(RPI::ShaderAsset::RootShaderVariantStableId);
-        RHI::PipelineStateDescriptorForRayTracing closestHitGradiantShaderDescriptor;
-        closestHitGradientShaderVariant.ConfigurePipelineState(closestHitGradiantShaderDescriptor);
+        RHI::PipelineStateDescriptorForRayTracing closestHitGradientShaderDescriptor;
+        closestHitGradientShaderVariant.ConfigurePipelineState(closestHitGradientShaderDescriptor);
 
         // load closest hit solid shader
         const char* closestHitSolidShaderFilePath = "Shaders/RHI/RayTracingClosestHitSolid.azshader";
@@ -288,21 +288,16 @@ namespace AtomSampleViewer
 
         // build the ray tracing pipeline state descriptor
         RHI::RayTracingPipelineStateDescriptor descriptor;
-        descriptor.Build()
-            ->PipelineState(m_globalPipelineState.get())
-            ->ShaderLibrary(rayGenerationShaderDescriptor)
-                ->RayGenerationShaderName(AZ::Name("RayGenerationShader"))
-            ->ShaderLibrary(missShaderDescriptor)
-                ->MissShaderName(AZ::Name("MissShader"))
-            ->ShaderLibrary(closestHitGradiantShaderDescriptor)
-                ->ClosestHitShaderName(AZ::Name("ClosestHitGradientShader"))
-            ->ShaderLibrary(closestHitSolidShaderDescriptor)
-                ->ClosestHitShaderName(AZ::Name("ClosestHitSolidShader"))
-            ->HitGroup(AZ::Name("HitGroupGradient"))
-                ->ClosestHitShaderName(AZ::Name("ClosestHitGradientShader"))
-            ->HitGroup(AZ::Name("HitGroupSolid"))
-                ->ClosestHitShaderName(AZ::Name("ClosestHitSolidShader"));
-    
+        descriptor.m_pipelineState = m_globalPipelineState.get();
+
+        descriptor.AddRayGenerationShaderLibrary(rayGenerationShaderDescriptor, Name("RayGenerationShader"));
+        descriptor.AddMissShaderLibrary(missShaderDescriptor, Name("MissShader"));
+        descriptor.AddClosestHitShaderLibrary(closestHitGradientShaderDescriptor, Name("ClosestHitGradientShader"));
+        descriptor.AddClosestHitShaderLibrary(closestHitSolidShaderDescriptor, Name("ClosestHitSolidShader"));
+
+        descriptor.AddHitGroup(Name("HitGroupGradient"), Name("ClosestHitGradientShader"));
+        descriptor.AddHitGroup(Name("HitGroupSolid"), Name("ClosestHitSolidShader"));
+
         // create the ray tracing pipeline state object
         m_rayTracingPipelineState = aznew RHI::RayTracingPipelineState;
         m_rayTracingPipelineState->Init(RHI::MultiDevice::AllDevices, descriptor);