Hello
I made a little shader to pulsate the UV on a plane for decals, it works fine.
float uvSpeed = 1;
float uvStretch = 100;
if (input.UV.x < 0.5 && input.UV.x > 0 && input.UV.y < 0.5 && input.UV.y > 0)
{
output.UV.x += -sqrt(pow((sin(uvSpeed * Time) / uvStretch),2));
output.UV.y += sqrt(pow((sin(uvSpeed * Time) / uvStretch),2));
}
if (input.UV.x < 0.5 && input.UV.x > 0 && input.UV.y > 0.5 && input.UV.y < 1)
{
output.UV.x += -sqrt(pow((sin(uvSpeed * Time) / uvStretch),2));
output.UV.y += -sqrt(pow((sin(uvSpeed * Time) / uvStretch),2));
}
if (input.UV.x > 0.5 && input.UV.x < 1 && input.UV.y > 0.5 && input.UV.y < 1)
{
output.UV.x += sqrt(pow((sin(uvSpeed * Time) / uvStretch),2));
output.UV.y += -sqrt(pow((sin(uvSpeed * Time) / uvStretch),2));
}
if (input.UV.x > 0.5 && input.UV.x < 1 && input.UV.y < 0.5 && input.UV.y > 0)
{
output.UV.x += sqrt(pow((sin(uvSpeedTime) / uvStretch),2));
output.UV.y += sqrt(pow((sin(uvSpeedTime) / uvStretch),2));
}
But it’s very linear, I want to make it less linear aka the further away from the middle it should move less far. Anyone got an idea?
Also I thought about it to make it radial instead of quadrants. But in the end it should also apply to models so I only will modify 1/4 of the whole UV, thats why I still have >0 and <1 in the code.