Alice Yang CIS 565 Final Project Ray Marching/Sphere Tracing Starting from eye, proceed in small steps along ray. Distance Estimator tells you how close you are to object. When you are close to a certain threshold, stop. Coloring by number of steps taken gives us cheap AO with no need for lights. Source: http://blog.hvidtfeldts.net/index.php/2011/06/distance-estimated-3d-fractals-part-i/ Framework The entire project is contained in a fragment shader written in GLSL Code can be viewed and run on GLSL Sandbox (http://glsl.heroku.com/e#2306.2) Project built off of Paulo Falcao’s basic raymarch framework, extended to support a number of additional features Domain Repetition Source: http://www.iquilezles.org/www/articles/distfunctions/distfunctions.htm / Building Variation Find “seed” constant for every building as input into random float generator vec2 pos = vec2(ceil(p.x/c.x), ceil(p.z/c.z)); Building Geometry Union operation: Add roofs and attics to tops of buildings Subtraction operation: Windows and wall indents Building Geometry: Windows Create 2D cross and repeatedly subtract from building bodies Insert inner structure to prevent building from looking hollow “free” variation from random heights applied afterwards Source: http://www.iquilezles.org/www/articles/menger/menger.htm / Textures Mostly flat colors since project focuses on geometry Half of the city samples from procedural brick texture. Constant values for brick and mortar color as well as brick size and brick percentage After position is calculated, every other row is offset by half a brick’s width Step function: If the fract(position) is less than brick percentage, use brick color. Otherwise use mortar color Live Demo http://glsl.heroku.com/e#2306.2