Unity场景渲染中那些意想不到的细节(2)

在室内场景烘焙中,一般分为以下两种情况,人工照明和自然光照明,人工照明的主要难点在于灯光的强度与范围的平衡,而自然光照明的难点在于“增强”阳光,所谓增强,在我们的生活中太阳光的表现绝不仅仅是一个平行光,除了单纯的亮度以外,还有阳光泻下百叶窗时造成的丁达尔效应,阳光穿过天空时留下的低波长光线,如呈蓝色的天空,白色的云对屋内光照的影响。
在这个场景中,人工照明较少,只有书房的台灯,客厅里的一个壁灯,以及可以忽略不计的几根蜡烛,这时的环境设定应该是下午,多云,阳光较强但又不是特别强,环境光较强(因为多云):

这里太阳光使用了开源项目Light-Shaft插件,笔者进行了一下魔改,优化了一下性能,(按照惯例这里打下广告)想下载的朋友加QQ群:146025605 下载群文件共享,实时体积光的运算使用Raymarch algorithm,性能消耗相对昂贵,如果仅仅希望实现一个静态的体积光效果,大可不必大费周章使用Raymarch,可以使用一个mesh配一个cull off unlit shader即可,这种静态体积光实现可以在Assets Store找到,这里不再赘述。
这里吸顶灯的光线较暗,而百叶窗也阻挡了大部分的阳光,为了让整个画面看起来温暖一些,需要人为加Area Light(毕竟Unity的渲染还是真实为主,而我们有时并不希望游戏场景过于真实以至于失去美感),这里在窗户上添加了Area Light,让屋内画风明亮一些(审美实在捉急,这里只是实现以下过程)。

第二张图则是在室内,完全使用人工照明,室内照明的处理简单直接,加非平行光就可以,然而需要格外注意的有两点,首先是自发光物体与灯光的辉映,在Unity的烘焙中,自发光物体会通过光照引擎的光线追踪计算,形成一张对周围物体有影响的光照贴图,使周围物体随之被照亮,再加上Reflection Probe与Screen Space Reflection的存在,烘焙结束后的画面要比烘焙前要亮的多。这里有经验的技术美术和图形开发者可以自定义Shader中的Meta Pass以增强或改变烘焙后的自发光效果,实现一些或迷幻或真实的效果,为了体谅缺乏Shader编写经验的开发者,我们这里通过在烘焙前改变shader的自发光(Emission)值,改变自发光对周围物体的影响,同时自发光物体应选择Mesh Renderer中的该项以增加Unity光线追踪时从物体射出的射线的数量并提高射线优先级,使自发光物体的运算更为精准:
Unity场景渲染中那些意想不到的细节(2)_第1张图片
左侧厨房使用了灯带,Unity是不支持实时的灯带,除非用户使用G Buffer实现(无法实现阴影),Area Light与自发光物体原理相似,建议开发者使用性能较高的工作站,进行多次烘焙并调整亮度,最后获得一个亮度适中的室内光照。

你可能感兴趣的:(Unity场景渲染中那些意想不到的细节(2))