#include <MeshFeatureProcessorInterface.h>
Inherits AZ::RPI::FeatureProcessor.
Inherited by AZ::Render::MeshFeatureProcessor, and UnitTest::MockMeshFeatureProcessor.
Public Types | |
using | MeshHandle = StableDynamicArrayHandle< ModelDataInstance > |
using | ModelChangedEvent = Event< const Data::Instance< RPI::Model > > |
using | ObjectSrgCreatedEvent = Event< const Data::Instance< RPI::ShaderResourceGroup > & > |
Public Member Functions | |
AZ_RTTI (AZ::Render::MeshFeatureProcessorInterface, "{975D7F0C-2E7E-4819-94D0-D3C4E2024721}", AZ::RPI::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 CustomMaterialMap &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::Model > | GetModel (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::ModelAsset > | GetModelAsset (const MeshHandle &meshHandle) const =0 |
Gets the underlying RPI::ModelAsset for a meshHandle. | |
virtual const RPI::MeshDrawPacketLods & | GetDrawPackets (const MeshHandle &meshHandle) const =0 |
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 | SetCustomMaterials (const MeshHandle &meshHandle, const Data::Instance< RPI::Material > &material)=0 |
virtual void | SetCustomMaterials (const MeshHandle &meshHandle, const CustomMaterialMap &materials)=0 |
Sets the CustomMaterialMap for a meshHandle. | |
virtual const CustomMaterialMap & | GetCustomMaterials (const MeshHandle &meshHandle) const =0 |
Gets the CustomMaterialMap 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 | ConnectObjectSrgCreatedEventHandler (const MeshHandle &meshHandle, ObjectSrgCreatedEvent::Handler &handler)=0 |
Connects a handler to ObjectSrg creation. | |
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 bool | GetExcludeFromReflectionCubeMaps (const MeshHandle &meshHandle) const =0 |
Gets the if this mesh is excluded from baked reflection probe cubemaps. | |
virtual void | SetIsAlwaysDynamic (const MeshHandle &meshHandle, bool isAlwaysDynamic)=0 |
Sets a mesh to be considered to be always moving even if the transform hasn't changed. This is useful for meshes that are skinned or have vertex animation. | |
virtual bool | GetIsAlwaysDynamic (const MeshHandle &meshHandle) const =0 |
Gets if a mesh is considered to always be moving. | |
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 bool | GetVisible (const MeshHandle &meshHandle) const =0 |
virtual void | SetUseForwardPassIblSpecular (const MeshHandle &meshHandle, bool useForwardPassIblSpecular)=0 |
Sets the mesh to render IBL specular in the forward pass. | |
virtual void | SetRayTracingDirty (const MeshHandle &meshHandle)=0 |
Set a flag that the ray tracing data needs to be updated, usually after material changes. | |
Public Member Functions inherited from AZ::RPI::FeatureProcessor | |
AZ_RTTI (FeatureProcessor, "{B8027170-C65C-4237-964D-B557FC9D7575}") | |
AZ_CLASS_ALLOCATOR (FeatureProcessor, AZ::SystemAllocator) | |
Scene * | GetParentScene () 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 *pipeline) |
virtual void | AddRenderPasses (RenderPipeline *pipeline) |
virtual void | PrepareViews (const PrepareViewsPacket &, AZStd::vector< AZStd::pair< PipelineViewTag, ViewPtr > > &) |
virtual void | Simulate (const SimulatePacket &) |
virtual void | Render (const RenderPacket &) |
virtual void | OnEndCulling (const RenderPacket &) |
virtual void | OnRenderEnd () |
Additional Inherited Members | |
Protected Member Functions inherited from AZ::RPI::FeatureProcessor | |
void | EnableSceneNotification () |
void | DisableSceneNotification () |
MeshFeatureProcessorInterface provides an interface to acquire and release a MeshHandle from the underlying MeshFeatureProcessor
|
pure virtual |
Acquires a model with an optional collection of custom materials.
requiresCloneCallback | The callback indicates whether cloning is required for a given model asset. |
Implemented in AZ::Render::MeshFeatureProcessor.
|
pure virtual |
Acquires a model with a single material applied to all its meshes.
Implemented in AZ::Render::MeshFeatureProcessor.
|
pure virtual |
Creates a new instance and handle of a mesh using an existing MeshId. Currently, this will reset the new mesh to default materials.
Implemented in AZ::Render::MeshFeatureProcessor.
|
pure virtual |
Connects a handler to any changes to an RPI::Model. Changes include loading and reloading.
Implemented in AZ::Render::MeshFeatureProcessor.
|
pure virtual |
Connects a handler to ObjectSrg creation.
Implemented in AZ::Render::MeshFeatureProcessor.
|
pure virtual |
Gets the CustomMaterialMap for a meshHandle.
Implemented in AZ::Render::MeshFeatureProcessor.
|
pure virtual |
This function is primarily intended for debug output and testing, by providing insight into what materials, shaders, etc. are actively being used to render the model.
Implemented in AZ::Render::MeshFeatureProcessor.
|
pure virtual |
Gets the if this mesh is excluded from baked reflection probe cubemaps.
Implemented in AZ::Render::MeshFeatureProcessor.
|
pure virtual |
Gets if a mesh is considered to always be moving.
Implemented in AZ::Render::MeshFeatureProcessor.
|
pure virtual |
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.
Implemented in AZ::Render::MeshFeatureProcessor.
|
pure virtual |
Gets the LOD mesh configurations being used in the Mesh Feature Processor.
Implemented in AZ::Render::MeshFeatureProcessor.
|
pure virtual |
Gets the underlying RPI::Model instance for a meshHandle. May be null if the model has not loaded.
Implemented in AZ::Render::MeshFeatureProcessor.
|
pure virtual |
Gets the underlying RPI::ModelAsset for a meshHandle.
Implemented in AZ::Render::MeshFeatureProcessor.
|
pure virtual |
Gets the non-uniform scale for a given mesh handle.
Implemented in AZ::Render::MeshFeatureProcessor.
|
pure virtual |
Returns the object id for a mesh handle.
Implemented in AZ::Render::MeshFeatureProcessor.
|
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.
|
pure virtual |
Gets whether this mesh is excluded from raytracing.
Implemented in AZ::Render::MeshFeatureProcessor.
|
pure virtual |
Gets the sort key for a given mesh handle.
Implemented in AZ::Render::MeshFeatureProcessor.
|
pure virtual |
Gets the transform for a given mesh handle.
Implemented in AZ::Render::MeshFeatureProcessor.
|
pure virtual |
Returns the visibility state of the mesh. This only refers to whether or not the mesh has been explicitly hidden, and is not related to view frustum visibility.
Implemented in AZ::Render::MeshFeatureProcessor.
|
pure virtual |
Queues the object srg for compile.
Implemented in AZ::Render::MeshFeatureProcessor.
|
pure virtual |
Releases the mesh handle.
Implemented in AZ::Render::MeshFeatureProcessor.
|
pure virtual |
Sets the CustomMaterialMap for a meshHandle.
Implemented in AZ::Render::MeshFeatureProcessor.
|
pure virtual |
Sets the CustomMaterialMap for a meshHandle, using just a single material for the DefaultCustomMaterialId. Note if there is already a CustomMaterialMap, this will replace the entire map with just a single material.
Implemented in AZ::Render::MeshFeatureProcessor.
|
pure virtual |
Sets the option to exclude this mesh from baked reflection probe cubemaps.
Implemented in AZ::Render::MeshFeatureProcessor.
|
pure virtual |
Sets a mesh to be considered to be always moving even if the transform hasn't changed. This is useful for meshes that are skinned or have vertex animation.
Implemented in AZ::Render::MeshFeatureProcessor.
|
pure virtual |
Sets the local space bbox for a given mesh handle. You don't need to call this for static models, only skinned/animated models.
Implemented in AZ::Render::MeshFeatureProcessor.
|
pure virtual |
Sets LOD mesh configurations to be used in the Mesh Feature Processor.
Implemented in AZ::Render::MeshFeatureProcessor.
|
pure virtual |
Set a flag that the ray tracing data needs to be updated, usually after material changes.
Implemented in AZ::Render::MeshFeatureProcessor.
|
pure virtual |
Sets the option to exclude this mesh from raytracing.
Implemented in AZ::Render::MeshFeatureProcessor.
|
pure virtual |
Sets the sort key for a given mesh handle.
Implemented in AZ::Render::MeshFeatureProcessor.
|
pure virtual |
Sets the mesh to render IBL specular in the forward pass.
Implemented in AZ::Render::MeshFeatureProcessor.
|
pure virtual |
Sets the mesh as visible or hidden. When the mesh is hidden it will not be rendered by the feature processor.
Implemented in AZ::Render::MeshFeatureProcessor.