Ray Marching a Volume Texture

hmm I thought about that initially as well, which is why I suggested the manual Z phase blend. It looks like you already tried exactly what I suggested though and it did not help, with this line:

float OpacitySample = lerp(SampleAtPointBelow.x, SampleAtPointAbove.x, frac(W))

So that should have added in the missing blending of the Z axis but of course I cannot verify that it was implemented 100% correctly when you consider the un-normalized height etc. Could still be something there perhaps that isn’t fully debugged?

best suggestion I can come up with at this point, is to completely separate out your Z height gradient texture Z value from the 3d texture UVs. It is a bit confusing since you are normalizing things just for the height gradient and mising that together with the 3d coords.