Primitive

public abstract class Primitive
{
    // This material controls the amount of energy loss when rays bounce off this primitive
    public MaterialType material;
}

This is a base abstract class for all Primitives. material must be set to anything other than MaterialType.Air.

Any property on any primitive can be changed at any time on the main thread, because the background raytracing threads operate on a copy of these primitives. When the background threads finish running, all changes will be propagated to these copies.