Jolt Physics
A multi core friendly Game Physics Engine
|
#include <TriangleCodecIndexed8BitPackSOA4Flags.h>
Classes | |
class | DecodingContext |
This class is used to decode and decompress triangle data packed by the EncodingContext. More... | |
class | EncodingContext |
This class is used to encode and compress triangle data into a byte buffer. More... | |
struct | TriangleBlock |
A block of 4 triangles. More... | |
struct | TriangleBlockHeader |
A triangle header, will be followed by one or more TriangleBlocks. More... | |
class | TriangleHeader |
class | ValidationContext |
This class is used to validate that the triangle data will not be degenerate after compression. More... | |
struct | VertexData |
A single packed vertex. More... | |
Public Types | |
enum | EComponentData : uint32 { COMPONENT_BITS = 21 , COMPONENT_MASK = (1 << COMPONENT_BITS) - 1 } |
Amount of bits per component. More... | |
enum | EVertexXY : uint32 { COMPONENT_X = 0 , COMPONENT_Y1 = COMPONENT_BITS , COMPONENT_Y1_BITS = 32 - COMPONENT_BITS } |
Packed X and Y coordinate. More... | |
enum | EVertexZY : uint32 { COMPONENT_Z = 0 , COMPONENT_Y2 = COMPONENT_BITS , COMPONENT_Y2_BITS = 31 - COMPONENT_BITS } |
Packed Z and Y coordinate. More... | |
enum | ETriangleBlockHeaderFlags : uint32 { OFFSET_TO_VERTICES_BITS = 29 , OFFSET_TO_VERTICES_MASK = (1 << OFFSET_TO_VERTICES_BITS) - 1 , OFFSET_TO_USERDATA_BITS = 3 , OFFSET_TO_USERDATA_MASK = (1 << OFFSET_TO_USERDATA_BITS) - 1 } |
Static Public Attributes | |
static constexpr int | TriangleHeaderSize = sizeof(TriangleHeader) |
Size of the header (an empty struct is always > 0 bytes so this needs a separate variable) | |
static constexpr bool | ChangesOffsetOnPack = false |
If this codec could return a different offset than the current buffer size when calling Pack() | |
Store vertices in 64 bits and indices in 8 bits + 8 bit of flags per triangle like this:
TriangleBlockHeader, TriangleBlock (4 triangles and their flags in 16 bytes), TriangleBlock... [Optional] UserData (4 bytes per triangle)
Vertices are stored:
VertexData (1 vertex in 64 bits), VertexData...
They're compressed relative to the bounding box as provided by the node codec.
|
staticconstexpr |
If this codec could return a different offset than the current buffer size when calling Pack()
|
staticconstexpr |
Size of the header (an empty struct is always > 0 bytes so this needs a separate variable)