- Surface normals
- Constructive Solid Geometry
- Office hours

- Bounding Volumes (usually Boxes)
- Find the smallest - or close to smallest - regular volume that encloses the object
- Use ray-intersect-volume as a pretest for fast negative results.
- Trade-off between
- benefit of quicker `miss'detection
- cost of getting a good bounding surface
- Both increase as complexity of primitive increases

Scene subdision

- Divide the scene volume into sub-volumes: many ways to do it, such
as
- quad-trees
- oct-trees
- BSP trees
- ...

- List all primitives by sub-volume.
- Only test primitives in the sub-volumes through which a ray passes.

Two different, but linked, types of artifacts

- Spatial (or temporal) frequency aliasing,
- image features appear at innappropriate sizes

- Reconstruction aliasing
- totally new features, like jaggedness, appear.

Exact solutions are simple in principle

- Remove high spatial frquencies by filtering
- Fourier transform in image space: remember that you need to keep both amplitude and phase.
- Filter
- Inverse transform in image space

Filtering is the tricky part.

- Use a sampling filter that is the inverse of the reconstruction filter
- For the display to be used find the pixel shape
- Construct a sampling filter appropriate for the pixel shape
- Do ray-tracing calculating over a weighted area

Finding the pixel shape is the hard part.

These are the things that apply to images where you end up with a bunch of graphical primitives on the image plane, so that you image is effectively designed at infinite resolution. A similar effect is produced when ray tracing, but has different types of solution, which are

- Beam tracing
- project a pixel-sized beam into the scene
- if the whole beam covers the first primitive it hits, excellent.
- otherwise, cut off the part of the beam that hits the first
primitive and follow the remainder of the beam into the scene
- and so on
- add up all the fraction pixels at the end and use that colour.

- Super sampling
- project many rays for each pixel

- Stochastic sampling
- project many rays at random locations for each pixel

- Importance sampling
- concentrate the extra rays where they make the most difference.

The `caustic' project

- Basic
- Start with a 2D image: pixellated or procedural
- Map 2D image onto primitive using a 2D affine transformation
- Simple if the surface of the primitive is flat
- otherwise, ...
- Texture pixels normally do not match display pixels, so some image processing may be needed.

- Backwards map intersection point with ray into the image to get the surface properties

- Normal Mapping (Bump mapping)
- Start with a difference surface, defined with respect to the surface
- Calculate the normals to the difference surface and map them onto the surface of the primitive
- Use the mapped surface models for lighting
- No occlusion, shadows are wrong, silhouettes are wrong, nobody notices!

- Solid Textures
- Solution to mapping texture onto curved surfaces
- Usually procedural