21static_assert(
sizeof(
FVertex) == 48);
29 static uint32_t
PackTBN(
const float3& normal,
const float3& tangent,
float bitangentSign);
30 static void UnpackTBN(uint32_t packed, float3& outNormal, float3& outTangent,
float& outBitangentSign);
35static_assert(
sizeof(
FQVertex) == 16);
89static_assert(
sizeof(
FMeshlet) == 68);
#define GLOBAL_ALLOC
Definition Allocator.hpp:225
float2 unpackUnitCircleSnorm(float v)
Definition Mesh.cpp:47
void buildOrthonormalBasis(float3 n, float3 &b1, float3 &b2)
Definition Mesh.cpp:13
float3 unpackUnitOctahedralSnorm(float2 v)
Definition Mesh.cpp:35
float2 packUnitOctahedralSnorm(float3 v)
Definition Mesh.cpp:28
float packUnitCircleSnorm(float2 v)
Definition Mesh.cpp:42
constexpr uint32_t kMeshletMaxTriangles
Definition Mesh.hpp:10
constexpr uint32_t kMeshletMaxVertices
Definition Mesh.hpp:9
General Purpose Allocator (GPA) interface.
Definition Allocator.hpp:24
std::vector< T, StlAllocator< T > > Vector
std::vector with explicit Foundation::Core::StlAllocator constructor
Definition Container.hpp:130
vec2 float2
Definition Math.hpp:27
vec3 float3
Definition Math.hpp:26
Definition Allocator.hpp:5
Definition Serialization.hpp:26
DAG(Allocator *alloc)
Definition Mesh.hpp:143
Vector< FMeshlet > meshlets
Definition Mesh.hpp:140
Vector< uint32_t > meshletVtx
Definition Mesh.hpp:142
Vector< FLODGroup > groups
Definition Mesh.hpp:139
Vector< uint8_t > meshletTri
Definition Mesh.hpp:141
LOD(Allocator *alloc)
Definition Mesh.hpp:134
Vector< uint32_t > indices
Definition Mesh.hpp:133
void Optimize()
Optimize vertex reuse with meshoptimizer.
Definition Mesh.cpp:324
struct FImportedMesh::DAG dag
bool EnsureRaw()
Prepares full-precision data for CPU access.
Definition Mesh.cpp:311
void Dequantize()
Dequantizes quantized vertex back into full precision representation Fills rawVertices with dequantiz...
Definition Mesh.cpp:117
bool IsQuantized() const
Definition Mesh.hpp:175
Vector< FQVertex > verticesQuantized
Definition Mesh.hpp:127
size_t CalculateQuantizedBound(bool lod, bool dag) const
Returns a lower bound estimate of the size of the quantized mesh data. The size is conservative in th...
Definition Mesh.cpp:284
Vector< FVertex > vertices
Definition Mesh.hpp:126
void SimplifyLOD(int levels, float scale)
Creates N LOD levels, iteratively scaling down by 'scale' factor and populates lods index data.
Definition Mesh.cpp:201
Vector< float3 > morphPositions
Definition Mesh.hpp:129
Vector< LOD > lods
Definition Mesh.hpp:136
bool EnsureQuantized()
Prepares quantized GPU data buffers from possibly full-precision, or compressed data.
Definition Mesh.cpp:299
Vector< FSkinBinding > skin
Definition Mesh.hpp:128
bool IsRaw() const
Definition Mesh.hpp:180
void ClusterizeDAG()
Partitions the clusters of LOD levels into a DAG.
Definition Mesh.cpp:218
void Quantize()
Quantizes vertex data into more compact representation Fills quantizedVertices with quantized data fr...
Definition Mesh.cpp:111
uint32_t morphTargetCount
Definition Mesh.hpp:130
float radius
Definition Mesh.hpp:58
float error
Definition Mesh.hpp:62
float3 center
Definition Mesh.hpp:57
int depth
Definition Mesh.hpp:54
uint32_t refined
Definition Mesh.hpp:73
uint32_t triOffset
Definition Mesh.hpp:78
uint32_t vtxCount
Definition Mesh.hpp:81
float3 coneApex
Definition Mesh.hpp:87
uint32_t vtxOffset
Definition Mesh.hpp:77
uint32_t group
Definition Mesh.hpp:70
float4 coneAxisAngle
Definition Mesh.hpp:86
float4 centerRadius
Definition Mesh.hpp:85
uint32_t triCount
Definition Mesh.hpp:82
static FVertex Unpack(FQVertex const &vertex)
Definition Mesh.cpp:100
uint32_t tbn32
Definition Mesh.hpp:26
static void UnpackTBN(uint32_t packed, float3 &outNormal, float3 &outTangent, float &outBitangentSign)
Definition Mesh.cpp:74
static uint32_t PackTBN(const float3 &normal, const float3 &tangent, float bitangentSign)
Definition Mesh.cpp:57
uint16_t uv[2]
Definition Mesh.hpp:27
uint16_t position[4]
Definition Mesh.hpp:25
static FQVertex Pack(FVertex const &vertex)
Definition Mesh.cpp:89
uint32_t indexCount
Definition Mesh.hpp:94
FBlobRef indices
Definition Mesh.hpp:93
int32_t morphTrack
Definition Mesh.hpp:116
FBlobRef skinBinding
Definition Mesh.hpp:109
uint32_t vertexCount
Definition Mesh.hpp:100
FBlobRef morphPositions
Definition Mesh.hpp:114
FSerializedMesh(Allocator *alloc=GLOBAL_ALLOC)
Definition Mesh.hpp:118
uint32_t morphTargetCount
Definition Mesh.hpp:115
FBlobRef dagMeshlets
Definition Mesh.hpp:103
Vector< FSerializedMeshLOD > lods
Definition Mesh.hpp:101
int32_t skeleton
Definition Mesh.hpp:110
FBlobRef dagMeshletVtx
Definition Mesh.hpp:105
FBlobRef vertices
Definition Mesh.hpp:99
FBlobRef dagGroups
Definition Mesh.hpp:102
FBlobRef dagMeshletTri
Definition Mesh.hpp:104
Per-vertex skin binding for CPU skinning (parallel to a mesh's vertices).
Definition Mesh.hpp:45
uint16_t joints[4]
Definition Mesh.hpp:46
float weights[4]
Definition Mesh.hpp:47
float3 tangent
Definition Mesh.hpp:17
float2 uv
Definition Mesh.hpp:19
float3 position
Definition Mesh.hpp:15
float bitangentSign
Definition Mesh.hpp:18
float3 normal
Definition Mesh.hpp:16