Skip to content

Commit b54e4f4

Browse files
committed
Update documentation
1 parent b1ddfb9 commit b54e4f4

File tree

10 files changed

+1937
-1678
lines changed

10 files changed

+1937
-1678
lines changed

CHANGELOG.md

Lines changed: 56 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,72 @@ Version History
33

44
### Changes in v3.0.0:
55

6+
- Beta support for Intel Xe GPUs (Intel Arc™ GPUs a Intel Data Center
7+
GPU Flex and Max Series), exploiting ray tracing hardware support.
8+
Implementation is based on the [SYCL](https://www.khronos.org/sycl/)
9+
cross-platform programming language implemented by [Intel oneAPI
10+
Data Parallel C++
11+
(DPC++)](https://www.intel.com/content/www/us/en/developer/tools/oneapi/data-parallel-c-plus-plus.html).
12+
Note that the following features are not implemented yet or are not
13+
working correctly on the new `gpu` device:
14+
- Multiple volumes in the scene
15+
- Clipping
16+
- Motion blur
17+
- Subdivision surfaces
18+
- Progress reporting via `ospGetProgress` or canceling the frame via `ospCancel`
19+
- Picking via `ospPick`
20+
- Adaptive accumulation via `OSP_FB_VARIANCE` and `varianceThreshold`
21+
- Framebuffer channels `OSP_FB_ID_*` (id buffers)
22+
- Experimental support for shared device-only data, works only for
23+
`structuredRegular` volume
24+
- Further known issues
25+
- Some delay on start-up or when changing the scene, because
26+
kernel code is JIT compiled and specialized. JIT compilation
27+
can be cached by setting environment variable
28+
`SYCL_CACHE_PERSISTENT=1`, then consecutive starts or
29+
rendering the same scene configuration is without delay
30+
- For some combination of compiler, GPU driver and scene the
31+
rendered images might show artifacts (e.g., vertical lines
32+
or small blocks)
33+
- Multidevice does not support `OSPImageOperation`s for
34+
denoising or tone mapping
635
- Add implicit indexing for `mesh` geometry
36+
- Add support for transferring ownership of temporary buffers:
37+
`ospNewSharedData` accepts an optional deleter callback
38+
- Optimizations for MPI module, supported by new integrated
39+
performance tracing framework
40+
- Optimize `scivis` gradient shading
41+
- Main thread does not set FTZ/DAZ anymore for denormals handling
42+
- Compute intersection epsilon for Mesh to avoid rendering artifacts
43+
due to self-intersection
44+
- Fix energy conservation of Pricipled material under certain
45+
parameter combinations
46+
- Fix `denoiser` to not wipe the alpha channel
47+
- Fix crash in HDRI light
48+
- Fix link order for Debug build on Windows
749
- The new minimum versions of dependencies:
8-
- Embree v4.3.0
9-
- Open VKL v2.0.0
10-
- Open Image Denoise v2.1.0
11-
- ISPC v1.21.1
12-
- rkcommon v1.12.0
50+
- Embree v4.3.0
51+
- Open VKL v2.0.0
52+
- Open Image Denoise v2.1.0
53+
- ISPC v1.21.1
54+
- rkcommon v1.12.0
1355
- Breaking API changes
1456
- Renamed `OSP_TEXTURE_FILTER_BILINEAR` to
1557
`OSP_TEXTURE_FILTER_LINEAR ` and
1658
`OSP_VOLUME_FILTER_TRI[LINEAR|CUBIC]` to
1759
`OSP_VOLUME_FILTER_[LINEAR|CUBIC]`
18-
- Most enums have storage type uint32 now
60+
- Most enums now use storage type `uint32`
1961
- `gridSpacing` of spherical regular volume defaults to full
2062
sphere
2163
- Remove deprecated parameters and API calls
22-
- Add support for transferring ownership of temporary buffers:
23-
`ospNewSharedData` accepts an optional deleter callback
64+
- error callback signatures without user pointer
65+
- first argument of `ospNewMaterial`
66+
- module name `ispc`; use `cpu`
67+
- `volume` texture and `isosurface` geometry: `volumetricModel`; use `OSPVolume volume`
68+
- Transfer function `vec2f valueRange`; use `box1f value`
69+
- `hdri` and `sun-sky` lights: `intensityQuantity` `OSP_INTENSITY_QUANTITY_RADIANCE`
70+
- `spot` light with `intensityDistribution`: `intensityQuantity` other than `OSP_INTENSITY_QUANTITY_SCALE`
71+
2472

2573

2674
### Changes in v2.12.0:

README.md

Lines changed: 799 additions & 688 deletions
Large diffs are not rendered by default.

doc/api.md

Lines changed: 992 additions & 891 deletions
Large diffs are not rendered by default.

doc/compilation.md

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ CMake is easy:
4040
- You should now have `libospray.[so,dylib]` as well as a set of
4141
[example applications].
4242

43-
#### Entitlements on Mac OS\ X
43+
### Entitlements on Mac OS\ X
4444

4545
Mac OS\ X requires notarization of applications as a security mechanism,
4646
and [entitlements must be
@@ -62,9 +62,8 @@ way to configure OSPRay and to create the Visual Studio solution files:
6262
does not exist yet CMake will create it).
6363

6464
- Click "Configure" and select as generator the Visual Studio version
65-
you have (OSPRay needs Visual Studio 15 2017 or newer), for Win64
66-
(32\ bit builds are not supported by OSPRay), e.g., "Visual Studio 15
67-
2017 Win64".
65+
you have; OSPRay needs "Visual Studio 15 2017 Win64" or newer, 32\
66+
bit builds are not supported, e.g., "Visual Studio 17 2022".
6867

6968
- If the configuration fails because some dependencies could not be
7069
found then follow the instructions given in the error message,
@@ -85,7 +84,7 @@ console. In the Visual Studio command prompt type:
8584
cd path\to\ospray
8685
mkdir build
8786
cd build
88-
cmake -G "Visual Studio 15 2017 Win64" [-D VARIABLE=value] ..
87+
cmake -G "Visual Studio 17 2022" [-D VARIABLE=value] ..
8988
cmake --build . --config Release
9089

9190
Use `-D` to set variables for CMake, e.g., the path to Embree with "`-D
@@ -105,7 +104,7 @@ Finding an OSPRay Install with CMake
105104
Client applications using OSPRay can find it with CMake's
106105
`find_package()` command. For example,
107106

108-
find_package(ospray 2.0.0 REQUIRED)
107+
find_package(ospray 3.0.0 REQUIRED)
109108

110109
finds OSPRay via OSPRay's configuration file `osprayConfig.cmake`^[This
111110
file is usually in

doc/getting_ospray.md

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,25 +14,48 @@ need
1414

1515
We recommend the latest version of both TBB and Embree libraries.
1616

17+
GPU Runtime Requirements
18+
------------------------
19+
20+
To run OSPRay on Intel GPUs you will need to first have drivers
21+
installed on your system.
22+
23+
### GPU drivers on Linux
24+
25+
Install the latest GPGPU drivers for your Intel GPU from:
26+
https://dgpu-docs.intel.com/. Follow the driver installation
27+
instructions for your graphics card.
28+
29+
### GPU drivers on Windows
30+
31+
Install the latest GPGPU drivers for your Intel GPU from:
32+
https://www.intel.com/content/www/us/en/download/785597/intel-arc-iris-xe-graphics-windows.html.
33+
Follow the driver installation instructions for your graphics card.
34+
35+
1736
Packages
1837
--------
1938

2039
Packages for x86_64 are provided, OSPRay can be built for ARM64/NEON
2140
using the superbuild (see [Building and Finding OSPRay](#building-and-finding-ospray)).
2241

23-
For Linux we provide OSPRay precompiled for 64\ bit as a TGZ archive.
24-
[ospray-<OSPRAY_VERSION>.x86_64.linux.tar.gz](https://github.com/ospray/OSPRay/releases/download/v<OSPRAY_VERSION>/ospray-<OSPRAY_VERSION>.x86_64.linux.tar.gz)
42+
For Linux we provide OSPRay precompiled for 64\ bit as a TGZ archive.
43+
The "sycl" variant includes the GPU module.
44+
[ospray-<OSPRAY_VERSION>.x86_64.linux.tar.gz](https://github.com/ospray/OSPRay/releases/download/v<OSPRAY_VERSION>/ospray-<OSPRAY_VERSION>.x86_64.linux.tar.gz)
45+
[ospray-<OSPRAY_VERSION>.sycl.x86_64.linux.tar.gz](https://github.com/ospray/OSPRay/releases/download/v<OSPRAY_VERSION>/ospray-<OSPRAY_VERSION>.sycl.x86_64.linux.tar.gz)
2546

2647
For Mac OS\ X we provide OSPRay as a ZIP archive:
2748
[ospray-<OSPRAY_VERSION>.x86_64.macosx.zip](https://github.com/ospray/OSPRay/releases/download/v<OSPRAY_VERSION>/ospray-<OSPRAY_VERSION>.x86_64.macosx.zip)
2849

2950
For Windows we provide OSPRay binaries precompiled for 64\ bit as an MSI
30-
installer as well as a ZIP archive:
51+
installer as well as a ZIP archive. The "sycl" variant includes the GPU module.
3152
[ospray-<OSPRAY_VERSION>.x86_64.windows.msi](https://github.com/ospray/OSPRay/releases/download/v<OSPRAY_VERSION>/ospray-<OSPRAY_VERSION>.x86_64.windows.msi)
32-
[ospray-<OSPRAY_VERSION>.x86_64.windows.zip](https://github.com/ospray/OSPRay/releases/download/v<OSPRAY_VERSION>/ospray-<OSPRAY_VERSION>.x86_64.windows.zip)
53+
[ospray-<OSPRAY_VERSION>.sycl.x86_64.windows.msi](https://github.com/ospray/OSPRay/releases/download/v<OSPRAY_VERSION>/ospray-<OSPRAY_VERSION>.sycl.x86_64.windows.msi)
54+
[ospray-<OSPRAY_VERSION>.x86_64.windows.zip](https://github.com/ospray/OSPRay/releases/download/v<OSPRAY_VERSION>/ospray-<OSPRAY_VERSION>.x86_64.windows.zip)
55+
[ospray-<OSPRAY_VERSION>.sycl.x86_64.windows.zip](https://github.com/ospray/OSPRay/releases/download/v<OSPRAY_VERSION>/ospray-<OSPRAY_VERSION>.sycl.x86_64.windows.zip)
3356

3457
The source code of the latest OSPRay version can be downloaded here:
3558
[ospray-<OSPRAY_VERSION>.zip](https://github.com/ospray/OSPRay/archive/v<OSPRAY_VERSION>.zip)
3659
[ospray-<OSPRAY_VERSION>.tar.gz](https://github.com/ospray/OSPRay/archive/v<OSPRAY_VERSION>.tar.gz)
3760

38-
You can also access [old OSPRay releases](https://github.com/ospray/OSPRay/releases).
61+
You can also access [previous OSPRay releases](https://github.com/ospray/OSPRay/releases).

doc/links.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11

22
[Embree]: https://www.embree.org/
3-
[Intel Embree]: https://www.embree.org/
3+
[Open VKL]: https://www.openvkl.org/
44
[Open Image Denoise]: https://openimagedenoise.github.io/
55
[OSPRayReadme]: https://www.ospray.org/OSPRay_readme.pdf "OSPRay Documentation"
66
[doc/ospray2_porting_guide.md]: https://www.ospray.org/ospray2_porting_guide.html

doc/overview.md

Lines changed: 28 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,48 @@
11
OSPRay Overview
22
===============
33

4-
Intel OSPRay is an **o**pen source, **s**calable, and **p**ortable **ray**
5-
tracing engine for high-performance, high-fidelity visualization on
6-
Intel Architecture CPUs. OSPRay is part of the [Intel oneAPI Rendering
4+
Intel® OSPRay is an **o**pen source, **s**calable, and **p**ortable
5+
**ray** tracing engine for high-performance, high-fidelity visualization
6+
on Intel Architecture CPUs, Intel Xe GPUs, and ARM64 CPUs. OSPRay is part
7+
of the [Intel oneAPI Rendering
78
Toolkit](https://software.intel.com/en-us/rendering-framework) and is
89
released under the permissive [Apache 2.0
910
license](http://www.apache.org/licenses/LICENSE-2.0).
1011

1112
The purpose of OSPRay is to provide an open, powerful, and easy-to-use
1213
rendering library that allows one to easily build applications that use
1314
ray tracing based rendering for interactive applications (including both
14-
surface- and volume-based visualizations). OSPRay is completely
15-
CPU-based, and runs on anything from laptops, to workstations, to
16-
compute nodes in HPC systems.
17-
18-
OSPRay internally builds on top of [Intel Embree] and [Intel ISPC
19-
(Implicit SPMD Program Compiler)](https://ispc.github.io/), and fully
20-
exploits modern instruction sets like Intel SSE4, AVX, AVX2, AVX-512 and NEON
21-
to achieve high rendering performance, thus a CPU with support for at
22-
least SSE4.1 is required to run OSPRay on x86_64 architectures.
23-
A CPU with support for NEON is required to run OSPRay on ARM64 architectures.
15+
surface- and volume-based visualizations). OSPRay runs on anything from
16+
laptops, to workstations, to compute nodes in HPC systems.
17+
18+
OSPRay internally builds on top of Intel [Embree], Intel [Open VKL], and
19+
Intel [Open Image Denoise]. The CPU implementation is based on
20+
Intel [ISPC (Implicit SPMD Program Compiler)](https://ispc.github.io/)
21+
and fully exploits modern instruction sets like Intel SSE4, AVX, AVX2,
22+
AVX-512 and NEON to achieve high rendering performance. Hence, a CPU
23+
with support for at least SSE4.1 is required to run OSPRay on x86_64
24+
architectures, or a CPU with support for NEON is required to run OSPRay
25+
on ARM64 architectures.
26+
27+
OSPRay's GPU implementation (beta status) is based on the
28+
[SYCL](https://www.khronos.org/sycl/) cross-platform programming
29+
language implemented by [Intel oneAPI Data Parallel C++
30+
(DPC++)](https://www.intel.com/content/www/us/en/developer/tools/oneapi/data-parallel-c-plus-plus.html)
31+
and currently supports Intel Arc™ GPUs on Linux and Windows, and Intel
32+
Data Center GPU Flex and Max Series on Linux, exploiting ray tracing
33+
hardware support.
2434

2535

2636
OSPRay Support and Contact
2737
--------------------------
2838

2939
OSPRay is under active development, and though we do our best to
3040
guarantee stable release versions a certain number of bugs,
31-
as-yet-missing features, inconsistencies, or any other issues are
32-
still possible. Should you find any such issues please report
33-
them immediately via [OSPRay's GitHub Issue
34-
Tracker](https://github.com/ospray/OSPRay/issues) (or, if you should
35-
happen to have a fix for it,you can also send us a pull request); for
36-
missing features please contact us via email at
37-
41+
as-yet-missing features, inconsistencies, or any other issues are still
42+
possible. For any such requests or findings please use [OSPRay's GitHub
43+
Issue Tracker](https://github.com/ospray/OSPRay/issues) (or, if you
44+
should happen to have a fix for it, you can also send us a pull
45+
request).
3846

3947
To receive release announcements simply ["Watch" the OSPRay
4048
repository](https://github.com/ospray/OSPRay) on GitHub.

doc/prerequisites.md

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,9 @@ before you can build OSPRay you need the following prerequisites:
4040
- OSPRay also heavily uses Intel [Embree], installing version 4.3.0
4141
or newer is required. If Embree is not found by CMake its location
4242
can be hinted with the variable `embree_DIR`.
43-
- OSPRay support volume rendering (enabled by default via
44-
`OSPRAY_ENABLE_VOLUMES`), which heavily uses Intel [Open
45-
VKL](https://www.openvkl.org/), version 2.0.0 or newer is required.
43+
- OSPRay supports volume rendering (enabled by default via
44+
`OSPRAY_ENABLE_VOLUMES`), which heavily uses Intel [Open VKL],
45+
version 2.0.0 or newer is required.
4646
If Open VKL is not found by CMake its location can be hinted with
4747
the variable `openvkl_DIR`, or disable `OSPRAY_ENABLE_VOLUMES`.
4848
- OSPRay also provides an optional module implementing the `denoiser`
@@ -83,3 +83,22 @@ Under Windows please directly use the appropriate installers for
8383
[ISPC](https://ispc.github.io/downloads.html) (for your Visual Studio
8484
version) and [Embree](https://github.com/embree/embree/releases/).
8585

86+
### Additional Prerequisites for GPU Build {-}
87+
88+
To build OSPRay's GPU module you need
89+
90+
- a SYCL compiler, either the open source [oneAPI DPC++ Compiler
91+
2023-09-22](https://github.com/intel/llvm/releases/tag/nightly-2023-09-22)
92+
or the latest [Intel oneAPI DPC++/C++
93+
Compiler](https://www.intel.com/content/www/us/en/developer/articles/tool/oneapi-standalone-components.html#dpcpp-cpp)
94+
- a recent [CMake](http://www.cmake.org), version 3.25.3 or higher
95+
- the [oneAPI Level Zero Loader
96+
v1.12.0](https://github.com/oneapi-src/level-zero/releases/tag/v1.12.0)
97+
development packages
98+
- On Linux Ubuntu 22.04 there are prebuilt packages available for
99+
this: `level-zero-devel` and `level-zero`
100+
- Other Linux distributions require building these packages from source
101+
- On Windows, you can use the single package
102+
`level-zero_<version>_win-sdk`; note you will need to set the
103+
environment variable `LEVEL_ZERO_ROOT` to the location of the
104+
SDK

doc/tutorials.md

Lines changed: 0 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -82,44 +82,6 @@ OSPRay `world` and objects common in all scenes (for example lighting
8282
and ground plane), which can be conveniently overridden in the derived
8383
builders.
8484

85-
Given below are different scenes listed with their string identifiers:
86-
87-
boxes
88-
: A simple scene with `box` geometry type.
89-
90-
cornell_box
91-
: A scene depicting a classic cornell box with `quad` mesh geometry type
92-
for rendering two cubes and a `quad` light type.
93-
94-
curves
95-
: A simple scene with `curve` geometry type and options to change
96-
`curveBasis`. For details on different basis' please check documentation
97-
of [curves].
98-
99-
gravity_spheres_volume
100-
: A scene with `structuredRegular` type of [volume].
101-
102-
gravity_spheres_isosurface
103-
: A scene depicting iso-surface rendering of `gravity_spheres_volume`
104-
using geometry type `isosurface`.
105-
106-
perlin_noise_volumes
107-
: An example scene with `structuredRegular` volume type depicting perlin
108-
noise.
109-
110-
random_spheres
111-
: A simple scene depicting `sphere` geometry type.
112-
113-
streamlines
114-
: A scene showcasing streamlines geometry derived from `curve` geometry
115-
type.
116-
117-
subdivision_cube
118-
: A scene with a cube of `subdivision` geometry type to showcase
119-
subdivision surfaces.
120-
121-
unstructured_volume
122-
: A simple scene with a volume of `unstructured` volume type.
12385

12486
### Renderer
12587

@@ -136,22 +98,6 @@ to change `turbidity` and `sunDirection`.
13698
![Rendering an evening sky with the `renderSunSky` option.][imgRenderSunSky]
13799

138100

139-
MPI Distributed Tutorials
140-
=========================
141-
142-
The MPI Distributed tutorials demonstrate various ways that distributed
143-
applications using MPI can leverage OSPRay's distributed rendering
144-
capabilities to render distributed, replicated, and partially replicated
145-
data across the processes. The tutorials will be built as part of OSPRay
146-
when running cmake with
147-
148-
cmake \
149-
-DOSPRAY_ENABLE_APPS=ON \
150-
-DOSPRAY_ENABLE_APPS_TUTORIALS=ON \
151-
-DOSPRAY_MODULE_MPI=ON \
152-
-DOSPRAY_MPI_BUILD_TUTORIALS=ON \
153-
<other args>
154-
155101
ospMPIDistribTutorial
156102
---------------------
157103

scripts/superbuild/README.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ cmake [<OSPRAY_SOURCE_DIR>/scripts/superbuild]
1414
cmake --build .
1515
```
1616

17-
On Windows make sure to select the non-default 64bit generator, e.g.
17+
On Windows make sure to select a 64bit generator, e.g.
1818

1919
```sh
20-
cmake -G "Visual Studio 15 2017 Win64" [<OSPRAY_SOURCE_DIR>/scripts/superbuild]
20+
cmake -G "Visual Studio 17 2022" [<OSPRAY_SOURCE_DIR>/scripts/superbuild]
2121
```
2222

2323
The resulting `install` directory (or the one set with
@@ -52,6 +52,10 @@ BUILD_OSPRAY_MODULE_MPI
5252
: set to ON to build OSPRay’s MPI module for data-replicated and
5353
distributed parallel rendering on multiple nodes.
5454

55+
BUILD_GPU_SUPPORT
56+
: enables beta GPU support, fetching the SYCL variants of the
57+
dependencies and builds `OSPRAY_MODULE_GPU`
58+
5559
BUILD_TBB_FROM_SOURCE
5660
: set to ON to build TBB from source (required for ARM support). The
5761
default setting is OFF.

0 commit comments

Comments
 (0)