Immersive Visualization / IQ-Station Wiki
This site hosts information on virtual reality systems that are geared toward scientific visualization, and as such often toward VR on Linux-based systems. Thus, pages here cover various software (and sometimes hardware) technologies that enable virtual reality operation on Linux.
The original IQ-station effort was to create low-cost (for the time) VR systems making use of 3DTV displays to produce CAVE/Fishtank-style VR displays. That effort pre-dated the rise of the consumer HMD VR systems, however, the realm of midrange-cost large-fishtank systems is still important, and has transitioned from 3DTV-based systems to short-throw projectors.
Difference between revisions of "BuildingANARI"
m (Created a new "ANARI Applications" section, and reduced all heading-levels) |
m (Update for ANARI SDK version 0.10.1) |
||
Line 9: | Line 9: | ||
When building ANARI, there is a choice between downloading/cloning the reference ANARI-SDK, and separately obtaining the GPU accelerated backends, or it is possible to download the pseudo-Superbuild that will download selected backends, and do a complete build. | When building ANARI, there is a choice between downloading/cloning the reference ANARI-SDK, and separately obtaining the GPU accelerated backends, or it is possible to download the pseudo-Superbuild that will download selected backends, and do a complete build. | ||
This documentation last tested with ANARI-SDK version 0.10.1. | |||
==Prerequisites== | ==Prerequisites== | ||
Line 15: | Line 17: | ||
==Cloning ANARI== | ==Cloning ANARI== | ||
Clone from the [https://github.com/KhronosGroup/ANARI-SDK Khronos Github ANARI reposoitory]: | Clone from the [https://github.com/KhronosGroup/ANARI-SDK Khronos Github ANARI reposoitory]. | ||
NOTE: Because ''ANARI'' is still in flux, I always add the current date (YYYYMMDD) and Version as a postfix of my cloned directory name. | |||
<syntaxhighlight> | |||
% git clone -b next_release --single-branch https://github.com/KhronosGroup/ANARI-SDK.git anari-sdk-<date>nr | |||
</syntaxhighlight> | |||
or for the master branch: | |||
<syntaxhighlight> | <syntaxhighlight> | ||
% git clone https://github.com/KhronosGroup/ANARI-SDK.git | % git clone https://github.com/KhronosGroup/ANARI-SDK.git | ||
Line 25: | Line 33: | ||
% mkdir ANARI-SDK/Build | % mkdir ANARI-SDK/Build | ||
% cd ANARI-SDK/Build | % cd ANARI-SDK/Build | ||
% cmake -DCMAKE_INSTALL_PREFIX=... -DCMAKE_BUILD_TYPE:STRING= | % cmake -DCMAKE_INSTALL_PREFIX=... -DCMAKE_BUILD_TYPE:STRING=Release -DBUILD_CTS:BOOL=OFF -DBUILD_TESTING:BOOL=OFF -DBUILD_REMOTE_DEVICE:BOOL=ON -DINSTALL_VIEWER:BOOL=ON .. | ||
% make | % make | ||
% make install | % make install | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<!-- (I don't think this is a concern any longer, but I'm just commenting it out for now) | |||
* NOTE: As of ANARI version 0.8.0, I've had to modify the file "imgui_impl_glfw.cpp" to remove three GLFW function calls that are not part of my version of that library: | * NOTE: As of ANARI version 0.8.0, I've had to modify the file "imgui_impl_glfw.cpp" to remove three GLFW function calls that are not part of my version of that library: | ||
** <TT>glfwGetError</TT> | ** <TT>glfwGetError</TT> | ||
** <TT>glfwGetMonitorWorkarea</TT> | ** <TT>glfwGetMonitorWorkarea</TT> | ||
** <TT>glfwGetMonitorContentScale</TT> | ** <TT>glfwGetMonitorContentScale</TT> | ||
--> | |||
=Running ANARI= | =Running ANARI= | ||
Line 40: | Line 48: | ||
consisting of a pair of triangles into two image files (one with the first pass of the | consisting of a pair of triangles into two image files (one with the first pass of the | ||
render, and one with a later pass). | render, and one with a later pass). | ||
An optional "anariViewer" may also be built which contains a handful of reference scenes, | An optional "anariViewer" may also be built (and the above instructions will build it) | ||
along with an OBJ viewer. | which contains a handful of reference scenes, along with an OBJ viewer. | ||
==Running the ANARI backend info tool== | ==Running the ANARI backend info tool== | ||
<syntaxhighlight> | <syntaxhighlight> | ||
% ./anariInfo -helide | % ./anariInfo -l helide | ||
</syntaxhighlight> | </syntaxhighlight> | ||
This will then output a slew of information about the backend, including what version of | This will then output a slew of information about the backend, including what version of | ||
ANARI it was built for, and what Parameters and Extensions it handles. | ANARI it was built for, and what Parameters and Extensions it handles. | ||
'''In some respect, it can be considered a quick summary of the ANARI specification, insofar as how that particular library implements the spec.''' | |||
==Running the ANARI tutorial example== | ==Running the ANARI tutorial example== | ||
Note that the "anariTutorial" executable (without code changes) will always use the ''helide'' backend. | |||
<syntaxhighlight> | <syntaxhighlight> | ||
% ./anariTutorial | % ./anariTutorial | ||
% display *.ppm | % display *.ppm | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==Running the ANARI viewer example== | ==Running the ANARI viewer example== | ||
The choice of ANARI backend for ''anarViewer'' is controlled by the '''<TT>ANARI_LIBRARY</TT>''' environment variable | |||
<syntaxhighlight> | <syntaxhighlight> | ||
% export ANARI_LIBRARY=helide | |||
% ./anariViewer | % ./anariViewer | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=Build/Install | =Build/Install additional ANARI backends= | ||
Once the base ANARI SDK is built, additional backends can be compiled and added to the overall ANARI installation | Once the base ANARI SDK is built, additional backends can be compiled and added to the overall ANARI installation. | ||
==VisRTX & VisGL ANARI backends (building/installing)== | |||
<syntaxhighlight> | <syntaxhighlight> | ||
% module load optix cuda anari | % module load optix cuda anari | ||
Line 68: | Line 83: | ||
% mkdir visrtx2_version/Build | % mkdir visrtx2_version/Build | ||
% cd visrtx2_version/Build | % cd visrtx2_version/Build | ||
% cmake -DCMAKE_INSTALL_PREFIX= | % cmake -DCMAKE_INSTALL_PREFIX=$ANARI_DIR(<same-as-ANARI-base>) .. | ||
% make | % make | ||
% make install | % make install | ||
Line 78: | Line 93: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=Suggestions for improving | ==Other backends== | ||
* OSPRay | |||
* [[Barney]] ANARI backend (''BANARI'') | |||
* [https://github.com/szellmann/anari-visionaray Visionaray ANARI backend] | |||
=Suggestions for improving ANARI= | |||
I have a few things that I need to pass along to the ANARI working group that could/should | I have a few things that I need to pass along to the ANARI working group that could/should | ||
be fixed in future versions -- especially by the time we get to version 1.0.0. | be fixed in future versions -- especially by the time we get to SDK version 1.0.0. | ||
* | * <TT>anariTutorial</TT> should honor the <TT>ANARI_LIBRARY</TT> flag. | ||
* Running <TT>anariInfo -l visgl</TT> shouldn't seg-fault | * Running <TT>anariInfo -l visgl</TT> shouldn't seg-fault | ||
* Running <TT>anariInfo -l <non-existant backend></TT> shouldn't seg-fault | |||
=Other issues that I am personally experiencing= | =Other issues that I am personally experiencing= | ||
* My ANARI-VR test programs | * My ANARI-VR test programs render incorrectly when running with the <TT>visgl</TT> backend | ||
* When running <TT>anariInfo -l visrtx</TT> there appear to be some spaces in parameter names that are bugs — e.g. " transform" | * My ANARI-VR test program (anari_ex8) crashes when running with the any backend | ||
** | * When running <TT>anariInfo -l visrtx</TT> there appear to be some spaces in parameter names that are bugs — e.g. " transform" & " transferFunction1D" | ||
** Probably <TT>anariInfo</TT> should put quotes around subtype and parameter names to make these errors more obvious | |||
* There is some code in the installed <TT>share/anari</TT> directory that I'm not sure what it does/is-for | * There is some code in the installed <TT>share/anari</TT> directory that I'm not sure what it does/is-for | ||
=ANARI Applications= | =ANARI Applications= | ||
Here are some other applications that are using ANARI: | Here are some other applications that are using ANARI: | ||
* [https://www.khronos.org/blog/kitware-adds-anari-support-to-vtk-to-simplify-access-to-accelerated-3d-rendering-engines VTK] | |||
** [https://vtk.org/doc/nightly/html/classvtkAnariPass.html vtkAnariPass Class] | |||
** [https://github.com/jeffamstutz/vtkAnariApps Amstutz' VTK ANARI examples] (C++ & [https://www.kitware.com/trame Trame]) | |||
* ParaView | |||
** [https://discourse.paraview.org/t/building-paraview-with-anari-support/15176 Building ParaView with ANARI support] (Discourse conversation) | |||
** [https://gitlab.kitware.com/paraview/paraview/-/issues/22556 Dynamic GUI for ANARI devices] (Discourse conversation) | |||
* [https://github.com/vtvamr/anari-volume-viewer ANARI Volume Viewer] (on Github.com) | * [https://github.com/vtvamr/anari-volume-viewer ANARI Volume Viewer] (on Github.com) | ||
* [https://github.com/NVIDIA/VTK-m-graph VTK-m Graph tool] | * [https://github.com/NVIDIA/VTK-m-graph VTK-m Graph tool] | ||
** Uses: [https://github.com/Kitware/VTK-m VTK-m] | ** Uses: [https://github.com/Kitware/VTK-m VTK-m] | ||
Revision as of 09:32, 14 October 2024
Instructions for how to build ANARI on Linux. This is the basic ANARI, independent of VR capabilities, which will be documented separately.
Building ANARI on Linux
The generic ANARI SDK has minimal system requirements to build. However, for the GPU-accelerated backends, there generally will be additional required features (such as Cuda or Optix).
When building ANARI, there is a choice between downloading/cloning the reference ANARI-SDK, and separately obtaining the GPU accelerated backends, or it is possible to download the pseudo-Superbuild that will download selected backends, and do a complete build.
This documentation last tested with ANARI-SDK version 0.10.1.
Prerequisites
ANARI makes use of the CMake build system. You should have at least version 3.11 of CMake.
Cloning ANARI
Clone from the Khronos Github ANARI reposoitory.
NOTE: Because ANARI is still in flux, I always add the current date (YYYYMMDD) and Version as a postfix of my cloned directory name.
% git clone -b next_release --single-branch https://github.com/KhronosGroup/ANARI-SDK.git anari-sdk-<date>nr
or for the master branch:
% git clone https://github.com/KhronosGroup/ANARI-SDK.git
Configuring the Build and Installing
Configuring and compiling the build:
% mkdir ANARI-SDK/Build
% cd ANARI-SDK/Build
% cmake -DCMAKE_INSTALL_PREFIX=... -DCMAKE_BUILD_TYPE:STRING=Release -DBUILD_CTS:BOOL=OFF -DBUILD_TESTING:BOOL=OFF -DBUILD_REMOTE_DEVICE:BOOL=ON -DINSTALL_VIEWER:BOOL=ON ..
% make
% make install
Running ANARI
The ANARI build process includes a simple tutorial application that will render a scene consisting of a pair of triangles into two image files (one with the first pass of the render, and one with a later pass). An optional "anariViewer" may also be built (and the above instructions will build it) which contains a handful of reference scenes, along with an OBJ viewer.
Running the ANARI backend info tool
% ./anariInfo -l helide
This will then output a slew of information about the backend, including what version of ANARI it was built for, and what Parameters and Extensions it handles. In some respect, it can be considered a quick summary of the ANARI specification, insofar as how that particular library implements the spec.
Running the ANARI tutorial example
Note that the "anariTutorial" executable (without code changes) will always use the helide backend.
% ./anariTutorial
% display *.ppm
Running the ANARI viewer example
The choice of ANARI backend for anarViewer is controlled by the ANARI_LIBRARY environment variable
% export ANARI_LIBRARY=helide
% ./anariViewer
Build/Install additional ANARI backends
Once the base ANARI SDK is built, additional backends can be compiled and added to the overall ANARI installation.
VisRTX & VisGL ANARI backends (building/installing)
% module load optix cuda anari
% git clone -b next_release --single-branch https://github.com/NVIDIA/VisRTX visrtx2_version
% mkdir visrtx2_version/Build
% cd visrtx2_version/Build
% cmake -DCMAKE_INSTALL_PREFIX=$ANARI_DIR(<same-as-ANARI-base>) ..
% make
% make install
Then:
% export ANARI_LIBRARY=visrtx
% anariViewer
Other backends
- OSPRay
- Barney ANARI backend (BANARI)
- Visionaray ANARI backend
Suggestions for improving ANARI
I have a few things that I need to pass along to the ANARI working group that could/should be fixed in future versions -- especially by the time we get to SDK version 1.0.0.
- anariTutorial should honor the ANARI_LIBRARY flag.
- Running anariInfo -l visgl shouldn't seg-fault
- Running anariInfo -l <non-existant backend> shouldn't seg-fault
Other issues that I am personally experiencing
- My ANARI-VR test programs render incorrectly when running with the visgl backend
- My ANARI-VR test program (anari_ex8) crashes when running with the any backend
- When running anariInfo -l visrtx there appear to be some spaces in parameter names that are bugs — e.g. " transform" & " transferFunction1D"
- Probably anariInfo should put quotes around subtype and parameter names to make these errors more obvious
- There is some code in the installed share/anari directory that I'm not sure what it does/is-for
ANARI Applications
Here are some other applications that are using ANARI:
- VTK
- ParaView
- Building ParaView with ANARI support (Discourse conversation)
- Dynamic GUI for ANARI devices (Discourse conversation)
- ANARI Volume Viewer (on Github.com)
- VTK-m Graph tool
- Uses: VTK-m