-*- mode: org; mode: auto-fill -*-
Otherwise %FIND-INTERSECTION* can find intersections closer than it wants. This is probably also good for shadow rays, as the existing ray can be modified to walk it. Maybe rename RAY-START and RAY-END. Need to build a test-case, though!
Previously SCENE-COMPILED-SCENE needed to be fast. Well, it still does, since it is still used in a few places during rendering: those need to be changed to using the rendering representation, AKA COMPILED-SCENE.
To save memory
COMPUTE-PATTERN-FUNCTION needs to return a secondary value that indicates if it can be cached for (a) all cases (b) cases with identical transforms.
At least IDENTITY-MATRIX should be shared – or maybe I should go back to punning it to NIL, so that a single test is enough for the common case?
It should be possible to specify a toplevel shader for an entire CGS.
But keys are not keys, weights! And the whole thing is not a pattern, really.
Interpolated: 0 at the edges of the box, 1 at the middle.
Indexed: 1 if point is inside the object, 0 if not. Also repeating!
This is tricky: it needs the surface normal! So need to reconsider things a bit…
In addition to functional unit tests, test-scenes and reference images would be golden, along with some sort of timings.
Cloning with alterate transforms, etc.
This is kind of nice the way it now works, actually, but it should be possible to tell the system to use the either to cuttee or the cutter. (Currently cutter is always used.)
Deeps CSG should benefit from this
Possibly just a shader?
Sometimes humans are better.
One worker-thread per core (configurable.) KD tree can be built in parallel. Raytracing itself is ridiculously parallel.
Simple homogenous mediums to start with.
Projected bounding boxes to make fast decisions. At least those pixels where there is only a single object that can contribute are probably worth dealing with, no matter how good the KD tree is. Saving a perfect vista buffer from previous rendering might also be cool (this requires scenes to know when their geometry has changed, though.)
(Sampling the scene from light sources, collecting only those that hit the image plane.)
(Symbolic raytracing.)
AKA fake soft shadows, aka cheap soft shadows.
Aka cheap caustics.
That is, interpolating between the light/reflection and local color.
Nice constructor on SB-CGA needed.