final project cover

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....

May 3, 2023 · 6 min · 1228 words · Ben Cuan, Ben Lin, Joel Rodiel-Lucero, Ishaan Dham
proj2 cover

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....

April 25, 2023 · 3 min · 450 words · Ben Cuan, Ben Lin, Joel Rodiel-Lucero, Ishaan Dham
proj4 cover

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)....

April 10, 2023 · 5 min · 1037 words · Ben Cuan, Ben Lin
proj2 cover

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....

April 3, 2023 · 3 min · 518 words · Ben Cuan, Ben Lin, Joel Rodiel-Lucero, Ishaan Dham
proj3-2 cover

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 !...

March 20, 2023 · 3 min · 509 words · Ben Cuan, Ben Lin
proj2 cover

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....

March 8, 2023 · 11 min · 2137 words · Ben Cuan, Ben Lin
proj2 cover

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....

February 27, 2023 · 8 min · 1620 words · Ben Cuan, Ben Lin
proj1 cover

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....

February 12, 2023 · 8 min · 1536 words · Ben Cuan, Ben Lin