.\" Automatically generated by Pandoc 2.9.2.1
.\"
.TH "rtcCommitScene" "3" "" "" "Embree Ray Tracing Kernels 4"
.hy
.SS NAME
.IP
.nf
\f[C]
rtcCommitScene - commits scene changes
\f[R]
.fi
.SS SYNOPSIS
.IP
.nf
\f[C]
#include <embree4/rtcore.h>

void rtcCommitScene(RTCScene scene);
\f[R]
.fi
.SS DESCRIPTION
.PP
The \f[C]rtcCommitScene\f[R] function commits all changes for the
specified scene (\f[C]scene\f[R] argument).
This internally triggers building of a spatial acceleration structure
for the scene using all available worker threads.
Ray queries can be performed only after committing all scene changes.
.PP
If the application uses TBB 2019 Update 9 or later for parallelization
of rendering, lazy scene construction during rendering is supported by
\f[C]rtcCommitScene\f[R].
Therefore \f[C]rtcCommitScene\f[R] can get called from multiple TBB
worker threads concurrently for the same scene.
The \f[C]rtcCommitScene\f[R] function will then internally isolate the
scene construction using a tbb::isolated_task_group.
The alternative approach of using \f[C]rtcJoinCommitScene\f[R] which
uses an tbb:task_arena internally, is not recommended due to it\[cq]s
high runtime overhead.
.PP
If scene geometries get modified or attached or detached, the
\f[C]rtcCommitScene\f[R] call must be invoked before performing any
further ray queries for the scene; otherwise the effect of the ray query
is undefined.
The modification of a geometry, committing the scene, and tracing of
rays must always happen sequentially, and never at the same time.
Any API call that sets a property of the scene or geometries contained
in the scene count as scene modification, e.g.\ including setting of
intersection filter functions.
.PP
The kind of acceleration structure built can be influenced using scene
flags (see \f[C]rtcSetSceneFlags\f[R]), and the quality can be specified
using the \f[C]rtcSetSceneBuildQuality\f[R] function.
.PP
Embree silently ignores primitives during spatial acceleration structure
construction that would cause numerical issues, e.g.\ primitives
containing NaNs, INFs, or values greater than 1.844E18f (as no
reasonable calculations can be performed with such values without
causing overflows).
.SS EXIT STATUS
.PP
On failure an error code is set that can be queried using
\f[C]rtcGetDeviceError\f[R].
.SS SEE ALSO
.PP
[rtcJoinCommitScene]
