Galacean Engine v0.9 正式发布。
Engine 在渲染方面阴影支持了 CSSM ,可支持中大场景渲染,并带来了更好的性能和渲染效果。文字新增了自定义字体加载。Shader 支持了多 pass,编写多 pass 效果更简单。动画方面 Animator 支持了任意目标属性动画,进一步加强了动画管理和驱动能力。Input 支持了多 Pointer 事件回调,编写多点触控逻辑更简单。另外天空、Mesh、资产加载等功能均有不同程度的加强。
Engine Toolkit** **新增 **Navigation Gizmo **支持高效控制相机运动,Infinity Grid 材质绘制无限大小的网格平面,**Sketch Geometry **绘制模型线框,法线,切线和副法线。Auxiliary Lines 支持渲染包围盒辅助线绘制,原有的 Gizmo 和 Control 组件均进行了重构。
完整重新设计了引擎原有的阴影系统,调整为 Cascaded Statble Shadow Map (CSSM) 稳定性级联阴影,大幅提升了中大型场景的阴影渲染质量和性能,并且还提供了多种质量配置,方便开发者针对性做剃度降级。同时该阴影系统还会自动根据 WebGL2 或 WebGL1 选择最佳的系统实现。
对于追求物理真实的场景,结合 PBR 材质和物理模拟可以获得非常逼真的交互效果:
但在上述场景下,材质如果是透明的则无法接收任何阴影。有时候会希望增加一个透明的阴影接受物,例如在 AR 场景中嵌入一个实时渲染的模型。在这种情况下,可以复用经过重构后的阴影着色器模块,从而实现自定义阴影渲染。如下图背景图由离线渲染得到,加入一块透明平面接受阴影,可以使得实时渲染的物体更好加入到场景中:
Font
字体新增了 ttf、otf 和 woff 自定义字体格式的支持,通过自定义字体抹平系统字体在不同平台下的显示差异,也可以给项目提供更酷炫丰富的文字样式。
Shader 新增多 pass 能力,一个 Shader 可包含多个着色 pass ,方便开发者编写多 pass shader 效果,无需像之前新增额外的 Renderer
,更专注于 Shader 本身的创作。未来还会投入更多能力帮助开发者提升开发者创作 Shader 效率。
ModelMesh
新增 calculateTangents
方法,对于没有切线数据的模型,可以通过该方法计算切线信息,以此在着色器中支持使用 TBN 矩阵结合法线贴图计算法线方向。目前引擎内置的 PrimitiveMesh
均已增加切线数据。另外,修复了线数据上传时丢失 w
数据的问题,使得着色器中可以正确的计算出副法线的值。
重新整理了天空相关的渲染逻辑,修复了在正交相机下天空盒的渲染问题。同时规避了在某些机型上,因为计算精度造成的天空盒被剔除的问题。另外对于天空 Shader 编写,用户可以更加自然的编写天空着色器,不需要在着色器中做任何特殊的处理。
Animator
新增自定义 AnimationClip
目标属性的能力,以前只能使用 glTF 模型内置的动画,如蒙皮动画和 Blend Shape 动画。现在可以通过 AnimationClip
自定义任意组件属性的动画,比如灯光的位置、材质颜色、相机位置和视角等。Animator
对动画的管理和驱动能力也从定制化变为通用化。
SkinnedMeshRenderer
新增 localBounds
和 rootBone
属性,为开发者提供了更精准的蒙皮模型渲染包围盒更新机制,当默认包围盒不满足时还可以手动调整局部包围盒和其跟随根骨骼。
物理的 Collidershape
支持设置旋转属性,可以更加自由的组合基础几何碰撞器构造复合碰撞盒,例如以下通过胶囊组成的圆环碰撞器案例:
更新后每个 Pointer 保持独立逻辑,并单独处理各自的触控事件,同时在 Pointer 的回调函数中可以直接拿到触发此动作的 Pointer,因此我们可以使用更简单的逻辑实现多点触控能力。
Loader
加载 Texture
支持 format
和 mipmap
配置参数。Loader
加载 glTF
支持 keepMeshData
配置参数,可保留 CPU 模型数据。Entity
新增 siblingIndex
属性,可快捷调整和获取其在父 entity 子队列中的位置。Texture
新增 depthCompareFunction
属性,当纹理为深度纹理时可设置其采样比较模式,通常用于 ShadowMap 等阴影效果实现。ShaderData
新增 getProperties
和 getPropertyValue
方法,开发者可获取其所有已设置的着色属性和值。glTF
解析新增了子资产模式。glTF
解析新增了纹理过滤模式。Animator
新增默认动画配置。Gizmo 进行了完整的重构,并且优化开发者调用的API,操作更跟手。整体样式调整,便于选择。新增锚点选项(center/pivot),和坐标系选项(world/local),支持同时选中多个实体。并且增加了复合模式,集位移、旋转、拖拽为一体。
和 Gizmo 不同,新增 Navigation gizmo 可以在可视化、无键盘操作的场景中更加方便地调度相机相。它提供切换三视图功能,简单拖拽即可使得场景相机绕特定点移动。并且实时同步场景相机在空间中的方位,方便用户观察。
该材质在直接在屏幕空间中渲染无穷大的网格,同时该材质同时支持2D空间(x-y平面)和3D空间(x-z平面)中的网格。支持两种网格之间的切换。
由于 WebGL 没有几何着色器,因此渲染网格线框,法线,切线,副法线等辅助视图比较困难。用户常需要可视化这些模型数据以检查模型资产和着色器的准确性。0.9 版本的 Toolkit 新增这些数据的渲染,并且支持引擎当中的 GPU 蒙皮动画,GPU 顶点动画。实现的方法基于将整个 Mesh 转换成一张纹理,由此着色器可以很容易得到模型的全局数据,由此将顶点着色器转换成通用的 GPGPU 计算单元。
如果微信二维码失效,可添加群管理员微信:zengxinxin2010