- Akshay. Dhok -
  • Home
  • Skills
  • Projects
  • Code
  • Resume
  • Contact

Projects

VR - Oculus Game

  • Role: Graphics programmer. Responsible for overall visual aspect of Oculus game.
  • Implemented deferred rendering based graphics engine with post processing effects & game assets pipeline.
  • Achieved GPU based pixel perfect object picking in 3D game world with gbuffer.
  • Optimized transformation calculations and shader system to improve frame rate.
  • Programmed shaders for cloud noise effect, lighting, edge highlights, lasers and particles.
  • Collaborated with others on different disciplines for engine development and bug fixing.
  • Successfully coped with: Maintaining 90 FPS for dual screen of Oculus, UI design, Simulation Sickness.

Ray Tracing

  • Developed a Ray Tracer from scratch in C++.
  • Implemented Full BRDF and BSDF for different material properties like Glass and Metal.
  • Implemented Level Of Detail (LOD) feature for camera.
  • Reflection and Refraction on material surface using Snell's Law and Beer's Law.
  • Result images converged after 1000 passes.

Inverse Kinematics:
Nov 2015
  • Developed custom C++ framework to load 3D model, bones & animation key frame information.
  • Implemented data structure for hierarchical representation utilizing quaternions & VQS structure.
  • Wrote DFS algorithm for hierarchical transformation of bones with LERP & SLERP methods to achieve smooth animation between key frames.
  • Achieved speed control using exponential ease-in ease-out.
  • Using Adaptive approach I was able to achieve motion control along the curved path.
  • Controlled skidding and sliding by finding the proper balance between animation speed and motion.
  • Implemented Cyclic Coordinate Descent (CCD) algorithm with constrain satisfaction for Inverse Kinematics for object grabbing.
  • Challenges I faced: Calculating angle between target object in world position and end effector in model space, Controlling motion along the path, transformation between world and model coordinates for IK, Orientation control and skinning.

Atmospheric Scattering Project:
July 2015                                                                                                                                                       Note: Please put on the headphones for complete experience
Atmospheric Scattering projects was developed as final project for RealTime Rendering class. 
Demo consist of two scene 1) Earth From Space 2) Earth (Sky) from atmosphere. Developed in C++ OpenGl Engine using GLSL shading. The project is based on Sean O'Neil article and Nishita et al. 1993 paper on Atmosphere Scattering. I implemented 4 shaders as follows:


Earth From Space:                                                          Earth(Sky) From Atmosphere:
i) SkyFromSpace                                                               i) SkyFRomAtmosphere
ii) GroundFromSpace                                                    ii) GroundFromAtmosphere


Physically Based Shading:
June 2015
Physically based shading technique developed as part of Advanced Realtime Rendering class project. PBS is the modern technique of approximating the realistic lighting. It takes into account the physical surrounding of the object while shading it. The whole equation forms the Bidirectional Reflectance Distribution Function model (BRDF) along with the diffused lighting. Various techniques used in this project are as follows:
  • High Dynamic Range Images (HDR)
  • Diffused lighting with irradiance map
  • Gamma compression tone mapping  
  • Specular lighting using BRDF with Monte-Carlo approximation

Space Scene (Personal Project):
May 2015                                                                                                                                                         Note: Please put on the headphones for complete experience​
Personal Project developed in custom component based engine (C++) and OpenGl Graphics.

Shaders Developed are:
  • EarthShader : Supports multi texturing for night lights, Rim lights for atmosphere, BRDF lights for day time, alpha channel for clouds and specular reflection for generating effect of water reflection.
  • Moon Shader: Supports phong lighting.
  • SunShader: It has crepuscular rays implementation, Fire effect is achieved with Gaussian noise.
  • Post Processing Shader: Used for blurring, and crepuscular rays.


A Snowball's Chance (Student Project):
March 2015
Snowball’s Chance is a 3D isometric territory control shooter, where players control a snowman who is tasked with establishing and maintaining a foothold in enemy snowman territory. In this project I worked as a graphics programmer and I was responsible for the overall look and aesthetic part of the game.

My contribution in this project are as follows:
  • Developed OpenGl graphics engine in the component based architecture.
  • Wrote vertex and fragment shaders for the graphics engine in GLSL.
  • Implemented BRDF lighting and Rim Lights.
  • Implemented normal maps for terrains.
  • Implemented debug draw for game objects with physical properties.
  • Implemented particle system for effects like snowfall, snow breath, trail.
  • Improved the particle system performance by 90% using instance based particle system.
  • Implemented animation for rolling snowman, snow breath stance, death animation and resurrect animation.
  • Implemented wrappers for graphics system to expose it to LUA scripting system.
  • Created textures for trees, wood, igloo and some HUD elements using photoshop.
  • Gameplay programming using LUA scripting.

Deferred Shading (Student Project):
June 2015
Implemented deferred shading in OpenGl GLSL. Features include :
  • 1 Shadow Casting Light
  • Basic Shadow
  • G-Buffer Pass
  • 100 Local Lights

C++ Component based Game Engine (Student Project):
November 2014
Developed a component based game engine for plat-former game. Some of the highlights are: 
  • Data driven object creation
  • Archetypes
  • Game Object factory
  • Memory management
  • OpenGl graphics
  • Sprite animation
  • Rigid body collision and  response
  • Behavior (AI) state machines
  • Level loader
  • Event message handling and broadcast signals

Bloop ( Personal Project )
July 2011 

3D WebSite ( Kratin )
December 2013
Picture
Click on Image to view 3D website.
Powered by Create your own unique website with customizable templates.