RTXPkD (Under construction)
This page lists repositories containing code used in the paper:
“Spatial Partitioning Strategies for Memory-Efficient Ray Tracing of Particles”, LDAV, 2020, to appear
The software has been used on Windows 10.
OptiX
For measuring results for OptiX, the following applcation was used:
https://github.com/UniStuttgart-VISUS/rtxpkd_ldav2020
It requires OptiX 7.0, OWL, and CUDA >10.0.
OSPRay
The OSPRay results have been measured with version 1.8.5 using the OSPRay Plugin in MegaMol:
https://github.com/UniStuttgart-VISUS/megamol
Use the tag ldav2020_rtxpkd_project.
The code has been merged into to the main branch, as well. You can use that instead.
The PkD geometry is implemented in a separate OSPRay module:
https://github.com/UniStuttgart-VISUS/ospray-module-pkd
Use the branch megamol of this fork.
Original repository: https://github.com/ingowald/ospray-module-pkd
The source version of OSPRay and at least binary versions of TBB and Embree are required before MegaMol can be built. The pkd repository has to be cloned into the modules folder in the source folder of OSPRay before the build step. Please enable the installation of dependencies within the CMake configuration of OSPRay, so MegaMol can properly link the resulting OSPRay target.
Now, MegaMol can be built. Enable the OSPRay_plugin in the CMake configuration to be able to use the project files below.
Example project files:
-
OSPRay Spheres:
mmCreateView("Project_1","GUIView","::GUIView") mmCreateModule("View3D_2","::View3D_2") mmCreateModule("OSPRayRenderer","::OSPRayRenderer") mmCreateModule("DistantLight","::DistantLight") mmCreateModule("OSPRayNHSphereGeometry","::OSPRayNHSphereGeometry") mmCreateModule("OSPRayOBJMaterial","::OSPRayOBJMaterial") mmCreateModule("MMPLDDataSource","::data_source") mmCreateCall("CallRenderView","::GUIView::renderview","::View3D_2::render") mmCreateCall("CallRender3D_2","::View3D_2::rendering","::OSPRayRenderer::rendering") mmCreateCall("CallLight","::OSPRayRenderer::lights","::DistantLight::deployLightSlot") mmCreateCall("CallOSPRayStructure","::OSPRayRenderer::getStructure","::OSPRayNHSphereGeometry::deployStructureSlot") mmCreateCall("CallOSPRayMaterial","::OSPRayNHSphereGeometry::getMaterialSlot","::OSPRayOBJMaterial::deployMaterialSlot") mmCreateCall("MultiParticleDataCall","::OSPRayNHSphereGeometry::getdata","::data_source::getdata") mmSetParamValue("::DistantLight::EyeDirection",[=[true]=]) mmSetParamValue("::data_source::filename",[=[]=])
-
OSPRay PkD:
mmCreateView("Project_1","GUIView","::GUIView") mmCreateModule("View3D_2","::View3D_2") mmCreateModule("OSPRayRenderer","::OSPRayRenderer") mmCreateModule("DistantLight","::DistantLight") mmCreateModule("OSPRayOBJMaterial","::OSPRayOBJMaterial") mmCreateModule("MMPLDDataSource","::data_source") mmCreateModule("PkdBuilder","::pkd_build") mmCreateModule("OSPRayPKDGeometry","::OSPRayPKDGeometry") mmCreateModule("OSPRayAPIStructure","::OSPRayAPIStructure") mmCreateCall("CallRenderView","::GUIView::renderview","::View3D_2::render") mmCreateCall("CallRender3D_2","::View3D_2::rendering","::OSPRayRenderer::rendering") mmCreateCall("CallLight","::OSPRayRenderer::lights","::DistantLight::deployLightSlot") mmCreateCall("CallOSPRayStructure","::OSPRayRenderer::getStructure","::OSPRayAPIStructure::deployStructureSlot") mmCreateCall("MultiParticleDataCall","::pkd_build::inData","::data_source::getdata") mmCreateCall("MultiParticleDataCall","::OSPRayPKDGeometry::getdata","::pkd_build::outData") mmCreateCall("CallOSPRayMaterial","::OSPRayAPIStructure::getMaterialSlot","::OSPRayOBJMaterial::deployMaterialSlot") mmCreateCall("CallOSPRayAPIObject","::OSPRayAPIStructure::getdata","::OSPRayPKDGeometry::deployStructureSlot") mmSetParamValue("::DistantLight::EyeDirection",[=[true]=]) mmSetParamValue("::data_source::filename",[=[]=])
-
OSPRay PkD Treelets:
mmCreateView("Project_1","GUIView","::GUIView") mmCreateModule("View3D_2","::View3D") mmCreateModule("OSPRayRenderer","::OSPRayRenderer") mmCreateModule("DistantLight","::DistantLight") mmCreateModule("OSPRayOBJMaterial","::OSPRayOBJMaterial") mmCreateModule("MMPLDDataSource","::data_source") mmCreateModule("PkdBuilder","::pkd_build") mmCreateModule("OSPRayPKDGeometry","::OSPRayPKDGeometry") mmCreateModule("OSPRayAPIStructure","::OSPRayAPIStructure") mmCreateModule("MPDCGrid","::grid") mmCreateCall("CallRenderView","::GUIView::renderview","::View3D::render") mmCreateCall("CallRender3D_2","::View3D::rendering","::OSPRayRenderer::rendering") mmCreateCall("CallLight","::OSPRayRenderer::lights","::DistantLight::deployLightSlot") mmCreateCall("CallOSPRayStructure","::OSPRayRenderer::getStructure","::OSPRayAPIStructure::deployStructureSlot") mmCreateCall("MultiParticleDataCall","::pkd_build::inData","::grid::dataOut") mmCreateCall("MultiParticleDataCall","::OSPRayPKDGeometry::getdata","::pkd_build::outData") mmCreateCall("CallOSPRayMaterial","::OSPRayAPIStructure::getMaterialSlot","::OSPRayOBJMaterial::deployMaterialSlot") mmCreateCall("CallOSPRayAPIObject","::OSPRayAPIStructure::getdata","::OSPRayPKDGeometry::deployStructureSlot") mmCreateCall("MultiParticleDataCall","::grid::dataIn","::data_source::getdata") mmSetParamValue("::DistantLight::EyeDirection",[=[true]=]) mmSetParamValue("::data_source::filename",[=[]=])
OpenGL
The rasterization pipeline within MegaMol was used to measure glyph-based OpenGL rendering.
Example project file:
-
OpenGL:
mmCreateView("Project_1","GUIView","::GUIView") mmCreateModule("View3D_2","::View3D_2") mmCreateModule("DistantLight","::DistantLight") mmCreateModule("MMPLDDataSource","::data_source") mmCreateModule("SphereRenderer","::SphereRenderer") mmCreateCall("CallRenderView","::GUIView::renderview","::View3D_2::render") mmCreateCall("CallRender3D_2","::View3D_2::rendering","::SphereRenderer::rendering") mmCreateCall("CallLight","::SphereRenderer::lights","::DistantLight::deployLightSlot") mmCreateCall("MultiParticleDataCall","::SphereRenderer::getdata","::data_source::getdata") mmSetParamValue("::DistantLight::EyeDirection",[=[true]=]) mmSetParamValue("::data_source::filename",[=[]=]) mmSetParamValue("::SphereRenderer::renderMode",[=[SSBO_Stream]=]) mmSetParamValue("::SphereRenderer::ssbo::staticData",[=[true]=])
(more information coming soon; last change 2020-10-23)