This is a gpujs implementation of BioCrowds with a WebGL2 Marionette visualization courtesy of Eric Chiu.
The focus of this project was as an introduction to the Vulkan graphics pipelines while implementing the "Responsive Real-Time Grass Rendering for General 3D Scenes" paper by Klemens Jahrmann and Michael Wimmer.
A CUDA implementation of a simplified rasterized graphics pipeline, similar to the OpenGL pipeline with vertex shading, primitive assembly, rasterization, fragment shading, and a framebuffer.
A CUDA implementation of a Path Tracer with different surface types, Anti Aliasing, Bonne Projection Bokeh Mapping, Motion Blur, Depth of Field, Stream Compaction, Contiguous Material Memory, and First Bounce Caching.
A Cuda implementation of stream compaction that works on integer arrays of all sizes removing the element zero.
A Cuda implementation of an artificial life program by Craig Reynolds that defines boids to simulate the flocking movement and orientation of birds in flight.
An implementation of the Fedkiw et al. 'Visual Simulation of Smoke' paper.
An implementation of the Position-Based-Dynamics algorithm with stretching, compressing, and bending constraints, an implicit solver, kinematic collisions with a ball and the ground, constrained points, friction, velocity damping for the conservation of linear and angular momentum, and deflected velocity between colliding objects.
Built a Ragdoll simulation with the Bullet physics library for Dr. Chenfanfu Jiang's “Interfering Forces and Learning Human Utilities" project.
APIC based grid system using Eigen and template backing to allow for easy simulation attribute transferring. Handled proper conversion of the particle to grid and grid to particle transfers and calc of stress factor for force deformations. Final implementation includes snow and jello demos.
Implemented the Poisson Disk Sampling Algorithm for filling in mesh bodies with an even and random distribution of samples. BVH grid for checking if a sample exists in the given mesh. 3D background grid to speed up nearby searching during the O(n) algorithm.
This desktop application allows the user to select mesh intersection points through text input, actual mesh intersections, and machine learning outputs, which later will be used to train the algorithm to texture real objects viewed from the Oculus.
Implemented a Monte Carlo Pathtracer complete with a Full Lighting Integrator, a BVH acceleration structure, multiple importance sampling, global illumination, focal distance changes, different light source types (point, spot, area), and photon mapping.
Implemented a music visualizer using distance based noise and buckets corresponding to particular outputs for the creation, positioning, and coloring of the small balls.
Using specified markers and agents, created two scenarios following the BioCrowds crowd simulation algorithm to prevent the agents from colliding with each other using the notion of "personal space."
Isosurfaces created from 3-dimensional metaballs using the marching cubes algorithm.
A collection of shading algorithms and post-processing effects: Iridescence, Edge Detection with Sobel Filtering, Vignette, Fish-eye bulge, Inverse, Swap, and Chromatic Aberration.
Created an LSystem parser that generates interesting looking tree-like plants.
Implemented a raytracer with multithreading and aliasing. By using ray-object intersection testing, properly calculated pixel coloring including refraction, reflection, and texture mapping.
Using procedural noise based on position and time to create patterns and specific coloring for the shape. Produced three partially randomized outcomes and one completely noise based.
Group project to develop Minecraft. My responsibilities: procedural generation of caves below ground and that of the dynamic terrain above ground and the implementation of the A* search algorithm for roaming sheep to follow the user.
A partial implementation of Maya complete with extruding, smoothing, and inserting of edges and vertices. Allows for loading of different object files and has a shader adjustment for a time-based shading effect.
A neural network based on photos of alpha-numeric characters with three hidden layers of weights to properly identify the letter found in the photo.