154 light.color =
float3{0.05f, 0.05f, 0.05f};
216 auto it = map.find(
id);
217 return it == map.end() ? -1 :
static_cast<int>(it->second);
421 return i < 0 ? nullptr :
mTables.
strings[
static_cast<size_t>(i)].value.c_str();
449 template <
typename T>
464#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:1797
void FSerialize(FWriter &writer, FSerializedMesh const &mesh)
Definition Scene.hpp:222
FSceneTextureCompression
Definition Scene.hpp:457
FLightType
Definition Scene.hpp:112
FMaterialShaderBlock
Definition Scene.hpp:47
void LoadGLTF(Foundation::RHI::RHIApplication const &app, JobSystem *jobs, StringView path, FImportedScene &scene, Allocator *scratchAlloc=GLOBAL_ALLOC, FSceneBuildOptions const &buildOptions=FSceneBuildOptions{})
Definition Scene.cpp:1768
void LoadFSCN(FImportedScene &scene)
Definition Scene.cpp:1778
FLight MakeDefaultEnvironmentLight()
Definition Scene.hpp:149
constexpr uint32_t kMaxSceneLights
Definition Scene.hpp:120
FInstanceType
Definition Scene.hpp:14
static constexpr uint32_t kSceneVersion
Definition Scene.hpp:167
static constexpr uint32_t kInvalidTexture
Definition Scene.hpp:43
static constexpr FUUID kDefaultMaterialUUID
Definition Scene.hpp:45
void FDeserialize(FReader &reader, FSerializedMesh &mesh)
Definition Scene.hpp:239
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 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:34
float apertureRatio
Definition Scene.hpp:38
float fovY
Definition Scene.hpp:31
float focusDistance
Definition Scene.hpp:35
float apertureRotation
Definition Scene.hpp:37
float sensorHeightMm
Definition Scene.hpp:33
uint32_t apertureBlades
Definition Scene.hpp:36
FTransform transform
Definition Scene.hpp:29
bool lensEnabled
Definition Scene.hpp:32
void Add(FLight const &light)
Definition Scene.hpp:338
bool ReadBlob(FBlobRef const &blob, void *dst, size_t size, Allocator *scratchAlloc) const
Definition Scene.cpp:1662
void RebuildIndex()
Definition Scene.cpp:1634
MemoryMappedFile * mFile
Definition Scene.hpp:318
FLight & EnsureEnvironmentLight()
Definition Scene.hpp:393
FSceneHeader mHeader
Definition Scene.hpp:314
void Add(FSerializedTexture const &texture)
Definition Scene.hpp:363
FSceneGlobals & GetSceneGlobals()
Definition Scene.hpp:372
bool mWriting
Definition Scene.hpp:321
FSceneIndex mIndex
Definition Scene.hpp:316
FLight const * GetEnvironmentLight() const
Definition Scene.hpp:379
FSceneTables mTables
Definition Scene.hpp:315
FSceneGlobals const & GetSceneGlobals() const
Definition Scene.hpp:371
int LightIndex(FUUID id) const
Definition Scene.hpp:425
void Add(FInstance const &instance)
Definition Scene.hpp:343
Span< FSerializedMesh const > GetMeshes() const
Definition Scene.hpp:411
void Add(FSerializedCurve const &curve)
Definition Scene.hpp:358
char const * GetName(FUUID id) const
Definition Scene.hpp:418
Span< FLight const > GetLights() const
Definition Scene.hpp:377
Span< FSerializedTexture const > GetTextures() const
Definition Scene.hpp:413
Span< FSerializedCurve const > GetCurves() const
Definition Scene.hpp:412
GPUSceneDesc CalculateGPUSceneDesc(Foundation::RHI::RHIDeviceCapabilities const &caps) const
Definition Scene.cpp:1667
Span< const unsigned char > GetPayloadBytes() const
Definition Scene.cpp:1652
Allocator * mScratchAlloc
Definition Scene.hpp:319
~FImportedScene()
Definition Scene.cpp:1762
Span< FInstance > GetInstances()
Definition Scene.hpp:406
int MeshIndex(FUUID id) const
Definition Scene.hpp:427
void Add(FMaterial const &material)
Definition Scene.hpp:348
int CurveIndex(FUUID id) const
Definition Scene.hpp:428
Span< FCamera > GetCameras()
Definition Scene.hpp:375
Span< FMaterial > GetMaterials()
Definition Scene.hpp:409
void Add(FSerializedMesh const &mesh)
Definition Scene.hpp:353
Span< FLight > GetLights()
Definition Scene.hpp:378
Span< FInstance const > GetInstances() const
Definition Scene.hpp:405
void Set(FSceneGlobals const &globals)
Definition Scene.hpp:328
int MaterialIndex(FUUID id) const
Definition Scene.hpp:424
uint64_t mWriteOffset
Definition Scene.hpp:320
FUUID InternString(const char *s)
Definition Scene.hpp:431
int TextureIndex(FUUID id) const
Definition Scene.hpp:426
FLight * GetEnvironmentLight()
Definition Scene.hpp:386
FBlobDeserializer GetBlobDeserializer() const
Definition Scene.cpp:1660
Span< FStringEntry const > GetStrings() const
Definition Scene.hpp:414
Span< FCamera const > GetCameras() const
Definition Scene.hpp:374
int InstanceIndex(FUUID id) const
Definition Scene.hpp:423
void Add(FCamera const &camera)
Definition Scene.hpp:333
Span< FMaterial const > GetMaterials() const
Definition Scene.hpp:408
Vector< T > ReadBlobArray(FBlobRef const &blob, Allocator *alloc=GLOBAL_ALLOC) const
Definition Scene.hpp:450
FUUID material
Definition Scene.hpp:25
FTransform transform
Definition Scene.hpp:20
FUUID resource
Definition Scene.hpp:24
FUUID name
Definition Scene.hpp:23
FInstanceType type
Definition Scene.hpp:21
bool twoSided
Definition Scene.hpp:138
FUUID environmentTexture
Definition Scene.hpp:141
FTransform transform
Definition Scene.hpp:123
float spotInnerConeAngle
Definition Scene.hpp:132
FUUID name
Definition Scene.hpp:125
float environmentAzimuthOffset
Definition Scene.hpp:142
FUUID id
Definition Scene.hpp:124
float radius
Definition Scene.hpp:130
float3 color
Definition Scene.hpp:127
float range
Definition Scene.hpp:131
float width
Definition Scene.hpp:136
bool HasEnvironmentTexture() const
Definition Scene.hpp:146
float power
Definition Scene.hpp:128
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:129
float spotOuterConeAngle
Definition Scene.hpp:133
FLightType type
Definition Scene.hpp:126
float specularFactor
Definition Scene.hpp:91
float roughnessFactor
Definition Scene.hpp:88
float clearcoatFactor
Definition Scene.hpp:99
FUUID name
Definition Scene.hpp:55
float4 baseColorFactor
Definition Scene.hpp:84
float hairAlpha
Definition Scene.hpp:109
FUUID normalTexture
Definition Scene.hpp:64
float hairBetaM
Definition Scene.hpp:107
float normalScale
Definition Scene.hpp:66
FUUID clearcoatRoughnessTexture
Definition Scene.hpp:82
FUUID specularTexture
Definition Scene.hpp:70
FMaterialShaderBlock shaderBlockID
Definition Scene.hpp:106
float subsurfaceFactor
Definition Scene.hpp:101
FUUID baseColorTexture
Definition Scene.hpp:57
float transmissionFactor
Definition Scene.hpp:89
FUUID anisotropyTexture
Definition Scene.hpp:74
float4 emissiveFactor
Definition Scene.hpp:86
float anisotropyStrength
Definition Scene.hpp:94
float3 subsurfaceRadius
Definition Scene.hpp:105
FUUID sheenRoughnessTexture
Definition Scene.hpp:78
float anisotropyRotation
Definition Scene.hpp:95
FUUID sheenColorTexture
Definition Scene.hpp:76
float sheenRoughnessFactor
Definition Scene.hpp:98
float clearcoatRoughnessFactor
Definition Scene.hpp:100
float metallicFactor
Definition Scene.hpp:87
float hairBetaN
Definition Scene.hpp:108
float3 subsurfaceColor
Definition Scene.hpp:104
FUUID transmissionTexture
Definition Scene.hpp:68
float3 specularColorFactor
Definition Scene.hpp:93
FUUID emissiveTexture
Definition Scene.hpp:59
FUUID metallicRoughnessTexture
Definition Scene.hpp:61
float subsurfaceScale
Definition Scene.hpp:102
float ior
Definition Scene.hpp:90
FUUID specularColorTexture
Definition Scene.hpp:72
FUUID clearcoatTexture
Definition Scene.hpp:80
float3 sheenColorFactor
Definition Scene.hpp:97
Definition Serialization.hpp:45
bool generateMeshlets
Definition Scene.hpp:470
FSceneTextureCompression textureCompression
Definition Scene.hpp:467
bool generateMipmaps
Definition Scene.hpp:469
bool optimizeMeshes
Definition Scene.hpp:471
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:201
static int Find(HashMap< FUUID, uint32_t > const &map, FUUID id)
Definition Scene.hpp:212
FSceneIndex(Allocator *alloc=GLOBAL_ALLOC)
Definition Scene.hpp:206
HashMap< FUUID, uint32_t > textures
Definition Scene.hpp:202
HashMap< FUUID, uint32_t > meshes
Definition Scene.hpp:203
HashMap< FUUID, uint32_t > materials
Definition Scene.hpp:200
HashMap< FUUID, uint32_t > curves
Definition Scene.hpp:204
HashMap< FUUID, uint32_t > instances
Definition Scene.hpp:199
HashMap< FUUID, uint32_t > strings
Definition Scene.hpp:198
Vector< FCamera > cameras
Definition Scene.hpp:180
Vector< FMaterial > materials
Definition Scene.hpp:183
Vector< FInstance > instances
Definition Scene.hpp:182
Vector< FSerializedTexture > textures
Definition Scene.hpp:186
Vector< FSerializedMesh > meshes
Definition Scene.hpp:184
FSceneTables(Allocator *alloc=GLOBAL_ALLOC)
Definition Scene.hpp:188
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
FBlobRef emissivePrimitiveMap
Definition Mesh.hpp:112
FSerializedBounds bounds
Definition Mesh.hpp:102
FUUID id
Definition Mesh.hpp:101
uint32_t vertexCount
Definition Mesh.hpp:104
FBlobRef emissiveMeshlets
Definition Mesh.hpp:110
FBlobRef dagMeshlets
Definition Mesh.hpp:107
Vector< FSerializedMeshLOD > lods
Definition Mesh.hpp:105
FBlobRef dagMeshletVtx
Definition Mesh.hpp:109
FBlobRef vertices
Definition Mesh.hpp:103
FBlobRef emissiveAliases
Definition Mesh.hpp:111
FBlobRef dagGroups
Definition Mesh.hpp:106
FBlobRef dagMeshletTri
Definition Mesh.hpp:108
Definition Texture.hpp:46
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:172