Projects

Subdivision Surfaces

https://github.com/RobertBColton/SubdivisionSurfaces

A natural extension of splines into three-dimensional space, subdivision surfaces were first explored in 1978 by Edwin Catmull & Jim Clark. They are a recursive means of approximating the limit of a surface. Their canonical use is in CGI rendering for animated films, as they allow artists to produce complex and smoothly shaded geometry from very simple piecewise linear polygonal control structures (demonstrated below). They have been used in virtually every Pixar Animation Studios film since A Bugs Life (1998), Toy Story 2 (1999), Cars (2006), Brave (2012), and so on.

ActionMaker

https://github.com/RobertBColton/ActionMaker

Drag & Drop is an effective way to teach computer science concepts to novice computer programmers. I created an editor for GameMaker’s popular action library format using Vue.js and native HTML5 form elements for the front-end.

MonoGame Quadtree Terrain

https://github.com/RobertBColton/monogame-quadtree-terrain

A quadtree is an efficient data structure for frustum culling invisible patches of a 3D terrain. Because a typical projection matrix has a 60 degree field of view, the camera on average only sees about 1/6th of the terrain. Using a quadtree allows us to quickly dispose of a node and all of its children using a single bounding box collision check. This was my first time creating such a terrain engine and I intend to add geometry mipmapping in the future based on a SIGGRAPH paper published by Digital Illusions Creative Entertainment (DICE) for their Frostbite engine in games like Battlefield.

 

Voxel Terrain

https://github.com/RobertBColton/voxel-terrain

Today video game consoles and gaming computers have dedicated GPU’s that render millions of polygonal vector graphics. But computers used to do graphics in software and it was very expensive to render 3D objects and landscapes. This made algorithms for rendering voxel heightmaps popular and they were used in games such as Comanche and Outcast.  It involves casting a ray for each column of pixels on screen onto a 2D heightmap.

Broad-phase Collision Detection

https://github.com/RobertBColton/broadphase-collision-detection

Collision detection is an important part of a game engine that can be separated into two phases, a narrow phase and a broad phase. The narrow phase of collision detection generally involves polygon intersection tests using the Separating Axis Theorem. A broad phase is usually created to speed up the narrow phase by reducing the number of collision checks. In my experimental broad phase I used a sparse spatial hash that grouped objects into “buckets” and performed axis-aligned bounding box checks to enumerate a hash set of collision pairs.

DockFX

https://github.com/RobertBColton/DockFX

DockFX is a fully featured docking library I created for the JavaFX platform. A docking library creates a reusable, modular, and customizable interface that end users can change and modify as they see fit to tailor a program to their needs. The source code is published on GitHub where regular binary releases are made available.

dockfxhover dockfxdocked

ENIGMA Development Environment

http://www.enigma-dev.org

Design and implementation of new systems, features, and extensions to the architecture of the main engine and compiler. I developed alternative Direct3D rendering back ends and started an OpenGL 3 compliant port that would be compatible with OpenGL for embedded systems. ENIGMA is the software that provides the ability to compile your games through a compiler of choice and distribute them for multiple platforms. I also improved the IDE by adding support for additional formats and platforms.

  • Native look and feel running a first person shooter tutorial.

Project Mario

This is an open source 3D platforming example I created for aspiring game developers to learn from. Game physics used an existing collision detection system I optimized with spatial hashing algorithms. Most graphics and 3D modeling are my original work with Blender.


Project MarioProjectMario2

Leave a Reply