I'm having a hard time prying myself away from the computer since I've gotten into 3D coding with Gideros, having been away from 3D work for a number of years. I mentioned on another thread that I was looking into whether Gideros's 3D support was usable for a new fishing game I have planned, or if I'd need to use pre-rendered textures and build the game in 2D. I dabbled in Unity, but didn't care for the layers and the interface, and would much rather work with a system that just lets me load or create meshes from Blender models, and code all the behavior directly. I'm thrilled to find that Gideros can do a lot more than I would have guessed. Sure, there are limitations, like no support for models with animated armatures, as far as I know, but for an engine that's primarily 2D, it can do plenty of 3D.
Today I made a custom shader that handles aerial perspective (fog, to make distant objects look distant), and to fog underwater objects relative to the depth and the viewing angle, plus water clarity, basically specialized fog that only applies below the surface. So far that's working fine on the landscape, but not with other subsurface objects, so it still needs work, but the effect on the lake bottom is exactly what I had in mind. It's my first experiment with a custom shader, and I clearly have a lot to learn, but it's an encouraging start. I've improved the heightfield code for performance, tried swapping in a landcsape mesh with 16 times more detail than I was using, and it still behaves nicely. I changed my water surface animation method to apply just to the area around the viewer, rather than over the entire body of water, which allows me to scale up the whole world greatly without hurting performance.
If anyone is interested in the heightfield landscape code, or the fogging shader, let me know and I'll share some modules.
Here's the progress so far: