# i c the light

## Reference Links

### Distance Estimation / Ray Marching

The Science of Fractal Images, Heinz-Otto Peitgen and Dietmar Saupe, eds.
(1988)

Fractal rendering algorithms.

Ray Tracing Deterministic 3-D Fractals by John C. Hart et. al (1989)

The first paper on distance-estimating 3d fractals as a ray-marching
technique!

Distance Estimated 3D Fractals

Distance-estimated 3D fractals. This is what I really want to do, and the
source that lead me to this.

Demoscene Presentation on Ray Marching

“Don’t define the surface first and then compute the distance field, but
directly code a distance field and a surface will emerge.”

Unfortunately, a lot of the links in this presentation are dead.

Ray march shaders on Stack Exchange

A nice overview of what the algorithm is with unfortunately and
understandably little on the specifics of applying it.

Sample functions for various primitive objects in a ShaderToy

Made by Iñigo Quilez, who seems to be very prominent in this scene.

More information here on his website.

Also shows how to calculate binary intersections (unions, subtractions,
and intersections) of objects, repeat/rotate/translate/scale objects,
displace and blend objects, and more. This is a gold mine.

Terrain Ray Marching

Also by Iñigo Quilez.

Ray marching soft shadows

Thanks Iñigo Quilez.

Ray marching with THREE.js

Surprisingly achievable and smooth in Javascript, although complexity
suffers.

Distance estimation of Mandlebrot and Julia sets

### Open Source Ray Tracers And Guides

Smallpt, a raytracer written in 99 lines of C++

Introduction to Ray Tracing: a Simple Method for Creating 3D Images

A more conceptual overview of the topic.

Fuzzy Photon — How to write a Raytracer

Gets into details with specific problems and code examples.

UCI RayTracing Tutorial

Contains more information on depth of field, isosurfaces (blobs), and auto
exposure.

Luminosity ray tracer written in Haskell

A lot of more mathematical language here, as should be expected from a
Haskell project.

Purple Alien Planet Raytracer written in C

An open-source implementation containing lots of math and explanations for
the underlying algorithms.

The Rendering Equation

The rendering equation describes the total amount of light emitted from a
point x along a particular viewing direction, given a function for
incoming light and a BRDF.

SDL Skeleton capable of drawing pixels to the screen

This may have saved me effort in writing boilerplate, although I had already
done most of this earlier. It’s definitely good to have another reference,
though.

### Perlin Noise

Understanding Perlin Noise

Perlin noise for procedural textures, reads a lot on 2d noise (because of
simplicity to explain and diagram) but still very digestible. A lot like the
Eevee link.

Improved Noise reference implementation

A compact (3062-byte) Java implementation of Perlin noise, by Perlin himself.
Not dynamic or 4-dimensional, and filled with many weird hacks, but a good
starting point.

Improving Perlin Noise by Ken Perlin

Formulas for picking a random point on the surface of a sphere

Perlin noise derivatives by Iñigo Quilez

### Misc

Ray Tracing Quaternion Julia Sets on the GPU (Keenan Crane, 2005)