Added DiffuseGlobalIlluminationFeatureProcessor and moved the DiffuseProbeGrid files to the DiffuseGlobalIllumination directory

main
Doug McDiarmid 5 years ago
parent 92130b4ac7
commit fefa46dd6a

@ -37,6 +37,9 @@ ShaderResourceGroup PassSrg : SRG_PerPass
AddressV = Clamp;
AddressW = Clamp;
};
// scale multiplier of the downsampled size to the fullscreen size (e.g., 4)
uint m_imageScale;
}
#include <Atom/RPI/ShaderResourceGroups/DefaultDrawSrg.azsli>
@ -148,13 +151,10 @@ float3 SampleGlobalIBL(uint sampleIndex, uint2 screenCoords, float depth, float3
PSOutput MainPS(VSOutput IN, in uint sampleIndex : SV_SampleIndex)
{
uint2 screenCoords = IN.m_position.xy;
// [GFX TODO][ATOM-6172] Add image scale PassSrg constant to the DiffuseProbeGrid downsample/upsample
const uint ImageScale = 4;
const float ImageScaleInverse = 1.0f / ImageScale;
float imageScaleInverse = 1.0f / PassSrg::m_imageScale;
// compute image coords for the downsampled probe irradiance image
uint2 probeIrradianceCoords = screenCoords * ImageScaleInverse;
uint2 probeIrradianceCoords = screenCoords * imageScaleInverse;
float depth = PassSrg::m_depth.Load(screenCoords, sampleIndex).r;
float4 encodedNormal = PassSrg::m_normal.Load(screenCoords, sampleIndex);
@ -165,7 +165,7 @@ PSOutput MainPS(VSOutput IN, in uint sampleIndex : SV_SampleIndex)
float3 diffuse = float3(0.0f, 0.0f, 0.0f);
if (useProbeIrradiance > 0.0f)
{
float3 irradiance = SampleProbeIrradiance(sampleIndex, probeIrradianceCoords, depth, normal, albedo, ImageScale);
float3 irradiance = SampleProbeIrradiance(sampleIndex, probeIrradianceCoords, depth, normal, albedo, PassSrg::m_imageScale);
diffuse = (albedo.rgb / PI) * irradiance;
}
else

@ -31,6 +31,9 @@ ShaderResourceGroup PassSrg : SRG_PerPass
AddressV = Clamp;
AddressW = Clamp;
};
// scale multiplier of the downsampled size to the fullscreen size (e.g., 4)
uint m_outputImageScale;
}
#include <Atom/RPI/ShaderResourceGroups/DefaultDrawSrg.azsli>
@ -56,16 +59,13 @@ struct PSOutput
// Pixel Shader
PSOutput MainPS(VSOutput IN, in uint sampleIndex : SV_SampleIndex)
{
// the downsample is 1/4 resolution
// [GFX TODO][ATOM-6172] Add image scale PassSrg constant to the DiffuseProbeGrid downsample/upsample
const uint ImageScale = 4;
uint2 screenCoords = IN.m_position.xy * ImageScale;
uint2 screenCoords = IN.m_position.xy * PassSrg::m_outputImageScale;
float downsampledDepth = 0;
float4 downsampledEncodedNormal;
for (uint y = 0; y < ImageScale; ++y)
for (uint y = 0; y < PassSrg::m_outputImageScale; ++y)
{
for (uint x = 0; x < ImageScale; ++x)
for (uint x = 0; x < PassSrg::m_outputImageScale; ++x)
{
float depth = PassSrg::m_depth.Load(screenCoords + int2(x, y), sampleIndex).r;
float4 encodedNormal = PassSrg::m_normal.Load(screenCoords + int2(x, y), sampleIndex);

@ -0,0 +1,40 @@
/*
* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
* its licensors.
*
* For complete copyright and license terms please see the LICENSE at the root of this
* distribution (the "License"). All use of this software is governed by the License,
* or, if provided, by the license below or the license accompanying this file. Do not
* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*
*/
#pragma once
#include <AzCore/base.h>
#include <Atom/RPI.Public/FeatureProcessor.h>
namespace AZ
{
namespace Render
{
enum class DiffuseGlobalIlluminationQualityLevel : uint8_t
{
Low,
Medium,
High
};
//! This class provides general features and configuration for the diffuse global illumination environment,
//! which consists of DiffuseProbeGrids and the diffuse Global IBL cubemap.
class DiffuseGlobalIlluminationFeatureProcessorInterface
: public RPI::FeatureProcessor
{
public:
AZ_RTTI(AZ::Render::DiffuseProbeGridFeatureProcessorInterface, "{BD8CA35A-47C3-4FD8-932B-18495EF07527}");
virtual void SetQualityLevel(DiffuseGlobalIlluminationQualityLevel qualityLevel) = 0;
};
} // namespace Render
} // namespace AZ

@ -91,14 +91,15 @@
#include <RayTracing/RayTracingAccelerationStructurePass.h>
#include <RayTracing/RayTracingPass.h>
#include <RayTracing/RayTracingPassData.h>
#include <DiffuseProbeGrid/DiffuseProbeGridRayTracingPass.h>
#include <DiffuseProbeGrid/DiffuseProbeGridBlendIrradiancePass.h>
#include <DiffuseProbeGrid/DiffuseProbeGridBlendDistancePass.h>
#include <DiffuseProbeGrid/DiffuseProbeGridBorderUpdatePass.h>
#include <DiffuseProbeGrid/DiffuseProbeGridRelocationPass.h>
#include <DiffuseProbeGrid/DiffuseProbeGridClassificationPass.h>
#include <DiffuseProbeGrid/DiffuseProbeGridRenderPass.h>
#include <DiffuseProbeGrid/DiffuseProbeGridFeatureProcessor.h>
#include <DiffuseGlobalIllumination/DiffuseProbeGridRayTracingPass.h>
#include <DiffuseGlobalIllumination/DiffuseProbeGridBlendIrradiancePass.h>
#include <DiffuseGlobalIllumination/DiffuseProbeGridBlendDistancePass.h>
#include <DiffuseGlobalIllumination/DiffuseProbeGridBorderUpdatePass.h>
#include <DiffuseGlobalIllumination/DiffuseProbeGridRelocationPass.h>
#include <DiffuseGlobalIllumination/DiffuseProbeGridClassificationPass.h>
#include <DiffuseGlobalIllumination/DiffuseProbeGridRenderPass.h>
#include <DiffuseGlobalIllumination/DiffuseProbeGridFeatureProcessor.h>
#include <DiffuseGlobalIllumination/DiffuseGlobalIlluminationFeatureProcessor.h>
#include <ReflectionScreenSpace/ReflectionScreenSpaceBlurPass.h>
#include <ReflectionScreenSpace/ReflectionScreenSpaceBlurChildPass.h>
#include <ReflectionScreenSpace/ReflectionCopyFrameBufferPass.h>
@ -135,6 +136,7 @@ namespace AZ
LightingPreset::Reflect(context);
ModelPreset::Reflect(context);
DiffuseProbeGridFeatureProcessor::Reflect(context);
DiffuseGlobalIlluminationFeatureProcessor::Reflect(context);
RayTracingFeatureProcessor::Reflect(context);
if (SerializeContext* serialize = azrtti_cast<SerializeContext*>(context))
@ -191,6 +193,7 @@ namespace AZ
AZ::RPI::FeatureProcessorFactory::Get()->RegisterFeatureProcessor<ReflectionProbeFeatureProcessor>();
AZ::RPI::FeatureProcessorFactory::Get()->RegisterFeatureProcessor<SMAAFeatureProcessor>();
AZ::RPI::FeatureProcessorFactory::Get()->RegisterFeatureProcessor<DiffuseProbeGridFeatureProcessor>();
AZ::RPI::FeatureProcessorFactory::Get()->RegisterFeatureProcessor<DiffuseGlobalIlluminationFeatureProcessor>();
AZ::RPI::FeatureProcessorFactory::Get()->RegisterFeatureProcessor<RayTracingFeatureProcessor>();
// Add SkyBox pass
@ -285,6 +288,7 @@ namespace AZ
void CommonSystemComponent::Deactivate()
{
AZ::RPI::FeatureProcessorFactory::Get()->UnregisterFeatureProcessor<RayTracingFeatureProcessor>();
AZ::RPI::FeatureProcessorFactory::Get()->UnregisterFeatureProcessor<DiffuseGlobalIlluminationFeatureProcessor>();
AZ::RPI::FeatureProcessorFactory::Get()->UnregisterFeatureProcessor<DiffuseProbeGridFeatureProcessor>();
AZ::RPI::FeatureProcessorFactory::Get()->UnregisterFeatureProcessor<SMAAFeatureProcessor>();
AZ::RPI::FeatureProcessorFactory::Get()->UnregisterFeatureProcessor<ReflectionProbeFeatureProcessor>();

@ -0,0 +1,113 @@
/*
* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
* its licensors.
*
* For complete copyright and license terms please see the LICENSE at the root of this
* distribution (the "License"). All use of this software is governed by the License,
* or, if provided, by the license below or the license accompanying this file. Do not
* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*
*/
#include <AzCore/Serialization/SerializeContext.h>
#include <Atom/RPI.Public/RPIUtils.h>
#include <Atom/RPI.Public/Scene.h>
#include <Atom/RPI.Public/Pass/PassFilter.h>
#include <Atom/RPI.Public/Pass/FullscreenTrianglePass.h>
#include <DiffuseGlobalIllumination/DiffuseGlobalIlluminationFeatureProcessor.h>
namespace AZ
{
namespace Render
{
void DiffuseGlobalIlluminationFeatureProcessor::Reflect(ReflectContext* context)
{
if (auto* serializeContext = azrtti_cast<SerializeContext*>(context))
{
serializeContext
->Class<DiffuseGlobalIlluminationFeatureProcessor, FeatureProcessor>()
->Version(0);
}
}
void DiffuseGlobalIlluminationFeatureProcessor::Activate()
{
EnableSceneNotification();
}
void DiffuseGlobalIlluminationFeatureProcessor::Deactivate()
{
DisableSceneNotification();
}
void DiffuseGlobalIlluminationFeatureProcessor::SetQualityLevel(DiffuseGlobalIlluminationQualityLevel qualityLevel)
{
m_qualityLevel = qualityLevel;
UpdatePasses();
}
void DiffuseGlobalIlluminationFeatureProcessor::OnRenderPipelinePassesChanged([[maybe_unused]] RPI::RenderPipeline* renderPipeline)
{
UpdatePasses();
}
void DiffuseGlobalIlluminationFeatureProcessor::OnRenderPipelineAdded([[maybe_unused]] RPI::RenderPipelinePtr pipeline)
{
UpdatePasses();
}
void DiffuseGlobalIlluminationFeatureProcessor::UpdatePasses()
{
float sizeMultiplier = 0.0f;
switch (m_qualityLevel)
{
case DiffuseGlobalIlluminationQualityLevel::Low:
sizeMultiplier = 0.25f;
break;
case DiffuseGlobalIlluminationQualityLevel::Medium:
sizeMultiplier = 0.5f;
break;
case DiffuseGlobalIlluminationQualityLevel::High:
sizeMultiplier = 1.0f;
break;
default:
AZ_Assert(false, "Unknown DiffuseGlobalIlluminationQualityLevel [%d]", m_qualityLevel);
break;
}
// update the size multiplier on the DiffuseProbeGridDownsamplePass output
AZStd::vector<Name> downsamplePassHierarchy = { Name("DiffuseGlobalIlluminationPass"), Name("DiffuseProbeGridDownsamplePass") };
RPI::PassHierarchyFilter downsamplePassFilter(downsamplePassHierarchy);
const AZStd::vector<RPI::Pass*>& downsamplePasses = RPI::PassSystemInterface::Get()->FindPasses(downsamplePassFilter);
for (RPI::Pass* pass : downsamplePasses)
{
for (uint32_t outputIndex = 0; outputIndex < pass->GetOutputCount(); ++outputIndex)
{
RPI::Ptr<RPI::PassAttachment> outputAttachment = pass->GetOutputBinding(outputIndex).m_attachment;
RPI::PassAttachmentSizeMultipliers& sizeMultipliers = outputAttachment->m_sizeMultipliers;
sizeMultipliers.m_widthMultiplier = sizeMultiplier;
sizeMultipliers.m_heightMultiplier = sizeMultiplier;
}
// set the output scale on the PassSrg
RPI::FullscreenTrianglePass* downsamplePass = static_cast<RPI::FullscreenTrianglePass*>(pass);
auto constantIndex = downsamplePass->GetShaderResourceGroup()->FindShaderInputConstantIndex(Name("m_outputImageScale"));
downsamplePass->GetShaderResourceGroup()->SetConstant(constantIndex, aznumeric_cast<uint32_t>(1.0f / sizeMultiplier));
}
// update the image scale on the DiffuseComposite pass
AZStd::vector<Name> compositePassHierarchy = { Name("DiffuseGlobalIlluminationPass"), Name("DiffuseCompositePass") };
RPI::PassHierarchyFilter compositePassFilter(compositePassHierarchy);
const AZStd::vector<RPI::Pass*>& compositePasses = RPI::PassSystemInterface::Get()->FindPasses(compositePassFilter);
for (RPI::Pass* pass : compositePasses)
{
RPI::FullscreenTrianglePass* compositePass = static_cast<RPI::FullscreenTrianglePass*>(pass);
auto constantIndex = compositePass->GetShaderResourceGroup()->FindShaderInputConstantIndex(Name("m_imageScale"));
compositePass->GetShaderResourceGroup()->SetConstant(constantIndex, aznumeric_cast<uint32_t>(1.0f / sizeMultiplier));
}
}
} // namespace Render
} // namespace AZ

@ -0,0 +1,52 @@
/*
* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
* its licensors.
*
* For complete copyright and license terms please see the LICENSE at the root of this
* distribution (the "License"). All use of this software is governed by the License,
* or, if provided, by the license below or the license accompanying this file. Do not
* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*
*/
#pragma once
#include <Atom/Feature/DiffuseGlobalIllumination/DiffuseGlobalIlluminationFeatureProcessorInterface.h>
namespace AZ
{
namespace Render
{
//! This class provides general features and configuration for the diffuse global illumination environment,
//! which consists of DiffuseProbeGrids and the diffuse Global IBL cubemap.
class DiffuseGlobalIlluminationFeatureProcessor final
: public DiffuseGlobalIlluminationFeatureProcessorInterface
{
public:
AZ_RTTI(AZ::Render::DiffuseGlobalIlluminationFeatureProcessor, "{14F7DF46-AA2C-49EF-8A2C-0A7CB7390BB7}", DiffuseGlobalIlluminationFeatureProcessorInterface);
static void Reflect(AZ::ReflectContext* context);
DiffuseGlobalIlluminationFeatureProcessor() = default;
virtual ~DiffuseGlobalIlluminationFeatureProcessor() = default;
void Activate() override;
void Deactivate() override;
// DiffuseGlobalIlluminationFeatureProcessorInterface overrides
void SetQualityLevel(DiffuseGlobalIlluminationQualityLevel qualityLevel) override;
private:
AZ_DISABLE_COPY_MOVE(DiffuseGlobalIlluminationFeatureProcessor);
// RPI::SceneNotificationBus::Handler overrides
void OnRenderPipelinePassesChanged(RPI::RenderPipeline* renderPipeline) override;
void OnRenderPipelineAdded(RPI::RenderPipelinePtr pipeline) override;
void UpdatePasses();
DiffuseGlobalIlluminationQualityLevel m_qualityLevel = DiffuseGlobalIlluminationQualityLevel::Low;
};
} // namespace Render
} // namespace AZ

@ -12,7 +12,7 @@
#include <Atom/RHI.Reflect/ShaderResourceGroupLayoutDescriptor.h>
#include <Atom/RPI.Public/Shader/ShaderResourceGroup.h>
#include <DiffuseProbeGrid/DiffuseProbeGrid.h>
#include <DiffuseGlobalIllumination/DiffuseProbeGrid.h>
#include <Atom/RPI.Public/Image/StreamingImage.h>
#include <Atom/RPI.Public/View.h>
#include <Atom/RHI/RHISystemInterface.h>

@ -17,7 +17,7 @@
#include <Atom/RPI.Public/Scene.h>
#include <AzCore/Math/Random.h>
#include <AzCore/Math/Aabb.h>
#include <DiffuseProbeGrid/DiffuseProbeGridTextureReadback.h>
#include <DiffuseGlobalIllumination/DiffuseProbeGridTextureReadback.h>
namespace AZ
{

@ -10,7 +10,6 @@
*
*/
#include <DiffuseProbeGrid/DiffuseProbeGridBlendDistancePass.h>
#include <Atom/RHI/Factory.h>
#include <Atom/RHI/FrameGraphInterface.h>
#include <Atom/RHI/FrameGraphAttachmentInterface.h>
@ -18,7 +17,8 @@
#include <Atom/RPI.Public/Pass/PassUtils.h>
#include <Atom/RPI.Public/RenderPipeline.h>
#include <Atom/RPI.Public/RPIUtils.h>
#include <DiffuseProbeGrid/DiffuseProbeGridFeatureProcessor.h>
#include <DiffuseGlobalIllumination/DiffuseProbeGridFeatureProcessor.h>
#include <DiffuseGlobalIllumination/DiffuseProbeGridBlendDistancePass.h>
#include <RayTracing/RayTracingFeatureProcessor.h>
namespace AZ

@ -10,7 +10,6 @@
*
*/
#include <DiffuseProbeGrid/DiffuseProbeGridBlendIrradiancePass.h>
#include <Atom/RHI/Factory.h>
#include <Atom/RHI/FrameGraphInterface.h>
#include <Atom/RHI/FrameGraphAttachmentInterface.h>
@ -18,7 +17,8 @@
#include <Atom/RPI.Public/Pass/PassUtils.h>
#include <Atom/RPI.Public/RenderPipeline.h>
#include <Atom/RPI.Public/RPIUtils.h>
#include <DiffuseProbeGrid/DiffuseProbeGridFeatureProcessor.h>
#include <DiffuseGlobalIllumination/DiffuseProbeGridFeatureProcessor.h>
#include <DiffuseGlobalIllumination/DiffuseProbeGridBlendIrradiancePass.h>
#include <RayTracing/RayTracingFeatureProcessor.h>
namespace AZ

@ -10,7 +10,6 @@
*
*/
#include <DiffuseProbeGrid/DiffuseProbeGridBorderUpdatePass.h>
#include <Atom/RHI/Factory.h>
#include <Atom/RHI/FrameGraphInterface.h>
#include <Atom/RHI/FrameGraphAttachmentInterface.h>
@ -18,7 +17,8 @@
#include <Atom/RPI.Public/Pass/PassUtils.h>
#include <Atom/RPI.Public/RenderPipeline.h>
#include <Atom/RPI.Public/RPIUtils.h>
#include <DiffuseProbeGrid/DiffuseProbeGridFeatureProcessor.h>
#include <DiffuseGlobalIllumination/DiffuseProbeGridFeatureProcessor.h>
#include <DiffuseGlobalIllumination/DiffuseProbeGridBorderUpdatePass.h>
#include <RayTracing/RayTracingFeatureProcessor.h>
namespace AZ

@ -10,7 +10,6 @@
*
*/
#include <DiffuseProbeGrid/DiffuseProbeGridClassificationPass.h>
#include <Atom/RHI/Factory.h>
#include <Atom/RHI/PipelineState.h>
#include <Atom/RHI/FrameGraphInterface.h>
@ -22,7 +21,8 @@
#include <Atom/RPI.Reflect/Pass/PassTemplate.h>
#include <Atom/RPI.Public/View.h>
#include <Atom/RPI.Public/Scene.h>
#include <DiffuseProbeGrid/DiffuseProbeGridFeatureProcessor.h>
#include <DiffuseGlobalIllumination/DiffuseProbeGridFeatureProcessor.h>
#include <DiffuseGlobalIllumination/DiffuseProbeGridClassificationPass.h>
#include <RayTracing/RayTracingFeatureProcessor.h>
namespace AZ

@ -12,7 +12,6 @@
#pragma once
#include <AzCore/Memory/SystemAllocator.h>
#include <Atom/RHI/CommandList.h>
#include <Atom/RHI/DrawItem.h>
#include <Atom/RHI/ScopeProducer.h>
@ -22,7 +21,7 @@
#include <Atom/RPI.Public/Shader/ShaderResourceGroup.h>
#include <Atom/RPI.Reflect/Pass/PassName.h>
#include <Atom/RPI.Public/Image/AttachmentImage.h>
#include <DiffuseProbeGrid/DiffuseProbeGrid.h>
#include <DiffuseGlobalIllumination/DiffuseProbeGrid.h>
namespace AZ
{

@ -16,7 +16,7 @@
#include <Atom/RPI.Public/Shader/Shader.h>
#include <Atom/RPI.Public/View.h>
#include <Atom/RPI.Public/Pass/PassFilter.h>
#include <DiffuseProbeGrid/DiffuseProbeGridFeatureProcessor.h>
#include <DiffuseGlobalIllumination/DiffuseProbeGridFeatureProcessor.h>
#include <Atom/Feature/TransformService/TransformServiceFeatureProcessor.h>
#include <Atom/RHI/Factory.h>
#include <Atom/RHI/RHISystemInterface.h>

@ -12,8 +12,8 @@
#pragma once
#include <Atom/Feature/DiffuseProbeGrid/DiffuseProbeGridFeatureProcessorInterface.h>
#include <DiffuseProbeGrid/DiffuseProbeGrid.h>
#include <Atom/Feature/DiffuseGlobalIllumination/DiffuseProbeGridFeatureProcessorInterface.h>
#include <DiffuseGlobalIllumination/DiffuseProbeGrid.h>
namespace AZ
{

@ -10,7 +10,6 @@
*
*/
#include <DiffuseProbeGrid/DiffuseProbeGridRayTracingPass.h>
#include <Atom/RHI/CommandList.h>
#include <Atom/RHI/DispatchRaysItem.h>
#include <Atom/RHI/Factory.h>
@ -25,7 +24,8 @@
#include <Atom/RPI.Public/RPIUtils.h>
#include <Atom/RPI.Public/View.h>
#include <Atom/Feature/TransformService/TransformServiceFeatureProcessor.h>
#include <DiffuseProbeGrid/DiffuseProbeGridFeatureProcessor.h>
#include <DiffuseGlobalIllumination/DiffuseProbeGridFeatureProcessor.h>
#include <DiffuseGlobalIllumination/DiffuseProbeGridRayTracingPass.h>
#include <RayTracing/RayTracingFeatureProcessor.h>
namespace AZ

@ -19,7 +19,7 @@
#include <Atom/RHI/RayTracingShaderTable.h>
#include <Atom/RPI.Public/RPIUtils.h>
#include <Atom/RPI.Public/Shader/ShaderResourceGroup.h>
#include <DiffuseProbeGrid/DiffuseProbeGrid.h>
#include <DiffuseGlobalIllumination/DiffuseProbeGrid.h>
namespace AZ
{

@ -10,7 +10,6 @@
*
*/
#include <DiffuseProbeGrid/DiffuseProbeGridRelocationPass.h>
#include <Atom/RHI/Factory.h>
#include <Atom/RHI/PipelineState.h>
#include <Atom/RHI/FrameGraphInterface.h>
@ -22,7 +21,8 @@
#include <Atom/RPI.Reflect/Pass/PassTemplate.h>
#include <Atom/RPI.Public/View.h>
#include <Atom/RPI.Public/Scene.h>
#include <DiffuseProbeGrid/DiffuseProbeGridFeatureProcessor.h>
#include <DiffuseGlobalIllumination/DiffuseProbeGridFeatureProcessor.h>
#include <DiffuseGlobalIllumination/DiffuseProbeGridRelocationPass.h>
#include <RayTracing/RayTracingFeatureProcessor.h>
namespace AZ

@ -12,7 +12,6 @@
#pragma once
#include <AzCore/Memory/SystemAllocator.h>
#include <Atom/RHI/CommandList.h>
#include <Atom/RHI/DrawItem.h>
#include <Atom/RHI/ScopeProducer.h>
@ -22,7 +21,7 @@
#include <Atom/RPI.Public/Shader/ShaderResourceGroup.h>
#include <Atom/RPI.Reflect/Pass/PassName.h>
#include <Atom/RPI.Public/Image/AttachmentImage.h>
#include <DiffuseProbeGrid/DiffuseProbeGrid.h>
#include <DiffuseGlobalIllumination/DiffuseProbeGrid.h>
namespace AZ
{

@ -10,12 +10,12 @@
*
*/
#include <DiffuseProbeGrid/DiffuseProbeGridRenderPass.h>
#include <DiffuseProbeGrid/DiffuseProbeGridFeatureProcessor.h>
#include <Atom/RPI.Public/Image/AttachmentImagePool.h>
#include <Atom/RPI.Public/Image/ImageSystemInterface.h>
#include <Atom/RPI.Public/RenderPipeline.h>
#include <Atom/RPI.Public/RPIUtils.h>
#include <DiffuseGlobalIllumination/DiffuseProbeGridRenderPass.h>
#include <DiffuseGlobalIllumination/DiffuseProbeGridFeatureProcessor.h>
#include <RayTracing/RayTracingFeatureProcessor.h>
namespace AZ

@ -10,8 +10,8 @@
*
*/
#include <DiffuseProbeGrid/DiffuseProbeGridTextureReadback.h>
#include <DiffuseProbeGrid/DiffuseProbeGrid.h>
#include <DiffuseGlobalIllumination/DiffuseProbeGridTextureReadback.h>
#include <DiffuseGlobalIllumination/DiffuseProbeGrid.h>
namespace AZ
{

@ -14,7 +14,7 @@
#include <Atom/RHI/ScopeProducer.h>
#include <Atom/RPI.Public/Pass/AttachmentReadback.h>
#include <Atom/RPI.Public/Pass/Pass.h>
#include <Atom/Feature/DiffuseProbeGrid/DiffuseProbeGridFeatureProcessorInterface.h>
#include <Atom/Feature/DiffuseGlobalIllumination/DiffuseProbeGridFeatureProcessorInterface.h>
namespace AZ
{

@ -119,26 +119,28 @@ set(FILES
Source/Decals/AsyncLoadTracker.h
Source/Decals/DecalTextureArrayFeatureProcessor.h
Source/Decals/DecalTextureArrayFeatureProcessor.cpp
Source/DiffuseProbeGrid/DiffuseProbeGridRayTracingPass.cpp
Source/DiffuseProbeGrid/DiffuseProbeGridRayTracingPass.h
Source/DiffuseProbeGrid/DiffuseProbeGridBlendIrradiancePass.cpp
Source/DiffuseProbeGrid/DiffuseProbeGridBlendIrradiancePass.h
Source/DiffuseProbeGrid/DiffuseProbeGridBlendDistancePass.cpp
Source/DiffuseProbeGrid/DiffuseProbeGridBlendDistancePass.h
Source/DiffuseProbeGrid/DiffuseProbeGridBorderUpdatePass.cpp
Source/DiffuseProbeGrid/DiffuseProbeGridBorderUpdatePass.h
Source/DiffuseProbeGrid/DiffuseProbeGridRelocationPass.cpp
Source/DiffuseProbeGrid/DiffuseProbeGridRelocationPass.h
Source/DiffuseProbeGrid/DiffuseProbeGridClassificationPass.cpp
Source/DiffuseProbeGrid/DiffuseProbeGridClassificationPass.h
Source/DiffuseProbeGrid/DiffuseProbeGridRenderPass.cpp
Source/DiffuseProbeGrid/DiffuseProbeGridRenderPass.h
Source/DiffuseProbeGrid/DiffuseProbeGrid.cpp
Source/DiffuseProbeGrid/DiffuseProbeGrid.h
Source/DiffuseProbeGrid/DiffuseProbeGridTextureReadback.cpp
Source/DiffuseProbeGrid/DiffuseProbeGridTextureReadback.h
Source/DiffuseProbeGrid/DiffuseProbeGridFeatureProcessor.h
Source/DiffuseProbeGrid/DiffuseProbeGridFeatureProcessor.cpp
Source/DiffuseGlobalIllumination/DiffuseProbeGridRayTracingPass.cpp
Source/DiffuseGlobalIllumination/DiffuseProbeGridRayTracingPass.h
Source/DiffuseGlobalIllumination/DiffuseProbeGridBlendIrradiancePass.cpp
Source/DiffuseGlobalIllumination/DiffuseProbeGridBlendIrradiancePass.h
Source/DiffuseGlobalIllumination/DiffuseProbeGridBlendDistancePass.cpp
Source/DiffuseGlobalIllumination/DiffuseProbeGridBlendDistancePass.h
Source/DiffuseGlobalIllumination/DiffuseProbeGridBorderUpdatePass.cpp
Source/DiffuseGlobalIllumination/DiffuseProbeGridBorderUpdatePass.h
Source/DiffuseGlobalIllumination/DiffuseProbeGridRelocationPass.cpp
Source/DiffuseGlobalIllumination/DiffuseProbeGridRelocationPass.h
Source/DiffuseGlobalIllumination/DiffuseProbeGridClassificationPass.cpp
Source/DiffuseGlobalIllumination/DiffuseProbeGridClassificationPass.h
Source/DiffuseGlobalIllumination/DiffuseProbeGridRenderPass.cpp
Source/DiffuseGlobalIllumination/DiffuseProbeGridRenderPass.h
Source/DiffuseGlobalIllumination/DiffuseProbeGrid.cpp
Source/DiffuseGlobalIllumination/DiffuseProbeGrid.h
Source/DiffuseGlobalIllumination/DiffuseProbeGridTextureReadback.cpp
Source/DiffuseGlobalIllumination/DiffuseProbeGridTextureReadback.h
Source/DiffuseGlobalIllumination/DiffuseProbeGridFeatureProcessor.h
Source/DiffuseGlobalIllumination/DiffuseProbeGridFeatureProcessor.cpp
Source/DiffuseGlobalIllumination/DiffuseGlobalIlluminationFeatureProcessor.h
Source/DiffuseGlobalIllumination/DiffuseGlobalIlluminationFeatureProcessor.cpp
Source/DisplayMapper/AcesOutputTransformPass.cpp
Source/DisplayMapper/AcesOutputTransformLutPass.cpp
Source/DisplayMapper/ApplyShaperLookupTablePass.cpp

@ -22,7 +22,8 @@ set(FILES
Include/Atom/Feature/CoreLights/SimpleSpotLightFeatureProcessorInterface.h
Include/Atom/Feature/CoreLights/ShadowConstants.h
Include/Atom/Feature/Decals/DecalFeatureProcessorInterface.h
Include/Atom/Feature/DiffuseProbeGrid/DiffuseProbeGridFeatureProcessorInterface.h
Include/Atom/Feature/DiffuseGlobalIllumination/DiffuseProbeGridFeatureProcessorInterface.h
Include/Atom/Feature/DiffuseGlobalIllumination/DiffuseGlobalIlluminationFeatureProcessorInterface.h
Include/Atom/Feature/DisplayMapper/DisplayMapperFeatureProcessorInterface.h
Include/Atom/Feature/ImageBasedLights/ImageBasedLightFeatureProcessorInterface.h
Include/Atom/Feature/Mesh/MeshFeatureProcessorInterface.h

@ -14,20 +14,12 @@
#include <AzCore/Component/Component.h>
#include <Atom/RPI.Reflect/System/AnyAsset.h>
#include <Atom/Feature/DiffuseGlobalIllumination/DiffuseGlobalIlluminationFeatureProcessorInterface.h>
namespace AZ
{
namespace Render
{
enum class DiffuseGlobalIlluminationQualityLevel : uint32_t
{
Low,
Medium,
High,
Count
};
class DiffuseGlobalIlluminationComponentConfig final
: public ComponentConfig
{

@ -11,11 +11,8 @@
*/
#include <AzCore/RTTI/BehaviorContext.h>
//#include <Atom/RPI.Public/Scene.h>
#include <Atom/RPI.Public/Scene.h>
#include <DiffuseGlobalIllumination/DiffuseGlobalIlluminationComponentController.h>
//#include <Atom/Feature/ACES/AcesDisplayMapperFeatureProcessor.h>
namespace AZ
{
@ -55,18 +52,22 @@ namespace AZ
void DiffuseGlobalIlluminationComponentController::Activate(EntityId entityId)
{
m_entityId = entityId;
AZ_UNUSED(entityId);
const RPI::Scene* scene = AZ::RPI::RPISystemInterface::Get()->GetDefaultScene().get();
m_featureProcessor = scene->GetFeatureProcessor<DiffuseGlobalIlluminationFeatureProcessorInterface>();
OnConfigChanged();
}
void DiffuseGlobalIlluminationComponentController::Deactivate()
{
//m_postProcessInterface = nullptr;
m_entityId.SetInvalid();
}
void DiffuseGlobalIlluminationComponentController::SetConfiguration(const DiffuseGlobalIlluminationComponentConfig& config)
{
m_configuration = config;
OnConfigChanged();
}
@ -77,15 +78,7 @@ namespace AZ
void DiffuseGlobalIlluminationComponentController::OnConfigChanged()
{
// Register the configuration with the AcesDisplayMapperFeatureProcessor for this scene.
//const AZ::RPI::Scene* scene = AZ::RPI::RPISystemInterface::Get()->GetDefaultScene().get();
//DisplayMapperFeatureProcessorInterface* fp = scene->GetFeatureProcessor<DisplayMapperFeatureProcessorInterface>();
//DisplayMapperConfigurationDescriptor desc;
//desc.m_operationType = m_configuration.m_displayMapperOperation;
//desc.m_ldrGradingLutEnabled = m_configuration.m_ldrColorGradingLutEnabled;
//desc.m_ldrColorGradingLut = m_configuration.m_ldrColorGradingLut;
//desc.m_acesParameterOverrides = m_configuration.m_acesParameterOverrides;
//fp->RegisterDisplayMapperConfiguration(desc);
m_featureProcessor->SetQualityLevel(m_configuration.m_qualityLevel);
}
} // namespace Render

@ -14,12 +14,9 @@
#include <AzCore/Component/Component.h>
#include <AzCore/Component/TransformBus.h>
#include <Atom/Feature/DiffuseGlobalIllumination/DiffuseGlobalIlluminationFeatureProcessorInterface.h>
#include <DiffuseGlobalIllumination/DiffuseGlobalIlluminationComponentConfig.h>
//#include <Atom/Feature/PostProcess/PostProcessSettingsInterface.h>
//#include <Atom/Feature/PostProcess/PostProcessFeatureProcessorInterface.h>
namespace AZ
{
namespace Render
@ -49,7 +46,7 @@ namespace AZ
void OnConfigChanged();
DiffuseGlobalIlluminationComponentConfig m_configuration;
EntityId m_entityId;
DiffuseGlobalIlluminationFeatureProcessorInterface* m_featureProcessor = nullptr;
};
}
}

@ -15,7 +15,7 @@
#include <AzCore/Asset/AssetCommon.h>
#include <AzCore/Component/Component.h>
#include <AzCore/Component/TransformBus.h>
#include <Atom/Feature/DiffuseProbeGrid/DiffuseProbeGridFeatureProcessorInterface.h>
#include <Atom/Feature/DiffuseGlobalIllumination/DiffuseProbeGridFeatureProcessorInterface.h>
#include <Atom/RPI.Public/Model/Model.h>
#include <LmbrCentral/Shape/BoxShapeComponentBus.h>
#include <DiffuseGlobalIllumination/DiffuseProbeGridComponentConstants.h>

Loading…
Cancel
Save