UNIGINE 2.8:改进的数据流,缓存阴影,重构编辑器,更好的植被
2019-04-30
主要变化
- 重新设计的异步数据流以降低性能峰值。
- 提高了整个引擎中多个CPU核心的利用率。
- UnigineEditor的转型:独立应用程序,在重大重构后更快,更稳定和可扩展,并进行了一些改进。
- 缓存阴影优化:性能提升,更灵活。
- 重构的位掩码。
- 使用加性混合和遮挡裁剪更好地反射。
- 灯的交错渲染模式。
- 各种植被改良。
- 更多信息性能分析器。
- 主要IG模板更新:DIS支持,更多CIGI数据包,多线程和优化。
此版本中的多核处理器已针对多核处理器进行了优化,以充分利用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演示包中找到说明该机制的新示例。
更多阴影改进
但我们并没有停下来为您提供优化阴影渲染的选项,我们不仅提高了整体性能和阴影质量,使得低分辨率阴影更快,高分辨率阴影更加平滑。
其他阴影渲染改进包括:
- 光线穿透材料的深度乘数,使您可以控制光线穿过半透明物体移动阴影的深度。乘数称为半透明深度,可以在“设置”窗口的“阴影”部分中找到(“设置” - >“渲染” - >“阴影”)。
- 现在可用于阴影贴图的超高16K分辨率使您可以为场景带来更多细节。但请记住视频内存消耗,因为这样的纹理需要很多。
- 阴影的单独距离比例倍增器,可以更灵活地优化场景。
性能分析改进
使用一组Performance Profiler的更新,监控应用程序的性能变得更加高效和方便:
- 添加了新的GPU加载计数器。
- 改进的网格内存消耗计数器
- 该纹理计数器值现在包括屏幕缓冲区。
- 该三角形计数器被分为三个部分:阴影,几何和总。
- 添加了通过show_profiler_charts控制台命令显示/隐藏Profiler图表的功能。
- 显示OpenGL的基元数。
- 改进了数字格式。
我们还将GPU Microprofile添加到公共API,使您可以获得有关GPU相关操作的更多信息。要添加新的GPU相关计数器,只需将beginMicro函数的第二个参数设置为1:
源代码(C ++)
<span style="color:#5f5f5f"><span style="color:#dddddd"><span style="color:#f8f8f2"><span style="color:#f8f8f2">Profiler </span>:: beginMicro( “ <span style="color:#f8f8f2">my_function</span> ”,1);</span></span></span>
FPS稳定
增加了新的帧速率稳定功能,可用于避免显着的FPS波动,使帧速率更平滑,驾驶员的行为更可预测,但性能成本(可能导致FPS降低高达30%)。所有必要参数均可在“ 设置”窗口的“ 屏幕”部分中进行调整(“设置” - >“渲染” - >“屏幕”)。您还可以通过API或一组render_fps_stabilization控制台命令控制FPS稳定。
更好的植被
如果我们当然不谈论火星,植被是决定虚拟景观整体外观的关键因素。在此版本中,我们添加了更多功能,可以创建逼真的户外环境,提供高度身临其境的体验。
冒名顶替者的深度纹理
Impostors现在有一个深度纹理,大大改善了他们的外观,使得很难从原始模型告诉他们!相应的参数被添加到所有冒充者材料中。
没有深度纹理
深度纹理
当然,Impostors Creator工具现在支持此功能。
改进的次表面散射
次表面散射(SSS)是叶片和草叶外观的主要贡献者之一,因此对此效果进行了一些改进:
- 背面(相对于光源)薄物体(例如叶子和草叶片)的侧面现在看起来更逼真,因为在计算SSS颜色和强度使其更亮时考虑各向异性和多重散射效应。
- 来自光源的阴影现在可以平滑地溶解在材料内部。平滑度由SSS强度值确定。
- 屏幕空间阴影现在与SSS正确地工作,类似于普通阴影,从近处或远处观察时,大大改善了树叶的外观。在后一种情况下,该选项与改进的冒名顶替者相结合,特别有效,以较低的成本提供真实的环境。
2.7.3
2.8
- 添加了一种能力,因此指定一种全局用于半透明对象的颜色。当光线照射在半透明物体的一侧时,另一侧会被这种颜色部分照亮。您可以使用它来改变植被的半透明颜色,使其看起来更逼真。您可以通过“ 设置”窗口的SSS部分更改“半透明颜色”(Windows - >设置 - >渲染 - > SSS)。至于每种材料的半透明颜色,我们计划在即将发布的版本中提供它。
新的mesh_base选项
在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套件中。
Planar Reflections
镜子,游泳池或湖泊的玻璃平静以及其他反射表面将受益于平面反射的改善质量,因为它们现在支持时间抗锯齿(TAA)。
2.7.3
2.8
此外,现在可以通过将新的距离比例参数添加到mesh_base材质来降低渲染平面反射的成本。它使您可以选择在反射中渲染高多边形或低多边形LOD,以便在保持可接受的图像质量的同时获得性能。因此,您可以更灵活地优化场景中反射的性能。
多散的镜面反射
模仿粗糙表面上的多次散射镜面反射,在这个版本中已经可以使用,根据能量守恒定律,使反射的最终外观更接近现实,使其更亮和更饱和。
2.7.3
2.8
此版本还带来了与反射相关的以下修复:
- 修复了在OpenGL上启用平面反射的全局水对象的平面反射渲染。
- 修复了启用遮挡物时在平面反射中剪切对象的问题。
- 修复了平面反射忽略视口蒙版的问题。
增强的TAA
添加了在TAA颜色钳制过程中考虑对角相邻像素的功能,以提高抗锯齿质量,您可以通过设置 - >渲染 - >抗锯齿中的相应复选框切换此选项。
TAA Diagonal Neighbors:关闭
TAA Diagonal Neighbors:On
其他渲染改进
- 添加了一种控制允许驱动程序排队以进行渲染(延迟)的最大后缓冲帧数的功能,以减少由驱动程序管理的GPU负载优化引起的应用程序逻辑中的峰值。通过减少延迟值,您可以提高响应用户输入的优先级。在其他情况下(高GPU负载,VSYNC使用)可能需要增加该值以排队更多数据帧,这对于没有用户输入的应用(例如,视频回放)也是有益的。您可以通过render_latency控制台命令或通过API 控制延迟。
- 添加了一个新的Normal Substitute选项,用于mesh_base材质中的详细信息,以控制是否要将细节法线贴图与基本法线贴图混合或重叠。
正常替补:关闭
正常替代:开
- 水渲染修复:
- 修复了在其边界附近的FieldSpacer内水下可见泡沫和焦散的问题。
- 修复了当摄像机的远剪裁平面距离不等于10000时,ObjectWaterGlobal忽略FieldSpacers的问题。
- 修复了在水上模式下观察时FieldSpacer中可见水下雾的问题。
- 修复了在禁用雾度和雾度距离设置为0的情况下WaterGlobal和WaterMesh对象的渲染。
- 修复了ObjectWaterGlobal和ObjectWaterMesh渲染的问题,使其在使用OpenGL的Nvidia GPU上不可见。
- 修复了禁用全局水的辅助缓冲区渲染。
- 在将粒子程序渲染成贴花的情况下,修复decal_particles材质的颜色校正。
- 修复了在向粒子系统添加噪声时冻结粒子发射的问题。
- 修复了对于VR中不可见的像素(render_stereo_hidden_area 2)的自定义剔除模式的交叉和布隆效果的渲染。
- 修复了启用SSDirt效果(Nvidia + OpenGL)时的着色器错误。
- 修复了Impostors Creator工具错误生成草冒充者纹理的问题。
- 现在,在使用Impostors Creator工具为ObjectMeshClutter创建冒名顶替者时,会考虑曲面的视口和阴影蒙版。
- 修复了更改方向并重新导入FBX模型后修复了错误的网格剔除问题。
- 固定散射LUT着色器,当太阳和月亮之间的角度小于90度时,防止月亮过快地淡出。
- 删除了立方体贴图模糊Sky对象的人工制品。
- 改进了群集的阴影可见距离的计算。
- 修复了Windows + AMD + OpenGL API着色器缓存重新生成的问题。
- 在VR中启用隐藏区域模式时,固定左眼和右眼的曝光。
- 修复了在启用了地形对齐(交叉)的对象(草,杂波等)下修改地形高度时的崩溃问题。
比特屏蔽可用性
位屏蔽是UNIGINE提供的一种强大而灵活的机制,可以有选择地对对象应用或启用某些特效或特征。我们使用升级的Bitmask对话框使其更简单,更直观。现在,在场景中配置掩码时,您不必记下许多十六进制值或位组,只需标记有意义名称的所需位,并在相同类型的所有掩码中使用它们。
此外,您不必总是打开“位掩码”对话框来检查掩码配置,因为掩码小部件显示已设置的位的名称。
为了保持一致性,对位掩码进行了更多更改:
- Light Mask被重命名为Shadow Mask
- Reflection Mask被重命名为Reflection Viewport Mask
为了向您提供有关UNIGINE中位掩码的更多信息以及如何使用它们来改善项目的性能,我们添加了一个新的视频教程:
Property 更新
Property System引入了以下一组改进和修复,以确保整体稳定性并提高性能:
- 优化的属性删除操作。
- 修复了重置分配给节点层内节点的属性的节点参数值的问题。
- 修复了在重新导入属性时将结构数组内的参数重置为默认值的问题。
- 修复了在为节点分配新属性时触发回调的问题。
- 修复了属性参数数组元素的重置值为默认值。
- 手动编辑* .prop -files 时修复了属性重新显示问题。
- 修复了重写结构数组的问题,以及在更改其父级时刷新参数工具提示和属性的标题。
- 固定手动属性的条件。
- 修复了将属性的手动状态设置为1的断言。
其他engine改进
- 提高了多CPU核心的利用率。
- 从SSE2切换到SSE4.1指令集扩展,更新了最低系统要求。
- 修复了将蒙皮网格动画与使用LOD组合时表面设置不正确的问题,以及蒙皮网格实例的其他问题。这些修复需要更改使用蒙皮网格动画的逻辑。默认情况下,所有新项目都应使用新逻辑,并提供保留旧工作流的选项,通过skinned_legacy_mode控制台命令进行控制(迁移后应为旧项目启用此选项)。API迁移指南中提供了有关所有相关更改的更多详细信息。
- 添加了控制对象表面烘焙到体素和环境探测器以及从环境探测器投射阴影的功能。相应的选项被添加到UnigineEditor中的表面参数,也可以通过API进行控制。
- 改进了大型文件集的GUID生成算法(项目中> 500 000个文件)。
- 改进的GPU检测算法。
- 修复了在资源浏览器中选择文件时重置节点/曲面选择的问题。现在,如果选择节点或曲面,然后在“ 资源浏览器”中选择资源(例如,拖放到所选节点的材质),则节点/曲面应保持选中状态。
- 改进的标准数据容器:
- 为Vector添加了ReverseIterator
- 添加了Vector :: removeOneFast
- 添加了BiMap快速搜索键和值
- 重构的地图和集合
- 修复了重新加载世界后相对于曲线地形移动MeshStatic对象的问题。
- 修复了INDEPENDENT_SIZE_WINDOW标志的问题,导致窗口忽略调整大小并保持其初始宽度和高度。
- 修复了使用蒙版的ObjectGrass的非均匀草分布问题。
- 修复了沿X轴翻转为MeshClutter创建的冒充者的问题。
- 修复了通过-plugin_path选项加载的双精度插件。
- 修复了.world和.render文件中字符串类型控制台变量的加载问题。
- 修复了第一次Web浏览器启动时刷新的Microprofile信息。
- 为-video_app启动命令行选项添加了以下别名:
- gl - 用于opengl
- dx - 对于direct3d11
- 修复了UnigineScript的engine.filesystem类的GUID相关方法。
- 添加了通过-video_adapter启动命令行选项指定其编号来选择要使用的GPU的功能 (仅适用于DirectX)。
- 修复了在具有两个或更多具有不同屏幕分辨率的显示器的配置上运行时由App调用引起的堆栈溢出错误。
- 使用适用于OpenGL的App *插件修复了引擎启动时的崩溃问题。
- 修复了更改OpenGL窗口大小时的崩溃问题。
- 现在,在资源浏览器中可以正确显示为已安装目录中的新自定义地形LOD创建的新文件夹。
- Linux上的地形重新生成后,固定资产更新。
- 为Linux重建GDAL库以修复编译错误。
- 修复了在双排墙配置的情况下使用AppWall插件时鼠标位置不正确的问题。
重构编辑器
我们相信适当的工具对于任何类型的创作过程都是必不可少的,因此我们继续不断追求性能,效率,便利性和稳定性。UnigineEditor已从引擎插件发展为全面的独立应用程序。经过重大的重构后,它变得更快,更方便使用,更容易扩展。具有明确定义的初始化序列的清晰模块化结构代表了我们为在最近的将来由我们的用户和我们自己实现的扩展和定制准备的强大基础。下一步是为编辑器提供公共API,以便客户能够将自己的插件引入编辑器。
清洁工具
在处理项目时,您可以创建,复制,移动,继承,重命名和删除资产。结果,可以创建大量不必要的文件。
介绍Cleaner,这是一个工具,可以通过删除任何地方未使用的资产来优化项目并节省磁盘空间,以后不会在最终构建中使用。Cleaner还会检查丢失的资产,即GUID引用但在项目中不可用的资产。
清洁工可以为一般项目节省高达30%的磁盘空间,并且肯定会帮助您保持项目的整洁。
但是,不要太快地点击清除检测到的所有资产的全部删除,因为您可能会不可挽回地破坏您的项目!正确清理需要进行适当的分析,因此请小心谨慎,不要忘记阅读清洁工具文章以获取更多信息。
资产浏览器中的纹理转换(实验)
可以在项目中使用各种类型的纹理资源。但它们是否经过优化,还是浪费了宝贵的兆字节?在开发项目时,艺术家通常只是将大量纹理丢弃到资源浏览器而不考虑它们的大小(例如,重TGA纹理),因此您的项目的存储库可以增长到一个巨大的大小。稍后他们可能希望优化其纹理,但更改资产的类型(使用第三方DCC工具转换时)意味着更改其GUID,这需要进行许多其他相关更改。
资产浏览器中提供的新纹理转换功能将有所帮助!它不会在转换时更改资产GUID,从而保留所有必需的链接,并且可以将项目中使用的任何纹理资源转换为可用格式之一。
忽略guids.db的选项
有时,在团队合作开发的情况下,在使用UnigineEditor时,可能会将无效的guids.db文件提交到存储库(由于不正确的合并或其他原因)导致错误。因此,我们添加了一种能够通过-skip_guidsdb命令行参数忽略引擎忽略guids.db文件的 功能。在这种情况下,Engine会在数据文件夹中的所有.meta文件和所有已安装的外部目录和包中搜索GUID 。默认情况下,UnigineEditor使用此参数来避免错误,并始终重新生成guids.db文件以确保其有效性。
其他编辑器改进
其他编辑器改进列表包括以下内容:
- 改进的节点操纵器。
- 该渲染调试小组进行了扩展和现在通过以下渲染缓冲区快速可视化调试提供了更多的功能补充说:漫射照明,漫反射灯,氛围灯,SSGI,思考,亮点,立方体贴图,SSR。
- 修复了嵌套节点引用到FBX的导出问题。
- 修复了在缺少脚本文件的情况下从世界文件加载相机设置的问题。
- 修复了更改安装点路径时的崩溃问题。
- 修复了将材质指定给禁用曲面的问题。
- 修复了为PhysicalWater,PhysicalWind,PhysicalForce,PhysicalNoise和PhysicalTrigger保存物理掩码的问题。
- 现在为每个新的Persecutor Player创建一个默认目标节点。
- 修复了使用“ _m ”后缀导入纹理的问题。
- 为spinbox字段添加了算术运算。要使用操作,请在该字段中单击鼠标右键,然后在上下文菜单的“ 数学”组中选择所需操作,请输入一个值并单击“ 应用”。
- 修复了引擎视口处于活动状态时不允许克隆节点的问题。
- 修复了将Engine Viewport的状态保存到editor2.cfg文件的问题。
- 修复了在安装包含属性的文件夹的情况下,资产管理器在验证阶段生成的“资产无效”错误。
- 通过新的全部展开按钮,只需单击即可展开世界,属性和材料层次结构。
- 现在可以将所选节点的层次结构烘焙到网格集群。
- 修复了粒子系统参数列表中的“ 最大变暖时间”滑块。
- 修复了“ 颜色选择”对话框中的旋转框,现在您可以通过单击相应字段旁边的箭头图标并上下拖动来调整Alpha值。
- 修复了Video Grabber生成的EXR文件的错误伽玛值。
- 修复了删除材料层次结构时崩溃
- 修复了在打开和关闭某些现有参数后向Tracker添加新参数的问题。
- 修复了重新导入外部修改资产的问题(Linux)。
- 修复了重新导入源.FBX模型后错误选择网格的问题。
- 修复了以IGS格式为导入的模型分配材料的问题,以及与以FBX和STL格式导入模型相关的问题。
- 修复了更改物理(关节,形状)参数和禁用物理模拟后选择节点的崩溃问题。
- 修复了在场景包含GeodeticPivot对象的情况下在选择时重置网格坐标的问题。
- 修复了恢复滑块位置更改操作时修复了错误的撤消行为。
- 现在可以通过“ 世界层次结构”窗口中上下文菜单的“ 选择子节点”项轻松选择所有节点的子节点。
- 现在禁止在数据根目录中创建具有保留名称(例如核心,脚本,编辑器2)的用户文件夹或装入文件夹,如果通过资源管理器创建此类文件夹,则不会在资源浏览器中显示。在数据文件夹的子文件夹内,没有应用名称限制,资产浏览器将正确显示此类文件夹。
- 修复了编辑草对象蒙版的问题。
- 修复了更改Angle参数时材质的动画UV变换的错误行为。
- 修复了打开世界后声音变得不可用的预览问题。
- 修复了Iris 580 Pro GPU上场景视口中不正确场景渲染的问题。
- 启用/禁用节点和曲面的复选框现在支持多选:禁用一组曲面,选择它们并取消选中其中一个曲面。
- 现在,您可以通过右键单击任何资产并在上下文菜单中选择“在Explorer中显示运行时”来轻松查找任何资产的运行时文件。
- 现在可以从“ 设置”窗口直接控制各种渲染功能。
- 修复了在向场景添加新对象时,活动引擎视口抓取光标的问题。
- 修复Engine Viewport失去焦点后的持久GUI活动。
- 修复了在抓取基于轨道的视频序列后,无法在编辑器中更改节点位置的问题,并指定其在“ 跟踪器工具”中创建的移动。
- 您现在可以通过在World层次结构中慢速双击它来重命名节点。快速双击用于像以前一样关注节点。
- 现在,所有浮点数都显示为5位小数。
- 分配给所选对象的材料将在“ 材质层次结构”中自动选择。
- 您可以使用Ctrl按钮反转捕捉控件(网格,角度和比例)。
- 改进了PlayerSpectator和PlayerActor的 UI 。
- 删除了摄像机的转换锁。
IG更新
IG(图像生成器)应用程序模板是我们用于专业分布式仿真系统的即插即用组件,它继续发展并构建其功能。随着整体性能的提高,特别是由于多线程的广泛使用和稳定性,支持的通信协议列表已经扩展:现在支持分布式交互式仿真(DIS)(基本级别使用KDIS库v2.9.0,DIS_VERSION 7实现) )。
完整的更新集包括以下内容:
- 现在支持用户定义的CIGI数据包。
- 通过支持CIGI Maritime Surface Condition Control数据包实施全球水控制。
- 现在支持实体的海洋夹紧。
- 视线(LOS)请求现在支持材料掩模,使您能够考虑LOS段测试来包含或排除各种环境和文化特征。
-
改进的地形以上高度(HAT)/地形高度(HOT)请求现在也支持掩模。您可以指定交叉点蒙版以定义IG作为地形处理的内容。例如,当跑道或道路由网格对象表示时,这可能很有用。在这种情况下,您只需通过以下方式设置某个掩码:
源代码(C ++)<span style="color:#5f5f5f"><span style="color:#dddddd"><span style="color:#f8f8f2">ig_manager-> <span style="color:#f92672">设置</span> TerrainIntersectionMask(mask);</span></span></span>
然后为您想要被视为HAT / HOT的参考级别的所有网格设置此蒙版。弯曲地形的HAT / HOT误差是固定的。
- 实施CIGI Symbology数据包支持(Symbol Clone除外),使您能够创建和管理平视显示器(HUD)。目前不支持虚线。
- 现在,您可以在实体内定义任意碰撞体积(不仅仅是框和圆)。只需创建一个分配了物理主体和碰撞形状的模型,并将以下行添加到ig_config.xml文件中的实体定义部分:源代码(XML)
<span style="color:#5f5f5f"><span style="color:#dddddd"><span style="color:#f8f8f2"><span style="color:#f8f8f2">< <span style="color:#a6e22e">volume_definition </span> <span style="color:#66d9ef">id</span> = “1” <span style="color:#66d9ef">shape</span> = “shape_num” ></span> path_to_node <span style="color:#f8f8f2"></ <span style="color:#a6e22e">volume_definition</span> ></span></span></span></span>
- 添加了View同步。
- CIGI Connector插件现在在一个单独的线程中执行。
- 添加了内部Syncker初始化。
- 添加了在配置文件(ig_config.xml)中设置CIGI数据包大小的功能。
- 修复了收到无效数据包时崩溃的问题。
- 现在支持Syncker同步掩码。
- 固定使用FK5天体目录生成的广告牌所代表的恒星的亮度精度。
- 为大多数使用的属性添加了工具提示,以便您可以轻松获得所有必要的信息。
- 更新了文档的IG模板部分。
Syncker
Syncker多通道渲染系统还扩展了对多线程的使用,并进行了大量优化,从而提高了整体性能,使您能够为此添加更多功能。
向Syncker添加节点时,默认情况下会同步其所有参数(状态,材料,转换等)。但是,如果我们唯一需要的是节点的状态(例如,如果它被启用或禁用)呢?在这种情况下同步其他参数是浪费宝贵的资源,我们希望避免。引入同步掩码 - 一种灵活的机制,使您可以通过定义要同步的内容来优化负载。添加/创建节点时,您可以指定一个标志,用于定义要同步的参数(状态,转换等)。
通过一系列错误修复和改进,系统也变得更加强大,包括:
- 新增FieldAnimation,FieldHeight和ObjectParticles同步。
- 发送和接收UDP / TCP数据包已移至单独的线程。
- 删除了相机模型视图矩阵的同步。
- 修复了各种插补错误。
- 修复了与主站和从站上的节点ID冲突相关的问题。从站上的节点ID只能通过getSlaveNodeID()方法获得。
- 修复了与从站节点无效层次相关的错误。
- 修复了嵌套NodeReferences的问题。
- 添加了Microprofile集成,使您可以监控性能,检测瓶颈并消除它们。
- 新添加的显示器,投影仪和投影屏幕将自动将相应的索引添加到其名称中。
- 修复了在扭曲的引擎视口中显示的其他Syncker调试和颜色选择窗口的问题,现在它们作为单独的窗口打开,可以单独移动。
AppProjection
- 通过更改的二进制格式简化修改和迁移app_projection.cfg和* .proj文件到XML。
- Tab键可用于更改Projections Configurator中 UI元素之间的焦点。
- 从* .proj文件加载的设置将应用于当前选定的投影。
- 改进的C ++和UnigineScript API:Projections配置器的所有功能都可以通过代码获得。
- 所述getBorders()方法是由替换getBorderBlend() 。
- 添加了通过单击相应的参数名称将拐角的亮度值和蒙版参数重置为默认值的功能。
新内容样本
以下内容示例已添加到Samples演示程序包中:
- 缓存的阴影。
- 使用贴花投影粒子。
- 使用带有蒙皮网格的粒子。
- 使用场,贴花和粒子系统来创建对水面的影响。
- 使用“环境探测器的阴影剪切”选项剪切遮挡的反射。
- 环境探针的添加剂混合。
更新炼油厂演示
我们在Oil Refinery演示中修改了逻辑系统,为您提供更多自由。它使用预制的逻辑组件和任何可用资产展示了一系列定制培训任务和测试场景。现在你可以用同样的方式生成自己的任务。
逻辑确保的活动范围涵盖培训期间所需的所有基本操作:打开和关闭设备,打开和关闭门,检查设备以检查状态或添加缺失的项目。使资产互动以参与活动。
您的任务可以有两种模式:训练和测试。在训练模式中,由交互式提示引导的玩家遵循清单中剪贴板上提到的活动列表。测试模式提供故障并允许模拟故障的负面后果以增加可信度。
此外,您可以使用可用逻辑组件的各种组合创建任意数量的紧急情况。
行星与地形的进步
我们在家中直接使用更新的地形系统的所有运行时功能和完整的圆形地球解决方案。在我们为您提供这些功能之前,唯一剩下的就是完成工具集并使其高效且易于使用。这正是我们的工具团队目前关注的重点。但我们最近的估计表明,为了将这些功能纳入2.8,我们必须推迟发布日期。这将是不公平的,因为必须保持许多改进。因此我们决定及时将它们发布为2.8,并且包括两个新开发的对象以及在2.9尽快完美抛光的适当工具集。