Skip to main content

SceneTracer

The SceneTracer class provides an interface for performing ray intersection operations within a Scene using GPU shaders. To perform intersection, a new ray index must be obtained by atomically incrementing the indirect buffer, and input ray parameters must be written to the input buffer. The intersection result is then available in the output buffer at the same index on the next frame or after manually executing the dispatch() method. The SceneManager class offers a simpler interface to SceneTracer for CPU-initiated ray intersection queries, with results reported via callbacks.

info

The SceneTracer is available for GraphVarying shaders.

#include <scene/TellusimSceneTracer.h>

Constructors

SceneTracer()

Methods

Tracer parameters.

uint32_t getMaxRays() const

Output buffer offset.

size_t getOutputOffset() const

Tracer buffers.

Buffer getInputBuffer() const
Buffer getOutputBuffer() const
Buffer getIndirectBuffer() const

Tracer queries.

Query getQuery(QueryType type) const
static const char *getQueryName(QueryType type)

Dispatch tracer.

void dispatch(Compute compute, Flags flags = FlagNone)

Enums

Flags

Tracer flags.

NameValueDescription
FlagNone0
FlagQuery(1 << 0)Time query profiler.
DefaultFlagsFlagNone
NumFlags1

RayFlags

Ray flags.

NameValueDescription
RayFlagNone0
RayFlagAll(1 << 27)Skip visibility distance test.
RayFlagAny(1 << 28)Stop on any object intersection.
RayFlagInstance(1 << 29)Stop on node instance intersection.
RayFlagDoubleSided(1 << 30)Perform double-sided intersection.

QueryType

Query types.

NameValueDescription
QueryGraph0Graph tracing time.
QueryNode1Node tracing time.
QueryObject2Object tracing time.
QueryMesh3Mesh tracing time.
QueryBrep4Brep tracing time.
QueryMerge5Tracing merge time.
NumQueries6

Structs

Ray

Tracer ray.

Variables

TypeNameValueDescription
Matrix4x3dtransformGlobal transform.
Vector3dpositionRay position.
Vector3dtargetRay target.
float32_tk1e8fIntersection point.
uint32_tmask~0uIntersection mask.
uint32_tflagsRayFlagNoneRay flags and ray index.
uint32_tgraph_indexIntersection graph index.
uint32_tnode_indexIntersection node index.
uint32_tobject_indexIntersection object index.
uint32_tobject_node_indexIntersection object node index.
uint32_tgeometry_indexIntersection object geometry index.
uint32_tgeometry_batchIntersection object geometry batch.
uint32_tgeometry_primitiveIntersection object geometry primitive.
Vector2ftexcoordIntersection texcoord.
Vector3fnormalIntersection normal.
uint32_tpayloadRay payload data.