Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d 统一-如何提供漫反射照明_Unity3d_Shader_Shadow - Fatal编程技术网

Unity3d 统一-如何提供漫反射照明

Unity3d 统一-如何提供漫反射照明,unity3d,shader,shadow,Unity3d,Shader,Shadow,我有一个房子内部的简单场景(没有屋顶)。它在任何方面都不需要看起来真实,只需要几何上正确,因此墙壁、家具和配件都是由原始物体——立方体和圆柱体等构成的 布局很好,问题在于照明——非常黑的阴影。场景具有标准的单向光源 我需要做的是提供整体漫射照明-相当于阴天 我应该指出的是,尽管我已经读了很多书,但我在所有这些方面都是新手——照明、着色器等等 从我阅读的内容来看,这似乎是由着色器控制的,着色器附着到材质,材质应用到对象。然而,这对我来说似乎没有多大意义。当然,着色器(如果对象的一部分由于附着在材质

我有一个房子内部的简单场景(没有屋顶)。它在任何方面都不需要看起来真实,只需要几何上正确,因此墙壁、家具和配件都是由原始物体——立方体和圆柱体等构成的

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

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

我应该指出的是,尽管我已经读了很多书,但我在所有这些方面都是新手——照明、着色器等等

从我阅读的内容来看,这似乎是由着色器控制的,着色器附着到材质,材质应用到对象。然而,这对我来说似乎没有多大意义。当然,着色器(如果对象的一部分由于附着在材质上)只能处理光线如何从曲面反射出去,但光线必须先到达曲面

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


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

你对这一切工作原理的一般理解是正确的。查看对象请求渲染的一种方法是查找材质,材质将着色器绑定到一组参数。然后,着色器将在场景中影响它的每个灯光上执行一次(这将使事情变得简单,但我们将稍后再讨论)。这就是为什么灯光非常昂贵(即在正向渲染中),直到优化开始生效,这意味着渲染场景n次

因此,是的,您可以在着色器中添加常量因子,以实现“环境光”或“漫反射”照明的效果。但是,为了支持所有特性,如反射率等,着色器必须非常复杂

幸运的是,有了unity,我们还得到了一个名为Standard Shader的中间层,该层几乎完成了下面的所有数学运算,并且使您不再需要编写着色器代码

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

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

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


如果你不想要刺眼的平行光,就禁用它(虽然知道你大脑中最强的光源是什么通常很有用——即使是一个有云的天空盒,我可能会保留一个场景灯光,以便更快地知道是否出了问题。

我知道你正在寻找的东西。另请参阅。如果你搜索环境光,网上有很多资源。听起来不错,谢谢。环境光灯光是一种伪装的方式,它只是整体漫反射照明。你可以阅读Unity手册中的照明部分,了解获得更真实间接照明的其他方式。谢谢,这些都非常有用。