A high-performance software graphics pipeline architecture for the GPU




  • Paper topic: Rendering
  • Software type: Code
  • Able to run a replicability test: True
  • Replicability score: 5
  • Software language: C/C++, Shader language
  • License: MIT
  • Build mechanism: IDE Project (VS,..), Not applicable (python, Matlab..)
  • Dependencies: CUDA
  • Documentation score {0,1,2}: 0
  • Reviewer: Nicolas Bonneel <nicolas.bonneel@liris.cnrs.fr>
  • Time spent for the test (build->first run, timeout at 100min): 40min

Source code information


To compile the software, a number of steps need to be performed:

- In dependencies/image_tools/source/dds.cpp (line 11) and pfm.cpp (line 10) change 
#include <core/utils/io> to #include "io.h"

- In pfm.cpp, line 32: change read(data(img) + w * (h - 1 - j), file, w); to read(file, data(img) + w * (h - 1 - j), w);
- In dds.cpp, line 77: change return read(buffer, file, width * pixel_size); to return read(file, buffer, width * pixel_size);
- In dds.cpp, line 83: change read(buffer + y * width * pixel_size, file, width * pixel_size); to read(file, buffer + y * width * pixel_size, width * pixel_size);
- In dds.cpp, line 97: change read<char, 4>(magic_num, file); to  read<char, 4>(file, magic_num);

- In dependencies/config_tools/include/configfile/Stream.h (line 15), Database.h (line 11), log.h (line 12), change
#include <core/interface> to #include "../../../core_tools/include/core/interface.h"
- in configfile.cpp, line 11: 
change #include <core/utils/memory> to #include "../../../core_tools/include/core/utils/memory.h"
- In source/cure/materials/OceanMaterial.cpp and source/cure/Geometry.cpp
change #include <core/utils/memory> to #include "../build/dependencies/core_tools/include/core/utils/memory.h"

- In the library paths of cuREREnderer, add the path to CUPTI, which was for me:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\extras\CUPTI\lib64

- In cure.vcxproj, cudaraster.vcxproj and freepipe.vcxproj, edit 
<Import Project="$(VCTargetsPath)\BuildCustomizations\CUDA 10.0.props" />
to your actual CUDA props path ; mine is:
<Import Project="C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\extras\visual_studio_integration\MSBuildExtensions\CUDA 10.2.props" />
and same thing for the corresponding .targets.

After that, the software compiles fine with Visual Studio and runs fine with my NVIDIA GeForce RTX 2080.

However it has been tested with a Quadro M1000M (under Linux) and only the OpenGL renderer worked (probably the graphics card is not supported). There were no error message indicating why the different plugins could be loaded.

If you want to contribute with another review, please follow these instructions.

Please consider to cut/paste/edit the raw JSON data attached to this paper.