Environment Probe
Environment Probe是一种光源,它也可以通过使用立方体贴图(预烘焙或动态更改每帧)在探针内部的对象上提供反射。在UNIGINE中,Environment Probe具有三种类型的投影:
- 盒子(box)投影适用于室内场景(房间为3D盒子形状)或盒子形状的户外场景(建筑物之间的后巷)。
- 球形(sphere)投影对于球形的情况效果更好。
- Raymarching 适用于所有其他情况,探头渲染反射考虑到周围表面的各种形状。照明使用物理正确的公式计算,确保反射和漫射照明与Box和Sphere投影相比更加真实,因此更加消耗性能。
使用Environment Probe,您可以创建反射而不是创建反射材质。
也可以看看#
- 的文章使用Environment Probe
- 的文章光源参数
- 通过API管理Environment Probe的LightEnvironmentProbe类
概述#
Environment Probe对于提高性能,减少材质数量以及使内容设计者的生活更加轻松是一件好事。
Environment Probe使用烘焙(或用特殊工具抓取)的立方体贴图。立方体贴图将扮演反射和灯光模拟的角色。这是一个例子:
我们有两间内部颜色不同的房屋,并将相同的物体(例如反射材质,例如金属)放入这些房屋中。会发生什么?
如果我们不谈论动态反射,则需要反射每个对象的内部。但是内部具有不同的环境颜色,这就是为什么您需要为它们创建2种不同的材质的原因。根本没有优化。
Environment Probe消除了此缺陷。添加对象后,便无需考虑其反射材质。 Environment Probe将立方体贴图映射到对象。
将立方体贴图映射到透明和非透明对象有一个区别:
- 如果对象是透明的,则仅当整个对象在Environment Probe的半径内时,Environment Probe才会映射立方体贴图。否则,该对象将完全不受Environment Probe的影响。
- 如果对象是非透明的,则Environment Probe会将立方体贴图映射到对象半径在探针半径内的任何部分。
透明对象受Environment Probe影响 |
受Environment Probe影响的非透明对象 |
如果您放置几个影响非透明对象的Environment Probe节点(在延期通行证)他们的立方体贴图将被平滑地融合。这是一个示例,一条长长的走廊上有涂有不同颜色的墙壁。
我们放置了两个Environment Probe节点,它们都影响对象(当对象位于交叉区域中时)。如果位置较大,则应使用多个Environment Probe节点而不是一个,以使最终图像更加逼真。
SSR(屏幕空间反射)效果使最终图像更加逼真,因为它附加了无法烘焙到立方体贴图中的反射。使用Environment Probe和SSR是通过动态照明非常快速地模仿反射的好方法。
透明对象的多环境探针#
为透明对象设置的Multiple Environment Probes选项(在前传)允许多个Environment Probe节点影响对象并将其多维数据集映射到该对象。
- 禁用该选项时,只有最后设置的Environment Probe会影响该对象。那时,整个对象必须在Environment Probe的半径内。否则,它将完全不受此Environment Probe的影响。
- 启用该选项后,对象将被整个Environment Probe照亮:每个探针都会影响对象的一部分,该部分位于探针内部。 Environment Probe节点的立方体贴图将在交叉区域混合。
Multiple Environment Probes已关闭:仅左侧立方体贴图已映射到对象 |
Multiple Environment Probes启用:映射和混合两个立方体贴图 |
添加环境探针#
要通过UnigineEditor将Environment Probe节点添加到场景中,请执行以下操作:
- 跑步UnigineEditor的项目。
在菜单栏上,单击Create -> Lights,然后选择所需的Environment Probe:Box,Sphere或Raymarching。这投影形状通过Parameters窗口创建后可以对其进行更改。
- 放置Environment Probe。
- 抓取Environment Probe的立方体贴图纹理。您可以通过Parameters窗口来抓取它,也可以使用Bake Lighting工具。
- 调整Environment Probe设定。
- 您不能将实时灯光(Omni Light, Projected Light等)烘烤为Environment Probe。最好的办法是用发光材质代替光来放置球体,调整发射强度,然后烘烤照明。但是,结果看起来比实时照明的效果要差。
- 使用Bake to Environment Probes选项定义曲面是否应将其反射烘焙为Environment Probe。
在UnigineEditor视口中选择Environment Probe时,参考球将在探针中心可视化:
- 间接镜面球有助于估计探头提供的反射。
- 间接漫射球有助于估计探头提供的环境照明(要求启用间接照明Indirect Diffuse)。
环境探针设置#
可以在Parameters窗口的Node选项卡中找到Environment Probe设置。此标签同时包含所有光源的参数以及特定于Environment Probe的参数。具体参数说明如下。
常用参数#
Environment Probe使用的投影形状类型: |
|
---|---|
Box Projection Size | 指定框投影的大小。 |
Attenuation Distance | 设置衰减距离为Environment Probe。 |
Attenuation Power | 设置衰减功率为Environment Probe。 |
渲染参数#
Color | 设置灯光颜色格式为RGBA。颜色定义了虚拟表示的合理性及其美学成分。 |
---|---|
Intensity |
设置灯光颜色乘数,它可以很好地控制发射光的颜色强度:
|
Shadow Mask | Shadow遮罩控制由光源照亮的对象投射的阴影的渲染。 |
Viewport Mask | 设置灯光的Viewport蒙版。 |
Visibility Distance | 距相机的距离(以单位为单位),直到渲染Environment Probe为止。 |
Fade Distance | 距相机的距离(以单位为单位),从该距离开始,Environment Probe开始逐渐消失。 |
Render On Water | 在水上渲染Environment Probe。 |
Render On Transparent | 在透明对象上渲染Environment Probe。 |
Multiply By Sky Color |
发挥影响太阳光色在Environment Probe。 启用后,此选项可使Environment Probe颜色在夜间变为黑色,而在日落时变为橙色。 |
Additive Blending | 启用Environment Probe的加性混合模式。此选项在照明和反射控制方面提供了更大的灵活性。您可以使用它将多个Environment Probe节点的照明和反射混合在一起并分别控制它们. |
Noise Frame Number | 每一帧改变的噪声模式的变化数。更高的值会产生更动态的噪声效果,但是帧的显著时间累积会使图像看起来像使用了更多的光线。较小的值导致更静态的噪声模式。 |
Last Step Cubemap |
允许选择立方体贴图用于最后的射线行进步骤:
|
间接漫反射和镜面参数#
通常有两组参数:
Indirect Diffuse | 为Environment Probe启用间接漫射(环境)照明。默认情况下,Environment Probe仅用于反射;至于照明,建议使用Voxel Probe和 Lightmaps进行模拟,这种方法可以确保最佳效果。但是,您仍然可以通过启用该选项来使用Environment Probe进行间接漫射照明。 |
---|---|
Indirect Specular | 切换Environment Probe的镜面照明。 |
环境探测类型不同,参数也不同。
球面投影#
盒投影#
Ambient Parallax | 使全球照明模拟。Environment Probe通过使用立方体映射生成伪 GI。 |
---|---|
Contrast | 设置间接漫射照明的对比度。 |
Gloss Corners | 盒子投影角附近的反射光泽度强度。 |
Raymarching#
Num Rays | 射线的数量每像素,用于计算扩散/粗糙表面的镜面反射。使用更多的光线提供了更精确的反映粗糙度计算,然而,它是更昂贵的。 |
---|---|
Num Steps | 用于跟踪计算的每条射线的步数。步数定义了间接光/反射的精度,并对性能产生合理的影响。该值越高,物体之间的障碍物被考虑的越准确。 |
Step Size | 跟踪步骤用于扩散的大小/镜面反射的计算。更高的值导致更长的痕迹(然而,微小物体可能成为失踪),较低的值产生更多详细的微小物体反射。 |
Num Steps Roughness Threshold | 步数(Num Steps)等于1时的粗糙度值。这是优化所必需的,因为尽可能正确地计算哑光反射可能是不必要的。 |
Information Lost Rays Multiplier | 乘数的射线(Num Rays)通常发生在地区重影效果。增加这个值降低了重影,但更重影的情况下,它会影响性能。 |
Mip Offset | 用于漫射光/镜面反射计算的立方体贴图的mipmap偏移量。增加该值会影响性能,灯光变得不那么详细和逼真,立方体地图上的小物体可能会丢失。0值提供了视觉上最可信的结果,但是需要更多的射线来消除噪声。 |
Threshold | 阈值用于漫射光/镜面反射的计算限制模仿反映地区无法获得的信息。更高的值使效果不明显。 |
Threshold Occlusion | 在无法获得信息的区域限制环境立方体图遮挡的模仿值。数值越高,效果越不明显。该参数主要用于室内环境,校正遮挡区域的假反射(假反射用黑色代替)。对于室外环境,建议设置较大的数值。 |
Reconstruction Samples Screen | 更准确地检测光线与表面的屏幕空间相交所需的迭代次数。更高的值更精确地定义了十字路口,然而显著地影响性能。 |
Threshold Binary Search | 用于交叉检测的阈值,该阈值定义了射线在表面下穿透的深度。较高的值可能导致更多的假相交,但使相交检测过程更容易。 |
Perspective Compensation | 透视补偿射线行进步长。0表示射线行进步长绑定到世界空间,1表示它绑定到屏幕空间。因此,在1值处,距离摄像头的光线长度会比近距离处的光线长度大,这对大物体来说是有意义的,但距离内小物体的细节可能会丢失。 |
Non Linear Step Size | 射线步长调整值。0的值表示每一步的步长相同,当1的值时,后续的每一步都比前一步宽两倍。 |
AO Intensity | 环境遮挡强度。请记住,环境遮挡在现实世界中不存在,这是一种模仿物体之间阴影的方法。对于逼真的可视化,我们建议将此值保持为0。 |
AO Radius | 在环境遮挡效果中使用的样本像素的半径,控制变暗区域的范围。 |
Translucent Anisotropy |
值定义透明光穿透表面的程度。
|
Replace With Diffuse Roughness Threshold | Indirect Specular 停止计算并替换为 Indirect Diffuse 时开始的粗糙度值。 此设置用于优化遮罩反射。 |
BRDF | 哑光表面的光分布模型。GGX更现实,但会增加噪音并略微降低性能。 |
烘焙设置#
Mode |
指定反射是实时更新还是烘烤到纹理中。 应该启用Dynamic Reflections选项:Rendering -> Features -> Dynamic Reflections。 |
---|---|
Faces Per Frame |
多维数据集贴图更新间隔。
可以用来Realtime Update模式只要。 |
Grab by Bake Lighting | 指定是否要通过Bake Lighting工具修改立方体贴图纹理。 |
Reflection Viewport Mask | 这面具控制将Environment Probe的反射渲染到反射摄影机视口中。 |
Resolution |
反射纹理的分辨率,以像素为单位。 在具有低内存容量的低性能GPU上设置过高的分辨率可能会导致引擎崩溃。 |
Supersampling | 用于图像捕获超采样的每像素采样数。 |
Mipmaps Quality |
mipmaps的质量和粗糙表面反射的粗糙度校正模式。 有以下几种模式:
|
Distance Scale |
G反射的全局距离乘数在[0.0f;1.0f]范围内检出限可见距离。距离比例适用于从反射摄影机到结点(曲面)的距离。 可以用来Realtime Update模式只要。 |
Near Clipping | 到附近的裁剪平面以进行图像捕捉的距离。 |
Far Clipping |
到远剪切平面的距离以进行图像捕获。 近裁剪平面和远裁剪平面之间的极大差异会导致将空间烘焙为黑色。因此,如果所需的“远剪切平面”值不在该范围内,请按比例调整“近剪切”值。 |
Sky Cutout |
裁剪Environment Probe中的天空渲染,并渲染动态反射而不是天空。 当一天中的时间发生变化时,此参数可用于在窗口中呈现天空渐变的变化。 |
Local Space |
为Environment Probe启用局部空间(局部坐标)。可用于带有移动物体的场景。 如果计划在烘焙后旋转Environment Probe,则建议使用此参数。 |
Visibility Sky | 可以烘烤天空的灯光到Environment Probe. |
Visibility Light World | 启用将World Light源烘焙到Environment Probe. |
Visibility Light Omni | 启用将Omni Light源烘焙到Environment Probe. |
Visibility Light Proj | 启用将Projected Light源烘焙到Environment Probe. |
Visibility Voxel Probe | 启用将其他Voxel Probe光源烘焙到Environment Probe. |
Visibility Environment Probe | 使 Environment Probe光源烘烤到Environment Probe。 |
Visibility Emission | 可以烘烤排放光源到Environment Probe. |
Visibility Lightmap | 可以烘烤光线映射的表面到Environment Probe. |
Texture |
反射的多维数据集纹理。 启用Grab by Bake Lighting模式时,每个烘烤照明过程都会更改在此字段中选择的资源。 您可以将该字段留空,以免丢失内容。在这种情况下,将在烘烤照明过程之后为此参数设置一个新生成的照明纹理。生成的纹理存储在data/bake_lighting文件夹中。 |
Cutout By Shadow |
可以裁剪被障碍物遮挡的反射(位于相对于光源的阴影区域中)。此功能使用深度纹理抓住Environment Probe以确定应该可见的反射。
启用后,下面列出的三个参数(Bias, Normal Bias和Depth Texture)可用。 |
Bias | 用于校正Cutout By Shadow功能的场景对象的不精确阴影的偏差。它控制添加到阴影贴图中存储的当前深度值的深度偏移。类似于阴影的Bias参数。 |
Normal Bias | 通过移动阴影所在的表面为Cutout By Shadow特征获得的偏差。曲面沿法线贴图中存储的法线移动。类似于阴影的Normal Bias参数。 |
Depth Texture |
深度纹理,用于剪切障碍物遮挡的反射。 该纹理是静态的,并且每次更改Environment Probe位置或大小时都需要重新生成。 要获取用于裁剪的深度纹理,请执行以下步骤:
启用Grab by Bake Lighting模式和Cutout By Shadow模式时,每个烘烤照明过程都会更改在此字段中选择的资源。 您可以将该字段留空,以免丢失内容。在这种情况下,将在烘烤光照过程之后为此参数设置一个新的生成的深度纹理。生成的纹理存储在data/bake_lighting文件夹中。 |