Trying to make surface appearence like a moving texture

I wanna try and make SurfaceAppearence act like a moving texture if that makes any sense?

Basically I am trying to make realistic water using gerstner wave formula and mesh deformation and I feel like the water feels way more stagnant without an actual moving texture. (SurfaceAppearence)

I tried using textures manually but I don’t think they work for special meshes so I have tried surface appearence but I am not sure how I could make the texture (SurfaceAppearence) Move like how textures can.

image

I know this might be something simple I just never mess with textures or surface appearence like at all lol,

Thanks.

3 Likes

You can’t really, or at least… not very easily.
This is a Roblox limitation unfortunately.

You can however try uploading multiple textures and swap their IDs to make them look animated.
The texture object (sadly no PBR support) also has offset properties which let’s you sort of animate them.

But it’s really a Roblox limitation sadly and requires a lot of tricks to get it to work.
Most people afaik just use terrain water and then use collision groups and whatnot to prevent the player from being able to touch or swim in the water.

1 Like

Honestly pretty disappointing that Roblox wouldn’t support PBR textures that aren’t SurfaceAppearence but I appreciate it.

When you say they use terrain water and use collision groups, what exactly do you mean?

There is a way to use flipbook for pbr water. I dont know how to do it as I dont play with flipbooks and particles but here is a video of it: https://www.youtube.com/watch?v=BSsBdE2-008&ab_channel=Eletroz

I actually saw that looking for how to do it but I am not sure how i’d make that.

I know this is an old topic but since I found out how to do it I thought it would be nice to share the solution.

To make a surface appearance look like a moving texture you will have to upload each texture as a material variant and switch them like a flipbook. (heres a screenshot of how it would look like, the textures are from the video @caonhat1 posted)

Here’s how it would look like ingame:

i used a texture and a tweenservice script to make sure it worked maybe i even have the script for you

local texture = script.Parent
local RunService = game:GetService(“RunService”)

local speed = 1 – Adjust this value to control the speed of the texture movement
local maxOffset = 4

if not texture or not texture:IsA(“Texture”) then
warn(“The script’s parent is not a valid Texture object.”)
return
end

RunService.Heartbeat:Connect(function(deltaTime)
texture.OffsetStudsU = texture.OffsetStudsU + speed * deltaTime
if texture.OffsetStudsU >= maxOffset then
texture.OffsetStudsU = texture.OffsetStudsU - maxOffset
end
end)

sorry i used runservice

it worked to good so it looked like tweenservice i hope this helps

This only affect an Instance that’s a texture, we’re searching for PBR / materials / SurfaceAppearance

this supports animated pbr textures, as of now its slightly broken but its a easy fix and could be a good start to getting some results you like after some modifications

maybe it was a solution if nothing helped

I wish we had that as a feature though, I don’t know why they didn’t even put it in the first place