Skip to content

Commit 30329ea

Browse files
committed
updated documentation
1 parent fad92e4 commit 30329ea

11 files changed

+178
-197
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
Version History
22
---------------
33

4+
### New Features in Embree 3.5.0
5+
- Changed normal oriented curve definition to fix waving artefacts.
6+
- Fixed bounding issue for normal oriented motion blurred curves.
7+
- Fixed performance issue with motion blurred point geometry.
8+
- Fixed generation of documentation with new pandoc versions.
9+
410
### New Features in Embree 3.4.0
511
- Added point primitives (spheres, ray-oriented discs, normal-oriented discs).
612
- Fixed crash triggered by scenes with only invalid primitives.

README.md

Lines changed: 129 additions & 144 deletions
Large diffs are not rendered by default.

man/man3/RTC_GEOMETRY_TYPE_CURVE.3embree3

Lines changed: 23 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,10 @@ The curve indices can be specified through an index buffer
7272
(\f[C]RTC_BUFFER_TYPE_INDEX\f[]) and the curve vertices through a vertex
7373
buffer (\f[C]RTC_BUFFER_TYPE_VERTEX\f[]).
7474
For the Hermite basis a tangent buffer
75-
(\f[C]RTC_BUFFER_TYPE_TANGENT\f[]) and for normal oriented curves a
76-
normal buffer (\f[C]RTC_BUFFER_TYPE_NORMAL\f[]) has to get specified
75+
(\f[C]RTC_BUFFER_TYPE_TANGENT\f[]), normal oriented curves a normal
76+
buffer (\f[C]RTC_BUFFER_TYPE_NORMAL\f[]), and for normal oriented
77+
Hermite curves a normal derivative buffer
78+
(\f[C]RTC_BUFFER_TYPE_NORMAL_DERIVATIVE\f[]) has to get specified
7779
additionally.
7880
See \f[C]rtcSetGeometryBuffer\f[] and
7981
\f[C]rtcSetSharedGeometryBuffer\f[] for more details on how to set
@@ -150,55 +152,30 @@ By default the tessellation rate is 4.
150152
.PP
151153
The \f[C]RTC_GEOMETRY_TYPE_NORMAL_ORIENTED_*\f[] mode is a mode designed
152154
to render blades of grass.
153-
In this mode the curve is rendered as a flat band whose center exactly
154-
follows the provided vertex spline, whose half width approximately
155-
follows the provided radius spline, and whose orientation follows the
156-
provided normals.
157-
For normal oriented curves, the indices point to the first of 2
158-
consecutive normals in the normal buffer.
159-
The normal of the constructed curve will match the direction of the
160-
first normal at the beginning, and the direction of the second normal at
161-
the end of the curve.
162-
Please note that this layout of the normal buffer is independent of the
163-
used basis for the curve itself.
164-
For the cubic B\-spline and cubic Hermite basis the stride from the
165-
first control vertex of the first and the next segment is typically 1,
166-
thus the normal buffer is compact and the curves share the normal at the
167-
begin and end.
168-
However, for the cubic Bézier basis, the stride is typically 3, thus
169-
begin and end normal cannot get shared.
170-
We recommend using the Hermite basis instead of the Bézier basis, as it
171-
allows a more compact layout.
155+
In this mode a vertex spline has to get specified as for the previous
156+
modes, but additionally a normal spline is required.
157+
If the Hermite basis is used, the \f[C]RTC_BUFFER_TYPE_NORMAL\f[] and
158+
\f[C]RTC_BUFFER_TYPE_NORMAL_DERIVATIVE\f[] buffers have both to be set.
159+
.PP
160+
The curve is rendered as a flat band whose center approximately follows
161+
the provided vertex spline, whose half width approximately follows the
162+
provided radius spline, and whose normal orientation approximately
163+
follows the provided normal spline.
172164
.PP
173165
To intersect the normal oriented curve, we perform a newton\-raphson
174166
style intersection of a ray with a tensor product surface of a linear
175167
basis (perpendicular to the curve) and cubic Bézier basis (along the
176168
curve).
177-
We construct the 8 control points of this surface in Bézier basis by
178-
calculating a normalized direction \f[C]d01=normalize(v1\-v0,n0)\f[] and
179-
\f[C]d23=normalize(v3\-v2,n1)\f[].
180-
These directions are perpendicular to the tangent direction of the
181-
center curve and first and second specified normal.
182-
The 8 control vertices of the surface are constructed as:
183-
.IP
184-
.nf
185-
\f[C]
186-
\ p00\ =\ v0\-r0*d01,\ p10\ =\ v0+r0*d01
187-
\ p01\ =\ v1\-r1*d01,\ p11\ =\ v1+r1*d01
188-
\ p02\ =\ v2\-r2*d23,\ p12\ =\ v2+r2*d23
189-
\ p03\ =\ v3\-r3*d23,\ p13\ =\ v3+r3*d23
190-
\f[]
191-
.fi
192-
.PP
193-
The center of this curve exactly follows the specified center spline,
194-
the normal at the start (and end) exactly match the fisrst (and second)
195-
specified normal, and the half width exactly matches the evaluated
196-
radius spline at the start (and end).
197-
In\-between the radius and orientation of the curve changes smoothly.
198-
Note that the construction does not work when the provided normals are
199-
parallel to the curve direction, as then no well defined perpendicular
200-
direction \f[C]d01\f[] or \f[C]d23\f[] are defined.
201-
For this reason thus the provided normals should best be kept as
169+
We use a guide curve and its derivatives to construct the control points
170+
of that surface.
171+
The guide curve is defined by a sweep surface defined by sweeping a line
172+
centered at the vertex spline location along the curve.
173+
At each parameter value the half width of the line matches the radius
174+
spline, and the direction matches the cross product of the normal from
175+
the normal spline and tangent of the vertex spline.
176+
Note that this construction does not work when the provided normals are
177+
parallel to the curve direction.
178+
For this reason the provided normals should best be kept as
202179
perpendicular to the curve direction as possible.
203180
.PP
204181
In the \f[C]RTC_GEOMETRY_TYPE_ROUND_*\f[] round mode, a real geometric

man/man3/RTC_GEOMETRY_TYPE_GRID.3embree3

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ The \f[C]RTCGrid\f[] structure describes a 2D grid of vertices (with
5353
respect to the vertex buffer of the grid mesh).
5454
The \f[C]width\f[] and \f[C]height\f[] members specify the number of
5555
vertices in u and v direction, e.g.
56-
setting both \f[C]width\f[] and \f[C]height\f[] to 3 sets up a 3x3
56+
setting both \f[C]width\f[] and \f[C]height\f[] to 3 sets up a 3×3
5757
vertex grid.
5858
The maximum allowed \f[C]width\f[] and \f[C]height\f[] is 32767.
5959
The \f[C]startVertexID\f[] specifies the ID of the top\-left vertex in

man/man3/RTC_GEOMETRY_TYPE_INSTANCE.3embree3

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ RTCGeometry\ geometry\ =
1818
.fi
1919
.SS DESCRIPTION
2020
.PP
21-
Embree supports instancing of scenes using affine transformations (3x3
21+
Embree supports instancing of scenes using affine transformations (3×3
2222
matrix plus translation).
2323
As the instanced scene is stored only a single time, even if instanced
2424
to multiple locations, this feature can be used to create very complex

man/man3/rtcGetDeviceProperty.3embree3

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,10 @@ compiled with \f[C]EMBREE_GEOMETRY_SUBDIVISION\f[] enabled.
107107
curves are supported, which is the case if Embree is compiled with
108108
\f[C]EMBREE_GEOMETRY_CURVE\f[] enabled.
109109
.IP \[bu] 2
110+
\f[C]RTC_DEVICE_PROPERTY_POINT_GEOMETRY_SUPPORTED\f[]: Queries whether
111+
points are supported, which is the case if Embree is compiled with
112+
\f[C]EMBREE_GEOMETRY_POINT\f[] enabled.
113+
.IP \[bu] 2
110114
\f[C]RTC_DEVICE_PROPERTY_USER_GEOMETRY_SUPPORTED\f[]: Queries whether
111115
user geometries are supported, which is the case if Embree is compiled
112116
with \f[C]EMBREE_GEOMETRY_USER\f[] enabled.

man/man3/rtcGetGeometryTransform.3embree3

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ in row\-major form.
3838
out in column\-major form.
3939
.IP \[bu] 2
4040
\f[C]RTC_FORMAT_FLOAT4X4_COLUMN_MAJOR\f[]: The 3×4 float matrix is laid
41-
out in column\-major form as a 4x4 homogeneous matrix with last row
41+
out in column\-major form as a 4×4 homogeneous matrix with last row
4242
equal to (0, 0, 0, 1).
4343
.SS EXIT STATUS
4444
.PP

man/man3/rtcNewGeometry.3embree3

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ enum\ RTCGeometryType
2525
\ RTC_GEOMETRY_TYPE_NORMAL_ORIENTED_BEZIER_CURVE,
2626
\ RTC_GEOMETRY_TYPE_NORMAL_ORIENTED_BSPLINE_CURVE,
2727
\ RTC_GEOMETRY_TYPE_GRID,
28+
\ RTC_GEOMETRY_TYPE_SPHERE_POINT,
29+
\ RTC_GEOMETRY_TYPE_DISC_POINT,
30+
\ RTC_GEOMETRY_TYPE_ORIENTED_DISC_POINT,
2831
\ RTC_GEOMETRY_TYPE_USER,
2932
\ RTC_GEOMETRY_TYPE_INSTANCE
3033
};
@@ -58,7 +61,10 @@ with different bases (\f[C]RTC_GEOMETRY_TYPE_FLAT_LINEAR_CURVE\f[],
5861
\f[C]RTC_GEOMETRY_TYPE_FLAT_BSPLINE_CURVE\f[],
5962
\f[C]RTC_GEOMETRY_TYPE_NORMAL_ORIENTED_BEZIER_CURVE\f[],
6063
\f[C]RTC_GEOMETRY_TYPE_NORMAL_ORIENTED_BSPLINE_CURVE\f[] types), grid
61-
meshes (\f[C]RTC_GEOMETRY_TYPE_GRID\f[]), user\-defined geometries
64+
meshes (\f[C]RTC_GEOMETRY_TYPE_GRID\f[]), point geometries
65+
(\f[C]RTC_GEOMETRY_TYPE_SPHERE_POINT\f[],
66+
\f[C]RTC_GEOMETRY_TYPE_DISC_POINT\f[],
67+
\f[C]RTC_TYPE_ORIENTED_DISC_POINT\f[]), user\-defined geometries
6268
(\f[C]RTC_GEOMETRY_TYPE_USER\f[]), and instances
6369
(\f[C]RTC_GEOMETRY_TYPE_INSTANCE\f[]).
6470
.PP
@@ -119,4 +125,5 @@ be queried using \f[C]rtcDeviceGetError\f[].
119125
[rtcSetSceneBuildQuality], [RTC_GEOMETRY_TYPE_TRIANGLE],
120126
[RTC_GEOMETRY_TYPE_QUAD], [RTC_GEOMETRY_TYPE_SUBDIVISION],
121127
[RTC_GEOMETRY_TYPE_CURVE], [RTC_GEOMETRY_TYPE_GRID],
122-
[RTC_GEOMETRY_TYPE_USER], [RTC_GEOMETRY_TYPE_INSTANCE]
128+
[RTC_GEOMETRY_TYPE_POINT], [RTC_GEOMETRY_TYPE_USER],
129+
[RTC_GEOMETRY_TYPE_INSTANCE]

man/man3/rtcSetGeometryTimeStepCount.3embree3

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ parameter) of the specified geometry (\f[C]geometry\f[] parameter).
2727
.PP
2828
For triangle meshes (\f[C]RTC_GEOMETRY_TYPE_TRIANGLE\f[]), quad meshes
2929
(\f[C]RTC_GEOMETRY_TYPE_QUAD\f[]), curves
30-
(\f[C]RTC_GEOMETRY_TYPE_CURVE\f[]), and subdivision geometries
30+
(\f[C]RTC_GEOMETRY_TYPE_CURVE\f[]), points
31+
(\f[C]RTC_GEOMETRY_TYPE_POINT\f[]), and subdivision geometries
3132
(\f[C]RTC_GEOMETRY_TYPE_SUBDIVISION\f[]), the number of time steps
3233
directly corresponds to the number of vertex buffer slots available
3334
(\f[C]RTC_BUFFER_TYPE_VERTEX\f[] buffer type).

man/man3/rtcSetGeometryVertexAttributeCount.3embree3

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ the specified geometry (\f[C]geometry\f[] parameter).
2929
This function is supported only for triangle meshes
3030
(\f[C]RTC_GEOMETRY_TYPE_TRIANGLE\f[]), quad meshes
3131
(\f[C]RTC_GEOMETRY_TYPE_QUAD\f[]), curves
32-
(\f[C]RTC_GEOMETRY_TYPE_CURVE\f[]), and subdivision geometries
32+
(\f[C]RTC_GEOMETRY_TYPE_CURVE\f[]), points
33+
(\f[C]RTC_GEOMETRY_TYPE_POINT\f[]), and subdivision geometries
3334
(\f[C]RTC_GEOMETRY_TYPE_SUBDIVISION\f[]).
3435
.SS EXIT STATUS
3536
.PP

0 commit comments

Comments
 (0)