Skip to content

Setup Ray Tracing Environment

Pre-release
Pre-release

Choose a tag to compare

@stephen-hqxu stephen-hqxu released this 11 Aug 17:06
952619b

Release 0.15.0-Preview.1

Setup OptiX

  • Add a CMake module finder for OptiX.
  • Add STPRendererErrorHandler to handle API errors from OptiX.

Setup ray tracing shader

  • Implement simple ray tracing shaders for ray-primitive intersection test.
  • Refactor STPCameraInformation.glsl slightly for code reuse.

Runtime compiler

  • Split STPRuntimeCompilable into STPDeviceRuntimeBinary and STPDeviceRuntimeProgram. This is done to make future use of NVRTC for OptiX compilation easier.
    • STPDeviceRuntimeBinary is a wrapper over NVRTC and outputs nvrtcProgram.
    • STPDeviceRuntimeProgram is a wrapper over CUDA driver API module manager and outputs CUmodule.
  • The new runtime compilers are now stateless.
  • Explicitly manage memory of all const char* using std::string.
  • Move device compute capability query to STPEngineInitialiser.

General fixes and improvement

  • Simplify environment setup for SQLite and CUDA to use find_package instead of include.
  • Use NDEBUG instead of _DEBUG to check for build mode in source code to maintain C++ standard.
  • Remove flag --fmad=false from runtime compilers.

Config file template

  • Refactor STPAlgorithmDeviceInfo and STPRealismInfo; remove redundant naming prefixes, enclose variables into appropriate namespaces.
  • Add information regarding OptiX directory to STPRealismInfo.
  • Add STPCoreInfo.h.in containing information regarding the core engine and include directory for libraries.

Error handler

  • Add STPGenericErrorHandlerBlueprint as an extendable C API error handler.
  • All definitions are now inlined. Use of template specialisation previously without header declaration leads to undefined behaviour.
  • Split the old STPDeviceErrorHandler into STPDeviceErrorHandler for CUDA call and STPDatabaseErrorHandler for SQLite database call.
  • Capitalise all macros and rename to reduce verbosity, for example STPcudaCheckErr is renamed to STP_CHECK_CUDA. However it creates a huge diff since all uses of such macros needs to be renamed.

STPSmartDeviceObject

  • Merge STPSmartStream and STPSmartEvent into one file, called STPSmartDeviceObject.
  • Add STPMemPool, STPTexture and STPSurface as two new managed CUDA objects for CUDA memory pool, texture and surface objects respectively.
  • Remove tests for these CUDA objects because they are too trivial.