【译】《GPU GEMS 3》----Next-Generation SpeedTree Rendering 翻译[4]

     最近在研究树木的渲染,看了一些相关的技术说明,几乎都是老外写的,再次为中国游戏产业的前景感到担忧。看了几天的英文,索性也把其中的重要部分翻译了出来,在这里与大家共享,先贴出《GPU GEMS 3》第4章的翻译,第一次写翻译,不免有错漏的地方,欢迎大家指出。如需转载,请先与本人联系。name:LeYond ,qq:413952706


4.3.2 叠加阴影贴图

4-15 照明比较

(a)预计算漫反射贴图  (b)逐像素阴影照明  (c)普通光照 (d)双面光照

 

 

 

 

4.4.2 镜面光照明

    除了调节双面的照明,我们修改镜面光照,以提高其真实性。首先,在普通的镜面光照射下,远处的数目偏向微弱的闪光,所以我们随着距离的拉远而降低镜面光。下一步,我们我们注意到现实中的树叶有获取其他的光线。图4-16展示了一些经典的带有光泽的树叶,从这里我们总结出3点。镜面光反射是受控于树叶坐标轴的平面,它清晰地把镜面光划分开来.相对这些平面的效果,好的纹理细节和其他效果是微不足道的:镜面光不会有锋利边缘,因为他们有玻璃一样的材质。由于我们是对整棵树的构造感兴趣,而不是叶子的纹理,我们使用这些观察效果来简化我们的叶子镜面光照模型。要模仿轴的分离,我们使用一张更加粗糙的V形发现贴图,将叶子分开成两半。最后,因为太多的细节因为镜面光的加入而被闪光覆盖,我们偏移纹理在发现贴图中提取更低的Mipmap等级。结果将会更加平滑,也有更加温和的镜面光,而不会产生生硬的光照假象。

4-16 此叶子照片展示了镜面光的现象

 

    不幸的是,虽然提升了树叶的阴影质量,但没有从阴影贴图中去除其他场景。  在广阔的户外场景中,一张阴影贴图经常是不足够的。叠加阴影贴图(CSM)是解决这一问题的一种常见的技术,它通过把平截头体分解成若干个空间,并把每个区域渲染进不同的纹理当中。(关于CSM的描述可以查看Zhang et al. 2006。也可以查阅本书的第10章“在可编程GPUs上实现平行分割阴影贴图”获得更多相关技术。)

为了减少CPU的开销,不同级别的栅格有不同的绘制频率:

·         最靠近的栅格在每一帧都更新。所有属于它的物体都被渲染出来。

·         第二个级别的栅格是每两帧更新一次。大型植物没有渲染入阴影贴图。

·         第三个级别的栅格是每四帧更新一次。只有叶子才渲染进阴影贴图。

阴影贴图渲染之后,我们有许多方法在我们的3D世界种产生阴影:

 

  1.    使用适当级别,在阴影贴图渲染物体时使用相同的命令。

  2.    在每个层级中取出像素并混合它们

  3.    使用纹理数组并在像素着色器中选择适当的层级

  4.    使用视口,将渲染目标分割为若干个阴影贴图。

 

每一种方法都有它自己的优点和缺点。在SpeedTree中,我们选择第二种设置。

 

4.4    叶子的光照

    光照在观察者的感知中扮演着很重要的角色。SpeedTree的最新版本为树叶面板的逐像素动态光照提供了必要的数据,如切线和法线贴图。同时,SpeedTree的树叶面板能只使用预计算漫反射纹理。精细的光照和阴影能事先烘焙到漫反射纹理中。我们选择第一种解决方案,因为它支持全动态关照。

 

4.4.1. 双面光照

    除了镜面光照,我们注意到,叶子的漫反射颜色取决于观察者跟太阳的位置关系。图4-13展现了两张叶子在不同的瞬间,在相同光照、相同曝光的设置条件下拍摄。(细心观察枯萎的褐色部分,你可以比较两张照片中的同一片树叶。一片用红色点标记。)当树叶背光时,大部分表现出是没有反射光;取而代之的是透过来的光。当光线穿过树叶,树叶的颜色会轻微第转向黄色或红色。

4-13 试验观察方向的真实树叶光照

(a)树叶面光 (b)树叶背光

 

基于这种观察,我们已实施如下计划来模拟双面的自然照面。

·         黄色树叶颜色是在片段着色器中产生,float3向量各分量为(Diffuse.g * 0.9, Diffuse.g * 1.0, Diffuse.g * 0.2).

·         根据不同的μ—角度,如图4-14所示。是灯光方向向量和观察方向向量的夹角。

4-14 背光中的叶子

 

取决于µ,镜面光成分会被削弱,因为背面没有光线会发生反射。这种做法可能看起来幼稚,但他让图片更加真实可信。如图4-15.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值