Open 3D Engine Atom Gem API Reference
24.09
O3DE is an open-source, fully-featured, high-fidelity, modular 3D engine for building games and simulations, available to every industry.
|
This feature processor handles static and dynamic non-skinned meshes. More...
#include <MeshFeatureProcessor.h>
Inherits AZ::Render::MeshFeatureProcessorInterface.
Public Types | |
using | FlagRegistry = RHI::TagBitRegistry< RPI::Cullable::FlagType > |
Public Types inherited from AZ::Render::MeshFeatureProcessorInterface | |
using | MeshHandle = StableDynamicArrayHandle< ModelDataInstance > |
Public Member Functions | |
AZ_RTTI (AZ::Render::MeshFeatureProcessor, "{6E3DFA1D-22C7-4738-A3AE-1E10AB88B29B}", AZ::Render::MeshFeatureProcessorInterface) | |
AZ_CONSOLEFUNC (MeshFeatureProcessor, ReportShaderOptionFlags, AZ::ConsoleFunctorFlags::Null, "Report currently used shader option flags.") | |
void | Activate () override |
Creates pools, buffers, and buffer views. | |
void | Deactivate () override |
Releases GPU resources. | |
void | Simulate (const FeatureProcessor::SimulatePacket &packet) override |
Updates GPU buffers with latest data from render proxies. | |
void | OnEndCulling (const RenderPacket &packet) override |
Updates ViewSrgs with per-view instance data for visible instances. | |
void | OnBeginPrepareRender () override |
void | OnEndPrepareRender () override |
TransformServiceFeatureProcessorInterface::ObjectId | GetObjectId (const MeshHandle &meshHandle) const override |
Returns the object id for a mesh handle. | |
MeshHandle | AcquireMesh (const MeshHandleDescriptor &descriptor) override |
Acquire a mesh handle for a model configured using the descriptor. | |
bool | ReleaseMesh (MeshHandle &meshHandle) override |
Releases the mesh handle. | |
MeshHandle | CloneMesh (const MeshHandle &meshHandle) override |
Creates a new instance and handle of a mesh using an existing MeshId. Currently, this will reset the new mesh to default materials. | |
void | PrintDrawPacketInfo (const MeshHandle &meshHandle) override |
Print out info about the mesh draw packet. | |
void | SetDrawItemEnabled (const MeshHandle &meshHandle, RHI::DrawListTag drawListTag, bool enabled) override |
Enables/Disables the mesh's DrawItem for the given drawListTag. | |
Data::Instance< RPI::Model > | GetModel (const MeshHandle &meshHandle) const override |
Gets the underlying RPI::Model instance for a meshHandle. May be null if the model has not loaded. | |
Data::Asset< RPI::ModelAsset > | GetModelAsset (const MeshHandle &meshHandle) const override |
Gets the underlying RPI::ModelAsset for a meshHandle. | |
const RPI::MeshDrawPacketLods & | GetDrawPackets (const MeshHandle &meshHandle) const override |
const AZStd::vector< Data::Instance< RPI::ShaderResourceGroup > > & | GetObjectSrgs (const MeshHandle &meshHandle) const override |
void | QueueObjectSrgForCompile (const MeshHandle &meshHandle) const override |
Queues the object srg for compile. | |
void | SetCustomMaterials (const MeshHandle &meshHandle, const Data::Instance< RPI::Material > &material) override |
void | SetCustomMaterials (const MeshHandle &meshHandle, const CustomMaterialMap &materials) override |
Sets the CustomMaterialMap for a meshHandle. | |
const CustomMaterialMap & | GetCustomMaterials (const MeshHandle &meshHandle) const override |
Gets the CustomMaterialMap for a meshHandle. | |
void | SetTransform (const MeshHandle &meshHandle, const AZ::Transform &transform, const AZ::Vector3 &nonUniformScale=AZ::Vector3::CreateOne()) override |
Transform | GetTransform (const MeshHandle &meshHandle) override |
Gets the transform for a given mesh handle. | |
Vector3 | GetNonUniformScale (const MeshHandle &meshHandle) override |
Gets the non-uniform scale for a given mesh handle. | |
void | SetLocalAabb (const MeshHandle &meshHandle, const AZ::Aabb &localAabb) override |
Sets the local space bbox for a given mesh handle. You don't need to call this for static models, only skinned/animated models. | |
AZ::Aabb | GetLocalAabb (const MeshHandle &meshHandle) const override |
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. | |
void | SetSortKey (const MeshHandle &meshHandle, RHI::DrawItemSortKey sortKey) override |
Sets the sort key for a given mesh handle. | |
RHI::DrawItemSortKey | GetSortKey (const MeshHandle &meshHandle) const override |
Gets the sort key for a given mesh handle. | |
void | SetLightingChannelMask (const MeshHandle &meshHandle, uint32_t lightingChannelMask) override |
Sets the lighting channel mask for a given mesh handle. | |
uint32_t | GetLightingChannelMask (const MeshHandle &meshHandle) const override |
Gets the lighting channel mask for a given mesh handle. | |
void | SetMeshLodConfiguration (const MeshHandle &meshHandle, const RPI::Cullable::LodConfiguration &meshLodConfig) override |
Sets LOD mesh configurations to be used in the Mesh Feature Processor. | |
RPI::Cullable::LodConfiguration | GetMeshLodConfiguration (const MeshHandle &meshHandle) const override |
Gets the LOD mesh configurations being used in the Mesh Feature Processor. | |
void | SetExcludeFromReflectionCubeMaps (const MeshHandle &meshHandle, bool excludeFromReflectionCubeMaps) override |
Sets the option to exclude this mesh from baked reflection probe cubemaps. | |
bool | GetExcludeFromReflectionCubeMaps (const MeshHandle &meshHandle) const override |
Gets the if this mesh is excluded from baked reflection probe cubemaps. | |
void | SetIsAlwaysDynamic (const MeshHandle &meshHandle, bool isAlwaysDynamic) override |
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. | |
bool | GetIsAlwaysDynamic (const MeshHandle &meshHandle) const override |
Gets if a mesh is considered to always be moving. | |
void | SetRayTracingEnabled (const MeshHandle &meshHandle, bool enabled) override |
Sets the option to exclude this mesh from raytracing. | |
bool | GetRayTracingEnabled (const MeshHandle &meshHandle) const override |
Gets whether this mesh is excluded from raytracing. | |
void | SetVisible (const MeshHandle &meshHandle, bool visible) override |
Sets the mesh as visible or hidden. When the mesh is hidden it will not be rendered by the feature processor. | |
bool | GetVisible (const MeshHandle &meshHandle) const override |
void | SetUseForwardPassIblSpecular (const MeshHandle &meshHandle, bool useForwardPassIblSpecular) override |
Sets the mesh to render IBL specular in the forward pass. | |
void | SetRayTracingDirty (const MeshHandle &meshHandle) override |
Set a flag that the ray tracing data needs to be updated, usually after material changes. | |
RHI::Ptr< FlagRegistry > | GetShaderOptionFlagRegistry () |
void | UpdateMeshReflectionProbes () |
void | ReportShaderOptionFlags (const AZ::ConsoleCommandContainer &arguments) |
RayTracingFeatureProcessor * | GetRayTracingFeatureProcessor () const |
ReflectionProbeFeatureProcessor * | GetReflectionProbeFeatureProcessor () const |
TransformServiceFeatureProcessor * | GetTransformServiceFeatureProcessor () const |
RHI::DrawListTag | GetTransparentDrawListTag () const |
MeshInstanceManager & | GetMeshInstanceManager () |
bool | IsMeshInstancingEnabled () const |
Public Member Functions inherited from AZ::Render::MeshFeatureProcessorInterface | |
AZ_RTTI (AZ::Render::MeshFeatureProcessorInterface, "{975D7F0C-2E7E-4819-94D0-D3C4E2024721}", AZ::RPI::FeatureProcessor) | |
virtual void | SetTransform (const MeshHandle &meshHandle, const Transform &transform, const Vector3 &nonUniformScale=Vector3::CreateOne())=0 |
Sets the transform for a given mesh handle. | |
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 | ApplyRenderPipelineChange ([[maybe_unused]] RenderPipeline *pipeline) |
virtual void | AddRenderPasses ([[maybe_unused]] 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 | OnRenderEnd () |
Static Public Member Functions | |
static void | Reflect (AZ::ReflectContext *context) |
Additional Inherited Members | |
Protected Member Functions inherited from AZ::RPI::FeatureProcessor | |
void | EnableSceneNotification () |
void | DisableSceneNotification () |
This feature processor handles static and dynamic non-skinned meshes.
|
overridevirtual |
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.
Implements AZ::Render::MeshFeatureProcessorInterface.
|
overridevirtual |
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.
Implements AZ::Render::MeshFeatureProcessorInterface.
|
overridevirtual |
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.
Implements AZ::Render::MeshFeatureProcessorInterface.
|
overridevirtual |
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.
Implements AZ::Render::MeshFeatureProcessorInterface.