Include documentation sources
binary files (fonts, images) currently need to be linked
This commit is contained in:
@@ -18,6 +18,7 @@ tbb
|
||||
embree
|
||||
ispc
|
||||
ospray-doc
|
||||
readme.pdf
|
||||
!/modules
|
||||
/modules/*
|
||||
!/modules/mpi
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
# generated files&folders
|
||||
changelog.md
|
||||
www
|
||||
tmp
|
||||
__pycache__
|
||||
+148
@@ -0,0 +1,148 @@
|
||||
webpages := $(addprefix www/, $(addsuffix .html, index news demos documentation gallery downloads related_projects pvospray displaywall fiu_comparison legal))
|
||||
process_version := $(addprefix tmp/, $(addsuffix .md, demos getting_ospray readme_head))
|
||||
tmptexfiles := $(addprefix tmp/, $(addsuffix .tex, overview changelog compilation api mpi examples))
|
||||
images_jpg := $(addprefix images/, $(addsuffix .jpg, exampleViewer $(addprefix camera_, perspective architectual stereo orthographic panoramic) $(addprefix material_, OBJ Metal Alloy Glass ThinGlass MetallicPaint Luminous) ColoredWindow rm_volume_ao_shadows rm_volume heptane_bubbly_osp mag_pt rm_volume2 dns_small code GLuRayPage))
|
||||
images_png := $(addprefix images/, $(addsuffix .png, diffuse_rooms normalmap_frustum tutorial_accumulatedframe tutorial_firstframe))
|
||||
|
||||
images := $(images_jpg) $(images_png)
|
||||
images_fig := spot_light quad_light hdri_light
|
||||
images_fig2pdf := $(addprefix tmp/, $(addsuffix .pdf, $(images_fig)))
|
||||
images_fig2png := $(addprefix images/, $(addsuffix .png, $(images_fig)))
|
||||
webimages := $(addprefix www/, $(images)) $(images_fig2png)
|
||||
|
||||
PANDOC := pandoc
|
||||
PDMINVERSION := 1190200
|
||||
PDOK := $(shell expr `$(PANDOC) --version|head -n 1|cut -d' ' -f 2| sed -e 's/\.\([0-9][0-9]\)/\1/g' -e 's/\.\([0-9]\)/0\1/g' -e 's/^[0-9]\{3,4\}$$/&00/' -e 's/^[0-9]\{5,6\}$$/&00/'` \>= $(PDMINVERSION))
|
||||
ifneq "$(PDOK)" "1"
|
||||
$(error You need at least pandoc v1.19.2)
|
||||
endif
|
||||
|
||||
all: www doc pdf
|
||||
www: $(webpages) www/stylesheet.css $(webimages)
|
||||
doc: ../README.md
|
||||
pdf: ../readme.pdf
|
||||
|
||||
.PHONY: all www doc pdf images
|
||||
|
||||
|
||||
tmp/version: ../cmake/ospray_options.cmake $(wildcard ../.git/HEAD)
|
||||
sed -n $< -e "s/^SET(OSPRAY_VERSION_MAJOR \([0-9]\+\))/\1./ip" | tr -d '\n' > $@
|
||||
sed -n $< -e "s/^SET(OSPRAY_VERSION_MINOR \([0-9]\+\))/\1./ip" | tr -d '\n' >> $@
|
||||
sed -n $< -e "s/^SET(OSPRAY_VERSION_PATCH \([0-9]\+\))/\1/ip" | tr -d '\n' >> $@
|
||||
if [[ -d ../.git && "`git rev-parse --abbrev-ref HEAD`" == "devel" ]] ; then echo " (devel)"; else echo; fi >> $@
|
||||
|
||||
replace_version = sed -e "s/<OSPRAY_VERSION>/`cat tmp/version`/g" $< > $@
|
||||
|
||||
tmp/%.md: %.md tmp/version
|
||||
$(replace_version)
|
||||
|
||||
tmp/images_web.md: images.md
|
||||
sed -e "s/\.fig/.png/" -e "s@: @: https://ospray.github.io/images/@" $< > $@
|
||||
|
||||
tmp/images_local_png.md: images.md
|
||||
sed -e "s@: @: images/@" -e "s/\.fig/.png/" $< > $@
|
||||
|
||||
tmp/images_local_pdf.md: images.md
|
||||
sed -e "s@: @: images/@" -e "s@images/\(.*\)\.fig@tmp/\1.pdf@" $< > $@
|
||||
|
||||
changelog.md:
|
||||
ln -s ../CHANGELOG.md $@
|
||||
|
||||
|
||||
### directories
|
||||
########################################################################
|
||||
$(webpages) www/stylesheet.css: | wwwdir
|
||||
wwwdir:
|
||||
@mkdir -p www
|
||||
|
||||
$(webimages): | wwwimgdir
|
||||
wwwimgdir:
|
||||
@mkdir -p www/images
|
||||
|
||||
$(process_version) tmp/version ../readme.pdf $(tmptexfiles) tmp/api.md tmp/api_html.md tmp/images_web.md tmp/images_local_pdf.md tmp/images_local_png.md: | tmpdir
|
||||
tmpdir:
|
||||
@mkdir -p tmp
|
||||
|
||||
|
||||
### webpages
|
||||
########################################################################
|
||||
|
||||
markdown2web = $(PANDOC) -smart --email-obfuscation=none -f markdown $(filter-out webtemplate.html,$+) --template webtemplate -V select_$(basename $(@F)) -o $@
|
||||
|
||||
$(webpages): links_web.md tmp/images_local_png.md webtemplate.html
|
||||
|
||||
www/%.html:
|
||||
$(markdown2web)
|
||||
|
||||
www/stylesheet.css: stylesheet.css
|
||||
cp $< $@
|
||||
|
||||
tmp/api_html.md: api.md links_local.md tmp/images_local_png.md
|
||||
$(PANDOC) $+ --indented-code-classes=cpp -t markdown-fenced_code_attributes -o $@
|
||||
|
||||
www/index.html: teaser.html overview.md changelog.md
|
||||
www/news.html: news.md
|
||||
www/demos.html: tmp/demos.md
|
||||
www/gallery.html: gallery.md
|
||||
www/downloads.html: tmp/getting_ospray.md compilation.md
|
||||
www/related_projects.html: related_projects.md
|
||||
www/pvospray.html: pvospray.md
|
||||
www/displaywall.html: displaywall.md
|
||||
www/fiu_comparison.html: fiu_comparison.md
|
||||
www/legal.html: legal.md
|
||||
www/documentation.html: documentation.md tmp/api_html.md mpi.md examples.md scenegraph.md
|
||||
|
||||
|
||||
### images
|
||||
########################################################################
|
||||
|
||||
www/images/%: images/%
|
||||
cp $< $@
|
||||
|
||||
www/images/%.png: %.fig
|
||||
fig2dev -L png -S 4 $+ $@
|
||||
|
||||
tmp/%.pdf: %.fig
|
||||
fig2dev -L pdf $+ $@
|
||||
|
||||
|
||||
### markdown
|
||||
########################################################################
|
||||
|
||||
convert_nbsp_width = sed -e 's@\\ @ @g' -e 's/" style="width:/" width="/g'
|
||||
|
||||
tmp/api.md: api.md links_local.md tmp/images_web.md
|
||||
$(PANDOC) $+ --indented-code-classes=cpp -t markdown-fenced_code_attributes -o $@
|
||||
|
||||
../README.md: tmp/readme_head.md overview.md compilation.md documentation.md tmp/api.md mpi.md examples.md links_local.md tmp/images_web.md
|
||||
$(PANDOC) $+ -t markdown+pipe_tables-simple_tables-multiline_tables-grid_tables-link_attributes | $(convert_nbsp_width) > $@
|
||||
|
||||
### pdf
|
||||
########################################################################
|
||||
|
||||
markdown2tex = $(PANDOC) --columns=72 --top-level-division=chapter --filter $+ -o $@
|
||||
|
||||
tmp/%.tex: filter-latex.py %.md links_local.md tmp/images_local_pdf.md
|
||||
$(markdown2tex)
|
||||
|
||||
tmp/api.tex: filter-latex.py api.md links_local.md tmp/images_local_pdf.md
|
||||
$(markdown2tex) --indented-code-classes=cpp
|
||||
|
||||
../readme.pdf: readme.tex $(tmptexfiles) $(wildcard intel-spec.cls) preamble.tex tmp/version $(images) $(images_fig2pdf)
|
||||
md5s=0;\
|
||||
auxf="tmp/`basename $< tex`aux";\
|
||||
newmd5s=`md5sum $$auxf 2> /dev/null`;\
|
||||
until [[ $$md5s == $$newmd5s ]]; do \
|
||||
md5s=$$newmd5s;\
|
||||
xelatex -output-directory=tmp $<;\
|
||||
newmd5s=`md5sum $$auxf`;\
|
||||
done
|
||||
cp tmp/$(basename $<).pdf $@
|
||||
|
||||
|
||||
|
||||
### clean
|
||||
########################################################################
|
||||
|
||||
clean:
|
||||
rm -rf www tmp changelog.md
|
||||
+1762
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,154 @@
|
||||
Building OSPRay from Source
|
||||
===========================
|
||||
|
||||
The latest OSPRay sources are always available at the [OSPRay GitHub
|
||||
repository](http://github.com/ospray/ospray). The default `master`
|
||||
branch should always point to the latest tested bugfix release.
|
||||
|
||||
Prerequisites
|
||||
-------------
|
||||
|
||||
OSPRay currently supports Linux, Mac OS\ X, and Windows. In addition,
|
||||
before you can build OSPRay you need the following prerequisites:
|
||||
|
||||
- You can clone the latest OSPRay sources via:
|
||||
|
||||
git clone https://github.com/ospray/ospray.git
|
||||
|
||||
- To build OSPRay you need [CMake](http://www.cmake.org), any form
|
||||
of C++11 compiler (we recommend using GCC, but also support Clang and the
|
||||
[Intel® C++ Compiler (icc)](https://software.intel.com/en-us/c-compilers)),
|
||||
and standard Linux development tools. To build the example viewers, you
|
||||
should also have some version of OpenGL.
|
||||
- Additionally you require a copy of the [Intel® SPMD Program
|
||||
Compiler (ISPC)](http://ispc.github.io), version 1.9.1 or later.
|
||||
Please obtain a release of ISPC from the [ISPC downloads
|
||||
page](https://ispc.github.io/downloads.html). The build
|
||||
system looks for ISPC in the `PATH` and in the directory right
|
||||
"next to" the checked-out OSPRay sources.^[For example, if OSPRay is
|
||||
in `~/Projects/ospray`, ISPC will also be searched in
|
||||
`~/Projects/ispc-v1.9.2-linux`]
|
||||
Alternatively set the CMake variable `ISPC_EXECUTABLE` to the
|
||||
location of the ISPC compiler.
|
||||
- Per default OSPRay uses the Intel® [Threading Building
|
||||
Blocks](https://www.threadingbuildingblocks.org/) (TBB) as tasking
|
||||
system, which we recommend for performance and flexibility reasons.
|
||||
Alternatively you can set CMake variable `OSPRAY_TASKING_SYSTEM` to
|
||||
`OpenMP`, `Internal`, or `Cilk` (icc only).
|
||||
- OSPRay also heavily uses [Embree], installing version 2.15 or newer
|
||||
is required. If Embree is not found by CMake its location can be
|
||||
hinted with the variable `embree_DIR`.
|
||||
|
||||
Depending on your Linux distribution you can install these dependencies
|
||||
using `yum` or `apt-get`. Some of these packages might already be
|
||||
installed or might have slightly different names.
|
||||
|
||||
Type the following to install the dependencies using `yum`:
|
||||
|
||||
sudo yum install cmake.x86_64
|
||||
sudo yum install tbb.x86_64 tbb-devel.x86_64
|
||||
|
||||
Type the following to install the dependencies using `apt-get`:
|
||||
|
||||
sudo apt-get install cmake-curses-gui
|
||||
sudo apt-get install libtbb-dev
|
||||
|
||||
Under Mac OS\ X these dependencies can be installed using
|
||||
[MacPorts](http://www.macports.org/):
|
||||
|
||||
sudo port install cmake tbb
|
||||
|
||||
Under Windows please directly use the appropriate installers for
|
||||
[CMake](https://cmake.org/download/),
|
||||
[TBB](https://github.com/01org/tbb/releases),
|
||||
[ISPC](https://ispc.github.io/downloads.html) (for your Visual Studio
|
||||
version) and [Embree](https://github.com/embree/embree/releases/).
|
||||
|
||||
|
||||
Compiling OSPRay on Linux and Mac OS\ X
|
||||
---------------------------------------
|
||||
|
||||
Assume the above requisites are all fulfilled, building OSPRay through
|
||||
CMake is easy:
|
||||
|
||||
- Create a build directory, and go into it
|
||||
|
||||
mkdir ospray/build
|
||||
cd ospray/build
|
||||
|
||||
(We do recommend having separate build directories for different
|
||||
configurations such as release, debug, etc).
|
||||
|
||||
- The compiler CMake will use will default to whatever the `CC` and
|
||||
`CXX` environment variables point to. Should you want to specify a
|
||||
different compiler, run cmake manually while specifying the desired
|
||||
compiler. The default compiler on most linux machines is `gcc`, but
|
||||
it can be pointed to `clang` instead by executing the following:
|
||||
|
||||
cmake -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang ..
|
||||
|
||||
CMake will now use Clang instead of GCC. If you are ok with using
|
||||
the default compiler on your system, then simply skip this step.
|
||||
Note that the compiler variables cannot be changed after the first
|
||||
`cmake` or `ccmake` run.
|
||||
|
||||
- Open the CMake configuration dialog
|
||||
|
||||
ccmake ..
|
||||
|
||||
- Make sure to properly set build mode and enable the components you
|
||||
need, etc; then type 'c'onfigure and 'g'enerate. When back on the
|
||||
command prompt, build it using
|
||||
|
||||
make
|
||||
|
||||
- You should now have `libospray.so` as well as a set of example
|
||||
application. You can test your version of OSPRay using any of the
|
||||
examples on the [OSPRay Demos and Examples] page.
|
||||
|
||||
|
||||
Compiling OSPRay on Windows
|
||||
---------------------------
|
||||
|
||||
On Windows using the CMake GUI (`cmake-gui.exe`) is the most convenient
|
||||
way to configure OSPRay and to create the Visual Studio solution files:
|
||||
|
||||
- Browse to the OSPRay sources and specify a build directory (if it
|
||||
does not exist yet CMake will create it).
|
||||
|
||||
- Click "Configure" and select as generator the Visual Studio version
|
||||
you have, for Win64 (32\ bit builds are not supported by OSPRay),
|
||||
e.g. "Visual Studio 15 2017 Win64".
|
||||
|
||||
- If the configuration fails because some dependencies could not be
|
||||
found then follow the instructions given in the error message, e.g.
|
||||
set the variable `embree_DIR` to the folder where Embree was
|
||||
installed.
|
||||
|
||||
- Optionally change the default build options, and then click
|
||||
"Generate" to create the solution and project files in the build
|
||||
directory.
|
||||
|
||||
- Open the generated `OSPRay.sln` in Visual Studio, select the build
|
||||
configuration and compile the project.
|
||||
|
||||
|
||||
Alternatively, OSPRay can also be built without any GUI, entirely on the
|
||||
console. In the Visual Studio command prompt type:
|
||||
|
||||
cd path\to\ospray
|
||||
mkdir build
|
||||
cd build
|
||||
cmake -G "Visual Studio 15 2017 Win64" [-D VARIABLE=value] ..
|
||||
cmake --build . --config Release
|
||||
|
||||
Use `-D` to set variables for CMake, e.g. the path to Embree with "`-D
|
||||
embree_DIR=\path\to\embree`".
|
||||
|
||||
You can also build only some projects with the `--target` switch.
|
||||
Additional parameters after "`--`" will be passed to `msbuild`. For
|
||||
example, to build in parallel only the OSPRay library without the
|
||||
example applications use
|
||||
|
||||
cmake --build . --config Release --target ospray -- /m
|
||||
|
||||
+275
@@ -0,0 +1,275 @@
|
||||
OSPRay Demos
|
||||
============
|
||||
|
||||
This page serves as a repository for "ready-to-run" demos for OSPRay
|
||||
(currently, most demos are intended for OSPRay v<OSPRAY_VERSION>). If you do not yet
|
||||
have a version of OSPRay installed on your system, you can follow these
|
||||
instructions for [getting OSPRay].
|
||||
|
||||
Sponza
|
||||
----------------------------------
|
||||
|
||||
[](demos/sponza.jpg)
|
||||
|
||||
*Model courtesy Carson Brownlee, Morgan McGuire, Crytek*
|
||||
|
||||
### Demo Highlights
|
||||
|
||||
- Crytek Sponza scene -- a common scene for showcasing global
|
||||
illumination (model from [McGuire Graphics Data]).
|
||||
|
||||
### Instructions
|
||||
|
||||
- *IMPORTANT:* This demo currently requires a build from GitHub with `OSPRAY_SG_OPENIMAGEIO=ON`
|
||||
- Download
|
||||
[crytek-sponza.tgz](http://www.sdvis.org/ospray/download/demos/crytek-sponza.tgz)
|
||||
and [light probe] in pfm-format.
|
||||
- Run via\
|
||||
`./ospExampleViewer [path/to/sponza.obj] -vp 667.492554 186.974228 76.008301 -vu 0.000000 1.000000 0.000000 -vi 84.557503 188.199417 -38.148270 -r pt -sg:sun:direction=-.3,-1,.1 -sg:sun:intensity=12 --hdri-light [path/to/rnl_probe.pfm]`
|
||||
|
||||
|
||||
San Miguel
|
||||
----------------------------------
|
||||
|
||||
[](demos/san-miguel.jpg)
|
||||
|
||||
*Model courtesy Carson Brownlee, Morgan McGuire, Guillermo M. Leal
|
||||
Llaguno*
|
||||
|
||||
### Demo Highlights
|
||||
|
||||
- A quaint cafe in San Miguel's historic district. This is a common
|
||||
scene for showcasing global illumination. (Model from [McGuire
|
||||
Graphics Data]).
|
||||
|
||||
### Instructions
|
||||
|
||||
- *IMPORTANT:* This demo currently requires a build from GitHub with `OSPRAY_SG_OPENIMAGEIO=ON`
|
||||
- Download
|
||||
[sanm.zip](http://www.sdvis.org/ospray/download/demos/sanm.zip)
|
||||
and [light probe] in pfm-format.
|
||||
- Run via\
|
||||
`./ospExampleViewer [path/to/sanm.obj] -vp 22.958788 3.204613 2.712676 -vu 0.000000 1.000000 0.000000 -vi 12.364944 0.176316 4.009342 -sg:sun:intensity=4.0 -sg:sun:direction=0,-1,0 -sg:bounce:intensity=0.0 --hdri-light [path/to/rnl_probe.pfm] -sg:hdri:intensity=1.25 -r pt`
|
||||
|
||||
Sibenik Cathedral
|
||||
----------------------------------
|
||||
|
||||
[](demos/sibenik.jpg)
|
||||
|
||||
*Model courtesy Morgan McGuire, Kenzie Lamar, Aleksander Stompel*
|
||||
|
||||
### Demo Highlights
|
||||
|
||||
- A large cathedral model commonly used for showcasing global
|
||||
illumination. (Original model from [McGuire Graphics Data]).
|
||||
|
||||
### Instructions
|
||||
|
||||
- *IMPORTANT:* This demo currently requires a build from GitHub with `OSPRAY_SG_OPENIMAGEIO=ON`
|
||||
- Download
|
||||
[sibenik.tgz](http://www.sdvis.org/ospray/download/demos/sibenik.tgz)
|
||||
and [light probe] in pfm-format.
|
||||
- Run via\
|
||||
`./ospExampleViewer sibenik.obj -vp -17.734447 -13.788272 3.443677 -vu 0.000000 1.000000 0.000000 -vi -2.789550 -10.993323 0.331822`
|
||||
|
||||
Animated Woody
|
||||
----------------------------------
|
||||
|
||||
[](demos/sponza_animated.jpg)
|
||||
|
||||
*Model courtesy Carson Brownlee, Ingo Wald, Morgan McGuire, Crytek*
|
||||
|
||||
### Demo Highlights
|
||||
|
||||
- Animated Wooden Doll walking in the Sponza model (from [McGuire
|
||||
Graphics Data]).
|
||||
|
||||
### Instructions
|
||||
|
||||
- *IMPORTANT:* This demo currently requires a build from GitHub with `OSPRAY_SG_OPENIMAGEIO=ON`
|
||||
- Download
|
||||
[crytek-sponza.tgz](http://www.sdvis.org/ospray/download/demos/crytek-sponza.tgz)
|
||||
and
|
||||
[wooddoll.tgz](http://www.sdvis.org/ospray/download/demos/wooddoll.tgz).
|
||||
- Run via\
|
||||
`./ospExampleViewer [path/to/crytek-sponza/sponza.obj] --renderer scivis -sun:direction=-.3,-1,-.04 -sg:sun:intensity=3 -vp 667.492554 186.974228 76.008301 -vu 0.000000 1.000000 0.000000 -vi 84.557503 188.199417 -38.148270 --translate 250 -11 0 --scale 300 300 300 --animation [path/to/wooddoll/wooddoll*.obj] -sg:aoSamples=0`
|
||||
- Controls: +/- increase and decrease animation speed. Space bar
|
||||
pauses.
|
||||
|
||||
"Magnetic Reconnection" Volume Rendered
|
||||
---------------------------------------
|
||||
|
||||
[](demos/MagneticReconnection/magnetic-512-volume.png)
|
||||
|
||||
*Model courtesy Bill Daughton (LANL) and Berk Geveci (KitWare). Please
|
||||
acknowledge via [this paper](http://arxiv.org/abs/1405.4040).*
|
||||
|
||||
### Demo Highlights
|
||||
|
||||
- Volume rendering of the 512^3^ Magnetic Reconnection volume data.
|
||||
- Rendered using OSPRay's ray cast volume renderer
|
||||
(`raycast_volume_renderer`).
|
||||
|
||||
### Instructions
|
||||
|
||||
- Download
|
||||
[magnetic-512-volume.tar.bz2](http://www.sdvis.org/ospray/download/demos/MagneticReconnection/magnetic-512-volume.tar.bz2).
|
||||
- Run via\
|
||||
`./ospExampleViewerSg magnetic-512-volume.osp`
|
||||
|
||||
|
||||
290M triangle "Richtmyer-Meshkov" Iso-Surface
|
||||
---------------------------------------------
|
||||
|
||||
[](demos/llnl-250/llnl-250.png)
|
||||
|
||||
*Model courtesy Lawrence-Livermore National Labs (LLNL).*
|
||||
|
||||
### Demo Highlights
|
||||
|
||||
- Iso-surface of the 2048^3^ Richtmyer-Meshkov Instability simulation
|
||||
performed by LLNL, iso-surface extracted through ParaView.
|
||||
- Detailed iso-surface has 290 million triangles.
|
||||
- Rendered using OSPRay's Ambient Occlusion renderer (`ao4`).
|
||||
|
||||
### Instructions
|
||||
|
||||
- Download
|
||||
[llnl-2048-iso.tar.bz2](http://www.sdvis.org/ospray/download/demos/LLNLRichtmyerMeshkov/llnl-2048-iso.tar.bz2).
|
||||
- Run via\
|
||||
`./ospExampleViewer llnl-2048-iso.xml`
|
||||
|
||||
|
||||
CSAFE Heptane Gas Dataset
|
||||
-------------------------
|
||||
|
||||
[](demos/CSAFEHeptane/csafe-heptane-302-volume.png)
|
||||
|
||||
*Model courtesy of the Center for the Simulation of Accidental Fires and
|
||||
Explosions (CSAFE) at the Scientific Computing and Imaging Institute
|
||||
(SCI), University of Utah.*
|
||||
|
||||
### Demo Highlights
|
||||
|
||||
- Volume rendering of a 302^3^ data set containing a single time step
|
||||
from a computational simulation of the combustion of heptane gas.
|
||||
- Rendered using OSPRay's ray cast volume renderer
|
||||
(`raycast_volume_renderer`).
|
||||
|
||||
### Instructions
|
||||
|
||||
- Download
|
||||
[csafe-heptane-302-volume.tar.bz2](http://www.sdvis.org/ospray/download/demos/CSAFEHeptane/csafe-heptane-302-volume.tar.bz2).
|
||||
- Run via\
|
||||
`./ospExampleViewerSg csafe-heptane-302-volume.osp`
|
||||
|
||||
|
||||
"TACC Isotropic Turbulence" Volume Rendered
|
||||
-------------------------------------------
|
||||
|
||||
[](demos/TACCIsotropicTurbulence/tacc-turbulence-256-volume.png)
|
||||
|
||||
*Model courtesy of the Texas Advanced Computing Center (TACC), Texas A&M
|
||||
University, and Georgia Tech.*
|
||||
|
||||
### Demo Highlights
|
||||
|
||||
- Volume rendering of a 256^3^ data set containing a single time step
|
||||
from a computational simulation of isotropic turbulence.
|
||||
- Rendered using OSPRay's ray cast volume renderer
|
||||
(`raycast_volume_renderer`).
|
||||
|
||||
### Instructions
|
||||
|
||||
- Download
|
||||
[tacc-turbulence-256-volume.tar.bz2](http://www.sdvis.org/ospray/download/demos/TACCIsotropicTurbulence/tacc-turbulence-256-volume.tar.bz2).
|
||||
- Run via\
|
||||
`./ospExampleViewerSg tacc-turbulence-256-volume.osp`
|
||||
|
||||
|
||||
"FIU" Ground Water Simulation
|
||||
-----------------------------
|
||||
|
||||
[](demos/fiu/fiu-ao.png)
|
||||
|
||||
*Model courtesy Texas Advanced Computing Center (TACC) and Florida
|
||||
International University. Please obtain TACC/FIU's permission before
|
||||
using this model.*
|
||||
|
||||
### Demo Highlights
|
||||
|
||||
- Dataset captured from VTK-based ParaView through TACC's GLURay tool.
|
||||
- Streamlines in this data set are actually tessellated. OSPRay could
|
||||
do them natively, but ParaView tessellates internally.
|
||||
- Model size roughly 8 million triangles
|
||||
- Rendered via OSPRay's Ambient Occlusion based renderer. To see a
|
||||
comparison with/without Ambient occlusion, [see this
|
||||
page](fiu_comparison.html).
|
||||
|
||||
### Instructions
|
||||
|
||||
- Download
|
||||
[fiu-groundwater.tar.bz2](http://www.sdvis.org/ospray/download/demos/FIUGroundWater/fiu-groundwater.tar.bz2).
|
||||
- Run via\
|
||||
`./ospExampleViewer fiu-groundwater.xml --renderer scivis`
|
||||
- Run via OBJ renderer rather than Ambient Occlusion:\
|
||||
`./ospExampleViewer fiu-groundwater.xml --sg:sun:direction=-1.5,-1,-1`
|
||||
|
||||
|
||||
"XFrog Forest" - A 1.7 billion triangle forest model
|
||||
----------------------------------------------------
|
||||
|
||||
[](demos/xfrog/xfrog.png)
|
||||
|
||||
*Model courtesy Oliver Deussen, University of Konstanz; modelled via the
|
||||
[XFrog](http://www.xfrog.com) tool. Please acknowledge accordingly when
|
||||
using this model.*
|
||||
|
||||
### Demo Highlights
|
||||
|
||||
- 1.7 billion triangles (377,266 instances of 69 different kinds of
|
||||
plants, for a total of 1,679,235,546 triangles after instantiation).
|
||||
- Additional detail through high-resolution alpha "stencil" textures
|
||||
to stencil detailed leaf shapes out of already highly detailed
|
||||
geometry.
|
||||
- Requires many rays per pixel to handle the (high!) number of
|
||||
transparency layers.
|
||||
|
||||
### Instructions
|
||||
|
||||
- Download
|
||||
[xfrog-forest.tar.bz2](http://www.sdvis.org/ospray/download/demos/XFrogForest/xfrog-forest.tar.bz2).
|
||||
- Run via\
|
||||
`./ospExampleViewer xfrog-forest.xml`
|
||||
|
||||
|
||||
"NASA Streamlines"
|
||||
------------------
|
||||
|
||||
[](demos/nasa-streamlines/nasa-streamlines.png)
|
||||
|
||||
*Model courtesy Timothy Sandstrom, NASA.*
|
||||
|
||||
### Demo Highlights
|
||||
|
||||
- Model of a magnetic field on the sun, visualized through a
|
||||
attribute-mapped iso-surface of the B-field, plus a set of
|
||||
streamlines.
|
||||
- The streamlines are not tessellated, but OSPRay's actual
|
||||
"`streamlines`" primitive (essentially, a set of smoothly connected
|
||||
cylinders), which makes for a very memory-efficient representation.
|
||||
- Ambient occlusion greatly helps in understanding the shape of the
|
||||
streamlines (when rendered with local-only shading, it looks like a
|
||||
"lint ball").
|
||||
|
||||
### Instructions
|
||||
|
||||
- Download
|
||||
[NASA-B-field-sun.osx](http://www.sdvis.org/ospray/download/demos/NASA-B-field-sun/NASA-B-field-sun.osx).
|
||||
- Run via\
|
||||
`./ospExampleViewer NASA-B-field-sun.osx`
|
||||
|
||||
|
||||
|
||||
[McGuire Graphics Data]: http://graphics.cs.williams.edu/data/meshes.xml "McGuire, Computer Graphics Archive, Aug 2011"
|
||||
[light probe]: http://www.pauldebevec.com/Probes/rnl_probe.pfm "RNL Light Probe Image"
|
||||
@@ -0,0 +1,16 @@
|
||||
OSPRay parallel rendering on TACC's "Stallion" display wall
|
||||
===========================================================
|
||||
|
||||
[](gallery/ospray_stallion.jpg)
|
||||
|
||||
This photo shows OSPRay running on the [Stallion 328 megapixel tiled
|
||||
display](https://www.tacc.utexas.edu/vislab/stallion) at the Texas
|
||||
Advanced Computing Center (TACC) visualization lab. OSPRay is rendering
|
||||
in an MPI parallel mode and interactively streaming to the tiled display
|
||||
via its
|
||||
[DisplayCluster](https://www.tacc.utexas.edu/research-development/tacc-software/displaycluster)
|
||||
interface. These features are scheduled to be released in OSPRay v0.9.
|
||||
|
||||
The model used is courtesy Florida International University and the
|
||||
Texas Advanced Computing Center, and stems from a simulation of Ground
|
||||
Water Flow performed by Florida International University.
|
||||
@@ -0,0 +1,16 @@
|
||||
Documentation
|
||||
=============
|
||||
|
||||
The following [API documentation][OSPRayReadme] of OSPRay can also be
|
||||
found as a [pdf document][OSPRayReadme] (4.2MB).
|
||||
|
||||
For a deeper explanation of the concepts, design, features and
|
||||
performance of OSPRay also have a look at the IEEE Vis 2016 paper
|
||||
"[OSPRay – A CPU Ray Tracing Framework for Scientific
|
||||
Visualization](http://www.sdvis.org/ospray/download/talks/IEEEVis2016_OSPRay_paper.pdf)"
|
||||
(49MB, or get the [smaller
|
||||
version](http://www.sdvis.org/ospray/download/talks/IEEEVis2016_OSPRay_paper_small.pdf)
|
||||
1.8MB). Also available are the [slides of the
|
||||
talk](http://www.sdvis.org/ospray/download/talks/IEEEVis2016_OSPRay_talk.pdf)
|
||||
(5.2MB).
|
||||
|
||||
+174
@@ -0,0 +1,174 @@
|
||||
Examples
|
||||
========
|
||||
|
||||
Tutorial
|
||||
--------
|
||||
|
||||
A minimal working example demonstrating how to use OSPRay can be found
|
||||
at `apps/ospTutorial.c`^[A C++ version that uses the C++ convenience
|
||||
wrappers of OSPRay's C99 API via `include/ospray/ospray_cpp.h` is
|
||||
available at `apps/ospTutorial.cpp`.]. On Linux build it in the build
|
||||
directory with
|
||||
|
||||
gcc -std=c99 ../apps/ospTutorial.c -I ../ospray/include -I .. \
|
||||
./libospray.so -Wl,-rpath,. -o ospTutorial
|
||||
|
||||
On Windows build it in the "build_directory\\$Configuration" with
|
||||
|
||||
cl ..\..\apps\ospTutorial.c -I ..\..\ospray\include -I ..\.. ospray.lib
|
||||
|
||||
Running `ospTutorial` will create two images of two triangles, rendered
|
||||
with the Scientific Visualization renderer with full Ambient Occlusion.
|
||||
The first image `firstFrame.ppm` shows the result after one call to
|
||||
`ospRenderFrame` – jagged edges and noise in the shadow can be seen.
|
||||
Calling `ospRenderFrame` multiple times enables progressive refinement,
|
||||
resulting in antialiased edges and converged shadows, shown after ten
|
||||
frames in the second image `accumulatedFrames.ppm`.
|
||||
|
||||
![First frame.][imgTutorial1]
|
||||
|
||||
![After accumulating ten frames.][imgTutorial2]
|
||||
|
||||
# Example Viewer
|
||||
|
||||
![Example of using ospExampleViewer with a scenegraph][imgExampleViewer]
|
||||
|
||||
OSPRay includes an exemplary viewer application
|
||||
`ospExampleViewer`, showcasing most features of OSPRay which can be
|
||||
run as './ospExampleViewer [options] <filename>'. The Example
|
||||
Viewer uses the ImGui library for user interface controls and is
|
||||
based on a prototype OSPRay scenegraph interface where nodes can
|
||||
be viewed and edited interactively.
|
||||
Updates to scenegraph nodes update OSPRay state automatically
|
||||
through the scenegraph viewer which
|
||||
is enabled by pressing 'g'.
|
||||
|
||||
### Exploring the Scene
|
||||
The GUI shows the entire state of the program under the root scenegraph node.
|
||||
Expanding nodes down to explore and edit the scene is possible, for example a
|
||||
material parameter may be found under renderer->world->mesh->material->Kd.
|
||||
Updates to values will be automatically propagated to the next render. Individual
|
||||
nodes can be easily found using the "Find Node" section, which will find nodes
|
||||
with a given name based on the input string. Scene objects can also be selected
|
||||
with the mouse by shift-left clicking in the viewer.
|
||||
|
||||
Click on nodes to expand their children,
|
||||
whose values can be set by dragging or double clicking and typing in values.
|
||||
You can also add new nodes where appropriate: for
|
||||
example, when "lights" is expanded right clicking on "lights" and selecting
|
||||
create new node and typing
|
||||
in a light type, such as "PointLight", will add it to the scene. Similarly,
|
||||
right clicking on "world" and creating an "Importer" node will add a new
|
||||
scene importer from a file. Changing the filename to an appropriate file
|
||||
will load the scene and propagate the resulting state. Exporting
|
||||
and importing the scenegraph is only partially supported at the moment through
|
||||
"ospsg" files. Currently, any nodes with Data members will break this functionality,
|
||||
however right clicking and selecting export on the camera or lights nodes for instance
|
||||
will save out their respective state which can be imported on the command line.
|
||||
ExampleViewer also functions as an OSPRay state debugger – invalid
|
||||
values will be shown in red up the hierarchy and won't change the viewer
|
||||
until corrected.
|
||||
|
||||
### Volume Rendering
|
||||
Volumes are loaded into the viewer just as a mesh is. Volume appearance is modified
|
||||
according to the transfer function, which will show up in a popup window on the GUI after
|
||||
pressing 'g'. Click and drag across the transfer function to set opacity values, and selecting
|
||||
near the bottom of the editable transfer function widget sets the opacity to zero. The colors
|
||||
themselves can only be modified by selecting from the dropdown menu 'ColorMap' or
|
||||
importing and exporting json colors. The range that the transfer function operates
|
||||
on can be modified on the scenegraph viewer.
|
||||
|
||||
### ExampleViewer Controls
|
||||
* 'g' - toggle scenegraph display
|
||||
* 'q' - quit
|
||||
* Left click and drag to rotate
|
||||
* Right click and drag or mouse wheel to zoom in
|
||||
and out.
|
||||
* Mouse-Wheel click will pan the camera.
|
||||
* Control-Left clicking on an object will select a model and all of its children
|
||||
which will be displayed in the
|
||||
* Shift-Left click on an object will zoom into that part of the scene and set
|
||||
the focal distance.
|
||||
|
||||
### CommandLine Options
|
||||
* Running './ospExampleViewer -help' will bring up a list of commandline options.
|
||||
These options allow you to load files, run animations, modify any scenegraph state,
|
||||
and many other functions. See the demos page for examples.
|
||||
* Supported file importers currently include: obj, ply, x3d, vtu, osp, ospsg, xml (rivl),
|
||||
points, xyz.
|
||||
|
||||
|
||||
Distributed Viewer
|
||||
------------------
|
||||
|
||||
The application `ospDistribViewerDemo` demonstrates how to write a
|
||||
distributed SciVis style interactive renderer using the distributed MPI
|
||||
device. Note that because OSPRay uses sort-last compositing it is up to
|
||||
the user to ensure that the data distribution across the nodes is
|
||||
suitable. Specifically, each nodes' data must be convex and disjoint.
|
||||
This renderer supports multiple volumes and geometries per node. To
|
||||
ensure they are composited correctly you specify a list of bounding
|
||||
regions to the model, within these regions can be arbitrary
|
||||
volumes/geometries and each rank can have as many regions as needed. As
|
||||
long as the regions are disjoint/convex the data will be rendered
|
||||
correctly. In this demo we either generate a volume, or load a RAW
|
||||
volume file if one is passed on the commandline.
|
||||
|
||||
### Loading a RAW Volume
|
||||
|
||||
To load a RAW volume you must specify the filename (`-f <file>`), the
|
||||
data type (`-dtype <dtype>`), the dimensions (`-dims <x> <y> <z>`) and the
|
||||
value range for the transfer function (`-range <min> <max>`). For example,
|
||||
to run on the [CSAFE dataset from the demos
|
||||
page](http://www.ospray.org/demos.html#csafe-heptane-gas-dataset) you
|
||||
would pass the following arguments:
|
||||
|
||||
mpirun -np <n> ./ospDistribViewerDemo \
|
||||
-f <path to csafe>/csafe-heptane-302-volume.raw \
|
||||
-dtype uchar -dims 302 302 302 -range 0 255
|
||||
|
||||
The volume file will then be chunked up into an `x×y×z` grid such that
|
||||
$n = xyz$. See `loadVolume` in [gensv/generateSciVis.cpp] for an
|
||||
example of how to properly load a volume distributed across ranks with
|
||||
correct specification of brick positions and ghost voxels for
|
||||
interpolation at boundaries. If no volume file data is passed a volume
|
||||
will be generated instead, in that case see `makeVolume`.
|
||||
|
||||
### Geometry
|
||||
|
||||
The viewer can also display some randomly generated sphere geometry if
|
||||
you pass `-spheres <n>` where `n` is the number of spheres to generate
|
||||
per-node. These spheres will be generated inside the bounding box of the
|
||||
region's volume data.
|
||||
|
||||
In the case that you have geometry crossing the boundary of nodes and
|
||||
are replicating it on both nodes to render (ghost zones, etc.) the
|
||||
region will be used by the renderer to clip rays against allowing to
|
||||
split the object between the two nodes, with each rendering half. This
|
||||
will keep the regions rendered by each rank disjoint and thus avoid any
|
||||
artifacts. For example, if a sphere center is on the border between two
|
||||
nodes, each would render half the sphere and the halves would be
|
||||
composited to produce the final complete sphere in the image.
|
||||
|
||||
### App-initialized MPI
|
||||
|
||||
Passing the `-appMPI` flag will have the application initialize MPI
|
||||
instead of letting OSPRay do it internally when creating the MPI
|
||||
distributed device. In this case OSPRay will not finalize MPI when
|
||||
cleaning up the device, allowing the application to use OSPRay for some
|
||||
work, shut it down and recreate everything later if needed for
|
||||
additional computation, without accidentally shutting down its MPI
|
||||
communication.
|
||||
|
||||
### Interactive Viewer
|
||||
|
||||
Rank 0 will open an interactive window with GLFW and display the
|
||||
rendered image. When the application state needs to update (e.g. camera
|
||||
or transfer function changes), this information is broadcasted out to
|
||||
the other nodes to update their scene data.
|
||||
|
||||
Demos
|
||||
-----
|
||||
|
||||
Several ready-to-run demos, models and data sets for OSPRay can be found
|
||||
at the [OSPRay Demos and Examples] page.
|
||||
@@ -0,0 +1,73 @@
|
||||
# 1. convert tables to use 'tabu'
|
||||
# 2. always add hypertargets, before headings, to workaround issue #2719
|
||||
# Based on Wagner Macedo's filter.py posted at
|
||||
# https://groups.google.com/forum/#!msg/pandoc-discuss/RUC-tuu_qf0/h-H3RRVt1coJ
|
||||
import pandocfilters as pf
|
||||
|
||||
def latex(s):
|
||||
return pf.RawBlock('latex', s)
|
||||
|
||||
def inlatex(s):
|
||||
return pf.RawInline('latex', s)
|
||||
|
||||
def tbl_caption(s):
|
||||
return pf.Para([inlatex(r'\caption{')] + s + [inlatex(r'}')])
|
||||
|
||||
def tbl_alignment(a, w):
|
||||
aligns = {
|
||||
"AlignDefault": 'l',
|
||||
"AlignLeft": 'l',
|
||||
"AlignCenter": 'c',
|
||||
"AlignRight": 'r',
|
||||
}
|
||||
s = '';
|
||||
for i in range(len(a)):
|
||||
s += 'X[%.3f,' % -w[i] + aligns[a[i]['t']] + ']'
|
||||
return s;
|
||||
|
||||
def tbl_headers(s):
|
||||
result = s[0][0]['c'][:]
|
||||
for i in range(1, len(s)):
|
||||
result.append(inlatex(' & '))
|
||||
result.extend(s[i][0]['c'])
|
||||
result.append(inlatex(r'\\' '\n'))
|
||||
return pf.Para(result)
|
||||
|
||||
def tbl_contents(s):
|
||||
result = []
|
||||
for row in s:
|
||||
para = []
|
||||
for col in row:
|
||||
if col:
|
||||
para.extend(col[0]['c'])
|
||||
para.append(inlatex(' & '))
|
||||
result.extend(para)
|
||||
result[-1] = inlatex(r'\\' '\n')
|
||||
return pf.Para(result)
|
||||
|
||||
def do_filter(k, v, f, m):
|
||||
if k == "Table":
|
||||
w = v[2]
|
||||
if sum(w) == 0:
|
||||
w = [1 for e in w]
|
||||
wd = ''
|
||||
ha = r'\centering'
|
||||
else:
|
||||
wd = '*'
|
||||
ha = r'\raggedright'
|
||||
return [latex(r'\begin{table'+wd+'}[!h]'),
|
||||
tbl_caption(v[0]),
|
||||
latex(ha),
|
||||
latex(r'\begin{tabu} spread 0pt {' + tbl_alignment(v[1], w) + '}'),
|
||||
latex(r'\toprule'),
|
||||
tbl_headers(v[3]),
|
||||
latex(r'\midrule'),
|
||||
tbl_contents(v[4]),
|
||||
latex(r'\bottomrule' '\n' r'\end{tabu}'),
|
||||
latex(r'\end{table'+wd+'}')]
|
||||
if k == "Header":
|
||||
return [latex(r'\hypertarget{' + v[1][0] + r'}{}'),
|
||||
pf.Header(v[0], v[1], v[2])]
|
||||
|
||||
if __name__ == "__main__":
|
||||
pf.toJSONFilter(do_filter)
|
||||
@@ -0,0 +1,28 @@
|
||||
FIU Dataset: Shadows and Ambient Occlusion vs OpenGL-like local shading
|
||||
=======================================================================
|
||||
|
||||
(click on images to see higher-res versions)
|
||||
|
||||
[](demos/fiu/fiu-gl.png)
|
||||
|
||||
FIU with local (OpenGL-like) Shading
|
||||
: Without shadows and/or ambient occlusion (i.e., using a OpenGL-like
|
||||
local shading model), the FIU dataset looks like this.
|
||||
|
||||
\
|
||||
[](demos/fiu/fiu-obj.png)
|
||||
|
||||
FIU with ray traced shadows
|
||||
: Simply adding shadows already greatly enhances the user's perception
|
||||
of depth (e.g., the relative positions of streamlines and base
|
||||
geometry, the actual shape of the geometry, etc).
|
||||
|
||||
\
|
||||
[](demos/fiu/fiu-ao.png)
|
||||
|
||||
FIU with OSPRay's Ambient Occlusion Renderer
|
||||
: Ambient Occlusion further increases perception of depth. In OSPRay,
|
||||
enabling (true, ray-cast) Ambient Occlusion is as simple as
|
||||
selecting the "ao" renderer.
|
||||
|
||||
|
||||
+156
@@ -0,0 +1,156 @@
|
||||
OSPRay Gallery
|
||||
==============
|
||||
|
||||
This page contains a few sample screenshots of different renderings done
|
||||
with OSPRay. If *you* have created any interesting images through OSPRay
|
||||
and would like to share them on this page, please [send us an
|
||||
email](mailto:ospray@googlegroups.com).
|
||||
|
||||
<div class="exhibit">
|
||||
[](https://vimeo.com/237987637 "Cosmos Video")
|
||||
<div class="caption">
|
||||
<h2>AMR Binary Black Hole Merger</h2>
|
||||
<p>Simulation of two black holes colliding using GRChombo in reference to a LIGO event. Simulation was conducted by
|
||||
[the Centre for Theoretical Cosmology (CTC)](http://www.ctc.cam.ac.uk/). Images were
|
||||
rendered in ParaView by directly sampling the AMR structure using OSPRay.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="exhibit">
|
||||
[](https://vimeo.com/237987416 "Nasa Parachute Video")
|
||||
<div class="caption">
|
||||
<h2>NASA Ames Parachute Simulation</h2>
|
||||
<p>Video rendered using OSPRay by Tim Sandstrom of NASA Ames.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Screenshots and Video of the 10TB Walls Dataset
|
||||
-----------------------------------------------
|
||||
|
||||
<div class="left">
|
||||
[](gallery/walls_4k_00.png)
|
||||
[](gallery/walls_4k_01.png)
|
||||
[](gallery/walls_4k_05.png)
|
||||
[](gallery/walls_4k_11.png)
|
||||
[](gallery/walls_4k_21.png)
|
||||
</div>
|
||||
|
||||
Some of the forty timesteps of the `walls` dataset, which is a
|
||||
simulation of the formation of domain walls in the early universe by
|
||||
[the Centre for Theoretical Cosmology (CTC)](http://www.ctc.cam.ac.uk/)
|
||||
in cooperation with [SGI](http://www.sgi.com/). Each volume has a
|
||||
resolution of 4096^3^, thus the total dataset is *10TB* large. With
|
||||
OSPRay running on a SGI UV300 system you can interactively explore the
|
||||
data -- watch the [movie](gallery/walls_4k.mp4). For more background
|
||||
read the related [blog post by
|
||||
SGI](http://blog.sgi.com/accelerating-scientific-discovery-through-visualization/).
|
||||
|
||||
More Screenshots of OSPRay's Path Tracer
|
||||
----------------------------------------
|
||||
|
||||
<div class="left">
|
||||
[](gallery/pt-Wohnung1.png)
|
||||
[](gallery/pt-Wohnung2.png)
|
||||
[](gallery/pt-LoftOffice.png)
|
||||
[](gallery/pt-SedusPanorama.png)
|
||||
[](gallery/pt-ActiuRender.png)
|
||||
</div>
|
||||
|
||||
The first five example scenes were modeled with
|
||||
[EasternGraphics](http://www.easterngraphics.com/en.html)' room planning
|
||||
and interior design software
|
||||
[pcon.Planner](http://pcon-planner.com/en/), exported to `obj` and
|
||||
rendered using OSPRay. The scenes contain between one million and ten
|
||||
millon triangles.\
|
||||
|
||||
[](gallery/pt-car.png)
|
||||
|
||||
This car model consists of 5.7 million triangles and features some of
|
||||
the more advanced materials of OSPRay's path tracer.
|
||||
|
||||
|
||||
OSPRay Parallel Rendering on TACC's "Stallion" Display Wall
|
||||
-----------------------------------------------------------
|
||||
|
||||
[](displaywall.html)
|
||||
|
||||
This shows a photo of OSPRay parallel rendering on TACC's 320 MPixel
|
||||
"Stallion" Display wall.
|
||||
|
||||
[Read more.](displaywall.html)
|
||||
|
||||
|
||||
VMD/Tachyon Screenshots
|
||||
-----------------------
|
||||
|
||||
This section shows some screenshots from the Tachyon module applied to
|
||||
models exported from the widely used "Visual Molecular Dynamics" (VMD)
|
||||
tool. In that workflow, a VMD user uses the VMD command
|
||||
`export Tachyon mymodel.tachy` to export the VMD model in tachyon
|
||||
format, then uses the `ospTachyon mymodel.tachy` viewer on those models.
|
||||
|
||||
[](gallery/ospTachyon-glpf.png)
|
||||
|
||||
VMD "GLPF" model; original model courtesy John Stone, UIUC.\
|
||||
|
||||
[](gallery/ospTachyon-organelle.png)
|
||||
|
||||
VMD "Organelle", using vdW-representation via ospray spheres. Model
|
||||
courtesy Carsten Kutzner, MPI BPC, Goettingen.\
|
||||
|
||||
[](gallery/ospTachyon-ribosome.png)
|
||||
|
||||
VMD "ribosome", with balls, sticks, ribbons, and quicksurfs. Model
|
||||
courtesy Carsten Kutzner, MPI BPC, Goettingen.
|
||||
|
||||
|
||||
ospModelViewer Samples
|
||||
----------------------
|
||||
|
||||
Sample screen-shots from the `ospModelViewer`, typically imported via
|
||||
the OBJ model file format.
|
||||
|
||||
[](gallery/obj-fairy.png)
|
||||
|
||||
The "Utah Fairy" (174k triangles), rendered with textures, transparency,
|
||||
and shadows (using the `OBJ` renderer. Model originally modelled using
|
||||
DAZ3D's DAZ Studio.\
|
||||
|
||||
[](gallery/obj-powerplant.png)
|
||||
|
||||
The "UNC PowerPlant" model (12.5 million triangles).\
|
||||
|
||||
[](gallery/ao-boeing.png)
|
||||
|
||||
The "Boeing 777" model (342 million triangles), rendered using Ambient
|
||||
Occlusion. Model obtained from and used with permission of the Boeing
|
||||
Company (special thanks to Dave Kasik).\
|
||||
|
||||
[](gallery/obj-xfrog.png)
|
||||
|
||||
The "xfrog" model of 1.7 billion (instanced) triangles and transparency
|
||||
textures. Model originally created using XFrog, model courtesy Oliver
|
||||
Deussen, University of Konstanz.\
|
||||
|
||||
[](gallery/pt-dragon.png)
|
||||
|
||||
The 1 million triangle "DAZ Dragon" model, with textures, transparency
|
||||
textures, and rendered with OSPRay's experimental path tracer. Model
|
||||
originally created using DAZ3D's DAZ Studio.
|
||||
|
||||
|
||||
Particle Viewer Examples
|
||||
------------------------
|
||||
|
||||
Sample screen-shots from the `ospParticleViewer`.
|
||||
|
||||
[](gallery/ospParticle-nanospheres.png)
|
||||
|
||||
The 740k-particle "nanospheres" model. Model courtesy KC Lau and Larry
|
||||
Curtiss, Argonne National Labs, and Aaron Knoll, University of Utah.\
|
||||
|
||||
[](gallery/ospParticle-uintah.png)
|
||||
|
||||
A 80 million particle model from the University of Utah's "UIntah"
|
||||
simulation package. Data courtesy James Guilkey, Aaron Knoll, and Dave
|
||||
de St.Germain, University of Utah.
|
||||
@@ -0,0 +1,44 @@
|
||||
Download Precompiled OSPRay Binary Packages
|
||||
===========================================
|
||||
|
||||
Prerequisites
|
||||
-------------
|
||||
|
||||
Your CPU must support at least SSE4.1 to run OSPRay. The TGZ/ZIP
|
||||
packages contain most needed 3rd party dependencies, whereas for the
|
||||
(much smaller) RPM/installer packages you need to have installed
|
||||
|
||||
- Intel® [TBB](https://www.threadingbuildingblocks.org/) v3.0 or newer
|
||||
- [Embree] ray tracing kernels v2.15 or newer
|
||||
- To run the example viewer: OpenGL
|
||||
- To use the distributed, multi-node rendering feature: Intel® [MPI
|
||||
Library](https://software.intel.com/en-us/intel-mpi-library/))
|
||||
|
||||
We recommend the latest version of both TBB and Embree libraries.
|
||||
|
||||
Packages
|
||||
--------
|
||||
|
||||
For Linux we provide OSPRay precompiled for 64\ bit as RPMs or as TGZ
|
||||
file.
|
||||
|
||||
[ospray-<OSPRAY_VERSION>.x86_64.rpm.tar.gz](https://github.com/ospray/OSPRay/releases/download/v<OSPRAY_VERSION>/ospray-<OSPRAY_VERSION>.x86_64.rpm.tar.gz)
|
||||
[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)
|
||||
|
||||
For Mac OS\ X we provide OSPRay as an installer and as a TGZ file:
|
||||
|
||||
[ospray-<OSPRAY_VERSION>.x86_64.dmg](https://github.com/ospray/OSPRay/releases/download/v<OSPRAY_VERSION>/ospray-<OSPRAY_VERSION>.x86_64.dmg)
|
||||
[ospray-<OSPRAY_VERSION>.x86_64.macosx.tar.gz](https://github.com/ospray/OSPRay/releases/download/v<OSPRAY_VERSION>/ospray-<OSPRAY_VERSION>.x86_64.macosx.tar.gz)
|
||||
|
||||
For Windows we provide OSPRay binaries precompiled for 64\ bit as an MSI
|
||||
installer as well as a ZIP archive:
|
||||
|
||||
[ospray-<OSPRAY_VERSION>.msi](https://github.com/ospray/OSPRay/releases/download/v<OSPRAY_VERSION>/ospray-<OSPRAY_VERSION>.msi)
|
||||
[ospray-<OSPRAY_VERSION>.windows.zip](https://github.com/ospray/OSPRay/releases/download/v<OSPRAY_VERSION>/ospray-<OSPRAY_VERSION>.windows.zip)
|
||||
|
||||
The source code of the latest OSPRay version can be downloaded here:
|
||||
|
||||
[ospray-<OSPRAY_VERSION>.zip](https://github.com/ospray/OSPRay/archive/v<OSPRAY_VERSION>.zip)
|
||||
[ospray-<OSPRAY_VERSION>.tar.gz](https://github.com/ospray/OSPRay/archive/v<OSPRAY_VERSION>.tar.gz)
|
||||
|
||||
You can also access [old OSPRay releases](https://github.com/ospray/OSPRay/releases).
|
||||
@@ -0,0 +1,15 @@
|
||||
#FIG 3.2 Produced by xfig version 3.2.5c
|
||||
Landscape
|
||||
Center
|
||||
Metric
|
||||
Letter
|
||||
100.00
|
||||
Single
|
||||
-2
|
||||
1200 2
|
||||
2 2 0 1 0 7 60 -1 -1 0.000 0 0 7 0 0 5
|
||||
3150 450 5850 450 5850 1800 3150 1800 3150 450
|
||||
2 1 0 2 0 7 60 -1 -1 0.000 0 0 -1 0 0 1
|
||||
4500 1125
|
||||
4 0 0 50 -1 16 14 0.0000 4 180 270 4590 1215 dir\001
|
||||
4 0 0 50 -1 16 14 0.0000 4 165 270 5895 495 up\001
|
||||
@@ -0,0 +1,22 @@
|
||||
[imgTutorial1]: tutorial_firstframe.png
|
||||
[imgTutorial2]: tutorial_accumulatedframe.png
|
||||
[imgSpotLight]: spot_light.fig
|
||||
[imgQuadLight]: quad_light.fig
|
||||
[imgHDRILight]: hdri_light.fig
|
||||
[imgCameraPerspective]: camera_perspective.jpg { width=60% }
|
||||
[imgCameraArchitectural]: camera_architectual.jpg { width=60% }
|
||||
[imgCameraStereo]: camera_stereo.jpg { width=90% }
|
||||
[imgCameraOrthographic]: camera_orthographic.jpg { width=60% }
|
||||
[imgCameraPanoramic]: camera_panoramic.jpg { width=90% }
|
||||
[imgDiffuseRooms]: diffuse_rooms.png { width=80% }
|
||||
[imgNormalMap]: normalmap_frustum.png { width=60% }
|
||||
[imgMaterialOBJ]: material_OBJ.jpg { width=60% }
|
||||
[imgMaterialMetal]: material_Metal.jpg { width=60% }
|
||||
[imgMaterialAlloy]: material_Alloy.jpg { width=60% }
|
||||
[imgMaterialGlass]: material_Glass.jpg { width=60% }
|
||||
[imgMaterialThinGlass]: material_ThinGlass.jpg { width=60% }
|
||||
[imgMaterialMetallicPaint]: material_MetallicPaint.jpg { width=60% }
|
||||
[imgMaterialLuminous]: material_Luminous.jpg { width=60% }
|
||||
[imgColoredWindow]: ColoredWindow.jpg { width=60% }
|
||||
[imgExampleViewer]: exampleViewerGUI.jpg
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
Disclaimer and Legal Information
|
||||
================================
|
||||
|
||||
© 2013–2018 Intel Corporation
|
||||
|
||||
Intel, the Intel logo, Xeon, Intel Xeon Phi, and Intel Core are
|
||||
trademarks of Intel Corporation in the U.S. and/or other countries.
|
||||
*Other names and brands may be claimed as the property of others.
|
||||
|
||||
|
||||
Optimization Notice: Intel's compilers may or may not optimize to the
|
||||
same degree for non-Intel microprocessors for optimizations that are not
|
||||
unique to Intel microprocessors. These optimizations include SSE2, SSE3,
|
||||
and SSSE3 instruction sets and other optimizations. Intel does not
|
||||
guarantee the availability, functionality, or effectiveness of any
|
||||
optimization on microprocessors not manufactured by Intel.
|
||||
Microprocessor-dependent optimizations in this product are intended for
|
||||
use with Intel microprocessors. Certain optimizations not specific to
|
||||
Intel microarchitecture are reserved for Intel microprocessors. Please
|
||||
refer to the applicable product User and Reference Guides for more
|
||||
information regarding the specific instruction sets covered by this
|
||||
notice.
|
||||
Notice Revision #20110804
|
||||
@@ -0,0 +1,15 @@
|
||||
|
||||
[Embree]: https://embree.github.io/
|
||||
[news/updates]: http://www.ospray.org/news.html
|
||||
[getting OSPRay]: http://www.ospray.org/downloads.html
|
||||
[OSPRay Demos and Examples]: http://www.ospray.org/demos.html
|
||||
[OSPRayReadme]: http://www.sdvis.org/ospray/download/OSPRay_readme_devel.pdf "OSPRay Documentation"
|
||||
[gensv/generateSciVis.cpp]: https://github.com/ospray/ospray/blob/devel/modules/mpi/apps/gensv/generateSciVis.cpp#L213
|
||||
|
||||
[tutorial]: #tutorial
|
||||
[camera]: #cameras
|
||||
[volume]: #volumes
|
||||
[path tracer]: #path-tracer
|
||||
[point light]: #point-light-sphere-light
|
||||
[Compiling OSPRay]: #compiling-ospray
|
||||
[Parallel Rendering with MPI]: #parallel-rendering-with-mpi
|
||||
@@ -0,0 +1,14 @@
|
||||
[Embree]: https://embree.github.io/
|
||||
[news/updates]: news.html
|
||||
[getting OSPRay]: downloads.html
|
||||
[OSPRay Demos and Examples]: demos.html
|
||||
[OSPRayReadme]: http://www.sdvis.org/ospray/download/OSPRay_readme_devel.pdf "OSPRay Documentation"
|
||||
[gensv/generateSciVis.cpp]: https://github.com/ospray/ospray/blob/devel/modules/mpi/apps/gensv/generateSciVis.cpp#L213
|
||||
|
||||
[tutorial]: documentation.html#tutorial
|
||||
[camera]: documentation.html#cameras
|
||||
[volume]: documentation.html#volumes
|
||||
[path tracer]: documentation.html#path-tracer
|
||||
[point light]: documentation.html#point-light-sphere-light
|
||||
[Compiling OSPRay]: documentation.html#compiling-ospray
|
||||
[Parallel Rendering with MPI]: documentation.html#parallel-rendering-with-mpi
|
||||
+173
@@ -0,0 +1,173 @@
|
||||
Parallel Rendering with MPI
|
||||
===========================
|
||||
|
||||
OSPRay has the ability to scale to multiple nodes in a cluster via MPI.
|
||||
This enables applications to take advantage of larger compute and memory
|
||||
resources when available.
|
||||
|
||||
Prerequisites for MPI Mode
|
||||
--------------------------
|
||||
|
||||
In addition to the standard build requirements of OSPRay, you must have
|
||||
the following items available in your environment in order to build&run
|
||||
OSPRay in MPI mode:
|
||||
|
||||
- An MPI enabled multi-node environment, such as an HPC cluster
|
||||
- An MPI implementation you can build against (i.e. Intel MPI,
|
||||
MVAPICH2, etc...)
|
||||
|
||||
Enabling the MPI Module in your Build
|
||||
-------------------------------------
|
||||
|
||||
To build the MPI module the CMake option `OSPRAY_MODULE_MPI` must be
|
||||
enabled, which can be done directly on the command line (with
|
||||
`-DOSPRAY_MODULE_MPI=ON`) or through a configuration dialog (`ccmake`,
|
||||
`cmake-gui`), see also [Compiling OSPRay].
|
||||
|
||||
This will trigger CMake to go look for an MPI implementation in your
|
||||
environment. You can then inspect the CMake value of `MPI_LIBRARY` to
|
||||
make sure that CMake found your MPI build environment correctly.
|
||||
|
||||
This will result in an OSPRay module being built. To enable using it,
|
||||
applications will need to either link `libospray_module_mpi`, or call
|
||||
|
||||
ospLoadModule("mpi");
|
||||
|
||||
before initializing OSPRay.
|
||||
|
||||
Modes of Using OSPRay's MPI Features
|
||||
------------------------------------
|
||||
|
||||
OSPRay provides two ways of using MPI to scale up rendering: offload and
|
||||
distributed.
|
||||
|
||||
### Offload Rendering
|
||||
|
||||
The "offload" rendering mode is where a single (not-distributed) calling
|
||||
application treats the OSPRay API the same as with local rendering.
|
||||
However, OSPRay uses multiple MPI connected nodes to evenly distribute
|
||||
frame rendering work, where each node contains a full copy of all scene
|
||||
data. This method is most effective for scenes which can fit into
|
||||
memory, but are very expensive to render: for example, path tracing with
|
||||
many samples-per-pixel is very compute heavy, making it a good situation
|
||||
to use the offload feature. This can be done with any application which
|
||||
already uses OSPRay for local rendering without the need for any code
|
||||
changes.
|
||||
|
||||
When doing MPI offload rendering, applications can optionally enable
|
||||
dynamic load balancing, which can be beneficial in certain contexts.
|
||||
This load balancing refers to the distribution of tile rendering work
|
||||
across nodes: thread-level load balancing on each node is still dynamic
|
||||
with the thread tasking system. The options for enabling/controlling the
|
||||
dynamic load balacing features on the `mpi_offload` device are found in
|
||||
the table below, which can be changed while the application is running.
|
||||
Please note that these options will likely only pay off for scenes which
|
||||
have heavy rendering load (e.g. path tracing a non-trivial scene) and
|
||||
have a lot of variance in how expensive each tile is to render.
|
||||
|
||||
Type Name Default Description
|
||||
----- -------------------- -------- --------------------------------------
|
||||
bool dynamicLoadBalancer false whether to use dynamic load balancing
|
||||
----- -------------------- -------- --------------------------------------
|
||||
: Parameters specific to the `mpi_offload` device
|
||||
|
||||
### Distributed Rendering
|
||||
|
||||
The "distributed" rendering mode is where a MPI distributed application
|
||||
(such as a scientific simulation) uses OSPRay collectively to render
|
||||
frames. In this case, the API expects all calls (both created objects
|
||||
and parameters) to be the same on every application rank, except each
|
||||
rank can specify arbitrary geometries and volumes. Each renderer will
|
||||
have its own limitations on the topology of the data (i.e. overlapping
|
||||
data regions, concave data, etc.), but the API calls will only differ
|
||||
for scene objects. Thus all other calls (i.e. setting camera, creating
|
||||
framebuffer, rendering frame, etc.) will all be assumed to be identical,
|
||||
but only rendering a frame and committing the model must be in
|
||||
lock-step. This mode targets using all available aggregate memory for
|
||||
very large scenes and for "in-situ" visualization where the data is
|
||||
already distributed by a simulation app.
|
||||
|
||||
Running an Application with the "offload" Device
|
||||
------------------------------------------------
|
||||
|
||||
As an example, our sample viewer can be run as a single application
|
||||
which offloads rendering work to multiple MPI processes running on
|
||||
multiple machines.
|
||||
|
||||
The example apps are setup to be launched in two different setups. In
|
||||
either setup, the application must initialize OSPRay with the offload
|
||||
device. This can be done by creating an "`mpi_offload`" device and
|
||||
setting it as the current device (via the `ospSetCurrentDevice()`
|
||||
function), or passing either "`--osp:mpi`" or "`--osp:mpi-offload`" as a
|
||||
command line parameter to `ospInit()`. Note that passing a command line
|
||||
parameter will automatically call `ospLoadModule("mpi")` to load the MPI
|
||||
module, while the application will have to load the module explicitly if
|
||||
using `ospNewDevice()`.
|
||||
|
||||
### Single MPI Launch
|
||||
|
||||
OSPRay is initialized with the `ospInit()` function call which takes
|
||||
command line arguments in and configures OSPRay based on what it finds.
|
||||
In this setup, the app is launched across all ranks, but workers will
|
||||
never return from `ospInit()`, essentially turning the application into
|
||||
a worker process for OSPRay. Here's an example of running the
|
||||
ospVolumeViewer data-replicated, using `c1`-`c4` as compute nodes and
|
||||
`localhost` the process running the viewer itself:
|
||||
|
||||
mpirun -perhost 1 -hosts localhost,c1,c2,c3,c4 ./ospExampleViewer <scene file> --osp:mpi
|
||||
|
||||
### Separate Application&Worker Launches
|
||||
|
||||
The second option is to explicitly launch the app on rank 0 and worker
|
||||
ranks on the other nodes. This is done by running `ospray_mpi_worker` on
|
||||
worker nodes and the application on the display node. Here's the same
|
||||
example above using this syntax:
|
||||
|
||||
mpirun -perhost 1 -hosts localhost ./ospExampleViewer <scene file> --osp:mpi \
|
||||
: -hosts c1,c2,c3,c4 ./ospray_mpi_worker
|
||||
|
||||
This method of launching the application and OSPRay worker separately
|
||||
works best for applications which do not immediately call `ospInit()` in
|
||||
their `main()` function, or for environments where application
|
||||
dependencies (such as GUI libraries) may not be available on compute
|
||||
nodes.
|
||||
|
||||
Running an Application with the "distributed" Device
|
||||
----------------------------------------------------
|
||||
|
||||
Applications using the new distributed device should initialize OSPRay
|
||||
by creating (and setting current) an "`mpi_distributed`" device or pass
|
||||
`"--osp:mpi-distributed"` as a command line argument to `ospInit()`.
|
||||
Note that due to the semantic differences the distributed device gives
|
||||
the OSPRay API, it is not expected for applications which can already
|
||||
use the offload device to correctly use the distributed device without
|
||||
changes to the application.
|
||||
|
||||
The following additional parameter can be set on the `mpi_distributed`
|
||||
device.
|
||||
|
||||
------- ----------------- ----------------------------------------------
|
||||
Type Name Description
|
||||
------- ----------------- ----------------------------------------------
|
||||
`void*` worldCommunicator A pointer to the `MPI_Comm` which should be
|
||||
used as OSPRay's world communicator. This will
|
||||
set how many ranks OSPRay should expect to
|
||||
participate in rendering. The default is
|
||||
`MPI_COMM_WORLD` where all ranks are expected
|
||||
to participate in rendering.
|
||||
------ ------------ ----------------------------------------------------
|
||||
: Parameters for the `mpi_distributed` device.
|
||||
|
||||
By setting the `worldCommunicator` parameter to a different communicator
|
||||
than `MPI_COMM_WORLD` the client application can tune how OSPRay is run
|
||||
within its processes. The default uses `MPI_COMM_WORLD` and thus expects
|
||||
all processes to also participate in rendering, thus if a subset of processes
|
||||
do not call collectives like `ospRenderFrame` the application would hang.
|
||||
|
||||
For example, an MPI parallel application may be
|
||||
run with one process per-core, however OSPRay is multithreaded and will
|
||||
perform best when run with one process per-node. By splitting `MPI_COMM_WORLD`
|
||||
the application can create a communicator with one rank per-node to then
|
||||
run OSPRay on one process per-node. The remaining ranks on each node
|
||||
can then aggregate their data to the OSPRay process for rendering.
|
||||
|
||||
+269
@@ -0,0 +1,269 @@
|
||||
News, Updates, and Announcements
|
||||
================================
|
||||
|
||||
Mar 7, 2018: Version v1.5.0 now released on GitHub
|
||||
---------------------------------------------------
|
||||
|
||||
New release version 1.5.0 is now available on the [OSPRay GitHub
|
||||
page](https://github.com/ospray/OSPRay/releases/v1.5.0).
|
||||
|
||||
|
||||
Jan 10, 2018: Version v1.4.3 now released on GitHub
|
||||
---------------------------------------------------
|
||||
|
||||
New release version 1.4.3 is now available on the [OSPRay GitHub
|
||||
page](https://github.com/ospray/OSPRay/releases/v1.4.3).
|
||||
|
||||
|
||||
Nov 28, 2017: Version v1.4.2 now released on GitHub
|
||||
---------------------------------------------------
|
||||
|
||||
New release version 1.4.2 is now available on the [OSPRay GitHub
|
||||
page](https://github.com/ospray/OSPRay/releases/v1.4.2).
|
||||
|
||||
|
||||
Nov 10, 2017: Version v1.4.1 now released on GitHub
|
||||
---------------------------------------------------
|
||||
|
||||
New release version 1.4.1 is now available on the [OSPRay GitHub
|
||||
page](https://github.com/ospray/OSPRay/releases/v1.4.1).
|
||||
|
||||
|
||||
Sept 29, 2017: Version v1.4.0 now released on GitHub
|
||||
----------------------------------------------------
|
||||
|
||||
New release version 1.4.0 is now available on the [OSPRay GitHub
|
||||
page](https://github.com/ospray/OSPRay/releases/v1.4.0).
|
||||
|
||||
|
||||
July 7, 2017: Version v1.3.1 now released on GitHub
|
||||
---------------------------------------------------
|
||||
|
||||
New release version 1.3.1 is now available on the [OSPRay GitHub
|
||||
page](https://github.com/ospray/OSPRay/releases/v1.3.1).
|
||||
|
||||
|
||||
June 2, 2017: Version v1.3.0 now released on GitHub
|
||||
---------------------------------------------------
|
||||
|
||||
New release version 1.3.0 is now available on the [OSPRay GitHub
|
||||
page](https://github.com/ospray/OSPRay/releases/v1.3.0).
|
||||
|
||||
Mar 27, 2017: VisIt & OSPRay/SWR
|
||||
--------------------------------
|
||||
|
||||
[Pre-built binaries][1] for
|
||||
[VisIt](https://wci.llnl.gov/simulation/computer-codes/visit) to run
|
||||
with OSPRay or [SWR](http://openswr.org/) are available, see [here for
|
||||
instructions][1].
|
||||
|
||||
[1]: http://web.eecs.utk.edu/~ahota/visitospray/binary.html
|
||||
|
||||
Mar 13, 2017: Version v1.2.1 now released on GitHub
|
||||
----------------------------------------------------
|
||||
|
||||
New release version 1.2.1 is now available on the [OSPRay GitHub
|
||||
page](https://github.com/ospray/OSPRay/releases/v1.2.1).
|
||||
|
||||
Feb 9, 2017: Version v1.2.0 now released on GitHub
|
||||
----------------------------------------------------
|
||||
|
||||
New release version 1.2.0 is now available on the [OSPRay GitHub
|
||||
page](https://github.com/ospray/OSPRay/releases/v1.2.0).
|
||||
|
||||
Nov 30, 2016: Version v1.1.2 now released on GitHub
|
||||
----------------------------------------------------
|
||||
|
||||
New release version 1.1.2 is now available on the [OSPRay GitHub
|
||||
page](https://github.com/ospray/OSPRay/releases/v1.1.2).
|
||||
|
||||
Oct 2016: OSPRay at IEEE Vis
|
||||
----------------------------
|
||||
|
||||
The paper "[OSPRay – A CPU Ray Tracing Framework for Scientific
|
||||
Visualization](http://www.sdvis.org/ospray/download/talks/IEEEVis2016_OSPRay_paper.pdf)"
|
||||
(49MB, [smaller version](http://www.sdvis.org/ospray/download/talks/IEEEVis2016_OSPRay_paper_small.pdf)
|
||||
1.8MB) has been accepted at IEEE Vis. Also available are the [slides of
|
||||
the talk](http://www.sdvis.org/ospray/download/talks/IEEEVis2016_OSPRay_talk.pdf)
|
||||
by Ingo Wald. Additionally, [Jim Jeffers gave a
|
||||
talk](http://www.sdvis.org/presentations/IEEEVis2016_SDVis.pdf)
|
||||
as well.
|
||||
|
||||
Oct 24, 2016: Version v1.1.1 now released on GitHub
|
||||
----------------------------------------------------
|
||||
|
||||
New release version 1.1.1 is now available on the [OSPRay GitHub
|
||||
page](https://github.com/ospray/OSPRay/releases/v1.1.1).
|
||||
|
||||
Oct 4, 2016: Version v1.1.0 now released on GitHub
|
||||
----------------------------------------------------
|
||||
|
||||
New release version 1.1.0 is now available on the [OSPRay GitHub
|
||||
page](https://github.com/ospray/OSPRay/releases/v1.1.0).
|
||||
|
||||
July 20, 2016: Version v1.0.0 now released on GitHub
|
||||
----------------------------------------------------
|
||||
|
||||
New release version 1.0.0 is now available on the [OSPRay GitHub
|
||||
page](https://github.com/ospray/OSPRay/releases/v1.0.0).
|
||||
|
||||
June 3, 2016: Version v0.10.1 now released on GitHub
|
||||
----------------------------------------------------
|
||||
|
||||
New release version 0.10.1 is now available on the [OSPRay GitHub
|
||||
page](https://github.com/ospray/OSPRay/releases/v0.10.1).
|
||||
|
||||
May 13, 2016: Version v0.10.0 now released on GitHub
|
||||
----------------------------------------------------
|
||||
|
||||
New release version 0.10.0 is now available on the [OSPRay GitHub
|
||||
page](https://github.com/ospray/OSPRay/releases/v0.10.0).
|
||||
|
||||
Feb 29, 2016: Version v0.9.1 now released on GitHub
|
||||
---------------------------------------------------
|
||||
|
||||
New release version 0.9.1 is now available on the [OSPRay GitHub
|
||||
page](https://github.com/ospray/OSPRay/releases/v0.9.1).
|
||||
|
||||
Dec 18, 2015: Version v0.9.0 now released on GitHub
|
||||
---------------------------------------------------
|
||||
|
||||
New release version 0.9.0 is now available on the [OSPRay GitHub
|
||||
page](https://github.com/ospray/OSPRay/releases/v0.9.0).
|
||||
|
||||
Dec 7, 2015: Version v0.8.3 now released on GitHub
|
||||
--------------------------------------------------
|
||||
|
||||
New release version 0.8.3 is now available on the [OSPRay GitHub
|
||||
page](https://github.com/ospray/OSPRay).
|
||||
|
||||
Nov, 2015: Visualization of the 10TB Walls Dataset
|
||||
--------------------------------------------------
|
||||
|
||||
[](gallery.html)
|
||||
|
||||
[SGI](http://www.sgi.com/) featured the visualization of the 10TB
|
||||
`walls` dataset at [SC15](http://sc15.supercomputing.org/) in Austin,
|
||||
Texas. More details in [SGI's
|
||||
blog](http://blog.sgi.com/accelerating-scientific-discovery-through-visualization/).
|
||||
Additional images and a movie are available in the
|
||||
[gallery](gallery.html).
|
||||
|
||||
July 22, 2015: Version v0.8.2 now released on GitHub
|
||||
--------------------------------------------------
|
||||
|
||||
New release version 0.8.2 is now available on the [OSPRay GitHub
|
||||
page](https://github.com/ospray/OSPRay).
|
||||
|
||||
July 13, 2015: OSPRay demo on KNL and Omni-Path at ISC15
|
||||
-------------------------------------------------------
|
||||
|
||||
The first public demonstration of OSPRay on Intel® Xeon Phi™ processor (Knights Landing)
|
||||
processors and Intel® Omni-Path Fabric is being shown at [ISC15](http://www.isc-hpc.com/)
|
||||
in Frankfurt. The demo with [the Centre for Theoretical Cosmology (CTC)](http://www.ctc.cam.ac.uk/)
|
||||
is a visualization of Cosmic Microwave Background (CMB) data captured by the Planck Satellite.
|
||||
More details [here](http://blogs.intel.com/evangelists/2015/07/13/knl-and-omnipath-demonstrations-proof-of-gravitational-lensing-seems-cool-to-me-what-do-i-know/).
|
||||
|
||||
May 11, 2015: OSPRay mailing list
|
||||
---------------------------------
|
||||
|
||||
We have created a new mailing list for OSPRay release announcements and
|
||||
major news. Subscribe
|
||||
[here](https://groups.google.com/forum/#!forum/ospray-announce/join).
|
||||
|
||||
|
||||
May 8, 2015: Version v0.8.1 now released on GitHub
|
||||
--------------------------------------------------
|
||||
|
||||
New release version 0.8.1 is now available on the [OSPRay GitHub
|
||||
page](https://github.com/ospray/OSPRay).
|
||||
|
||||
|
||||
Apr 22, 2015: Version v0.8.0 now released on GitHub
|
||||
---------------------------------------------------
|
||||
|
||||
New release version 0.8.0 is now available on the [OSPRay GitHub
|
||||
page](https://github.com/ospray/OSPRay).
|
||||
|
||||
|
||||
Apr 2015: "First Light" for OSPRay-enabled BALLView
|
||||
---------------------------------------------------
|
||||
|
||||
[](related_projects/ballview/ballview.png)
|
||||
|
||||
Andreas Hildebrandt, head of the [Software Engineering and
|
||||
Bioinformatics group at the University of
|
||||
Mainz](http://bio.informatik.uni-mainz.de/) is currently creating an
|
||||
OSPRay rendering module for their [BALLView](http://www.ball-project.org/ballview/)
|
||||
package, a standalone molecular modelling and visualization application
|
||||
for the "BALL" Biochemical Algorithm Library.
|
||||
|
||||
|
||||
Apr 2015: OSPRay related paper accepted at EGPGV
|
||||
------------------------------------------------
|
||||
|
||||
A paper on extending OSPRay to allow ray tracing of unstructured
|
||||
polyhedral grids has been accepted at the EUROGRAPHICS Symposium on
|
||||
Parallel Graphics and Visualization (EGPGV).
|
||||
|
||||
|
||||
Apr 2015: "First Light" of upcoming MPI and Display Wall Support
|
||||
----------------------------------------------------------------
|
||||
|
||||
[](displaywall.html)
|
||||
|
||||
We now have "first light" for some upcoming OSPRay MPI-Parallel
|
||||
Rendering and Display Wall features planned for OSPRay 0.9. The attached
|
||||
image shows [OSPRay parallel rendering on TACCs 320 MPixel "Stallion"
|
||||
Display wall](displaywall.html). [Read more.](displaywall.html)
|
||||
|
||||
|
||||
Apr 6, 2015: Public Talk on OSPRay, Embree, and SWR at Sandia
|
||||
-------------------------------------------------------------
|
||||
|
||||
|
||||
Mar 12, 2015: Version v0.7.2 now Released on GitHub
|
||||
---------------------------------------------------
|
||||
|
||||
New release version 0.7.2 is now available on the [OSPRay GitHub
|
||||
page](https://github.com/ospray/OSPRay).
|
||||
|
||||
|
||||
Dec 12, 2014: OSPRay "Alpha" Release Now Available
|
||||
--------------------------------------------------
|
||||
|
||||
Following our announcement at Supercomputing 2014, an early "alpha"
|
||||
version of OSPRay is now available on
|
||||
[GitHub](https://github.com/ospray/OSPRay). The main purpose of this
|
||||
"alpha" release is to give interested parties an early indication of the
|
||||
capabilities, features, and performance they can can expect from the
|
||||
eventual 1.0 version (which we anticipate releasing in 2015), as well as
|
||||
to give early adopters "something" to experiment with that is
|
||||
unencumbered by NDAs.
|
||||
|
||||
Being an "alpha"-level release a certain amount of bugs, as-yet-missing
|
||||
features, or any other issues in the current version cannot be ruled
|
||||
out; however, we are committed to eradicating all such issues as soon as
|
||||
possible, and will constantly be posting bugfix-releases fox fixed
|
||||
issues. Should you find any such issues please report them immediately
|
||||
via [OSPRay's GitHub Issue
|
||||
Tracker](https://github.com/ospray/OSPRay/issues) (or send us a pull
|
||||
request); for missing features please contact us via email at
|
||||
<ospray@googlegroups.com>.
|
||||
|
||||
|
||||
Nov 25, 2014: SC14 slides now available
|
||||
---------------------------------------
|
||||
|
||||
The slides for our OSPRay-related talks at SC14 are now available
|
||||
|
||||
- Christiaan Gribble's ["High-Performance Radio Frequency Ray Tracing
|
||||
with Embree (and
|
||||
OSPRay)"](http://www.rtvtk.org/~cgribble/research/papers/gribble14high.pdf).
|
||||
- ["OSPRay - A Ray Tracing based Rendering Engine for High-Fidelity
|
||||
Visualization"](http://www.sdvis.org/ospray/download/talks/SC14DevConf-OSPRay.pdf)
|
||||
(presented at the Intel® HPC Developers Conference at SC14).
|
||||
- ["High-Fidelity
|
||||
Visualization"](http://www.sdvis.org/ospray/download/talks/UltraVis14-HiFiVis-compressed.pdf)
|
||||
(presented at UltraVis 2014)
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
OSPRay Overview
|
||||
===============
|
||||
|
||||
OSPRay is an **o**pen source, **s**calable, and **p**ortable **ray**
|
||||
tracing engine for high-performance, high-fidelity visualization on
|
||||
Intel® Architecture CPUs. OSPRay is released under the permissive
|
||||
[Apache 2.0 license](http://www.apache.org/licenses/LICENSE-2.0).
|
||||
|
||||
The purpose of OSPRay is to provide an open, powerful, and easy-to-use
|
||||
rendering library that allows one to easily build applications that use
|
||||
ray tracing based rendering for interactive applications (including both
|
||||
surface- and volume-based visualizations). OSPRay is completely
|
||||
CPU-based, and runs on anything from laptops, to workstations, to
|
||||
compute nodes in HPC systems.
|
||||
|
||||
OSPRay internally builds on top of [Embree] and [ISPC (Intel® SPMD
|
||||
Program Compiler)](https://ispc.github.io/), and fully utilizes modern
|
||||
instruction sets like Intel® SSE4, AVX, AVX2, and AVX-512 to achieve
|
||||
high rendering performance, thus a CPU with support for at least SSE4.1
|
||||
is required to run OSPRay.
|
||||
|
||||
|
||||
OSPRay Support and Contact
|
||||
--------------------------
|
||||
|
||||
OSPRay is under active development, and though we do our best to
|
||||
guarantee stable release versions a certain number of bugs,
|
||||
as-yet-missing features, inconsistencies, or any other issues are
|
||||
still possible. Should you find any such issues please report
|
||||
them immediately via [OSPRay's GitHub Issue
|
||||
Tracker](https://github.com/ospray/OSPRay/issues) (or, if you should
|
||||
happen to have a fix for it,you can also send us a pull request); for
|
||||
missing features please contact us via email at
|
||||
<ospray@googlegroups.com>.
|
||||
|
||||
For recent news, updates, and announcements, please see our complete
|
||||
[news/updates] page.
|
||||
|
||||
Join our [mailing
|
||||
list](https://groups.google.com/forum/#!forum/ospray-announce/join) to
|
||||
receive release announcements and major news regarding OSPRay.
|
||||
|
||||
@@ -0,0 +1,191 @@
|
||||
\usepackage{polyglossia}
|
||||
\setdefaultlanguage{english}
|
||||
|
||||
\usepackage{amssymb,amsmath}
|
||||
\usepackage{nicefrac}
|
||||
\usepackage{ifxetex,ifluatex}
|
||||
\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
|
||||
\usepackage[T1]{fontenc}
|
||||
\usepackage[utf8]{inputenc}
|
||||
\else % if luatex or xelatex
|
||||
\ifxetex
|
||||
% \usepackage{mathspec}
|
||||
\usepackage[no-sscript]{xltxtra}
|
||||
\usepackage{xunicode}
|
||||
\else
|
||||
\usepackage{fontspec}
|
||||
\fi
|
||||
\defaultfontfeatures{Mapping=tex-text,Scale=MatchLowercase}
|
||||
\newcommand{\euro}{€}
|
||||
\fi
|
||||
% use upquote if available, for straight quotes in verbatim environments
|
||||
\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
|
||||
% use microtype if available
|
||||
\IfFileExists{microtype.sty}{%
|
||||
\usepackage{microtype}
|
||||
\UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts
|
||||
}{}
|
||||
\PassOptionsToPackage{hyphens}{url} % url is loaded by hyperref
|
||||
\usepackage{tabu,booktabs}
|
||||
\tabulinesep=3pt
|
||||
|
||||
\usepackage{graphicx}
|
||||
\usepackage{color}
|
||||
\usepackage{fancyvrb}
|
||||
\newcommand{\VerbBar}{|}
|
||||
\newcommand{\VERB}{\Verb[commandchars=\\\{\}]}
|
||||
\DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}}
|
||||
% fix issue with linebreaks and letter spacing in non-cpp blocks
|
||||
\DefineVerbatimEnvironment{verbatim}{Verbatim}{}
|
||||
% Add ',fontsize=\small' for more characters per line
|
||||
\newenvironment{Shaded}{}{}
|
||||
\newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{#1}}}
|
||||
\newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.56,0.13,0.00}{#1}}
|
||||
\newcommand{\DecValTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}}
|
||||
\newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}}
|
||||
\newcommand{\FloatTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}}
|
||||
\newcommand{\ConstantTok}[1]{\textcolor[rgb]{0.53,0.00,0.00}{#1}}
|
||||
\newcommand{\CharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
|
||||
\newcommand{\SpecialCharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
|
||||
\newcommand{\StringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
|
||||
\newcommand{\VerbatimStringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
|
||||
\newcommand{\SpecialStringTok}[1]{\textcolor[rgb]{0.73,0.40,0.53}{#1}}
|
||||
\newcommand{\ImportTok}[1]{#1}
|
||||
\newcommand{\CommentTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textit{#1}}}
|
||||
\newcommand{\DocumentationTok}[1]{\textcolor[rgb]{0.73,0.13,0.13}{\textit{#1}}}
|
||||
\newcommand{\AnnotationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
|
||||
\newcommand{\CommentVarTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
|
||||
\newcommand{\OtherTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{#1}}
|
||||
\newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.02,0.16,0.49}{#1}}
|
||||
\newcommand{\VariableTok}[1]{\textcolor[rgb]{0.10,0.09,0.49}{#1}}
|
||||
\newcommand{\ControlFlowTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{#1}}}
|
||||
\newcommand{\OperatorTok}[1]{\textcolor[rgb]{0.40,0.40,0.40}{#1}}
|
||||
\newcommand{\BuiltInTok}[1]{#1}
|
||||
\newcommand{\ExtensionTok}[1]{#1}
|
||||
\newcommand{\PreprocessorTok}[1]{\textcolor[rgb]{0.74,0.48,0.00}{#1}}
|
||||
\newcommand{\AttributeTok}[1]{\textcolor[rgb]{0.49,0.56,0.16}{#1}}
|
||||
\newcommand{\RegionMarkerTok}[1]{#1}
|
||||
\newcommand{\InformationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
|
||||
\newcommand{\WarningTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
|
||||
\newcommand{\AlertTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{#1}}}
|
||||
\newcommand{\ErrorTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{#1}}}
|
||||
\newcommand{\NormalTok}[1]{#1}
|
||||
|
||||
\providecommand{\tightlist}{%
|
||||
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
|
||||
|
||||
\makeatletter
|
||||
\def\maxwidth{\ifdim\Gin@nat@width>\columnwidth\columnwidth\else\Gin@nat@width\fi}
|
||||
\def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi}
|
||||
\def\fps@figure{htp}% set default figure placement
|
||||
\makeatother
|
||||
% Scale images if necessary, so that they will not overflow the page
|
||||
% margins by default, and it is still possible to overwrite the defaults
|
||||
% using explicit options in \includegraphics[width, height, ...]{}
|
||||
\setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio}
|
||||
|
||||
\ifxetex
|
||||
\usepackage[setpagesize=false, % page size defined by xetex
|
||||
unicode=false, % unicode breaks when used with xetex
|
||||
xetex]{hyperref}
|
||||
\else
|
||||
\usepackage[unicode=true]{hyperref}
|
||||
\fi
|
||||
|
||||
% read version into \osprayversion
|
||||
\newread\versionfile
|
||||
\openin\versionfile=tmp/version
|
||||
\read\versionfile to\osprayversion
|
||||
\closein\versionfile
|
||||
|
||||
\hypersetup{breaklinks=true,
|
||||
bookmarks=true,
|
||||
pdfauthor={Intel Corporation},
|
||||
pdftitle={OSPRay: An Open, Scalable, Parallel, Ray Tracing Based Rendering Engine for High-Fidelity Visualization \osprayversion},
|
||||
colorlinks=true,
|
||||
citecolor=blue,
|
||||
urlcolor=blue,
|
||||
linkcolor=blue,
|
||||
pdfborder={0 0 0}}
|
||||
|
||||
\copyrightyears{2013--2018}
|
||||
\trademarkacknowledgement{%
|
||||
Intel, the Intel logo, Xeon, Intel Xeon Phi, and Intel Core are
|
||||
trademarks of Intel Corporation in the U.S. and/or other countries.
|
||||
}
|
||||
\ftcoptimizationnotice
|
||||
|
||||
% no hyphenation (e.g. for trademarks)
|
||||
\hyphenation{Intel Xeon}
|
||||
|
||||
|
||||
% fix missing unicode chars in used font
|
||||
\catcode`\⇐\active
|
||||
\def⇐{\ensuremath{\Leftarrow}}
|
||||
|
||||
\catcode`\⇒\active
|
||||
\def⇒{\ensuremath{\Rightarrow}}
|
||||
|
||||
\catcode`\←\active
|
||||
\def←{\ensuremath{\leftarrow}}
|
||||
|
||||
\catcode`\→\active
|
||||
\def→{\ensuremath{\rightarrow}}
|
||||
|
||||
\catcode`\∞\active
|
||||
\def∞{\ensuremath{\infty}}
|
||||
|
||||
\catcode`\½\active
|
||||
\def½{\nicefrac12}
|
||||
|
||||
\catcode`\⅓\active
|
||||
\def⅓{\nicefrac13}
|
||||
|
||||
\catcode`\⅔\active
|
||||
\def⅔{\nicefrac23}
|
||||
|
||||
\catcode`\¼\active
|
||||
\def¼{\nicefrac14}
|
||||
|
||||
\catcode`\¾\active
|
||||
\def¾{\nicefrac34}
|
||||
|
||||
\catcode`\∙\active
|
||||
\def∙{\ensuremath{\cdot}}
|
||||
|
||||
% fix overfull hboxes, somehow required for xelatex
|
||||
% pdflatex and lualatex is fine without
|
||||
\emergencystretch=0.5em
|
||||
|
||||
\makeatletter%
|
||||
\newcommand*{\BreakableChar}{%
|
||||
\leavevmode%
|
||||
\nobreak\hskip\z@skip%
|
||||
\discretionary{}{}{}%
|
||||
\nobreak\hskip\z@skip%
|
||||
}%
|
||||
\makeatother
|
||||
|
||||
% enable (more flexible) linebreaks in \texttt
|
||||
\renewcommand{\texttt}[1]{%
|
||||
\begingroup%
|
||||
\protect\renewcommand{\_}{\textunderscore\BreakableChar}%
|
||||
\ttfamily%
|
||||
\fontdimen3\font=0.1em% interword stretch
|
||||
\fontdimen4\font=0.1em% interword shrink
|
||||
\hyphenchar\font=`\-% to allow hyphenation
|
||||
\begingroup\lccode`~=`/\lowercase{\endgroup\def~}{/\BreakableChar}%
|
||||
\catcode`/=\active%
|
||||
\begingroup\lccode`~=`*\lowercase{\endgroup\def~}{*\BreakableChar}%
|
||||
\catcode`*=\active%
|
||||
\begingroup\lccode`~=`?\lowercase{\endgroup\def~}{?\BreakableChar}%
|
||||
\catcode`?=\active%
|
||||
\begingroup\lccode`~=`)\lowercase{\endgroup\def~}{)\BreakableChar}%
|
||||
\catcode`)=\active%
|
||||
\begingroup\lccode`~=`.\lowercase{\endgroup\def~}{.\BreakableChar}%
|
||||
\catcode`.=\active%
|
||||
\begingroup\lccode`~=`;\lowercase{\endgroup\def~}{;\BreakableChar}%
|
||||
\catcode`;=\active%
|
||||
\scantokens{#1\noexpand}%
|
||||
\endgroup%
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
OSPRay running inside ParaView
|
||||
==============================
|
||||
|
||||
[](related_projects/vtk-paraview/screenshot-paraview-fiu.jpg)
|
||||
|
||||
This picture shows a ParaView plugin that allows ParaView to render
|
||||
through OSPRay, using a ParaView/VTK plugin developed by the Texas
|
||||
Advanced Computing Center. (click on the image for a full-resolution
|
||||
version)
|
||||
|
||||
The particular model used in this screenshot is courtesy Florida
|
||||
International University and the Texas Advanced Computing Center, and
|
||||
stems from a simulation of Ground Water Flow performed by Florida
|
||||
International University.
|
||||
|
||||
Screenshot courtesy Carson Brownlee, Texas Advanced Computing Center.
|
||||
@@ -0,0 +1,23 @@
|
||||
#FIG 3.2 Produced by xfig version 3.2.5c
|
||||
Landscape
|
||||
Center
|
||||
Metric
|
||||
Letter
|
||||
100.00
|
||||
Single
|
||||
-2
|
||||
1200 2
|
||||
2 1 0 3 0 7 50 -1 -1 0.000 0 0 7 1 0 2
|
||||
1 1 2.00 120.00 270.00
|
||||
3150 1800 3150 450
|
||||
2 1 0 3 0 7 50 -1 -1 0.000 0 0 7 1 0 2
|
||||
1 1 2.00 120.00 270.00
|
||||
1350 2700 3150 1800
|
||||
2 2 0 1 0 7 60 -1 -1 0.000 0 0 7 0 0 5
|
||||
3150 450 5400 450 5400 1800 3150 1800 3150 450
|
||||
2 1 0 3 0 7 50 -1 -1 0.000 0 0 7 1 0 2
|
||||
1 1 2.00 120.00 270.00
|
||||
3150 1800 5400 1800
|
||||
4 0 0 50 -1 16 14 0.0000 4 225 840 2700 2340 position\001
|
||||
4 0 0 50 -1 16 14 0.0000 4 225 675 3240 945 edge2\001
|
||||
4 0 0 50 -1 16 14 0.0000 4 225 675 4500 2115 edge1\001
|
||||
@@ -0,0 +1,27 @@
|
||||
\documentclass[oneside]{intel-spec}
|
||||
|
||||
\include{preamble}
|
||||
|
||||
\begin{document}
|
||||
\title{OSPRay\vskip0.3\baselineskip\LARGE
|
||||
\noindent An Open, Scalable, Parallel, Ray Tracing Based Rendering Engine
|
||||
for High-Fidelity Visualization}
|
||||
\version{\osprayversion}
|
||||
|
||||
\maketitle
|
||||
\tableofcontents
|
||||
|
||||
\input{tmp/overview}
|
||||
\input{tmp/changelog}
|
||||
\input{tmp/compilation}
|
||||
\addtocontents{toc}{\protect\setcounter{tocdepth}{2}}
|
||||
\hypersetup{bookmarksdepth=2}
|
||||
\input{tmp/api}
|
||||
\addtocontents{toc}{\protect\setcounter{tocdepth}{1}}
|
||||
\hypersetup{bookmarksdepth=1}
|
||||
\input{tmp/mpi}
|
||||
\input{tmp/examples}
|
||||
|
||||
\makedisclaimers
|
||||
|
||||
\end{document}
|
||||
@@ -0,0 +1,7 @@
|
||||
OSPRay
|
||||
======
|
||||
|
||||
This is release v<OSPRAY_VERSION> of OSPRay. For changes and new features see the
|
||||
[changelog](CHANGELOG.md). Also visit http://www.ospray.org for more
|
||||
information.
|
||||
|
||||
@@ -0,0 +1,73 @@
|
||||
Projects that make use of OSPRay
|
||||
================================
|
||||
|
||||
This page gives a brief (and incomplete) list of other projects that
|
||||
make use of OSPRay, as well as a set of related links to other projects
|
||||
and related information.
|
||||
|
||||
If you have a project that makes use of OSPRay and would like this to be
|
||||
listed here, please let us know.
|
||||
|
||||
|
||||
BALLView
|
||||
--------
|
||||
|
||||
[](related_projects/ballview/ballview.jpg)
|
||||
|
||||
[Prof Andreas
|
||||
Hildebrandt](http://bio.informatik.uni-mainz.de/members/andreas.hildebrandt),
|
||||
head of the [Software Engineering and Bioinformatics
|
||||
group](http://bio.informatik.uni-mainz.de/) at the University of Mainz
|
||||
is currently creating an OSPRay rendering module for their
|
||||
[BALLView](http://www.ballview.org/) package, a standalone molecular
|
||||
modelling and visualization application for the "BALL" Biochemical
|
||||
Algorithm Library.
|
||||
|
||||
|
||||
GLuRay
|
||||
------
|
||||
|
||||
[][GLuRay]
|
||||
|
||||
[GLuRay] OpenGL to Ray Tracing Mapper
|
||||
|
||||
[GLuRay]: https://tacc.github.io/GLuRay/$
|
||||
|
||||
|
||||
pvOSPRay: A OSPRay Plugin to ParaView/VTKx
|
||||
------------------------------------------
|
||||
|
||||
[](related_projects/vtk-paraview/screenshot-paraview-fiu.jpg)
|
||||
|
||||
The Remote Visualization Group at the [Texas Advanced Computing
|
||||
Center](https://www.tacc.utexas.edu/) (TACC) is building and maintaining
|
||||
OSPRay plugins for ParaView, VisIt, and VTK. The [screenshot supplied
|
||||
here](pvospray.html) shows a working version of ParaView, rendering a
|
||||
non-trivial model through OSPRay. All three OSPRay plugins are hosted on
|
||||
TACC's github pages: [pvOSPRay](https://github.com/TACC/pvOSPRay) for
|
||||
the ParaView module, [visitOSPRay](https://github.com/TACC/visitOSPRay)
|
||||
for the VisIt module, and [vtkOSPRay](https://github.com/TACC/vtkOSPRay)
|
||||
for the base VTK module.
|
||||
|
||||
|
||||
StingRay
|
||||
--------
|
||||
|
||||
[](related_projects/stingray/stingray.jpg)
|
||||
|
||||
SURVICE Engineering's ["StingRay"
|
||||
toolkit](http://www.rtvtk.org/~cgribble/research/papers/gribble14high.pdf)
|
||||
makes use of Embree for simulating radio frequency, and uses OSPRay for
|
||||
visualizing the resuls.
|
||||
|
||||
|
||||
Projects that are closely related to OSPRay
|
||||
===========================================
|
||||
|
||||
- The [Embree](http://embree.github.io) Ray Tracing Kernel Framework
|
||||
- The [Intel® SPMD Program Compiler](http://ispc.github.io) (ISPC)
|
||||
- OSPRay's "sister project" is [OpenSWR](http://OpenSWR.github.io)
|
||||
(**o**pen **s**oft**w**are **r**asterizer), a new high-performance,
|
||||
highly-scalable, software OpenGL implementation that runs on host
|
||||
CPUs.
|
||||
|
||||
@@ -0,0 +1,128 @@
|
||||
# Scenegraph
|
||||
|
||||
## <span style="color:red"> WARNING: USE AT YOUR OWN RISK. The Scenegraph is currently in Alpha mode and will change frequently. It is not
|
||||
yet recommended for critical production work. </span>
|
||||
|
||||
The scenegraph is the basis of our exampleViewer which consists of a superset of OSPRay objects represented in a graph hierarchy (currently a tree). This
|
||||
graph functions as a hierarchical specification for scene properties and a self-managed update graph. The
|
||||
scenegraph infrastructure includes many convenience functions for templated traversals, queries of
|
||||
state and child state, automated updates, and timestamped modifications to underlying state.
|
||||
|
||||
The scenegraph nodes closely follow the dependencies of existing OSPRay API internals, ie
|
||||
a sg::Renderer has a "model" child, which in turn has a "TriangleMesh", which in turn has a child
|
||||
named "vertex" similar to how you may set the "vertex" parameter on the osp::TriangleMesh which in
|
||||
turn is added to an OSPModel object which is set as the model on the OSPRenderer. The scenegraph
|
||||
is a supserset of OSPRay functionality so there isn't a direct 1:1 mapping between the scenegraph
|
||||
hierarchy in all cases, however it is kept as close as possible. This makes the scene graph viewer
|
||||
in ospExampleViewer a great way to understand OSPRay state.
|
||||
|
||||
|
||||
### Hierarchy Structure
|
||||
The root of the scenegraph is based on sg::Renderer. The scenegraph can be created by
|
||||
```
|
||||
auto renderer = sg::createNode("renderer", "Renderer");
|
||||
```
|
||||
which automatically creates child nodes for necessary OSPRay state. To update and commit all state and render
|
||||
a single function is provided which can be called with:
|
||||
```
|
||||
renderer.renderFrame(renderer["frameBuffer"].nodeAs<sg::FrameBuffer>);
|
||||
```
|
||||
Values can be set using:
|
||||
```
|
||||
renderer["spp"] = 16;
|
||||
```
|
||||
The explore the full set of nodes, simply launch the exampleViewer and traverse through the
|
||||
GUI representation of all scenegraph nodes.
|
||||
|
||||
### Traversals
|
||||
The scenegraph contains a set of builtin traversals as well as modular visitor functors for
|
||||
implementing custom passes over the scenegraph. The required traversals are handled for you
|
||||
by default within the renderFrame function on the renderer. For any given node there are two phases
|
||||
to a traversal operation, pre and post traversal of the nodes children. preTraversal initializes
|
||||
node state and objects and sets the current traversal context with appropriate state. For instance,
|
||||
sg::Model will create a new OSPModel object, set its value to that object,
|
||||
and set sg::RenderContext.currentOSPModel to its own value. After preTraversal is finished, the children
|
||||
of sg::Model are processed in a similar fashion and now use the modified context. In postTraversal,
|
||||
sg::Model will commit the changes that its children have potentially set and it will pop its modifications
|
||||
from the current context. This behavior is replicated for every scenegraph node and enables children
|
||||
to act on parent state without specific implementations from the parent node. An example of this are the
|
||||
sg::NodeParam nodes which are containers for values to be set on OSPObjects, such as a float value. This
|
||||
is put on the scenegraph with a call to:
|
||||
```
|
||||
renderer["lights"]["sun"].createChild("intensity", "float", 0.3f);
|
||||
```
|
||||
This call accesses the child named "lights" on the renderer, and in turn the child named "sun".
|
||||
This child then gets its own child of a newly created node with the name "intensity" of type "float"
|
||||
with a value of 0.3f. When committed, this node will call ospSet1f with the node value on the current
|
||||
OSPObject on the context which is set by the parent. If you were to create a custom light called "MyLight"
|
||||
and had a float parameter called "flickerFreq", a similar line would be used without requiring any additional
|
||||
changes in the scenegraph internals beyond registering the new light class. Known parameters such as
|
||||
floats will also show up in the exampleViewerGUI without requiring any additional code beyond adding them to
|
||||
the scenegraph and the internal implementation in OSPRay.
|
||||
|
||||
The base passes required to utilize the scenegraph
|
||||
include verification, commit, and render traversals. Every node in the scenegraph has a valid state
|
||||
which needs to be set before operating on the node. Nodes may have custom qualifications for validity,
|
||||
but by default they are set through valid_ flags on the scenegraph Node for things like whitelists
|
||||
and range checks. Once verified, Commit traverses the scenegraph and commits scenegraph state to
|
||||
OSPRay. Commits are timestamped, so re-committing will only have any affect if a dependent child
|
||||
has been modified requiring a new commit. Because of this, each node does not have to track if it is
|
||||
valid or if anything in the scene has been modified, as commit will only be called on that node if those
|
||||
are already true. By default invalid nodes with throw exceptions, however this can be turned off which enables
|
||||
the program to keep running. In the exampleViewer GUI, invalid nodes will be marked in red but the previously
|
||||
committed state will keep rendering until the invalid state is corrected.
|
||||
|
||||
For examples of implementing custom traversals, see the sg/visitors folder. Here is an example of
|
||||
a visitor that collects all nodes with a given name:
|
||||
|
||||
```
|
||||
struct GatherNodesByName : public Visitor
|
||||
{
|
||||
GatherNodesByName(const std::string &_name);
|
||||
|
||||
bool operator()(Node &node, TraversalContext &ctx) override;
|
||||
|
||||
std::vector<std::shared_ptr<Node>> results();
|
||||
|
||||
private:
|
||||
std::string name;
|
||||
std::vector<std::shared_ptr<Node>> nodes;
|
||||
};
|
||||
|
||||
// Inlined definitions ////////////////////////////////////////////////////
|
||||
|
||||
inline GatherNodesByName::GatherNodesByName(const std::string &_name)
|
||||
: name(_name)
|
||||
{
|
||||
}
|
||||
|
||||
inline bool GatherNodesByName::operator()(Node &node, TraversalContext &)
|
||||
{
|
||||
if (utility::longestBeginningMatch(node.name(), this->name) == this->name) {
|
||||
auto itr = std::find_if(
|
||||
nodes.begin(),
|
||||
nodes.end(),
|
||||
[&](const std::shared_ptr<Node> &nodeInList) {
|
||||
return nodeInList.get() == &node;
|
||||
}
|
||||
);
|
||||
|
||||
if (itr == nodes.end())
|
||||
nodes.push_back(node.shared_from_this());
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
inline std::vector<std::shared_ptr<Node>> GatherNodesByName::results()
|
||||
{
|
||||
return nodes;// TODO: should this be a move (i.e. reader 'consumes')?
|
||||
}
|
||||
```
|
||||
|
||||
### Thread Safety
|
||||
The scenegraph is only thread safe for accessing and setting values on nodes. More advanced
|
||||
operations like adding or removing nodes are not thread safe. At some point we hope to add
|
||||
transactions to handle these, but for now the scenegraph nodes must be added/removed on the same
|
||||
thread that is committing and rendering.
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
#FIG 3.2 Produced by xfig version 3.2.5c
|
||||
Landscape
|
||||
Center
|
||||
Metric
|
||||
Letter
|
||||
100.00
|
||||
Single
|
||||
-2
|
||||
1200 2
|
||||
5 1 0 1 0 7 50 -1 -1 0.000 0 1 0 0 4275.000 1974.375 3600 3150 4275 3330 4950 3150
|
||||
5 1 0 1 0 7 50 -1 -1 0.000 0 1 0 0 4972.500 3307.500 5175 4140 5310 4095 5400 4050
|
||||
2 1 0 3 0 7 50 -1 -1 0.000 0 0 7 0 0 3
|
||||
2250 5850 4275 1800 6300 5850
|
||||
2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 3
|
||||
2700 5850 4275 1800 5850 5850
|
||||
4 0 0 50 -1 16 14 0.0000 4 225 1500 4950 2970 openingAngle\001
|
||||
4 0 0 50 -1 16 14 0.0000 4 225 1710 5400 3870 penumbraAngle\001
|
||||
@@ -0,0 +1,419 @@
|
||||
body {
|
||||
font-size: 16px;
|
||||
font-weight: normal;
|
||||
letter-spacing: normal;
|
||||
color:#373737;
|
||||
background: #f2f2f2;
|
||||
font-family: "Myriad Set Pro", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
text-rendering: optimizeLegibility;
|
||||
font-style: normal;
|
||||
line-height: 1.5;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
text-align: justify;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
margin: 5px 0;
|
||||
font-weight: 700;
|
||||
color: #0071C5;
|
||||
letter-spacing: normal;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
h2 {
|
||||
background: none;
|
||||
border-top: 1pt solid #333;
|
||||
padding-top: 0.5em;
|
||||
}
|
||||
|
||||
h1 { font-size: 24px; }
|
||||
h2 { font-size: 20px; }
|
||||
h3 { font-size: 16px; }
|
||||
h4 { font-size: 16px; }
|
||||
|
||||
p {
|
||||
margin: 10px 0 15px 0;
|
||||
}
|
||||
|
||||
dl dt { font-weight:bold;
|
||||
}
|
||||
|
||||
code { font-size: 90%; }
|
||||
|
||||
li p { margin: 0 }
|
||||
|
||||
img {
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
padding: 0 2em 1ex 0;
|
||||
}
|
||||
figcaption {
|
||||
color: #666;
|
||||
text-align: center;
|
||||
}
|
||||
div.left {
|
||||
float: left;
|
||||
max-width: 250px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
br { clear:both; }
|
||||
|
||||
|
||||
#demo-bullets { font-size: 90%; }
|
||||
|
||||
#footer {
|
||||
padding-top: 5px;
|
||||
margin: 0;
|
||||
text-align: center;
|
||||
background:#212121;
|
||||
position:fixed;
|
||||
bottom:0px;
|
||||
height:22px;
|
||||
width:100%;
|
||||
font-size: 12px;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
#footer_padding {
|
||||
margin: 0;
|
||||
text-align: center;
|
||||
background:#212121;
|
||||
bottom:0px;
|
||||
width:100%;
|
||||
height:100%;
|
||||
font-size: 12px;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
#footer a:hover {
|
||||
color:#ff0000;
|
||||
}
|
||||
#footer a {
|
||||
color:#ffffff;
|
||||
}
|
||||
|
||||
#header {
|
||||
color: #fff;
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
letter-spacing: -1px;
|
||||
background: #379;
|
||||
z-index: 1;
|
||||
display: block;
|
||||
}
|
||||
|
||||
#content-wrap {
|
||||
width:100%;
|
||||
height:100%;
|
||||
background: #f2f2f2;
|
||||
/*padding-left: 100px;*/
|
||||
padding-top:100px;
|
||||
}
|
||||
|
||||
#content {
|
||||
padding-left: 5px;
|
||||
padding-right: 0px;
|
||||
position:static;
|
||||
max-width: 1024px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
background: #f2f2f2;
|
||||
padding-top:10px;
|
||||
padding-bottom:10px;
|
||||
}
|
||||
|
||||
#header-title {
|
||||
/*display:inline-block;*/
|
||||
margin: 0;
|
||||
color: #fff;
|
||||
font-size: 42px;
|
||||
/*background:#212121; */
|
||||
font-weight: 700;
|
||||
padding: 20px 0px 0px 10px;
|
||||
text-shadow: #111 0px 0px 10px;
|
||||
/*padding-left: 100px;*/
|
||||
padding-top:10px;
|
||||
letter-spacing: -1px;
|
||||
max-width: 1024px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
#header-subtitle {
|
||||
display:inline-block;
|
||||
color: #fff;
|
||||
font-size: 21px;
|
||||
font-weight: 300;
|
||||
/*background: none;*/
|
||||
text-shadow: #111 0px 0px 10px;
|
||||
/*padding-top: 10px;*/
|
||||
/*padding-left: 100px;*/
|
||||
padding-left: 10px;
|
||||
/*padding-bottom: 10px;*/
|
||||
/*background:#212121; */
|
||||
letter-spacing: -1px;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#header-github {
|
||||
color: #fff;
|
||||
font-size: 16px;
|
||||
font-weight: 300;
|
||||
background: none;
|
||||
}
|
||||
|
||||
#forkme-banner {
|
||||
display: block;
|
||||
position: absolute;
|
||||
top:0;
|
||||
right: 20px;
|
||||
width:250px;
|
||||
z-index: 10;
|
||||
padding: 10px 0px 10px 20px;
|
||||
color: #fff;
|
||||
background: url('images/blacktocat.png') #0090ff no-repeat 80% 50%;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
|
||||
#header-spacing {
|
||||
color: #fff;
|
||||
font-size: 16px;
|
||||
font-weight: 300;
|
||||
height:5px;
|
||||
background: #f2f2f2;
|
||||
}
|
||||
#footer-spacing {
|
||||
color: #fff;
|
||||
font-size: 16px;
|
||||
font-weight: 300;
|
||||
height:5px;
|
||||
background: #f2f2f2;
|
||||
}
|
||||
|
||||
#header-navbar {
|
||||
font-family: 'Myriad Pro', Calibri, Helvetica, Arial, sans-serif;
|
||||
color: #fff;
|
||||
font-size: 14px;
|
||||
font-weight: normal;
|
||||
letter-spacing: normal;
|
||||
background: #444;
|
||||
padding-top: 0px;
|
||||
padding-bottom: 4px;
|
||||
/*padding-left: 100px;*/
|
||||
height:18px;
|
||||
}
|
||||
#header-navbar ul {
|
||||
list-style : none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
padding-top: 2px;
|
||||
max-width: 1024px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
#header-navbar ul li {
|
||||
display: inline;
|
||||
}
|
||||
#header-navbar ul li a {
|
||||
display: block;
|
||||
float: left;
|
||||
padding-left: 8px;
|
||||
padding-right: 8px;
|
||||
color: #DFDFDF;
|
||||
text-decoration: none;
|
||||
}
|
||||
#header-navbar ul li a:hover {
|
||||
color: #FAFAFA;
|
||||
}
|
||||
#header-navbar ul li#selected a {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.title
|
||||
{
|
||||
border: 0; padding: 0; margin: 0;
|
||||
margin-top: 40px;
|
||||
margin-bottom: 60px;
|
||||
}
|
||||
|
||||
.title h1 {
|
||||
color: #333;
|
||||
font-size: 60px;
|
||||
font-weight: 300;
|
||||
text-align: center;
|
||||
border: 0; padding: 0; margin: 0;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.title h2 {
|
||||
color: #888;
|
||||
font-size: 24px;
|
||||
font-weight: 200;
|
||||
text-align: center;
|
||||
border: 0; padding: 0; margin: 0;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
|
||||
div.feature {
|
||||
display:inline-block;
|
||||
width: 100%;
|
||||
margin-left: 5px;
|
||||
margin-right: 5px;
|
||||
margin-top: 10px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
div.feature a {
|
||||
color:#373737;
|
||||
}
|
||||
div.feature img {
|
||||
float: left;
|
||||
display:inline-block;
|
||||
width: 360px;
|
||||
height: 260px;
|
||||
padding:0;
|
||||
box-shadow: 4px 4px 18px -5px rgba(0,0,0,0.86);
|
||||
}
|
||||
.feature-alt img
|
||||
{
|
||||
float: right !important;
|
||||
}
|
||||
|
||||
.feature .container {
|
||||
margin-left: 20px;
|
||||
margin-right: 20px;
|
||||
display:inline-block;
|
||||
max-width: 544px;
|
||||
color: #666;
|
||||
font-size: 18px;
|
||||
font-weight: 200;
|
||||
}
|
||||
|
||||
div.feature p {
|
||||
padding-left: 20px;
|
||||
}
|
||||
|
||||
div.feature h2 {
|
||||
border: 0;
|
||||
color:#555;
|
||||
font-size: 36px;
|
||||
}
|
||||
|
||||
.fadein {
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
margin-bottom: 20px;
|
||||
margin-top: 0px;
|
||||
padding: 0;
|
||||
position: relative;
|
||||
padding-bottom: 58.59375%; /* 600/1024 */
|
||||
max-width: 1000px;
|
||||
}
|
||||
#f1 {
|
||||
box-shadow: 4px 4px 18px -5px rgba(0,0,0,0.86);
|
||||
}
|
||||
.fadein img {
|
||||
margin-left: auto;
|
||||
max-width: 100%;
|
||||
height: 100%;
|
||||
padding: 0;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.teaser-img {
|
||||
margin-top: 60px;
|
||||
margin-bottom: 60px;
|
||||
}
|
||||
|
||||
.teaser-features {
|
||||
margin-top: 250px;
|
||||
margin-bottom: 150px;
|
||||
}
|
||||
|
||||
.fade {
|
||||
animation: fade 30s 1;
|
||||
}
|
||||
@keyframes fade {
|
||||
0% {opacity: 0;}
|
||||
5% {opacity: 0;}
|
||||
20% {opacity: 1;}
|
||||
25% {opacity: 1;}
|
||||
45% {opacity: 0;}
|
||||
50% {opacity: 0;}
|
||||
60% {opacity: 1;}
|
||||
65% {opacity: 1;}
|
||||
75% {opacity: 0;}
|
||||
80% {opacity: 0;}
|
||||
100% {opacity: 1;}
|
||||
}
|
||||
|
||||
hr {
|
||||
width: 60%;
|
||||
display: block;
|
||||
height: 1px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
margin-top: 0px;
|
||||
margin-bottom: 0px;
|
||||
border: 0;
|
||||
border-top: 1.5px solid #aaa;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
table {
|
||||
counter-increment: table;
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
border: 0px solid #373737;
|
||||
margin-top: 20px;
|
||||
margin-bottom: 20px;
|
||||
text-align: left;
|
||||
}
|
||||
table > caption:before {
|
||||
content: 'Table ' counter(table) ': ';
|
||||
color: #0071C5;
|
||||
}
|
||||
|
||||
th {
|
||||
font-family: 'Lucida Grande', 'Helvetica Neue', Helvetica, Arial, sans-serif;
|
||||
padding: 10px;
|
||||
background: #0071C5;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
td {
|
||||
padding: 10px;
|
||||
border: 0px solid #373737;
|
||||
color: #222;
|
||||
background-color: #fff;
|
||||
vertical-align:top;
|
||||
}
|
||||
|
||||
div.figure {
|
||||
clear: both;
|
||||
counter-increment: figure;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
font-size: 100%;
|
||||
font: inherit;
|
||||
vertical-align: baseline;
|
||||
margin: 0 0 3em 0;
|
||||
display: inline-block;
|
||||
width: 100%;
|
||||
}
|
||||
p.caption {
|
||||
margin-top: 3ex;
|
||||
font-size: 1.1rem;
|
||||
line-height: 1.6;
|
||||
text-align: left;
|
||||
}
|
||||
p.caption:before {
|
||||
content: 'Figure ' counter(figure) ': ';
|
||||
color: #0071C5;
|
||||
}
|
||||
+109
@@ -0,0 +1,109 @@
|
||||
<div class= "title">
|
||||
<h1> OSPRay </h1>
|
||||
<h2> A Ray Tracing Based Rendering Engine for High-Fidelity Visualization </h2>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="teaser-img">
|
||||
<div class="fadein">
|
||||
<img id="f1" src="images/rm_volume.jpg">
|
||||
<img id="f2" class="fade" src="images/rm_volume_ao_shadows.jpg"></div><!-- do not change formatting here! -->
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
el=document.getElementById("f2");
|
||||
el.addEventListener("click", function(e) {
|
||||
e.preventDefault;
|
||||
el.classList.remove("fade");
|
||||
void el.offsetWidth;
|
||||
el.classList.add("fade");
|
||||
}, false);
|
||||
</script>
|
||||
<hr>
|
||||
<div class="teaser-features">
|
||||
<div class="feature">
|
||||
<img src="images/heptane_bubbly_osp.jpg">
|
||||
<div class="container">
|
||||
<h2> Interactive CPU Rendering </h2>
|
||||
<p>OSPRay features interactive CPU rendering capabilities geared towards
|
||||
Scientific Visualization applications. Advanced shading effects such as
|
||||
Ambient Occlusion, shadows, and transparency can be rendered interactively,
|
||||
enabling new insights into data exploration.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature feature-alt">
|
||||
<img src="images/mag_pt.jpg">
|
||||
<div class="container">
|
||||
<h2> Global Illumination </h2>
|
||||
|
||||
<p>
|
||||
OSPRay includes a path tracer capable of interactively rendering
|
||||
photorealistic global illumination.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature">
|
||||
<img src="images/rm_volume2.jpg">
|
||||
<div class="container">
|
||||
<h2> Volume Rendering </h2>
|
||||
|
||||
<p>
|
||||
OSPRay supports high-fidelity interactive direct volume rendering with a
|
||||
number of state of the art features.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature feature-alt">
|
||||
<img src="images/dns_small.jpg">
|
||||
<div class="container">
|
||||
<h2> MPI Distributed </h2>
|
||||
|
||||
<p>
|
||||
Run on large scale distributed-memory systems with a high-performance MPI
|
||||
backend. Shown is a 450GB direct numerical simulation dataset running
|
||||
interactively at TACC's Maverick cluster.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature">
|
||||
<a href="displaywall.html">
|
||||
<img src="gallery/ospray_stallion-thumb.jpg">
|
||||
<div class="container">
|
||||
<h2> Display Walls </h2>
|
||||
|
||||
<p>
|
||||
OSPRay parallel rendering on TACC's "Stallion" display wall.
|
||||
</p>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="feature feature-alt">
|
||||
<a href="pvospray.html">
|
||||
<img src="related_projects/vtk-paraview/screenshot-paraview-fiu-thumb.jpg">
|
||||
<div class="container">
|
||||
<h2> ParaView </h2>
|
||||
|
||||
<p>
|
||||
OSPRay is directly integrated into ParaView 5.x. Implementations for
|
||||
VisIt, VMD, and other popular tools have also been developed.
|
||||
</p>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="feature">
|
||||
<img src="images/code.jpg">
|
||||
<div class="container">
|
||||
<h2> Open Source </h2>
|
||||
|
||||
<p>
|
||||
OSPRay is Open Sourced under the Apache 2.0 license.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<p/>
|
||||
<hr>
|
||||
</div>
|
||||
@@ -0,0 +1,66 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html" charset="utf-8">
|
||||
<title>OSPRay$if(select_news)$ News$endif$$if(select_demos)$ Demos$endif$$if(select_documentation)$ Documentation$endif$$if(select_gallery)$ Gallery$endif$$if(select_downloads)$ Download$endif$$if(select_related_projects)$ – RelatedProjects$endif$</title>
|
||||
<script type="text/javascript">
|
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
|
||||
ga('create', 'UA-57290480-1', 'auto');
|
||||
ga('send', 'pageview');
|
||||
</script>
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="stylesheet.css">
|
||||
$if(highlighting-css)$
|
||||
<style type="text/css">
|
||||
$highlighting-css$
|
||||
div.sourceCode { overflow-x: initial; }
|
||||
</style>
|
||||
$endif$
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="header">
|
||||
<div id="header-github">
|
||||
<a id="forkme-banner" href="https://github.com/ospray/OSPRay">View on GitHub</a>
|
||||
</div>
|
||||
<div id="header-title">
|
||||
OSPRay
|
||||
<div id="header-subtitle">
|
||||
A Ray Tracing Based Rendering Engine for High-Fidelity Visualization
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="header-navbar">
|
||||
<ul>
|
||||
<li$if(select_index)$ id="selected"$endif$><a href="index.html">Overview</a></li>
|
||||
<li$if(select_news)$ id="selected"$endif$><a href="news.html">News</a></li>
|
||||
<li$if(select_demos)$ id="selected"$endif$><a href="demos.html">Demos</a></li>
|
||||
<li$if(select_documentation)$ id="selected"$endif$><a href="documentation.html">Documentation</a></li>
|
||||
<li$if(select_gallery)$ id="selected"$endif$><a href="gallery.html">Gallery</a></li>
|
||||
<li$if(select_downloads)$ id="selected"$endif$><a href="downloads.html">Downloads</a></li>
|
||||
<li><a href="https://github.com/ospray/OSPRay/wiki">Wiki</a></li>
|
||||
<li><a href="https://github.com/ospray/OSPRay/issues">Bugs/Issues</a></li>
|
||||
<li$if(select_related_projects)$ id="selected"$endif$><a href="related_projects.html">Related Projects</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="header-spacing"></div>
|
||||
</div>
|
||||
|
||||
<div id="content-wrap">
|
||||
<div id="content">
|
||||
|
||||
$body$
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
$if(select_legal)$
|
||||
$else$
|
||||
<div id="footer">
|
||||
© 2013–2018 Intel Corporation <a href="legal.html">Disclaimer and Legal Information</a>
|
||||
</div>
|
||||
$endif$
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user