2013-05-25 47 views
0

我理解一个简单的GLSL雾阴影是如何工作的,但它如何应用?将其直接应用于地形网格不会产生所需的“雾”结果。如何用着色器模拟OpenGL的内置雾效果?我唯一能想到的就是将着色器应用到相机周围的一系列包围球体中,但对于一些雾而言,这看起来像很多工作。OpenGL/GLSL雾应用程序

更新: 一些图像进一步解释。

这是我已经应用到我的地形网格的着色器,而结果是不是我想要的:

http://puu.sh/31dft.jpg

这是影响我期待复制类型:

http://mw2.google.com/mw-panoramio/photos/medium/4503932.jpg

+0

它如何不产生预期的结果?你有任何截图的一些参考你如何看起来像? – Grimmy

+0

@Grimmy,看我更新的帖子 – LucasS

+0

所以你想体积雾吗? – Grimmy

回答

0

您必须将雾色和背景色设置为相同。否则,效果看起来怪异。雾的目的是让远处的物体“消失在背景中”。你的图像的问题是你的背景是明亮的蓝色,就好像你希望它是一个晴朗而晴朗的日子。但是场景中的物体正在变成白色,好像有一道非常浓密的雾。我建议你找到一些妥协 - 对两者都使用灰蓝色。

1

半真实的气氛渲染是许多(正在进行的)研究致力于的复杂问题。在参考照片中,基本上有三个主要因素可以促成特定的构图:i。雾/雾霾ii。大气散射iii。高度。

简单地说,只将雾应用于诸如地形等物体,本质上是一个有缺陷的概念,因为雾遮挡/遮挡了光线的透射。这包括来自天空的光。因此,为了涵盖应用于“天空”的雾的情景,需要另一种方法,涉及后处理。本质上,每个像素的位置需要在三维空间中进行重构,雾算法需要遍历每一个像素。

根据具体的艺术风格,这可能已经足够满足您的需求,但它更复杂。本文档http://developer.amd.com/wordpress/media/2012/10/D3DTutorial_Crytek.pdf为大气渲染提供了一个很好的起点(它包括体积雾)。