Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 15 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,21 @@
Version History
---------------

### Embree 4.4
### Embree 4.4.1

- Added specialization constants for curves, motion blur, and motion blurred instances to reduce code complexity.
- Enabled AVX512 support with MSVC compiler.
- Fixed numerous potential uninitialized variables, integer over/underflows, and out-of-bounds accesses.
- Fixed bounds checking for buffer stride and grid dimensions.
- Fixed rare hang in rtcNewDevice when using single thread mode (start_threads=1).
- Fixed morton builder for instance arrays.
- Improved compiler warning handling for C++26, GCC, and ARM builds.
- Improved AVX512 flag consistency between GCC and Clang.
- Updated TinyEXR dependency to fix resource leaks.
- Reduced memory copies and improved move semantics usage.
- Bumped CMake minimum required version to 3.10.

### Embree 4.4.0

- Added support for passing geometry data to Embree using explicit host and SYCL device memory (see `rtcSetSharedGeometryBufferHostDevice`, `rtcNewBufferHostDevice`, and other API calls with `HostDevice` suffix).
- Embree does not use SYCL shared memory anymore internally on systems without host unified memory (i.e., discrete GPUs). Therefore, memory transfers are triggered by specific Embree API calls (e.g. `rtcCommitScene`, `rtcCommitBuffer`).
Expand Down
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ CMAKE_MINIMUM_REQUIRED(VERSION 3.10)

SET(EMBREE_VERSION_MAJOR 4)
SET(EMBREE_VERSION_MINOR 4)
SET(EMBREE_VERSION_PATCH 0)
SET(EMBREE_VERSION_PATCH 1)
SET(EMBREE_VERSION_NOTE "")

SET(EMBREE_VERSION ${EMBREE_VERSION_MAJOR}.${EMBREE_VERSION_MINOR}.${EMBREE_VERSION_PATCH})
Expand Down
22 changes: 11 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
% Embree: High Performance Ray Tracing Kernels 4.4.0
% Embree: High Performance Ray Tracing Kernels 4.4.1
% Intel Corporation

Intel® Embree Overview
Expand Down Expand Up @@ -100,7 +100,7 @@ Windows Installation
--------------------

A pre-built version of Embree for Windows is provided as a ZIP archive
[embree-4.4.0.x64.windows.zip](https://github.com/embree/embree/releases/download/v4.4.0/embree-4.4.0.x64.windows.zip). After
[embree-4.4.1.x64.windows.zip](https://github.com/embree/embree/releases/download/v4.4.1/embree-4.4.1.x64.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.
Expand All @@ -110,13 +110,13 @@ Linux Installation
------------------

A pre-built version of Embree for Linux is provided as a `tar.gz` archive:
[embree-4.4.0.x86_64.linux.tar.gz](https://github.com/embree/embree/releases/download/v4.4.0/embree-4.4.0.x86_64.linux.tar.gz). Unpack
[embree-4.4.1.x86_64.linux.tar.gz](https://github.com/embree/embree/releases/download/v4.4.1/embree-4.4.1.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-4.4.0.x86_64.linux.tar.gz
source embree-4.4.0.x86_64.linux/embree-vars.sh
tar xzf embree-4.4.1.x86_64.linux.tar.gz
source embree-4.4.1.x86_64.linux/embree-vars.sh

We recommend adding a relative `RPATH` to your application that points
to the location where Embree (and TBB) can be found, e.g. `$ORIGIN/../lib`.
Expand All @@ -126,12 +126,12 @@ macOS Installation
------------------

The macOS version of Embree is also delivered as a ZIP file:
[embree-4.4.0.x86_64.macosx.zip](https://github.com/embree/embree/releases/download/v4.4.0/embree-4.4.0.x86_64.macosx.zip). Unpack
[embree-4.4.1.x86_64.macosx.zip](https://github.com/embree/embree/releases/download/v4.4.1/embree-4.4.1.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-4.4.0.x64.macosx.zip source embree-4.4.0.x64.macosx/embree-vars.sh
unzip embree-4.4.1.x64.macosx.zip source embree-4.4.1.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 All @@ -156,7 +156,7 @@ set the `TBB_DIR` variable to the path containing `TBB-config.cmake` of a local
TBB install, in case you do not have TBB installed globally on your system,
e.g:

cmake -D embree_DIR=path_to_embree_package/lib/cmake/embree-4.4.0/ \
cmake -D embree_DIR=path_to_embree_package/lib/cmake/embree-4.4.1/ \
-D TBB_DIR=path_to_tbb_package/lib/cmake/tbb/ \
..

Expand Down Expand Up @@ -257,7 +257,7 @@ Embree is released with a bundle of tests in an optional testing package.
To run these tests extract the testing package in the same folder as your embree installation.
e.g.:

tar -xzf embree-4.4.0-testing.zip -C /path/to/installed/embree
tar -xzf embree-4.4.1-testing.zip -C /path/to/installed/embree

The tests are extracted into a new folder inside you embree installation and can be run with:

Expand Down Expand Up @@ -314,7 +314,7 @@ installation, put the path to `ispc` permanently into your `PATH` environment
variable or you set the `EMBREE_ISPC_EXECUTABLE` variable to point at the ISPC
executable during CMake configuration.

You additionally have to install CMake 3.1.0 or higher and the developer
You additionally have to install CMake 3.10 or higher and the developer
version of [GLFW](https://www.glfw.org/) version 3.

Under macOS, all these dependencies can be installed
Expand Down Expand Up @@ -480,7 +480,7 @@ Windows

Embree is tested using the following compilers under Windows:

- Intel® oneAPI DPC++/C++ Compiler 2024.2
- Intel® oneAPI DPC++/C++ Compiler 2025.2
- oneAPI DPC++/C++ Compiler 6.2.0
- Visual Studio 2022
- Visual Studio 2019
Expand Down
16 changes: 15 additions & 1 deletion doc/src/changelog.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,21 @@
Version History
---------------

### Embree 4.4
### Embree 4.4.1

- Added specialization constants for curves, motion blur, and motion blurred instances to reduce code complexity.
- Enabled AVX512 support with MSVC compiler.
- Fixed numerous potential uninitialized variables, integer over/underflows, and out-of-bounds accesses.
- Fixed bounds checking for buffer stride and grid dimensions.
- Fixed rare hang in rtcNewDevice when using single thread mode (start_threads=1).
- Fixed morton builder for instance arrays.
- Improved compiler warning handling for C++26, GCC, and ARM builds.
- Improved AVX512 flag consistency between GCC and Clang.
- Updated TinyEXR dependency to fix resource leaks.
- Reduced memory copies and improved move semantics usage.
- Bumped CMake minimum required version to 3.10.

### Embree 4.4.0

- Added support for passing geometry data to Embree using explicit host and SYCL device memory (see `rtcSetSharedGeometryBufferHostDevice`, `rtcNewBufferHostDevice`, and other API calls with `HostDevice` suffix).
- Embree does not use SYCL shared memory anymore internally on systems without host unified memory (i.e., discrete GPUs). Therefore, memory transfers are triggered by specific Embree API calls (e.g. `rtcCommitScene`, `rtcCommitBuffer`).
Expand Down
67 changes: 24 additions & 43 deletions man/man3/RTCBufferType.3embree4
Original file line number Diff line number Diff line change
@@ -1,32 +1,14 @@
.\" Automatically generated by Pandoc 3.1.3
.\" Automatically generated by Pandoc 3.1.11.1
.\"
.\" Define V font for inline verbatim, using C font in formats
.\" that render this, and otherwise B font.
.ie "\f[CB]x\f[]"x" \{\
. ftr V B
. ftr VI BI
. ftr VB B
. ftr VBI BI
.\}
.el \{\
. ftr V CR
. ftr VI CI
. ftr VB CB
. ftr VBI CBI
.\}
.TH "RTCBufferType" "3" "" "" "Embree Ray Tracing Kernels 4"
.hy
.SS NAME
.IP
.nf
\f[C]
RTCFormat - specifies format of data in buffers
\f[R]
.fi
.EX
RTCFormat \- specifies format of data in buffers
.EE
.SS SYNOPSIS
.IP
.nf
\f[C]
.EX
#include <embree4/rtcore_ray.h>

enum RTCBufferType
Expand All @@ -52,47 +34,46 @@ enum RTCBufferType

RTC_BUFFER_TYPE_FLAGS = 32
};
\f[R]
.fi
.EE
.SS DESCRIPTION
.PP
The \f[V]RTBufferType\f[R] structure defines slots to assign data
The \f[CR]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[V]RTC_BUFFER_TYPE_INDEX\f[R] slot is used
to assign an index buffer, while the \f[V]RTC_BUFFER_TYPE_VERTEX\f[R] is
used to assign the corresponding vertex buffer.
For most geometry types the \f[CR]RTC_BUFFER_TYPE_INDEX\f[R] slot is
used to assign an index buffer, while the
\f[CR]RTC_BUFFER_TYPE_VERTEX\f[R] is used to assign the corresponding
vertex buffer.
.PP
The \f[V]RTC_BUFFER_TYPE_VERTEX_ATTRIBUTE\f[R] slot can get used to
The \f[CR]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[V]RTC_BUFFER_TYPE_NORMAL\f[R], \f[V]RTC_BUFFER_TYPE_TANGENT\f[R],
and \f[V]RTC_BUFFER_TYPE_NORMAL_DERIVATIVE\f[R] are special buffers
The \f[CR]RTC_BUFFER_TYPE_NORMAL\f[R],
\f[CR]RTC_BUFFER_TYPE_TANGENT\f[R], and
\f[CR]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[V]RTC_BUFFER_TYPE_GRID\f[R] buffer is used to assign the grid
The \f[CR]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[V]RTC_BUFFER_TYPE_FACE\f[R], \f[V]RTC_BUFFER_TYPE_LEVEL\f[R],
\f[V]RTC_BUFFER_TYPE_EDGE_CREASE_INDEX\f[R],
\f[V]RTC_BUFFER_TYPE_EDGE_CREASE_WEIGHT\f[R],
\f[V]RTC_BUFFER_TYPE_VERTEX_CREASE_INDEX\f[R],
\f[V]RTC_BUFFER_TYPE_VERTEX_CREASE_WEIGHT\f[R], and
\f[V]RTC_BUFFER_TYPE_HOLE\f[R] are special buffers required to create
The \f[CR]RTC_BUFFER_TYPE_FACE\f[R], \f[CR]RTC_BUFFER_TYPE_LEVEL\f[R],
\f[CR]RTC_BUFFER_TYPE_EDGE_CREASE_INDEX\f[R],
\f[CR]RTC_BUFFER_TYPE_EDGE_CREASE_WEIGHT\f[R],
\f[CR]RTC_BUFFER_TYPE_VERTEX_CREASE_INDEX\f[R],
\f[CR]RTC_BUFFER_TYPE_VERTEX_CREASE_WEIGHT\f[R], and
\f[CR]RTC_BUFFER_TYPE_HOLE\f[R] are special buffers required to create
subdivision meshes (see [RTC_GEOMETRY_TYPE_SUBDIVISION]).
.PP
The \f[V]RTC_BUFFER_TYPE_TRANSFORM\f[R] buffer is used to provide
The \f[CR]RTC_BUFFER_TYPE_TRANSFORM\f[R] buffer is used to provide
instance transformation information for instance array geometries (see
[RTC_GEOMETRY_TYPE_INSTANCE_ARRAY]).
.PP
The \f[V]RTC_BUFFER_TYPE_FLAGS\f[R] can get used to add additional flag
The \f[CR]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
.SS SEE ALSO
.PP
[rtcSetGeometryBuffer], [rtcSetSharedGeometryBuffer],
[rtcSetNewGeometryBuffer]
33 changes: 6 additions & 27 deletions man/man3/RTCCurveFlags.3embree4
Original file line number Diff line number Diff line change
@@ -1,43 +1,23 @@
.\" Automatically generated by Pandoc 3.1.3
.\" Automatically generated by Pandoc 3.1.11.1
.\"
.\" Define V font for inline verbatim, using C font in formats
.\" that render this, and otherwise B font.
.ie "\f[CB]x\f[]"x" \{\
. ftr V B
. ftr VI BI
. ftr VB B
. ftr VBI BI
.\}
.el \{\
. ftr V CR
. ftr VI CI
. ftr VB CB
. ftr VBI CBI
.\}
.TH "RTCCurveFlags" "3" "" "" "Embree Ray Tracing Kernels 4"
.hy
.SS NAME
.IP
.nf
\f[C]
RTCCurveFlags - per segment flags for curve geometry
\f[R]
.fi
.EX
RTCCurveFlags \- per segment flags for curve geometry
.EE
.SS SYNOPSIS
.IP
.nf
\f[C]
.EX
#include <embree4/rtcore.h>

enum RTCCurveFlags
{
RTC_CURVE_FLAG_NEIGHBOR_LEFT = (1 << 0),
RTC_CURVE_FLAG_NEIGHBOR_RIGHT = (1 << 1)
};
\f[R]
.fi
.EE
.SS DESCRIPTION
.PP
The RTCCurveFlags type is used for linear curves to determine if the
left and/or right neighbor segment exist.
Therefore one attaches a buffer of type RTC_BUFFER_TYPE_FLAGS to the
Expand All @@ -58,5 +38,4 @@ rendering at the ending of these curves may not look correct, in
particular when round linear curves are viewed from the inside.
.SS EXIT STATUS
.SS SEE ALSO
.PP
[RTC_GEOMETRY_TYPE_CURVE]
Loading