Skip to content

ludus::graphics::renderer

Ludus Wiki · API overview · Browse API

Namespace

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/deferred_layout.h

Enumerations

LightKind

enum class LightKind : ludus::foundation::uint8
Punctual RGB light model; distances and positions use meters.

Related types: ludus::foundation::uint8

Directional

Directional
Uniform incident illuminance in lux; Direction points from light toward scene.

Point

Point
Isotropic luminous intensity in candela, with bounded smooth range falloff.

Spot

Spot
On-axis candela with a squared smooth cone; angles expressed as cosines.

AreaOneSided

AreaOneSided
Deterministic area quadrature: Intensity is RGB nits times weighted square metres; outgoing Direction supplies the Lambertian emitter cosine. Not a delta authoring source.

AreaTwoSided

AreaTwoSided
Same weighted quadrature with the absolute emitter cosine on both sides.

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/light_selection.hpp

LightTransformerPreparationIssue

enum class LightTransformerPreparationIssue : foundation::uint8
Failed stage of a model scene candidate; the last drawable generation remains intact.

Related types: foundation::uint8

None

None
No model preparation failure.

MaterialInterface

MaterialInterface
Supply a complete material-aware extraction.

AnalyticLights

AnalyticLights
Disable analytic lights or use a renderer that supports them; this model encodes mesh emission.

Environment

Environment
Disable environment illumination or use another renderer.

Materials

Materials
Assign typed diffuse materials, including every previously unassigned surface.

Sampling

Sampling
Repair malformed/fully masked geometry or increase the surface sampling budget.

FixedScale

FixedScale
Partition the World or use a model trained at the required extent; do not fit each scene independently.

ModelAsset

ModelAsset
Re-export a complete compatible finite checkpoint.

EmbeddingCapacity

EmbeddingCapacity
Increase the graph embedding Buffer capacity; its authored limit is preserved.

DeviceCapacity

DeviceCapacity
Raise the model/device budget or reduce points; enabled device limits are immutable until restart.

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/light_transformer_encoder.hpp

AreaLightQuadrature

enum class AreaLightQuadrature : ludus::foundation::uint8
Bounded deterministic quadrature, trading near-field accuracy for raster cost.

Related types: ludus::foundation::uint8

Centroid

Centroid
One sample at the centroid; coarse near-field approximation.

ThreePoint

ThreePoint
Three symmetric barycentric samples, each with area/3 weight.

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/lighting.hpp

MaterialDebugView

enum class MaterialDebugView : ludus::foundation::uint8
Diagnostic output selected by the debug-view lit recipes (renderer_lit_debug, renderer_clustered_authored_debug). Ordinary lit programs ignore it and shade normally. Debug colours are pre-compensated for RasterViewport's PBR Neutral (ToneCurve::PbrNeutral) + sRGB presentation at exposure one (InvertPbrNeutral), so they display as described; RGBA8 scene targets clip scene values above one, which limits a white debug colour to 0.87 display-linear.

Related types: ludus::foundation::uint8

None

None = MATERIAL_DEBUG_VIEW_NONE
Ordinary lit shading.

NormalWorld

NormalWorld = MATERIAL_DEBUG_VIEW_NORMAL_WORLD
Shaded world-space normal mapped from [-1,1] to [0,1] RGB.

LinearDepth

LinearDepth = MATERIAL_DEBUG_VIEW_LINEAR_DEPTH
Camera distance mapped linearly over ViewDescription::DebugDepthRange, near dark purple to far yellow on the viridis ramp.

Roughness

Roughness = MATERIAL_DEBUG_VIEW_ROUGHNESS
Perceptual roughness after surface-map scaling, as grey.

Metallic

Metallic = MATERIAL_DEBUG_VIEW_METALLIC
Metallic fraction after surface-map scaling, as grey.

TexcoordUv

TexcoordUv = MATERIAL_DEBUG_VIEW_TEXCOORD_UV
Fractional mesh UV0 as red (U) and green (V).

LightCount

LightCount = MATERIAL_DEBUG_VIEW_LIGHT_COUNT
Direct lights with a nonzero shadowed contribution at the pixel, as a viridis ramp saturating at MATERIAL_DEBUG_LIGHT_COUNT_SATURATION; dark purple means no direct light.

Wireframe

Wireframe = MATERIAL_DEBUG_VIEW_WIREFRAME
Light grey brightening as the surface faces the camera. Draws triangle edges only when the material's program was prewarmed with rhi::RasterFillMode::Lines; a solid program fills triangles in that colour.

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/lighting.hpp

SpatialAntialiasing

enum class SpatialAntialiasing : ludus::foundation::uint8
Spatial antialiasing applied to the display image in the output pass, after exposure, tone mapping and encoding. FXAA 3.11 on the display colour: one fullscreen pass that touches only edge pixels beyond five loads. It acts on the source texels, so it assumes the image maps to the target one to one, as RasterViewport's does.

Related types: ludus::foundation::uint8

Off

Off
No filtering; the output pass takes its single sample as before.

Fast

Fast
Wider contrast threshold, edge walks of up to four pixels and a lighter blend for isolated bright pixels.

Balanced

Balanced
Tighter threshold, edge walks of up to sixteen pixels and the full sub-pixel blend.

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/lighting.hpp

MaterialAlpha

enum class MaterialAlpha : ludus::foundation::uint8
Unlit material alpha domain; no screen-door or hidden transparency sorting.

Related types: ludus::foundation::uint8

Opaque

Opaque
Ignore sampled alpha, write/test scene depth and output alpha one.

Masked

Masked
Discard below AlphaCutoff, then write/test scene depth and output alpha one.

Painter

Painter
Straight authored color/texture alpha, premultiplied once; painter Overlay layer.

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/materials.hpp

OverlayDepth

enum class OverlayDepth : foundation::uint8
Depth tests for debug geometry; every variant preserves scene depth.

Related types: foundation::uint8

Always

Always
Display overlay with no depth test.

Conventional

Conventional
Conventional [0,1] depth, accepting equality.

ReverseZ

ReverseZ
Reverse-Z [0,1] depth, accepting equality.

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/overlays.hpp

ReferenceTraversal

enum class ReferenceTraversal : ludus::foundation::uint8
Selected traversal implementation, recorded in capture metadata.

Related types: ludus::foundation::uint8

NativeQueries

NativeQueries
Explicit asynchronous native BLAS/TLAS queries; unsupported devices reject.

CpuOracle

CpuOracle
Explicit CPU BVH oracle for validation/offline work. Never silently selected as a hardware fallback; the same retained geometry/material schema is used.

GpuCompute

GpuCompute
GPU reference: compute kernels traverse the same median BVH and run transport, shading and compensated accumulation on the device. Requires compute support, not native ray queries. Committed sums are read back only for copy/export.

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/reference.hpp

ReferenceLightSampling

enum class ReferenceLightSampling : ludus::foundation::uint8
Next-event estimator for emissive triangles, recorded in capture metadata. Both modes estimate the same truncated integral, so their means agree statistically, never per pixel. Analytic lights, the environment and the uniform category draw are shared. See docs/architecture/many-area-light-sampling-reference-review.md for the estimator.

Related types: ludus::foundation::uint8

UniformArea

UniformArea
Sampler version 1: one power-CDF emitter triangle, one uniform area sample and its shadow ray. The default and the validation oracle; captures stay bit-identical.

ResampledProjectedSolidAngle

ResampledProjectedSolidAngle
Sampler version 2: resampled importance sampling of one emitter triangle from 32 power-CDF candidates with an unshadowed LTC target, then one projected-solid-angle and one LTC sample of it under clamped optimal MIS, so up to two shadow rays per vertex. BSDF hits weigh against a surrogate density with an 8-candidate estimate of the target's total. Requires the renderer's LTC table; GpuCompute kernels without it are rejected when reference rendering is enabled.

ResampledFormFactor

ResampledFormFactor
Sampler version 3: ResampledProjectedSolidAngle with a cheaper target, Hill and Heitz's approximate horizon-clipped form factors of the triangle and of its LTC transform instead of clipped polygon integrals, kept positive wherever the triangle has area above the horizon. It estimates the same integral with different variance and cost, and has its own frozen candidate counts. The selected emitter's samples, densities and MIS weights are those of ResampledProjectedSolidAngle. Same LTC table requirement and random layout.

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/reference.hpp

ReferenceFailure

enum class ReferenceFailure : ludus::foundation::uint8
Validation stage that rejected an uncommitted reference path or tile. This records a failure, never an ordinary zero-contribution or null BSDF sample.

Related types: ludus::foundation::uint8

None

None
No path validation failure has been recorded.

InvalidHit

InvalidHit
Traversal returned an invalid distance, barycentric coordinate or primitive identity.

InvalidEmitterPdf

InvalidEmitterPdf
The competing emissive-surface density was negative or nonfinite.

InvalidSurfaceParameters

InvalidSurfaceParameters
Decoding authored surface parameters failed.

InvalidLightSample

InvalidLightSample
A light proposal had an invalid density or radiance.

InvalidBsdfEvaluation

InvalidBsdfEvaluation
Evaluation of the surface scattering function failed.

InvalidDirectContribution

InvalidDirectContribution
The weighted direct-light contribution was negative or nonfinite.

InvalidShadowSegment

InvalidShadowSegment
Offsetting or constructing the finite visibility segment failed.

InvalidBsdfSample

InvalidBsdfSample
Sampling the surface scattering function failed.

InvalidThroughput

InvalidThroughput
Updated path throughput was negative or nonfinite.

InvalidRayOrigin

InvalidRayOrigin
A generated ray origin was nonfinite or outside the admitted world range.

InvalidRadiance

InvalidRadiance
Accumulated path radiance was negative or nonfinite.

InvalidAccumulation

InvalidAccumulation
Publishing the tile would overflow its accumulated pixel sums.

InvalidCameraRay

InvalidCameraRay
Constructing a camera ray from the admitted projection failed.

InvalidSceneLayout

InvalidSceneLayout
The compute shader received an incompatible packed scene layout.

TraversalCapacityExceeded

TraversalCapacityExceeded
The GPU traversal exhausted its bounded pending-node stack.

OpticalRegionCapacity

OpticalRegionCapacity
An optical interaction region contains too many triangles; no partial connection was published.

OpticalPropagationCapacity

OpticalPropagationCapacity
Optical propagation or ballistic escape exhausted the bounded interaction steps.

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/reference.hpp

RenderGraphFailureReason

enum class RenderGraphFailureReason : foundation::uint8
Why a graph ray invocation failed: the scene interface's reasons, recorded by the shader function FailSceneQuery (scene_shader_layout.h, LUDUS_SCENE_FAILURE_*). Authored shaders may report their own reasons from RENDER_GRAPH_FAILURE_AUTHORED_FIRST. See docs/development/render-graph-authoring.md, "Explain failed pixels".

Related types: foundation::uint8

Unspecified

Unspecified
A shader set queries.HasFailed without a reason.

InvalidRadiance

InvalidRadiance
A sample returned non-finite or negative radiance.

InterfaceVersion

InterfaceVersion
The scene interface version does not match the renderer.

SurfaceBudget

SurfaceBudget
More surface queries than scene_interface.surface_queries.

VisibilityBudget

VisibilityBudget
More visibility queries than scene_interface.visibility_queries.

LineBudget

LineBudget
More line queries than scene_interface.line_queries.

InvalidRay

InvalidRay
A ray with a non-unit direction or an invalid distance range.

Traversal

Traversal
The traversal could not finish, such as a full BVH stack.

RandomExhausted

RandomExhausted
The invocation's random stream ran out of dimensions.

InvalidArgument

InvalidArgument
A scene function received an out-of-range or degenerate input.

LightSample

LightSample
No light could be selected or sampled.

StorageCapacity

StorageCapacity
A graph storage buffer has fewer entries than the pixels using it.

StoredRecord

StoredRecord
Per-pixel data an earlier pass did not write for this pixel or frame.

SceneData

SceneData
An invalid triangle, surface or material from a scene lookup.

InvalidWeight

InvalidWeight
A non-finite or negative sampling weight, probability or PDF.

BsdfOnlyLights

BsdfOnlyLights
Analytic lights require a light-sampling transport profile.

PrimaryMaterial

PrimaryMaterial
A material requires random dimensions outside the primary-sample profile.

PhotonCamera

PhotonCamera
Guided photon backprojection requires a perspective camera.

PhotonCapacity

PhotonCapacity
Guided photon storage or light admission exceeds its declared template limits.

PhotonDispatch

PhotonDispatch
Photon maps and spatial reuse require a whole-image dispatch.

GeometrySamplingLights

GeometrySamplingLights
A geometry-sampling template received analytic or environment lighting.

GeometryStatisticsCapacity

GeometryStatisticsCapacity
A geometry-sampling statistics buffer cannot hold the scene hierarchy.

WaveDirection

WaveDirection
The wave aperture plane has no propagation direction.

WaveResolution

WaveResolution
The aperture quadrature cannot resolve the Fresnel phase gradient.

WaveCapacity

WaveCapacity
A scalar optical connection exceeds the region or triangle workspace.

WaveConnection

WaveConnection
The optical wavelength or finite connection is outside the paraxial profile.

WavePropagationCapacity

WavePropagationCapacity
An optical connection exceeds the admitted number of successive regions.

FixedDimensionMaterial

FixedDimensionMaterial
An assigned surface lacks continuous reflection with a fixed sample dimension.

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/render_graph.hpp

RayPathEventKind

enum class RayPathEventKind : foundation::uint8
Which kernel operation produced a ray path event.

Related types: foundation::uint8

Closest

Closest
A closest-hit query: camera ray, bounce or authored TraceClosest.

Visibility

Visibility
An any-hit visibility (shadow) query; Hit means occluded.

RasterFirstHit

RasterFirstHit
A visibility-buffer first hit replacing the camera query; no traversal.

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/render_graph.hpp

RayPathOutcome

enum class RayPathOutcome : foundation::uint8
Result of one ray path event.

Related types: foundation::uint8

Miss

Miss
No accepted triangle in the submitted interval.

Hit

Hit
A committed triangle; its identity fields are valid.

Failure

Failure
The failed-triangle sentinel, an invalid submitted ray or a failed raster reconstruction.

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/render_graph.hpp

RenderGraphLayout

enum class RenderGraphLayout : foundation::uint8
Declared geometry interface of an extracted draw item.

Related types: foundation::uint8

Static

Static
Typed MeshDescription and immutable static local-to-world transform.

Unsupported

Unsupported
The position path is unknown; only an explicit bounds proxy may be drawn.

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/render_graph.hpp

RenderGraphMaterial

enum class RenderGraphMaterial : foundation::uint8
Required material/coverage semantics; never disappear in a query filter.

Related types: foundation::uint8

Opaque

Opaque
Static opaque coverage; covered by DefaultStaticOpaque or triangle ray techniques.

Masked

Masked
Authored coverage; covered only by explicitly authored DefaultStaticMasked techniques.

Transparent

Transparent
Does not implicitly participate in pre-Z.

Unsupported

Unsupported
Unmatched material or deformation contract.

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/render_graph.hpp

RenderGraphCoverage

enum class RenderGraphCoverage : foundation::uint8
Scene compatibility for a rendering role, independent of runtime culling.

Related types: foundation::uint8

Covered

Covered
Compatible active route; not a promise of visibility.

Unsupported

Unsupported
Layout/material/coverage mismatch; diagnostic rendering does not repair it.

Conflicting

Conflicting
Repeated incompatible role or duplicate draw identity.

IntentionallyExcluded

IntentionallyExcluded
Explicit authored omission.

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/render_graph.hpp

RenderGraphReason

enum class RenderGraphReason : foundation::uint8
Reason retained even when an error-color/proxy route draws this item.

Related types: foundation::uint8

None

None
Compatible route or intentional exclusion.

Layout

Layout
Unknown mesh position/interface.

Material

Material
No route with a matching material family, or transparency/deformation.

Duplicate

Duplicate
Duplicate source identity or repeated role without author permission.

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/render_graph.hpp

RenderGraphCoveragePolicy

enum class RenderGraphCoveragePolicy : foundation::uint8
Editor and shipping admission are explicit policies.

Related types: foundation::uint8

RejectIncomplete

RejectIncomplete
Preserve the last drawable scene on unsupported/conflicting coverage.

DiagnosticColor

DiagnosticColor
Admit an editor diagnostic color/proxy route while retaining unsupported reports.

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/render_graph.hpp

RenderGraphPackageStatus

enum class RenderGraphPackageStatus : foundation::uint8
Result of decoding a .lurgrt runtime generation.

Related types: foundation::uint8

Ready

Ready
The package decoded and owns copies of every record and artifact.

Malformed

Malformed
Truncated, trailing, out-of-range or inconsistent records.

UnsupportedVersion

UnsupportedVersion
Unknown magic or layout version; never guessed.

CapacityExceeded

CapacityExceeded
Counts or byte sizes exceed the runtime format bounds.

OutOfMemory

OutOfMemory
Owned storage could not be allocated.

InvalidState

InvalidState
Decode was called on a package that already holds a generation.

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/render_graph_activation.hpp

RenderGraphCandidateState

enum class RenderGraphCandidateState : foundation::uint8
Lifecycle of the most recently staged candidate generation.

Related types: foundation::uint8

None

None
No candidate is staged, or the last one was activated.

Preparing

Preparing
Pipelines or the candidate scene are pending; the active generation keeps drawing.

NeedsUpdate

NeedsUpdate
Pipelines are Ready; call Update with the current extraction before activation.

Failed

Failed
Setup, coverage or device rejection; the active generation and its pixels remain.

RestartRequired

RestartRequired
The CPU interface differs from the host's compiled interface; nothing was staged.

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/render_graph_activation.hpp

RenderGraphAllocation

enum class RenderGraphAllocation : foundation::uint8
RG4 attachment allocation of every generation staged through one activation.

Related types: foundation::uint8

ExactPool

ExactPool
Reuse transient attachments across generations through one owned RenderGraphAttachmentPool: an exact descriptor match whose last frame use has completed. Exports are never pooled.

SerialControl

SerialControl
Diagnostic serial control: every generation creates and destroys all of its attachments, exactly as before RG4. Encodes the same commands as ExactPool.

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/render_graph_activation.hpp

RenderGraphPreference

enum class RenderGraphPreference : foundation::uint8
Application renderer preference; uses the traversal explicitly authored in the selected package.

Related types: foundation::uint8

Automatic

Automatic
Prefer an authored ray graph whose explicit native/software profile the device admits.

ForceRaster

ForceRaster
Use the authored raster graph even on a hardware ray device.

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/render_graph_activation.hpp

RenderGraphRenderer

enum class RenderGraphRenderer : foundation::uint8
Execution model selected for one complete authored graph.

Related types: foundation::uint8

Raster

Raster
Raster passes; no raytracing is dispatched.

HardwareRayTracing

HardwareRayTracing
Native acceleration structures and hardware ray queries.

ComputeRayTracing

ComputeRayTracing
GPU compute intersects World triangles without requiring native ray support.

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/render_graph_activation.hpp

RenderGraphCapturePhase

enum class RenderGraphCapturePhase : foundation::uint8
Progress of one RenderGraphCapture.

Related types: foundation::uint8

Idle

Idle
Nothing started, or released.

Initializing

Initializing
The private graph is preparing its pipelines.

AwaitingScene

AwaitingScene
Ready for SubmitScene.

PreparingScene

PreparingScene
The submitted scene is preparing.

Rendering

Rendering
Frames are accumulating toward the target.

ReadingBack

ReadingBack
Copying the Accumulate mean and counts to the CPU, for progress or at the end. Waits, without failing, while other work on the device holds every readback slot.

Complete

Complete
Every frame of the target was submitted and read back without a latched failure.

Stopped

Stopped
Stop ended the capture early; the committed samples were read back.

Failed

Failed
The capture failed; GetProblem and GetStatus say why. Read-back pixels stay readable.

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/render_graph_capture.hpp

RenderGraphCaptureProblem

enum class RenderGraphCaptureProblem : foundation::uint8
Why a capture rejected its source or failed.

Related types: foundation::uint8

None

None
No problem.

NoOutput

NoOutput
The output is not an offscreen colour resource, or the plan has no single exported one.

RasterRoute

RasterRoute
No ray pass with an Accumulate writes the output; raster outputs are display-encoded.

NoAccumulation

NoAccumulation
The ray pass that writes the output outputs individual samples; add an Accumulate.

InvalidSettings

InvalidSettings
The sample target, camera or scene arguments are out of range.

GraphFailure

GraphFailure
The private graph rejected initialization, the scene or a frame; see GetStatus.

ReadbackFailure

ReadbackFailure
Copying the accumulation to the CPU failed; see GetStatus.

LatchedPixels

LatchedPixels
Some pixels latched a shader failure (the graph's failure colour).

UntiledPackage

UntiledPackage
The sample needs more than one band, but the package's ray kernels predate tiled dispatch (package version 28); recook the graph.

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/render_graph_capture.hpp

DepthConvention

enum class DepthConvention : ludus::foundation::uint8
Explicit pairing of projection matrices, clear values and comparisons.

Related types: ludus::foundation::uint8

Conventional

Conventional
R1 compatibility: near zero, far one, clear one, strict Less.

ReverseZ

ReverseZ
Near one, far zero, clear zero, strict Greater.

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/renderer.hpp

Layer

enum class Layer : ludus::foundation::uint8
Opaque scene geometry precedes painter-ordered overlays.

Related types: ludus::foundation::uint8

Opaque

Opaque
Depth-tested, depth-writing, alpha-one geometry.

Overlay

Overlay
Depth-disabled, premultiplied-alpha geometry in snapshot input order.

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/renderer.hpp

SceneMemoryBudget

enum class SceneMemoryBudget : foundation::uint8
Ray preparation byte ceiling that rejected a candidate; independent of allocator failure.

Related types: foundation::uint8

None

None
No measured byte ceiling was exceeded.

CpuScene

CpuScene
Frozen triangles, BVH, surfaces, textures and environment setup.

CpuScratch

CpuScratch
Fingerprint, packed upload data or pixel initialization scratch.

GpuPreview

GpuPreview
Logical preview buffers/images, including retained preview jobs.

RhiResources

RhiResources
Device-wide logical resource bytes, including other live/retained resources.

DeviceStorageRange

DeviceStorageRange
One buffer exceeds the device's storage binding byte range.

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/scene_shader.hpp

ToneCurve

enum class ToneCurve : ludus::foundation::uint8
Display curve applied to exposed scene-linear colour before sRGB encoding. The numeric values are the ones renderer_output.slang reads, so they are part of that shader's contract.

Related types: ludus::foundation::uint8

Reinhard

Reinhard = 1
Per-channel x / (1 + x). Simple and monotone, but shifts hue and desaturates bright saturated colours.

PbrNeutral

PbrNeutral = 2
Khronos PBR Neutral: keeps hue and saturation, leaves colours below its compression start (0.76) almost untouched, and compresses highlights toward white.

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/tone_mapping.hpp

ViewportColorMode

enum class ViewportColorMode : ludus::foundation::uint8
Linear scene attachment policy; display images always remain encoded RGBA8.

Related types: ludus::foundation::uint8

PreferHdr

PreferHdr
Prefer HDR when enabled, otherwise use linear RGBA8. Lit materials support both.

Linear8

Linear8
Use linear RGBA8 for unlit textured material programs, which do not support HDR targets.

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/viewport.hpp

ScreenFit

enum class ScreenFit : ludus::foundation::uint8
How authored logical dimensions map into an output rectangle.

Related types: ludus::foundation::uint8

Fit

Fit
Preserve aspect, leaving centered letterbox bars.

Fill

Fill
Preserve aspect, cropping centered excess content.

Stretch

Stretch
Scale each axis independently.

IntegerFit

IntegerFit
Largest integral Fit scale; explicitly fall back to fractional Fit below one.

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/views.hpp

ProjectionKind

enum class ProjectionKind : ludus::foundation::uint8
Explicit right-handed, Y-up, -Z-forward reverse-Z lens profile.

Related types: ludus::foundation::uint8

Orthographic

Orthographic
Centered orthographic projection.

Perspective

Perspective
Perspective with a finite far plane.

PerspectiveInfinite

PerspectiveInfinite
Perspective with an absent far plane; culling uses five planes.

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/views.hpp

ProjectionSpace

enum class ProjectionSpace : ludus::foundation::uint8
Where the prepared geometry will be rasterized; crop must be applied exactly once.

Related types: ludus::foundation::uint8

LogicalScreen

LogicalScreen
Uncropped logical image in an offscreen target; DrawPresentation applies output crop.

OutputRegion

OutputRegion
Direct output-region drawing; apply mapping crop to geometry and overlays here.

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/views.hpp

Aliases

LightingLayoutValue

typedef uint ludus::graphics::renderer::LightingLayoutValue = foundation::uint32
Exact unsigned 32-bit scalar for host/shader layout constants.
Unsigned 32-bit scalar for the shader declarations of layout constants.

Related types: foundation::uint32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/lighting_layout.h

RenderGraphCaptureIdentity

using ludus::graphics::renderer::RenderGraphCaptureIdentity = 
foundation::StaticArray<foundation::uint8, content::render_graph_format::CAPTURE_IDENTITY_BYTES>
Opaque identity bytes recorded in a capture file, normally a SHA-256 digest.

Related types: content::render_graph_format::CAPTURE_IDENTITY_BYTES · foundation::StaticArray · foundation::uint8

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/render_graph_capture.hpp

Constants and variables

DEFERRED_TARGET_COUNT

static const LightingLayoutValue ludus::graphics::renderer::DEFERRED_TARGET_COUNT = 3
RGBA16F G-buffer attachments: world normal/roughness, base color/metallic and emission/coverage.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/deferred_layout.h

DEFERRED_VIEW_ROWS

static const LightingLayoutValue ludus::graphics::renderer::DEFERRED_VIEW_ROWS = 4
Rows of the inverse world-to-clip transform in the per-view uniform block.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/deferred_layout.h

DEFERRED_VIEW_WORDS

static const LightingLayoutValue ludus::graphics::renderer::DEFERRED_VIEW_WORDS = DEFERRED_VIEW_ROWS + 3
Inverse transform, packed eye, target dimensions and view options, in Float4 words.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/deferred_layout.h

DEFERRED_NORMAL_BINDING

static const LightingLayoutValue ludus::graphics::renderer::DEFERRED_NORMAL_BINDING = LUDUS_DEFERRED_NORMAL_BINDING
First resolve texture, following the unchanged authored material bindings.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/deferred_layout.h

DEFERRED_BASE_BINDING

static const LightingLayoutValue ludus::graphics::renderer::DEFERRED_BASE_BINDING = LUDUS_DEFERRED_BASE_BINDING
Base-color/metallic resolve texture.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/deferred_layout.h

DEFERRED_EMISSION_BINDING

static const LightingLayoutValue ludus::graphics::renderer::DEFERRED_EMISSION_BINDING = LUDUS_DEFERRED_EMISSION_BINDING
Emission/coverage resolve texture.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/deferred_layout.h

DEFERRED_DEPTH_BINDING

static const LightingLayoutValue ludus::graphics::renderer::DEFERRED_DEPTH_BINDING = LUDUS_DEFERRED_DEPTH_BINDING
Unfiltered private depth read used to reconstruct world positions.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/deferred_layout.h

DEFERRED_VIEW_BINDING

static const LightingLayoutValue ludus::graphics::renderer::DEFERRED_VIEW_BINDING = LUDUS_DEFERRED_VIEW_BINDING
Per-view inverse transform, eye and dimensions.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/deferred_layout.h

DEFERRED_BINDING_COUNT

static const LightingLayoutValue ludus::graphics::renderer::DEFERRED_BINDING_COUNT = DEFERRED_VIEW_BINDING + 1
Complete immutable resolve binding layout; at most the RHI's sixteen slots.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/deferred_layout.h

DEFERRED_MESH_LIGHT_BINDING

static const LightingLayoutValue ludus::graphics::renderer::DEFERRED_MESH_LIGHT_BINDING = LUDUS_DEFERRED_MESH_LIGHT_BINDING
Resolve-only triangle storage replaces the unused baked-light texture at slot three.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/deferred_layout.h

DEFERRED_LTC_BINDING

static const LightingLayoutValue ludus::graphics::renderer::DEFERRED_LTC_BINDING = LUDUS_DEFERRED_LTC_BINDING
Resolve-only LTC table storage replaces the unused shadow texture at slot four.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/deferred_layout.h

MAX_MESH_LIGHT_POLYGON_CORNERS

static const LightingLayoutValue ludus::graphics::renderer::MAX_MESH_LIGHT_POLYGON_CORNERS = 64
Most corners of one convex emitter polygon record; covers a 64-segment pbrt disk outline. Larger convex outlines are fanned into records of at most this many corners.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/deferred_layout.h

MESH_LIGHT_POLYGON_HEADER_WORDS

static const LightingLayoutValue ludus::graphics::renderer::MESH_LIGHT_POLYGON_HEADER_WORDS = 3
Float4 words before an emitter polygon's corners: unit normal/sidedness, emission/corner count, then the bounding sphere (MESH_LIGHT_POLYGON_BOUND_WORD).

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/deferred_layout.h

MESH_LIGHT_POLYGON_BOUND_WORD

static const LightingLayoutValue ludus::graphics::renderer::MESH_LIGHT_POLYGON_BOUND_WORD = 2
Header word holding the centroid of the record's corners in world metres (xyz) and the largest corner distance from it (w), a sphere enclosing the polygon. It tightens the culling bound and selects the far-field point evaluation (render-graph-authoring.md, "Mesh-light culling").

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/deferred_layout.h

MAX_MESH_LIGHT_POLYGON_WORDS

static const LightingLayoutValue ludus::graphics::renderer::MAX_MESH_LIGHT_POLYGON_WORDS =
MESH_LIGHT_POLYGON_HEADER_WORDS + MAX_MESH_LIGHT_POLYGON_CORNERS
Float4 words of the largest record. A record is its header followed by exactly its corner count of world positions, so records have variable length. The first corner's w holds the polygon's area in square metres, which bounds its contribution for culling; the other corners' w are zero.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/deferred_layout.h

MAX_RASTER_MESH_LIGHT_POLYGONS

static const LightingLayoutValue ludus::graphics::renderer::MAX_RASTER_MESH_LIGHT_POLYGONS = 32768
Maximum retained emitter polygon records: merged convex polygons, unmerged triangles and four subtriangles per textured source triangle. Exceeding this admission limit rejects the candidate without truncating lights. The culling grid bounds per-pixel cost by the records near each pixel, so the limit bounds the upload: at most 67 words per record keeps records and grid under 40 MB and every word offset exact in float32. The Sample project's Bistro needs 17,571 records.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/deferred_layout.h

MESH_LIGHT_GRID_HEADER_WORDS

static const LightingLayoutValue ludus::graphics::renderer::MESH_LIGHT_GRID_HEADER_WORDS = 3
Mesh-light culling grid, appended after the polygon records of the same storage buffer when the scene has emitters (render-graph-authoring.md, "Mesh-light culling"). Its first word is passed to the resolve; zero means no grid, and every record is evaluated. The grid holds three header words, (origin xyz in metres, cubic cell size), (cells along x, y, z, word of the first list entry) and (cull radiance, zero, zero, zero), then the cell table, then the cell lists. Counts, offsets and indices are exact nonnegative integers stored as float32.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/deferred_layout.h

MESH_LIGHT_GRID_CULL_WORD

static const LightingLayoutValue ludus::graphics::renderer::MESH_LIGHT_GRID_CULL_WORD = 2
Header word whose x is the radiance below which a record's bounded Lambert term is omitted.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/deferred_layout.h

MESH_LIGHT_GRID_CELLS_PER_AXIS

static const LightingLayoutValue ludus::graphics::renderer::MESH_LIGHT_GRID_CELLS_PER_AXIS = 32
Cells along the receivers' longest axis; the other axes use as many cubic cells as cover them.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/deferred_layout.h

MESH_LIGHT_GRID_CELLS_PER_WORD

static const LightingLayoutValue ludus::graphics::renderer::MESH_LIGHT_GRID_CELLS_PER_WORD = 2
Cell table entries per Float4 word, each a (first list entry, entry count) pair, in x-fastest cell order.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/deferred_layout.h

MESH_LIGHT_GRID_ENTRIES_PER_WORD

static const LightingLayoutValue ludus::graphics::renderer::MESH_LIGHT_GRID_ENTRIES_PER_WORD = 4
List entries per Float4 word. An entry is the word offset of a listed record's header.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/deferred_layout.h

MAX_MESH_LIGHT_GRID_ASSIGNMENTS

static const LightingLayoutValue ludus::graphics::renderer::MAX_MESH_LIGHT_GRID_ASSIGNMENTS = 1048576
Most list entries over all cells. A scene needing more uploads no grid and evaluates every record.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/deferred_layout.h

MESH_LIGHT_SHADOW_CASTER_CORNER

static const LightingLayoutValue ludus::graphics::renderer::MESH_LIGHT_SHADOW_CASTER_CORNER = 1
Mesh-light shadow casters (render-graph-authoring.md, "Mesh-light shadows"). Records are grouped into casters, each a point from which cube shadow faces are rendered once per prepared scene into one RGBA8 atlas. A record's caster is stored, plus one, in the w of its second corner (this corner index); zero leaves it unshadowed.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/deferred_layout.h

MESH_LIGHT_SHADOW_HEADER_WORDS

static const LightingLayoutValue ludus::graphics::renderer::MESH_LIGHT_SHADOW_HEADER_WORDS = 1
The caster table follows the culling grid, and the grid cull word's y holds its first word; zero means no shadows. Its header word is (caster count, atlas side in texels, reciprocal atlas side, zero).

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/deferred_layout.h

MESH_LIGHT_SHADOW_CASTER_WORDS

static const LightingLayoutValue ludus::graphics::renderer::MESH_LIGHT_SHADOW_CASTER_WORDS = 5
Float4 words per caster: (position xyz in metres, range in metres), (light radius in metres, near distance over range, face slot side in texels, tangent of the slot's half field of view), then the atlas texel origins of the six faces, two per word. A face that receives no light has origin (-1, -1) and reads as unoccluded.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/deferred_layout.h

MESH_LIGHT_SHADOW_FACE_COUNT

static const LightingLayoutValue ludus::graphics::renderer::MESH_LIGHT_SHADOW_FACE_COUNT = 6
Cube faces of a caster, in +X, -X, +Y, -Y, +Z, -Z order.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/deferred_layout.h

MAX_MESH_LIGHT_SHADOW_CASTERS

static const LightingLayoutValue ludus::graphics::renderer::MAX_MESH_LIGHT_SHADOW_CASTERS = 256
Most casters per scene. Clustering coarsens until the records fit (render-graph-authoring.md, "Mesh-light shadows"); records beyond the coarsest clustering's limit stay unshadowed and are reported.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/deferred_layout.h

MESH_LIGHT_SHADOW_ATLAS_TEXELS

static const LightingLayoutValue ludus::graphics::renderer::MESH_LIGHT_SHADOW_ATLAS_TEXELS = 2048
Side of the square shadow atlas in texels.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/deferred_layout.h

MIN_MESH_LIGHT_SHADOW_FACE_TEXELS

static const LightingLayoutValue ludus::graphics::renderer::MIN_MESH_LIGHT_SHADOW_FACE_TEXELS = 32
Smallest face slot side in texels; slots are powers of two.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/deferred_layout.h

MAX_MESH_LIGHT_SHADOW_FACE_TEXELS

static const LightingLayoutValue ludus::graphics::renderer::MAX_MESH_LIGHT_SHADOW_FACE_TEXELS = 512
Largest face slot side in texels, given to the most powerful caster.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/deferred_layout.h

MESH_LIGHT_SHADOW_GUTTER_TEXELS

static const LightingLayoutValue ludus::graphics::renderer::MESH_LIGHT_SHADOW_GUTTER_TEXELS = 4
Texels around each face's 90-degree interior, rendered with a wider field of view so filter taps near an edge stay inside the slot; also the largest filter radius.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/deferred_layout.h

DEFERRED_MESH_LIGHT_SHADOW_BINDING

static const LightingLayoutValue ludus::graphics::renderer::DEFERRED_MESH_LIGHT_SHADOW_BINDING = LUDUS_DEFERRED_MESH_LIGHT_SHADOW_BINDING
Resolve slot of the shadow atlas: the material base-colour texture, which the resolve never samples.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/deferred_layout.h

DEFERRED_MAX_HALF

static const LightingLayoutValue ludus::graphics::renderer::DEFERRED_MAX_HALF = 65504
Largest finite half-float value; emission is nonnegative and saturates before G-buffer storage.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/deferred_layout.h

MAX_ENVIRONMENT_RADIANCE

constexpr ludus::foundation::float32 ludus::graphics::renderer::MAX_ENVIRONMENT_RADIANCE = 1e12F
Maximum reconstructed linear HDR environment radiance per RGB channel. Separate from bounded material emission and constant-environment multipliers.

Related types: ludus::foundation::float32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/environment.hpp

MAX_DIRECT_LIGHTS

constexpr ludus::foundation::uint32 ludus::graphics::renderer::MAX_DIRECT_LIGHTS = CLUSTERED_LIGHT_COUNT
Most lights one LightSelection holds and the light admission functions accept.

Related types: ludus::foundation::uint32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/light_selection.hpp

DEFAULT_LIGHT_RANGE_METERS

constexpr ludus::foundation::float32 ludus::graphics::renderer::DEFAULT_LIGHT_RANGE_METERS = 10
Default point/spot range in meters for a new DirectLight.

Related types: ludus::foundation::float32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/light_selection.hpp

DEFAULT_SPOT_INNER_COSINE

constexpr ludus::foundation::float32 ludus::graphics::renderer::DEFAULT_SPOT_INNER_COSINE = 0.9F
Default spot inner half-angle cosine for a new DirectLight.

Related types: ludus::foundation::float32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/light_selection.hpp

DEFAULT_SPOT_OUTER_COSINE

constexpr ludus::foundation::float32 ludus::graphics::renderer::DEFAULT_SPOT_OUTER_COSINE = 0.8F
Default spot outer half-angle cosine for a new DirectLight.

Related types: ludus::foundation::float32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/light_selection.hpp

MAX_PANEL_LUMINAIRES

constexpr ludus::foundation::uint32 ludus::graphics::renderer::MAX_PANEL_LUMINAIRES = 8
Most panel luminaires one scene submits to scene-shader passes.

Related types: ludus::foundation::uint32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/light_selection.hpp

MAX_PANEL_LUMINAIRE_COORDINATE

constexpr ludus::foundation::float32 ludus::graphics::renderer::MAX_PANEL_LUMINAIRE_COORDINATE = 1000000
Largest admitted absolute panel center coordinate in metres, the analytic lights' position bound.

Related types: ludus::foundation::float32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/light_selection.hpp

MAX_PANEL_LUMINAIRE_HALF_EXTENT

constexpr ludus::foundation::float32 ludus::graphics::renderer::MAX_PANEL_LUMINAIRE_HALF_EXTENT = 1000
Largest admitted panel half extent in metres.

Related types: ludus::foundation::float32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/light_selection.hpp

MIN_PANEL_LUMINAIRE_HALF_EXTENT

constexpr ludus::foundation::float32 ludus::graphics::renderer::MIN_PANEL_LUMINAIRE_HALF_EXTENT = 0.001F
Smallest admitted panel half extent in metres; the panel frame divides by it.

Related types: ludus::foundation::float32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/light_selection.hpp

MAX_PANEL_LUMINAIRE_RADIANCE_SCALE

constexpr ludus::foundation::float32 ludus::graphics::renderer::MAX_PANEL_LUMINAIRE_RADIANCE_SCALE = 1000000
Largest admitted radiance scale, unitless.

Related types: ludus::foundation::float32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/light_selection.hpp

MIN_PANEL_LUMINAIRE_BEAM_WIDTH

constexpr ludus::foundation::float32 ludus::graphics::renderer::MIN_PANEL_LUMINAIRE_BEAM_WIDTH = 0.001F
Smallest admitted beam width in slope units; the beams' Gaussian Cholesky factors divide by it.

Related types: ludus::foundation::float32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/light_selection.hpp

MAX_PANEL_LUMINAIRE_BEAM_WIDTH

constexpr ludus::foundation::float32 ludus::graphics::renderer::MAX_PANEL_LUMINAIRE_BEAM_WIDTH = 1
Largest admitted beam width in slope units.

Related types: ludus::foundation::float32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/light_selection.hpp

MAX_PANEL_LUMINAIRE_BEAM_SLOPE

constexpr ludus::foundation::float32 ludus::graphics::renderer::MAX_PANEL_LUMINAIRE_BEAM_SLOPE = 2
Largest admitted beam steering, spread and twist, in slope units (per half extent for spread and twist).

Related types: ludus::foundation::float32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/light_selection.hpp

DEFAULT_PANEL_LUMINAIRE_HALF_EXTENT

constexpr ludus::foundation::float32 ludus::graphics::renderer::DEFAULT_PANEL_LUMINAIRE_HALF_EXTENT = 0.35F
Default panel half extent in metres: a 0.7 m panel, as in the slice-sampling-luminaire template's test room.

Related types: ludus::foundation::float32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/light_selection.hpp

DEFAULT_PANEL_LUMINAIRE_RADIANCE_SCALE

constexpr ludus::foundation::float32 ludus::graphics::renderer::DEFAULT_PANEL_LUMINAIRE_RADIANCE_SCALE = 6
Default radiance scale, unitless.

Related types: ludus::foundation::float32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/light_selection.hpp

DEFAULT_PANEL_LUMINAIRE_BEAM_WIDTH

constexpr ludus::foundation::float32 ludus::graphics::renderer::DEFAULT_PANEL_LUMINAIRE_BEAM_WIDTH = 0.02F
Default beam width in slope units; with the template's tile factors the widths span 0.016 to 0.024, as in Steinberg's section 6.4.

Related types: ludus::foundation::float32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/light_selection.hpp

DEFAULT_PANEL_LUMINAIRE_BEAM_STEERING

constexpr ludus::foundation::float32 ludus::graphics::renderer::DEFAULT_PANEL_LUMINAIRE_BEAM_STEERING = 0.12F
Default beam steering in slope units.

Related types: ludus::foundation::float32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/light_selection.hpp

DEFAULT_PANEL_LUMINAIRE_BEAM_SPREAD

constexpr ludus::foundation::float32 ludus::graphics::renderer::DEFAULT_PANEL_LUMINAIRE_BEAM_SPREAD = 0.08F
Default beam spread in slope units per half extent.

Related types: ludus::foundation::float32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/light_selection.hpp

DEFAULT_PANEL_LUMINAIRE_BEAM_TWIST

constexpr ludus::foundation::float32 ludus::graphics::renderer::DEFAULT_PANEL_LUMINAIRE_BEAM_TWIST = 0.04F
Default beam twist in slope units per half extent.

Related types: ludus::foundation::float32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/light_selection.hpp

LIGHT_TRANSFORMER_DIMENSION

constexpr foundation::usize ludus::graphics::renderer::LIGHT_TRANSFORMER_DIMENSION = LUDUS_LIGHT_TRANSFORMER_DIMENSION
Trained latent width of the authors' released 128-dimensional model.

Related types: foundation::usize

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/light_transformer.hpp

LIGHT_TRANSFORMER_DECODER_WEIGHTS

constexpr foundation::usize ludus::graphics::renderer::LIGHT_TRANSFORMER_DECODER_WEIGHTS = LUDUS_LIGHT_TRANSFORMER_WEIGHT_COUNT
Exact packed decoder parameter count; BatchNorm is folded by the offline adapter.

Related types: foundation::usize

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/light_transformer.hpp

LIGHT_TRANSFORMER_RESULT_BUFFER

constexpr foundation::usize ludus::graphics::renderer::LIGHT_TRANSFORMER_RESULT_BUFFER = 3
Query-major float4 model predictions reside in this workload buffer (RGB, reserved zero).

Related types: foundation::usize

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/light_transformer.hpp

AREA_TRIANGLE_CORNERS

constexpr ludus::foundation::usize ludus::graphics::renderer::AREA_TRIANGLE_CORNERS = 3
Number of corners in a triangle emitter.

Related types: ludus::foundation::usize

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/lighting.hpp

POINT_SHADOW_FACES

constexpr ludus::foundation::uint32 ludus::graphics::renderer::POINT_SHADOW_FACES = 6
Cube projection count per point or area sample.

Related types: ludus::foundation::uint32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/lighting.hpp

MAX_CLUSTER_COORDINATE

constexpr foundation::float32 ludus::graphics::renderer::MAX_CLUSTER_COORDINATE = 1000000
Largest absolute grid bound coordinate in metres for the portable clustered profile.

Related types: foundation::float32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/lighting.hpp

MIN_CLUSTER_EXTENT

constexpr foundation::float32 ludus::graphics::renderer::MIN_CLUSTER_EXTENT = 0.01F
Minimum grid extent per axis in metres; prevents unstable reciprocal cell sizes.

Related types: foundation::float32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/lighting.hpp

MAX_CLUSTER_EXTENT

constexpr foundation::float32 ludus::graphics::renderer::MAX_CLUSTER_EXTENT = 2 * MAX_CLUSTER_COORDINATE
Maximum grid extent per axis in metres.

Related types: foundation::float32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/lighting.hpp

SHADOW_REGION_CAPACITY

static const LightingLayoutValue ludus::graphics::renderer::SHADOW_REGION_CAPACITY = 80
Maximum shadow atlas regions, shared verbatim by host and shader layouts.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/lighting_layout.h

SHADOW_REGION_WORDS

static const LightingLayoutValue ludus::graphics::renderer::SHADOW_REGION_WORDS = 6
Float4 words per shadow projection: four matrix rows, rectangle and settings.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/lighting_layout.h

SHADOW_DATA_WORDS

static const LightingLayoutValue ludus::graphics::renderer::SHADOW_DATA_WORDS = SHADOW_REGION_CAPACITY * SHADOW_REGION_WORDS
Total Float4 words in the shadow uniform array.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/lighting_layout.h

FORWARD_HEADER_WORDS

static const LightingLayoutValue ludus::graphics::renderer::FORWARD_HEADER_WORDS = 9
Float4 words preceding the direct-light array in the portable material ABI.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/lighting_layout.h

FORWARD_LIGHT_COUNT

static const LightingLayoutValue ludus::graphics::renderer::FORWARD_LIGHT_COUNT = 8
Maximum selected direct lights in the portable forward profile.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/lighting_layout.h

FORWARD_LIGHT_WORDS

static const LightingLayoutValue ludus::graphics::renderer::FORWARD_LIGHT_WORDS = 4
Float4 words encoding one direct light.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/lighting_layout.h

FORWARD_SHADOW_OFFSET

static const LightingLayoutValue ludus::graphics::renderer::FORWARD_SHADOW_OFFSET =
(FORWARD_HEADER_WORDS + FORWARD_LIGHT_COUNT * FORWARD_LIGHT_WORDS) * 16
Byte offset of the shadow projections after selected direct lights.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/lighting_layout.h

FORWARD_SURFACE_OFFSET

static const LightingLayoutValue ludus::graphics::renderer::FORWARD_SURFACE_OFFSET = FORWARD_SHADOW_OFFSET + SHADOW_DATA_WORDS * 16
Byte offset of surface-map controls after the shadow projections.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/lighting_layout.h

CLUSTERED_LIGHT_COUNT

static const LightingLayoutValue ludus::graphics::renderer::CLUSTERED_LIGHT_COUNT = 128
Maximum direct lights retained by the clustered material ABI.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/lighting_layout.h

CLUSTERED_GRID_ROWS

static const LightingLayoutValue ludus::graphics::renderer::CLUSTERED_GRID_ROWS = 3
Float4 rows of the rigid world-to-grid transform.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/lighting_layout.h

CLUSTERED_GRID_WORDS

static const LightingLayoutValue ludus::graphics::renderer::CLUSTERED_GRID_WORDS = CLUSTERED_GRID_ROWS + 2
Grid transform rows, minimum and reciprocal cell extents.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/lighting_layout.h

CLUSTERED_AUTHORED_BINDING_COUNT

static const LightingLayoutValue ludus::graphics::renderer::CLUSTERED_AUTHORED_BINDING_COUNT = 11
Group-zero entries in the authored clustered material layout.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/lighting_layout.h

CLUSTERED_SHADOW_OFFSET

static const LightingLayoutValue ludus::graphics::renderer::CLUSTERED_SHADOW_OFFSET =
(FORWARD_HEADER_WORDS + CLUSTERED_LIGHT_COUNT * FORWARD_LIGHT_WORDS) * 16
Byte offset of clustered shadow projections after the complete light list.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/lighting_layout.h

CLUSTERED_GRID_OFFSET

static const LightingLayoutValue ludus::graphics::renderer::CLUSTERED_GRID_OFFSET = CLUSTERED_SHADOW_OFFSET + SHADOW_DATA_WORDS * 16
Byte offset of the clustered grid transform.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/lighting_layout.h

CLUSTERED_SURFACE_OFFSET

static const LightingLayoutValue ludus::graphics::renderer::CLUSTERED_SURFACE_OFFSET = CLUSTERED_GRID_OFFSET + CLUSTERED_GRID_WORDS * 16
Byte offset of clustered surface-map controls after the grid transform.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/lighting_layout.h

LIGHTING_PROFILE_VERSION

static const LightingLayoutValue ludus::graphics::renderer::LIGHTING_PROFILE_VERSION = 8
CPU/compute transport profile; version 6 adds non-scattering layered coated-diffuse reflection, and version 7 orients geometric normals by shading normals and reflects on both sides of a surface, as pbrt-v4 does, and version 8 adds smooth and thin dielectrics: specular reflection and transmission through their delta lobes.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/lighting_layout.h

MATERIAL_DEBUG_VIEW_NONE

static const LightingLayoutValue ludus::graphics::renderer::MATERIAL_DEBUG_VIEW_NONE = 0
MaterialDebugView value for ordinary shading; debug-view programs then match their base program.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/lighting_layout.h

MATERIAL_DEBUG_VIEW_NORMAL_WORLD

static const LightingLayoutValue ludus::graphics::renderer::MATERIAL_DEBUG_VIEW_NORMAL_WORLD = 1
Shaded world-space normal (after surface-map perturbation), mapped from [-1,1] to [0,1] RGB.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/lighting_layout.h

MATERIAL_DEBUG_VIEW_LINEAR_DEPTH

static const LightingLayoutValue ludus::graphics::renderer::MATERIAL_DEBUG_VIEW_LINEAR_DEPTH = 2
Camera distance mapped linearly between ViewDescription::DebugDepthRange near (black) and far (white).

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/lighting_layout.h

MATERIAL_DEBUG_VIEW_ROUGHNESS

static const LightingLayoutValue ludus::graphics::renderer::MATERIAL_DEBUG_VIEW_ROUGHNESS = 3
Perceptual roughness after surface-map scaling, as grey.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/lighting_layout.h

MATERIAL_DEBUG_VIEW_METALLIC

static const LightingLayoutValue ludus::graphics::renderer::MATERIAL_DEBUG_VIEW_METALLIC = 4
Metallic fraction after surface-map scaling, as grey.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/lighting_layout.h

MATERIAL_DEBUG_VIEW_TEXCOORD_UV

static const LightingLayoutValue ludus::graphics::renderer::MATERIAL_DEBUG_VIEW_TEXCOORD_UV = 5
Fractional mesh UV0 as red/green.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/lighting_layout.h

MATERIAL_DEBUG_VIEW_LIGHT_COUNT

static const LightingLayoutValue ludus::graphics::renderer::MATERIAL_DEBUG_VIEW_LIGHT_COUNT = 6
Count of direct lights with a nonzero (shadowed) contribution, as a viridis ramp.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/lighting_layout.h

MATERIAL_DEBUG_VIEW_WIREFRAME

static const LightingLayoutValue ludus::graphics::renderer::MATERIAL_DEBUG_VIEW_WIREFRAME = 7
Triangle edges shaded by how directly they face the camera; drawn by a program prewarmed with line fill.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/lighting_layout.h

MATERIAL_DEBUG_WIREFRAME_RED

static const LightingLayoutValue ludus::graphics::renderer::MATERIAL_DEBUG_WIREFRAME_RED = 219
Display-sRGB 8-bit red of wireframe edges on surfaces facing the camera.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/lighting_layout.h

MATERIAL_DEBUG_WIREFRAME_GREEN

static const LightingLayoutValue ludus::graphics::renderer::MATERIAL_DEBUG_WIREFRAME_GREEN = 224
Display-sRGB 8-bit green of wireframe edges on surfaces facing the camera.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/lighting_layout.h

MATERIAL_DEBUG_WIREFRAME_BLUE

static const LightingLayoutValue ludus::graphics::renderer::MATERIAL_DEBUG_WIREFRAME_BLUE = 235
Display-sRGB 8-bit blue of wireframe edges on surfaces facing the camera.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/lighting_layout.h

MATERIAL_DEBUG_WIREFRAME_EDGE_ON_PERCENT

static const LightingLayoutValue ludus::graphics::renderer::MATERIAL_DEBUG_WIREFRAME_EDGE_ON_PERCENT = 35
Percentage of the wireframe colour kept on surfaces seen exactly edge-on; facing ones keep all of it.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/lighting_layout.h

MATERIAL_DEBUG_LIGHT_COUNT_SATURATION

static const LightingLayoutValue ludus::graphics::renderer::MATERIAL_DEBUG_LIGHT_COUNT_SATURATION = 16
Light count at which the debug viridis ramp saturates to its brightest colour.

Related types: LightingLayoutValue

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/lighting_layout.h

POINT_NEIGHBOR_RESULT_BUFFER

constexpr foundation::usize ludus::graphics::renderer::POINT_NEIGHBOR_RESULT_BUFFER = 3
Result allocation index in a workload prepared by PreparePointNeighborWorkload.

Related types: foundation::usize

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/point_neighbors.hpp

VISIBILITY_GRAPH_FIXED_RESOURCES

constexpr foundation::uint32 ludus::graphics::renderer::VISIBILITY_GRAPH_FIXED_RESOURCES = 11
Fixed ordered-graph inputs: eight transport/image buffers, two textures and one instance stream.

Related types: foundation::uint32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/render_graph.hpp

VISIBILITY_GRAPH_RESOURCE_CAPACITY

constexpr foundation::uint32 ludus::graphics::renderer::VISIBILITY_GRAPH_RESOURCE_CAPACITY =
VISIBILITY_GRAPH_FIXED_RESOURCES +
static_cast<foundation::uint32>(content::render_graph_format::MAX_STORAGE_BUFFERS) +
2 * static_cast<foundation::uint32>(content::render_graph_format::MAX_MESHES)
Request at least this StorageLimits::ResourcesPerGraph before device creation to admit the full visibility profile: fixed inputs, both structured buffers and vertex/index buffers for every mesh. Smaller quotas remain legal, but preparation can report CapacityExceeded for larger scenes.

Related types: foundation::uint32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/render_graph.hpp

RENDER_GRAPH_RAY_CPU_BYTES

constexpr foundation::usize ludus::graphics::renderer::RENDER_GRAPH_RAY_CPU_BYTES =
foundation::usize{2} * 1024 * 1024 * 1024 * (sizeof(foundation::usize) > sizeof(foundation::uint32) ? 2 : 1)
CPU preparation ceiling for graph ray scenes, including the frozen scene, BVH, fingerprint and packing/native-geometry scratch. Four GiB on 64-bit hosts; two GiB on 32-bit hosts. This is an admission ceiling, not an initial allocation. A device's storage-buffer range and physical allocation failures remain independent.

Related types: foundation::usize

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/render_graph.hpp

RENDER_GRAPH_RAY_GPU_BYTES

constexpr foundation::usize ludus::graphics::renderer::RENDER_GRAPH_RAY_GPU_BYTES =
foundation::usize{2} * 1024 * 1024 * 1024 * (sizeof(foundation::usize) > sizeof(foundation::uint32) ? 3 : 1)
Logical GPU ceiling across current/replacement graph ray scenes, per-pass images, native acceleration structures and pending producer/consumer holds. Six GiB on 64-bit hosts; two GiB on 32-bit hosts. Device creators must separately budget RHI resources, including raster geometry, textures and graph targets sharing the device.

Related types: foundation::usize

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/render_graph.hpp

RENDER_GRAPH_FAILURE_AUTHORED_FIRST

constexpr foundation::uint32 ludus::graphics::renderer::RENDER_GRAPH_FAILURE_AUTHORED_FIRST = 32
First failure reason an authored shader may report with FailSceneQuery.

Related types: foundation::uint32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/render_graph.hpp

MAX_RENDER_GRAPH_FAILURE_REASONS

constexpr foundation::uint32 ludus::graphics::renderer::MAX_RENDER_GRAPH_FAILURE_REASONS = 64
Failure reasons a graph ray kernel counts: the scene interface's and the authored ones.

Related types: foundation::uint32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/render_graph.hpp

RAY_PATH_INVALID_INDEX

constexpr foundation::uint32 ludus::graphics::renderer::RAY_PATH_INVALID_INDEX = 0xffffffffU
Triangle, instance and primitive value of a ray path event without a committed hit.

Related types: foundation::uint32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/render_graph.hpp

DEFAULT_RAY_PATH_SAMPLES

constexpr foundation::uint32 ludus::graphics::renderer::DEFAULT_RAY_PATH_SAMPLES = 16
Default number of progressive samples a ray path capture records.

Related types: foundation::uint32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/render_graph.hpp

MAX_RENDER_GRAPH_CAPTURE_SAMPLES

constexpr foundation::uint32 ludus::graphics::renderer::MAX_RENDER_GRAPH_CAPTURE_SAMPLES = 65536
Largest Accumulate sample limit a frame capture may set with RenderGraph::SetAccumulationLimitOverride. Interactive graphs keep RenderGraphFormat::MAX_ACCUMULATION_SAMPLES.

Related types: foundation::uint32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/render_graph.hpp

MAX_RENDER_GRAPH_RAY_TILES

constexpr foundation::uint32 ludus::graphics::renderer::MAX_RENDER_GRAPH_RAY_TILES = 128
Most row bands RenderGraph::SetRayTileCount may split one ray sample into. Each band is a separate submission, so a long frame-capture sample stays under the GPU watchdog; see docs/architecture/render-graph-frame-capture.md.

Related types: foundation::uint32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/render_graph.hpp

RENDER_GRAPH_ACCUMULATION_WORDS

constexpr foundation::uint32 ludus::graphics::renderer::RENDER_GRAPH_ACCUMULATION_WORDS = 2
float4 values per pixel in a ray pass's accumulation buffer: the running sum with the committed count's uint32 bits in W, then the compensation with the history tag in W (odd after a latched failure).

Related types: foundation::uint32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/render_graph.hpp

MAX_RAY_PATH_SAMPLES

constexpr foundation::uint32 ludus::graphics::renderer::MAX_RAY_PATH_SAMPLES = 256
Largest number of progressive samples one ray path capture records.

Related types: foundation::uint32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/render_graph.hpp

DEFAULT_RAY_PATH_RECORDS

constexpr foundation::uint32 ludus::graphics::renderer::DEFAULT_RAY_PATH_RECORDS = 1024
Default event record capacity of one ray path capture.

Related types: foundation::uint32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/render_graph.hpp

MAX_RAY_PATH_RECORDS

constexpr foundation::uint32 ludus::graphics::renderer::MAX_RAY_PATH_RECORDS = 2048
Largest event record capacity of one ray path capture. The whole capture buffer must also fit the device's rhi::LifetimeCapabilities::TransferBytes, so it is read back at once.

Related types: foundation::uint32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/render_graph.hpp

RENDER_GRAPH_POOL_CAPACITY

constexpr foundation::uint32 ludus::graphics::renderer::RENDER_GRAPH_POOL_CAPACITY =
static_cast<foundation::uint32>(content::render_graph_format::MAX_RESOURCES)
Largest idle-entry capacity of one attachment pool: every backing of the largest plan. Idle entries keep their RHI texture records and logical bytes (StorageLimits::ResourcesPerKind and ResourceBytes), so choose a smaller capacity or Trim when those budgets are tight.

Related types: foundation::uint32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/render_graph.hpp

MIN_RENDER_GRAPH_CAPTURE_SAMPLES

constexpr foundation::uint32 ludus::graphics::renderer::MIN_RENDER_GRAPH_CAPTURE_SAMPLES = 1
Smallest admitted capture target, in samples per pixel.

Related types: foundation::uint32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/render_graph_capture.hpp

DEFAULT_RENDER_GRAPH_CAPTURE_SAMPLES

constexpr foundation::uint32 ludus::graphics::renderer::DEFAULT_RENDER_GRAPH_CAPTURE_SAMPLES = 64
Default capture target, in samples per pixel; enough to judge an estimator, not to remove its noise.

Related types: foundation::uint32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/render_graph_capture.hpp

MAX_RENDER_GRAPH_CAPTURE_VISIBILITY_QUERIES

constexpr foundation::uint32 ludus::graphics::renderer::MAX_RENDER_GRAPH_CAPTURE_VISIBILITY_QUERIES = 256
Largest shadow-query budget a capture profile links, per pixel and sample; mirrors MAX_CAPTURE_VISIBILITY_QUERIES in scripts/python/ludus_tools/render_graph_ray.py.

Related types: foundation::uint32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/render_graph_capture.hpp

RENDER_GRAPH_CAPTURE_QUERY_NANOSECONDS

constexpr foundation::uint32 ludus::graphics::renderer::RENDER_GRAPH_CAPTURE_QUERY_NANOSECONDS = 8
Estimated GPU nanoseconds of one query per pixel: the shadow-query cost measured on an Apple M5 in the capture budget decision of docs/architecture/render-graph-frame-capture.md.

Related types: foundation::uint32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/render_graph_capture.hpp

RENDER_GRAPH_CAPTURE_QUERIES_PER_LIGHT

constexpr foundation::uint32 ludus::graphics::renderer::RENDER_GRAPH_CAPTURE_QUERIES_PER_LIGHT = 2
Shadow queries charged per light: a two-technique MIS estimator tests each light twice.

Related types: foundation::uint32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/render_graph_capture.hpp

RENDER_GRAPH_CAPTURE_TILE_NANOSECONDS

constexpr foundation::uint64 ludus::graphics::renderer::RENDER_GRAPH_CAPTURE_TILE_NANOSECONDS = 250'000'000
Estimated GPU time each band of a capture targets: a quarter second, eight times below the two-second Windows TDR default, which also leaves a margin for GPUs slower than the measured one.

Related types: foundation::uint64

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/render_graph_capture.hpp

SCENE_SHADER_INTERFACE_VERSION

constexpr foundation::uint32 ludus::graphics::renderer::SCENE_SHADER_INTERFACE_VERSION = LUDUS_SCENE_SHADER_INTERFACE_VERSION
Logical scene API revision checked by generated graph headers and runtime identities.

Related types: foundation::uint32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/scene_shader.hpp

SCENE_LINE_INTERVAL_CAPACITY

constexpr foundation::uint32 ludus::graphics::renderer::SCENE_LINE_INTERVAL_CAPACITY = LUDUS_SCENE_LINE_INTERVAL_CAPACITY
Maximum visible intervals in one FindVisibleLineIntervals result, the length of the Slang LineVisibility::Intervals array. The query keeps at most one fewer occluded intervals while it scans; a segment that needs more fails the query rather than approximating its visibility.

Related types: foundation::uint32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/scene_shader.hpp

SCENE_LINE_INTERVAL_MERGE_TOLERANCE

constexpr foundation::float32 ludus::graphics::renderer::SCENE_LINE_INTERVAL_MERGE_TOLERANCE =
static_cast<foundation::float32>(LUDUS_SCENE_LINE_INTERVAL_MERGE_TOLERANCE)
Line visibility merge tolerance as a fraction of the segment, unitless in [0, 1]. Occluded intervals separated by at most this merge, and shorter visible intervals are dropped, so the rule can only shrink the visible set; it never reports an occluded point as visible.

Related types: foundation::float32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/scene_shader.hpp

DEFAULT_SCENE_MATERIAL

constexpr foundation::uint32 ludus::graphics::renderer::DEFAULT_SCENE_MATERIAL = ~foundation::uint32{0}
Explicitly unassigned material slot: use neutral rough non-emissive material.

Related types: foundation::uint32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/scene_shader.hpp

INHERIT_SCENE_MATERIAL

constexpr foundation::uint32 ludus::graphics::renderer::INHERIT_SCENE_MATERIAL = DEFAULT_SCENE_MATERIAL - 1
Instance override sentinel: retain the mesh slot's assignment.

Related types: foundation::uint32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/scene_shader.hpp

MAX_STATIC_LIGHTING_RANGES

constexpr foundation::uint32 ludus::graphics::renderer::MAX_STATIC_LIGHTING_RANGES = 1024

Related types: foundation::uint32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/static_lighting.hpp

PBR_NEUTRAL_FRESNEL_AT_NORMAL

constexpr ludus::foundation::float32 ludus::graphics::renderer::PBR_NEUTRAL_FRESNEL_AT_NORMAL = 0.04F
Constants of the Khronos PBR Neutral tone mapper (https://github.com/KhronosGroup/ToneMapping).

Related types: ludus::foundation::float32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/tone_mapping.hpp

PBR_NEUTRAL_COMPRESSION_START

constexpr ludus::foundation::float32 ludus::graphics::renderer::PBR_NEUTRAL_COMPRESSION_START = 0.8F - PBR_NEUTRAL_FRESNEL_AT_NORMAL
Value at which compression of the brightest channel starts.

Related types: ludus::foundation::float32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/tone_mapping.hpp

PBR_NEUTRAL_DESATURATION

constexpr ludus::foundation::float32 ludus::graphics::renderer::PBR_NEUTRAL_DESATURATION = 0.15F
Strength of the desaturation of compressed highlights toward white.

Related types: ludus::foundation::float32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/tone_mapping.hpp

PBR_NEUTRAL_INVERSE_LIMIT

constexpr ludus::foundation::float32 ludus::graphics::renderer::PBR_NEUTRAL_INVERSE_LIMIT = 0.995F
Largest display-linear value InvertPbrNeutral reproduces; it keeps the inverse finite.

Related types: ludus::foundation::float32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/tone_mapping.hpp

WORLD_GRID_HALF_LINE_COUNT

constexpr foundation::int32 ludus::graphics::renderer::WORLD_GRID_HALF_LINE_COUNT = 40
Number of minor grid intervals on either side of the snapped camera focus.

Related types: foundation::int32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/world_grid.hpp

WORLD_GRID_AXIS_COUNT

constexpr foundation::usize ludus::graphics::renderer::WORLD_GRID_AXIS_COUNT = 3
Number of Cartesian coordinate axes in a world grid.

Related types: foundation::usize

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/world_grid.hpp

WORLD_GRID_LINE_CAPACITY

constexpr foundation::usize ludus::graphics::renderer::WORLD_GRID_LINE_CAPACITY =
2 * (2 * static_cast<foundation::usize>(WORLD_GRID_HALF_LINE_COUNT) + 1) + WORLD_GRID_AXIS_COUNT
Maximum line ribbons in one world grid, including its coordinate axes.

Related types: foundation::usize

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/world_grid.hpp

Functions

ReadLightTransformerDecoderWeights

rhi::RasterStatus ludus::graphics::renderer::ReadLightTransformerDecoderWeights(foundation::BorrowedView< const foundation::uint8 > bytes, foundation::Array< foundation::float32 > &outWeights) noexcept
Read the offline adapter's little-endian, versioned decoder parameter asset. This does not deserialize Python, execute a checkpoint or own a model runtime.
ParameterDescription
bytes
Exact complete asset, consumed before return; trailing bytes reject.
outWeights
Replaced only on Ready with LIGHT_TRANSFORMER_DECODER_WEIGHTS finite scalars.

Returns

Ready, InvalidDescription (repair/re-export the asset), or OutOfMemory.

Related types: foundation::BorrowedView · foundation::Array · foundation::float32 · foundation::uint8 · rhi::RasterStatus

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/light_transformer.hpp

PrepareLightTransformerDecoder

rhi::RasterStatus ludus::graphics::renderer::PrepareLightTransformerDecoder(foundation::BorrowedView< const foundation::float32 > weights, foundation::BorrowedView< const LightTransformerAnchor > anchors, foundation::BorrowedView< const LightTransformerQuery > queries, rhi::DeviceHandle device, const rhi::RasterShaderDescription &shader, foundation::usize maximumBufferBytes, rhi::ComputeWorkload &outWorkload) noexcept
Prepare the released six-block trained query decoder as portable compute. It performs exact point-tree queries, two query MLP layers, vector attention, residual/feed-forward blocks and Softplus on the GPU, without native ray or tensor hardware. This API consumes existing encoder latents; it does not encode raw surface points.
ParameterDescription
device
Ready owner-thread compute device, between frames.
weights
Offline-adapted parameters in the canonical packed order; copied.
anchors
At least 32 finite encoded anchors in matched model coordinates; copied.
queries
Finite model queries; nonzero normals are normalized; copied.
shader
Cooked renderer_light_transformer_decoder recipe. Artifact survives through Poll.
maximumBufferBytes
Explicit budget for parameters, weights, anchors, queries, tree and results.
outWorkload
Empty owner, acquired only on Ready/Pending; failure preserves it.

Returns

Ready/Pending, InvalidDescription, CapacityExceeded, OutOfMemory or backend preparation failure. Output is raw network RGB; Softplus is nonnegative for finite evaluation. Nonfinite inference values remain visible, without clamping or a fallback. Reconstruct the trained target quantity separately: diffuse irradiance uses albedo/PI plus direct emission. No inference-quality, interactive-performance or reference-integrator guarantee is implied.

Related types: foundation::BorrowedView · rhi::ComputeWorkload · foundation::float32 · foundation::usize · rhi::RasterStatus · LightTransformerAnchor · LightTransformerQuery · rhi::DeviceHandle · rhi::RasterShaderDescription

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/light_transformer.hpp

PrepareLightTransformerEncoder

rhi::RasterStatus ludus::graphics::renderer::PrepareLightTransformerEncoder(foundation::BorrowedView< const foundation::uint8 > encoderAsset, foundation::BorrowedView< const LightTransformerScenePoint > points, foundation::math::Vector4 worldToModel, rhi::DeviceHandle device, const rhi::RasterShaderDescription &shader, foundation::usize maximumBufferBytes, LightTransformerEncoding &outEncoding, foundation::BorrowedView< const foundation::float32 > decoderWeights={}, rhi::BufferHandle destination={}, foundation::usize destinationBytes=0) noexcept
Prepare the released Point Transformer V3 scene encoder using ordinary compute. CPU work prepares geometry only: deterministic FPS (first point zero), exact kNN, sparse convolution neighborhoods, pooling and four serialized point orders. Dropout/order shuffling is disabled; neural arithmetic is binary32, including serialized attention, rather than the authors' half-precision FlashAttention.
ParameterDescription
encoderAsset
Complete offline --encoder-output asset, copied/validated synchronously.
points
128..20000 finite model-space surface points, copied. Point order determines FPS ties.
worldToModel
XYZ world translation and W positive uniform scale: (positionWorld-XYZ)*W.
device
Ready compute owner-thread device between frames; Metal and Vulkan use the same kernels.
shader
Cooked renderer_light_transformer_encoder recipe; retain artifact through Poll.
maximumBufferBytes
Explicit total logical GPU buffer budget; reduce points or raise it on CapacityExceeded.
outEncoding
Empty owner, replaced only on Ready/Pending. Failure preserves it.
decoderWeights
Optional canonical decoder parameters, copied into the packet for the graph template. Empty keeps the standalone encoder packet.
destination
Optional borrowed graph-owned storage; kept alive through workload Reset.
destinationBytes
Usable destination capacity, zero when no destination is supplied.

Returns

Ready/Pending; malformed assets/features return InvalidDescription; bounded memory/dispatch exhaustion returns CapacityExceeded; allocation/backend failures remain explicit. This is an inference adapter, without an interactive performance or GI-quality guarantee.

Related types: foundation::BorrowedView · foundation::float32 · foundation::uint8 · foundation::usize · rhi::RasterStatus · foundation::math::Vector4 · LightTransformerEncoding · LightTransformerScenePoint · rhi::BufferHandle · rhi::DeviceHandle · rhi::RasterShaderDescription

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/light_transformer_encoder.hpp

PrepareLightTransformerEncodedQueries

rhi::RasterStatus ludus::graphics::renderer::PrepareLightTransformerEncodedQueries(foundation::BorrowedView< const foundation::float32 > weights, const LightTransformerEncoding &encoding, foundation::BorrowedView< const LightTransformerQuery > queries, rhi::DeviceHandle device, const rhi::RasterShaderDescription &shader, foundation::usize maximumBufferBytes, rhi::ComputeWorkload &outWorkload) noexcept
Prepare queries against an encoder's GPU packet without reading latents back.
ParameterDescription
weights
Canonical decoder parameters; copied and required finite.
encoding
Successfully prepared encoder, kept alive until the query workload resets. Execute its encoder graph before executing this query graph on the same device.
queries
Model-space queries, copied/normalized as in PrepareLightTransformerDecoder.
device
Same ready owner-thread device as encoding, between frames.
shader
Cooked renderer_light_transformer_encoded_queries recipe, retained through Poll.
maximumBufferBytes
Total logical storage budget, including the borrowed packet prefix.
outWorkload
Empty owner, acquired only on Ready/Pending. Failure preserves it.

Returns

Ready/Pending, NotReady while encoding is preparing, or explicit validation, capacity/allocation/backend failure. Workload buffer 2 contains query-major float4 RGB/W=0.

Related types: foundation::BorrowedView · rhi::ComputeWorkload · foundation::float32 · foundation::usize · rhi::RasterStatus · LightTransformerEncoding · LightTransformerQuery · rhi::DeviceHandle · rhi::RasterShaderDescription

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/light_transformer_encoder.hpp

PrepareLightTransformerPacketQueries

rhi::RasterStatus ludus::graphics::renderer::PrepareLightTransformerPacketQueries(foundation::BorrowedView< const foundation::float32 > weights, rhi::BufferHandle packet, foundation::usize packetBytes, foundation::BorrowedView< const LightTransformerQuery > queries, rhi::DeviceHandle device, const rhi::RasterShaderDescription &shader, foundation::usize maximumBufferBytes, rhi::ComputeWorkload &outWorkload) noexcept
Prepare batched queries against a graph-borrowed encoder packet, without CPU latents.
ParameterDescription
weights
Canonical finite decoder parameters, copied.
packet
Ready same-device buffer produced by a completed encoder or Light Transformer graph frame. Caller keeps its owner alive until the query workload resets; arbitrary/uninitialized data is unsupported.
packetBytes
Complete accessible packet prefix, a positive multiple of sixteen.
queries
Model-space queries, copied and normalized before return.
device
Ready owner-thread device, between frames.
shader
Cooked renderer_light_transformer_encoded_queries artifact, retained through Poll.
maximumBufferBytes
Logical storage budget, including borrowed packet bytes.
outWorkload
Empty owner, acquired only on Ready/Pending. Failure preserves it.

Returns

Explicit validation/capacity/allocation/backend status; buffer 2 contains raw query-major float4 RGB/W=0.

Related types: foundation::BorrowedView · rhi::ComputeWorkload · foundation::float32 · foundation::usize · rhi::RasterStatus · LightTransformerQuery · rhi::BufferHandle · rhi::DeviceHandle · rhi::RasterShaderDescription

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/light_transformer_encoder.hpp

ResolveMeshEmissionPower

rhi::RasterStatus ludus::graphics::renderer::ResolveMeshEmissionPower(foundation::math::Vector3 color, foundation::float32 lumens, foundation::float64 areaWorld, bool isTwoSided, foundation::math::Vector3 &outEmission) noexcept
Resolve RGB emission color and total lumens to nits for one placed emitter. Uses the Renderer Rec.709 photometric proxy and world area in square metres; two-sided emitters split total power across both sides. Finite nonnegative color, power and positive area are required. Invalid/out-of-profile values preserve outEmission.

Related types: foundation::float32 · foundation::float64 · rhi::RasterStatus · foundation::math::Vector3

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/lighting.hpp

BuildTriangleAreaLights

rhi::RasterStatus ludus::graphics::renderer::BuildTriangleAreaLights(const TriangleAreaLightDescription &description, AreaLightSamples &outSamples) noexcept
Expand a nondegenerate finite triangle into weighted Lambertian samples. Returns CapacityExceeded if radiance*sample area exceeds the direct-light intensity budget; malformed inputs return InvalidDescription. All failures preserve outSamples. This quadrature does not reproduce finite-source soft shadows exactly; each sample needs six cube shadow faces for visibility.

Related types: rhi::RasterStatus · AreaLightSamples · TriangleAreaLightDescription

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/lighting.hpp

BuildPlanarAreaLight

rhi::RasterStatus ludus::graphics::renderer::BuildPlanarAreaLight(const PlanarAreaLightDescription &description, DirectLight &outLight) noexcept
Construct one tessellation-independent centroid quadrature sample. Validate bounds, nondegeneracy, consistent normals and coplanarity within 0.1 mm plus FP32 coordinate error. Centroid must lie inside one supplied triangle; unsupported curved/disjoint/concave-centroid sources preserve outLight. Connectivity is a producer contract, not a topology proof. Near-field light shape and soft shadows are approximated; report this declared quality profile.

Related types: rhi::RasterStatus · DirectLight · PlanarAreaLightDescription

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/lighting.hpp

BuildPointShadowMatrix

rhi::RasterStatus ludus::graphics::renderer::BuildPointShadowMatrix(ludus::foundation::math::Vector3 positionWorld, ludus::foundation::uint32 face, ludus::foundation::float32 nearDistance, ludus::foundation::float32 farDistance, ludus::foundation::math::Matrix4 &outWorldToClip) noexcept
Build a conventional-depth 90-degree point-light projection, faces in order +X,-X,+Y,-Y,+Z,-Z. Distances are metres, with 0 < nearDistance < farDistance. Invalid/nonrepresentable input preserves outWorldToClip; no allocation.

Related types: ludus::foundation::float32 · ludus::foundation::uint32 · rhi::RasterStatus · ludus::foundation::math::Matrix4 · ludus::foundation::math::Vector3

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/lighting.hpp

SelectDirectLights

rhi::RasterStatus ludus::graphics::renderer::SelectDirectLights(const DirectLight *lights, ludus::foundation::usize count, LightSelection &output) noexcept
Validate up to 128 lights and retain the eight smallest unique SourceIds. No allocation; invalid/count overflow preserves output. Saturation succeeds with Dropped.

Related types: ludus::foundation::usize · rhi::RasterStatus · DirectLight · LightSelection

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/lighting.hpp

NormalizeDirectLights

rhi::RasterStatus ludus::graphics::renderer::NormalizeDirectLights(const DirectLight *lights, ludus::foundation::usize count, LightSelection &output) noexcept
Validate/normalize and copy every one of at most 128 unique lights in SourceId order. No saturation or allocation; failure preserves output. Used by explicit reference transport, where silently dropping illumination would change the integral.

Related types: ludus::foundation::usize · rhi::RasterStatus · DirectLight · LightSelection

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/lighting.hpp

NormalizePanelLuminaires

rhi::RasterStatus ludus::graphics::renderer::NormalizePanelLuminaires(const PanelLuminaire *luminairesOrNull, ludus::foundation::usize count, PanelLuminaireSelection &outSelection) noexcept
Validate every one of at most MAX_PANEL_LUMINAIRES panel luminaires against the PanelLuminaire ranges, make each frame orthonormal (tangent normalized, bitangent made perpendicular to it) and copy them in SourceId order.
ParameterDescription
luminairesOrNull
Borrowed for the call; may be null only when count is zero.
count
Number of submitted luminaires.
outSelection
Replaced on success.

Returns

Ready; CapacityExceeded above MAX_PANEL_LUMINAIRES; InvalidDescription for a value out of range, a zero or duplicate SourceId, or a degenerate frame. No allocation; failure preserves outSelection.

Related types: ludus::foundation::usize · rhi::RasterStatus · PanelLuminaire · PanelLuminaireSelection

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/lighting.hpp

BuildLightClusters

rhi::RasterStatus ludus::graphics::renderer::BuildLightClusters(const LightClusterDescription &description, const DirectLight *lights, ludus::foundation::usize count, LightClusters &output) noexcept
Validate and normalize up to 128 unique lights, then assign conservative sphere/AABB lists. Directional lights intersect every cell; spot cones use their enclosing range sphere. No occupied-depth or normal rejection. Failure preserves output; no allocation.

Related types: ludus::foundation::usize · rhi::RasterStatus · DirectLight · LightClusterDescription · LightClusters

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/lighting.hpp

DecodeSurfaceParameters

rhi::RasterStatus ludus::graphics::renderer::DecodeSurfaceParameters(ludus::foundation::math::Vector4 texel, ludus::foundation::float32 metallic, ludus::foundation::float32 roughness, ludus::foundation::float32 normalScale, SurfaceParameters &outParameters) noexcept
Decode a filtered linear RGBA surface-map texel without allocation. Texel channels/metallic must be [0,1], roughness [0.045,1], strength [0,8]. RG outside the unit disk is normalized to its rim before Z reconstruction; strength scales XY after reconstruction and the direction is normalized again. Invalid inputs return InvalidDescription and preserve outParameters.

Related types: ludus::foundation::float32 · rhi::RasterStatus · ludus::foundation::math::Vector4 · SurfaceParameters

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/lighting.hpp

BuildDirectionalShadowMatrix

rhi::RasterStatus ludus::graphics::renderer::BuildDirectionalShadowMatrix(const ludus::foundation::math::Aabb3 &bounds, ludus::foundation::math::Vector3 direction, ludus::foundation::uint32 resolution, ludus::foundation::math::Matrix4 &output) noexcept
Fit a stabilized directional light projection to finite receiver/caster bounds. Snaps XY center to the inner-resolution texel grid, pads one texel and uses conventional depth. Call with unjittered cascade bounds; no camera split policy is hidden here. Invalid/degenerate/nonrepresentable input preserves output. Allocation-free.

Related types: ludus::foundation::uint32 · rhi::RasterStatus · ludus::foundation::math::Aabb3 · ludus::foundation::math::Matrix4 · ludus::foundation::math::Vector3

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/lighting.hpp

EvaluateLitBrdf

rhi::RasterStatus ludus::graphics::renderer::EvaluateLitBrdf(ludus::foundation::math::Vector3 baseColor, ludus::foundation::float32 metallic, ludus::foundation::float32 roughness, ludus::foundation::math::Vector3 normal, ludus::foundation::math::Vector3 view, ludus::foundation::math::Vector3 light, ludus::foundation::math::Vector3 &output) noexcept
Independent CPU reference for the documented single-scatter GGX/Smith/Schlick + Lambert BRDF. Base color and metallic [0,1], roughness [0.045,1]; directions normalized on admission. Returns the BRDF times max(N dot L,0), without incident radiance; failure preserves output.

Related types: ludus::foundation::float32 · rhi::RasterStatus · ludus::foundation::math::Vector3

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/lighting.hpp

PreparePointNeighborWorkload

rhi::RasterStatus ludus::graphics::renderer::PreparePointNeighborWorkload(rhi::DeviceHandle device, const foundation::geometry::PointSearchTree &tree, foundation::BorrowedView< const foundation::math::Vector3 > positionsWorld, foundation::uint32 neighborCount, const rhi::RasterShaderDescription &shader, foundation::usize maximumBufferBytes, rhi::ComputeWorkload &outWorkload) noexcept
Upload a point tree and query positions, preparing a portable buffer-only compute workload using the installed renderer_point_neighbors recipe. No ray hardware, camera or render attachment is needed. Source borrows end before return.
ParameterDescription
device
Ready compute-capable Metal/Vulkan/WebGPU device; owner thread, between frames.
tree
Nonempty balanced tree built by PointSearchTree; copied into immutable GPU storage.
positionsWorld
Finite queries within MAX_POINT_SEARCH_COORDINATE; copied as float4 records.
neighborCount
1..MAX_POINT_NEIGHBORS, no more than the tree's point count.
shader
Cooked renderer_point_neighbors Compute artifact; retained until workload.Poll completes.
maximumBufferBytes
Logical bytes for parameters, tree, queries and results; device limits also apply.
outWorkload
Empty owner; acquired on Ready/Pending, preserved on failure.

Returns

Ready/Pending or explicit preparation failure. Execute BuildGraph through normal RHI APIs, then GetBuffer(POINT_NEIGHBOR_RESULT_BUFFER) to consume query-major PointNeighbor records on the GPU. Invalid-tree/query records use ABSENT_POINT_NODE; they must not be used as embedding indices. No CPU result transfer is performed.

Related types: foundation::BorrowedView · foundation::geometry::PointSearchTree · rhi::ComputeWorkload · foundation::usize · foundation::uint32 · rhi::RasterStatus · foundation::math::Vector3 · rhi::DeviceHandle · rhi::RasterShaderDescription

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/point_neighbors.hpp

EvaluateReferenceBsdf

rhi::RasterStatus ludus::graphics::renderer::EvaluateReferenceBsdf(const ReferenceBsdf &, ludus::foundation::math::Vector3 normal, ludus::foundation::math::Vector3 view, ludus::foundation::math::Vector3 light, ReferenceBsdfEvaluation &, ReferenceBsdfRandomContext random={}) noexcept
Evaluate the selected reflection profile. Normal, outgoing view and incoming light must be finite unit vectors within 1e-5 squared-length tolerance. Directions point away from the surface. Dielectrics evaluate to zero value and density for every direction pair (their lobes are deltas). Coatings use one stochastic layered estimate and an independently addressed MIS density estimate. Advance random.Address.Event between estimates to converge. Invalid input preserves output; no allocation.

Related types: rhi::RasterStatus · ludus::foundation::math::Vector3 · ReferenceBsdf · ReferenceBsdfEvaluation · ReferenceBsdfRandomContext

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/reference.hpp

SampleReferenceBsdf

rhi::RasterStatus ludus::graphics::renderer::SampleReferenceBsdf(const ReferenceBsdf &, ludus::foundation::math::Vector3 normal, ludus::foundation::math::Vector3 view, ludus::foundation::math::Vector3 samples, ReferenceBsdfSample &, ReferenceBsdfRandomContext random={}) noexcept
Sample the matching mixture with three independent values in [0,1): X selects the lobe, Y/Z sample it. Diffuse uses cosine sampling; conductors and legacy pure metals use visible-GGX reflection; legacy mixed surfaces mix cosine diffuse and GGX equally. DiffuseConductorMix uses Metallic as the conductor proposal probability and returns the weighted sum of both lobe densities. ProjectBrdf chooses one authored cosine-power lobe and returns the full mixture density. Dielectrics reflect with probability equal to their Fresnel reflectance (a thin slab's includes its interreflections) and otherwise refract, or pass straight through a thin slab; transmitted radiance is scaled by the inverse squared relative index. Coatings sample an internal layered path using the supplied random context; Weight and MisPdf have distinct contracts. Internal depth and roulette termination are ordinary null samples. Failure preserves output. No allocation, retries, global RNG, energy clamp or hidden roughness change.

Related types: rhi::RasterStatus · ludus::foundation::math::Vector3 · ReferenceBsdf · ReferenceBsdfRandomContext · ReferenceBsdfSample

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/reference.hpp

ResolveRenderGraphResource

rhi::RasterStatus ludus::graphics::renderer::ResolveRenderGraphResource(const content::render_graph_format::Resource &resource, foundation::uint32 referenceWidth, foundation::uint32 referenceHeight, content::render_graph_format::Resource &outResource) noexcept
Resolve one fixed or view-relative resource without GPU work. Relative dimensions use ceil(reference * numerator / denominator), with a minimum of one pixel. Pixel buffers multiply the resolved pixel count by BytesPerPixel, returning capacity in Width.
ParameterDescription
resource
Authored fixed dimensions or a validated view-relative ratio; borrowed for the call.
referenceWidth
Drawable pixels, before render scale; zero suspends relative resolution.
referenceHeight
Drawable pixels, with the same contract as referenceWidth.
outResource
Resolved copy, unchanged on failure; its policy remains intact for later resizes.

Returns

Ready on success; NotReady for a zero relative reference; InvalidDescription for malformed policies; CapacityExceeded above MAX_TARGET_EXTENT or MAX_RAY_BUFFER_BYTES. Fixed resources ignore the reference.

Related types: foundation::uint32 · rhi::RasterStatus · content::render_graph_format::Resource

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/render_graph.hpp

DescribeRenderGraphFailureReason

const char * ludus::graphics::renderer::DescribeRenderGraphFailureReason(foundation::uint32 reason) noexcept
Describe a failure reason in one sentence for an author, with what to change. Authored reasons get a generic sentence naming the reason number.
ParameterDescription
reason
A RenderGraphFailureReason value or an authored reason below MAX_RENDER_GRAPH_FAILURE_REASONS.

Returns

Static UTF-8 text; an empty string for a reason outside the range.

Related types: foundation::uint32

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/render_graph.hpp

SetRenderGraphRayInterface

void ludus::graphics::renderer::SetRenderGraphRayInterface(rhi::RasterShaderDescription &inoutDescription, rhi::ShaderStage stage, bool hasPersistentBuffers=false, bool hasVisibilityBuffer=false, bool hasNativeRayQueries=true) noexcept
Attach the frozen triangle-ray compute/image interface metadata to a cooked stage. Does not compile, allocate or change artifact bytes. Used by generated headers and runtime decoders; the RHI independently checks actual native shader reflection.
ParameterDescription
inoutDescription
Receives binding metadata and the legacy 64x1x1 Compute default. Cooked headers and version 19+ packages replace that default with reflected dimensions.
stage
Compute for the linked ray kernel, Vertex/Fragment for the image recipe.
hasVisibilityBuffer
Adds paired unfiltered visibility/depth compute texture inputs.
hasPersistentBuffers
Use the extended two-buffer compute ABI; image stages are unchanged.
hasNativeRayQueries
Include the acceleration-structure binding. False uses only ordinary compute buffers/textures; the artifact must contain software traversal and no native ray instructions.

Related types: rhi::ShaderStage · rhi::RasterShaderDescription

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/render_graph.hpp

SetRenderGraphForwardInterface

void ludus::graphics::renderer::SetRenderGraphForwardInterface(rhi::RasterShaderDescription &inoutDescription, content::render_graph_format::StageRole role, bool isClustered=false) noexcept
Attach the immutable forward recipe ABI to one cooked support stage. Artifact bytes remain untouched; shader reflection and Renderer prewarming independently validate it.
ParameterDescription
inoutDescription
Receives exact inputs, bindings and uniform member metadata.
role
A forward material/output, ForwardDepth or deferred support role; other roles leave the description unchanged.
isClustered
Select the clustered material layout; old forward packages retain their ABI.

Related types: content::render_graph_format::StageRole · rhi::RasterShaderDescription

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/render_graph.hpp

RequiresHardwareRayTracing

bool ludus::graphics::renderer::RequiresHardwareRayTracing(const RenderGraphPlan &plan) noexcept
Whether a validated plan contains a pass requiring native ray queries. No allocation or GPU work.

Related types: RenderGraphPlan

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/render_graph_activation.hpp

RequiresNativeRayPipeline

bool ludus::graphics::renderer::RequiresNativeRayPipeline(const RenderGraphPlan &plan) noexcept
True when any ray pass requests native stage/function-table execution, requiring RayCapabilities::RayPipelines. Compute invocations with inline queries return false. Performs no allocation or device access.

Related types: RenderGraphPlan

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/render_graph_activation.hpp

UsesRayTracing

bool ludus::graphics::renderer::UsesRayTracing(const RenderGraphPlan &plan) noexcept
Whether a validated plan contains any software or native triangle ray pass. No allocation or GPU work.

Related types: RenderGraphPlan

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/render_graph_activation.hpp

RequiresDenoising

bool ludus::graphics::renderer::RequiresDenoising(const RenderGraphPlan &plan) noexcept
Whether a validated plan denoises any ray pass (an authored Denoise node). No allocation or GPU work.

Related types: RenderGraphPlan

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/render_graph_activation.hpp

IsDenoisingAvailable

bool ludus::graphics::renderer::IsDenoisingAvailable() noexcept
Whether this renderer build includes the optional OIDN denoiser (LUDUS_ENABLE_OIDN). Without it, RenderGraph::Initialize rejects any plan for which RequiresDenoising is true with Unsupported.

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/render_graph_activation.hpp

SelectRenderGraphRenderer

rhi::RasterStatus ludus::graphics::renderer::SelectRenderGraphRenderer(rhi::DeviceHandle device, RenderGraphPreference preference, RenderGraphRenderer &outRenderer) noexcept
Select using the current logical device's enabled native ray and compute capabilities. Unsupported ray/compute APIs select Raster with Ready, including browser backends. ForceRaster also selects Raster; it never enables ray features or submits GPU work.
ParameterDescription
device
Live RHI device; call on its owner thread between frames.
preference
Automatic or ForceRaster; an unknown value is InvalidDescription.
outRenderer
Written only on Ready; invalid/lost devices preserve it.

Returns

Ready after selection, or the device/capability query's operational failure. This selects capability, not artifact availability; StageSelected also requires an authored ray graph.

Related types: RenderGraphRenderer · RenderGraphPreference · rhi::RasterStatus · rhi::DeviceHandle

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/render_graph_activation.hpp

ComputeRenderGraphCaptureTileCount

foundation::uint32 ludus::graphics::renderer::ComputeRenderGraphCaptureTileCount(const RenderGraphRayWorkload &workload) noexcept
Choose the bands per sample (RenderGraph::SetRayTileCount) that keep each band of a capture under RENDER_GRAPH_CAPTURE_TILE_NANOSECONDS. Each pixel is charged one camera query plus RENDER_GRAPH_CAPTURE_QUERIES_PER_LIGHT shadow queries per light, at most MAX_RENDER_GRAPH_CAPTURE_VISIBILITY_QUERIES, since a kernel cannot exceed its linked budget, each at RENDER_GRAPH_CAPTURE_QUERY_NANOSECONDS. The model is linear in lights, as the polygonal-light estimators are, so it overestimates estimators that sample a fixed number of lights.
ParameterDescription
workload
Pixels and lights of one sample, from RenderGraph::GetRayWorkload.

Returns

From one to MAX_RENDER_GRAPH_RAY_TILES; MAX_RENDER_GRAPH_RAY_TILES when the estimate needs more.

Related types: foundation::uint32 · RenderGraphRayWorkload

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/render_graph_capture.hpp

FindRenderGraphCaptureProblem

RenderGraphCaptureProblem ludus::graphics::renderer::FindRenderGraphCaptureProblem(const RenderGraphPlan &plan, foundation::uint32 output) noexcept
Check whether a plan's output can be captured, without a device: the route check RenderGraphCapture::Start applies before it creates anything. The output must be an offscreen colour resource whose writers lead, through processing passes that read a SourceColor, to a ray pass with an Accumulate.
ParameterDescription
plan
Numeric plan; borrowed for the call.
output
Logical resource to capture; ABSENT selects the plan's only exported colour resource.

Returns

None when Start would accept the route; NoOutput, RasterRoute or NoAccumulation otherwise. Settings, device and scene problems are found only by Start and later.

Related types: foundation::uint32 · RenderGraphCaptureProblem · RenderGraphPlan

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/render_graph_capture.hpp

PrepareSurfacePointCloud

rhi::RasterStatus ludus::graphics::renderer::PrepareSurfacePointCloud(const RenderGraphSceneDescription &scene, const SurfacePointSampling &sampling, SurfacePointCloud &outCloud) noexcept
Sample geometry proportional to transformed triangle area, uniformly within each triangle, rejecting masked holes. Reuses scene material/texture admission and evaluation; no transport, lighting prediction or GPU work is performed. Texture detail and emissive surfaces are included; occluded surfaces are not pruned.
ParameterDescription
scene
Complete static extraction with HasMaterialInterface=true. Consumed synchronously.
sampling
Positive explicit budgets; source textures are borrowed only for this call.
outCloud
Replaced only on success. Previous output is excluded from MaximumBytes.

Returns

Ready; InvalidDescription for malformed input or empty/non-sampleable geometry; CapacityExceeded for memory/work exhaustion (raise the corresponding budget or reduce Count; fully masked geometry may have no accepted points); OutOfMemory; Unsupported for source capabilities rejected by ordinary scene admission.

Related types: rhi::RasterStatus · RenderGraphSceneDescription · SurfacePointCloud · SurfacePointSampling

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/surface_points.hpp

ApplyPbrNeutral

ludus::foundation::math::Vector3 ludus::graphics::renderer::ApplyPbrNeutral(ludus::foundation::math::Vector3 color) noexcept
Khronos PBR Neutral applied to scene-linear colour. Negative channels count as zero; a non-finite channel maps to one, as the Reinhard path does. The result is display-linear and may reach but not exceed one.

Related types: ludus::foundation::math::Vector3

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/tone_mapping.hpp

InvertPbrNeutral

ludus::foundation::math::Vector3 ludus::graphics::renderer::InvertPbrNeutral(ludus::foundation::math::Vector3 display) noexcept
The scene-linear colour that ApplyPbrNeutral maps to a wanted display-linear colour, so that diagnostic colours authored for the screen appear unchanged after the viewport's presentation. Channels are clamped to [0, PBR_NEUTRAL_INVERSE_LIMIT]; saturated colours whose peak is high cannot all be reached and clamp to the nearest representable colour.

Related types: ludus::foundation::math::Vector3

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/tone_mapping.hpp

ApplyReinhard

ludus::foundation::math::Vector3 ludus::graphics::renderer::ApplyReinhard(ludus::foundation::math::Vector3 color) noexcept
Guarded per-channel Reinhard: negative channels count as zero, a non-finite channel maps to one.

Related types: ludus::foundation::math::Vector3

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/tone_mapping.hpp

ApplyToneCurve

ludus::foundation::math::Vector3 ludus::graphics::renderer::ApplyToneCurve(ToneCurve curve, ludus::foundation::math::Vector3 color) noexcept
Apply a display curve to scene-linear colour that already includes exposure; the result is display-linear.

Related types: ToneCurve · ludus::foundation::math::Vector3

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/tone_mapping.hpp

ResolveViewMapping

rhi::RasterStatus ludus::graphics::renderer::ResolveViewMapping(VirtualScreen screen, rhi::RasterRectangle region, ludus::foundation::uint32 drawableWidth, ludus::foundation::uint32 drawableHeight, ViewMapping &output) noexcept
Resolve against actual physical dimensions. Zero drawable/region returns NotReady. Region must fit the drawable; dimensions above 2^24 or malformed inputs reject. Ready publishes a complete mapping; every failure preserves output. Allocation-free.

Related types: ludus::foundation::uint32 · rhi::RasterStatus · ViewMapping · VirtualScreen · rhi::RasterRectangle

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/views.hpp

SplitViewRectangle

rhi::RasterStatus ludus::graphics::renderer::SplitViewRectangle(rhi::RasterRectangle parent, ludus::foundation::uint32 columns, ludus::foundation::uint32 rows, ludus::foundation::uint32 column, ludus::foundation::uint32 row, rhi::RasterRectangle &output) noexcept
Partition a physical rectangle using shared integer edges, without cracks or overlap. Zero-area cells return NotReady; invalid counts/indices and overflowing edges reject. Every failure preserves output. Cell coordinates and counts are zero-based/counts.

Related types: ludus::foundation::uint32 · rhi::RasterStatus · rhi::RasterRectangle

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/views.hpp

MapPhysicalToVirtual

rhi::RasterStatus ludus::graphics::renderer::MapPhysicalToVirtual(const ViewMapping &mapping, ludus::foundation::math::Vector2 pixel, ludus::foundation::math::Vector2 &output, bool clamp=false) noexcept
Invert the same drawing mapping from top-left physical pixel-edge coordinates. Reject outside the region or in letterbox bars unless clamp is true; clamping may return a logical boundary. Invalid mapping/nonfinite input preserves output.

Related types: rhi::RasterStatus · ludus::foundation::math::Vector2 · ViewMapping

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/views.hpp

MapWindowToVirtual

rhi::RasterStatus ludus::graphics::renderer::MapWindowToVirtual(const ViewMapping &mapping, ludus::foundation::math::Vector2 point, ludus::foundation::math::Vector2 pixelsPerWindowUnit, ludus::foundation::math::Vector2 &output, bool clamp=false) noexcept
Convert window logical input using an explicit positive per-axis physical DPI scale, then invert the drawing mapping. Applies DPI exactly once; failure preserves output.

Related types: rhi::RasterStatus · ludus::foundation::math::Vector2 · ViewMapping

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/views.hpp

MapVirtualToPhysical

rhi::RasterStatus ludus::graphics::renderer::MapVirtualToPhysical(const ViewMapping &mapping, ludus::foundation::math::Vector2 point, ludus::foundation::math::Vector2 &output) noexcept
Map a finite logical point to physical pixel-edge coordinates; points may lie outside content for caller clipping. Invalid mapping or overflow preserves output.

Related types: rhi::RasterStatus · ludus::foundation::math::Vector2 · ViewMapping

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/views.hpp

BuildViewDescription

rhi::RasterStatus ludus::graphics::renderer::BuildViewDescription(const ProjectionDescription &projection, const ViewMapping &mapping, ViewDescription &output, ProjectionSpace space=ProjectionSpace::LogicalScreen) noexcept
Build a reverse-Z prepared-view description using the logical aspect. LogicalScreen is the default for offscreen composition; OutputRegion applies Fill crop when drawing directly into mapping.Viewport. Do not compose a cropped OutputRegion view. Finite orthographic/perspective and infinite perspective reuse FoundationMath factories. Invalid/nonrepresentable inputs preserve output; Reference/CullMargin use their defaults.

Related types: ProjectionSpace · rhi::RasterStatus · ProjectionDescription · ViewDescription · ViewMapping

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/views.hpp

TryPropagateWaveBeam

bool ludus::graphics::renderer::TryPropagateWaveBeam(const WaveBeam &beam, foundation::float64 distanceWorld, WaveBeam &outBeam, WaveMoments &outMoments) noexcept
Propagate the beam by a finite nonnegative distance using Steinberg and Pharr's Eqs. (19)-(21). Allocation-free and thread-independent. Invalid/overflowing input preserves both outputs.

Related types: foundation::float64 · WaveBeam · WaveMoments

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/wave_tracing.hpp

TryEvaluateWaveAperture

bool ludus::graphics::renderer::TryEvaluateWaveAperture(const WaveAperture &aperture, foundation::BorrowedView< const foundation::float64 > transmission, foundation::math::Vector3d receiverApertureWorld, WaveField &outField) noexcept
Evaluate a scalar Fresnel aperture integral with coherent summation before squaring. receiverApertureWorld is (transverse x, transverse y, positive axial distance), in metres. transmission contains Resolution^2 real amplitude transmissions in [0,1], borrowed for this call. Uses midpoint quadrature of a Gaussian waist field, with the common axial phase omitted. Returns false for invalid/nonfinite inputs, output overflow or phase undersampling; outputs stay unchanged. Refine Resolution or increase wavelength/distance to repair undersampling. No allocation or shared state. This is a single thin-screen scalar profile, not the paper's full multi-region polarimetric solver.

Related types: foundation::BorrowedView · foundation::float64 · foundation::math::Vector3d · WaveAperture · WaveField

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/wave_tracing.hpp

BuildWorldGridPlane

bool ludus::graphics::renderer::BuildWorldGridPlane(const ViewDescription &view, WorldGridPlane &outPlane, bool &outIsVisible) noexcept
Build the plane that BuildWorldGridLines draws as ribbons, for the analytic grid path.
ParameterDescription
view
Camera, projection and WorldGrid inputs, validated as BuildWorldGridLines does.
outPlane
Receives the plane; untouched on failure or for a disabled grid.
outIsVisible
Receives false for a disabled grid or a shadow caster view, true otherwise.

Returns

False for invalid visible-grid camera inputs. No allocation, GPU work or thread affinity.

Related types: ViewDescription · WorldGridPlane

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/world_grid.hpp

BuildWorldGridLines

bool ludus::graphics::renderer::BuildWorldGridLines(const ViewDescription &view, foundation::BorrowedView< WorldGridLine > outLines, foundation::usize &outCount, foundation::float32 &outSpacing) noexcept
Build an adaptive XZ grid (perspective), or the Cartesian plane most facing an orthographic camera, plus red X, green Y and blue Z axes. Storage is borrowed only during this call.
ParameterDescription
view
Camera, projection and optional WorldGrid inputs. Shadow caster views omit the guide.
outLines
Valid caller-owned storage of at least WORLD_GRID_LINE_CAPACITY elements.
outCount
Receives the number of initialized lines; zero for a disabled grid.
outSpacing
Receives minor spacing in world units; zero for a disabled grid.

Returns

False for insufficient storage or invalid visible-grid camera inputs, preserving all outputs. Success writes only the first outCount elements. No allocation, GPU work or thread affinity.

Related types: foundation::BorrowedView · foundation::float32 · foundation::usize · ViewDescription · WorldGridLine

Declared in modules/graphics/renderer/include/ludus/graphics/renderer/world_grid.hpp