Unity - 如何提供漫反射照明

Unity - how to provide diffuse lighting

我有一个简单的房子内部场景(没有屋顶)。它不需要以任何方式看起来逼真,只需在几何上正确即可,因此墙壁、家具和配件只需由原始对象构建 - 立方体和圆柱体等。

布局很好,问题是照明 - 非常黑的阴影。场景有标准的单向光源。

我需要做的是提供整体漫射照明——相当于阴天。

我应该指出,我在这一切方面几乎是个新手 - 照明、着色器等,尽管我已经阅读了很多书。

据我了解,这似乎是由着色器控制的,着色器附加到 materials,materials 应用于对象。但是,这对我来说似乎没有多大意义。当然,着色器,如果对象的一部分由于附加到 material,只能处理光如何从表面反射 - 但光必须先到达那里。

因此,首先必须有一种提供整体漫射光的方法?

还是我完全错了?如何去除物体非照明面的黑色?到目前为止我找到的唯一方法就是让表面发光,即发光一点,这肯定是不对的。

您对这一切工作原理的一般理解是正确的。查看对象请求渲染的一种方法是查找 material,material 将着色器绑定到一组参数。然后着色器被执行,场景中的每个灯光影响它一次(这只是简单的事情,但我们稍后会谈到)。这就是为什么灯光很昂贵(在正向渲染中),直到开始优化,这意味着渲染场景 n 次。

所以是的,您可以在着色器中添加一个常数因子,以达到 'ambient' 或 'diffuse' 照明的效果。但是那个着色器,为了支持反射率等所有特性,必须非常复杂。

幸运的是,有了 Unity,我们还得到了一个称为标准着色器的中间层,它几乎完成了底层的所有数学运算,让您无需编写着色器代码。

对于柔和、漫射的外观,您肯定想看看 Unity 的烘焙间接照明功能,甚至可能只用区域灯照亮所有东西。

研究光探针组可能也是个好主意。它们使用球谐函数,仅对光照数据的低频分量进行编码,有效地仅使用缓慢变化的因素,例如光的总体方向。

最后看看反射探针(和天空盒),很少有好的免费 HDR 探针可以将光线发射到您的场景中(当烘焙光照贴图和烘焙光照探针时),与默认的统一天空盒相比,实现令人惊讶的真实感.

如果您不想要刺眼的定向光,只需将其禁用即可(尽管知道您场景中最强的光源是什么通常很有用 - 即使它是一个有一些云的天空盒,我可能会保留一个场景光只是为了更快地知道是否出现问题