main rendering sequence
this is a kind of shorthand description, lacking detail, not clarifying instances, but class and method names are real. indentation means deeper in the call stack, or inside a loop or conditional, braces contain shortened descriptions of calls, brackets contain comments.
Render.render RenderKernel.construct ImageAccumulation {get from state} SamplingControl {get from state} SpacetimeIndex {construct with Scene} Illumination {construct with RenderingOptions} RasterizerTracing {construct with RenderingOptions} while not RenderKernel.isCompleted RenderKernel.renderFrame if not ImageAccumulation.isCompleted() SpacetimeIndex.update with SamplingControl Scene.update with timepoint from SamplingControl Illumination.makeIllumination with SpacetimeIndex and SamplingControl for all EmitterPaths [each only using its initial node] EmitterPath.trace with SpacetimeIndex and SamplingControl SamplingControl.advanceIllumination0 while photon maps not full EmitterPath.trace with SpacetimeIndex and SamplingControl [temporary EmitterPath within this scope] PhotonMaps {add nodes in EmitterPath} SamplingControl.advanceIllumination1 Rasterizer.rasterizeFrame with SamplingControl, SpacetimeIndex, Illumination and ImageAccumulation for all pixels if ImageAccumulation.shouldSample Camera.getRay EyePath.trace with SamplingControl, SpacetimeIndex, Illumination, Ray EyePath.getEyeEndLight ImageAccumulation.addSample ImageAccumulation.analyse SamplingControl.advanceFrame Render.attendToFrameDone {display image to app window} Render.attendToRenderDone {display image to app window} EmitterPath.trace EmitterPath.chooseLightSourceStart with Scene from SpacetimeIndex Scene.getEmitted with SamplingControl while path not ended SpacetimeIndex.getNextIntersection with ray Scene.getRootObject.getIntersection with Ray EmitterPathNode.setEmitterPathNode with Intersection, Ray and Light EmitterPathNode.getNextPathStep with SamplingControl {use Bssdf} EyePath.trace while path not ended SpacetimeIndex.getNextIntersection with ray EyePathNode.setSurfacePoint with Intersection EyePathNode.getNextPathStep with SamplingControl if path end is diffuse Illumination.getIllumination Illumination.getDirectIllumination for all EmitterPaths EmitterPath.getSpreadLight EyePathNode.getGatheredLightDistal Illumination.getPhotonMapIllumination PhotonMap.getIllumination EyePathNode.getGatheredLightLocal