#include <RadientTesseraSkinData.hpp>
Public Member Functions | |
| RADIENT_STATUS | Prepare (RadientFrameID RenderFrameID, bool PackMatrixRowMajor=true) |
| RADIENT_STATUS | GetPreparationStatus () const noexcept |
| Uint32 | GetFirstJoint () const noexcept |
| Uint32 | GetPreviousFirstJoint () const noexcept |
Tessera-side joint palettes for one skin and pose.
Each palette matrix transforms a mesh-space vertex through the inverse bind transform and the corresponding skeleton-space joint transform. The attachment-specific skeleton-to-mesh transform and the primitive transform to world space are applied separately by the renderer. The object retains its skin and pose and is not thread-safe.
|
inlinenoexcept |
Returns the structured-buffer element at which the current joint palette begins.
|
inlinenoexcept |
Returns the result of the latest preparation attempt. The status is OK while the current palette may be rendered. PENDING and failure statuses make drawables using the palette unavailable for the current frame.
|
inlinenoexcept |
Returns the structured-buffer element at which the previous joint palette begins. This equals GetFirstJoint() after initial preparation.
| RADIENT_STATUS Diligent::RadientTesseraSkinData::Prepare | ( | RadientFrameID | RenderFrameID, |
| bool | PackMatrixRowMajor = true ) |
Updates dirty pose globals and writes a new palette when their version changes. Repeated calls for the same render frame are idempotent; if the pose changes again, the current-frame palette is replaced while the previous frame remains intact. On the first unchanged subsequent frame, both roles are pointed at the current half so motion vectors become zero. On the first successful preparation, both roles reference the populated half. A failed attempt makes the palette unavailable; the first subsequent successful preparation initializes both roles again.