首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >延迟阴影环境映射与IBL的实现

延迟阴影环境映射与IBL的实现
EN

Stack Overflow用户
提问于 2014-09-05 10:54:48
回答 1查看 1.1K关注 0票数 3

我们的延迟渲染器达到了需要应用环境映射& IBL将质量提高到更高水平的地步(如您所见,cubemaps显然缺少):

经过几个小时的研究,我仍然没有找到解决办法,这让我真的很高兴。

这就是我到目前为止发现的

  1. 将结果添加到LA缓冲器中的附加向前传球。这看起来是个坏主意,我们使用延迟阴影来避免多次传递,然后再为cubemapping & IBL渲染所有内容。但是,至少我们可以使用现有的GBuffer(包括深度)来呈现对象,使用的cubemap的选择可以很容易地在CPU上完成。
  2. 渲染一个全屏平面,并在着色器中执行一些疯狂的选择,正确的立方体地图(在中央处理器上所做的工作)。这似乎比再次渲染更糟糕,glsl着色器将是巨大的。即使我实现了平铺延迟渲染(尚未完成),它似乎仍然是一个坏主意。
  3. 另外,直接将cubemap信息存储到第一次传递的GBuffer中在我的渲染器中是不适用的。我已经使用了我的3个缓冲器的所有组件(3个用来与ES3.0兼容),并且已经使用了对颜色值( YCoCg )和法线的压缩( Spheremap )。
  4. 最后,但并非最不重要的是,非常简单和不太好的解决方案:使用一个单一的立方体地图,并将它应用在洞场景。这不是一个真正的选择,因为这将对质量产生巨大的影响。

我想知道是否存在另一种环境映射方法。如果不是的话,他们的最佳方法是什么。我个人最喜欢的是第二个到目前为止,即使这需要重新渲染整个场景(至少在设备,只支持4个渲染目标)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-21 09:50:15

在测试了不同的东西之后,我发现最好的方法是使用第二种解决方案,但是实现非常困难。最好的方法是使用计算着色器,但这些不受支持的移动设备,这些天。

因此,您需要在移动设备上使用单个cubemap,或者在第一次呈现传递时将数据输入缓冲区。如果这是不可能的,您需要将其平铺,为每个瓷砖剔除一些水果(以减少对每个像素的操作次数)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25684287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档