
CS184 Final Project Report
Abstract This project is a music visualizer using a sea of morphing shapes to capture the essence of the song. The shapes are rendered to create an infinite sea of shapes using raymarching. The sea of shapes visualize the different aspects of the music in the following ways: The size of each shape reflects the volume of the song The shapes rotate to the beat of the song The spectrum of the song is visualized in the bottom left corner The project was coded in Unity using shaders....

CS184 Final Project Milestone
[Milestone] Endless Procedural Landscape with Raymarching Ben Cuan, Ben Lin, Joel Rodiel-Lucero, Ishaan Dham Video and Slides Video: link Slides: link Summary So far we have been able to generate a raymarching scene of infinite spheres. Additionally we added music (mii channel VGC Remix) and have the inner circles pulsate to the beat of the music. Preliminary Results The scene of a moving infinite landscape of spheres is generated using the distance_estimator function in infSpheres....

Project 4: ClothSim
Overview In this project, we simulated cloth behavior using a mass-spring system. Essentially, a cloth can be approximated as a uniform grid of point masses all connected using ideal springs. There are three types of springs that give cloths their physical behavior: Structural springs connect point masses with immediately adjacent point masses (top, bottom, left, right). Shearing springs connect point masses with diagonal point masses (top left, top right, bottom left, bottom right)....

CS184 Final Project Proposal
Endless Procedural Landscape with Raymarching Ben Cuan, Ben Lin, Joel Rodiel-Lucero, Ishaan Dham In this project, we will implement a Raymarching infinite landscape scene in Unity. In other words, we will extend the ray-tracing algorithms learned in class to subdivide rays over a spherical surface, speeding up rendering and allowing for the rendering of more advanced implicit geometry. Problem Description Generally speaking, the problem we are trying to solve is enabling the rendering of infinite, procedurally generated shapes in an efficient manner to create asthetically pleasing landscape scenes that can be applied to many applications such as video games or music visualization....

Project 3 Part 2: PathTracer Deluxe Edition
Introduction In this project, we extended the path tracing capabilities created in the previous part to render advanced materials, including mirrors, glass, and metal. This primarily involved implementing reflection, refraction, and microfacet material BSDF’s. Part 1: Mirror and Glass Materials Below are some demo renders of CBspheres.dae with varying ray depths. Max Ray Depth: 0 ./pathtracer -t 8 -s 64 -l 4 -m 0 -f spheres_0.png -r 480 360 ../dae/sky/CBspheres.dae !...

Project 3 Part 1: PathTracer
Overview In this project, we created the infrastructure necessary to produce basic path tracing images with diffuse shading. This included: Calculating ray-scene intersections (between spheres and triangles) Generating the Bounding Volume Hierarchy acceleration structure Implementing the Diffuse BSDF Creating algorithms for direct, indirect, and global illumination using Monte Carlo estimation and Russian Roulette ray termination Adaptive sampling rates for further rendering speed-up Part 1: Ray Generation and Scene Intersection In this part, we implemented ray generation from the camera perspective, as well as ray-triangle intersections and ray-sphere intersections....

Project 2: MeshEdit
Overview In this project, we implemented several common structures and algorithms used to rasterize 2D curves and 3D meshes based on the Half-Edge data structure. Specifically, we allow input as either Bezier curves/surfaces (.bez, .bzc) or Digital Asset Exchange (.dae) files, and render them onto the screen. We also implemented the de Castellau subdivision algorithm for upsampling 2D curves, and the Loop subdivision algorithm to upsample 3D meshes. In the process, we also had to implement edge flipping and edge splitting in 3D meshes....

Project 1: Rasterizer
Overview In this project, we created a simple rasterization engine to draw basic lines, triangles, and shapes defined in SVG format, and apply color and texture to them. In addition, we implemented multiple sampling methods, both for changing texture filtering on pixels and on mipmap levels. Over the course of this project, we learned about how to apply the formulas we learned in class to actually generate images and render them to the screen based on a set of coordinates and instructions....