Procedural Galaxy Shader
Project Overview
This project expands on my Teacup Wanderer character into a technical-art study. After modelling, texturing, rigging and posing the character, I returned to the project to create an animated galaxy transformation shader in Unity Shader Graph.
The entire galaxy effect is generated procedurally. The clouds, stars, streaks and visibility masks therefore require no additional authored textures and can be adjusted directly through the material.
The original character project can be viewed on my ArtStation.


Shader Features
Height Controlled Transformation
The transformation begins with a normalized height mask that controls how far the effect travels across the character. Large-scale noise distorts the boundary, preventing it from appearing as a perfectly horizontal line.
Separate controls for the transition height, softness, edge width and noise distortion allow the transformation to range from a subtle partial effect to a complete material replacement.
Layered Galaxy Effect
The galaxy is constructed from several independently adjustable layers. Animated noise creates the larger nebula forms, while finer cloud details are concentrated around the transformation boundary.
Three star layers provide variation in scale, density and brightness. Their intensity changes independently to create randomized twinkling rather than a uniform pulse. Directional stripes and Fresnel lighting add movement and definition around the character’s silhouette.
Art Direction and Customization
The material exposes controls for the transformation, galaxy colors, clouds, stars, stripes, emission and edge lighting. This makes it possible to create significantly different results without changing the underlying Shader Graph.
The shader can be adjusted from a soft, translucent transformation to a brighter and more stylized galaxy effect, with independent control over its movement and color palette.
Shader Breakdown

The normalized height is the foundation of the shader. The material derives its other visibility masks from this value, meaning that moving the main transition also updates the clouds, stars, stripes and transparency as a coordinated effect.
Before inversion, the height mask controls the blend between two exposed galaxy base colors. Using two colors creates additional variation and depth within the transformed area. An inverted version of the mask is then used to control the material’s alpha and determine which part of the original character remains visible.

The larger cloud and nebula forms are generated through a reusable Cloud Sub Graph. The same Sub Graph is used for both the clouds concentrated around the upper transition boundary and the softer nebula visible throughout the lower transformed area. Exposed inputs for masking, scale, distortion, color, opacity, direction and movement speed allow each instance to produce a different result without duplicating its internal logic.

The stars are also generated procedurally through a reusable Star Sub Graph. Multiple instances can be layered with different sizes, densities, colors and animation settings to create both fine background particles and less frequent prominent stars. Their output is multiplied by the galaxy visibility mask and the cloud masks.

A separate Stripes Sub Graph creates the longer directional details running through the material. Although it is currently used once, it was built as another reusable module with exposed controls for its scale, intensity, direction and movement.
Each animated layer has independent direction and speed parameters. The nebulae, stars and stripes can therefore move at different rates or in opposing directions, preventing the material from appearing like a single texture sliding across the surface.
Finally, an adjustable Fresnel effect adds view-dependent lighting around the silhouette.
Technical Details
- Tools Used: Unity 6, Shader Graph, Blender, Photoshop and Substance 3D Painter
- Focus: Procedural masking, animated effects and material customization



