Hi @lxq11111, welcome to the community!
First of all, please understand that this is an advanced thing to do. We don’t have step-by-step instructions, and you’ll need to figure out a lot of details yourself. However, we can point you in the right direction, and may be able to help if you get stuck.
To get started, make a copy of CesiumDefaultTilesetShader
and CesiumDefaultTilesetMaterial
, which are found in the Cesium for Unity package’s Runtime/Resources folder, because you’re going to need to modify them. Open up the Shader in the Unity editor and take a look at it. The topmost part of the graph is labelled “Raster Overlays”. For each of the three raster overlays, it makes a call to CesiumRasterOverlay
, which returns the pixel value sampled from the raster overlay (in your case, your TMS) alpha blended with the layer below it. You can use this value to determine whether the current pixel is land or water. Then you need to add further nodes to actually render the water effect for the pixels that are water.