|
@@ -86,10 +86,8 @@ namespace AtomSampleViewer
|
|
|
|
|
|
void DiffuseGIExampleComponent::UnloadSampleScene(bool geometryOnly)
|
|
|
{
|
|
|
- AZ::RPI::ScenePtr scene = AZ::RPI::RPISystemInterface::Get()->GetDefaultScene();
|
|
|
-
|
|
|
// release meshes
|
|
|
- AZ::Render::MeshFeatureProcessorInterface* meshFeatureProcessor = scene->GetFeatureProcessor<AZ::Render::MeshFeatureProcessorInterface>();
|
|
|
+ AZ::Render::MeshFeatureProcessorInterface* meshFeatureProcessor = m_scene->GetFeatureProcessor<AZ::Render::MeshFeatureProcessorInterface>();
|
|
|
for (auto& meshHandle : m_meshHandles)
|
|
|
{
|
|
|
meshFeatureProcessor->ReleaseMesh(meshHandle);
|
|
@@ -100,19 +98,19 @@ namespace AtomSampleViewer
|
|
|
{
|
|
|
if (m_diffuseProbeGrid)
|
|
|
{
|
|
|
- AZ::Render::DiffuseProbeGridFeatureProcessorInterface* diffuseProbeGridFeatureProcessor = scene->GetFeatureProcessor<AZ::Render::DiffuseProbeGridFeatureProcessorInterface>();
|
|
|
+ AZ::Render::DiffuseProbeGridFeatureProcessorInterface* diffuseProbeGridFeatureProcessor = m_scene->GetFeatureProcessor<AZ::Render::DiffuseProbeGridFeatureProcessorInterface>();
|
|
|
diffuseProbeGridFeatureProcessor->RemoveProbeGrid(m_diffuseProbeGrid);
|
|
|
}
|
|
|
|
|
|
if (m_directionalLightHandle.IsValid())
|
|
|
{
|
|
|
- AZ::Render::DirectionalLightFeatureProcessorInterface* directionalLightFeatureProcessor = scene->GetFeatureProcessor<AZ::Render::DirectionalLightFeatureProcessorInterface>();
|
|
|
+ AZ::Render::DirectionalLightFeatureProcessorInterface* directionalLightFeatureProcessor = m_scene->GetFeatureProcessor<AZ::Render::DirectionalLightFeatureProcessorInterface>();
|
|
|
directionalLightFeatureProcessor->ReleaseLight(m_directionalLightHandle);
|
|
|
}
|
|
|
|
|
|
if (m_pointLightHandle.IsValid())
|
|
|
{
|
|
|
- AZ::Render::PointLightFeatureProcessorInterface* pointLightFeatureProcessor = scene->GetFeatureProcessor<AZ::Render::PointLightFeatureProcessorInterface>();
|
|
|
+ AZ::Render::PointLightFeatureProcessorInterface* pointLightFeatureProcessor = m_scene->GetFeatureProcessor<AZ::Render::PointLightFeatureProcessorInterface>();
|
|
|
pointLightFeatureProcessor->ReleaseLight(m_pointLightHandle);
|
|
|
}
|
|
|
}
|
|
@@ -340,8 +338,7 @@ namespace AtomSampleViewer
|
|
|
|
|
|
// point light
|
|
|
{
|
|
|
- AZ::RPI::ScenePtr scene = AZ::RPI::RPISystemInterface::Get()->GetDefaultScene();
|
|
|
- AZ::Render::PointLightFeatureProcessorInterface* pointLightFeatureProcessor = scene->GetFeatureProcessor<AZ::Render::PointLightFeatureProcessorInterface>();
|
|
|
+ AZ::Render::PointLightFeatureProcessorInterface* pointLightFeatureProcessor = m_scene->GetFeatureProcessor<AZ::Render::PointLightFeatureProcessorInterface>();
|
|
|
m_pointLightHandle = pointLightFeatureProcessor->AcquireLight();
|
|
|
pointLightFeatureProcessor->SetPosition(m_pointLightHandle, m_pointLightPos);
|
|
|
pointLightFeatureProcessor->SetRgbIntensity(m_pointLightHandle, AZ::Render::PhotometricColor<AZ::Render::PhotometricUnit::Candela>(m_pointLightIntensity * m_pointLightColor));
|
|
@@ -351,8 +348,7 @@ namespace AtomSampleViewer
|
|
|
|
|
|
// diffuse probe grid
|
|
|
{
|
|
|
- AZ::RPI::ScenePtr scene = AZ::RPI::RPISystemInterface::Get()->GetDefaultScene();
|
|
|
- AZ::Render::DiffuseProbeGridFeatureProcessorInterface* diffuseProbeGridFeatureProcessor = scene->GetFeatureProcessor<AZ::Render::DiffuseProbeGridFeatureProcessorInterface>();
|
|
|
+ AZ::Render::DiffuseProbeGridFeatureProcessorInterface* diffuseProbeGridFeatureProcessor = m_scene->GetFeatureProcessor<AZ::Render::DiffuseProbeGridFeatureProcessorInterface>();
|
|
|
AZ::Transform transform = AZ::Transform::CreateIdentity();
|
|
|
|
|
|
m_origin.Set(0.3f, -0.25f, 0.5f);
|
|
@@ -366,7 +362,7 @@ namespace AtomSampleViewer
|
|
|
m_normalBias = 0.1f;
|
|
|
diffuseProbeGridFeatureProcessor->SetNormalBias(m_diffuseProbeGrid, m_normalBias);
|
|
|
|
|
|
- AZ::Render::DiffuseGlobalIlluminationFeatureProcessorInterface* diffuseGlobalIlluminationFeatureProcessor = scene->GetFeatureProcessor<AZ::Render::DiffuseGlobalIlluminationFeatureProcessorInterface>();
|
|
|
+ AZ::Render::DiffuseGlobalIlluminationFeatureProcessorInterface* diffuseGlobalIlluminationFeatureProcessor = m_scene->GetFeatureProcessor<AZ::Render::DiffuseGlobalIlluminationFeatureProcessorInterface>();
|
|
|
diffuseGlobalIlluminationFeatureProcessor->SetQualityLevel(AZ::Render::DiffuseGlobalIlluminationQualityLevel::Medium);
|
|
|
}
|
|
|
|
|
@@ -399,8 +395,7 @@ namespace AtomSampleViewer
|
|
|
|
|
|
// directional light
|
|
|
{
|
|
|
- AZ::RPI::ScenePtr scene = AZ::RPI::RPISystemInterface::Get()->GetDefaultScene();
|
|
|
- AZ::Render::DirectionalLightFeatureProcessorInterface* directionalLightFeatureProcessor = scene->GetFeatureProcessor<AZ::Render::DirectionalLightFeatureProcessorInterface>();
|
|
|
+ AZ::Render::DirectionalLightFeatureProcessorInterface* directionalLightFeatureProcessor = m_scene->GetFeatureProcessor<AZ::Render::DirectionalLightFeatureProcessorInterface>();
|
|
|
m_directionalLightHandle = directionalLightFeatureProcessor->AcquireLight();
|
|
|
const auto lightTransform = AZ::Transform::CreateRotationZ(m_directionalLightYaw) * AZ::Transform::CreateRotationX(m_directionalLightPitch);
|
|
|
directionalLightFeatureProcessor->SetDirection(m_directionalLightHandle, lightTransform.GetBasis(1));
|
|
@@ -415,8 +410,7 @@ namespace AtomSampleViewer
|
|
|
|
|
|
// point light
|
|
|
{
|
|
|
- AZ::RPI::ScenePtr scene = AZ::RPI::RPISystemInterface::Get()->GetDefaultScene();
|
|
|
- AZ::Render::PointLightFeatureProcessorInterface* pointLightFeatureProcessor = scene->GetFeatureProcessor<AZ::Render::PointLightFeatureProcessorInterface>();
|
|
|
+ AZ::Render::PointLightFeatureProcessorInterface* pointLightFeatureProcessor = m_scene->GetFeatureProcessor<AZ::Render::PointLightFeatureProcessorInterface>();
|
|
|
m_pointLightHandle = pointLightFeatureProcessor->AcquireLight();
|
|
|
pointLightFeatureProcessor->SetPosition(m_pointLightHandle, m_pointLightPos);
|
|
|
pointLightFeatureProcessor->SetRgbIntensity(m_pointLightHandle, AZ::Render::PhotometricColor<AZ::Render::PhotometricUnit::Candela>(m_pointLightIntensity * m_pointLightColor));
|
|
@@ -426,8 +420,7 @@ namespace AtomSampleViewer
|
|
|
|
|
|
// diffuse probe grid
|
|
|
{
|
|
|
- AZ::RPI::ScenePtr scene = AZ::RPI::RPISystemInterface::Get()->GetDefaultScene();
|
|
|
- AZ::Render::DiffuseProbeGridFeatureProcessorInterface* diffuseProbeGridFeatureProcessor = scene->GetFeatureProcessor<AZ::Render::DiffuseProbeGridFeatureProcessorInterface>();
|
|
|
+ AZ::Render::DiffuseProbeGridFeatureProcessorInterface* diffuseProbeGridFeatureProcessor = m_scene->GetFeatureProcessor<AZ::Render::DiffuseProbeGridFeatureProcessorInterface>();
|
|
|
transform = AZ::Transform::CreateIdentity();
|
|
|
|
|
|
m_origin.Set(1.4f, -1.25f, 5.0f);
|
|
@@ -441,7 +434,7 @@ namespace AtomSampleViewer
|
|
|
m_normalBias = 0.4f;
|
|
|
diffuseProbeGridFeatureProcessor->SetNormalBias(m_diffuseProbeGrid, m_normalBias);
|
|
|
|
|
|
- AZ::Render::DiffuseGlobalIlluminationFeatureProcessorInterface* diffuseGlobalIlluminationFeatureProcessor = scene->GetFeatureProcessor<AZ::Render::DiffuseGlobalIlluminationFeatureProcessorInterface>();
|
|
|
+ AZ::Render::DiffuseGlobalIlluminationFeatureProcessorInterface* diffuseGlobalIlluminationFeatureProcessor = m_scene->GetFeatureProcessor<AZ::Render::DiffuseGlobalIlluminationFeatureProcessorInterface>();
|
|
|
diffuseGlobalIlluminationFeatureProcessor->SetQualityLevel(AZ::Render::DiffuseGlobalIlluminationQualityLevel::Medium);
|
|
|
}
|
|
|
|
|
@@ -465,10 +458,9 @@ namespace AtomSampleViewer
|
|
|
}
|
|
|
|
|
|
// ImGui sidebar
|
|
|
- AZ::RPI::ScenePtr scene = AZ::RPI::RPISystemInterface::Get()->GetDefaultScene();
|
|
|
- AZ::Render::DiffuseProbeGridFeatureProcessorInterface* diffuseProbeGridFeatureProcessor = scene->GetFeatureProcessor<AZ::Render::DiffuseProbeGridFeatureProcessorInterface>();
|
|
|
- AZ::Render::PointLightFeatureProcessorInterface* pointLightFeatureProcessor = scene->GetFeatureProcessor<AZ::Render::PointLightFeatureProcessorInterface>();
|
|
|
- AZ::Render::DirectionalLightFeatureProcessorInterface* directionalLightFeatureProcessor = scene->GetFeatureProcessor<AZ::Render::DirectionalLightFeatureProcessorInterface>();
|
|
|
+ AZ::Render::DiffuseProbeGridFeatureProcessorInterface* diffuseProbeGridFeatureProcessor = m_scene->GetFeatureProcessor<AZ::Render::DiffuseProbeGridFeatureProcessorInterface>();
|
|
|
+ AZ::Render::PointLightFeatureProcessorInterface* pointLightFeatureProcessor = m_scene->GetFeatureProcessor<AZ::Render::PointLightFeatureProcessorInterface>();
|
|
|
+ AZ::Render::DirectionalLightFeatureProcessorInterface* directionalLightFeatureProcessor = m_scene->GetFeatureProcessor<AZ::Render::DirectionalLightFeatureProcessorInterface>();
|
|
|
|
|
|
bool sceneChanged = false;
|
|
|
|
|
@@ -681,8 +673,6 @@ namespace AtomSampleViewer
|
|
|
|
|
|
void DiffuseGIExampleComponent::DisableGlobalIbl()
|
|
|
{
|
|
|
- AZ::RPI::ScenePtr scene = AZ::RPI::RPISystemInterface::Get()->GetDefaultScene();
|
|
|
-
|
|
|
// disable Ibl by setting the empty cubemap
|
|
|
const constexpr char* DiffuseAssetPath = "textures/default/default_iblglobalcm_ibldiffuse.dds.streamingimage";
|
|
|
const constexpr char* SpecularAssetPath = "textures/default/default_iblglobalcm_iblspecular.dds.streamingimage";
|
|
@@ -695,7 +685,7 @@ namespace AtomSampleViewer
|
|
|
AZ::RPI::AssetUtils::GetAssetByProductPath<AZ::RPI::StreamingImageAsset>
|
|
|
(SpecularAssetPath, assertTraceLevel);
|
|
|
|
|
|
- auto featureProcessor = scene->GetFeatureProcessor<AZ::Render::ImageBasedLightFeatureProcessorInterface>();
|
|
|
+ auto featureProcessor = m_scene->GetFeatureProcessor<AZ::Render::ImageBasedLightFeatureProcessorInterface>();
|
|
|
AZ_Assert(featureProcessor, "Unable to find ImageBasedLightFeatureProcessorInterface on scene.");
|
|
|
|
|
|
featureProcessor->SetDiffuseImage(diffuseImageAsset);
|
|
@@ -704,8 +694,7 @@ namespace AtomSampleViewer
|
|
|
|
|
|
void DiffuseGIExampleComponent::EnableDiffuseIbl()
|
|
|
{
|
|
|
- AZ::RPI::ScenePtr scene = AZ::RPI::RPISystemInterface::Get()->GetDefaultScene();
|
|
|
- AZ::Render::ImageBasedLightFeatureProcessorInterface* imageBaseLightFeatureProcessor = scene->GetFeatureProcessor<AZ::Render::ImageBasedLightFeatureProcessorInterface>();
|
|
|
+ AZ::Render::ImageBasedLightFeatureProcessorInterface* imageBaseLightFeatureProcessor = m_scene->GetFeatureProcessor<AZ::Render::ImageBasedLightFeatureProcessorInterface>();
|
|
|
AZ_Assert(imageBaseLightFeatureProcessor, "Unable to find ImageBasedLightFeatureProcessorInterface on scene.");
|
|
|
|
|
|
imageBaseLightFeatureProcessor->SetDiffuseImage(m_diffuseImageAsset);
|