#include <HairFeatureProcessor.h>
Inherits RPI::FeatureProcessor, HairGlobalSettingsRequestBus::Handler, and AZ::TickBus::Handler.
Public Member Functions | |
AZ_RTTI (AZ::Render::Hair::HairFeatureProcessor, "{5F9DDA81-B43F-4E30-9E56-C7C3DC517A4C}", AZ::RPI::FeatureProcessor) | |
void | UpdateHairSkinning () |
bool | Init (RPI::RenderPipeline *pipeline) |
bool | IsInitialized () |
void | Activate () override |
void | Deactivate () override |
void | AddRenderPasses (RPI::RenderPipeline *renderPipeline) override |
void | Simulate (const FeatureProcessor::SimulatePacket &packet) override |
void | Render (const FeatureProcessor::RenderPacket &packet) override |
void | OnTick (float deltaTime, AZ::ScriptTimePoint time) override |
int | GetTickOrder () override |
void | AddHairRenderObject (Data::Instance< HairRenderObject > renderObject) |
bool | RemoveHairRenderObject (Data::Instance< HairRenderObject > renderObject) |
void | OnRenderPipelineChanged (AZ::RPI::RenderPipeline *pipeline, AZ::RPI::SceneNotification::RenderPipelineChangeType changeType) override |
Data::Instance< HairSkinningComputePass > | GetHairSkinningComputegPass () |
Data::Instance< HairPPLLRasterPass > | GetHairPPLLRasterPass () |
Data::Instance< RPI::Shader > | GetGeometryRasterShader () |
void | FillHairMaterialsArray (std::vector< const AMD::TressFXRenderParams * > &renderSettings) |
Update the hair objects materials array. | |
Data::Instance< RPI::Buffer > | GetPerPixelListBuffer () |
HairUniformBuffer< AMD::TressFXShadeParams > & | GetMaterialsArray () |
void | ForceRebuildRenderData () |
void | SetAddDispatchEnable (bool enable) |
void | SetEnable (bool enable) |
bool | CreatePerPassResources () |
void | GetHairGlobalSettings (HairGlobalSettings &hairGlobalSettings) override |
void | SetHairGlobalSettings (const HairGlobalSettings &hairGlobalSettings) override |
Static Public Member Functions | |
static void | Reflect (AZ::ReflectContext *context) |
The HairFeatureProcessor (FP) is the glue between the various hair components / entities in the scene and their passes / shaders. The FP will keep track of all active hair objects, will run their skinning update iteration and will then populate them into each of the passes to be computed and rendered. The overall process involves update, skinning, collision, and simulation compute, fragment raster fill, and final frame buffer OIT resolve. The last part can be switched to support the smaller foot print pass version that instead of fragments list (PPLL) will use fill screen buffers to approximate OIT layer resolve.