A small sample of professional and personal projects.

Company Projects

WIN Reality

My main contributions here involved: solving rendering issues, creating shader effects, reworking large parts of the core system, custom UI systems, improving plugin integrations, general performance analysis and optimizations, gameplay logic, and general maintenance.

Here's a video I found on YouTube with some example gameplay:

TTF - Super Nintendo World

My contributions here were broad: I created real-time visual effects, extended the art pipeline, created editor tools for artists, and set up local CI and cache servers.

I created many VFX for this project, for example: the wheel sparks, shell toss and explosion, Bowser lava skin, effects in other parts of the park like Toad ice cube scene (snow deep footprints, raymarched ice cubes), and many more effects.

I also worked on getting the custom AR headset to display correctly from Unity which involved writing a custom post processing and image transformation stack.

EMD Serono, Inc.

My role here was to prototype and explore AR/VR ideas that may be of benefit to the org. I developed various prototypes for marketing/trade shows, education, archvis, remote assistance, etc. The following two are a tiny selection of the many cool projects I built while I was there.

EMD - VR Equipment Training

A VR app for equipment training. I mainly worked on lighting, shaders, the gameplay logic and training objectives system, and a few other details.

EMD - AR Equipment Training

Proof-of-concept equipment training AR application I built to run on the original Microsoft HoloLens. It takes the user through several steps to operate a piece of equipment. Setting up the points to check was user configurable at runtime.

Personal Games and Projects

Custom Android VR Engine

I made this very small demo for several reasons: to learn OpenXR and OpenGL ES, to have a raw baseline to compare performance captures to whatever Unity is doing, to see how feasible it is these days to even make a VR app from scratch for Android/Quest 2-3, and a few other reasons. For this project I use C/C++, OpenXR, OpenGL ES; and a few minimal dependencies like Oboe (AAudio wrapper), tinygltf, etc... I didn't track time, but I estimate this took about 2 weeks of dev time.

The features I was able to add at this point are:

  • Multi-view rendering (aka Single Pass).
  • MSAA.
  • Higher FPS selection, runs at 90 on Quest 2.
  • Proper floor origin setup.
  • Hand tracking + binding it with my skeleton hand model.
  • Basic audio playback (extracting samples from OGG and feeding raw audio stream)
  • Basic texture loading (not shown in video)
  • Basic glTF support (scene hierarchy, meshes, and material colors)
Halloween-themed given the time this was developed.

Related blog post here.

Custom Game Engine

The start of a custom C/C++ and OpenGL game editor / engine. I had started this for practice at learning lower-level APIs, in contrast to Unity. This went through many revisions as I tested out different languages and APIs (OpenGL, Vulkan, D3D). It was last updated March 2021, and I will probably later take what I learned from this and other custom projects to build a much better custom engine and editor.

Game in a Unity Editor Window

I did this as a personal challenge to push my Unity Editor scripting abilities / tool writing. Note that this is running in a Editor window not as a standard game. Complete with many features expected in the game (t-spin, slamming blocks, etc.). There's a great deal of actual editor tools I would like to show also from work at other companies.

Block Breaker VR

This was my entry for a game jam in San Antonio hosted by MergeVR. I wrote the code and set up the lighting and materials. The models and textures were created by two other teammates.

Servo Controller

Controlling a servo from a GameObject's rotation wirelessly over the network using a server I wrote in C. Note: the cable seen in the video is power only not data transfer, could be battery powered and completely wireless.

Ali Tale

First-place winning weekend game jam entry! At the event, I joined up with other attendees for a team size of about ten people. I wrote the full game code which entailed creating a simple custom scripting language that the writers could easily work with. My scripting language allowed defining character actions, scene changes, dialogue, user action options, etc. I also guided requirements for art assets and integrated those assets into the project. Futher, I had a large part in determining the general type/mechanics of the game and generally determining how we should approach it. The theme/topic was set by the game jam host. Here's a video of part of the gameplay:

Shaders and Effects

A random sample of shaders, materials, and effects I've created.

Equirectangular-Sphere Texture-Rotation Shader

Given an equirectangular mapped sphere, if you were to simply shift the UVs in the V direction, the texture would get sucked into the poles. To properly rotate it like this requires projecting the UV coords to 3D space, doing the rotation, then projecting back.

You could also rotate the mesh itself, but there are some use cases for rotating it in a shader.

Real-time Raytracer in Unity

Halftone Screen Shader

Car Paint / Glitter Material

Render Over Network into Console Window from Unity

Blackhole Shader

I made a tutorial on this blackhole shader that got somewhat popular: https://medium.com/@mariosubspace/blackhole-shader-in-unity-eb7d93af9577

Recursive Rendering Effects

Substance Detailed Cloth Material