Luciano

Developing Digital Realities: Where Art Meets Innovation

  • Houdini

  • Maya

  • HLSL

  • Python

  • Substance

  • Unreal

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.

Project
Borealis

Ravenholm Portal

Opening A Rift

Project Borealis is a fan game I've volunteered on for the past year and a half, built fully from scratch in Unreal Engine. The game follows Half-Life writer Marc Laidlaw's "Epistle 3," his vision for Half-Life 2: Episode 3. Much of my time on the project has been spent working on the hero effect for our demo level. I was given a rough prototype by my art/FX lead, Sklounst. The effect needed to achieve a few key goals: first, integrate smoothly without disrupting the mostly art-locked level and gameplay; second, allow for flexibility and art direction since it appeared throughout. Creatively, we aimed to shock the player - our level puts Gordon in an unsettling dream state, and this effect needed to reinforce that tone.

“We needed flexibility and art direction”

Adding Depth

Here's my process for building the portal, minus the particle systems. The wall meshes are opacity-clipped using a 3D sphere mask bound to an in-level actor, enabling easy movement. To add organic edges, I layered volumetric and world-aligned textures for small and large breakup respectively. I then added a small emissive gradient, then dithering. However, the skybox initially felt disconnected. I added a "glow mesh" - a sphere with inverted normals, that would sit around the room and help blend everything together. Its shader makes use of a panning texture and samples that same sphere mask to fade the center, it's then masked by my depth shader.

A key technical challenge on this project was getting particles and meshes to render inside the portal. The latter wasn't achievable without a substantial addition to our rendering pipeline. Instead, I manipulated the depth pass by isolating the "portal catchers" (the skybox planes), and pushing them further back in z-depth so other translucent materials could overlay them. However, particles still leaked outside the room. A 3D box mask, adjustable via the master blueprint, resolved this.

The ribbons, glow, smoke, and other particles help to tie the whole effect together. Ribbons are driven by "Leader" particles that move along splines. These leaders leave a path of child particles that make up the actual ribbon. A larger ribbon fakes bloom. The fine particles are spawned by a box mask closely mapped to the portal region, these are then killed via a custom scratchpad script matching the original portal masking shader. All particles sample my depth logic to properly fade within the portal and room.

Crystal 
Courtyard

Growing Crystal

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.

Highpoly Proceduralism

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.

A Layered Approach

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.

Terrain Shader

A Unified Solution

I built this shader while working on a mod project for Risk of Rain 2. Not having direct access to source assets slowed my process, so I reverse-engineered their terrain shader. It significantly speed up my workflow and allowed me to dive deep into implementing stylized lighting models and triplanar texturing. The shader uses a mix of cel-shading and half-lambert lighting. Two artist-controllable sliders, "shadow intensity" and "shadow falloff", allow for various looks. Beyond the lighting models, I also implemented a custom triplanar texture projection that offers controls for tiling, contrast, color, and blending across the terrain. This allows the shader to accommodate nearly every technique, whether it's vertex color, textures, or slope masks.

Unreal Exporter

A Faster Workflow

This was a personal project to gain familiarity with the Maya Commands API. I got to touch on performing operations and building interfaces within Maya. My goal was to streamline organizing and importing assets into Unreal Engine and other software. On large projects, artists spend substantial time file managing, often this results in a messy, cluttered project. However, I find Maya scenes are typically better structured, with proper naming, grouping, and segmentation. I wanted to capitalize on this existing organization to bring order to the rest of the project.

Let's make something: