Merge branch 'main' into MultiplayerPipeline
This commit is contained in:
@@ -263,7 +263,7 @@ namespace AZ
|
||||
RHI::ImageInitRequest request;
|
||||
request.m_image = m_classificationImage[m_currentImageIndex].get();
|
||||
request.m_descriptor = RHI::ImageDescriptor::Create2D(RHI::ImageBindFlags::ShaderReadWrite, width, height, DiffuseProbeGridRenderData::ClassificationImageFormat);
|
||||
RHI::ResultCode result = m_renderData->m_imagePool->InitImage(request);
|
||||
[[maybe_unused]] RHI::ResultCode result = m_renderData->m_imagePool->InitImage(request);
|
||||
AZ_Assert(result == RHI::ResultCode::Success, "Failed to initialize m_probeClassificationImage image");
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -294,7 +294,7 @@ namespace AZ
|
||||
|
||||
// probe classification
|
||||
{
|
||||
RHI::ResultCode result = frameGraph.GetAttachmentDatabase().ImportImage(diffuseProbeGrid->GetClassificationImageAttachmentId(), diffuseProbeGrid->GetClassificationImage());
|
||||
[[maybe_unused]] RHI::ResultCode result = frameGraph.GetAttachmentDatabase().ImportImage(diffuseProbeGrid->GetClassificationImageAttachmentId(), diffuseProbeGrid->GetClassificationImage());
|
||||
AZ_Assert(result == RHI::ResultCode::Success, "Failed to import probeClassificationImage");
|
||||
|
||||
RHI::ImageScopeAttachmentDescriptor desc;
|
||||
|
||||
@@ -31,6 +31,11 @@
|
||||
#include <AzFramework/StringFunc/StringFunc.h>
|
||||
|
||||
#include <AzCore/Preprocessor/EnumReflectUtils.h>
|
||||
#include <AzCore/Console/Console.h>
|
||||
|
||||
#if defined(OPEN_IMAGE_IO_ENABLED)
|
||||
#include <OpenImageIO/imageio.h>
|
||||
#endif
|
||||
|
||||
namespace AZ
|
||||
{
|
||||
@@ -38,6 +43,41 @@ namespace AZ
|
||||
{
|
||||
AZ_ENUM_DEFINE_REFLECT_UTILITIES(FrameCaptureResult);
|
||||
|
||||
#if defined(OPEN_IMAGE_IO_ENABLED)
|
||||
AZ_CVAR(unsigned int,
|
||||
r_pngCompressionLevel,
|
||||
3, // A compression level of 3 seems like the best default in terms of file size and saving speeds
|
||||
nullptr,
|
||||
ConsoleFunctorFlags::Null,
|
||||
"Sets the compression level for saving png screenshots. Valid values are from 0 to 8"
|
||||
);
|
||||
|
||||
FrameCaptureOutputResult PngFrameCaptureOutput(
|
||||
const AZStd::string& outputFilePath, const AZ::RPI::AttachmentReadback::ReadbackResult& readbackResult)
|
||||
{
|
||||
using namespace OIIO;
|
||||
AZStd::unique_ptr<ImageOutput> out = ImageOutput::create(outputFilePath.c_str());
|
||||
if (out)
|
||||
{
|
||||
ImageSpec spec(
|
||||
readbackResult.m_imageDescriptor.m_size.m_width,
|
||||
readbackResult.m_imageDescriptor.m_size.m_height,
|
||||
AZ::RHI::GetFormatComponentCount(readbackResult.m_imageDescriptor.m_format)
|
||||
);
|
||||
spec.attribute("png:compressionLevel", r_pngCompressionLevel);
|
||||
|
||||
if (out->open(outputFilePath.c_str(), spec))
|
||||
{
|
||||
out->write_image(TypeDesc::UINT8, readbackResult.m_dataBuffer->data());
|
||||
out->close();
|
||||
return FrameCaptureOutputResult{FrameCaptureResult::Success, AZStd::nullopt};
|
||||
}
|
||||
}
|
||||
|
||||
return FrameCaptureOutputResult{FrameCaptureResult::InternalError, "Unable to save frame capture output to " + outputFilePath};
|
||||
}
|
||||
#endif
|
||||
|
||||
FrameCaptureOutputResult DdsFrameCaptureOutput(
|
||||
const AZStd::string& outputFilePath, const AZ::RPI::AttachmentReadback::ReadbackResult& readbackResult)
|
||||
{
|
||||
@@ -377,7 +417,6 @@ namespace AZ
|
||||
if (readbackResult.m_attachmentType == AZ::RHI::AttachmentType::Buffer)
|
||||
{
|
||||
// write buffer data to the data file
|
||||
|
||||
AZ::IO::FileIOStream fileStream(m_outputFilePath.c_str(), AZ::IO::OpenMode::ModeWrite | AZ::IO::OpenMode::ModeCreatePath);
|
||||
if (fileStream.IsOpen())
|
||||
{
|
||||
@@ -418,6 +457,18 @@ namespace AZ
|
||||
m_result = ddsFrameCapture.m_result;
|
||||
m_latestCaptureInfo = ddsFrameCapture.m_errorMessage.value_or("");
|
||||
}
|
||||
#if defined(OPEN_IMAGE_IO_ENABLED)
|
||||
else if (extension == "png")
|
||||
{
|
||||
AZStd::string folderPath;
|
||||
AzFramework::StringFunc::Path::GetFolderPath(m_outputFilePath.c_str(), folderPath);
|
||||
AZ::IO::SystemFile::CreateDir(folderPath.c_str());
|
||||
|
||||
const auto frameCaptureResult = PngFrameCaptureOutput(m_outputFilePath, readbackResult);
|
||||
m_result = frameCaptureResult.m_result;
|
||||
m_latestCaptureInfo = frameCaptureResult.m_errorMessage.value_or("");
|
||||
}
|
||||
#endif
|
||||
else
|
||||
{
|
||||
m_latestCaptureInfo = AZStd::string::format("Only supports saving image to ppm or dds files");
|
||||
|
||||
@@ -9,3 +9,14 @@
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
#
|
||||
|
||||
set(LY_BUILD_DEPENDENCIES
|
||||
PRIVATE
|
||||
3rdParty::OpenImageIO
|
||||
3rdParty::ilmbase
|
||||
)
|
||||
|
||||
# [GFX-TODO] Add macro defintion in OpenImageIO 3rd party find cmake file
|
||||
set(LY_COMPILE_DEFINITIONS
|
||||
PRIVATE
|
||||
OPEN_IMAGE_IO_ENABLED
|
||||
)
|
||||
|
||||
@@ -416,9 +416,7 @@ namespace AtomToolsFramework
|
||||
}
|
||||
AzFramework::ScreenPoint position = AzFramework::WorldToScreen(
|
||||
worldPosition,
|
||||
currentView->GetViewToWorldMatrix(),
|
||||
currentView->GetViewToClipMatrix(),
|
||||
AZ::Vector2{aznumeric_cast<float>(width()), aznumeric_cast<float>(height())}
|
||||
GetCameraState()
|
||||
);
|
||||
return {position.m_x, position.m_y};
|
||||
}
|
||||
|
||||
@@ -103,12 +103,15 @@ namespace AZ::Render
|
||||
void DiskLightDelegate::SetEnableShutters(bool enabled)
|
||||
{
|
||||
Base::SetEnableShutters(enabled);
|
||||
GetFeatureProcessor()->SetConstrainToConeLight(GetLightHandle(), true);
|
||||
if (GetLightHandle().IsValid())
|
||||
{
|
||||
GetFeatureProcessor()->SetConstrainToConeLight(GetLightHandle(), true);
|
||||
}
|
||||
}
|
||||
|
||||
void DiskLightDelegate::SetShutterAngles(float innerAngleDegrees, float outerAngleDegrees)
|
||||
{
|
||||
if (GetShuttersEnabled())
|
||||
if (GetShuttersEnabled() && GetLightHandle().IsValid())
|
||||
{
|
||||
GetFeatureProcessor()->SetConeAngles(GetLightHandle(), DegToRad(innerAngleDegrees), DegToRad(outerAngleDegrees));
|
||||
}
|
||||
@@ -117,12 +120,16 @@ namespace AZ::Render
|
||||
void DiskLightDelegate::SetEnableShadow(bool enabled)
|
||||
{
|
||||
Base::SetEnableShadow(enabled);
|
||||
GetFeatureProcessor()->SetShadowsEnabled(GetLightHandle(), enabled);
|
||||
|
||||
if (GetLightHandle().IsValid())
|
||||
{
|
||||
GetFeatureProcessor()->SetShadowsEnabled(GetLightHandle(), enabled);
|
||||
}
|
||||
}
|
||||
|
||||
void DiskLightDelegate::SetShadowmapMaxSize(ShadowmapSize size)
|
||||
{
|
||||
if (GetShadowsEnabled())
|
||||
if (GetShadowsEnabled() && GetLightHandle().IsValid())
|
||||
{
|
||||
GetFeatureProcessor()->SetShadowmapMaxResolution(GetLightHandle(), size);
|
||||
}
|
||||
@@ -130,7 +137,7 @@ namespace AZ::Render
|
||||
|
||||
void DiskLightDelegate::SetShadowFilterMethod(ShadowFilterMethod method)
|
||||
{
|
||||
if (GetShadowsEnabled())
|
||||
if (GetShadowsEnabled() && GetLightHandle().IsValid())
|
||||
{
|
||||
GetFeatureProcessor()->SetShadowFilterMethod(GetLightHandle(), method);
|
||||
}
|
||||
@@ -138,7 +145,7 @@ namespace AZ::Render
|
||||
|
||||
void DiskLightDelegate::SetSofteningBoundaryWidthAngle(float widthInDegrees)
|
||||
{
|
||||
if (GetShadowsEnabled())
|
||||
if (GetShadowsEnabled() && GetLightHandle().IsValid())
|
||||
{
|
||||
GetFeatureProcessor()->SetSofteningBoundaryWidthAngle(GetLightHandle(), DegToRad(widthInDegrees));
|
||||
}
|
||||
@@ -146,7 +153,7 @@ namespace AZ::Render
|
||||
|
||||
void DiskLightDelegate::SetPredictionSampleCount(uint32_t count)
|
||||
{
|
||||
if (GetShadowsEnabled())
|
||||
if (GetShadowsEnabled() && GetLightHandle().IsValid())
|
||||
{
|
||||
GetFeatureProcessor()->SetPredictionSampleCount(GetLightHandle(), count);
|
||||
}
|
||||
@@ -154,7 +161,7 @@ namespace AZ::Render
|
||||
|
||||
void DiskLightDelegate::SetFilteringSampleCount(uint32_t count)
|
||||
{
|
||||
if (GetShadowsEnabled())
|
||||
if (GetShadowsEnabled() && GetLightHandle().IsValid())
|
||||
{
|
||||
GetFeatureProcessor()->SetFilteringSampleCount(GetLightHandle(), count);
|
||||
}
|
||||
@@ -162,7 +169,7 @@ namespace AZ::Render
|
||||
|
||||
void DiskLightDelegate::SetPcfMethod(PcfMethod method)
|
||||
{
|
||||
if (GetShadowsEnabled())
|
||||
if (GetShadowsEnabled() && GetLightHandle().IsValid())
|
||||
{
|
||||
GetFeatureProcessor()->SetPcfMethod(GetLightHandle(), method);
|
||||
}
|
||||
|
||||
+8
-2
@@ -23,7 +23,10 @@ namespace AZ
|
||||
: LightDelegateBase<SimplePointLightFeatureProcessorInterface>(entityId, isVisible)
|
||||
{
|
||||
InitBase(entityId);
|
||||
GetFeatureProcessor()->SetPosition(GetLightHandle(), GetTransform().GetTranslation());
|
||||
if (GetLightHandle().IsValid())
|
||||
{
|
||||
GetFeatureProcessor()->SetPosition(GetLightHandle(), GetTransform().GetTranslation());
|
||||
}
|
||||
}
|
||||
float SimplePointLightDelegate::CalculateAttenuationRadius(float lightThreshold) const
|
||||
{
|
||||
@@ -39,7 +42,10 @@ namespace AZ
|
||||
|
||||
void SimplePointLightDelegate::HandleShapeChanged()
|
||||
{
|
||||
GetFeatureProcessor()->SetPosition(GetLightHandle(), GetTransform().GetTranslation());
|
||||
if (GetLightHandle().IsValid())
|
||||
{
|
||||
GetFeatureProcessor()->SetPosition(GetLightHandle(), GetTransform().GetTranslation());
|
||||
}
|
||||
}
|
||||
|
||||
void SimplePointLightDelegate::DrawDebugDisplay(const Transform& transform, const Color& color, AzFramework::DebugDisplayRequests& debugDisplay, bool isSelected) const
|
||||
|
||||
+9
-3
@@ -24,8 +24,11 @@ namespace AZ::Render
|
||||
|
||||
void SimpleSpotLightDelegate::HandleShapeChanged()
|
||||
{
|
||||
GetFeatureProcessor()->SetPosition(GetLightHandle(), GetTransform().GetTranslation());
|
||||
GetFeatureProcessor()->SetDirection(GetLightHandle(), GetTransform().GetBasisZ());
|
||||
if (GetLightHandle().IsValid())
|
||||
{
|
||||
GetFeatureProcessor()->SetPosition(GetLightHandle(), GetTransform().GetTranslation());
|
||||
GetFeatureProcessor()->SetDirection(GetLightHandle(), GetTransform().GetBasisZ());
|
||||
}
|
||||
}
|
||||
|
||||
float SimpleSpotLightDelegate::CalculateAttenuationRadius(float lightThreshold) const
|
||||
@@ -42,7 +45,10 @@ namespace AZ::Render
|
||||
|
||||
void SimpleSpotLightDelegate::SetShutterAngles(float innerAngleDegrees, float outerAngleDegrees)
|
||||
{
|
||||
GetFeatureProcessor()->SetConeAngles(GetLightHandle(), DegToRad(innerAngleDegrees), DegToRad(outerAngleDegrees));
|
||||
if (GetLightHandle().IsValid())
|
||||
{
|
||||
GetFeatureProcessor()->SetConeAngles(GetLightHandle(), DegToRad(innerAngleDegrees), DegToRad(outerAngleDegrees));
|
||||
}
|
||||
}
|
||||
|
||||
void SimpleSpotLightDelegate::DrawDebugDisplay(const Transform& transform, const Color& /*color*/, AzFramework::DebugDisplayRequests& debugDisplay, bool isSelected) const
|
||||
|
||||
@@ -43,6 +43,7 @@ ly_add_target(
|
||||
ly_add_target(
|
||||
NAME Blast ${PAL_TRAIT_MONOLITHIC_DRIVEN_MODULE_TYPE}
|
||||
NAMESPACE Gem
|
||||
OUTPUT_NAME Blast.Gem
|
||||
FILES_CMAKE
|
||||
blast_shared_files.cmake
|
||||
INCLUDE_DIRECTORIES
|
||||
@@ -89,8 +90,8 @@ if(PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
|
||||
ly_add_target(
|
||||
NAME Blast.Editor GEM_MODULE
|
||||
|
||||
NAMESPACE Gem
|
||||
OUTPUT_NAME Blast.Editor.Gem
|
||||
AUTOMOC
|
||||
FILES_CMAKE
|
||||
blast_editor_shared_files.cmake
|
||||
@@ -119,6 +120,7 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED)
|
||||
ly_add_target(
|
||||
NAME Blast.Tests MODULE
|
||||
NAMESPACE Gem
|
||||
OUTPUT_NAME Blast.Tests.Gem
|
||||
FILES_CMAKE
|
||||
blast_tests_files.cmake
|
||||
INCLUDE_DIRECTORIES
|
||||
@@ -142,6 +144,7 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED)
|
||||
ly_add_target(
|
||||
NAME Blast.Editor.Tests MODULE
|
||||
NAMESPACE Gem
|
||||
OUTPUT_NAME Blast.Editor.Tests.Gem
|
||||
FILES_CMAKE
|
||||
blast_editor_tests_files.cmake
|
||||
INCLUDE_DIRECTORIES
|
||||
|
||||
@@ -43,6 +43,7 @@ ly_add_target(
|
||||
ly_add_target(
|
||||
NAME NvCloth ${PAL_TRAIT_MONOLITHIC_DRIVEN_MODULE_TYPE}
|
||||
NAMESPACE Gem
|
||||
OUTPUT_NAME NvCloth.Gem
|
||||
FILES_CMAKE
|
||||
nvcloth_shared_files.cmake
|
||||
INCLUDE_DIRECTORIES
|
||||
@@ -83,8 +84,8 @@ if(PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
|
||||
ly_add_target(
|
||||
NAME NvCloth.Editor GEM_MODULE
|
||||
|
||||
NAMESPACE Gem
|
||||
OUTPUT_NAME NvCloth.Editor.Gem
|
||||
FILES_CMAKE
|
||||
nvcloth_editor_shared_files.cmake
|
||||
INCLUDE_DIRECTORIES
|
||||
@@ -109,6 +110,7 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED)
|
||||
ly_add_target(
|
||||
NAME NvCloth.Tests ${PAL_TRAIT_TEST_TARGET_TYPE}
|
||||
NAMESPACE Gem
|
||||
OUTPUT_NAME NvCloth.Tests.Gem
|
||||
FILES_CMAKE
|
||||
nvcloth_tests_files.cmake
|
||||
INCLUDE_DIRECTORIES
|
||||
@@ -134,6 +136,7 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED)
|
||||
ly_add_target(
|
||||
NAME NvCloth.Editor.Tests ${PAL_TRAIT_TEST_TARGET_TYPE}
|
||||
NAMESPACE Gem
|
||||
OUTPUT_NAME NvCloth.Editor.Tests.Gem
|
||||
FILES_CMAKE
|
||||
nvcloth_editor_tests_files.cmake
|
||||
INCLUDE_DIRECTORIES
|
||||
|
||||
@@ -52,6 +52,7 @@ ly_add_target(
|
||||
ly_add_target(
|
||||
NAME PhysX ${PAL_TRAIT_MONOLITHIC_DRIVEN_MODULE_TYPE}
|
||||
NAMESPACE Gem
|
||||
OUTPUT_NAME PhysX.Gem
|
||||
FILES_CMAKE
|
||||
${physx_shared_files}
|
||||
COMPILE_DEFINITIONS
|
||||
@@ -118,8 +119,8 @@ if(PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
|
||||
ly_add_target(
|
||||
NAME PhysX.Editor GEM_MODULE
|
||||
|
||||
NAMESPACE Gem
|
||||
OUTPUT_NAME PhysX.Editor.Gem
|
||||
AUTOMOC
|
||||
FILES_CMAKE
|
||||
physx_editor_shared_files.cmake
|
||||
@@ -147,6 +148,7 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED)
|
||||
ly_add_target(
|
||||
NAME PhysX.Tests ${PAL_TRAIT_TEST_TARGET_TYPE}
|
||||
NAMESPACE Gem
|
||||
OUTPUT_NAME PhysX.Tests.Gem
|
||||
FILES_CMAKE
|
||||
physx_tests_files.cmake
|
||||
INCLUDE_DIRECTORIES
|
||||
@@ -175,6 +177,7 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED)
|
||||
ly_add_target(
|
||||
NAME PhysX.Editor.Tests ${PAL_TRAIT_TEST_TARGET_TYPE}
|
||||
NAMESPACE Gem
|
||||
OUTPUT_NAME PhysX.Editor.Tests.Gem
|
||||
FILES_CMAKE
|
||||
physx_editor_tests_files.cmake
|
||||
INCLUDE_DIRECTORIES
|
||||
|
||||
@@ -25,6 +25,7 @@ endif()
|
||||
ly_add_target(
|
||||
NAME PhysXDebug ${PAL_TRAIT_MONOLITHIC_DRIVEN_MODULE_TYPE}
|
||||
NAMESPACE Gem
|
||||
OUTPUT_NAME PhysXDebug.Gem
|
||||
FILES_CMAKE
|
||||
${physx_files}
|
||||
INCLUDE_DIRECTORIES
|
||||
@@ -47,8 +48,8 @@ ly_add_target(
|
||||
if(PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
ly_add_target(
|
||||
NAME PhysXDebug.Editor GEM_MODULE
|
||||
|
||||
NAMESPACE Gem
|
||||
OUTPUT_NAME PhysXDebug.Editor.Gem
|
||||
FILES_CMAKE
|
||||
${physx_editor_files}
|
||||
COMPILE_DEFINITIONS
|
||||
|
||||
Reference in New Issue
Block a user