Projects: Interactive Computer Graphics

Rasterizer: DDA, Scanline Algorithms and more

A simple bare bones rasterizer application written in Python that takes .txt files as input and creates corresponding .png image files using DDA/ Scanline algorithms and gamma correction to interpolate the pixels. The text files contain instructions to create an image - like positions of vertices, the colors etc.

Ray Tracer

A from the scratch, bare bones ray tracer application to create 3D imagery using ray tracing. It takes in .txt images similar to the rasterizer and produces images. The .txt files contain information about the scene (the location/size/shape/texture of the objects, the location and type of the light source etc) and trace light rays from the source to create objects, reflections and shadows to produce an image.

WebGL Terrain Modeling with Fractal

Generating a 3D Model of an arbitrary landscape terrain using random fault generation (aka the faulting method) and illumination via diffuse and specular lighting models. The simulation of generated terrain under severe weathering is tested via algorithmic spherical erosion.

Flight Simulation and WebGL Textures

Uses random faulting to auto generate a texture-mapped terrain with a first person POV flight simulation (flight flying over the terrain) with user controlled camera movement.
1. arrow "up, down, left, right" keys -> to rotate (turn) the camera for roll, pitch, yaw.
2. "W, A, S, D" keys -> to move the camera forwards, backwards, left and right.

Load and texture map an .OBJ file.
Toggle Fog (weather phenomenon) simulation via fragment shader - Using "F" key.

Particle Effects with WebGL

Simulation of physical particle effects - done via placing 50 spheres of varying mass rendered using a single sphere geometry withing an invisible bounding box in randomized locations, illuminated with diffuse lighting and move according to momentum, gravity and experience drag. The spheres experience collisions with the other spheres and the bounding box. The simulation resets every 10 seconds.

WebGL Animation Effects via Shaders

Simple WebGL animations created by experimenting with vertex shader and fragment shader manipulations.