Skip to content

Commit

Permalink
updated doc
Browse files Browse the repository at this point in the history
  • Loading branch information
cbenthin committed May 6, 2021
1 parent 9baf008 commit 0d656ba
Show file tree
Hide file tree
Showing 115 changed files with 2,774 additions and 2,799 deletions.
7 changes: 6 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
Version History
---------------

### Embree 3.12.3
### Embree 3.13.0
- Added support for Apple M1 CPUs.
- RTC_SUBDIVISION_MODE_NO_BOUNDARY now works properly for non-manifold edges.
- CMake target 'uninstall' is not defined if it already exists.
- Embree no longer reads the .embree3 config files, thus all configuration has
to get passed through the config string to rtcNewDevice.
- Releases upgrade to TBB 2021.2.0 and ISPC 1.15.0
- TBB dll is automatically copied into build folder after build on windows.

### Embree 3.12.2
- Fixed wrong uv and Ng for grid intersector in robust mode for AVX.
Expand Down
79 changes: 33 additions & 46 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
% Embree: High Performance Ray Tracing Kernels 3.12.2
% Embree: High Performance Ray Tracing Kernels 3.13.0-alpha.0
% Intel Corporation

Embree Overview
Expand Down Expand Up @@ -48,18 +48,17 @@ Supported Platforms
-------------------

Embree supports Windows (32-bit and 64-bit), Linux (64-bit), and macOS
(64-bit). The code compiles with the Intel® Compiler, GCC, Clang,
and the Microsoft Compiler.
(64-bit) both x86 and Apple M1 based. The code compiles with the Intel®
Compiler, GCC, Clang, and the Microsoft Compiler.

Using the Intel® Compiler improves performance by approximately
10%. Performance also varies across different operating
systems, with Linux typically performing best as it supports
transparently transitioning to 2MB pages.

Embree is optimized for Intel CPUs supporting SSE, AVX, AVX2, and
AVX-512 instructions, and requires at least a CPU with support for
SSE2.

AVX-512 instructions. Embree requires at least an x86 CPU with support for
SSE2 or an Apple M1 CPU.
Embree Support and Contact
--------------------------

Expand All @@ -80,7 +79,7 @@ Windows MSI Installer
---------------------

You can install the Embree library using the Windows MSI installer
[embree-3.12.2-x64.vc14.msi](https://github.com/embree/embree/releases/download/v3.12.2/embree-3.12.2.x64.vc14.msi). This
[embree-3.13.0-alpha.0-x64.vc14.msi](https://github.com/embree/embree/releases/download/v3.13.0-alpha.0/embree-3.13.0-alpha.0.x64.vc14.msi). This
will install the 64-bit Embree version by default in `Program
Files\Intel\Embree3`.

Expand All @@ -95,13 +94,13 @@ Files\Intel\Embree3`.
To uninstall Embree, open `Programs and Features` by clicking the
`Start button`, clicking `Control Panel`, clicking `Programs`, and
then clicking `Programs and Features`. Select `Embree
3.12.2 x64` and uninstall it.
3.13.0-alpha.0 x64` and uninstall it.

Windows ZIP File
-----------------

Embree linked against Visual Studio 2015 are provided as a ZIP file
[embree-3.12.2.x64.vc14.windows.zip](https://github.com/embree/embree/releases/download/v3.12.2/embree-3.12.2.x64.vc14.windows.zip). After
[embree-3.13.0-alpha.0.x64.vc14.windows.zip](https://github.com/embree/embree/releases/download/v3.13.0-alpha.0/embree-3.13.0-alpha.0.x64.vc14.windows.zip). After
unpacking this ZIP file, you should set the path to the `lib` folder
manually to your `PATH` environment variable for applications to find
Embree. To compile applications with Embree, you also have to set the
Expand All @@ -115,13 +114,13 @@ Linux tar.gz Files
------------------

The Linux version of Embree is also delivered as a `tar.gz` file:
[embree-3.12.2.x86_64.linux.tar.gz](https://github.com/embree/embree/releases/download/v3.12.2/embree-3.12.2.x86_64.linux.tar.gz). Unpack
[embree-3.13.0-alpha.0.x86_64.linux.tar.gz](https://github.com/embree/embree/releases/download/v3.13.0-alpha.0/embree-3.13.0-alpha.0.x86_64.linux.tar.gz). Unpack
this file using `tar` and source the provided `embree-vars.sh` (if you
are using the bash shell) or `embree-vars.csh` (if you are using the C
shell) to set up the environment properly:

tar xzf embree-3.12.2.x86_64.linux.tar.gz
source embree-3.12.2.x86_64.linux/embree-vars.sh
tar xzf embree-3.13.0-alpha.0.x86_64.linux.tar.gz
source embree-3.13.0-alpha.0.x86_64.linux/embree-vars.sh

If you want to ship Embree with your application, best use the Embree
version provided in the `tar.gz` file.
Expand All @@ -134,7 +133,7 @@ macOS PKG Installer

To install the Embree library on your macOS system use the
provided package installer inside
[embree-3.12.2.x86_64.pkg](https://github.com/embree/embree/releases/download/v3.12.2/embree-3.12.2.x86_64.pkg). This
[embree-3.13.0-alpha.0.x86_64.pkg](https://github.com/embree/embree/releases/download/v3.13.0-alpha.0/embree-3.13.0-alpha.0.x86_64.pkg). This
will install Embree by default into `/opt/local/lib` and
`/opt/local/include` directories. The Embree tutorials are installed
into the `/Applications/Embree3` directory.
Expand All @@ -156,13 +155,13 @@ macOS ZIP file
-----------------

The macOS version of Embree is also delivered as a ZIP file:
[embree-3.12.2.x86_64.macosx.zip](https://github.com/embree/embree/releases/download/v3.12.2/embree-3.12.2.x86_64.macosx.zip). Unpack
[embree-3.13.0-alpha.0.x86_64.macosx.zip](https://github.com/embree/embree/releases/download/v3.13.0-alpha.0/embree-3.13.0-alpha.0.x86_64.macosx.zip). Unpack
this file using `tar` and source the provided `embree-vars.sh` (if you
are using the bash shell) or `embree-vars.csh` (if you are using the C
shell) to set up the environment properly:

unzip embree-3.12.2.x64.macosx.zip
source embree-3.12.2.x64.macosx/embree-vars.sh
unzip embree-3.13.0-alpha.0.x64.macosx.zip
source embree-3.13.0-alpha.0.x64.macosx/embree-vars.sh

If you want to ship Embree with your application, please use the Embree
library of the provided ZIP file. The library name of that Embree
Expand Down Expand Up @@ -198,12 +197,16 @@ Linux
- GCC 7.3.1 (Fedora 26) AVX2 support
- GCC 6.4.1 (Fedora 25) AVX2 support

macOS
macOS x86

- Intel® Compiler 2020 Update 1
- Intel® Compiler 2019 Update 4
- Apple LLVM 10.0.1 (macOS 10.14.6)

macOS M1

- Apple Clang 12.0.0

Embree supports using the Intel® Threading Building Blocks (TBB) as the
tasking system. For performance and flexibility reasons we recommend
to use Embree with the Intel® Threading Building Blocks (TBB) and best
Expand Down Expand Up @@ -1099,19 +1102,6 @@ A configuration string (`config` argument) can be passed to the device
construction. This configuration string can be `NULL` to use the
default configuration.

When creating the device, Embree reads configurations for the device
from the following locations in order:

1) `config` string passed to the `rtcNewDevice` function
2) `.embree3` file in the application folder
3) `.embree3` file in the home folder

Settings performed later overwrite previous settings. This way the
configuration for the application can be changed globally (either
through the `rtcNewDevice` call or through the `.embree3` file in the
application folder), and each user has the option to modify the
configuration to fit their needs.

The following configuration is supported:

- `threads=[int]`: Specifies a number of build threads to use. A
Expand Down Expand Up @@ -1150,9 +1140,6 @@ The following configuration is supported:
is ignored on other platforms. See Section [Huge Page Support]
for more details.

- `ignore_config_files=[0/1]`: When set to 1, configuration files are
ignored. Default is 0.

- `verbose=[0,1,2,3]`: Sets the verbosity of the output. When set to
0, no output is printed by Embree, when set to a higher level more
output is printed. By default Embree does not print anything on the
Expand Down Expand Up @@ -3865,8 +3852,8 @@ longer required.

Sharing buffers can significantly reduce the memory required by the
application, thus we recommend using this feature. When enabling the
`RTC_SCENE_COMPACT` scene flag, the spatial index structures index into
the vertex buffer, resulting in even higher memory savings.
`RTC_SCENE_FLAG_COMPACT` scene flag, the spatial index structures index
into the vertex buffer, resulting in even higher memory savings.

#### EXIT STATUS {#exit-status}

Expand Down Expand Up @@ -5976,8 +5963,8 @@ and `tfar` members). The ray direction does not have to be normalized,
and only the parameter range specified by the `tnear`/`tfar` interval
is considered valid.

The ray segment must be in the range $[0, ]$, thus ranges that start
behind the ray origin are not allowed, but ranges can reach to
The ray segment must be in the range $[0, \infty]$, thus ranges that
start behind the ray origin are not allowed, but ranges can reach to
infinity. For rays inside a ray stream, `tfar` \< `tnear` identifies an
inactive ray.

Expand Down Expand Up @@ -6366,9 +6353,9 @@ scene contains motion blur geometries, also the ray time (`time` ray
member) must be initialized to a value in the range $[0, 1]$. If ray
masks are enabled at compile time, the ray mask (`mask` ray member)
must be initialized as well. The ray segment has to be in the range
$[0, ]$, thus ranges that start behind the ray origin are not valid,
but ranges can reach to infinity. See Section [RTCRay] for the ray
layout description.
$[0, \infty]$, thus ranges that start behind the ray origin are not
valid, but ranges can reach to infinity. See Section [RTCRay] for the
ray layout description.

The geometry ID (`geomID` hit member) of the hit data must be
initialized to `RTC_INVALID_GEOMETRY_ID` (-1).
Expand Down Expand Up @@ -6456,9 +6443,9 @@ the scene contains motion blur geometries, also the ray time (`time`
ray member) must be initialized to a value in the range $[0, 1]$. If
ray masks are enabled at compile time, the ray mask (`mask` ray member)
must be initialized as well. The ray segment must be in the range
$[0, ]$, thus ranges that start behind the ray origin are not valid,
but ranges can reach to infinity. See Section [RTCRay] for the ray
layout description.
$[0, \infty]$, thus ranges that start behind the ray origin are not
valid, but ranges can reach to infinity. See Section [RTCRay] for the
ray layout description.

When no intersection is found, the ray data is not updated. In case a
hit was found, the `tfar` component of the ray is set to `-inf`.
Expand Down Expand Up @@ -7258,8 +7245,8 @@ object (`query` argument) and calls a user defined callback function
argument) that intersects the query domain.

The user has to initialize the query location (`x`, `y` and `z` member)
and query radius in the range $[0, ]$. If the scene contains motion
blur geometries, also the query time (`time` member) must be
and query radius in the range $[0, \infty]$. If the scene contains
motion blur geometries, also the query time (`time` member) must be
initialized to a value in the range $[0, 1]$.

Further, a `RTCPointQueryContext` (`context` argument) must be created
Expand Down Expand Up @@ -7734,7 +7721,7 @@ $quaternion_r + quaternion_i  \mathbf{i} + quaternion_j  \mathbf{i} + quaterni
where $\mathbf{i}$, $\mathbf{j}$ $\mathbf{k}$ are the imaginary
quaternion units. The passed quaternion will be normalized internally.

\noindent The affine transformation matrix corresponding to a
The affine transformation matrix corresponding to a
`RTCQuaternionDecomposition` is $TRS$ and a point
$p = (p_x, p_y, p_z, 1)^T$ will be transformed as
$$p' = T  R  S  p.$$
Expand Down
74 changes: 37 additions & 37 deletions man/man3/RTCBufferType.3embree3
Original file line number Diff line number Diff line change
@@ -1,74 +1,74 @@
.\" Automatically generated by Pandoc 1.17.0.3
.\" Automatically generated by Pandoc 2.5
.\"
.TH "RTCBufferType" "3" "" "" "Embree Ray Tracing Kernels 3"
.hy
.SS NAME
.IP
.nf
\f[C]
RTCFormat\ \-\ specifies\ format\ of\ data\ in\ buffers
\f[]
RTCFormat \- specifies format of data in buffers
\f[R]
.fi
.SS SYNOPSIS
.IP
.nf
\f[C]
#include\ <embree3/rtcore_ray.h>
#include <embree3/rtcore_ray.h>

enum\ RTCBufferType
enum RTCBufferType
{
\ \ RTC_BUFFER_TYPE_INDEX\ \ \ \ \ \ \ \ \ \ \ \ =\ 0,
\ \ RTC_BUFFER_TYPE_VERTEX\ \ \ \ \ \ \ \ \ \ \ =\ 1,
\ \ RTC_BUFFER_TYPE_VERTEX_ATTRIBUTE\ =\ 2,
\ \ RTC_BUFFER_TYPE_NORMAL\ \ \ \ \ \ \ \ \ \ \ =\ 3,
\ \ RTC_BUFFER_TYPE_TANGENT\ \ \ \ \ \ \ \ \ \ =\ 4,
\ \ RTC_BUFFER_TYPE_NORMAL_DERIVATIVE\ =\ 5,
RTC_BUFFER_TYPE_INDEX = 0,
RTC_BUFFER_TYPE_VERTEX = 1,
RTC_BUFFER_TYPE_VERTEX_ATTRIBUTE = 2,
RTC_BUFFER_TYPE_NORMAL = 3,
RTC_BUFFER_TYPE_TANGENT = 4,
RTC_BUFFER_TYPE_NORMAL_DERIVATIVE = 5,

\ \ RTC_BUFFER_TYPE_GRID\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ 8,
RTC_BUFFER_TYPE_GRID = 8,

\ \ RTC_BUFFER_TYPE_FACE\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ 16,
\ \ RTC_BUFFER_TYPE_LEVEL\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ 17,
\ \ RTC_BUFFER_TYPE_EDGE_CREASE_INDEX\ \ \ \ =\ 18,
\ \ RTC_BUFFER_TYPE_EDGE_CREASE_WEIGHT\ \ \ =\ 19,
\ \ RTC_BUFFER_TYPE_VERTEX_CREASE_INDEX\ \ =\ 20,
\ \ RTC_BUFFER_TYPE_VERTEX_CREASE_WEIGHT\ =\ 21,
\ \ RTC_BUFFER_TYPE_HOLE\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ 22,
RTC_BUFFER_TYPE_FACE = 16,
RTC_BUFFER_TYPE_LEVEL = 17,
RTC_BUFFER_TYPE_EDGE_CREASE_INDEX = 18,
RTC_BUFFER_TYPE_EDGE_CREASE_WEIGHT = 19,
RTC_BUFFER_TYPE_VERTEX_CREASE_INDEX = 20,
RTC_BUFFER_TYPE_VERTEX_CREASE_WEIGHT = 21,
RTC_BUFFER_TYPE_HOLE = 22,

\ \ RTC_BUFFER_TYPE_FLAGS\ =\ 32
RTC_BUFFER_TYPE_FLAGS = 32
};
\f[]
\f[R]
.fi
.SS DESCRIPTION
.PP
The \f[C]RTBufferType\f[] structure defines slots to assign data buffers
to using the [rtcSetGeometryBuffer], [rtcSetSharedGeometryBuffer], and
[rtcSetNewGeometryBuffer] API calls.
The \f[C]RTBufferType\f[R] structure defines slots to assign data
buffers to using the [rtcSetGeometryBuffer],
[rtcSetSharedGeometryBuffer], and [rtcSetNewGeometryBuffer] API calls.
.PP
For most geometry types the \f[C]RTC_BUFFER_TYPE_INDEX\f[] slot is used
to assign an index buffer, while the \f[C]RTC_BUFFER_TYPE_VERTEX\f[] is
For most geometry types the \f[C]RTC_BUFFER_TYPE_INDEX\f[R] slot is used
to assign an index buffer, while the \f[C]RTC_BUFFER_TYPE_VERTEX\f[R] is
used to assign the corresponding vertex buffer.
.PP
The \f[C]RTC_BUFFER_TYPE_VERTEX_ATTRIBUTE\f[] slot can get used to
The \f[C]RTC_BUFFER_TYPE_VERTEX_ATTRIBUTE\f[R] slot can get used to
assign arbitrary additional vertex data which can get interpolated using
the [rtcInterpolate] API call.
.PP
The \f[C]RTC_BUFFER_TYPE_NORMAL\f[], \f[C]RTC_BUFFER_TYPE_TANGENT\f[],
and \f[C]RTC_BUFFER_TYPE_NORMAL_DERIVATIVE\f[] are special buffers
The \f[C]RTC_BUFFER_TYPE_NORMAL\f[R], \f[C]RTC_BUFFER_TYPE_TANGENT\f[R],
and \f[C]RTC_BUFFER_TYPE_NORMAL_DERIVATIVE\f[R] are special buffers
required to assign per vertex normals, tangents, and normal derivatives
for some curve types.
.PP
The \f[C]RTC_BUFFER_TYPE_GRID\f[] buffer is used to assign the grid
The \f[C]RTC_BUFFER_TYPE_GRID\f[R] buffer is used to assign the grid
primitive buffer for grid geometries (see [RTC_GEOMETRY_TYPE_GRID]).
.PP
The \f[C]RTC_BUFFER_TYPE_FACE\f[], \f[C]RTC_BUFFER_TYPE_LEVEL\f[],
\f[C]RTC_BUFFER_TYPE_EDGE_CREASE_INDEX\f[],
\f[C]RTC_BUFFER_TYPE_EDGE_CREASE_WEIGHT\f[],
\f[C]RTC_BUFFER_TYPE_VERTEX_CREASE_INDEX\f[],
\f[C]RTC_BUFFER_TYPE_VERTEX_CREASE_WEIGHT\f[], and
\f[C]RTC_BUFFER_TYPE_HOLE\f[] are special buffers required to create
The \f[C]RTC_BUFFER_TYPE_FACE\f[R], \f[C]RTC_BUFFER_TYPE_LEVEL\f[R],
\f[C]RTC_BUFFER_TYPE_EDGE_CREASE_INDEX\f[R],
\f[C]RTC_BUFFER_TYPE_EDGE_CREASE_WEIGHT\f[R],
\f[C]RTC_BUFFER_TYPE_VERTEX_CREASE_INDEX\f[R],
\f[C]RTC_BUFFER_TYPE_VERTEX_CREASE_WEIGHT\f[R], and
\f[C]RTC_BUFFER_TYPE_HOLE\f[R] are special buffers required to create
subdivision meshes (see [RTC_GEOMETRY_TYPE_SUBDIVISION]).
.PP
The \f[C]RTC_BUFFER_TYPE_FLAGS\f[] can get used to add additional flag
The \f[C]RTC_BUFFER_TYPE_FLAGS\f[R] can get used to add additional flag
per primitive of a geometry, and is currently only used for linear
curves.
.SS EXIT STATUS
Expand Down
10 changes: 5 additions & 5 deletions man/man3/RTCCurveFlags.3embree3
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
.\" Automatically generated by Pandoc 1.17.0.3
.\" Automatically generated by Pandoc 2.5
.\"
.TH "RTCCurveFlags" "3" "" "" "Embree Ray Tracing Kernels 3"
.hy
.SS NAME
.IP
.nf
\f[C]
RTCCurveFlags\ \-\ per\ segment\ flags\ for\ curve\ geometry
\f[]
RTCCurveFlags \- per segment flags for curve geometry
\f[R]
.fi
.SS SYNOPSIS
.IP
.nf
\f[C]
#include\ <embree3/rtcore.h>
\f[]
#include <embree3/rtcore.h>
\f[R]
.fi
.PP
enum RTCCurveFlags { RTC_CURVE_FLAG_NEIGHBOR_LEFT = (1 << 0),
Expand Down
Loading

0 comments on commit 0d656ba

Please sign in to comment.