简体中文
简体中文
Galacean Engine v0.9 发布

Galacean Engine v0.9 发布

Bo Kou
November 08, 20229 min read

Galacean Engine v0.9 正式发布。

Engine 在渲染方面阴影支持了 CSSM ,可支持中大场景渲染,并带来了更好的性能和渲染效果。文字新增了自定义字体加载Shader 支持了多 pass,编写多 pass 效果更简单。动画方面 Animator 支持了任意目标属性动画,进一步加强了动画管理和驱动能力。Input 支持了多 Pointer 事件回调,编写多点触控逻辑更简单。另外天空Mesh资产加载等功能均有不同程度的加强。

Engine Toolkit** **新增 **Navigation Gizmo **支持高效控制相机运动,Infinity Grid 材质绘制无限大小的网格平面,**Sketch Geometry **绘制模型线框,法线,切线和副法线。Auxiliary Lines 支持渲染包围盒辅助线绘制,原有的 GizmoControl 组件均进行了重构。

Engine

阴影更新

完整重新设计了引擎原有的阴影系统,调整为 Cascaded Statble Shadow Map (CSSM) 稳定性级联阴影,大幅提升了中大型场景的阴影渲染质量和性能,并且还提供了多种质量配置,方便开发者针对性做剃度降级。同时该阴影系统还会自动根据 WebGL2 或 WebGL1 选择最佳的系统实现。

左:四级联阴影,右:无级联阴影

对于追求物理真实的场景,结合 PBR 材质和物理模拟可以获得非常逼真的交互效果:

Nov-04-2022 08-36-07.gif

但在上述场景下,材质如果是透明的则无法接收任何阴影。有时候会希望增加一个透明的阴影接受物,例如在 AR 场景中嵌入一个实时渲染的模型。在这种情况下,可以复用经过重构后的阴影着色器模块,从而实现自定义阴影渲染。如下图背景图由离线渲染得到,加入一块透明平面接受阴影,可以使得实时渲染的物体更好加入到场景中:

Oct-31-2022 13-47-49.gif

文字更新

Font 字体新增了 ttf、otf 和 woff 自定义字体格式的支持,通过自定义字体抹平系统字体在不同平台下的显示差异,也可以给项目提供更酷炫丰富的文字样式。

image.png

着色器更新

Shader 新增多 pass 能力,一个 Shader 可包含多个着色 pass ,方便开发者编写多 pass shader 效果,无需像之前新增额外的 Renderer,更专注于 Shader 本身的创作。未来还会投入更多能力帮助开发者提升开发者创作 Shader 效率。

网格更新

ModelMesh 新增 calculateTangents 方法,对于没有切线数据的模型,可以通过该方法计算切线信息,以此在着色器中支持使用 TBN 矩阵结合法线贴图计算法线方向。目前引擎内置的 PrimitiveMesh 均已增加切线数据。另外,修复了线数据上传时丢失 w 数据的问题,使得着色器中可以正确的计算出副法线的值。

天空更新

重新整理了天空相关的渲染逻辑,修复了在正交相机下天空盒的渲染问题。同时规避了在某些机型上,因为计算精度造成的天空盒被剔除的问题。另外对于天空 Shader 编写,用户可以更加自然的编写天空着色器,不需要在着色器中做任何特殊的处理。

动画更新

Animator 新增自定义 AnimationClip 目标属性的能力,以前只能使用 glTF 模型内置的动画,如蒙皮动画和 Blend Shape 动画。现在可以通过 AnimationClip 自定义任意组件属性的动画,比如灯光的位置、材质颜色、相机位置和视角等。Animator 对动画的管理和驱动能力也从定制化变为通用化。

customAnimationClip.gif

SkinnedMeshRenderer新增 localBoundsrootBone 属性,为开发者提供了更精准的蒙皮模型渲染包围盒更新机制,当默认包围盒不满足时还可以手动调整局部包围盒和其跟随根骨骼。

198267094-5431deee-5e3d-4f55-990c-16477b498523.gif
198264197-f06817d3-287a-4199-9586-5bb292500d52.gif

物理更新

物理的 Collidershape 支持设置旋转属性,可以更加自由的组合基础几何碰撞器构造复合碰撞盒,例如以下通过胶囊组成的圆环碰撞器案例:

利用胶囊体复合环状碰撞器

交互更新

更新后每个 Pointer 保持独立逻辑,并单独处理各自的触控事件,同时在 Pointer 的回调函数中可以直接拿到触发此动作的 Pointer,因此我们可以使用更简单的逻辑实现多点触控能力。

merge.gif

其他更新

  • Loader 加载 Texture 支持 formatmipmap 配置参数。
  • Loader 加载 glTF 支持 keepMeshData 配置参数,可保留 CPU 模型数据。
  • Entity 新增 siblingIndex 属性,可快捷调整和获取其在父 entity 子队列中的位置。
  • Texture 新增 depthCompareFunction属性,当纹理为深度纹理时可设置其采样比较模式,通常用于 ShadowMap 等阴影效果实现。
  • ShaderData 新增 getPropertiesgetPropertyValue方法,开发者可获取其所有已设置的着色属性和值。
  • glTF 解析新增了子资产模式。
  • glTF 解析新增了纹理过滤模式。
  • Animator 新增默认动画配置。

Toolkit

Transform Gizmo

Gizmo 进行了完整的重构,并且优化开发者调用的API,操作更跟手。整体样式调整,便于选择。新增锚点选项(center/pivot),和坐标系选项(world/local),支持同时选中多个实体。并且增加了复合模式,集位移、旋转、拖拽为一体。

gizmoooo.gif

和 Gizmo 不同,新增 Navigation gizmo 可以在可视化、无键盘操作的场景中更加方便地调度相机相。它提供切换三视图功能,简单拖拽即可使得场景相机绕特定点移动。并且实时同步场景相机在空间中的方位,方便用户观察。

navigationGizmo.gif

无穷网格材质

该材质在直接在屏幕空间中渲染无穷大的网格,同时该材质同时支持2D空间(x-y平面)和3D空间(x-z平面)中的网格。支持两种网格之间的切换。

Oct-31-2022 14-13-14.gif

线框渲染模式与法线,切线,副法线渲染

由于 WebGL 没有几何着色器,因此渲染网格线框,法线,切线,副法线等辅助视图比较困难。用户常需要可视化这些模型数据以检查模型资产和着色器的准确性。0.9 版本的 Toolkit 新增这些数据的渲染,并且支持引擎当中的 GPU 蒙皮动画,GPU 顶点动画。实现的方法基于将整个 Mesh 转换成一张纹理,由此着色器可以很容易得到模型的全局数据,由此将顶点着色器转换成通用的 GPGPU 计算单元。

Oct-31-2022 14-23-48.gif

如何联系我们

Galacean Engine 开源社区群 (钉钉):

JPG.png

Galacean Engine 开源社区群 (微信):

image.png

如果微信二维码失效,可添加群管理员微信:zengxinxin2010

Galacean Logo
Make fantastic web apps with the prospective
technologies and tools.
Copyright © 2024 Galacean
All rights reserved.