Thanks guys, appreciate you dropping by and the comments.
I've got the water shader working now so lua can instruct it to create a transparent circle around any world x,z coordinate. This allows the sub to surface/submerge through the water plane without any intersect ruining the illusion. I suppose this could be also used to trigger wake effects and bow waves for ships and surface running (but for another day that).
Preben's new draw call optimiser is amazing - I was almost sure I'd have to abandon using this engine and move to unity because despite all and every optimization GG allows, frame rate was starting to chug. However with the DC oprimizer running, back in business.
I've adapted the optimzier to prioritize its optimization around textures first - so that if an entity shares a texture with another (and in Cogwheel many, many do as a way to save texture video memory) then these objects will be batched together first. Thereafter it will batch based on proximity as per Preben's original code. This won't make much difference to everyone unless texture atlas optimization is already being done or is planned to be done - if so then it does make a real difference on top of the other DC merging:
With no DC optimizer, peak draw calls: 983
With the 'distance/shader' approach, peak DCs: 747 (this is Preben's new code)
With the 'common texture' method, peak DCs 493 (this is texture batching, then proximity as above).
Some pics, so not a wall of text (new engine entity and showing the transparent circle in water). Now that underwater and underground caverns are a reality, changing the way 'fog' works under water, to match the color of the water and so it gets murkier the deeper the player goes. Surface fog now matches the skybox 'north' high MIP color as per terrain. Add some transparency at a distance and the visuals of vistas are coming on really well.