
Senior Software Engineer & Senior Technical Artist
Advanced Real-time Water Shader (Amplify) - Unity
The Challenge Delivering cinematic toon water visuals (depth, foam, caustics, reflection) within a strict single-pass performance budget. The goal was to eliminate the trade-off between visual fidelity and GPU overhead.
The Solution Developed a modular shader that prioritizes mathematical efficiency over expensive rendering passes:
Depth-Driven Coloring: Interpolated shallow/deep gradients using a custom depth-fade logic.
Procedural Foam: Integrated screen-space depth comparison for dynamic, object-aware intersection foam.
Cheap Refraction: Authored a light-clipping mask to simulate caustics, bypassing the need for costly real-time light calculations.
The Priority & Outcome Focused on artist-friendly tweakability and technical scalability. Achieved a production-ready system with 25% less GPU overhead than standard transparency-heavy solutions.
Mobile Friendly Stylized Toon Water Shader - Unity
Challenge: Achieving a sharp "toon" aesthetic with reactive foam and waves without expensive physics simulations.
Logic & Approach: Custom HLSL utilizing the Depth Buffer for proximity-based effects:
Depth-Driven FX: Procedural color grading and noise-distorted intersection foam via screen-space depth.
Surface Motion: Efficient real-time vertex displacement using sine-wave functions.
Scalability: Modular
multi_compilearchitecture to toggle AA and high-end effects across platforms.
Outcome: High-performance, production-ready visual with zero physics overhead.



Arcane Burst - Character VFX - Unity
Technical Breakdown
The Challenge: Designing a multi-layered character ability that requires synchronized motion, organic dissolves, and complex distortions. The goal was to avoid using multiple simple shaders and instead create a single, highly flexible "Master Shader" that could handle all VFX elements—from energy petals to sparkles—efficiently.
The Solution: I developed a comprehensive "All-in-One" VFX Shader in Unity to serve as the foundation for the entire effect. This shader integrates advanced features like dual-layer texture panning, Fresnel-based transparency, and dynamic UV distortion. To achieve the specific energy silhouettes, I modeled custom meshes in 3ds Max, ensuring optimized UV layouts for smooth texture flow along the geometry.
Key Technical Features:
Dynamic Distortion : Implemented a secondary noise-driven UV distortion layer to create the "energy ripple" effect, adding a sense of heat and power to the core burst.
Custom Geometry: Designed specialized meshes in 3ds Max to provide unique shapes (like the energy petals), allowing for more artistic control than standard particle primitives.
Multi-Phase Dissolve System: Developed a noise-based dissolve logic within the shader to manage the smooth dissipation of the effect, synchronized with the particle lifetime.
Vertex Offset & Pulse: Integrated vertex-space manipulation to add procedural "pulses" to the meshes, giving the energy forms a more organic, living feel.
The Outcome: A high-impact, polished character VFX that is both visually rich and performance-optimized. The Master Shader significantly reduced material overhead and allowed for rapid visual iterations directly within the Unity Inspector.
Dynamic Liquid Sprite Shader (Honey Effect)
Technical Breakdown
The Challenge: Creating a viscous, "oozing" honey effect for a 2D environment that feels alive without the heavy performance cost of traditional physics simulations. The effect needed to be easily tweakable for different levels of "wiggle" and liquid intensity.
The Solution: I developed a custom LiquidWiggleSprite shader in HLSL for Unity's Universal Render Pipeline (URP). This shader uses a dual-masking approach to achieve complex UV distortion: a local
DistortionMaskfor fine control over which parts of the sprite move, and a pannedDistortionScreenMaskto create a continuous, global flowing motion.Key Technical Features:
Dual-Layer UV Distortion: Combines a local sprite mask with a screen-space panner to simulate a rolling, viscous liquid motion.
Wiggle Controllers: Exposed parameters for Global Strength, Direction (X/Y), and Intensity, allowing artists to fine-tune the "thickness" and flow speed of the honey in real-time.
Sprite Atlas Support: Integrated tile count variables (
_PackedSpriteTileX/Y) to ensure the distortion scales correctly when using packed sprite sheets.Screen-Space Logic: Utilizes
ComputeScreenPosto ensure the liquid distortion feels consistent relative to the player's view, enhancing the immersive "submerged" or "flowing" feel of the honey tiles.
The Outcome: A highly optimized and visually satisfying honey effect that provides the tactile feel of a viscous fluid while maintaining the sharp clarity of the game's stylized art direction.
Stylized Ballistics & Impact VFX
Technical Breakdown
The Challenge: Creating a punchy, satisfying combat impact that adheres to a strict hand-drawn, stylized aesthetic while maintaining high real-time performance. Standard particle physics alone often fail to capture the specific "snappy" timing required for cartoon explosions.
The Solution: Adopted a hybrid workflow combining real-time engine particle systems with pre-rendered elements. I utilized Effects to hand-craft complex explosion timings and shapes, exporting them as optimized flipbook textures (spritesheets). This approach allowed for complex, fluid animation data to be played back efficiently on simple particle quads.
Key Technical Features:
Custom AE Flipbooks: Authored two distinct 2D explosion sequences in After Effects—the initial high-energy flash and the lingering stylized smoke clouds—ensuring precise control over the animation curve and silhouette.
Hand-Painted Textures: All graphical assets, including the projectile trail ribbons, sparks, and smoke diffuse maps, were custom-painted to ensure a cohesive artistic direction.
Projectile Trail System: Utilized a ribbon renderer with custom scrolling noise textures to create a dynamic, energetic trail that follows the projectile's trajectory.
Impact Force: Implemented a brief refractive shockwave ring (distortion shader) upon impact to visually sell the concussive force of the explosion.
The Outcome: A visually dynamic and highly optimized VFX sequence that seamlessly blends hand-crafted 2D animation principles with 3D real-time environments.


Custom Match-3 Level Design Tool
Technical Breakdown
The Challenge: Streamlining the level design workflow for a complex Match-3 puzzle game. Designers needed a robust, user-friendly interface to manage thousands of level configurations, spawn rules, and goal conditions without modifying raw data files or code.
The Solution: Developed a comprehensive Custom Level Editor within Unity using Editor Scripting (IMGUI/EditorWindow). This tool serves as a visual bridge, allowing designers to "paint" levels and configure game logic in real-time, which then serializes directly into the game's data structures.
Key Technical Features:
Visual Grid Painter: Implemented a "brush" system that allows designers to select items from a palette (Basic Items, Special Items, Modifiers) and paint them directly onto the level grid.
Data-Driven Spawn Rules: Integrated a dynamic spawn logic interface where designers can define percentage-based spawn rates for different item types, ensuring balanced gameplay.
Global Level Configuration: Exposed core parameters such as Move Count, Grid Dimensions (Width/Height), and RNG Seed values for precise control over level difficulty.
Goal & Requirement Management: Built a dedicated system to define win/loss conditions and specific level goals (e.g., collecting specific item types) within the editor.
Save/Load Workflow: Robust serialization system for local and online level management, allowing for instant testing and iteration.
The Outcome: Successfully reduced level creation and iteration time by approximately 70%, enabling the design team to prototype and balance hundreds of levels efficiently.

High-Performance Vertex Painter
Challenge: Processing mesh data in Python is typically slow. Looping through thousands of vertices to apply colors based on spatial coordinates creates significant lag in Blender.
Logic & Solution: Developed a NumPy-powered script for instantaneous vertex color application based on World-Z positions:
Vectorized Processing: Leveraged NumPy to bypass slow Python loops, performing batch mathematical operations on vertex arrays.
Matrix Multiplication: Calculated world-space coordinates via vectorized matrix transforms for accurate spatial mapping.
Automated Normalization: Implemented instant Z-clamping (0.0 to 1.0) across the entire mesh for procedural masking.
Outcome: Achieved near-instant execution on high-poly models, drastically accelerating procedural asset preparation for game engine pipelines.
Ethereal Soul Bind | Spectral Ability VFX - Unfinished
Challenge: Creating a fluid, non-linear energy link that follows a specific geometric path while maintaining frame-perfect synchronization with character animations. Standard particle ribbons lacked the artistic control needed for this spectral "binding" effect.
Logic & Solution: Leveraged Custom Meshes driven by Unity’s Particle System using Custom Vertex Streams. By passing per-particle data (like normalized lifetime) directly into the All-in-One Master Shader, I achieved precise control over texture distortion and growth along the mesh’s UV space.
Key Technical Features:
Vertex Stream Integration: Utilized custom data streams to drive procedural animation on the mesh, allowing the energy to "morph" and "flow" based on particle life.
Master Shader Versatility: Employed a single material pass to handle multi-layered panning, Fresnel-based glow, and UV distortion for a complex spectral look.
Timeline Synchronization: Integrated the effect within Unity Timeline, ensuring the VFX triggers perfectly align with the character's skill animation frames.
Optimized Geometry: Designed custom trail meshes to define the energy's silhouette, maintaining high visual fidelity with minimal draw calls and particle counts.




