Skip to content

ludus::content::scene_format

Ludus Wiki · API overview · Browse API

Namespace

Declared in modules/content/scene_format/include/ludus/content/scene_format/limits.h

Enumerations

MaterialModel

enum class MaterialModel : foundation::uint32
Scattering identity retained by scene assets; evaluators declare their supported profile.

Related types: foundation::uint32

MetallicRoughness

MetallicRoughness =
        LUDUS_MATERIAL_MODEL_METALLIC_ROUGHNESS
Legacy RGB GGX/Schlick and Fresnel-weighted diffuse.

Diffuse

Diffuse = LUDUS_MATERIAL_MODEL_DIFFUSE
Ideal Lambertian reflection without a specular lobe.

Conductor

Conductor = LUDUS_MATERIAL_MODEL_CONDUCTOR
Isotropic GGX with complex-IOR Fresnel; no diffuse lobe.

CoatedDiffuse

CoatedDiffuse = LUDUS_MATERIAL_MODEL_COATED_DIFFUSE
Rough dielectric coating over a diffuse base; non-scattering reference profile.

Dielectric

Dielectric = LUDUS_MATERIAL_MODEL_DIELECTRIC
Interface of a nonabsorbing dielectric with real index Eta: Fresnel-weighted specular reflection and refraction. A closed mesh bounds the medium; its oriented front side faces the outside (index one).

ThinDielectric

ThinDielectric = LUDUS_MATERIAL_MODEL_THIN_DIELECTRIC
Infinitesimally thin nonabsorbing dielectric slab with real index Eta: Fresnel reflection including internal interreflection, and undeviated transmission.

DiffuseConductorMix

DiffuseConductorMix = LUDUS_MATERIAL_MODEL_DIFFUSE_CONDUCTOR_MIX
Weighted Lambertian and isotropic rough conductor. The material metallic field is the conductor weight.

Unresolved

Unresolved = LUDUS_MATERIAL_MODEL_UNRESOLVED
Stored import diagnostic for a named material without a scattering implementation. Only content storage accepts this tag. Renderers require a resolved material.

ProjectBrdf

ProjectBrdf = LUDUS_MATERIAL_MODEL_PROJECT_BRDF
Project-authored continuous reflection program with up to three cosine-power lobes.

Declared in modules/content/scene_format/include/ludus/content/scene_format/material.h

Aliases

MaterialModelTag

typedef uint ludus::content::scene_format::MaterialModelTag = foundation::uint32
Integer representation of material-model wire tags, also consumed by Slang.

Related types: foundation::uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/material.h

MaterialScalar

typedef float ludus::content::scene_format::MaterialScalar = foundation::float32
Binary32 scalar representation shared with Slang material policy constants.

Related types: foundation::float32

Declared in modules/content/scene_format/include/ludus/content/scene_format/material.h

float32

using ludus::foundation::core::float32 = float
IEEE binary32 scalar; does not select rounding, trap or denormal policy.

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

uint32

using ludus::foundation::core::uint32 = std::uint32_t
Exact 32-bit unsigned integer for explicit-width values.

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

uint64

using ludus::foundation::core::uint64 = std::uint64_t
Exact 64-bit unsigned integer for explicit-width values.

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

usize

using ludus::foundation::core::usize = std::size_t
Native unsigned size/index type; matches sizeof and container sizes, not a wire format.

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

Constants and variables

MAX_BUNDLE_BYTES

constexpr usize ludus::content::scene_format::MAX_BUNDLE_BYTES = usize{64} * 1024 * 1024
Largest admitted bundle.

Related types: usize

Declared in modules/content/scene_format/include/ludus/content/scene_format/limits.h

MAX_MESHES

constexpr uint32 ludus::content::scene_format::MAX_MESHES = 6
Most meshes in a bundle.

Related types: uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/limits.h

MAX_MATERIALS

constexpr uint32 ludus::content::scene_format::MAX_MATERIALS = 8
Most materials in a bundle.

Related types: uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/limits.h

MAX_TEXTURES

constexpr uint32 ludus::content::scene_format::MAX_TEXTURES = 8
Most textures in a bundle.

Related types: uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/limits.h

MAX_OBJECTS

constexpr uint32 ludus::content::scene_format::MAX_OBJECTS = 128
Most placed objects in a bundle.

Related types: uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/limits.h

MAX_TEXTURE_DIMENSION

constexpr uint32 ludus::content::scene_format::MAX_TEXTURE_DIMENSION = 4096
Largest texture width or height in texels.

Related types: uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/limits.h

MAX_TEXTURE_BYTES

constexpr usize ludus::content::scene_format::MAX_TEXTURE_BYTES = usize{16} * 1024 * 1024
Largest single texture in bytes.

Related types: usize

Declared in modules/content/scene_format/include/ludus/content/scene_format/limits.h

MAX_TOTAL_TEXTURE_BYTES

constexpr usize ludus::content::scene_format::MAX_TOTAL_TEXTURE_BYTES = usize{32} * 1024 * 1024
Largest combined texture bytes in a bundle.

Related types: usize

Declared in modules/content/scene_format/include/ludus/content/scene_format/limits.h

MAX_VERTICES

constexpr uint32 ludus::content::scene_format::MAX_VERTICES = 500000
Most vertices per mesh and combined across all meshes.

Related types: uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/limits.h

MAX_INDICES

constexpr uint32 ludus::content::scene_format::MAX_INDICES = 1500000
Most indices per mesh.

Related types: uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/limits.h

MAX_TOTAL_INDICES

constexpr uint32 ludus::content::scene_format::MAX_TOTAL_INDICES = 1500000
Most indices combined across all meshes of a version 4 bundle. Version 4 consumers expand every triangle corner to derive bake charts, so this bounds their expanded vertex count; version 3 stored those corners as vertices and MAX_VERTICES bounded them.

Related types: uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/limits.h

MAX_IMPORT_MESHES

constexpr uint32 ludus::content::scene_format::MAX_IMPORT_MESHES = 256
Most meshes in a version 5 or 6 bundle; the import profile keeps one mesh per material.

Related types: uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/limits.h

MAX_IMPORT_MATERIALS

constexpr uint32 ludus::content::scene_format::MAX_IMPORT_MATERIALS = 256
Most materials in a version 5 or 6 bundle.

Related types: uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/limits.h

MAX_IMPORT_TEXTURES

constexpr uint32 ludus::content::scene_format::MAX_IMPORT_TEXTURES = 256
Most textures in a version 5 or 6 bundle.

Related types: uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/limits.h

MAX_IMPORT_OBJECTS

constexpr uint32 ludus::content::scene_format::MAX_IMPORT_OBJECTS = 1024
Most placed objects in a version 5 or 6 bundle.

Related types: uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/limits.h

MAX_IMPORT_TOTAL_TEXTURE_BYTES

constexpr usize ludus::content::scene_format::MAX_IMPORT_TOTAL_TEXTURE_BYTES = usize{256} * 1024 * 1024
Largest combined texture bytes in a version 5 or 6 bundle: uncompressed RGBA8 without mips, enough for Sponza-scale scenes' base-colour textures at full resolution.

Related types: usize

Declared in modules/content/scene_format/include/ludus/content/scene_format/limits.h

MAX_IMPORT_BUNDLE_BYTES

constexpr usize ludus::content::scene_format::MAX_IMPORT_BUNDLE_BYTES = usize{384} * 1024 * 1024
Largest version 5 or 6 bundle. Geometry is admitted by its encoded bytes, with textures sharing the remaining allowance; there is no independent vertex or triangle cap.

Related types: usize

Declared in modules/content/scene_format/include/ludus/content/scene_format/limits.h

VERTEX_COMPONENTS

constexpr usize ludus::content::scene_format::VERTEX_COMPONENTS = 8
Number of float32 components in a VertexRecord: position XYZ, normal XYZ and UV.

Related types: usize

Declared in modules/content/scene_format/include/ludus/content/scene_format/limits.h

MAX_IMPORT_VERTICES

constexpr uint32 ludus::content::scene_format::MAX_IMPORT_VERTICES =
static_cast<uint32>(MAX_IMPORT_BUNDLE_BYTES / (VERTEX_COMPONENTS * sizeof(foundation::float32)))
Conservative vertex-count bound implied by the bundle byte ceiling and the smallest import vertex record (version 5). Version 6's tangents consume more bytes; producers and decoders also validate the actual encoded payload.

Related types: uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/limits.h

MAX_IMPORT_TOTAL_INDICES

constexpr uint32 ludus::content::scene_format::MAX_IMPORT_TOTAL_INDICES = static_cast<uint32>(MAX_IMPORT_BUNDLE_BYTES / sizeof(uint32))
Conservative index-count bound implied by the bundle byte ceiling. This is not a separate triangle budget; vertices and all other records share those bytes.

Related types: uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/limits.h

RESIDENT_REFERENCE_LIMITS

constexpr BundleLimits ludus::content::scene_format::RESIDENT_REFERENCE_LIMITS {
    .Meshes = MAX_MESHES,
    .Materials = MAX_MATERIALS,
    .Textures = MAX_TEXTURES,
    .Objects = MAX_OBJECTS,
    .TotalTextureBytes = MAX_TOTAL_TEXTURE_BYTES,
    .Vertices = MAX_VERTICES,
    .TotalIndices = MAX_TOTAL_INDICES,
    .BundleBytes = MAX_BUNDLE_BYTES,
}
Versions 1-4: the resident reference profile. Versions 1-3 store expanded bake corners as vertices, so only versions 4 and later check TotalIndices.

Related types: BundleLimits

Declared in modules/content/scene_format/include/ludus/content/scene_format/limits.h

IMPORT_LIMITS

constexpr BundleLimits ludus::content::scene_format::IMPORT_LIMITS {
    .Meshes = MAX_IMPORT_MESHES,
    .Materials = MAX_IMPORT_MATERIALS,
    .Textures = MAX_IMPORT_TEXTURES,
    .Objects = MAX_IMPORT_OBJECTS,
    .TotalTextureBytes = MAX_IMPORT_TOTAL_TEXTURE_BYTES,
    .Vertices = MAX_IMPORT_VERTICES,
    .TotalIndices = MAX_IMPORT_TOTAL_INDICES,
    .BundleBytes = MAX_IMPORT_BUNDLE_BYTES,
}
Versions 5 and 6: the import profile for best-effort reference scenes.

Related types: BundleLimits

Declared in modules/content/scene_format/include/ludus/content/scene_format/limits.h

MAGIC

constexpr std::string_view ludus::content::scene_format::MAGIC {"LUSCN01\0", 8}
Eight-byte file magic, including the trailing NUL.

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

VERSION_1

constexpr uint32 ludus::content::scene_format::VERSION_1 = 1
Version 1: materials without an address mode (MaterialRecordV1).

Related types: uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

VERSION_2

constexpr uint32 ludus::content::scene_format::VERSION_2 = 2
Version 2: materials carry an explicit address mode (MaterialRecordV2).

Related types: uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

VERSION_3

constexpr uint32 ludus::content::scene_format::VERSION_3 = 3
Version 3: sided emission, source IDs, bake coordinates and authored lighting.

Related types: uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

VERSION_4

constexpr uint32 ludus::content::scene_format::VERSION_4 = 4
Version 4: version 3 records with indexed VertexRecord meshes. Bake chart coordinates are not stored; consumers derive them per triangle corner.

Related types: uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

VERSION_5

constexpr uint32 ludus::content::scene_format::VERSION_5 = 5
Version 5: version 4 records with alpha-masked materials (MaterialRecordV5) and the import profile's admission limits.

Related types: uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

VERSION_6

constexpr uint32 ludus::content::scene_format::VERSION_6 = 6
Version 6: version 5 records with surface/emission maps (MaterialRecordV6) and per-vertex tangents (VertexRecordV6).

Related types: uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

VERSION_7

constexpr uint32 ludus::content::scene_format::VERSION_7 = 7
Version 7: version 6 plus counted source names, source identities, reflectance factors and typed optical parameters (MaterialExtensionV7 after each v6 material).

Related types: uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

VERSION_8

constexpr uint32 ludus::content::scene_format::VERSION_8 = 8
Version 8 admits the diffuse/conductor Mix tag in the unchanged version-7 record layout.

Related types: uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

VERSION_9

constexpr uint32 ludus::content::scene_format::VERSION_9 = 9
Version 9 admits the unresolved import marker in the unchanged version-7 record layout.

Related types: uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

VERSION_10

constexpr uint32 ludus::content::scene_format::VERSION_10 = 10
Version 10 admits project BRDF programs using the version-7 record layout.

Related types: uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

MATERIAL_EXTENSION_V7_BYTES

constexpr usize ludus::content::scene_format::MATERIAL_EXTENSION_V7_BYTES =
3 * sizeof(uint32) + MAX_MATERIAL_NAME_BYTES +
(MATERIAL_RGB_CHANNELS + MATERIAL_SCATTERING_FLOATS) * sizeof(float32)
Exact serialized material extension width, derived from its field schema.

Related types: usize

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

LIGHTING_PROFILE_REC709_PHOTOMETRIC

constexpr uint32 ludus::content::scene_format::LIGHTING_PROFILE_REC709_PHOTOMETRIC = 1
Linear Rec.709 RGB photometric proxy; not a spectral PBRT representation.

Related types: uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

MAX_LIGHTS

constexpr uint32 ludus::content::scene_format::MAX_LIGHTS = 128
Largest analytic light list; selection must never silently discard sources.

Related types: uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

MAX_ENVIRONMENT_DIMENSION

constexpr uint32 ludus::content::scene_format::MAX_ENVIRONMENT_DIMENSION = 4096
Largest HDR environment dimension; its RGB payload is also bundle-size bounded.

Related types: uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

ENVIRONMENT_TEXEL_BYTES

constexpr uint32 ludus::content::scene_format::ENVIRONMENT_TEXEL_BYTES = 3 * sizeof(float32)
Three tightly packed float32 channels per environment texel.

Related types: uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

EMISSION_TWO_SIDED

constexpr uint32 ludus::content::scene_format::EMISSION_TWO_SIDED = 1
Material emission is visible and transports light on both geometric sides.

Related types: uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

EMISSION_HAS_POWER

constexpr uint32 ludus::content::scene_format::EMISSION_HAS_POWER = 2
EmissionPower is an unresolved per-instance total luminous flux in lumens.

Related types: uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

EMISSION_FLAGS

constexpr uint32 ludus::content::scene_format::EMISSION_FLAGS = EMISSION_TWO_SIDED | EMISSION_HAS_POWER
All admitted material emission flags.

Related types: uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

LIGHT_DIRECTIONAL

constexpr uint32 ludus::content::scene_format::LIGHT_DIRECTIONAL = 0
Analytic directional illuminance in RGB lux.

Related types: uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

LIGHT_POINT

constexpr uint32 ludus::content::scene_format::LIGHT_POINT = 1
Analytic point intensity in RGB candela.

Related types: uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

LIGHT_SPOT

constexpr uint32 ludus::content::scene_format::LIGHT_SPOT = 2
Analytic spot intensity in RGB candela, with cosine cone falloff.

Related types: uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

LIGHT_ENABLED

constexpr uint32 ludus::content::scene_format::LIGHT_ENABLED = 1
Enabled authored light. Disabled sources retain identity and authoring values.

Related types: uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

MAX_LIGHT_INTENSITY

constexpr float32 ludus::content::scene_format::MAX_LIGHT_INTENSITY = 1000000.0F
Largest admitted analytic RGB intensity or unresolved luminous flux.

Related types: float32

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

TEXEL_BYTES

constexpr uint32 ludus::content::scene_format::TEXEL_BYTES = 4
RGBA8 bytes per texel.

Related types: uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

NO_TEXTURE

constexpr uint32 ludus::content::scene_format::NO_TEXTURE = ~uint32{0}
MaterialRecord::Texture value for an untextured surface.

Related types: uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

ADDRESS_CLAMP

constexpr uint32 ludus::content::scene_format::ADDRESS_CLAMP = 0
MaterialRecordV2::AddressMode: clamp texture coordinates at the borders.

Related types: uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

ADDRESS_REPEAT

constexpr uint32 ludus::content::scene_format::ADDRESS_REPEAT = 1
MaterialRecordV2::AddressMode: repeat texture coordinates.

Related types: uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

ALPHA_OPAQUE

constexpr uint32 ludus::content::scene_format::ALPHA_OPAQUE = 0
MaterialRecordV5::AlphaMode: ignore texture alpha; the surface is fully covered.

Related types: uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

ALPHA_MASKED

constexpr uint32 ludus::content::scene_format::ALPHA_MASKED = 1
MaterialRecordV5::AlphaMode: discard where base texture alpha is below AlphaCutoff.

Related types: uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

MIN_AUTHORED_ROUGHNESS

constexpr foundation::float64 ludus::content::scene_format::MIN_AUTHORED_ROUGHNESS = .045
Smallest admitted material roughness.

Related types: foundation::float64

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

MIN_ROUGHNESS

constexpr float32 ludus::content::scene_format::MIN_ROUGHNESS = static_cast<float32>(MIN_AUTHORED_ROUGHNESS)
Minimum roughness rounded to the cooked binary32 representation.

Related types: float32

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

MAX_EMISSION

constexpr float32 ludus::content::scene_format::MAX_EMISSION = 10000.0F
Largest admitted emission per channel.

Related types: float32

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

RGB_CHANNELS

constexpr usize ludus::content::scene_format::RGB_CHANNELS = 3
Linear RGB channels of an emission value.

Related types: usize

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

MAX_NORMAL_SCALE

constexpr float32 ludus::content::scene_format::MAX_NORMAL_SCALE = 8.0F
Largest MaterialRecordV6::NormalScale, the renderer's tangent-normal strength limit.

Related types: float32

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

TRIANGLE_CORNERS

constexpr uint32 ludus::content::scene_format::TRIANGLE_CORNERS = 3
Indices per triangle in a mesh's triangle list; MeshRecord::IndexCount is a multiple.

Related types: uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

SPATIAL_COMPONENTS

constexpr usize ludus::content::scene_format::SPATIAL_COMPONENTS = 3
Components of a position, normal or direction (X, Y, Z).

Related types: usize

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

TANGENT_COMPONENTS

constexpr usize ludus::content::scene_format::TANGENT_COMPONENTS = 4
Tangent components of a VertexRecordV6: direction XYZ and handedness W.

Related types: usize

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

MIN_TANGENT_PERPENDICULAR

constexpr float32 ludus::content::scene_format::MIN_TANGENT_PERPENDICULAR = 1e-4F
Smallest length of the part of a present VertexRecordV6 tangent perpendicular to the unit vertex normal, so every consumer can build a tangent frame from it.

Related types: float32

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

OBJECT_TRANSFORM_COMPONENTS

constexpr usize ludus::content::scene_format::OBJECT_TRANSFORM_COMPONENTS = 12
Number of float32 components in ObjectRecord::Linear plus Translation.

Related types: usize

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

BAKE_CHART_TILE_PIXELS

constexpr uint32 ludus::content::scene_format::BAKE_CHART_TILE_PIXELS = 4
Fixed triangle chart tile width: a two-texel interior and one-texel gutter.

Related types: uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

MAX_BAKE_CHART_DIMENSION

constexpr uint32 ludus::content::scene_format::MAX_BAKE_CHART_DIMENSION = 4096
Largest bake atlas width/height; the producer must also budget its payload.

Related types: uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

LUDUS_MATERIAL_MODEL_METALLIC_ROUGHNESS

static const MaterialModelTag ludus::content::scene_format::LUDUS_MATERIAL_MODEL_METALLIC_ROUGHNESS = 0
Legacy metallic/roughness scattering wire tag, shared with shader code.

Related types: MaterialModelTag

Declared in modules/content/scene_format/include/ludus/content/scene_format/material.h

LUDUS_MATERIAL_MODEL_DIFFUSE

static const MaterialModelTag ludus::content::scene_format::LUDUS_MATERIAL_MODEL_DIFFUSE = 1
Lambertian scattering wire tag, shared with shader code.

Related types: MaterialModelTag

Declared in modules/content/scene_format/include/ludus/content/scene_format/material.h

LUDUS_MATERIAL_MODEL_CONDUCTOR

static const MaterialModelTag ludus::content::scene_format::LUDUS_MATERIAL_MODEL_CONDUCTOR = 2
Complex-IOR conductor scattering wire tag, shared with shader code.

Related types: MaterialModelTag

Declared in modules/content/scene_format/include/ludus/content/scene_format/material.h

LUDUS_MATERIAL_MODEL_COATED_DIFFUSE

static const MaterialModelTag ludus::content::scene_format::LUDUS_MATERIAL_MODEL_COATED_DIFFUSE = 3
Preserved coated-diffuse scattering wire tag, shared with shader code.

Related types: MaterialModelTag

Declared in modules/content/scene_format/include/ludus/content/scene_format/material.h

LUDUS_MATERIAL_MODEL_DIELECTRIC

static const MaterialModelTag ludus::content::scene_format::LUDUS_MATERIAL_MODEL_DIELECTRIC = 4
Smooth dielectric interface (reflection and refraction) wire tag, shared with shader code.

Related types: MaterialModelTag

Declared in modules/content/scene_format/include/ludus/content/scene_format/material.h

LUDUS_MATERIAL_MODEL_THIN_DIELECTRIC

static const MaterialModelTag ludus::content::scene_format::LUDUS_MATERIAL_MODEL_THIN_DIELECTRIC = 5
Thin dielectric slab (reflection and straight transmission) wire tag, shared with shader code.

Related types: MaterialModelTag

Declared in modules/content/scene_format/include/ludus/content/scene_format/material.h

LUDUS_MATERIAL_MODEL_DIFFUSE_CONDUCTOR_MIX

static const MaterialModelTag ludus::content::scene_format::LUDUS_MATERIAL_MODEL_DIFFUSE_CONDUCTOR_MIX = 6
Weighted Lambertian and rough conductor wire tag.

Related types: MaterialModelTag

Declared in modules/content/scene_format/include/ludus/content/scene_format/material.h

LUDUS_MATERIAL_MODEL_UNRESOLVED

static const MaterialModelTag ludus::content::scene_format::LUDUS_MATERIAL_MODEL_UNRESOLVED = 7
Content-only tag for a named source material without a scattering implementation.

Related types: MaterialModelTag

Declared in modules/content/scene_format/include/ludus/content/scene_format/material.h

LUDUS_MATERIAL_MODEL_PROJECT_BRDF

static const MaterialModelTag ludus::content::scene_format::LUDUS_MATERIAL_MODEL_PROJECT_BRDF = 8
Project-authored cosine-power BRDF program, version 1.

Related types: MaterialModelTag

Declared in modules/content/scene_format/include/ludus/content/scene_format/material.h

LUDUS_PROJECT_BRDF_MAX_POWER

static const MaterialScalar ludus::content::scene_format::LUDUS_PROJECT_BRDF_MAX_POWER = 32
Maximum authored cosine exponent before applying perceptual roughness.

Related types: MaterialScalar

Declared in modules/content/scene_format/include/ludus/content/scene_format/material.h

LUDUS_PROJECT_BRDF_MIN_WEIGHT

static const MaterialScalar ludus::content::scene_format::LUDUS_PROJECT_BRDF_MIN_WEIGHT = 0.001F
Minimum total lobe weight, to keep normalization bounded in binary32.

Related types: MaterialScalar

Declared in modules/content/scene_format/include/ludus/content/scene_format/material.h

LUDUS_COATING_MAX_DEPTH

static const MaterialModelTag ludus::content::scene_format::LUDUS_COATING_MAX_DEPTH = 10
PBRT default bounded internal layer events; independent of scene path depth.

Related types: MaterialModelTag

Declared in modules/content/scene_format/include/ludus/content/scene_format/material.h

LUDUS_COATING_SAMPLES

static const MaterialModelTag ludus::content::scene_format::LUDUS_COATING_SAMPLES = 1
PBRT default number of independent layered evaluation/PDF estimates.

Related types: MaterialModelTag

Declared in modules/content/scene_format/include/ludus/content/scene_format/material.h

LUDUS_SMOOTH_INTERFACE_ALPHA

static const MaterialScalar ludus::content::scene_format::LUDUS_SMOOTH_INTERFACE_ALPHA = 0.001F
GGX alpha below which a dielectric interface is perfectly specular: pbrt-v4's TrowbridgeReitzDistribution::EffectivelySmooth threshold.

Related types: MaterialScalar

Declared in modules/content/scene_format/include/ludus/content/scene_format/material.h

LUDUS_COATING_MIN_ALPHA

static const MaterialScalar ludus::content::scene_format::LUDUS_COATING_MIN_ALPHA = LUDUS_SMOOTH_INTERFACE_ALPHA
Smallest rough coating alpha; smaller values require a delta dielectric interface.

Related types: MaterialScalar

Declared in modules/content/scene_format/include/ludus/content/scene_format/material.h

MATERIAL_RGB_CHANNELS

constexpr foundation::usize ludus::content::scene_format::MATERIAL_RGB_CHANNELS = 3
RGB channels in serialized optical constants.

Related types: foundation::usize

Declared in modules/content/scene_format/include/ludus/content/scene_format/material.h

MAX_MATERIAL_NAME_BYTES

constexpr foundation::usize ludus::content::scene_format::MAX_MATERIAL_NAME_BYTES = 128
Maximum bytes of a source material name; names are counted UTF-8, never truncated.

Related types: foundation::usize

Declared in modules/content/scene_format/include/ludus/content/scene_format/material.h

MIN_MATERIAL_ALPHA

constexpr foundation::float32 ludus::content::scene_format::MIN_MATERIAL_ALPHA = 0.0001F
Smallest admitted rough-conductor GGX alpha; perfect-specular transport is separate.

Related types: foundation::float32

Declared in modules/content/scene_format/include/ludus/content/scene_format/material.h

MAX_MATERIAL_OPTICAL_CONSTANT

constexpr foundation::float32 ludus::content::scene_format::MAX_MATERIAL_OPTICAL_CONSTANT = 10000
Optical constants are finite and bounded to avoid overflow in Fresnel evaluation.

Related types: foundation::float32

Declared in modules/content/scene_format/include/ludus/content/scene_format/material.h

DEFAULT_COATING_ETA

constexpr foundation::float32 ludus::content::scene_format::DEFAULT_COATING_ETA = 1.5F
Default PBRT coated-diffuse dielectric index of refraction.

Related types: foundation::float32

Declared in modules/content/scene_format/include/ludus/content/scene_format/material.h

DEFAULT_COATING_THICKNESS

constexpr foundation::float32 ludus::content::scene_format::DEFAULT_COATING_THICKNESS = 0.01F
Default PBRT coated-diffuse optical thickness.

Related types: foundation::float32

Declared in modules/content/scene_format/include/ludus/content/scene_format/material.h

DEFAULT_DIELECTRIC_ETA

constexpr foundation::float32 ludus::content::scene_format::DEFAULT_DIELECTRIC_ETA = 1.5F
Default PBRT dielectric and thin-dielectric index of refraction.

Related types: foundation::float32

Declared in modules/content/scene_format/include/ludus/content/scene_format/material.h

DIELECTRIC_FALLBACK_REFLECTANCE

constexpr foundation::float32 ludus::content::scene_format::DIELECTRIC_FALLBACK_REFLECTANCE = 0.04F
Legacy base colour of an imported dielectric for evaluators without transmission: the normal-incidence reflectance ((eta - 1) / (eta + 1))^2 of the default index.

Related types: foundation::float32

Declared in modules/content/scene_format/include/ludus/content/scene_format/material.h

PROJECT_BRDF_LOBE_COUNT

constexpr foundation::usize ludus::content::scene_format::PROJECT_BRDF_LOBE_COUNT = MATERIAL_RGB_CHANNELS
Number of weighted cosine-power terms in the version-1 project BRDF program.

Related types: foundation::usize

Declared in modules/content/scene_format/include/ludus/content/scene_format/material.h

MATERIAL_SCATTERING_FLOATS

constexpr foundation::usize ludus::content::scene_format::MATERIAL_SCATTERING_FLOATS = MATERIAL_RGB_CHANNELS + MATERIAL_RGB_CHANNELS + 2 + 2
Number of scalar float32 fields in the explicit MaterialScattering wire schema.

Related types: foundation::usize

Declared in modules/content/scene_format/include/ludus/content/scene_format/material.h

Functions

GetMaterialModelBundleVersion

constexpr uint32 ludus::content::scene_format::GetMaterialModelBundleVersion(MaterialModel model) noexcept
Earliest typed bundle version that can store a validated material model.

Related types: MaterialModel · uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

TryMakeBakeChartLayout

constexpr bool ludus::content::scene_format::TryMakeBakeChartLayout(uint32 triangleCount, BakeChartLayout &outLayout) noexcept
Choose the smallest square power-of-two width and smallest sufficient power-of-two height for a positive triangle count. No allocation occurs.

Returns

False on zero count or capacity overflow, preserving outLayout.

Related types: uint32 · BakeChartLayout

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

TryGetBakeChartUv

constexpr bool ludus::content::scene_format::TryGetBakeChartUv(const BakeChartLayout &layout, uint32 triangleIndex, uint32 corner, float32 &outU, float32 &outV) noexcept
Return a triangle corner's normalized atlas coordinate at interior texel centres. Corners 0/1/2 are respectively lower-left/lower-right/upper-left in increasing row coordinates. The fourth interior texel and gutter must receive extrapolated chart irradiance; sample this atlas without mipmaps.

Precondition

layout was returned by TryMakeBakeChartLayout and is unchanged.

Returns

False for an invalid triangle/corner, preserving both outputs.

Related types: float32 · uint32 · BakeChartLayout

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

IsSupportedVersion

constexpr bool ludus::content::scene_format::IsSupportedVersion(uint32 version) noexcept
True for a version this header describes.

Related types: uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

HasLightingRecords

constexpr bool ludus::content::scene_format::HasLightingRecords(uint32 version) noexcept
True when the version carries version 3 material emission terms, object source IDs and the lighting trailer (versions 3 through 10).

Related types: uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

HasStoredBakeCoordinates

constexpr bool ludus::content::scene_format::HasStoredBakeCoordinates(uint32 version) noexcept
True when each vertex stores its bake chart coordinate (VertexRecordV3).

Related types: uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

HasMaterialAlpha

constexpr bool ludus::content::scene_format::HasMaterialAlpha(uint32 version) noexcept
True when each material carries an alpha mode and cutoff (MaterialRecordV5 and V6).

Related types: uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

HasImplicitBakeCoordinates

constexpr bool ludus::content::scene_format::HasImplicitBakeCoordinates(uint32 version) noexcept
True when the combined index count of all meshes is bounded by BundleLimits::TotalIndices: consumers expand implicit bake chart corners (versions 4 to 6), rather than reading stored ones bounded by the vertex limit.

Related types: uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

HasSurfaceMaps

constexpr bool ludus::content::scene_format::HasSurfaceMaps(uint32 version) noexcept
True when materials carry surface and emission maps (MaterialRecordV6) and each vertex stores a tangent (VertexRecordV6).

Related types: uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

GetBundleLimits

constexpr const BundleLimits & ludus::content::scene_format::GetBundleLimits(uint32 version) noexcept
Admission ceilings for a supported version: the import profile for versions 5 through 10, otherwise the resident reference profile.

Related types: uint32 · BundleLimits

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

GetVertexRecordBytes

constexpr usize ludus::content::scene_format::GetVertexRecordBytes(uint32 version) noexcept
Bytes of one serialized vertex for a supported version.

Related types: usize · uint32

Declared in modules/content/scene_format/include/ludus/content/scene_format/luscn.h

HasRoughConductorLobe

constexpr bool ludus::content::scene_format::HasRoughConductorLobe(MaterialModel model) noexcept
Report whether the model uses the complex-IOR GGX lobe and its authored alpha.

Related types: MaterialModel

Declared in modules/content/scene_format/include/ludus/content/scene_format/material.h

SupportsFixedDimensionReflection

constexpr bool ludus::content::scene_format::SupportsFixedDimensionReflection(MaterialModel model) noexcept
Report whether the model supplies continuous reflection and a fixed three-value sampler.

Related types: MaterialModel

Declared in modules/content/scene_format/include/ludus/content/scene_format/material.h

SupportsFixedDimensionReflection

constexpr bool ludus::content::scene_format::SupportsFixedDimensionReflection(const MaterialScattering &scattering) noexcept
Test the fixed-dimension reflection guarantee, including a project program's declaration.

Related types: MaterialScattering

Declared in modules/content/scene_format/include/ludus/content/scene_format/material.h

IsMaterialScatteringValid

constexpr bool ludus::content::scene_format::IsMaterialScatteringValid(const MaterialScattering &scattering) noexcept
Validate finite bounded optical parameters. Unsupported model tags reject. An evaluator separately admits the supported anisotropy.

Related types: MaterialScattering

Declared in modules/content/scene_format/include/ludus/content/scene_format/material.h

IsStoredMaterialScatteringValid

constexpr bool ludus::content::scene_format::IsStoredMaterialScatteringValid(MaterialScattering scattering) noexcept
Validate cooked optical storage, including the import-only unresolved marker.

Related types: MaterialScattering

Declared in modules/content/scene_format/include/ludus/content/scene_format/material.h