1
- % Embree: High Performance Ray Tracing Kernels 4.1 .0
1
+ % Embree: High Performance Ray Tracing Kernels 4.2 .0
2
2
% Intel Corporation
3
3
4
4
Intel® Embree Overview
@@ -100,7 +100,7 @@ Windows Installation
100
100
--------------------
101
101
102
102
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
104
104
unpacking this ZIP file, you should set the path to the ` lib ` folder
105
105
manually to your ` PATH ` environment variable for applications to find
106
106
Embree.
@@ -110,13 +110,13 @@ Linux Installation
110
110
------------------
111
111
112
112
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
114
114
this file using ` tar ` and source the provided ` embree-vars.sh ` (if you
115
115
are using the bash shell) or ` embree-vars.csh ` (if you are using the C
116
116
shell) to set up the environment properly:
117
117
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
120
120
121
121
We recommend adding a relative ` RPATH ` to your application that points
122
122
to the location where Embree (and TBB) can be found, e.g. ` $ORIGIN/../lib ` .
@@ -126,12 +126,12 @@ macOS Installation
126
126
------------------
127
127
128
128
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
130
130
this file using ` tar ` and source the provided ` embree-vars.sh ` (if you
131
131
are using the bash shell) or ` embree-vars.csh ` (if you are using the C
132
132
shell) to set up the environment properly:
133
133
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
135
135
136
136
If you want to ship Embree with your application, please use the Embree
137
137
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
156
156
TBB install, in case you do not have TBB installed globally on your system,
157
157
e.g:
158
158
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/ \
160
160
-D TBB_DIR=path_to_tbb_package/lib/cmake/tbb/ \
161
161
..
162
162
@@ -249,6 +249,23 @@ help of the device option in ocloc tool:
249
249
250
250
ocloc compile --help
251
251
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
+
252
269
Compiling Embree
253
270
================
254
271
@@ -486,7 +503,6 @@ Embree is tested using the following compilers under Windows:
486
503
- oneAPI DPC++/C++ Compiler 2023-04-17
487
504
- Visual Studio 2019
488
505
- Visual Studio 2017
489
- - Visual Studio 2015 (Update 1)
490
506
- Intel® Implicit SPMD Program Compiler 1.19.0
491
507
- Intel® Implicit SPMD Program Compiler 1.18.1
492
508
- 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
4920
4936
whether it wants to accept or reject the corresponding hit. To reject a
4921
4937
hit, the filter callback function just has to write ` 0 ` to the integer
4922
4938
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.
4927
4943
4928
4944
When performing ray queries using ` rtcIntersect1 ` , it is guaranteed
4929
4945
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.
4986
5002
Passing ` NULL ` as function pointer disables the registered callback
4987
5003
function.
4988
5004
4989
- The registered intersection filter function is invoked for every hit
5005
+ The registered occlusion filter function is invoked for every hit
4990
5006
encountered during the ` rtcOccluded ` -type ray queries and can accept or
4991
5007
reject that hit. The feature can be used to define a silhouette for a
4992
5008
primitive and reject hits that are outside the silhouette. E.g. a tree
@@ -4997,6 +5013,14 @@ Please see the description of the
4997
5013
` rtcSetGeometryIntersectFilterFunction ` for a description of the filter
4998
5014
callback function.
4999
5015
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
+
5000
5024
#### EXIT STATUS {#exit-status}
5001
5025
5002
5026
On failure an error code is set that can be queried using
@@ -5200,7 +5224,9 @@ previously set with `rtcSetGeometryUserData`. When
5200
5224
` rtcSetGeometryUserData ` was not called yet, ` NULL ` is returned.
5201
5225
5202
5226
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.
5204
5230
5205
5231
#### EXIT STATUS {#exit-status}
5206
5232
@@ -5209,7 +5235,7 @@ On failure an error code is set that can be queried using
5209
5235
5210
5236
#### SEE ALSO {#see-also}
5211
5237
5212
- [ rtcSetGeometryUserData]
5238
+ [ rtcSetGeometryUserData] , [ rtcGetGeometryUserDataFromScene ]
5213
5239
5214
5240
``` {=tex}
5215
5241
@@ -5235,7 +5261,9 @@ pointer previously set with `rtcSetGeometryUserData` from the geometry
5235
5261
with index ` geomID ` from the specified scene ` scene ` . When
5236
5262
` rtcSetGeometryUserData ` was not called yet, ` NULL ` is returned.
5237
5263
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.
5239
5267
5240
5268
#### EXIT STATUS {#exit-status}
5241
5269
@@ -5931,14 +5959,77 @@ Possible formats for the returned matrix are:
5931
5959
out in column-major form as a 4×4 homogeneous matrix with last row
5932
5960
equal to (0, 0, 0, 1).
5933
5961
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
+
5934
5967
#### EXIT STATUS {#exit-status}
5935
5968
5936
5969
On failure an error code is set that can be queried using
5937
5970
` rtcGetDeviceError ` .
5938
5971
5939
5972
#### SEE ALSO {#see-also}
5940
5973
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]
5942
6033
5943
6034
``` {=tex}
5944
6035
0 commit comments