Stop Modeling Fluted Glass — Do This Instead (Unreal Engine 5) [Step-by-Step]

This tutorial walks through creating a flexible fluted glass material in Unreal Engine 5 using normal maps to simulate light distortion. Instead of modeling grooves directly into the glass, you’ll use a normal map to refract light, producing realistic fluted, ribbed, or patterned glass with excellent performance.

Step 1 – Create the Normal Map

*Before starting, under the Edit Menu, open Editor Preferences and search for Substrate

Make sure to turn off the Substrate materials options

The normal map is responsible for distorting the image seen through the glass


Step 2 – Create the Material

Right-click in the Content Browser and create a new material – giving it a proper name

Double-click on it to open it in the Material Editor

The mesh itself affects the final result

If your window mesh has real thickness, use the material normally

If your glass is a single polygon plane – like my mesh – you need to enable the Two Sided option in the Details panel of the material

Without it, the glass disappears when viewed from the back

Be aware that two-sided materials invert the normal map on the opposite side


Step 3 – Material Settings

Select the main material node

Change the Blend Mode to Translucent

Under Translucency, for the Lighting Mode, change this to Surface Translucency Volume

This restores the following inputs:

  • Specular
  • Roughness
  • Metallic
  • Normal

Under the Refraction section, change the Refraction Method to Index of Refraction which gives you an input for Refraction


Step 4 – Create Basic Glass Parameters

Base Glass

Create a Vector 3 Parameter by holding down the 3-key and left-clicking in the graph

Leave the color as the default black and connect it to the Base Color

Specular

Add a Scalar Parameter by holding down the S-key and left-clicking

Rename the Parameter to Specular and change the Default Value to 0.5

Connect the Parameter to Specular input

Roughness

Add a Scalar Parameter by holding down the S-key and left-clicking

Rename the Parameter to Roughness and leave the Default Value at 0

Connect the Parameter to Roughness input

Opacity

Add a Scalar Parameter by holding down the S-key and left-clicking

Rename the Parameter to Opacity and change the Default Value to 0.3

Connect the Parameter to Opacity input

Box select these nodes and use the C-key to group them

Title the Comment Base Glass


Step 5 – Add the Normal Map

Drag one of your Normal Map Textures into the Material Editor

Right-click on the node and convert it into a Parameter named NormalMap

This allows different glass styles to use the same master material

Add a Comment and rename it NormalMap

Connect the Normal Map to the Normal input


Step 6 – Add UV Controls

To make the material reusable, expose tiling and rotation

Tiling

Right-click and search for the Texture Coordinate node [texcoord]

Add a Scalar Parameter by holding down the S-key and left-clicking

Rename the Parameter to Tiling and change the Default Value to 1

Hold down the M-key and left-click to add a Multiply node

Connect the Texture Coordinate and Scalar nodes to the Multiply node

Rotation

Right-click and search for Custom Rotator

Connect the Multiply node to the UVs input

Hold down the 1-key and left-click to add a Constant Vector node

Set the Default Value to 1

Connect it to the Rotation Center input

Add a Scalar Parameter by holding down the S-key and left-clicking

Rename the Parameter to RotationAngle

Since the Rotation Angle of the Custom Rotator is limited to 0-1, hold down the D-key and left-click to add a Divide node

Connect the Rotation Angle to the A-input of the Divide node and change the B-input to 360 (for 360-degrees)

Connect this result into the Rotation Angle input

Select these nodes and add a Comment and rename it UV

Connect the Custom Rotator to the UVs input of the Normal Map

Now the texture can be rotated by simply entering degrees


Step 7 – Add Normal Intensity

Being able to control the strength of the grooves makes the material much more flexible

Add a Scalar Parameter by holding down the S-key and left-clicking

Rename the Parameter to NormalIntensity

Change the Default Value to 1

Hold down the M-key and left-click to add a Multiply node

Connect the Red Channel of the Normal Map to the A-input of the Multiply node

Connect the Normal Intensity to the B-input of the Multiply node

This will represent the X-Axis

Use CTRL + D to duplicate the Multiply node

Connect the Green Channel of the Normal Map to the A-input of the Multiply node

Connect the Normal Intensity to the B-input of the Multiply node

This will represent the Y-Axis

Right-click and search for an Append Vector node

Connect the Red Channel Multiply node to the A-input

Connect the Green Channel Multiply node to the B-input

Use CTRL + D to duplicate the Append Vector node

Connect the first Append Vector node to the A-input

Connect the Blue Channel (Z-Axis) to the B-input

This will reassemble the channels and make sure everything is appearing correctly

Connect the second Append Vector node to the Normal input

Select these nodes and add a Comment and rename it Normal Intensity

Apply and Save the material


Step 8 – Create a Material Instance

Back in the Level, right-click on the Material and create a Material Instance

Drag the Material Instance onto your glass static mesh

Double-click to open the Material Instance

Now you can change the Parameters we set up earlier in the Master Material


Step 9 – Build the Refraction Network

When light travels from one medium to another, such as air into glass, it bends

This bending is called refraction

The amount of bending is controlled by the material’s Index of Refraction (IOR)

To reproduce that behavior, use a Fresnel

Hold down the 1-key to add a Constant Vector and change the Default Value to 1

Hold down the S-key to add a Scalar Parameter and rename it to IOR

Change the Default Value to 1.52 (this is the standard IOR of glass)

Right-click and search for the Fresnel node

Hold down the S-key to add a Scalar Parameter and rename it to FresnelFalloff

Change the Default Value to 5 and connect it to the Exponent input of the Fresnel node

Hold down the L-key and Left-click to add a Lerp node – this will allow you to blend the Fresnel nodes

Connect the Constant Vector to the A-input

Connect the IOR to the B-input

Connect the Fresnel to the Alpha-input

Select these nodes and add a Comment and rename it IOR

Connect the Lerp node to the Refraction input

Apply and Save the material

If you open the Material Instance you will notice you have two more Parameter Values


Step 10 – Create Different Glass Styles

Since the master material is driven entirely by the normal map, you can quickly create new styles by swapping textures


Conclusion By combining a tiled normal map with physically based refraction and Fresnel blending, you’ve created a highly reusable fluted glass shader that can produce a wide variety of decorative glass effects. Exposing parameters such as tiling, rotation, normal intensity, IOR, opacity, and Fresnel falloff allows artists to create everything from subtle ribbed glazing to heavily distorted privacy glass using a single master material and lightweight normal textures.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.