Screen Space Reflections with Cesium tiles?

Hey there, I’m trying to work on a reflective water material for Cesium tiles in Unity. I’ve got it reflecting the skybox fine, but I’m having issues getting it to reflect the rest of the scene. I downloaded a couple of Screen Space Reflection plugins, which work when applied to a default plane:


But gets messed up when applied to a Cesium tile:

You can kind of see the reflection, but it’s choppy and distorted… I feel like it’s something to do with the way Cesium handles UV mapping, though I would think that shouldn’t affect something working in screen space? Sorry, I know this is a very specific issue, but I’m wondering if this is something anyone has experimented with at all, and if there are any suggestions for how to get reflections working.

Do the screen-space reflection plugins document any particular requirements for the UV coordinates? In Cesium for Unity, the UVs aren’t something done by Cesium for Unity in particular, but rather are a property of the actual tileset that you’re streaming. Something like Cesium World Terrain will have very regular UVs going from corner to corner of each tile. Google Photorealistic 3D Tiles, on the other hand, uses a texture atlas that may be quite a bit more chaotic looking.

Yeah, this is using Google Photorealistic Tiles. I realized part of my issue was not checking “Generate Smooth Normals” – that helped a lot. However now I have a weird issue where reflections get messed up at the edge of tiles:
image

Do you know how I might address that?

I don’t think there’s any solution to that problem. The Google tiles use a “skirt” at the edge: some vertical geometry meant to hide gaps between different levels-of-detail. When generating normals, Cesium for Unity has no way to tell a skirt from legitimate geometry, so the generated normals change drastically at the skirt. That creates a very obvious lighting artifact at the tile edges. The only solution is for Google to include normals in the tiles themselves, or at least include information about which triangles are part of the skirt.

I don’t completely understand what the normals have to do with the water effect, though. Perhaps there’s some sort of solution where you use a constant normal (i.e. pointing directly up) rather than normals generated from the geometry?

Ah thanks for the explanation, that makes total sense.

The issue with the water effect is that the water is reflective, so the edges of the tiles become more noticeable. Not the end of the world, but would be nice if it could look like a smooth continuous surface. You’re right, setting the normal to straight up does work, but then the lighting elsewhere in the scene doesn’t look right. We’re using the raster overlay to mask the water area, but unfortunately you can’t apply it to the vertex shader, which is where the normal correction needs to happen.

I’ll keep playing around with it but it’s good to know why it’s happening at least.