Skip to content

Commit cc8c3aa

Browse files
committed
regenerated documentation
1 parent 68885d5 commit cc8c3aa

11 files changed

+520
-68
lines changed

CHANGELOG.md

+11-2
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,21 @@
11
Version History
22
---------------
33

4-
### Embree 3.10.1
4+
### Embree 3.11.0
5+
6+
- Round linear curves now automatically check for the existence of left and right
7+
connected segments if the flags buffer is empty. Left segments exist if the
8+
segment(id-1) + 1 == segment(id) and similarly for right segments.
9+
- Implemented the min-width feature for curves and points, which allows to increase the
10+
radius in a distance dependent way, such that the curve or points thickness is n pixels wide.
11+
- Round linear curves are closed now also at their start.
512
- Embree no longer supports Visual Studio 2013 starting with this release.
613
- Bugfix in subdivision tessellation level assignment for non-quad base primitives
7-
- Small meshes now directly added to top level of two-level builder
14+
- Small meshes are directly added to top level build phase of two-level builder to reduce memory consumption.
15+
- Enabled fast two level builder for user geometries when low quality build is requested.
816

917
### Embree 3.10.0
18+
1019
- Added EMBREE_COMPACT_POLYS CMake option which enables double indexed triangle and quad
1120
leaves to reduce memory consumption in compact mode by an additional 40% at about
1221
15% performance impact. This new mode is disabled by default.

README.md

+222-44
Large diffs are not rendered by default.

doc/src/api/rtcInitIntersectContext.md

+7-6
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,15 @@
2020
enum RTCIntersectContextFlags flags;
2121
RTCFilterFunctionN filter;
2222
23-
#if RTC_MAX_INSTANCE_LEVEL_COUNT > 1
24-
unsigned int instStackSize;
25-
#endif
23+
#if RTC_MAX_INSTANCE_LEVEL_COUNT > 1
24+
unsigned int instStackSize;
25+
#endif
26+
2627
unsigned int instID[RTC_MAX_INSTANCE_LEVEL_COUNT];
2728

28-
#if RTC_MIN_WIDTH
29-
float minWidthDistanceFactor;
30-
#endif
29+
#if RTC_MIN_WIDTH
30+
float minWidthDistanceFactor;
31+
#endif
3132
};
3233

3334
void rtcInitIntersectContext(

man/man3/RTCBufferType.3embree3

+78
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
.\" Automatically generated by Pandoc 1.17.0.3
2+
.\"
3+
.TH "RTCBufferType" "3" "" "" "Embree Ray Tracing Kernels 3"
4+
.hy
5+
.SS NAME
6+
.IP
7+
.nf
8+
\f[C]
9+
RTCFormat\ \-\ specifies\ format\ of\ data\ in\ buffers
10+
\f[]
11+
.fi
12+
.SS SYNOPSIS
13+
.IP
14+
.nf
15+
\f[C]
16+
#include\ <embree3/rtcore_ray.h>
17+
18+
enum\ RTCBufferType
19+
{
20+
\ \ RTC_BUFFER_TYPE_INDEX\ \ \ \ \ \ \ \ \ \ \ \ =\ 0,
21+
\ \ RTC_BUFFER_TYPE_VERTEX\ \ \ \ \ \ \ \ \ \ \ =\ 1,
22+
\ \ RTC_BUFFER_TYPE_VERTEX_ATTRIBUTE\ =\ 2,
23+
\ \ RTC_BUFFER_TYPE_NORMAL\ \ \ \ \ \ \ \ \ \ \ =\ 3,
24+
\ \ RTC_BUFFER_TYPE_TANGENT\ \ \ \ \ \ \ \ \ \ =\ 4,
25+
\ \ RTC_BUFFER_TYPE_NORMAL_DERIVATIVE\ =\ 5,
26+
27+
\ \ RTC_BUFFER_TYPE_GRID\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ 8,
28+
29+
\ \ RTC_BUFFER_TYPE_FACE\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ 16,
30+
\ \ RTC_BUFFER_TYPE_LEVEL\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ 17,
31+
\ \ RTC_BUFFER_TYPE_EDGE_CREASE_INDEX\ \ \ \ =\ 18,
32+
\ \ RTC_BUFFER_TYPE_EDGE_CREASE_WEIGHT\ \ \ =\ 19,
33+
\ \ RTC_BUFFER_TYPE_VERTEX_CREASE_INDEX\ \ =\ 20,
34+
\ \ RTC_BUFFER_TYPE_VERTEX_CREASE_WEIGHT\ =\ 21,
35+
\ \ RTC_BUFFER_TYPE_HOLE\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ 22,
36+
37+
\ \ RTC_BUFFER_TYPE_FLAGS\ =\ 32
38+
};
39+
\f[]
40+
.fi
41+
.SS DESCRIPTION
42+
.PP
43+
The \f[C]RTBufferType\f[] structure defines slots to assign data buffers
44+
to using the [rtcSetGeometryBuffer], [rtcSetSharedGeometryBuffer], and
45+
[rtcSetNewGeometryBuffer] API calls.
46+
.PP
47+
For most geometry types the \f[C]RTC_BUFFER_TYPE_INDEX\f[] slot is used
48+
to assign an index buffer, while the \f[C]RTC_BUFFER_TYPE_VERTEX\f[] is
49+
used to assign the corresponding vertex buffer.
50+
.PP
51+
The \f[C]RTC_BUFFER_TYPE_VERTEX_ATTRIBUTE\f[] slot can get used to
52+
assign arbitrary additional vertex data which can get interpolated using
53+
the [rtcInterpolate] API call.
54+
.PP
55+
The \f[C]RTC_BUFFER_TYPE_NORMAL\f[], \f[C]RTC_BUFFER_TYPE_TANGENT\f[],
56+
and \f[C]RTC_BUFFER_TYPE_NORMAL_DERIVATIVE\f[] are special buffers
57+
required to assign per vertex normals, tangents, and normal derivatives
58+
for some curve types.
59+
.PP
60+
The \f[C]RTC_BUFFER_TYPE_GRID\f[] buffer is used to assign the grid
61+
primitive buffer for grid geometries (see [RTC_GEOMETRY_TYPE_GRID]).
62+
.PP
63+
The \f[C]RTC_BUFFER_TYPE_FACE\f[], \f[C]RTC_BUFFER_TYPE_LEVEL\f[],
64+
\f[C]RTC_BUFFER_TYPE_EDGE_CREASE_INDEX\f[],
65+
\f[C]RTC_BUFFER_TYPE_EDGE_CREASE_WEIGHT\f[],
66+
\f[C]RTC_BUFFER_TYPE_VERTEX_CREASE_INDEX\f[],
67+
\f[C]RTC_BUFFER_TYPE_VERTEX_CREASE_WEIGHT\f[], and
68+
\f[C]RTC_BUFFER_TYPE_HOLE\f[] are special buffers required to create
69+
subdivision meshes (see [RTC_GEOMETRY_TYPE_SUBDIVISION]).
70+
.PP
71+
The \f[C]RTC_BUFFER_TYPE_FLAGS\f[] can get used to add additional flag
72+
per primitive of a geometry, and is currently only used for linear
73+
curves.
74+
.SS EXIT STATUS
75+
.SS SEE ALSO
76+
.PP
77+
[rtcSetGeometryBuffer], [rtcSetSharedGeometryBuffer],
78+
[rtcSetNewGeometryBuffer]

man/man3/RTCCurveFlags.3embree3

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ RTC_CURVE_FLAG_NEIGHBOR_RIGHT = (1 << 1) };
2323
.PP
2424
The RTCCurveFlags type is used for linear curves to determine if the
2525
left and/or right neighbor segment exist.
26-
Therefore one attached a buffer of type RTC_BUFFER_TYPE_FLAGS to the
26+
Therefore one attaches a buffer of type RTC_BUFFER_TYPE_FLAGS to the
2727
curve geometry which stores an individual byte per curve segment.
2828
.PP
2929
If the RTC_CURVE_FLAG_NEIGHBOR_LEFT flag in that byte is enabled for a

man/man3/RTCFormat.3embree3

+90
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
.\" Automatically generated by Pandoc 1.17.0.3
2+
.\"
3+
.TH "RTCFormat" "3" "" "" "Embree Ray Tracing Kernels 3"
4+
.hy
5+
.SS NAME
6+
.IP
7+
.nf
8+
\f[C]
9+
RTCFormat\ \-\ specifies\ format\ of\ data\ in\ buffers
10+
\f[]
11+
.fi
12+
.SS SYNOPSIS
13+
.IP
14+
.nf
15+
\f[C]
16+
#include\ <embree3/rtcore_ray.h>
17+
18+
enum\ RTCFormat
19+
{
20+
\ \ RTC_FORMAT_UINT,
21+
\ \ RTC_FORMAT_UINT2,
22+
\ \ RTC_FORMAT_UINT3,
23+
\ \ RTC_FORMAT_UINT4,
24+
25+
\ \ RTC_FORMAT_FLOAT,
26+
\ \ RTC_FORMAT_FLOAT2,
27+
\ \ RTC_FORMAT_FLOAT3,
28+
\ \ RTC_FORMAT_FLOAT4,
29+
\ \ RTC_FORMAT_FLOAT5,
30+
\ \ RTC_FORMAT_FLOAT6,
31+
\ \ RTC_FORMAT_FLOAT7,
32+
\ \ RTC_FORMAT_FLOAT8,
33+
\ \ RTC_FORMAT_FLOAT9,
34+
\ \ RTC_FORMAT_FLOAT10,
35+
\ \ RTC_FORMAT_FLOAT11,
36+
\ \ RTC_FORMAT_FLOAT12,
37+
\ \ RTC_FORMAT_FLOAT13,
38+
\ \ RTC_FORMAT_FLOAT14,
39+
\ \ RTC_FORMAT_FLOAT15,
40+
\ \ RTC_FORMAT_FLOAT16,
41+
42+
\ \ RTC_FORMAT_FLOAT3X4_ROW_MAJOR,
43+
\ \ RTC_FORMAT_FLOAT4X4_ROW_MAJOR,
44+
45+
\ \ RTC_FORMAT_FLOAT3X4_COLUMN_MAJOR,
46+
\ \ RTC_FORMAT_FLOAT4X4_COLUMN_MAJOR,
47+
48+
\ \ RTC_FORMAT_GRID,
49+
\f[]
50+
.fi
51+
.PP
52+
};
53+
.SS DESCRIPTION
54+
.PP
55+
The \f[C]RTFormat\f[] structure defines the data format stored in data
56+
buffers provided to Embree using the [rtcSetGeometryBuffer],
57+
[rtcSetSharedGeometryBuffer], and [rtcSetNewGeometryBuffer] API calls.
58+
.PP
59+
The \f[C]RTC_FORMAT_UINT/2/3/4\f[] format are used to specify that data
60+
buffers store unsigned integers, or unsigned integer vectors of size 2,3
61+
or 4.
62+
This format has typically to get used when specifying index buffers,
63+
e.g.
64+
\f[C]RTC_FORMAT_UINT3\f[] for triangle meshes.
65+
.PP
66+
The \f[C]RTC_FORMAT_FLOAT/2/3/4...\f[] format are used to specify that
67+
data buffers store single precision floating point values, or vectors
68+
there of (size 2,3,4, etc.).
69+
This format is typcally used to specify to format of vertex buffers,
70+
e.g.
71+
the \f[C]RTC_FORMAT_FLOAT3\f[] type for vertex buffers of triangle
72+
meshes.
73+
.PP
74+
The \f[C]RTC_FORMAT_FLOAT3X4_ROW_MAJOR\f[] and
75+
\f[C]RTC_FORMAT_FLOAT3X4_COLUMN_MAJOR\f[] formats, specify a 3x4
76+
floating point matrix layed out either row major or column major.
77+
The \f[C]RTC_FORMAT_FLOAT4X4_ROW_MAJOR\f[] and
78+
\f[C]RTC_FORMAT_FLOAT4X4_COLUMN_MAJOR\f[] formats, specify a 4x4
79+
floating point matrix layed out either row major or column major.
80+
These matrix formats are used in the [rtcSetGeometryTransform] function
81+
in order to set a transformation matrix for geometries.
82+
.PP
83+
The \f[C]RTC_FORMAT_GRID\f[] is a special data format used to specify
84+
grid primitives of layout RTCGrid when creating grid geometries (see
85+
[RTC_GEOMETRY_TYPE_GRID]).
86+
.SS EXIT STATUS
87+
.SS SEE ALSO
88+
.PP
89+
[rtcSetGeometryBuffer], [rtcSetSharedGeometryBuffer],
90+
[rtcSetNewGeometryBuffer], [rtcSetGeometryTransform]

man/man3/RTC_GEOMETRY_TYPE_CURVE.3embree3

+18-13
Original file line numberDiff line numberDiff line change
@@ -131,12 +131,15 @@ end of the line segment.
131131
When constructing hair strands in this basis, the end\-point can be
132132
shared with the start of the next line segment.
133133
.PP
134-
For the linear basis the user has to additionally provide a flags buffer
135-
of type \f[C]RTC_BUFFER_TYPE_FLAGS\f[] which contains bytes that encode
136-
if the left neighbor segment (\f[C]RTC_CURVE_FLAG_NEIGHBOR_LEFT\f[]
137-
flag) and/or right neighbor segment
138-
(\f[C]RTC_CURVE_FLAG_NEIGHBOR_RIGHT\f[] flags) exist (see
139-
[RTCCurveFlags]).
134+
For the linear basis the user optionally can provide a flags buffer of
135+
type \f[C]RTC_BUFFER_TYPE_FLAGS\f[] which contains bytes that encode if
136+
the left neighbor segment (\f[C]RTC_CURVE_FLAG_NEIGHBOR_LEFT\f[] flag)
137+
and/or right neighbor segment (\f[C]RTC_CURVE_FLAG_NEIGHBOR_RIGHT\f[]
138+
flags) exist (see [RTCCurveFlags]).
139+
If this buffer is not set, than the left/right neighbor bits are
140+
automatically calculated base on the index buffer (left segment exists
141+
if segment(id\-1)+1 == segment(id) and right segment exists if
142+
segment(id+1)\-1 == segment(id)).
140143
.PP
141144
A left neighbor segment is assumed to end at the start vertex of the
142145
current segement, and to start at the previous vertex in the vertex
@@ -236,12 +239,14 @@ In the \f[C]RTC_GEOMETRY_TYPE_ROUND_*\f[] round mode, a real geometric
236239
surface is rendered for the curve, which is more expensive but allows
237240
closeup views.
238241
.PP
239-
For the linear basis the round mode renders an end sphere for a segment
240-
and a cone that tangentially touches that ending sphere (and an
241-
imaginary start sphere).
242-
The geometry clips away parts of the end spheres that lies inside the
243-
neighboring segments, thus the curve interiour will also render properly
244-
as long as only neighboring segments penetrate into a segment.
242+
For the linear basis the round mode renders a cone that tangentially
243+
touches a start\-sphere and end\-sphere.
244+
The start sphere is rendered when no previous segments is indicated by
245+
the neighbor bits.
246+
The end sphere is always rendered but parts that lie inside the next
247+
segment are clipped away (if that next segment exists).
248+
This way a curve is closed on both ends and the interiour will render
249+
properly as long as only neighboring segments penetrate into a segment.
245250
For this to work properly it is important that the flags buffer is
246251
properly populated with neighbor information.
247252
.PP
@@ -280,4 +285,4 @@ On failure \f[C]NULL\f[] is returned and an error code is set that can
280285
be queried using \f[C]rtcGetDeviceError\f[].
281286
.SS SEE ALSO
282287
.PP
283-
[rtcNewGeometry, RTCCurveFlags]
288+
[rtcNewGeometry], [RTCCurveFlags]

man/man3/rtcInitIntersectContext.3embree3

+14-1
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,16 @@ struct\ RTCIntersectContext
2626
{
2727
\ \ enum\ RTCIntersectContextFlags\ flags;
2828
\ \ RTCFilterFunctionN\ filter;
29+
\ \
2930
\ \ #if\ RTC_MAX_INSTANCE_LEVEL_COUNT\ >\ 1
30-
\ \ unsigned\ int\ instStackSize;
31+
\ \ \ \ unsigned\ int\ instStackSize;
3132
\ \ #endif
33+
\ \
3234
\ \ unsigned\ int\ instID[RTC_MAX_INSTANCE_LEVEL_COUNT];
35+
36+
\ \ #if\ RTC_MIN_WIDTH
37+
\ \ \ \ float\ minWidthDistanceFactor;
38+
\ \ #endif
3339
};
3440

3541
void\ rtcInitIntersectContext(
@@ -79,6 +85,13 @@ modifications of the behavior of the query, such as collecting all hits
7985
or accumulating transparencies.
8086
The support for the context filter function must be enabled for a scene
8187
by using the \f[C]RTC_SCENE_FLAG_CONTEXT_FILTER_FUNCTION\f[] scene flag.
88+
In case of instancing this feature has to get enabled also for each
89+
instantiated scene.
90+
.PP
91+
The minWidthDistanceFactor value controls the target size of the curve
92+
radii when the min\-width feature is enabled.
93+
Please see the [rtcSetGeometryMaxRadiusScale] function for more details
94+
on the min\-width feature.
8295
.PP
8396
It is guaranteed that the pointer to the intersection context passed to
8497
a ray query is directly passed to the registered callback functions.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
.\" Automatically generated by Pandoc 1.17.0.3
2+
.\"
3+
.TH "rtcSetGeometryMaxRadiusScale" "3" "" "" "Embree Ray Tracing Kernels 3"
4+
.hy
5+
.SS NAME
6+
.IP
7+
.nf
8+
\f[C]
9+
rtcSetGeometryMaxRadiusScale\ \-\ assigns\ a\ maximal\ curve\ radius\ scale\ factor\ for\ min\-width\ feature
10+
\f[]
11+
.fi
12+
.SS SYNOPSIS
13+
.IP
14+
.nf
15+
\f[C]
16+
#include\ <embree3/rtcore.h>
17+
18+
void\ rtcSetGeometryMaxRadiusScale(RTCGeometry\ geometry,\ float\ maxRadiusScale);
19+
\f[]
20+
.fi
21+
.SS DESCRIPTION
22+
.PP
23+
The \f[C]rtcSetMaxGeometryScale\f[] function specifies a maximal scaling
24+
factor for curve radii used by the min\-width feature.
25+
.PP
26+
The min\-width feature can increase the radius of curves and points, in
27+
order to reduce aliasing and improve render times.
28+
The feature is disabled by default and has to get enabled using the
29+
EMBREE_MIN_WIDTH cmake option.
30+
.PP
31+
To use the feature, one has to specify a maximal curve radius scaling
32+
factor using the [rtcSetGeometryMaxRadiusScale] function.
33+
This factor should be a small number (e.g.
34+
4) as the constructed BVH bounds get increased in order to bound the
35+
curve in the worst case of maximal radii.
36+
.PP
37+
One also has to set the minWidthDistanceFactor in the
38+
RTCIntersectContext when tracing a ray.
39+
This factor controls the target radius size of a curve or point at some
40+
distance away of the ray origin.
41+
.PP
42+
For each control point p with radius r of a curve or point primitive,
43+
the primitive intersectors first calculate a target radius r\[aq] as:
44+
.IP
45+
.nf
46+
\f[C]
47+
r\[aq]\ =\ length(p\-ray_org)\ *\ minWidthDistanceFactor
48+
\f[]
49+
.fi
50+
.PP
51+
Typically the minWidthDistanceFactor is set by the application such that
52+
the target radius projects to the width of half a pixel (thus primitive
53+
diameter is pixel sized).
54+
.PP
55+
The target radius r\[aq] is then clamped against the minimal bound r and
56+
maximal bound maxRadiusScale*r to obtain the final radius r\[aq]\[aq]:
57+
.IP
58+
.nf
59+
\f[C]
60+
r\[aq]\[aq]\ =\ max(r,\ min(r\[aq],\ maxRadiusScale*r))
61+
\f[]
62+
.fi
63+
.PP
64+
Thus curves or points close to the camera are rendered with a normal
65+
radii r, and curves or points far from the camera are not enlarged too
66+
much, as this would be very expensive to render.
67+
.PP
68+
When \f[C]rtcSetGeometryMaxRadiusScale\f[] function is not invoked for a
69+
curve or point geometry (or if the maximal scaling factor is set to
70+
1.0), then the curve or point geometry renders normally, with radii not
71+
modified by the min\-width feature.
72+
.SS EXIT STATUS
73+
.PP
74+
On failure an error code is set that can be queried using
75+
\f[C]rtcGetDeviceError\f[].
76+
.SS SEE ALSO
77+
.PP
78+
[rtcInitIntersectContext]

man/man3/rtcSetSceneFlags.3embree3

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ This mode is typically used for avoiding artifacts caused by rays
4040
shooting through edges of neighboring primitives.
4141
.IP \[bu] 2
4242
\f[C]RTC_SCENE_FLAG_CONTEXT_FILTER_FUNCTION\f[]: Enables support for a
43-
filter function inside the intersection context.
43+
filter function inside the intersection context for this scene.
4444
See Section [rtcInitIntersectContext] for more details.
4545
.PP
4646
Multiple flags can be enabled using an \f[C]or\f[] operation, e.g.

readme.pdf

8.41 KB
Binary file not shown.

0 commit comments

Comments
 (0)