我意识到了glFog,它根据与摄像机的距离将雾和表面颜色混合在一起,如下所示:

方程甚至在文档中给出。但是雾就在摄像机前面。我试图渲染一个水面,并希望它有一定的深度,例如:

现在我只是用α混合来渲染水面,如下所示。我需要的是根据从水面到水底的距离来确定雾。我怎么能得到这个距离?就目前而言,我认为相机将永远在水面上。

发布于 2015-08-09 11:52:38
你可以用射线追踪到第二个表面的距离。这在概念上可能是最简单的,但不一定是最快的方法*。
但有一个巧妙的技巧,你可以通过多次渲染水深地图,从相机到水面。水的距离现在是像素深度减去深度地图深度。这并不适用于所有的情况,例如当你退出水和重新进入以后。但在很多情况下都会起作用,就像描述的那样。您甚至可以对布尔操作使用相同的技术。

图1:渲染深度图,在你的池塘底部阴影时查阅深度图。
*在某些情况下可能是这样。
https://computergraphics.stackexchange.com/questions/123
复制相似问题