某种边缘照明?

时间:2014-05-16 18:19:15

标签: opengl glsl hlsl lighting voxels

我正在玩一个立方体照明。我还不确定自己想要什么,所以我只是把它扔到那里。这就是我所拥有的......

......但我不喜欢锋利的边缘。消除照明显然意味着你不能再看到边缘......

...这不好,因为你仍然需要能够识别立方体的面。

我想我正在寻找某种在面部之间平滑过渡的光线,看起来不太苛刻但仍然可以让你将物体识别为立方体。目前,对边缘进行细分并不是一种选择。有人做过类似的事吗?

更新:唉,我对@Jherico的回复太长了,所以在这里添加更新。

我现在还没有真正有一个着色器,因为我刚刚开始这样做。我在photoshop中玩耍,看看边缘看起来有什么模糊,或者添加一个薄的高光以某种方式减轻它。我想我真正想要的只是远离严酷的边缘外观。

我正在研究电影行业是否有任何技巧,甚至是高质量渲染用于软化边缘的技术。或者也许看看使用像边缘照明这样的东西,让你的焦点远离锐角。我想图像镶嵌可以帮助很多,但理想情况下我喜欢更便宜的技术,可用于较低规格的硬件。

2 个答案:

答案 0 :(得分:1)

以下三个想法可能符合您的愿望:

  1. 尝试使用延迟着色并模糊普通缓冲区。我担心其他人和背景之间的物体边界。

  2. 创建一个伪造柔化边缘的法线贴图。

  3. 在曲面细分中,我相信您可以访问周围的基元。使用它们,您可以将其他面的法线发送到片段着色器。靠近边缘时,将脸部的法线与最接近的法线混合。

  4. 选择一个。

答案 1 :(得分:0)

它主要取决于您的灯光着色器的实现。如果增加环境光系数,在降低定向光系数的同时,边缘将变得不那么突出。 '没有照明'基本上相当于100%的环境光。

虽然没有看到着色器的实现,但无法建议您如何实际执行此操作。以lighting shader为例,我使用了...环境光和方向光都作为统一值传递。 My implementation将环境光启动为灰色值0.2。如果要增加该值,则面和边之间的过渡应该具有较小的对比度。