0

我有一些试图模仿水族馆的网格。我可以移动附有灯光的视点或相机。只有正面玻璃是全透明的,应该是屏幕玻璃。

我尝试使用混合器功能glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)和一些漫反射材质组合,但它看起来总是像 CAD 绘图,尽管一些逼真的纹理可以帮助改善外观,但它看起来并不正确。

glBlendFunc我可以通过更改和的所有可能组合来强制获得所需的结果glMaterialfv,但这可能需要一段时间。所以我在这里发布了这个问题,看看是否有人完成了这种视觉效果,任何帮助或评论也很感激。

4

1 回答 1

1

看起来它缺少任何类型的反射,水和玻璃都会表现出来。水面上的镜面反射项可能是可以的,或者如果您无法添加混合环境贴图。我实际上会稍微降低水的不透明度,以使边界不那么明显,并让镜面反射显示定义。

玻璃本身也应该有某种环境反射,如果你在黑色房间以外的地方渲染它。同样,一个简单而巧妙的环境图可能就足够了。

您可能想尝试的其他事情(请记住,您在 ES1.1 上没有着色器):

焦散。这些是您在游泳池底部看到的明亮的波浪线,是由表面运动向不同方向散射的光线引起的。您可以使用 alpha 纹理来伪造那些并摇晃顶点。

折射。您可以将水下场景渲染到辅助缓冲区,然后将其用作纹理,允许您对图像进行一定程度的扭曲/动画处理。鱼缸不会表现出太多这种情况,如果从顶部表面看,你真的应该只看到它在晃动,但也许它会很有趣。

于 2012-12-21T16:34:40.357 回答