Shell texturing solution needed

I have scoured the internet for a shell texturing method in ue5, can someone please guide me to how to make a simple carpet material or atleast a barebones shell textured plane array,
please help :smiling_face_with_tear:

1 Like

I’m also looking into this. I assume it will need to be a compute shader so you can start here:

https://unreal.shadeup.dev/docs/compute

The simplest option would just be to use parallax occlusion mapping, which fundamentally works the same way as shell texturing. Both are simply offsetting UVs for a texture sample based on parallax.

not sure that would be the same thing, in my case I’m not creating the meshes offline, but via shader

POM is a shader technique - although its done mostly with premade heightmaps - you can trace any heightmap even procedurally generated ones, although unless you bake the generated result to a static heightmap (which can be done at runtime) you won’t be able to use the built in function.
The built in node only supports texture objects but that is because it is a material function, not because there is anything inherently incompatible with POM and procedurally generated materials.

As someone who has created both POM and shell functions from scratch it is no exaggeration to say that shell texturing is literally the same technique as POM. Both just offset the UV coordinates of a texture based on simple parallax calculations.

This video shows a simple version of the core technique that both use. In this example, an ice shader, you are parallaxing some texture to make it look like there is a second surface below the mesh’s surface. In POM or shell texturing, you do the exact same thing, except with numerous offsets instead of one. Then, you use those slices to sample a texture repeatedly to test its heightmap or hair map (is the surface/hair supposed to exist at this height and position or not). These samples are combined to create a mask that will control which slice is visible where, and therefore the amount of offset any pixel contains.

Once you have your completed mask, you can use it to construct a new set of parallax shifted UV coordinates that can be used to sample the actual textures (color, normal, etc).

1 Like

thanks, I’ll take a look