Skip to content

Commit

Permalink
PopcornFX Gem 2.20.0
Browse files Browse the repository at this point in the history
  • Loading branch information
PopcornFX Bot committed Aug 30, 2024
1 parent f8e4e6c commit f281683
Show file tree
Hide file tree
Showing 27 changed files with 154 additions and 141 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/draft-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,4 @@ jobs:
name: "O3DE Plugin: ${{ github.ref_name }}"
body: "PopcornFX Plugin ${{ github.ref_name }} for O3DE\n\n
You can download the PopcornFX Editor and find the full changelog here:\n
https://wiki.popcornfx.com/index.php?title=PK-Editor_${{ env.MINOR_VERSION }}#Changelog_${{ env.VERSION }}"
https://wiki.popcornfx.com/index.php?title=PK-Editor_${{ env.SHORT }}#Changelog_${{ env.MINOR_VERSION }}"
2 changes: 1 addition & 1 deletion Assets/shaders/Common/PopcornOptions.azsli
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,5 @@

#pragma once

#define PK_O3DE_LIT_MULTI_VIEW 0
#define PK_O3DE_LIT_MULTI_VIEW 1

2 changes: 1 addition & 1 deletion Code/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# https://www.popcornfx.com/terms-and-conditions/
#----------------------------------------------------------------------------

set(POPCORNFX_VERSION 2.19.7)
set(POPCORNFX_VERSION 2.20.0)
set(POPCORNFX_LICENSE O3DE)

o3de_pal_dir(pal_dir ${CMAKE_CURRENT_LIST_DIR}/Platform/${PAL_PLATFORM_NAME} "${gem_restricted_path}" "${gem_path}" "${gem_name}")
Expand Down
8 changes: 4 additions & 4 deletions Code/Platform/Linux/PAL_linux.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@
set(LY_PACKAGE_SERVER_URLS ${LY_PACKAGE_SERVER_URLS} "https://downloads.popcornfx.com/o3de-packages")
if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86_64")
set(package_name PopcornFX-${POPCORNFX_VERSION}-${POPCORNFX_LICENSE}-linux)
set(pk_package_hash f443ddb42b335f2fe90783a68ac36d6a43464ee2a7fef627a07d25009d0e3059)
set(pk_package_id JSDb9nAxnaGksduz)
set(pk_package_hash ac6f32f010c4673e836195891eec2b6c7d0eda319028f83c47d3e2f183bc5bab)
set(pk_package_id ULXePOUoS6FLJFVq)
elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "aarch64")
set(package_name PopcornFX-${POPCORNFX_VERSION}-${POPCORNFX_LICENSE}-linux-aarch64)
set(pk_package_hash f443ddb42b335f2fe90783a68ac36d6a43464ee2a7fef627a07d25009d0e3059_ARM64)
set(pk_package_id JSDb9nAxnaGksduz_ARM64)
set(pk_package_hash ac6f32f010c4673e836195891eec2b6c7d0eda319028f83c47d3e2f183bc5bab_ARM64)
set(pk_package_id ULXePOUoS6FLJFVq_ARM64)
else()
message(FATAL_ERROR "Unsupported linux architecture ${CMAKE_SYSTEM_PROCESSOR}")
endif()
Expand Down
4 changes: 2 additions & 2 deletions Code/Platform/Mac/PAL_mac.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@

set(LY_PACKAGE_SERVER_URLS ${LY_PACKAGE_SERVER_URLS} "https://downloads.popcornfx.com/o3de-packages")
set(package_name PopcornFX-${POPCORNFX_VERSION}-${POPCORNFX_LICENSE}-mac)
set(pk_package_hash 1e720bcb429c7e3b6a42ff7b74ba5dfcbe377d92bced9d3b62a16ce2ea017979)
set(pk_package_id GTqdTuQ1VmyZIm3f)
set(pk_package_hash e66f6aceb7a5e19d77a1138f9175c0be96f3689166a3e224ab8550e9380448d8)
set(pk_package_id 81pLLJxsVi4w3k7w)

ly_associate_package(PACKAGE_NAME ${package_name} TARGETS PopcornFX PACKAGE_HASH ${pk_package_hash})
pk_download_package_ifn(${package_name} ${pk_package_id})
Expand Down
4 changes: 2 additions & 2 deletions Code/Platform/Windows/PAL_windows.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@

set(LY_PACKAGE_SERVER_URLS ${LY_PACKAGE_SERVER_URLS} "https://downloads.popcornfx.com/o3de-packages")
set(package_name PopcornFX-${POPCORNFX_VERSION}-${POPCORNFX_LICENSE}-windows)
set(pk_package_hash 9b1d3358d7a9da07e6c3ff230e79acff853de78351105773f379b7855959dc82)
set(pk_package_id CjtFjAonhAZRd3gZ)
set(pk_package_hash ac6800c08e7f5809bbe49c779e91d91ae238471f6db293b99a45034fd49ef51d)
set(pk_package_id m70mDawO2bZQXsWK)

ly_associate_package(PACKAGE_NAME ${package_name} TARGETS PopcornFX PACKAGE_HASH ${pk_package_hash})
pk_download_package_ifn(${package_name} ${pk_package_id})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ bool PopcornFXAttributeList::Prepare(const CParticleAttributeList *defaultList)
}

//Re-match attributes
if (defaultList->AttributeList().Count() == 0)
if (defaultList->UniqueAttributeList().Count() == 0)
{
m_Attributes.clear();
m_AttributesRawData.clear();
Expand Down
10 changes: 5 additions & 5 deletions Code/Source/Components/Emitter/PopcornFXEmitter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -346,23 +346,23 @@ namespace PopcornFX {
AZ::u32 PopcornFXEmitter::GetAttributesCount() const
{
if (m_Asset != null && m_Asset->m_Effect->AttributeFlatList() != null)
return m_Asset->m_Effect->AttributeFlatList()->AttributeList().Count();
return m_Asset->m_Effect->AttributeFlatList()->UniqueAttributeList().Count();
else
return 0U;
}

AZStd::string PopcornFXEmitter::GetAttributeName(CGuid id) const
{
if (m_Asset != null && m_Asset->m_Effect->AttributeFlatList() != null && id < m_Asset->m_Effect->AttributeFlatList()->AttributeList().Count())
return m_Asset->m_Effect->AttributeFlatList()->AttributeList()[id]->ExportedName().Data();
if (m_Asset != null && m_Asset->m_Effect->AttributeFlatList() != null && id < m_Asset->m_Effect->AttributeFlatList()->UniqueAttributeList().Count())
return m_Asset->m_Effect->AttributeFlatList()->UniqueAttributeList()[id]->ExportedName().Data();
return "";
}

AZ::s32 PopcornFXEmitter::GetAttributeType(CGuid id) const
{
if (m_Asset->m_Effect != null && m_Asset->m_Effect->AttributeFlatList() != null && id < m_Asset->m_Effect->AttributeFlatList()->AttributeList().Count())
if (m_Asset->m_Effect != null && m_Asset->m_Effect->AttributeFlatList() != null && id < m_Asset->m_Effect->AttributeFlatList()->UniqueAttributeList().Count())
{
EBaseTypeID typeId = static_cast<EBaseTypeID>(m_Asset->m_Effect->AttributeFlatList()->AttributeList()[id]->ExportedType());
EBaseTypeID typeId = static_cast<EBaseTypeID>(m_Asset->m_Effect->AttributeFlatList()->UniqueAttributeList()[id]->ExportedType());
return static_cast<int32>(BaseTypeToO3DEPopcornFXType(typeId));
}
return static_cast<int32>(Type_Unknown);
Expand Down
20 changes: 14 additions & 6 deletions Code/Source/Integration/Preloader/PopcornFXRendererLoader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -281,14 +281,15 @@ void PopcornFXRendererLoader::_OnAssetReady(AZ::Data::Asset<AZ::Data::AssetData>

shaderSlot = shader;

AZ::RPI::ShaderOptionGroup shaderOptions = shader->GetDefaultShaderOptions();
AZ::RPI::ShaderVariantStableId variantStableId = AZ::RPI::RootShaderVariantStableId;

const bool isDepthShader = cache.m_Type == AssetType_OpaqueDepthShader || cache.m_Type == AssetType_TransparentDepthMinShader || cache.m_Type == AssetType_TransparentDepthMaxShader;

if (cache.m_Type == AssetType_MaterialShader || (isDepthShader && IsBillboardShader(cache.m_PipelineStateKey.m_UsedShader)))
{
AZ::RPI::ShaderVariantId variantId = cache.m_PipelineStateKey.GetShaderVariantId(*shader, true, isDepthShader);
AZ::RPI::ShaderVariantSearchResult searchResult = shader->FindVariantStableId(variantId);
shaderOptions = cache.m_PipelineStateKey.GetShaderOptions(*shader, true, isDepthShader);
AZ::RPI::ShaderVariantSearchResult searchResult = shader->FindVariantStableId(shaderOptions.GetShaderVariantId());
variantStableId = searchResult.GetStableId();
}

Expand All @@ -309,7 +310,7 @@ void PopcornFXRendererLoader::_OnAssetReady(AZ::Data::Asset<AZ::Data::AssetData>
m_LoadedVariants.Insert(variantID, shaderVariant.GetShaderVariantAsset());

AZ::RHI::ConstPtr<AZ::RHI::PipelineState> &pipelineStateSlot = _GetPipelineStateSlot(cache.m_Type, *pipelineStateCache);
pipelineStateSlot = _CreatePipelineStateCache(*shader, shaderVariant, cache.m_Type, cache.m_PipelineStateKey);
pipelineStateSlot = _CreatePipelineStateCache(*shader, shaderVariant, shaderOptions, cache.m_Type, cache.m_PipelineStateKey);

if (!PK_VERIFY(m_ModifiedCaches.PushBack(*pipelineStateCache).Valid()))
return;
Expand Down Expand Up @@ -508,14 +509,15 @@ void PopcornFXRendererLoader::_OnShaderVariantsReloaded(const AZ::Data::AssetId

if (pipelineStateCache != null && *pipelineStateCache != null)
{
AZ::RPI::ShaderOptionGroup shaderOptions = shader->GetDefaultShaderOptions();
AZ::RPI::ShaderVariantStableId variantStableId = AZ::RPI::RootShaderVariantStableId;

const bool isDepthShader = cache.m_Type == AssetType_OpaqueDepthShader || cache.m_Type == AssetType_TransparentDepthMinShader || cache.m_Type == AssetType_TransparentDepthMaxShader;

if (cache.m_Type == AssetType_MaterialShader || (isDepthShader && IsBillboardShader(cache.m_PipelineStateKey.m_UsedShader)))
{
AZ::RPI::ShaderVariantId variantId = cache.m_PipelineStateKey.GetShaderVariantId(*shader, true, isDepthShader);
AZ::RPI::ShaderVariantSearchResult searchResult = shader->FindVariantStableId(variantId);
shaderOptions = cache.m_PipelineStateKey.GetShaderOptions(*shader, true, isDepthShader);
AZ::RPI::ShaderVariantSearchResult searchResult = shader->FindVariantStableId(shaderOptions.GetShaderVariantId());
variantStableId = searchResult.GetStableId();
}

Expand All @@ -539,7 +541,7 @@ void PopcornFXRendererLoader::_OnShaderVariantsReloaded(const AZ::Data::AssetId
PK_SCOPEDLOCK_WRITE((*pipelineStateCache)->m_Lock);

AZ::RHI::ConstPtr<AZ::RHI::PipelineState> &pipelineStateSlot = _GetPipelineStateSlot(cache.m_Type, *pipelineStateCache);
pipelineStateSlot = _CreatePipelineStateCache(*shader, shaderVariant, cache.m_Type, cache.m_PipelineStateKey);
pipelineStateSlot = _CreatePipelineStateCache(*shader, shaderVariant, shaderOptions, cache.m_Type, cache.m_PipelineStateKey);
if (!PK_VERIFY(m_ModifiedCaches.PushBack(*pipelineStateCache).Valid()))
return;
_RemovePendingCacheDependencyIFN(*pipelineStateCache, shaderId);
Expand All @@ -558,11 +560,17 @@ void PopcornFXRendererLoader::_OnShaderVariantsReloaded(const AZ::Data::AssetId

AZ::RHI::ConstPtr<AZ::RHI::PipelineState> PopcornFXRendererLoader::_CreatePipelineStateCache( AZ::RPI::Shader &shader,
AZ::RPI::ShaderVariant &shaderVariant,
AZ::RPI::ShaderOptionGroup &shaderOptions,
EAssetType assetType,
const SPipelineStateCacheKey &key)
{
AZ::RHI::PipelineStateDescriptorForDraw pipelineStateDesc = AZ::RHI::PipelineStateDescriptorForDraw();
#if O3DE_VERSION_MAJOR >= 4 && O3DE_VERSION_MINOR >= 2
shaderVariant.ConfigurePipelineState(pipelineStateDesc, shaderOptions);
#else
AZ_UNUSED(shaderOptions);
shaderVariant.ConfigurePipelineState(pipelineStateDesc);
#endif

EPopcornFXShader usedShader = key.m_UsedShader;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@ class PopcornFXRendererLoader
const AZ::RPI::ShaderVariantId &shaderVariantId);
AZ::RHI::ConstPtr<AZ::RHI::PipelineState> _CreatePipelineStateCache( AZ::RPI::Shader &shader,
AZ::RPI::ShaderVariant &shaderVariant,
AZ::RPI::ShaderOptionGroup &shaderOptions,
EAssetType assetType,
const SPipelineStateCacheKey &key);
bool _AddTextureToLoad( const char *texturePath,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ bool CAtomPipelineCache::InitFromRendererCacheIFN(const CAtomRendererCache *rend
{
if (m_RendererSrg->HasShaderVariantKeyFallbackEntry())
{
AZ::RPI::ShaderVariantId variantId = rendererCache->m_BasicDescription.m_PipelineStateKey.GetShaderVariantId(*pipelineStateCache->m_MaterialShader, false, false);
AZ::RPI::ShaderVariantId variantId = rendererCache->m_BasicDescription.m_PipelineStateKey.GetShaderOptions(*pipelineStateCache->m_MaterialShader, false, false).GetShaderVariantId();
m_RendererSrg->SetShaderVariantKeyFallbackValue(variantId.m_key);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ const char *GetPopornFXUsedShaderPath(EPopcornFXShader shader)

//----------------------------------------------------------------------------

AZ::RPI::ShaderVariantId SPipelineStateCacheKey::GetShaderVariantId(const AZ::RPI::Shader &shader, bool precompiledOptions, bool depthOnly) const
AZ::RPI::ShaderOptionGroup SPipelineStateCacheKey::GetShaderOptions(const AZ::RPI::Shader &shader, bool precompiledOptions, bool depthOnly) const
{
static const AZ::Name valueTrue = AZ::Name("true");
static const AZ::Name valueFalse = AZ::Name("false");
Expand All @@ -117,7 +117,7 @@ AZ::RPI::ShaderVariantId SPipelineStateCacheKey::GetShaderVariantId(const AZ::RP
if (IsBillboardShader(m_UsedShader) && depthOnly)
{
shaderOptions.SetValue(AZ::Name("o_hasBillboardCapsules"), hasCapsules ? valueTrue : valueFalse);
return shaderOptions.GetShaderVariantId();
return shaderOptions;
}

// Blendmode shader options. The actual pipeline blend mode is set in PopcornFXRendererLoader.cpp.
Expand Down Expand Up @@ -163,7 +163,7 @@ AZ::RPI::ShaderVariantId SPipelineStateCacheKey::GetShaderVariantId(const AZ::RP
shaderOptions.SetValue(AZ::Name("o_hasEmissive"), hasEmissive ? valueTrue : valueFalse);
}

return shaderOptions.GetShaderVariantId();
return shaderOptions;
}

//----------------------------------------------------------------------------
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ struct SPipelineStateCacheKey
EPopcornFXShader m_UsedShader;

SPipelineStateCacheKey() : m_PipelineStateRendererFlags(0), m_BlendMode(BlendMode::BlendMode_Count), m_UsedShader(__Shader_Count) { }
AZ::RPI::ShaderVariantId GetShaderVariantId(const AZ::RPI::Shader &shader, bool precompiledOptions, bool depthOnly) const;
AZ::RPI::ShaderOptionGroup GetShaderOptions(const AZ::RPI::Shader &shader, bool precompiledOptions, bool depthOnly) const;
bool operator == (const SPipelineStateCacheKey &oth) const;
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,15 @@ bool CBillboardBatchDrawer::AreRenderersCompatible(const CRendererDataBase *rend

//----------------------------------------------------------------------------

bool CBillboardBatchDrawer::AllocBuffers(SRenderContext &ctx, const SRendererBatchDrawPass &drawPass)
bool CBillboardBatchDrawer::AllocBuffers(SRenderContext &ctx)
{
PK_NAMEDSCOPEDPROFILE("CAtomBillboardingBatchPolicy::AllocBuffers");
PK_NAMEDSCOPEDPROFILE("CBillboardBatchDrawer::AllocBuffers");

if (!PK_VERIFY(m_DrawPass != null))
return false;

const SRendererBatchDrawPass &drawPass = *m_DrawPass;

PK_ASSERT(!drawPass.m_DrawRequests.Empty());
PK_ASSERT(drawPass.m_DrawRequests.Count() == drawPass.m_RendererCaches.Count());
PK_ASSERT(drawPass.m_TotalParticleCount > 0);
Expand Down Expand Up @@ -208,9 +214,14 @@ bool CBillboardBatchDrawer::AllocBuffers(SRenderContext &ctx, const SRendererBat

//----------------------------------------------------------------------------

bool CBillboardBatchDrawer::MapBuffers(SRenderContext &ctx, const SRendererBatchDrawPass &drawPass)
bool CBillboardBatchDrawer::MapBuffers(SRenderContext &ctx)
{
AZ_UNUSED(ctx);

if (!PK_VERIFY(m_DrawPass != null))
return false;

const SRendererBatchDrawPass &drawPass = *m_DrawPass;
const u32 particleCount = drawPass.m_TotalParticleCount;
const u32 drawRequestsCount = drawPass.m_DrawRequests.Count();
CRenderManager *renderManager = m_RenderContext->m_RenderManager;
Expand Down Expand Up @@ -309,22 +320,25 @@ bool CBillboardBatchDrawer::MapBuffers(SRenderContext &ctx, const SRendererBatch

//----------------------------------------------------------------------------

bool CBillboardBatchDrawer::UnmapBuffers(SRenderContext &ctx, const SRendererBatchDrawPass &drawPass)
bool CBillboardBatchDrawer::UnmapBuffers(SRenderContext &ctx)
{
AZ_UNUSED(ctx);
AZ_UNUSED(drawPass);
CRenderManager *renderManager = m_RenderContext->m_RenderManager;
GetCurBuffers().UnmapAll(renderManager);
return true;
}

//----------------------------------------------------------------------------

bool CBillboardBatchDrawer::EmitDrawCall(SRenderContext &ctx, const SRendererBatchDrawPass &drawPass, const SDrawCallDesc &toEmit)
bool CBillboardBatchDrawer::EmitDrawCall(SRenderContext &ctx, const SDrawCallDesc &toEmit)
{
AZ_UNUSED(ctx);
SAtomRenderContext::SDrawCall dc;

if (!PK_VERIFY(m_DrawPass != null))
return false;

SAtomRenderContext::SDrawCall dc;
const SRendererBatchDrawPass &drawPass = *m_DrawPass;
const u32 particleCount = drawPass.m_TotalParticleCount;
const u32 drawRequestsCount = drawPass.m_DrawRequests.Count();
const CParticleBuffers::SViewIndependent &viewIndependent = GetCurBuffers().m_ViewIndependent;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,10 @@ class CBillboardBatchDrawer : public CRendererBatchJobs_Billboard_GPUBB,
virtual ~CBillboardBatchDrawer();

virtual bool AreRenderersCompatible(const CRendererDataBase *rendererA, const CRendererDataBase *rendererB) const override;
virtual bool AllocBuffers(SRenderContext &ctx, const SRendererBatchDrawPass &drawPass) override;
virtual bool MapBuffers(SRenderContext &ctx, const SRendererBatchDrawPass &drawPass) override;
virtual bool UnmapBuffers(SRenderContext &ctx, const SRendererBatchDrawPass &drawPass) override;
virtual bool EmitDrawCall(SRenderContext &ctx, const SRendererBatchDrawPass &drawPass, const SDrawCallDesc &toEmit) override;
virtual bool AllocBuffers(SRenderContext &ctx) override;
virtual bool MapBuffers(SRenderContext &ctx) override;
virtual bool UnmapBuffers(SRenderContext &ctx) override;
virtual bool EmitDrawCall(SRenderContext &ctx, const SDrawCallDesc &toEmit) override;

private:
// Additional fields mapped buffers:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,47 +41,14 @@ bool CLightBatchDrawer::AreRenderersCompatible(const CRendererDataBase *renderer

//----------------------------------------------------------------------------

bool CLightBatchDrawer::AllocBuffers(SRenderContext &ctx, const SRendererBatchDrawPass &drawPass)
bool CLightBatchDrawer::EmitDrawCall(SRenderContext &ctx, const SDrawCallDesc &toEmit)
{
AZ_UNUSED(drawPass);
PK_SCOPEDPROFILE();
PK_ASSERT(!drawPass.m_DrawRequests.Empty());
PK_ASSERT(drawPass.m_DrawRequests.Count() == drawPass.m_RendererCaches.Count());
PK_ASSERT(drawPass.m_TotalParticleCount > 0);
PK_ASSERT(drawPass.m_DrawRequests.First() != null && drawPass.m_RendererCaches.First() != null);

if (m_RenderContext == null)
{
m_RenderContext = static_cast<SAtomRenderContext*>(&ctx);
PK_ASSERT(m_RenderContext != null);
}
return true;
}

//----------------------------------------------------------------------------

bool CLightBatchDrawer::MapBuffers(SRenderContext &ctx, const SRendererBatchDrawPass &drawPass)
{
AZ_UNUSED(ctx);
AZ_UNUSED(drawPass);
return true;
}

//----------------------------------------------------------------------------

bool CLightBatchDrawer::UnmapBuffers(SRenderContext &ctx, const SRendererBatchDrawPass &drawPass)
{
AZ_UNUSED(ctx);
AZ_UNUSED(drawPass);
return true;
}

//----------------------------------------------------------------------------

bool CLightBatchDrawer::EmitDrawCall(SRenderContext &ctx, const SRendererBatchDrawPass &drawPass, const SDrawCallDesc &toEmit)
{
AZ_UNUSED(ctx);
AZ_UNUSED(drawPass);
if (!PK_VERIFY(m_RenderContext->m_Lights.Reserve(m_RenderContext->m_Lights.Count() + toEmit.m_TotalParticleCount)))
return false;
for (u32 iDr = 0; iDr < toEmit.m_DrawRequests.Count(); ++iDr)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,13 @@ class CLightBatchDrawer : public CRendererBatchJobs_Light_Std,
virtual ~CLightBatchDrawer();

virtual bool AreRenderersCompatible(const CRendererDataBase *rendererA, const CRendererDataBase *rendererB) const override;
virtual bool AllocBuffers(SRenderContext &ctx, const SRendererBatchDrawPass &drawPass) override;
virtual bool MapBuffers(SRenderContext &ctx, const SRendererBatchDrawPass &drawPass) override;
virtual bool UnmapBuffers(SRenderContext &ctx, const SRendererBatchDrawPass &drawPass) override;
virtual bool EmitDrawCall(SRenderContext &ctx, const SRendererBatchDrawPass &drawPass, const SDrawCallDesc &toEmit) override;
virtual bool EmitDrawCall(SRenderContext &ctx, const SDrawCallDesc &toEmit) override;

virtual bool Step_AllocBuffers(SRenderContext &ctx) { AZ_UNUSED(ctx); return true; }
virtual bool Step_MapBuffers(SRenderContext &ctx) { AZ_UNUSED(ctx); return true; }
virtual bool Step_LaunchBillboardingTasks(SRenderContext &ctx, Drawers::PAsynchronousJob_PostRenderTasks &syncJob) { AZ_UNUSED(ctx); AZ_UNUSED(syncJob); return true; }
virtual bool Step_WaitForBillboardingTasks(SRenderContext &ctx) { AZ_UNUSED(ctx); return true; }
virtual bool Step_UnmapBuffers(SRenderContext &ctx) { AZ_UNUSED(ctx); return true; }
};

//----------------------------------------------------------------------------
Expand Down
Loading

0 comments on commit f281683

Please sign in to comment.