UE5 / Recipe / Stylized Surface

Ice / Frost Crystal for UE5

A frost material recipe for icy surfaces, crystal props, and frozen magic: internal gradients, edge whitening, crack masks, and restrained translucency.

Recipe baseline

Visual slot reserved

The future image should show layered ice: cloudy interior, pale edges, controlled cracks, and a readable silhouette.

01

Visual Target

What we are building: a cold material that reads from pale edges, cloudy internal breakup, surface cracks, and a small amount of controlled transparency.
Image placeholder: frost crystal materialGenerate later: blue-white crystal shards, frosted edges, subtle internal cracks, stylized lighting, 16:9 landscape, no text.

Ice should feel layered. If it is only blue and transparent, it usually reads as glass.

02

Use Cases

PropCrystal objectsGood for collectible crystals, frozen rocks, and stylized mineral props.
GameplayFrozen stateDrive frost amount from gameplay to cover a character, weapon, or surface over time.
VFXIce magicUse crack masks and edge whiteness to sell cold energy without heavy particles.

03

Mental Model

Ice is a stack, not a blue glass material

  • Body: cold base color and cloudy internal variation.
  • Edges: pale frost, rim whitening, chipped corners, or faceted highlights.
  • Damage: cracks, trapped bubbles, scratches, and frozen stress lines.
  • Magic layer: optional glow only if the art direction needs supernatural ice.

Opacity is a design decision

Opaque ice with good edge and cloud masks often reads better than translucent ice in a busy game scene. Use translucency when seeing through the form is important, not because the word ice sounds transparent.

Cold read comes from value control

Good ice usually has a narrow, pale value range with carefully placed darker blues. If everything is saturated cyan, it starts to feel like plastic or sci-fi glass.

04

Graph Steps

Cold gradientInternal cloudEdge frostCrack maskRoughness splitOutput

1. Establish the cold base gradient

Start with deep blue in thicker areas and pale cyan or white near thinner planes. This can come from vertex color, object-space height, thickness approximation, or a painted mask.

Beginner check: with all detail disabled, the object should already feel colder at edges and denser in the body.

2. Add cloudy internal breakup

Use low-frequency noise or a packed texture channel for trapped frost and cloudy depth. Keep it broad; tiny noise reads like dirt sitting on top of the ice.

Why: internal cloudiness is what separates ice from clean tinted glass.

3. Push edge frost with Fresnel or curvature

Use Fresnel for view-dependent rim and curvature or baked masks for stable chipped edges. Combining both gives a material that reads in motion and in still shots.

Senior note: if the camera is fixed or top-down, curvature masks may be more reliable than pure Fresnel.

4. Treat cracks as authored shapes

Cracks can darken color, brighten frost, cut opacity, or add a thin emissive line for magical ice. Keep crack width and contrast controllable, because cracks become noisy very quickly.

5. Split roughness between frost and clear ice

Frosted areas should be rougher and softer; clearer exposed planes can be smoother. This contrast makes the material feel layered without relying only on opacity.

6. Add glow only after the ice reads

If this is fantasy ice, add a small emissive tint inside cracks or edges. Do not use glow as the primary way to make ice visible.

05

Artist Controls

06

HLSL Sketch

float cloud = Texture2DSample(noiseTex, noiseTexSampler, uv * cloudTiling).r;
float cracks = Texture2DSample(crackTex, crackTexSampler, uv).r;
float fresnel = pow(1.0 - saturate(dot(normalWS, viewDirWS)), edgePower);

float frost = saturate(frostAmount + fresnel * edgeFrost + cloud * cloudWeight);
float3 body = lerp(deepIceColor, paleIceColor, frost);
float3 crackColor = cracks * crackTint * crackStrength;

float alpha = lerp(opaqueAlpha, clearAlpha, transparencyAmount);
return float4(body + crackColor + fresnel * glowColor * glowAmount, alpha);

07

Senior Notes

Translucency is expensive and often unnecessary

Many ice looks can be built with opaque shading, Fresnel, cloudy masks, and roughness variation. This avoids sorting issues and keeps the material more stable in production.

Frozen character overlays need controlled masks

For characters, avoid a full-body material swap unless the design truly wants the whole body frozen. Vertex color, custom masks, or runtime parameters let frost grow from contact points, wounds, hands, or feet.

Geometry matters for crystals

A faceted crystal needs actual planes or strong normal/curvature data. The shader can enhance facets, but it cannot fully invent good crystal structure on a smooth sphere.

08

Common Mistakes

  • Making the whole object equally transparent, which removes the silhouette.
  • Using bright cyan everywhere with no pale edge or darker internal structure.
  • Adding crack detail before the broad ice read works.
  • Letting glow turn natural ice into magic ice by accident.
  • Ignoring sorting and overdraw when translucent ice overlaps other transparent effects.