Galacean Engine v0.9 officially released.
Engine in terms of rendering, shadow supports CSSM, which can support medium and large scene rendering, bringing better performance and rendering effects. Text has added custom font loading. Shader supports multi-pass, making it easier to write multi-pass effects. In terms of animation, Animator supports arbitrary target property animation, further enhancing animation management and driving capabilities. Input supports multi-pointer event callbacks, making it easier to write multi-touch logic. Additionally, features such as sky, mesh, and asset loading have been strengthened to varying degrees.
Engine Toolkit **adds Navigation Gizmo to efficiently control camera movement, Infinity Grid material to draw infinitely large grid planes, Sketch Geometry to draw model wireframes, normals, tangents, and bitangents. Auxiliary Lines supports rendering bounding box auxiliary line drawing, and the original Gizmo and Control components have been refactored.
The original shadow system of the engine has been completely redesigned and adjusted to Cascaded Stable Shadow Map (CSSM) stable cascaded shadows, greatly improving the shadow rendering quality and performance of medium and large scenes, and providing multiple quality configurations for developers to make targeted downgrades. At the same time, this shadow system will automatically select the best system implementation based on WebGL2 or WebGL1.
For scenes pursuing physical realism, combining PBR materials and physical simulation can achieve very realistic interactive effects:
However, in the above scenes, if the material is transparent, it cannot receive any shadows. Sometimes you may want to add a transparent shadow receiver, such as embedding a real-time rendered model in an AR scene. In this case, you can reuse the refactored shadow shader module to achieve custom shadow rendering. As shown in the figure below, the background image is obtained by offline rendering, and a transparent plane is added to receive shadows, making the real-time rendered object better integrated into the scene:
The Font
font has added support for custom font formats such as ttf, otf, and woff. By using custom fonts, you can smooth out the display differences of system fonts on different platforms and provide cooler and richer text styles for the project.
Shader now supports multiple passes, allowing a single Shader to contain multiple shading passes. This makes it easier for developers to write multi-pass shader effects without needing to add extra Renderer
, focusing more on the creation of the Shader itself. More capabilities will be added in the future to help developers improve their Shader creation efficiency.
ModelMesh
has added the calculateTangents
method. For models without tangent data, this method can be used to calculate tangent information, thus supporting the use of the TBN matrix to calculate normal directions in shaders. All built-in PrimitiveMesh
in the engine now include tangent data. Additionally, the issue of losing w
data when uploading line data has been fixed, allowing shaders to correctly calculate the value of the binormal.
The rendering logic related to the sky has been reorganized, fixing the issue of skybox rendering under orthographic cameras. It also avoids the problem of the skybox being culled on some devices due to calculation precision. Additionally, users can now write sky shaders more naturally without needing any special handling in the shader.
Animator
now supports custom AnimationClip
target properties. Previously, only built-in animations in glTF models, such as skinning animations and blend shape animations, could be used. Now, you can customize the animation of any component property through AnimationClip
, such as the position of lights, material colors, camera positions, and angles. The management and driving capabilities of Animator
have also been generalized from being customized.
SkinnedMeshRenderer
has added localBounds
and rootBone
properties, providing developers with a more precise mechanism for updating the bounding box of skinned models. When the default bounding box is not sufficient, the local bounding box and its following root bone can be manually adjusted.
The Collidershape
in physics now supports setting rotation properties, allowing for more flexible combinations of basic geometric colliders to construct composite collision boxes. For example, the following case of a ring collider composed of capsules:
After the update, each Pointer maintains independent logic and handles its own touch events separately. Additionally, the Pointer that triggered the action can be directly obtained in the callback function of the Pointer, allowing for simpler logic to achieve multi-touch capabilities.
Loader
loading Texture
supports format
and mipmap
configuration parameters.Loader
loading glTF
supports the keepMeshData
configuration parameter, which can retain CPU model data.Entity
has added the siblingIndex
property, allowing for quick adjustment and retrieval of its position in the parent entity's child queue.Texture
has added the depthCompareFunction
property, which can set its sampling comparison mode when the texture is a depth texture, typically used for shadow effects like ShadowMap.ShaderData
has added getProperties
and getPropertyValue
methods, allowing developers to obtain all set shader properties and values.glTF
parsing has added sub-asset mode.glTF
parsing has added texture filtering mode.Animator
has added default animation configuration.Gizmo has been completely refactored, and the API for developers has been optimized for more responsive operations. The overall style has been adjusted for easier selection. New anchor point options (center/pivot) and coordinate system options (world/local) have been added, supporting the selection of multiple entities simultaneously. Additionally, a composite mode has been added, integrating translation, rotation, and dragging.
Unlike Gizmo, the new Navigation gizmo allows for more convenient camera dispatching in visual, keyboard-free operation scenarios. It provides a function to switch between three views, allowing the scene camera to move around a specific point with a simple drag. It also synchronizes the scene camera's orientation in space in real-time, making it easier for users to observe.
This material renders an infinitely large grid directly in screen space and supports grids in both 2D space (x-y plane) and 3D space (x-z plane). It allows switching between the two types of grids.
Since WebGL does not have a geometry shader, rendering auxiliary views such as mesh wireframes, normals, tangents, and bitangents is challenging. Users often need to visualize this model data to check the accuracy of model assets and shaders. Version 0.9 of the Toolkit adds rendering of this data and supports GPU skinning animation and GPU vertex animation in the engine. The implementation is based on converting the entire Mesh into a texture, allowing the shader to easily obtain the global data of the model, thus converting the vertex shader into a general GPGPU computing unit.
If the WeChat QR code is invalid, you can add the group admin on WeChat: zengxinxin2010