Skip to content

Commit 58ac8e3

Browse files
authored
Do/release (#2597)
* fix release test package build * fix embree version for windows integration tests * fix cmake presets trailing comma * test fix for windows integration tests * embree docs run tests * update docs
1 parent c5d4f15 commit 58ac8e3

12 files changed

+167
-31
lines changed

.github/workflows/release.yml

+3-2
Original file line numberDiff line numberDiff line change
@@ -184,8 +184,9 @@ jobs:
184184
runs-on: '[ "Linux", "docker", "dg2" ]'
185185
project: embree
186186
env-from-files: ./.github/workflows/dpcpp-none.env ./.github/workflows/gfx-ubuntu22-release.env
187+
artifact-in: release-linux-x64-Release-ICX2023_1_0-ISPC1_19_0-TBB2021_9_0-PACKAGE-ZIP
187188
artifact-out: release-testing-PACKAGE-ZIP
188189
artifact-path: ./build/*.tar.gz
189190
cmd: |
190-
rm embree-?.?.?.x86_64.linux.tar.gz
191-
mv embree-4.1.0.x86_64.linux-testing.tar.gz embree-4.1.0-testing.tar.gz
191+
rm build/embree-4.2.0.x86_64.linux.tar.gz
192+
mv build/embree-4.2.0.x86_64.linux-testing.tar.gz build/embree-4.2.0-testing.tar.gz

CHANGELOG.md

+8
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
11
Version History
22
---------------
33

4+
### Embree 4.2.0
5+
- SYCL version of Embree with GPU support is no longer in beta phase.
6+
- Improved BVH build performance on many core machines for applications that oversubscribe threads.
7+
- Added rtcGetGeometryTransformFromScene API function that can get used inside SYCL kernels.
8+
- No longer linking to ze_loader in SYCL mode to avoid Intel(R) oneAPI Level Zero dependency
9+
for CPU rendering.
10+
- Releasing test package to test Embree.
11+
412
### Embree 4.1.0
513
- Added support for Intel® Data Center GPU Max Series.
614
- Added ARM64 Linux support.

README.md

+109-18
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
% Embree: High Performance Ray Tracing Kernels 4.1.0
1+
% Embree: High Performance Ray Tracing Kernels 4.2.0
22
% Intel Corporation
33

44
Intel® Embree Overview
@@ -100,7 +100,7 @@ Windows Installation
100100
--------------------
101101

102102
Embree linked against Visual Studio 2015 are provided as a ZIP file
103-
[embree-4.1.0.x64.vc14.windows.zip](https://github.com/embree/embree/releases/download/v4.1.0/embree-4.1.0.x64.vc14.windows.zip). After
103+
[embree-4.2.0.x64.vc14.windows.zip](https://github.com/embree/embree/releases/download/v4.2.0/embree-4.2.0.x64.vc14.windows.zip). After
104104
unpacking this ZIP file, you should set the path to the `lib` folder
105105
manually to your `PATH` environment variable for applications to find
106106
Embree.
@@ -110,13 +110,13 @@ Linux Installation
110110
------------------
111111

112112
The Linux version of Embree is also delivered as a `tar.gz` file:
113-
[embree-4.1.0.x86_64.linux.tar.gz](https://github.com/embree/embree/releases/download/v4.1.0/embree-4.1.0.x86_64.linux.tar.gz). Unpack
113+
[embree-4.2.0.x86_64.linux.tar.gz](https://github.com/embree/embree/releases/download/v4.2.0/embree-4.2.0.x86_64.linux.tar.gz). Unpack
114114
this file using `tar` and source the provided `embree-vars.sh` (if you
115115
are using the bash shell) or `embree-vars.csh` (if you are using the C
116116
shell) to set up the environment properly:
117117

118-
tar xzf embree-4.1.0.x86_64.linux.tar.gz
119-
source embree-4.1.0.x86_64.linux/embree-vars.sh
118+
tar xzf embree-4.2.0.x86_64.linux.tar.gz
119+
source embree-4.2.0.x86_64.linux/embree-vars.sh
120120

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

128128
The macOS version of Embree is also delivered as a ZIP file:
129-
[embree-4.1.0.x86_64.macosx.zip](https://github.com/embree/embree/releases/download/v4.1.0/embree-4.1.0.x86_64.macosx.zip). Unpack
129+
[embree-4.2.0.x86_64.macosx.zip](https://github.com/embree/embree/releases/download/v4.2.0/embree-4.2.0.x86_64.macosx.zip). Unpack
130130
this file using `tar` and source the provided `embree-vars.sh` (if you
131131
are using the bash shell) or `embree-vars.csh` (if you are using the C
132132
shell) to set up the environment properly:
133133

134-
unzip embree-4.1.0.x64.macosx.zip source embree-4.1.0.x64.macosx/embree-vars.sh
134+
unzip embree-4.2.0.x64.macosx.zip source embree-4.2.0.x64.macosx/embree-vars.sh
135135

136136
If you want to ship Embree with your application, please use the Embree
137137
library of the provided ZIP file. The library name of that Embree
@@ -156,7 +156,7 @@ set the `TBB_DIR` variable to the path containing `TBB-config.cmake` of a local
156156
TBB install, in case you do not have TBB installed globally on your system,
157157
e.g:
158158

159-
cmake -D embree_DIR=path_to_embree_package/lib/cmake/embree-4.1.0/ \
159+
cmake -D embree_DIR=path_to_embree_package/lib/cmake/embree-4.2.0/ \
160160
-D TBB_DIR=path_to_tbb_package/lib/cmake/tbb/ \
161161
..
162162

@@ -249,6 +249,23 @@ help of the device option in ocloc tool:
249249

250250
ocloc compile --help
251251

252+
253+
Building Embree Tests
254+
---------------------
255+
256+
Embree is released with a bundle of tests in an optional testing package.
257+
To run these tests extract the testing package in the same folder as your embree installation.
258+
e.g.:
259+
260+
tar -xzf embree-4.2.0-testing.zip -C /path/to/installed/embree
261+
262+
The tests are extracted into a new folder inside you embree installation and can be run with:
263+
264+
cd /path/to/installed/embree/testing
265+
cmake -B build
266+
cmake --build build target=tests
267+
268+
252269
Compiling Embree
253270
================
254271

@@ -486,7 +503,6 @@ Embree is tested using the following compilers under Windows:
486503
- oneAPI DPC++/C++ Compiler 2023-04-17
487504
- Visual Studio 2019
488505
- Visual Studio 2017
489-
- Visual Studio 2015 (Update 1)
490506
- Intel® Implicit SPMD Program Compiler 1.19.0
491507
- Intel® Implicit SPMD Program Compiler 1.18.1
492508
- Intel® Implicit SPMD Program Compiler 1.17.0
@@ -4920,10 +4936,10 @@ The filter callback function has the task to check for each valid ray
49204936
whether it wants to accept or reject the corresponding hit. To reject a
49214937
hit, the filter callback function just has to write `0` to the integer
49224938
valid mask of the corresponding ray. To accept the hit, it just has to
4923-
leave the valid mask set to `-1`. The filter function is further
4924-
allowed to change the hit and decrease the `tfar` value of the ray but
4925-
it should not modify other ray data nor any inactive components of the
4926-
ray or hit.
4939+
leave the valid mask set to `-1`. When accepting a hit, the filter
4940+
function is further allowed to change the hit and decrease the `tfar`
4941+
value of the ray but it should not modify other ray data nor any
4942+
inactive components of the ray or hit.
49274943

49284944
When performing ray queries using `rtcIntersect1`, it is guaranteed
49294945
that the packet size is 1 when the callback is invoked. When performing
@@ -4986,7 +5002,7 @@ further invocations overwrite the previously set callback function.
49865002
Passing `NULL` as function pointer disables the registered callback
49875003
function.
49885004

4989-
The registered intersection filter function is invoked for every hit
5005+
The registered occlusion filter function is invoked for every hit
49905006
encountered during the `rtcOccluded`-type ray queries and can accept or
49915007
reject that hit. The feature can be used to define a silhouette for a
49925008
primitive and reject hits that are outside the silhouette. E.g. a tree
@@ -4997,6 +5013,14 @@ Please see the description of the
49975013
`rtcSetGeometryIntersectFilterFunction` for a description of the filter
49985014
callback function.
49995015

5016+
The `rtcOccluded`-type functions terminate traversal when a hit got
5017+
committed. As filter functions can only set the `tfar` distance of the
5018+
ray for a committed hit, the occlusion filter cannot influence the
5019+
`tfar` value of subsequent traversal, as that directly ends. For that
5020+
reason `rtcOccluded` and occlusion filters cannot get used to gather
5021+
the next n-hits, and `rtcIntersect` and intersection filters should get
5022+
used instead.
5023+
50005024
#### EXIT STATUS {#exit-status}
50015025

50025026
On failure an error code is set that can be queried using
@@ -5200,7 +5224,9 @@ previously set with `rtcSetGeometryUserData`. When
52005224
`rtcSetGeometryUserData` was not called yet, `NULL` is returned.
52015225

52025226
This function is supposed to be used during rendering, but only
5203-
supported on the CPU and in SYCL on the GPU.
5227+
supported on the CPU and not inside SYCL kernels on the GPU. Inside a
5228+
SYCL kernel the `rtcGetGeometryUserDataFromScene` function has to get
5229+
used.
52045230

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

@@ -5209,7 +5235,7 @@ On failure an error code is set that can be queried using
52095235

52105236
#### SEE ALSO {#see-also}
52115237

5212-
[rtcSetGeometryUserData]
5238+
[rtcSetGeometryUserData], [rtcGetGeometryUserDataFromScene]
52135239

52145240
```{=tex}
52155241
@@ -5235,7 +5261,9 @@ pointer previously set with `rtcSetGeometryUserData` from the geometry
52355261
with index `geomID` from the specified scene `scene`. When
52365262
`rtcSetGeometryUserData` was not called yet, `NULL` is returned.
52375263

5238-
This function is supposed to be used during rendering.
5264+
In contrast to the `rtcGetGeometryUserData` function, the
5265+
`rtcGetGeometryUserDataFromScene` function an get used during rendering
5266+
inside a SYCL kernel.
52395267

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

@@ -5931,14 +5959,77 @@ Possible formats for the returned matrix are:
59315959
out in column-major form as a 4×4 homogeneous matrix with last row
59325960
equal to (0, 0, 0, 1).
59335961

5962+
This function is supposed to be used during rendering, but only
5963+
supported on the CPU and not inside SYCL kernels on the GPU. Inside a
5964+
SYCL kernel the `rtcGetGeometryTransformFromScene` function has to get
5965+
used.
5966+
59345967
#### EXIT STATUS {#exit-status}
59355968

59365969
On failure an error code is set that can be queried using
59375970
`rtcGetDeviceError`.
59385971

59395972
#### SEE ALSO {#see-also}
59405973

5941-
[RTC\_GEOMETRY\_TYPE\_INSTANCE], [rtcSetGeometryTransform]
5974+
[RTC\_GEOMETRY\_TYPE\_INSTANCE], [rtcSetGeometryTransform],
5975+
[rtcGetGeometryTransformFromScene]
5976+
5977+
```{=tex}
5978+
5979+
```
5980+
rtcGetGeometryTransformFromScene
5981+
--------------------------------
5982+
5983+
#### NAME {#name}
5984+
5985+
rtcGetGeometryTransformFromScene - returns the interpolated instance
5986+
transformation for the specified time
5987+
5988+
#### SYNOPSIS {#synopsis}
5989+
5990+
#include <embree4/rtcore.h>
5991+
5992+
void rtcGetGeometryTransformFromScene(
5993+
RTCScene scene,
5994+
unsigned int geomID,
5995+
float time,
5996+
enum RTCFormat format,
5997+
void* xfm
5998+
);
5999+
6000+
#### DESCRIPTION {#description}
6001+
6002+
The `rtcGetGeometryTransformFromScene` function returns the
6003+
interpolated local to world transformation (`xfm` output parameter) of
6004+
an instance geometry specified by its geometry ID (`geomID` parameter)
6005+
of a scene (`scene` parameter) for a particular time (`time` parameter
6006+
in range $[0,1]$) in the specified format (`format` parameter).
6007+
6008+
Possible formats for the returned matrix are:
6009+
6010+
- `RTC_FORMAT_FLOAT3X4_ROW_MAJOR`: The 3×4 float matrix is laid out
6011+
in row-major form.
6012+
6013+
- `RTC_FORMAT_FLOAT3X4_COLUMN_MAJOR`: The 3×4 float matrix is laid
6014+
out in column-major form.
6015+
6016+
- `RTC_FORMAT_FLOAT4X4_COLUMN_MAJOR`: The 3×4 float matrix is laid
6017+
out in column-major form as a 4×4 homogeneous matrix with last row
6018+
equal to (0, 0, 0, 1).
6019+
6020+
In contrast to the `rtcGetGeometryTransform` function, the
6021+
`rtcGetGeometryTransformFromScene` function can get used during
6022+
rendering inside a SYCL kernel.
6023+
6024+
#### EXIT STATUS {#exit-status}
6025+
6026+
On failure an error code is set that can be queried using
6027+
`rtcGetDeviceError`.
6028+
6029+
#### SEE ALSO {#see-also}
6030+
6031+
[RTC\_GEOMETRY\_TYPE\_INSTANCE], [rtcSetGeometryTransform],
6032+
[rtcGetGeometryTransform]
59426033

59436034
```{=tex}
59446035

doc/src/install.md

+17
Original file line numberDiff line numberDiff line change
@@ -155,3 +155,20 @@ help of the device option in ocloc tool:
155155

156156
ocloc compile --help
157157

158+
159+
Building Embree Tests
160+
---------------------
161+
162+
Embree is released with a bundle of tests in an optional testing package.
163+
To run these tests extract the testing package in the same folder as your embree installation.
164+
e.g.:
165+
166+
tar -xzf embree-<EMBREE_VERSION>-testing.zip -C /path/to/installed/embree
167+
168+
The tests are extracted into a new folder inside you embree installation and can be run with:
169+
170+
cd /path/to/installed/embree/testing
171+
cmake -B build
172+
cmake --build build target=tests
173+
174+

man/man3/rtcGetGeometryTransform.4embree4

+7-1
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,16 @@ laid out in column-major form.
4343
\f[C]RTC_FORMAT_FLOAT4X4_COLUMN_MAJOR\f[R]: The 3\[tmu]4 float matrix is
4444
laid out in column-major form as a 4\[tmu]4 homogeneous matrix with last
4545
row equal to (0, 0, 0, 1).
46+
.PP
47+
This function is supposed to be used during rendering, but only
48+
supported on the CPU and not inside SYCL kernels on the GPU.
49+
Inside a SYCL kernel the \f[C]rtcGetGeometryTransformFromScene\f[R]
50+
function has to get used.
4651
.SS EXIT STATUS
4752
.PP
4853
On failure an error code is set that can be queried using
4954
\f[C]rtcGetDeviceError\f[R].
5055
.SS SEE ALSO
5156
.PP
52-
[RTC_GEOMETRY_TYPE_INSTANCE], [rtcSetGeometryTransform]
57+
[RTC_GEOMETRY_TYPE_INSTANCE], [rtcSetGeometryTransform],
58+
[rtcGetGeometryTransformFromScene]

man/man3/rtcGetGeometryUserData.4embree4

+4-2
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,13 @@ When \f[C]rtcSetGeometryUserData\f[R] was not called yet, \f[C]NULL\f[R]
2727
is returned.
2828
.PP
2929
This function is supposed to be used during rendering, but only
30-
supported on the CPU and in SYCL on the GPU.
30+
supported on the CPU and not inside SYCL kernels on the GPU.
31+
Inside a SYCL kernel the \f[C]rtcGetGeometryUserDataFromScene\f[R]
32+
function has to get used.
3133
.SS EXIT STATUS
3234
.PP
3335
On failure an error code is set that can be queried using
3436
\f[C]rtcGetDeviceError\f[R].
3537
.SS SEE ALSO
3638
.PP
37-
[rtcSetGeometryUserData]
39+
[rtcSetGeometryUserData], [rtcGetGeometryUserDataFromScene]

man/man3/rtcGetGeometryUserDataFromScene.4embree4

+3-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,9 @@ the geometry with index \f[C]geomID\f[R] from the specified scene
2828
When \f[C]rtcSetGeometryUserData\f[R] was not called yet, \f[C]NULL\f[R]
2929
is returned.
3030
.PP
31-
This function is supposed to be used during rendering.
31+
In contrast to the \f[C]rtcGetGeometryUserData\f[R] function, the
32+
\f[C]rtcGetGeometryUserDataFromScene\f[R] function an get used during
33+
rendering inside a SYCL kernel.
3234
.SS EXIT STATUS
3335
.PP
3436
On failure an error code is set that can be queried using

man/man3/rtcSetGeometryIntersectFilterFunction.4embree4

+3-3
Original file line numberDiff line numberDiff line change
@@ -88,9 +88,9 @@ To reject a hit, the filter callback function just has to write
8888
\f[C]0\f[R] to the integer valid mask of the corresponding ray.
8989
To accept the hit, it just has to leave the valid mask set to
9090
\f[C]-1\f[R].
91-
The filter function is further allowed to change the hit and decrease
92-
the \f[C]tfar\f[R] value of the ray but it should not modify other ray
93-
data nor any inactive components of the ray or hit.
91+
When accepting a hit, the filter function is further allowed to change
92+
the hit and decrease the \f[C]tfar\f[R] value of the ray but it should
93+
not modify other ray data nor any inactive components of the ray or hit.
9494
.IP
9595
.nf
9696
\f[C]

man/man3/rtcSetGeometryOccludedFilterFunction.4embree4

+10-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ further invocations overwrite the previously set callback function.
3333
Passing \f[C]NULL\f[R] as function pointer disables the registered
3434
callback function.
3535
.PP
36-
The registered intersection filter function is invoked for every hit
36+
The registered occlusion filter function is invoked for every hit
3737
encountered during the \f[C]rtcOccluded\f[R]-type ray queries and can
3838
accept or reject that hit.
3939
The feature can be used to define a silhouette for a primitive and
@@ -45,6 +45,15 @@ hit points lie inside or outside the leaf.
4545
Please see the description of the
4646
\f[C]rtcSetGeometryIntersectFilterFunction\f[R] for a description of the
4747
filter callback function.
48+
.PP
49+
The \f[C]rtcOccluded\f[R]-type functions terminate traversal when a hit
50+
got committed.
51+
As filter functions can only set the \f[C]tfar\f[R] distance of the ray
52+
for a committed hit, the occlusion filter cannot influence the
53+
\f[C]tfar\f[R] value of subsequent traversal, as that directly ends.
54+
For that reason \f[C]rtcOccluded\f[R] and occlusion filters cannot get
55+
used to gather the next n-hits, and \f[C]rtcIntersect\f[R] and
56+
intersection filters should get used instead.
4857
.SS EXIT STATUS
4958
.PP
5059
On failure an error code is set that can be queried using

readme.pdf

4.74 KB
Binary file not shown.

tests/integration/test_embree_release/unpack-windows.bat

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
REM Copyright 2019-2021 Intel Corporation
22
REM SPDX-License-Identifier: Apache-2.0
33

4-
set EMBREE_VERSION=4.1.0
4+
set EMBREE_VERSION=4.2.0
55

66
copy build\embree-%EMBREE_VERSION%.x64.windows-embree.zip tests\integration\test_embree_release\embree.zip /Y
77
cd tests/integration/test_embree_release

tutorials/README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ the Embree and TBB installation on your system.
4242
-D CMAKE_CXX_COMPILER=clang++
4343
-D CMAKE_C_COMPILER=clang
4444
-D CMAKE_BUILD_TYPE=Release
45-
-D embree_DIR=%cd%\..\..\..\lib\cmake\embree-4.1.0\
45+
-D embree_DIR=%cd%\..\..\..\lib\cmake\embree-4.2.0\
4646
-D TBB_DIR=path_to_tbb\oneapi-tbb-2021.2.0\lib\cmake\tbb ..
4747

4848
Now you can build the tutorial:
@@ -91,7 +91,7 @@ the Embree and TBB installation on your system.
9191
cmake -D CMAKE_BUILD_TYPE=Release \
9292
-D CMAKE_CXX_COMPILER=clang++ \
9393
-D CMAKE_C_COMPILER=clang \
94-
-D embree_DIR=`pwd`/../../../lib/cmake/embree-4.1.0/ \
94+
-D embree_DIR=`pwd`/../../../lib/cmake/embree-4.2.0/ \
9595
-D TBB_DIR=path_to_tbb/oneapi-tbb-2021.2.0/lib/cmake/tbb/ ..
9696

9797
Now you can build the tutorial:

0 commit comments

Comments
 (0)