VR-Vantage
(VT MAK, 2013-2023)
VR-Vantage is MAK’s image generator that allows you to visualize simulation environments from multiple perspectives. These range from realistic scenes for out-the-window or sensor views for man-in-the-loop training devices, to 2D/3D informational views and tactical map displays for planning and situational awareness.
I was a Principal Software Engineer on the VR-Vantage team.
Work done:
– Optimized engine to render twice as fast using modern techniques: indirect rendering, GPU culling/lod, bindless textures.
– Implemented Forward+ lighting to support an unconstrained number of lights.
– Implemented HDR and post processing pipeline using compute shaders.
– Implemented various shader effects (PBR, IBL).
– Integration, debugging, improvements and bug fixes for several third-party libraries.
– Extended SpeedTree for 64-bit precision (for geocentric) and hardware instancing.
– Various physics-based effects: Ackerman/Skid steering, entity part articulations.
– Optimized video framework for stutter free streaming (Nvidia video SDK, GStreamer).
– Supported technical artists for their workflow, tools.
– Collaborated with middleware partners, technical support, documentation.
– Mentored new programmers.
I was also in charge of identifying state-of-the-art rendering techniques, their applicability to Vantage and their subsequent design and implementation within Vantage.
Technologies: C++, OpenGL, CUDA, OpenSceneGraph, osgEarth, SilverLining, Triton, SpeedTree, SensorFX, Qt
Platform: Windows, Linux
SilverLining, Triton SDKs
(Sundog Software, 2016-present)
Sundog makes SDKs used by games, training, simulation, and broadcast applications all around the world.
The SilverLining sky, cloud, and weather SDK renders real-time skies for any time at any location. It provides 3D volumetric clouds, precipitation, stars, and realistic outdoor scene lighting.
The Triton Ocean SDK simulates thousands of 3-D ocean waves at hundreds of fps with the most advanced physically based real-time wave models available today. Triton also simulates ship wakes, rotor wash, water impacts from projectiles, foam, spray and much more.
Work done:
– Vulkan renderer for SilverLining SDK.
– Re-architected SDKs for multithreaded render command list generation.
– Bindless rendering, shader optimizations, etc. to significantly improve performance.
– Developed auto-testing framework, ongoing maintenance, technical support for clients.
Technologies: C++, Vulkan, DirectX, OpenGL, Vulkan, Shaders (glsl/hlsl), CUDA, DirectCompute
Keywords: FFT, JONSWAP, Pierson Moskowitz and Phillips wave models, Beaufort scales, Douglas sea states
Platform: Windows, Linux, Mac
MUSE OpenIG
(Compro, 2015-2016)
OpenIG is an open-source cross-platform OpenSceneGraph based Image Generator. It is used in commercial (e.g. Air Traffic Control) and military flight simulators. It features a plugin based framework; functionality can be added by writing new plugins or extending existing ones.
osgEarth
(Pelican Mapping, 2015)
osgEarth is a full scale planetary, terrain engine that supports all kinds of mapping and geospatial data. It is used in a variety of GIS applications as well as military and commercial simulators.
Work done:
– Height maps directly tessellated on the fly on the GPU.
– Seamless LOD transitions/morphing between imagery as well as height data.
– Fully GPU based procedural, shader based vegetation, foliage rendering generated on the fly, in a deterministic, random way.
Technologies: C++, OpenSceneGraph, OpenGL, glsl
Keywords: Tessellation shaders, Geomorphing, Procedural terrain, Vegetation
Platform: Windows, Linux
VisionScape
(VisionScape Interactive, 2015)
VisionScape: Virtual Property Architect is a 3D landscape design software that enables professionals and consumers to create realistic property designs from a catalog of real products. A suite of tools allows users to design and customize any aspect of a property very quickly: patios, decks, pools, walkways, driveways, gardens, gazebos, walls, steps, etc. Designs can be saved as well as shared online for collaborative design.
Work done:
– Realistic water rendering: reflections, refractions, fresnel effect, caustics.
– Several key optimizations to improve performance: batching, instancing, etc.
– Wrote the entire SpeedTree wrapper that ties together IDV’s SpeedTree with Ogre 1.7+.
– Lighting and ambient occlusion.
– Reworked the build system with CMake for a one click build.
Technologies: C++, Ogre3D, SpeedTree, SilverLining, Triton
Platform: Windows, Mac
Line of Defense
(3000AD Inc, 2012)
Line of Defense is a Sci-Fi MMORPG in development by 3000AD, Inc. Players battle for control of various military bases spread across four continents. First and third-person combat views are available, along with a myriad of handheld weapons as well as land, sea, and air vehicles.
I was the graphics programmer on this project:
– Implemented weapons and effects framework.
– Implemented physics and graphics for damage and destruction.
– Fixed key performance issues via both code and iterating assets with technical artists.
– Worked closely with Havok to resolve bugs and usage issues with the Vision Engine.
Technologies: C++, DirectX, Havok Vision Engine, Havok Physics
Platform: Windows
Unicraft
(Unifaction/Project Starborn, 2010-2012)
Inspired by Minecraft, Little Big Planet, and mini-games of physics modification, Unicraft features fully modifiable/destructible worlds and unique game play.
Work done:
– Paging and threading for background loading and world generation.
– Infinite world.
– Procedural world generation (both offline and on the fly).
– Shading and lighting (Tri-Planar texturing, etc.).
– Caching.
D+H Furnplan
(D+H Software, 2009-2012)
This software is used for realistically modeling and rendering furniture, architecture and room interiors. The work involved switching their legacy fixed function rendering engine to Ogre3D, whilst adding several new features:
– Material framework and ‘Uber’ shaders for photo-realistic rendering: normal mapping, fresnel, image based lighting, etc.
– Variance shadow maps, reflections.
– Post process effects: SSAO, edge detection shader.
– Batching geometry to improve render speed.
MitraClip Software
(Abbott Vascular, 2008-2012)
This software is used for training doctors/interns for the MitraClip procedure.
I did all of the graphics and some of the physics programming on this project:
– Realistic rendering of the heart.
– GPU-based animation, soft body physics.
– Order-independent shader-based slicing/cutting.
– Echo and Fluoroscopy rendering.
Technologies: C++, Ogre3D, Bullet Physics, wxWidgets
Platform: Windows, Mac, Linux
NVSG/Scenix
(NVIDIA, 2006)
– Core developer in the NVSG (now Scenix) team.
– Implemented various parts of the volume rendering module (now Index 3D).
– Identify state of art techniques and their applicability to NVSG.
– Customer support: bug fixes, coding tutorials, etc.
LooksReal
(Fraunhofer IGD, 2002-2005)
In the automobile industry, during the design process, several mockups of a design are created for review and refinement. This is typically a time consuming process.
LooksReal project aimed at drastically reducing this time by allowing designers to photo-realistically render their designs in real-time, thereby allowing them to review and iteratively refine their ‘digital’ mockups very quickly.
To this end we combined and, in several cases, improved upon the state of the art real time rendering techniques like:
– High Dynamic Range Rendering.
– Image Based Lighting.
– BRDF based rendering.
– Global Illumination effects using Spherical Harmonics.
– Hardware accelerated soft shadows and reflections.
General purpose computation on GPUs (GPGPU)
(Fraunhofer IGD, 2002-2005)
Here, we developed a Ray tracer with Photon mapping and used Hyper-threading to divide computation between the GPU and the CPU.
– One thread does the ray tracing entirely on the GPU, and handles user interaction.
– The second thread does photon tracing and light map generation on the CPU.
We further evaluated pay-offs by mixing and matching the ray tracing itself between the GPU and the CPU. This was done by dividing the screen into tiles and allocating them in varying degrees between the GPU and the CPU. Today, of course, we can do ray tracing and global illumination at interactive frame rates and this work was the part of the wave of the precursors to the technology today.
Publication:
Towards load balanced computations using GPU and CPU – Proceedings of the ACM workshop on General Purpose Computing using Graphics Processors, 2004, sponsored by ACM SIGGRAPH.
Virtual Assembly and Simulation in VR
(Fraunhofer IGD, 2002-2005)
The aim of Virtual Engineering (VE) is to realize an integrated product development cycle where all the CAD steps refer to the same digital product representation. This is the virtual prototype (VP) or digital mock-up (DMU).
The aim is to reduce the number of physical prototypes required to verify the computer model, thereby speeding up and reducing development costs. The assembly process and verification at kinematic and dynamic levels should be of such high accuracy and precision, that only one physical prototype need be actually built, the actual finished product itself.
This project allows the user to build, simulate and verify assemblies in a fully immersive Virtual Reality setup. The rendering is projected onto a Virtual Table and the viewer views in 3D with the aid of 3D active stereo glasses. User interaction is in 3D as well, with a tracked pen and palette.
Miscellaneous:
LFA engine
(Lo-Fi Apocalypse, 2010-11)
I wrote the core graphics engine (LFA Engine) in OpenGL ES for the games developed by the company. It is used for everything in the games: entities (e.g. planes), particles (clouds, smoke), UI, text, etc.
– 4P Air Battle: Retro-style dog fighting game.
– GunApp: A popular app that turns the iPhone into over 120 weapons with sound effects.
VCollab Viewer
(VCollab, 2007)
This is a software for CAD/CAM/CAE visualization and simulation. Their products used the legacy Cosmo3D rendering engine from SGI, and I was hired to develop a prototype for their application with the Ogre3D rendering engine. The evaluation was positive and the company now is internally developing their products with the Ogre3D engine.
Below are old engine screenshots showing the kind of product we were prototyping. The Ogre3D engine images are comparably similar and visually/aesthetically better, but not yet in the public domain. Hence, I can’t link them here.
Technologies: C++, Ogre3D, wxWidgets
Platform: Windows, Mac, Linux
Galactic Melee
(2007)
This was an MMOG game by a small group of Indie Developers. I did some of the graphics programming on this project (shaders for the ships/fighters, weapons effects, explosions, etc.). The game was technically sound. Unfortunately, it did not do well commercially.
*Standard Disclaimer*
All videos and screenshots, unless otherwise stated, are the property of the respective owners. While I only talk about what specifically I implemented on each project, some introductory text may be from the company websites. If you feel I have erroneously included this text, please email me, and I will change it.