Open 3D Engine Atom Gem API Reference  2205.0
O3DE is an open-source, fully-featured, high-fidelity, modular 3D engine for building games and simulations, available to every industry.
Public Types | Public Member Functions | List of all members
AZ::Render::MeshFeatureProcessorInterface Class Referenceabstract

MeshFeatureProcessorInterface provides an interface to acquire and release a MeshHandle from the underlying MeshFeatureProcessor. More...

#include <MeshFeatureProcessorInterface.h>

Inherits AZ::RPI::FeatureProcessor.

Inherited by AZ::Render::MeshFeatureProcessor.

Public Types

using MeshHandle = StableDynamicArrayHandle< ModelDataInstance >
 
using ModelChangedEvent = Event< const Data::Instance< RPI::Model > >
 

Public Member Functions

 AZ_RTTI (AZ::Render::MeshFeatureProcessorInterface, "{975D7F0C-2E7E-4819-94D0-D3C4E2024721}", FeatureProcessor)
 
virtual TransformServiceFeatureProcessorInterface::ObjectId GetObjectId (const MeshHandle &meshHandle) const =0
 Returns the object id for a mesh handle.
 
virtual MeshHandle AcquireMesh (const MeshHandleDescriptor &descriptor, const MaterialAssignmentMap &materials={})=0
 
virtual MeshHandle AcquireMesh (const MeshHandleDescriptor &descriptor, const Data::Instance< RPI::Material > &material)=0
 Acquires a model with a single material applied to all its meshes.
 
virtual bool ReleaseMesh (MeshHandle &meshHandle)=0
 Releases the mesh handle.
 
virtual MeshHandle CloneMesh (const MeshHandle &meshHandle)=0
 Creates a new instance and handle of a mesh using an existing MeshId. Currently, this will reset the new mesh to default materials.
 
virtual Data::Instance< RPI::ModelGetModel (const MeshHandle &meshHandle) const =0
 Gets the underlying RPI::Model instance for a meshHandle. May be null if the model has not loaded.
 
virtual Data::Asset< RPI::ModelAssetGetModelAsset (const MeshHandle &meshHandle) const =0
 Gets the underlying RPI::ModelAsset for a meshHandle.
 
virtual const AZStd::vector< Data::Instance< RPI::ShaderResourceGroup > > & GetObjectSrgs (const MeshHandle &meshHandle) const =0
 
virtual void QueueObjectSrgForCompile (const MeshHandle &meshHandle) const =0
 Queues the object srg for compile.
 
virtual void SetMaterialAssignmentMap (const MeshHandle &meshHandle, const Data::Instance< RPI::Material > &material)=0
 
virtual void SetMaterialAssignmentMap (const MeshHandle &meshHandle, const MaterialAssignmentMap &materials)=0
 Sets the MaterialAssignmentMap for a meshHandle.
 
virtual const MaterialAssignmentMap & GetMaterialAssignmentMap (const MeshHandle &meshHandle) const =0
 Gets the MaterialAssignmentMap for a meshHandle.
 
virtual void ConnectModelChangeEventHandler (const MeshHandle &meshHandle, ModelChangedEvent::Handler &handler)=0
 Connects a handler to any changes to an RPI::Model. Changes include loading and reloading.
 
virtual void SetTransform (const MeshHandle &meshHandle, const Transform &transform, const Vector3 &nonUniformScale=Vector3::CreateOne())=0
 Sets the transform for a given mesh handle.
 
virtual Transform GetTransform (const MeshHandle &meshHandle)=0
 Gets the transform for a given mesh handle.
 
virtual Vector3 GetNonUniformScale (const MeshHandle &meshHandle)=0
 Gets the non-uniform scale for a given mesh handle.
 
virtual void SetLocalAabb (const MeshHandle &meshHandle, const AZ::Aabb &localAabb)=0
 Sets the local space bbox for a given mesh handle. You don't need to call this for static models, only skinned/animated models.
 
virtual AZ::Aabb GetLocalAabb (const MeshHandle &meshHandle) const =0
 Gets the local space bbox for a given mesh handle. Unless SetLocalAabb has been called before, this will be the bbox of the model asset.
 
virtual void SetSortKey (const MeshHandle &meshHandle, RHI::DrawItemSortKey sortKey)=0
 Sets the sort key for a given mesh handle.
 
virtual RHI::DrawItemSortKey GetSortKey (const MeshHandle &meshHandle) const =0
 Gets the sort key for a given mesh handle.
 
virtual void SetMeshLodConfiguration (const MeshHandle &meshHandle, const RPI::Cullable::LodConfiguration &meshLodConfig)=0
 Sets LOD mesh configurations to be used in the Mesh Feature Processor.
 
virtual RPI::Cullable::LodConfiguration GetMeshLodConfiguration (const MeshHandle &meshHandle) const =0
 Gets the LOD mesh configurations being used in the Mesh Feature Processor.
 
virtual void SetExcludeFromReflectionCubeMaps (const MeshHandle &meshHandle, bool excludeFromReflectionCubeMaps)=0
 Sets the option to exclude this mesh from baked reflection probe cubemaps.
 
virtual void SetRayTracingEnabled (const MeshHandle &meshHandle, bool rayTracingEnabled)=0
 Sets the option to exclude this mesh from raytracing.
 
virtual bool GetRayTracingEnabled (const MeshHandle &meshHandle) const =0
 Gets whether this mesh is excluded from raytracing.
 
virtual void SetVisible (const MeshHandle &meshHandle, bool visible)=0
 Sets the mesh as visible or hidden. When the mesh is hidden it will not be rendered by the feature processor.
 
virtual void SetUseForwardPassIblSpecular (const MeshHandle &meshHandle, bool useForwardPassIblSpecular)=0
 Sets the mesh to render IBL specular in the forward pass.
 
- Public Member Functions inherited from AZ::RPI::FeatureProcessor
 AZ_RTTI (FeatureProcessor, "{B8027170-C65C-4237-964D-B557FC9D7575}")
 
 AZ_CLASS_ALLOCATOR (FeatureProcessor, AZ::SystemAllocator, 0)
 
SceneGetParentScene () const
 
virtual void Activate ()
 Perform any necessary activation and gives access to owning Scene.
 
virtual void Deactivate ()
 Perform any necessary deactivation.
 
virtual void ApplyRenderPipelineChange (RenderPipeline *)
 Apply changes and add additional render passes to the render pipeline from the feature processors.
 
virtual void PrepareViews (const PrepareViewsPacket &, AZStd::vector< AZStd::pair< PipelineViewTag, ViewPtr >> &)
 
virtual void Simulate (const SimulatePacket &)
 
virtual void Render (const RenderPacket &)
 
virtual void OnRenderEnd ()
 

Additional Inherited Members

- Protected Member Functions inherited from AZ::RPI::FeatureProcessor
void EnableSceneNotification ()
 
void DisableSceneNotification ()
 

Detailed Description

MeshFeatureProcessorInterface provides an interface to acquire and release a MeshHandle from the underlying MeshFeatureProcessor.

Member Function Documentation

◆ AcquireMesh()

virtual MeshHandle AZ::Render::MeshFeatureProcessorInterface::AcquireMesh ( const MeshHandleDescriptor descriptor,
const MaterialAssignmentMap &  materials = {} 
)
pure virtual

Acquires a model with an optional collection of material assignments.

Parameters
requiresCloneCallbackThe callback indicates whether cloning is required for a given model asset.

Implemented in AZ::Render::MeshFeatureProcessor.

◆ GetObjectSrgs()

virtual const AZStd::vector<Data::Instance<RPI::ShaderResourceGroup> >& AZ::Render::MeshFeatureProcessorInterface::GetObjectSrgs ( const MeshHandle meshHandle) const
pure virtual

Gets the ObjectSrgs for a meshHandle. Updating the ObjectSrgs should be followed by a call to QueueObjectSrgForCompile, instead of compiling the srgs directly. This way, if the srgs have already been queued for compile, they will not be queued twice in the same frame. The ObjectSrgs should not be updated during Simulate, or it will create a race between updating the data and the call to Compile Cases where there may be multiple ObjectSrgs: if a model has multiple submeshes and those submeshes use different materials with different object SRGs.

Implemented in AZ::Render::MeshFeatureProcessor.

◆ SetMaterialAssignmentMap()

virtual void AZ::Render::MeshFeatureProcessorInterface::SetMaterialAssignmentMap ( const MeshHandle meshHandle,
const Data::Instance< RPI::Material > &  material 
)
pure virtual

Sets the MaterialAssignmentMap for a meshHandle, using just a single material for the DefaultMaterialAssignmentId. Note if there is already a material assignment map, this will replace the entire map with just a single material.

Implemented in AZ::Render::MeshFeatureProcessor.


The documentation for this class was generated from the following file: