2019-04-30
此版本中的多核处理器已针对多核处理器进行了优化,以充分利用PC平台提供的所有额外计算能力,从异步数据流到处理网络数据包。
渲染改进继续推动虚拟世界中视觉真实感的界限,在此版本中,我们显着改善了植被,阴影和反射的外观。
大量的各种性能优化,包括缓存阴影,异步数据流,有助于提高整体引擎性能并减少峰值。
注意:UNIGINE 2.8 SDK需要SDK Browser版本1.9.13或更高版本。
没有人喜欢尖峰,它们在娱乐应用中可能很烦人,并且对于模拟器来说是完全不可接受的。我们已经完全改进了异步数据流系统,利用多线程的优势来减少因加载图形资源而引起的尖峰。几何和纹理流在单独的线程中执行。
流系统使用纹理缓存,该缓存由为用户定义的分辨率为所有纹理生成的最小化副本组成,并存储在data / .cache_textures文件夹中(文件结构与.runtimes相同)。在加载这些副本时使用这些副本而不是原件。
流媒体在2.7.3
流媒体在2.8
支持缓存所有纹理(带或不带mipmap,立方体贴图,3D纹理等的2D纹理),因此即使场景中使用的1GB 3D纹理也不会再出现尖峰。
如果未找到纹理的缓存副本,则会生成并动态添加。
纹理缓存在引擎启动时加载,并在加载后始终保留在内存中。
所有相关设置(渲染预算,内存限制,纹理缓存分辨率等)都可以通过“ 设置”窗口的“ 流”部分进行调整(Windows - >设置 - >渲染 - >流式传输),它们也可以通过控制台命令和API获得。 。
您可以在必要时启用所有资源的强制加载(例如,为节点生成预览或抓取帧序列)。
所有render_manager_ *控制台命令都重命名为render_streaming_ *。
请注意,流式传输系统需要支持多线程的GPU驱动程序。OpenGL和DirectX的设置和工作流程有所不同,有关流配置的更多信息,请参阅异步数据流文章。
动态光照可确保正确渲染移动物体投射的移动光源的所有阴影。这种方法意味着每帧渲染场景的几何图形,以计算每个投影光的阴影(或者每个Omni计算六次)。在场景中使用多个动态光源并在运行中为它们计算阴影可能会导致性能下降,尤其是当场景包含具有大量多边形的复杂几何体时。当大多数物体和灯光是静止的时,它可能是对资源的可怕浪费。
此版本带来了一个解决方案 - 缓存阴影功能使您能够替换动态阴影并使用烘焙的阴影来保护静态,从而减少负载并显着提高性能。您可以将Omni,Projected和World光源切换到静态模式(它们的阴影预先计算并存储在深度纹理中)。
要渲染的阴影类型由灯光模式和为灯光和物体曲面设置的阴影模式定义。
在世界光源的工作以类似的方式,但它使用的影子瀑布。在动态模式中,阴影级联是相对于摄像机位置动态构建的,而在静态中它们是烘焙的,其区域由光源的位置定义。这种世界之光模式适合作为小区域ArchViz项目的性能优化技术,其中阴影级联可以分为两个部分:具有高分辨率阴影的可行走区域(因为它们被密切观察)和非步行区域低分辨率阴影(从远处观察它们)。请注意,在静态模式下无法更改时间,因为阴影级联已烘焙。
缓存阴影的机制为您提供了很大的灵活性 - 根据您的需要,您可以选择仅渲染烘焙阴影或组合烘焙和动态阴影的渲染。
动态阴影
静态阴影
请注意,由于光源模式已更改,因此在迁移项目时应执行以下转换:
有关更多信息,请观看我们关于缓存阴影的新视频教程:
有关新技术的信息也可在更新的Lights Optimization文章中找到。可以在SDK中包含的Samples演示包中找到说明该机制的新示例。
但我们并没有停下来为您提供优化阴影渲染的选项,我们不仅提高了整体性能和阴影质量,使得低分辨率阴影更快,高分辨率阴影更加平滑。
其他阴影渲染改进包括:
使用一组Performance Profiler的更新,监控应用程序的性能变得更加高效和方便:
我们还将GPU Microprofile添加到公共API,使您可以获得有关GPU相关操作的更多信息。要添加新的GPU相关计数器,只需将beginMicro函数的第二个参数设置为1:
源代码(C ++)
Profiler :: beginMicro( “ my_function ”,1);
增加了新的帧速率稳定功能,可用于避免显着的FPS波动,使帧速率更平滑,驾驶员的行为更可预测,但性能成本(可能导致FPS降低高达30%)。所有必要参数均可在“ 设置”窗口的“ 屏幕”部分中进行调整(“设置” - >“渲染” - >“屏幕”)。您还可以通过API或一组render_fps_stabilization控制台命令控制FPS稳定。
如果我们当然不谈论火星,植被是决定虚拟景观整体外观的关键因素。在此版本中,我们添加了更多功能,可以创建逼真的户外环境,提供高度身临其境的体验。
Impostors现在有一个深度纹理,大大改善了他们的外观,使得很难从原始模型告诉他们!相应的参数被添加到所有冒充者材料中。
没有深度纹理
深度纹理
当然,Impostors Creator工具现在支持此功能。
次表面散射(SSS)是叶片和草叶外观的主要贡献者之一,因此对此效果进行了一些改进:
2.7.3
2.8
在mesh_base材质中添加了一个新的Vegetation Velocity选项,用于控制对速度缓冲区的写入,可用于在必要时改善TAA和运动模糊结果。在其他情况下,您可以禁用此选项以获得性能(因为启用此选项的对象会呈现两次)。
在mesh_base材质中添加了一个新的“将法线移动到相机”选项,使您可以忽略几何法线并将它们定向到相机。这对于植被非常有用,因为它使叶子和草叶片由不太明显的多边形组成。
将法线旋转到相机:关闭
将法线旋转到相机:开
mesh_base材质的另一个新功能是Angle Fade选项的逻辑已更改,现在它不需要为启用了Alpha Test预设的材质启用Vegetation选项。你可以将它用于树冠,使它们看起来不那么低多边形,因为它们的法线偏离摄影机时会剪掉多边形。
角度淡化:关闭
角度淡化:开启
渲染灯是消耗最多的部分之一:场景中使用的光源越多,它们对性能的影响就越大。如果我们必须以4K +渲染场景,情况会变得更糟,因为支持UHD的设备的数量会增长更高的渲染分辨率正在被更广泛地接受。
为灯光引入新的Interleaved Rendering模式。在该模式中,在延迟通过期间以半分辨率(所有像素的1/4)渲染照明,随后使用来自先前帧的数据重建相邻像素,使得可以减少渲染负荷。效果是累积的,并且在启用TAA时效果最佳。我们还建议在启用超级采样时使用此模式以减少负载,同时保持高图像质量。
对于包含大量光源并且没有大量反射表面的相对静态场景,建议使用此模式(因为反射代表交错重建的弱点)。请注意,为具有少量光源的场景(例如,具有单个世界光的飞行模拟器场景)启用交错灯渲染可能会导致性能下降。
然而,还应注意,该模式需要高帧率(60+ FPS),否则抗锯齿质量会降低,重影效果会变得更加明显。
您可以为灯光启用交错渲染并通过“ 设置”窗口的“ 灯光”部分调整其参数,也可以通过API和一组render_lights_interleaved * 控制台命令进行调整。
有关配置和使用灯光交错渲染模式的更多信息,请参阅“ 交错灯光渲染”一文。
天鹅绒和绸缎面料,以及非常模糊的水果或非洲叶子,甚至是脸上的桃子绒毛现在看起来更加逼真,因为改进的微纤维效果模拟了数千种以不同方式反射光线的纤维。我们开发了自己的BRDF模型,考虑了金属度,粗糙度,镜面反射和反照率等PBR参数,光线方向也很重要,因此模拟变得更加物理正确。
在某些情况下,烘焙到环境探测器中的反射可能会在实际上不应该出现的区域中清晰地看到,从而导致各种人工制品破坏了场景的整体外观。将环境探头放置在不规则形状(非方形)的房间时,这一点尤其明显。
阴影抠图:关闭
阴影抠图:开启
引入一种新功能,可以捕捉被障碍物遮挡的反射(位于相对于光源的阴影区域)。可以通过“ 按阴影剪切”选项为环境探测器启用此功能,并使用为其捕获的深度纹理来确定应该可见的反射。一组附加参数可用于微调。
有关剪切遮挡反射的更多信息,请参阅环境探测器文章。
环境探测灯现在支持添加剂混合模式。此选项为反射控制提供了更大的灵活性。您可以使用它将几个环境探测器的反射混合在一起并单独控制它们。
请注意,启用了添加混合的环境探测器不能用作添加反射细节的插图(例如,在大的低细节环境中创建一个小的高细节环境探测器)。这些探针不会相互替换,因为它们是混合的。
展示此功能的示例已添加到Samples套件中。
镜子,游泳池或湖泊的玻璃平静以及其他反射表面将受益于平面反射的改善质量,因为它们现在支持时间抗锯齿(TAA)。
2.7.3
2.8
此外,现在可以通过将新的距离比例参数添加到mesh_base材质来降低渲染平面反射的成本。它使您可以选择在反射中渲染高多边形或低多边形LOD,以便在保持可接受的图像质量的同时获得性能。因此,您可以更灵活地优化场景中反射的性能。
模仿粗糙表面上的多次散射镜面反射,在这个版本中已经可以使用,根据能量守恒定律,使反射的最终外观更接近现实,使其更亮和更饱和。
2.7.3
2.8
此版本还带来了与反射相关的以下修复:
添加了在TAA颜色钳制过程中考虑对角相邻像素的功能,以提高抗锯齿质量,您可以通过设置 - >渲染 - >抗锯齿中的相应复选框切换此选项。
TAA Diagonal Neighbors:关闭
TAA Diagonal Neighbors:On
正常替补:关闭
正常替代:开
位屏蔽是UNIGINE提供的一种强大而灵活的机制,可以有选择地对对象应用或启用某些特效或特征。我们使用升级的Bitmask对话框使其更简单,更直观。现在,在场景中配置掩码时,您不必记下许多十六进制值或位组,只需标记有意义名称的所需位,并在相同类型的所有掩码中使用它们。
此外,您不必总是打开“位掩码”对话框来检查掩码配置,因为掩码小部件显示已设置的位的名称。
为了保持一致性,对位掩码进行了更多更改:
为了向您提供有关UNIGINE中位掩码的更多信息以及如何使用它们来改善项目的性能,我们添加了一个新的视频教程:
Property System引入了以下一组改进和修复,以确保整体稳定性并提高性能:
我们相信适当的工具对于任何类型的创作过程都是必不可少的,因此我们继续不断追求性能,效率,便利性和稳定性。UnigineEditor已从引擎插件发展为全面的独立应用程序。经过重大的重构后,它变得更快,更方便使用,更容易扩展。具有明确定义的初始化序列的清晰模块化结构代表了我们为在最近的将来由我们的用户和我们自己实现的扩展和定制准备的强大基础。下一步是为编辑器提供公共API,以便客户能够将自己的插件引入编辑器。
在处理项目时,您可以创建,复制,移动,继承,重命名和删除资产。结果,可以创建大量不必要的文件。
介绍Cleaner,这是一个工具,可以通过删除任何地方未使用的资产来优化项目并节省磁盘空间,以后不会在最终构建中使用。Cleaner还会检查丢失的资产,即GUID引用但在项目中不可用的资产。
清洁工可以为一般项目节省高达30%的磁盘空间,并且肯定会帮助您保持项目的整洁。
但是,不要太快地点击清除检测到的所有资产的全部删除,因为您可能会不可挽回地破坏您的项目!正确清理需要进行适当的分析,因此请小心谨慎,不要忘记阅读清洁工具文章以获取更多信息。
可以在项目中使用各种类型的纹理资源。但它们是否经过优化,还是浪费了宝贵的兆字节?在开发项目时,艺术家通常只是将大量纹理丢弃到资源浏览器而不考虑它们的大小(例如,重TGA纹理),因此您的项目的存储库可以增长到一个巨大的大小。稍后他们可能希望优化其纹理,但更改资产的类型(使用第三方DCC工具转换时)意味着更改其GUID,这需要进行许多其他相关更改。
资产浏览器中提供的新纹理转换功能将有所帮助!它不会在转换时更改资产GUID,从而保留所有必需的链接,并且可以将项目中使用的任何纹理资源转换为可用格式之一。
有时,在团队合作开发的情况下,在使用UnigineEditor时,可能会将无效的guids.db文件提交到存储库(由于不正确的合并或其他原因)导致错误。因此,我们添加了一种能够通过-skip_guidsdb命令行参数忽略引擎忽略guids.db文件的 功能。在这种情况下,Engine会在数据文件夹中的所有.meta文件和所有已安装的外部目录和包中搜索GUID 。默认情况下,UnigineEditor使用此参数来避免错误,并始终重新生成guids.db文件以确保其有效性。
其他编辑器改进列表包括以下内容:
IG(图像生成器)应用程序模板是我们用于专业分布式仿真系统的即插即用组件,它继续发展并构建其功能。随着整体性能的提高,特别是由于多线程的广泛使用和稳定性,支持的通信协议列表已经扩展:现在支持分布式交互式仿真(DIS)(基本级别使用KDIS库v2.9.0,DIS_VERSION 7实现) )。
完整的更新集包括以下内容:
改进的地形以上高度(HAT)/地形高度(HOT)请求现在也支持掩模。您可以指定交叉点蒙版以定义IG作为地形处理的内容。例如,当跑道或道路由网格对象表示时,这可能很有用。在这种情况下,您只需通过以下方式设置某个掩码:
源代码(C ++)ig_manager-> 设置 TerrainIntersectionMask(mask);
然后为您想要被视为HAT / HOT的参考级别的所有网格设置此蒙版。弯曲地形的HAT / HOT误差是固定的。
< volume_definition id = “1” shape = “shape_num” > path_to_node volume_definition >
Syncker多通道渲染系统还扩展了对多线程的使用,并进行了大量优化,从而提高了整体性能,使您能够为此添加更多功能。
向Syncker添加节点时,默认情况下会同步其所有参数(状态,材料,转换等)。但是,如果我们唯一需要的是节点的状态(例如,如果它被启用或禁用)呢?在这种情况下同步其他参数是浪费宝贵的资源,我们希望避免。引入同步掩码 - 一种灵活的机制,使您可以通过定义要同步的内容来优化负载。添加/创建节点时,您可以指定一个标志,用于定义要同步的参数(状态,转换等)。
通过一系列错误修复和改进,系统也变得更加强大,包括:
以下内容示例已添加到Samples演示程序包中:
我们在Oil Refinery演示中修改了逻辑系统,为您提供更多自由。它使用预制的逻辑组件和任何可用资产展示了一系列定制培训任务和测试场景。现在你可以用同样的方式生成自己的任务。
逻辑确保的活动范围涵盖培训期间所需的所有基本操作:打开和关闭设备,打开和关闭门,检查设备以检查状态或添加缺失的项目。使资产互动以参与活动。
您的任务可以有两种模式:训练和测试。在训练模式中,由交互式提示引导的玩家遵循清单中剪贴板上提到的活动列表。测试模式提供故障并允许模拟故障的负面后果以增加可信度。
此外,您可以使用可用逻辑组件的各种组合创建任意数量的紧急情况。
我们在家中直接使用更新的地形系统的所有运行时功能和完整的圆形地球解决方案。在我们为您提供这些功能之前,唯一剩下的就是完成工具集并使其高效且易于使用。这正是我们的工具团队目前关注的重点。但我们最近的估计表明,为了将这些功能纳入2.8,我们必须推迟发布日期。这将是不公平的,因为必须保持许多改进。因此我们决定及时将它们发布为2.8,并且包括两个新开发的对象以及在2.9尽快完美抛光的适当工具集。