LightsprintSDK 2021.08.08
Lightsprint Core

Overview

Lightsprint Core calculates global illumination in dynamic and static scenes. Subsystems include fast ray-scene intersections. It is OpenGL/Direct3D independent.

API

Namespace: rr


Header: Lightsprint/RRSolver.h

  • calculates global illumination in static or dynamic scenes, offline or realtime
  • gives you full control over speed/quality
  • calculated illumination is available in vertex buffers, lightmaps and environment maps
  • communicates completely in custom units, e.g. screen colors
  • purely CPU, extensions for realtime rendering on GPU implemented in rr_gl::RRSolverGL

Samples RealtimeLights and RealtimeRadiosity show the result of integration, interactive Collada scene viewer with global illumination immediately responding to free movement of objects and lights.


Headers: Lightsprint/RRScene.h

  • data structure (RRScene): 3d scene loaded from disk (objects, lights)

Headers: Lightsprint/RRIllumination.h


Header: Lightsprint/RRBuffer.h

  • data structure (RRBuffer): texture, cube map, vertex buffer

Header: Lightsprint/RRObject.h

  • 3d object properties: geometry, materials, position etc

Header: Lightsprint/RRCollider.h

  • finds ray-mesh intersections
  • thread safe, you can calculate any number of intersections at the same time
  • you can select technique in range from maximal speed to zero memory allocated
  • up to 2^32 vertices and 2^30 triangles in mesh
  • builds helper-structures and stores them in cache on disk

Sample HelloCollider shows the most simple usage scenario:

  1. Create RRMesh using your vertex/index buffers.
  2. Create RRCollider using your mesh.
  3. Create RRRay using your ray.
  4. Call RRCollider::intersect() to find intersections. Repeat for all rays.

Sample BunnyBenchmark shows how to detect collisions on all available CPUs/cores at once.


Header: Lightsprint/RRMesh.h

Sample HelloMesh shows the most simple usage scenario, mesh is created out of existing array of vertices.


Header: Lightsprint/RRMath.h

  • math classes used by whole Lightsprint SDK
  • RRReal holds one real number, which is single precision float
  • RRVec2 is vector of 2 real numbers
  • RRVec3 is vector of 3 real numbers
  • RRVec4 is vector of 4 real numbers

Header: Lightsprint/RRDebug.h

  • debugging and reporting routines used by whole Lightsprint SDK
  • RRReporter processess all messages sent by Lightsprint SDK to you

Header: Lightsprint/RRLight.h

  • RRLight interface for point/spot/dir lights

Header: Lightsprint/RRVector.h

  • RRVector template, std::vector like container