SHADERS & VFX

Shaders and particle systems created in Unity URP, using HLSL

A series of shaders and particle systems built across a variety of game projects, combining node-based programming with hand-written HLSL. The VFX themselves are implemented across the Shuriken Particle System and the VFX Graph.

Unity URPEngine
HLSLShader Language
Shuriken + VFX GraphTools
Project 1

Stylized shader for Custom Lighting Model

Unity URP Amplify Shader Editor HLSL

I built a fragment shader using Amplify Shader Editor and HLSL code to render objects in a graphic novel aesthetic.

The shader reads lighting data from the scene, from the main light and all additional lights. This data is combined with the object's normal map data to create a mask for the shadows. The threshold of the mask can be easily manipulated by the user via exposed properties. This mask is updated in real-time if the lights change or the object moves.

The mask is used to define how shadows should render in dark regions. In this case, I use a tiered system where the darkest regions are entirely black, mid shadows are cross-hatched, and lighter shadows are single-line hatched. This is achieved through exposed properties that allow texture inputs for the shadow patterns. The lightest regions of the object are overlayed with a halftone pattern (This is clear in the video). These shading effects are ultimately combined with an emission map and rim light to push the visual appeal.

IMAGE
Shader used to emulate comic aesthetic
VIDEO
How the shader reacts to dynamic lights

Showcasing shader versatility and a comparison with the default types

Project 2

Attack VFX for Pose Pose Execution

Unity URP VFX Graph Shader Graph
VIDEO
VFX Showcase

The VFX carried all of the visual feedback for player interaction.

For each of the 4 possible moves, I built two versions of each effect — one for a failed execution, one for a successful one. The VFX that play are pre-calculated in a script at the end of each turn and displayed during the execution phase. The failing effect matches the succeeding effect up to a certain point to maintain suspense as moves are executed against each other. Each of the 8 visual effects are made on Unity's node-based VFX graph. They include multiple particles and sub-emitters that are carefully timed and meticulously organized to make player action feel responsive and satisfying. The VFX for different moves is also timed alongside one another to create the illusion of genuine interaction.

VIDEO
Light Attack
VIDEO
Parry
VIDEO
Heavy Attack
Project 3

Shader graphs, particle systems, and sub-emitters for ANEURISM IV

Unity URP Shader Graph Shuriken Particle System

Fire

A custom shader that uses a layered noise texture to dissolve a fire image texture. The shader exposes properties for color and noise frequency/scale that the PS manipulates over a particle's lifetime. This effect is combined with a smoke particle system that uses a sprite sheet.

IMAGE / VIDEO
Natural Emission
IMAGE / VIDEO
Flamethrower

Water

A lightweight water simulation. This fragment shader uses a render texture and a particle system to generate normals for the water when an object moves on its surface. These normals create the impression of fluid motion. The shader itself uses refraction, the depth buffer, and edge detection (foam) for additional realism.

IMAGE / VIDEO
Ripples
IMAGE / VIDEO
Idle Movement

Rain

Layered particle systems for the falling rain, with some particles triggering ripple sub-emitters on collision.

IMAGE / VIDEO
Falling Rain
IMAGE / VIDEO
Ripple Collisions
← Back to work Next: Fullscreen FX & Post →