我知道glFog,它会根据到相机的距离在雾和表面颜色之间进行混合,例如: 。
但是雾气会立即出现在相机前面。我正在尝试渲染水表面并希望它具有一定的深度,例如:如下所示。我需要的是根据从水表面到水底的距离产生雾。我如何获得这个距离?目前,我假设相机将始终在水上。



#1 楼

您可以射线追踪到第二个曲面的距离。从概念上讲,这可能是最简单的方法,但不一定是最快的方法*。现在,水中的距离是像素深度减去深度图深度。并非在所有情况下都起作用,例如当您退出水路并稍后重新进入时。但是在许多情况下都应该起作用,就像所描述的那样。您甚至可以对布尔运算使用相同的技术。 br /> *可能在某些情况下。