I heard something about the d-buffer being limited to only a certain number of channels for measuring properties like color, opacity, subsurface, material, depth, and normals. Not sure if that has anything to do with it.
ANYWAYS, I made significant progress on my Caribbean water shader: 98 instructions, unlit as far as UE4’s lightmass is concerned, no reflections whatsoever. No refractions either (just because :P). It uses just two normal maps at 512x512 each to calculate the final normals. The specular model was done by just adding two phong highlights on top of each other, a strong sharp one, and a dim soft one to show up at distant waves. Aside from the depth coloring and opacity tricks, everything looks good because the landscape under the water actually has depth-based coloring and caustics. The caustics is just a single 1k texture distorted by a 256x256 normal map. The caustics actually use Mip biasing to appear blurrier the deeper they dive into the water.
It’s not perfect, but it does look good.