Hi all, what is the best way to handle large scenes with HDRP built-in water? I have a project where the intent is to go large scale but I am encountering a few issues so far.
Around the origin, the water renders as you would expect. The further away from the origin (beginning around 900-1000 units away), it seems the worse the rendering quality of the water becomes.
In descending order, the ship at (0, 0, 0), (0, 0, 1000), and (0, 0, 5000):
I thought that floating origin could solve this, and indeed it helps, but that creates a new issue. When the ship’s position is recentered, the geometry (texture? position?) of the water changes:
I believe this is due to HDRP water simulation happening in a space relative to the camera? I have tried quickly disabling and re-enabling the water surface, not moving the camera and instead moving everything else under one root node, and fading in-and-out between different water surfaces but nothing so far has helped.
Is this just a limitation of the built-in HDRP water? If so, does anyone know of an alternative solution? (I have seen Crest 5 and its Shifting Origin extension although I am hesitant to spend that kind of money on a hobby project that in all likelihood will never be finished…) Thanks.
Unfortunately that would just lead back to the inverse of problem 1; where now instead of the ship’s position being far away from the water surface origin, the water surface’s position would be far away from the origin. In both cases the rendering quality of the water suffers greatly. Thank you for offering some advice, though.
Ahh thank you I see what you’re saying. Although I think HDRP water is too ‘smart’ to fake it like that. The waves, normals, buoyancy, foam, etc are all tied to world space. Might start looking at building a custom solution
I believe this is difficult to solve easily. Particularly since the water is made out of several dozens of individual waves, each at a different wave length (eg. 64, 48, 32, 24, 16). They’d have to be shifted by the distance of that wave length in order to move without a noticeable jump.
If you can, set the threshold at which you perform the origin shift to some distance that’s a power-of-two value (such as 1024). If all the wave lengths are also a power-of-two value that would do the trick.
It’s totally not supposed to behave like that and moving in world space (even relatively far) is not a limitations of HDRP Water system. I’ll log something on our side and see what’s possible.
I’ve already identified the culprit PR on our side, so if that helps, the issue regressed starting :
How would you do that? I have notices setting heading and water speed is not reliable for this.
What we would need is a way to shift the simulation or have a simulation offset perhaps.
HDRP Water in it’s current state appears completly unusable, because we cannot :shift: the simulation itself without moving a transform
EG: use current to simulatte movement
we cannot manually say ( apply this much offset to current immedietly ) - which could be a fast forward in a direction technically in the water current sim without needing to store a global offset.
It also appears unusable if we try to use current, as changing the heading causes the water to rotate around some arbitray point far away, instead of near origin, which is weird shifting current direction causes water do doe a very weird thing with waves )
Is there any way to use floating origin with HDRP water without noticable jumps? I am using it in the real scale planet rendering and custom meshes. Because of huge scales I need to keep spacecrafts in the center of scene and I need to constantly shift water and other world around. I’ve tried to shirt water at repetition size steps but still no luck.