I recently played a game called Spirit of the North 2. I really liked the water there, and that prompted me to finally tackle the color scheme for my ocean. Since I couldn’t get anything good with traditional fake colors and fake subsurface scattering, and I can’t see underwater with them, I finally do refraction, and behold, just using the absorption coefficients for red, green, blue light, I can achieve a very good results.
Since refraction can also refract areas from outside of the view into the view and this constantly happens over a wider area towards the edges, this was another topic.
There’s still a lot to do. The island is a simple temporary solution, but it’s still considerably more attractive than my previously green test Cube.
27 Likes
Thank you very much. I’m still experimenting with absorption coefficients and more. But I’m increasingly satisfied with the results. I’m now also using multiple depth levels to achieve cleaner refraction results.
11 Likes
That is a lovely screenshot. 
2 Likes
I can’t believe what am I looking at..
As someone who has visited many islands in the Caribbean and Pacific, I have to say that you’ve really nailed the colors and foam and waves along the shoreline. Makes me want to grab my snorkel gear and dive in!.
2 Likes
Looks really nice. How’s the framerate?
120 fps, The update takes just under 4ms for the wave system and the geometry system. So, there’s plenty of headroom. However, I limited the frame rate to 60 fps to have significantly more headroom for very complex islands.
I’m working with a CDLOD system, drawIndirect, GPU frustum culling, and custom workgroups and dispatches. Pooling to avoid garbage. … I’m currently working on another PR for threejs. It’s unlikely to improve performance. However, I’m a very efficiency-oriented guy and would like to be able to use the best WebGPU has to offer.
I downloaded the elevation map of the Seychelles from NASA at a resolution of 30m. I couldn’t find anything better. I actually wanted to use the island of Mohana, but unfortunately, I have to do a lot of rework in Blender because Blender can’t read the Disney format. But using some corals from it will certainly look very good.
I can create landscapes in a similar way. Or, with my virtual geometry system, use complex geometries that would be too computationally intensive if used at full resolution.