Two programs were used in the final implementation. The first performs
the scattering and was written in C* [15] for a 16k processor CM2. The second
code did the final ray traced step and was built into a flexible C++
ray tracer that already existed and runs on single processor
workstations, under CMMD on the CM5 and on the ANU's prototype MIMD
parallel Fujitsu AP1000.

The following algorithm in pseudo-C* outlines the inner loop of
the code of the scattering code:

The ``shape [][][]volume;'' statment describes the
dimensions of a parallel ``shape''. Then ``float:volume
<var>;'' declares <var> to be floating point variable with
shape volume. The unary and binary operators operating on the
parallel variables run in parallel (at least notionally).

The function is calculated using a
precomputed lookup table for all possible combinations of
, and phase functions. The CM2 and CM5 have
routines which support fast table lookup by making copies of the table
on each sprint node (CM2) or processor node (CM5).