Skip to content

OSPRay v2.0.0

Compare
Choose a tag to compare
@jeffamstutz jeffamstutz released this 19 Jan 04:08
· 1271 commits to master since this release
  • New major revision of OSPRay brings API breaking improvements over
    v1.x. See doc/ospray2_porting_guide.md for a deeper description of
    migrating from v1.x to v2.0 and doc/api.md for the latest API
    documentation
    • ospRenderFrame now takes all participating objects as
      function parameters instead of setting some as renderer params
    • ospRenderFrame is now asynchronous, where the task is managed
      through a returned OSPFuture handle
    • The heirarchy of objets in a scene are now more granular to
      aid in scene construction flexibility and reduce potential
      object duplication
    • Type-specific parameter setting functions have been consolidated
      into a single ospSetParam API call
    • C++ wrappers found in ospray_cpp.h now automatically track
      handle lifetimes, therefore applications using them do not need
      to use ospRelease (or the new ospRetain) with them: see
      usage example in apps/tutorials/ospTutorial.cpp
    • Unused parameters are reported as status messages when
      logLevel is >= 1 (most easily set by enabling OSPRay debug on
      initialization)
  • New utility library which adds functions to help with new API
    migration and reduction of boilerplate code
    • Use ospray_util.h to access these additional functions
    • All utility functions are implemented in terms of the core API
      found in ospray.h, therefore they are compatible with any
      device backend
  • Introduction of new Intel® Open Volume Kernel Library (Open VKL)
    for greatly enhanced volume sampling and rendering features and
    performance
  • Added direct support for Intel® Open Image Denoise as an optional
    module, which adds a denoiser type to ospNewImageOperation
  • OSPRay now requires minimum Embree v3.7.0
  • New CMake superbuild available to build both OSPRay's dependencies
    and OSPRay itself
    • Found in scripts/superbuild
    • See documentation for more details and example usage
  • The ospcommon library now lives as a stand alone repository and
    is required to build OSPRay
  • The MPI module is now a separate repository, which also contains all
    MPI distributed rendering documentation
  • Log levels are now controled with enums and named strings (where applicable)
    • A new flag was also introduced which turns all OSP_LOG_WARNING messages
      into errors, which are submitted to the error callback instead of the
      message callback
    • Any unused parameters an object ignores now emit a warning message
  • New support for volumes in the pathtracer
    • Several parameters are available for performance/quality
      trade-offs for both photo-realistic and scientific visualization
      use cases
  • Simplification of the SciVis renderer
    • Fixed AO lighting and simple ray marched volume rendering for
      ease of use and performance
  • Overlapping volumes are now supported in both the pathtracer and scivis
    renderers
  • New API call for querying the bounds of objects (OSPWorld,
    OSPInstance, and OSPGroup)
  • Lights now exist as a parameter to the world instead of the renderer
  • Removal of slices geometry. Instead, any geometry with volume
    texture can be used for slicing
  • Introduction of new boxes geometry type
  • Expansion of information returned by ospPick
  • Addition of API to query version information at runtime
  • Curves now supports both, per vertex varying radii as in vec4f[] vertex.position_radius and constant radius for the geometry with
    float radius. It uses OSP_ROUND type and OSP_LINEAR basis by
    default to create the connected segments of constant radius. For per
    vertex varying radii curves it uses Embree curves.
  • Add new Embree curve type OSP_CATMULL_ROM for curves
  • Minimum required Embree version is now 3.7.0
  • Removal of cylinders and streamlines geometry, use curves
    instead
  • Triangle mesh and Quad mesh are superseded by the mesh geometry
  • Applications need to use the various error reporting methods to
    check wether the creation (via ospNew...) of objects failed; a
    returned NULL is not a special handle anymore to signify an error
  • Changed module init methods to facilitate version checking:
    extern "C" OSPError ospray_module_init_<name>(int16_t versionMajor, int16_t versionMinor, int16_t versionPatch)
  • The map_backplate texture is supported in all renderers and does
    not hide lights in infinity (like the HDRI light) anymore;
    explicitely make lights invisible if this is needed
  • Changed the computation of variance for adaptive accumulation to be
    independent of TILE_SIZE, thus varianceThreshold needs to be
    adapted if using a different TILE_SIZE than default 64
  • OSPGeometricModel now has the option to index a renderer-global material
    list that lives on the renderer, allowing scenes to avoid renderer-specific
    materials
  • Object type names and parameters all now follow the camel-case convention
  • New ospExamples app which consolidates previous interactive apps into one
  • New ospBenchmark app which implements a runnable benchmark suite
  • Known issues:
    • ISPC v1.11.0 and Embree v3.6.0 are both incompatible with OSPRay
      and should be avoided (OSPRay should catch this during CMake
      configure)