It’s that time of year again. Update time. A quick review: since the last time I posted, I joined Dreamworks to work on their Oriental Dreamworks pipeline. Due to the constraints of the job, I felt that posting on this blog was not in my best interest. As a result, this website and my git repo languished. I worked with a lot of really awesome people there, but ultimately due to a number of reasons, I decided to leave and try other pursuits.
Pursuits in VR!
I set out with the rough goals:
- Learn about gaming.
- Learn about VR.
- Make a thing.
My first approach was to make a game with grid-snapping in Unreal Engine. I got my feet wet testing new ideas with unreal blueprints and I dusted off my c++ knowledge. My c++ knowledge turned out to be dusty indeed. I quickly ran afoul of Unreals macro system, which made it incredibly difficult to figure out if my particular problem was specific to unreal or not. (For those not in the know, unreal adds a reflection system to c++ via macros and a transpilation process. It’s all very magical.)
I quickly learned that moving code from blueprints to c++ and vice versa is a very manual and error-prone process. But, in the end, I did get my grid snapping system working. Of course, as soon as I did, I learned that zapping tables was way more fun!
And then somewhere in the middle of making a sweet dissolve/teleporting shader for some game element I was planning, I ran into signed distance functions.
Signed distance functions describe where a surface is in 3D space. Combined with a variety of techniques, they can be used to render a 3D scene. They are an incredibly simple concept that can achieve some truly stunning results. At first, I was looking at how this applied to my dissolve shader. Until I saw what Media Molecule was doing with it for their next game, Dreams.
Wow. Just wow. These guys are making a game that doesn’t use polygons. That’s insane. Mind blowing. Fantastic. I want in. And then I saw this video:
And promptly fell into a math-hole.
To be continued…