```cs
public abstract class 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.