Core concepts travel between programs. Learning them in one space grants intuition for another. Mastering principles of procedurals, nodes, and algorithms in Substance Designer and Unreal gave me a head start with visual scripting and Houdini. Programming is one of the things I love, Python enables me to interface between my tools and create new connections. I leverage HLSL when I need to go beyond my tools, it gets me a step closer to one of my pillars- Creativity First. My effects and tools are always flexible, always easily art-directable. I create things that remove technicality and unleash our medium’s full creative potential.
This project explores fixed camera VFX in a realistic, grungy ARPG style. A big focus on this piece was refining my workflow, I nailed down 3 distinct phases: Blockout, allowing me to nail timing and feel; 1st pass, broad strokes on every piece of the effect, starting with the most challenging aspects; and finally a 2nd pass, polishing and reworking anything that's not working. This process allowed me to communicate more effectively with my mentors, avoid rabbit holes, and better interop with the games pipeline.
Another challenge I came across was managing the many elements. From compositing animations to the about 10 systems that make up the effect, keeping everything cohesive and balanced was a must. To solve this, I used a master particle material with controls for distortion, panning, and erosion, which reduced texture authoring and allowed me to rapidly iterate in-engine.
I enhanced my RBD process with edge damage for a more realistic result. Leveraging the fixed top-down camera, I rendered a top down alpha in Houdini's COPS, added detail in Substance Designer, layered tileables and normal maps, then animated the erosion and emissive masks using custom primitive data in Sequencer.
In this project, I aimed to tackle dynamically lit and grounded flipbooks. Inspired by articles from Simon Trümpler and posts on the Real-Time VFX forum, my goal was to create a fully scalable and reusable workflow for authoring and rendering these flipbooks. Throughout my journey, I delved deeper into Pyro Simulations, Karma Volume Rendering, and Approximating Volumetric Shading.
I utilized Axiom Solver for hero simulations and Embergen for the smoke ball. Axiom was a nice balance between the speed of Embergen and the quality of Houdini's built in pyro Solver. For the looping hero simulations, I used a method described by Simon Trümpler in his post: Battlefront II: Layered Explosion. Essentially by moving our emitters in space, we can create the illusion of a continuously expanding volume. The simulation is then cached and I cross-fade between two snippets to get the final seamless loop.
I enhanced my RBD process with edge damage for a more realistic result. Leveraging the fixed top-down camera, I rendered a top down alpha in Houdini's COPS, added detail in Substance Designer, layered tileables and normal maps, then animated the erosion and emissive masks using custom primitive data in Sequencer.
I had the privilege to study under Jon Arellano on this piece during my Environment for Games class at Gnomon. I created all assets and used a games-centric workflow. I heavily relied on the UE5 material layering systems to effectively texture in-engine. Assets are built up from simple tileables, authored in Substance Designer, to complex unique assets using RGB masks and vertex colors. I did a deep dive into subsurface and translucency shaders for the crystals. I scanned the foliage from real-life plants, modeled in Houdini and textured in Painter. I blended proceduralism and sculpting for my high-poly assets for an efficient, iterative workflow.
This project I heavily relied on my Houdini and VEX skills through procedural, non-destructive workflows. I fell in love with the ability to quickly update and iterate over my model. This stands apart from traditional workflows where models require time-consuming destructive work. Leveraging this with ZBrush brought me even more freedom. Sculpting over my procedural assets and adding that hand-crafted touch still allowed them to shine, while dramatically reducing the time spent. Again art direction is key, the ability to not only sculpt but also interactively guide my proceduralism through painting, masking, and guide meshes reinforced that uniqueness.
This video demonstrates my asset-building and shader workflow for the scene using the UE5 Material Layering setup. I utilize two primary shaders: "M_Layered" and "M_Layered_Opacity" --the latter is optimized specifically for foliage. These shaders are blank slates that offer only final adjustment controls for hue, saturation, etc. From there, I'm able to layer on additional materials. For example, "ML_PBR_Base" acts like a fill layer in Substance Painter. Then, I can choose how to blend this layer. I control which channels get mixed; I can use a specific blend shader to sample a texture map or vertex color. Through this workflow, I could rapidly iterate on my whole scene while avoiding the typical clunky "Uber Shader." I plan to enhance this approach in future projects by integrating custom primitive data. This would allow for improved per-instance control over material parameters. I would also have liked more detailed blend materials similar to the painter's smart mask functionality. While my base shaders were high quality, my blend materials were relatively standard and relied heavily on interesting input textures rather than more dynamic in-engine control.
Let's make something: