Raytracing
Light rays in this module can be parameterized in terms of either the emission inclination (
Raytracing conical surfaces
Surfaces of constant
n=0 and n=1 images of emission coordinates originating from conical surfaces.
Raytracing with rays parameterized by Mino time
Mino time,
where
Coordinate evolution with Mino time.
Cameras
Cameras cache pre-computed information that is constant for a given camera location. There are currently two types of cameras which can be used for either 'slow light' or 'fast light' raytracing.
IntensityCamera
: Pre-computes geodesic information necessary to solve the 'fast light' raytracing problem.SlowLightIntensityCamera
: Pre-computes geodesic information necessary to solve the 'slow light' raytracing problem.
The GPU arrays can be passed to the cameras on construction to raytrace enforce raytracing on the GPU. A sketch of how to do this with a CUDA array is:
using CUDA
store = CUDA.fill(0.0, sze, sze)
camera = Krang.SlowLightIntensityCamera(metric, θo, -ρmax, ρmax, -ρmax, ρmax, sze, A=CuArray)
Krang.render!(store, camera, scene)