After having a conversation with an industry professional, the team and I were convinced that we could get a lot of utility out of making a voxel (3D pixel) shader that could be applied to any piece of geometry. It would evoke the retro vibe that the game’s design is already giving off, unify a lot of the art assets further, and also help save a lot of future time and energy when developing new art assets.
My first step was to begin planning the development while researching similar work online to see what information I could glean. Once I realized the root of a voxel shader was simply snapping vertices to their nearest point on an invisible grid, I jumped right in to the UE4 material editor to put it into practice in my own custom material function. With that core planned and implemented, I quickly realized that at most grid sizes I was being constrained from having a uniform voxel/cubic result by the model’s vertex count. This led me to delve into the power of displacement/tessellation and really round out the implementation.
Overall, I’d say the whole thing was surprisingly straight-forward and a rewarding exercise in the development pipeline of something completely new to me. Now, I’m able to consistently put the material function into any material, add tessellation, adjust various settings, and get a good looking voxelized version of the model that the material’s applied to. Going forward, I can and will apply this method to various materials, along with emissive and subsurface color tweaks, to get a consistently unified retro look.
-Kolel, Art Director