154 light.color =
float3{0.05f, 0.05f, 0.05f};
220 auto it = map.find(
id);
221 return it == map.end() ? -1 :
static_cast<int>(it->second);
497 return i < 0 ? nullptr :
mTables.
strings[
static_cast<size_t>(i)].value.c_str();
526 template <
typename T>
541#if defined(__ANDROID__)
#define GLOBAL_ALLOC
Definition Allocator.hpp:240
#define CHECK(expr)
Definition Logging.hpp:92
String LoadScene(Foundation::RHI::RHIApplication const &app, JobSystem *jobs, StringView path, FImportedScene &scene, Allocator *scratchAlloc=GLOBAL_ALLOC, FSceneBuildOptions const &buildOptions=FSceneBuildOptions{})
Definition Scene.cpp:2083
void FSerialize(FWriter &writer, FSerializedMesh const &mesh)
Definition Scene.hpp:226
FSceneTextureCompression
Definition Scene.hpp:534
FLightType
Definition Scene.hpp:113
FMaterialShaderBlock
Definition Scene.hpp:48
void LoadGLTF(Foundation::RHI::RHIApplication const &app, JobSystem *jobs, StringView path, FImportedScene &scene, Allocator *scratchAlloc=GLOBAL_ALLOC, FSceneBuildOptions const &buildOptions=FSceneBuildOptions{})
Definition Scene.cpp:2054
void LoadFSCN(FImportedScene &scene)
Definition Scene.cpp:2064
FLight MakeDefaultEnvironmentLight()
Definition Scene.hpp:149
constexpr uint32_t kMaxSceneLights
Definition Scene.hpp:121
FInstanceType
Definition Scene.hpp:15
static constexpr uint32_t kSceneVersion
Definition Scene.hpp:167
static constexpr uint32_t kInvalidTexture
Definition Scene.hpp:44
static constexpr FUUID kDefaultMaterialUUID
Definition Scene.hpp:46
void FDeserialize(FReader &reader, FSerializedMesh &mesh)
Definition Scene.hpp:245
static constexpr uint32_t kSceneMagic
Definition Scene.hpp:166
constexpr uint32_t fourCC(const char a, const char b, const char c, const char d)
Definition Serialization.hpp:13
Allocator interface (noexcept)
Definition Allocator.hpp:29
Definition JobSystem.hpp:135
Definition MemoryMapped.hpp:15
The root object of everything RHI. Implementation of this class inherently defines the RHI backend.
Definition Application.hpp:24
std::vector< T, StlAllocator< T > > Vector
std::vector with explicit Foundation::Core::StlAllocator constructor
Definition Container.hpp:149
static constexpr FUUID kNilUUID
Definition UUID.hpp:56
std::unordered_map< K, V, Hash, KeyEq, StlAllocator< Pair< const K, V > > > HashMap
std::unordered_map with explicit Foundation::Core::StlAllocator constructor.
Definition Container.hpp:186
std::basic_string< char, std::char_traits< char >, StlDefaultAllocator< char > > String
Alias for std::basic_string<char>, without an explicit allocator constructor.
Definition Container.hpp:120
std::basic_string_view< char > StringView
Alias for std::basic_string_view<char>
Definition Container.hpp:56
std::span< T > Span
Alias for std::span
Definition Container.hpp:62
vec3 float3
Definition Math.hpp:26
vec4 float4
Definition Math.hpp:25
Low-level Rendering Hardware Interface (RHI) abstractions.
Definition Application.hpp:3
Mesh
Definition Common.hpp:301
Definition Animation.hpp:33
Vector< float > times
Definition Animation.hpp:37
FAnimPath path
Definition Animation.hpp:35
uint32_t joint
Definition Animation.hpp:34
FAnimInterp interp
Definition Animation.hpp:36
Vector< float > values
Definition Animation.hpp:38
Definition Animation.hpp:44
FUUID name
Definition Animation.hpp:46
FUUID skeleton
Definition Animation.hpp:49
float duration
Definition Animation.hpp:48
Vector< FAnimChannel > channels
Definition Animation.hpp:47
FUUID id
Definition Animation.hpp:45
Definition Serialization.hpp:119
bool ReadArray(FBlobRef const &blob, Vector< T > &values, Allocator *scratchAlloc) const
Definition Serialization.hpp:128
Definition Serialization.hpp:27
float fStop
Definition Scene.hpp:35
float apertureRatio
Definition Scene.hpp:39
float fovY
Definition Scene.hpp:32
float focusDistance
Definition Scene.hpp:36
float apertureRotation
Definition Scene.hpp:38
float sensorHeightMm
Definition Scene.hpp:34
uint32_t apertureBlades
Definition Scene.hpp:37
FTransform transform
Definition Scene.hpp:30
bool lensEnabled
Definition Scene.hpp:33
void Add(FLight const &light)
Definition Scene.hpp:402
bool ReadBlob(FBlobRef const &blob, void *dst, size_t size, Allocator *scratchAlloc) const
Definition Scene.cpp:1937
void RebuildIndex()
Definition Scene.cpp:1905
MemoryMappedFile * mFile
Definition Scene.hpp:382
FLight & EnsureEnvironmentLight()
Definition Scene.hpp:467
FSceneHeader mHeader
Definition Scene.hpp:378
void Add(FSerializedTexture const &texture)
Definition Scene.hpp:427
FSceneGlobals & GetSceneGlobals()
Definition Scene.hpp:446
bool mWriting
Definition Scene.hpp:385
FSceneIndex mIndex
Definition Scene.hpp:380
FLight const * GetEnvironmentLight() const
Definition Scene.hpp:453
FSceneTables mTables
Definition Scene.hpp:379
FSceneGlobals const & GetSceneGlobals() const
Definition Scene.hpp:445
Span< FAnimationClip const > GetClips() const
Definition Scene.hpp:489
int LightIndex(FUUID id) const
Definition Scene.hpp:501
void Add(FInstance const &instance)
Definition Scene.hpp:407
Span< FSerializedMesh const > GetMeshes() const
Definition Scene.hpp:485
void Add(FSerializedCurve const &curve)
Definition Scene.hpp:422
char const * GetName(FUUID id) const
Definition Scene.hpp:494
Span< FLight const > GetLights() const
Definition Scene.hpp:451
Span< FSerializedTexture const > GetTextures() const
Definition Scene.hpp:487
Span< FSerializedCurve const > GetCurves() const
Definition Scene.hpp:486
GPUSceneDesc CalculateGPUSceneDesc(Foundation::RHI::RHIDeviceCapabilities const &caps) const
Definition Scene.cpp:1942
Span< const unsigned char > GetPayloadBytes() const
Definition Scene.cpp:1924
Span< FSkeleton const > GetSkeletons() const
Definition Scene.hpp:488
Allocator * mScratchAlloc
Definition Scene.hpp:383
~FImportedScene()
Definition Scene.cpp:2048
Span< FInstance > GetInstances()
Definition Scene.hpp:480
int MeshIndex(FUUID id) const
Definition Scene.hpp:503
void Add(FMaterial const &material)
Definition Scene.hpp:412
int CurveIndex(FUUID id) const
Definition Scene.hpp:504
void Add(FAnimationClip const &clip)
Definition Scene.hpp:437
Span< FCamera > GetCameras()
Definition Scene.hpp:449
Span< FMaterial > GetMaterials()
Definition Scene.hpp:483
void Add(FSerializedMesh const &mesh)
Definition Scene.hpp:417
int SkeletonIndex(FUUID id) const
Definition Scene.hpp:505
void Add(FSkeleton const &skeleton)
Definition Scene.hpp:432
Span< FLight > GetLights()
Definition Scene.hpp:452
Span< FInstance const > GetInstances() const
Definition Scene.hpp:479
void Set(FSceneGlobals const &globals)
Definition Scene.hpp:392
int MaterialIndex(FUUID id) const
Definition Scene.hpp:500
uint64_t mWriteOffset
Definition Scene.hpp:384
FUUID InternString(const char *s)
Definition Scene.hpp:508
int TextureIndex(FUUID id) const
Definition Scene.hpp:502
FLight * GetEnvironmentLight()
Definition Scene.hpp:460
FBlobDeserializer GetBlobDeserializer() const
Definition Scene.cpp:1932
Span< FStringEntry const > GetStrings() const
Definition Scene.hpp:490
Span< FCamera const > GetCameras() const
Definition Scene.hpp:448
int InstanceIndex(FUUID id) const
Definition Scene.hpp:499
void Add(FCamera const &camera)
Definition Scene.hpp:397
Span< FMaterial const > GetMaterials() const
Definition Scene.hpp:482
Vector< T > ReadBlobArray(FBlobRef const &blob, Allocator *alloc=GLOBAL_ALLOC) const
Definition Scene.hpp:527
FUUID material
Definition Scene.hpp:26
FTransform transform
Definition Scene.hpp:21
FUUID resource
Definition Scene.hpp:25
FUUID name
Definition Scene.hpp:24
FInstanceType type
Definition Scene.hpp:22
bool twoSided
Definition Scene.hpp:138
FUUID environmentTexture
Definition Scene.hpp:141
FTransform transform
Definition Scene.hpp:124
float spotInnerConeAngle
Definition Scene.hpp:132
FUUID name
Definition Scene.hpp:126
float environmentAzimuthOffset
Definition Scene.hpp:142
FUUID id
Definition Scene.hpp:125
float radius
Definition Scene.hpp:131
float3 color
Definition Scene.hpp:128
float width
Definition Scene.hpp:136
bool HasEnvironmentTexture() const
Definition Scene.hpp:146
float power
Definition Scene.hpp:129
float height
Definition Scene.hpp:137
bool useShadow
Definition Scene.hpp:134
bool normalize
Definition Scene.hpp:139
int32_t node
Definition Scene.hpp:144
bool environmentMap
Definition Scene.hpp:140
float angularDiameter
Definition Scene.hpp:130
float spotOuterConeAngle
Definition Scene.hpp:133
FLightType type
Definition Scene.hpp:127
float specularFactor
Definition Scene.hpp:92
float roughnessFactor
Definition Scene.hpp:89
float clearcoatFactor
Definition Scene.hpp:100
FUUID name
Definition Scene.hpp:56
float4 baseColorFactor
Definition Scene.hpp:85
float hairAlpha
Definition Scene.hpp:110
FUUID normalTexture
Definition Scene.hpp:65
float hairBetaM
Definition Scene.hpp:108
float normalScale
Definition Scene.hpp:67
FUUID clearcoatRoughnessTexture
Definition Scene.hpp:83
FUUID specularTexture
Definition Scene.hpp:71
FMaterialShaderBlock shaderBlockID
Definition Scene.hpp:107
float subsurfaceFactor
Definition Scene.hpp:102
FUUID baseColorTexture
Definition Scene.hpp:58
float transmissionFactor
Definition Scene.hpp:90
FUUID anisotropyTexture
Definition Scene.hpp:75
float4 emissiveFactor
Definition Scene.hpp:87
float anisotropyStrength
Definition Scene.hpp:95
float3 subsurfaceRadius
Definition Scene.hpp:106
FUUID sheenRoughnessTexture
Definition Scene.hpp:79
float anisotropyRotation
Definition Scene.hpp:96
FUUID sheenColorTexture
Definition Scene.hpp:77
float sheenRoughnessFactor
Definition Scene.hpp:99
float clearcoatRoughnessFactor
Definition Scene.hpp:101
float metallicFactor
Definition Scene.hpp:88
float hairBetaN
Definition Scene.hpp:109
float3 subsurfaceColor
Definition Scene.hpp:105
FUUID transmissionTexture
Definition Scene.hpp:69
float3 specularColorFactor
Definition Scene.hpp:94
FUUID emissiveTexture
Definition Scene.hpp:60
FUUID metallicRoughnessTexture
Definition Scene.hpp:62
float subsurfaceScale
Definition Scene.hpp:103
float ior
Definition Scene.hpp:91
FUUID specularColorTexture
Definition Scene.hpp:73
FUUID clearcoatTexture
Definition Scene.hpp:81
float3 sheenColorFactor
Definition Scene.hpp:98
Definition Serialization.hpp:45
bool generateMeshlets
Definition Scene.hpp:547
FSceneTextureCompression textureCompression
Definition Scene.hpp:544
bool generateMipmaps
Definition Scene.hpp:546
bool optimizeMeshes
Definition Scene.hpp:548
uint32_t viewLutHdrIndex
Definition Scene.hpp:164
float postExposure
Definition Scene.hpp:162
uint32_t viewLutSdrIndex
Definition Scene.hpp:163
HashMap< FUUID, uint32_t > lights
Definition Scene.hpp:204
static int Find(HashMap< FUUID, uint32_t > const &map, FUUID id)
Definition Scene.hpp:216
FSceneIndex(Allocator *alloc=GLOBAL_ALLOC)
Definition Scene.hpp:210
HashMap< FUUID, uint32_t > textures
Definition Scene.hpp:205
HashMap< FUUID, uint32_t > meshes
Definition Scene.hpp:206
HashMap< FUUID, uint32_t > materials
Definition Scene.hpp:203
HashMap< FUUID, uint32_t > skeletons
Definition Scene.hpp:208
HashMap< FUUID, uint32_t > curves
Definition Scene.hpp:207
HashMap< FUUID, uint32_t > instances
Definition Scene.hpp:202
HashMap< FUUID, uint32_t > strings
Definition Scene.hpp:201
Vector< FCamera > cameras
Definition Scene.hpp:180
Vector< FMaterial > materials
Definition Scene.hpp:183
Vector< FInstance > instances
Definition Scene.hpp:182
Vector< FAnimationClip > clips
Definition Scene.hpp:188
Vector< FSerializedTexture > textures
Definition Scene.hpp:186
Vector< FSerializedMesh > meshes
Definition Scene.hpp:184
FSceneTables(Allocator *alloc=GLOBAL_ALLOC)
Definition Scene.hpp:191
Vector< FLight > lights
Definition Scene.hpp:181
Vector< FSerializedCurve > curves
Definition Scene.hpp:185
Vector< FStringEntry > strings
Definition Scene.hpp:179
FSceneGlobals globals
Definition Scene.hpp:178
Vector< FSkeleton > skeletons
Definition Scene.hpp:187
FUUID sceneNodeSkeleton
Definition Scene.hpp:189
FBlobRef emissivePrimitiveMap
Definition Mesh.hpp:118
FSerializedBounds bounds
Definition Mesh.hpp:108
FUUID id
Definition Mesh.hpp:107
FBlobRef skinBinding
Definition Mesh.hpp:119
FUUID skeleton
Definition Mesh.hpp:120
uint32_t vertexCount
Definition Mesh.hpp:110
FBlobRef emissiveMeshlets
Definition Mesh.hpp:116
FBlobRef dagMeshlets
Definition Mesh.hpp:113
Vector< FSerializedMeshLOD > lods
Definition Mesh.hpp:111
FBlobRef dagMeshletVtx
Definition Mesh.hpp:115
FBlobRef vertices
Definition Mesh.hpp:109
FBlobRef emissiveAliases
Definition Mesh.hpp:117
FBlobRef dagGroups
Definition Mesh.hpp:112
FBlobRef dagMeshletTri
Definition Mesh.hpp:114
Definition Texture.hpp:46
Definition Animation.hpp:21
Vector< FJoint > joints
Definition Animation.hpp:23
FUUID id
Definition Animation.hpp:22
FUUID id
Definition Scene.hpp:172
String value
Definition Scene.hpp:173
Definition Serialization.hpp:37
128-bit identifier. Two flavors, both well-formed per RFC 9562:
Definition UUID.hpp:35
bool IsNil() const noexcept
Definition UUID.hpp:39
static FUUID FromString(std::string_view s)
Definition UUID.hpp:50
static FUUID Generate()
Definition UUID.cpp:85
uint64_t hi
Definition UUID.hpp:36
Definition Device.hpp:190
Definition GPUScene.hpp:170