Hi to all,
Today we have finally released the new major update to S2ENGINE 2020.1 version.
Despite of the name this is the last version of the engine :D.
IMPORTANT: READ CAREFULLY BEFORE UPDATE
If the first time you start the engine after updating, the message "cannot find Physics DLL" appears, DO NOT WORRY, this is probably due to a local backup of the old configuration that refers to the old physics library.
To Solve the problem simply go to "Steam\steamapps\common\S2ENGINE HD\ver_1_4_6\Bin" folder and delete the file "S2Engine.bak"
There are a lot of new things in this version since about 8 months have passed after the last major update.
The most important update regards the physics engine. We have completely rewritten the physics passing from the old Physx 2.8 to the Physx 3.3 version.
This resulted in a number of improvement listed below:
- The annoying "Cannot Initialize Physics" problem that affected a number of new installations of the engine is definitely gone :D.
- Now, when you scale a static object owning a mesh collider, the collider will scale accordingly.
- Convex Hull support. Now you can make the system to automatically create a convex hull mesh as a collider of a dynamic rigid body (including vehicles).
- The vehicle physics has been heavily improved. It is much more realistic and better responding than the previous. Furthermore now there is more vehicle data available (speed, gears, tire stiffness) that it is possible to create a HUD like in racing games.
- The buoyancy system has been greatly improved. Unlike before, now the buoyancy force is applied on a number of points along the rigid body, this produces much more realistic responce to the water surface. Furthermore, when on the sea, now the ridig body follows the waves movement.
- Now UniversalJoint can be attached to a node of a hierarchy (like in skeletal models) and can be breakable (even if this is an experimental feature). In general it is much more easy to setup and robust than before.
- Even ragdolls now are much more stable and configurable. You can, for example, via gameMachine, setup the number of iterations physics must do for getting stability, or you can make ragdoll to affect only a branch of a skeletal model, for example the hair ponytail of a human character or the tail of a monster character (even if it is an experimental feature).
- Character controller interaction with rigid bodies has been improved. Now characters can push small, light bodies (including ragdoll bones) without being affected by their weight, resulting in a much smoother and stable movement.
Furthermore, unlike before, you can make a kinematic animated rigid body (for example an opening door) to push away a colliding character (like a player that is too close to an opening door).
A couple of improvements have been made about the rendering of some screen-space effect.
- Improved Motion Blur. It was not so much evident but in the previous version there were some artifacts when 2 moving objects, with motion blur, overlapped on screen or when a moving object was overlapped by a static one. In this update the way in which the velocity buffer, used for the motion blur, is created has been partially rewritten. Now the dynamic objects affected by the motion blur are drawed only one time directly into the Gbuffer. The new code makes the velocity buffer creation to be faster and to avoid these artifacts. A velocity buffer made in a such way opened us the possibility to implement a temporal filter that we used for improving other screen-space effects (SSR and SSGI) and that we'll use for improving Anti-Aliasing in future releases.
- Improved SSGI. In this version the Screen Space Global Illumination has been heavly improved using 3 new filters we have implemented and shared among screen-space effects:
- a new temporal filter shader.
- a new spatial depth/normal aware filter shader.
- a new upscaling filter shader.
As showed into the following image, the current version of SSGI is much more effective in diffuse reflection of colors and much more free from noise artifacts:
A side effect of the new SSGI is that automatically the screen space ambient occlusion quality has increased.
- Improved SSR. Screen Space Reflections completely changed from previous version. In particular we have tried to better address the responce of reflections to the roughness of a surface. We have left the previous pseudo screen-space cone tracing approach, that was a bit faster but rich of artifacts that pratically made it unuseful, in favour of a stochastic approach (more than one ray is traced per sample using a random pattern and a perturbation vector that increases with the roughness of the surface). This was possible thanks to the 3 new filter shaders, temporal, spatial and upscale, that let us to distribute the samples over many frames and at a reduced resolution.
In addition, the new effect blends with cubemap reflection in a better way than the previous one.
The following GIIF shows how the SSR looked changing the roughness in the previous version:
The following GIIF shows how the SSR looks changing the roughness NOW:
- Improved sun soft shadows. In the previous version sun soft shadows, at the highest quality, was affected by a lot of disturbing and filckering noise. In this version we have changed the sampling of the noise pattern (from shadow space to screen space) and added a depth/normal aware spatial filter that changes blur radius basing on the penumbra radius of the shadow.
The combination of these 2 changes greatly reduces the noise even with big penumbra radius (open in new tab for large image):
- Fixed Shadow leaking. In the previous version there was an undue leaking of local light shadows expecially visible on scattering surfaces. In this version we have introduced a new parameter "angle bias" that helps to almost completely remove the artifact, as showed into the following "before-after" images:
In order to show the new vehicle system we have added a new reacing project into the basic engine package.
There you will find some new models for populating terrains and the HUD and gameMachine for playing with a vehicle as in a racing game.
We have also improved a bit the city scene in the BuildingGenerator package.
New road textures, new color correction settings and improved night illumination thanks to a new type of light we called FillLight.
FillLights are "no shadow casting" lights that are rendered after the ambient light pass and before the ambient occlusion pass, so they are affected by ambient occlusion shadows.
Easy Game Pack
We are continuing to hardly improve the Easy Game Pack DLC.
This time we have:
- Improved the player character crouch (thanks to new physics :D).
- Added GraspableBody, a new kind of rigid body that is graspable by the player character:
- Added MissionCounter and Mission List. These definitely improve the mission managing in the EasyGamePack.
In the previous version a mission had to be completed before starting a new one, in a linear fashion.
Now you can create missions that can be completed in parallel, without a pre-defined order.
Furthermore, using the new object "MissionCounter", a mission or a set of missions can be "activated" when another group of missions has been completed.
So you can have many counters that manage different set of missions to be completed in parallel or set of missions dependent by other set of missions and so on.
At any time the player inventory can show the list of all missions to be completed in a new "missions" tab.
Other minor improvements and additions have been made as well as Bugfixes and crashfixes.
Here is the release notes list:
- [BUGFIX] if a void grass object is inserted into the scene the engine crashes
- [BUGFIX] In some circumstances Procedural tiles disappear from a scene with it is reloaded
- [BUGFIX] Engine crashes when changing dim parameters of a .sk2 object in the Physics section of the Class panel
- [BUGFIX] Engine crashes when selecting dropdown menu in AnimationTrack panel when Model viewport is not the focused window
- [BUGFIX] Engine crashes when setting tiledim for floor object to a value higher than 2000 and then toggling face visibility
- [BUGFIX] Engine crashes when setting wallheight for floor object to less than 1
- [NEW] Added new "EnableInput" action in GameMachine
- [IMPROVEMENT] Improved SSGI rendering
- [BUGFIX] IsVisible, CAstShadows, AffectMB flags in model editor don't work
- [IMPROVEMENT] Auto normalization of vertex weights when importing skin models (useful when exporting from blender)
- [NEW] Added parameter "CollideToCharacters" in RigidBody (useful for kinematic bodies)
- [NEW] Added shadowmap "angleBias" parameter in Light and staticLight object classes for improving shadowmap artifacts solving
- [NEW] Added parameter "AOoverLights" for controlling the Ambient Occlusion stage (before or after lights pass)
- [IMPROVEMENT] Now SSAO result is merged with VoxelLightmap result and mixed with the sky saturation for adding colours to Sky Occlusion gradient
- [NEW] Added new method for computing the Ambient Occlusion of the whole terrain in the TerrainOcclusion pass
- [IMPROVEMENT] New alert message after importing a skeletal model if there are vertices with no bone weights.
- [BUGFIX] Crash when setting Flocks object height or radius to 0
- [BUGFIX] when more than one material with emit map are in the scene and one materialis animated, the texture coordinates of the emission map of the other materials are corrupted.
- [BUGFIX] When launcher doesn't find any project crashes
- [IMPROVEMENT] Emissive materials now can be applied also to skinned models
- [BUGFIX] In some cases, alpha blend materials aren't rendered well if applied on skinned models into the model viewport.
- [NEW] Added "UpdateOneShotAnimation" action to GameMachine
- [NEW] Added parameter Binary to "SetCollisionMask" action in GameMachine
- [NEW] Added parameter "soundPitch" to "Switch" object class
- [NEW] Added parameter "affectedObjects" to "Light" object class
- [BUGFIX] Alpha blend skinned material do not reflect lights
- [BUGFIX] Motion blur dynamic object artifacts fixed
- [NEW] Added AlbedoBrightness and AlbedoContrast parameters into the texture editor.
- [NEW] Added Buoyancy physics parameters into scene objects.
- [NEW] Added BuoyancyLinearDamping and BuoyancyAngularDamping physics parameters into scene objects.
- [NEW] Added WaterMask physics parameters into scene objects.
- [NEW] Added LinearDamping and AngularDamping physics parameters into scene objects.
- [NEW] Added buoyancyStrength physics parameter into scene objects.
- [NEW] Added buoyancySliceCount physics parameter into scene objects.
- [NEW] Added buoyancyOffset physics parameter into scene objects.
- [NEW] Added PhySetLinearDamping action in GameMachine
- [NEW] Added PhyGetLinearDamping action in GameMachine
- [NEW] Added PhySetAngularDamping action in GameMachine
- [NEW] Added PhyGetAngularDamping action in GameMachine
- [NEW] Added PhyRagdollSetAngularDamping action in GameMachine
- [NEW] Added PhyRagdollSetLinearDamping action in GameMachine
- [NEW] Added SetMusicGain action in GameMachine
- [NEW] Added PhyRagdollEnableBuoyancy action in GameMachine
- [IMPROVEMENT] Improved Screen space reflections
- [IMPROVEMENT] Improved hi quality sun soft shadows rendering
- [IMPROVEMENT] Improved camera shaking effect
- [BUGFIX] Dynamic Reflection Cubemap Shadows update flickering when changing time of day
- [BUGFIX] Refractive rain becomes black at low altidune when rendering ocean
- [IMPROVEMENT] Added search in PickWidget dialog
- [IMPROVEMENT] Added search in PickNode dialog
- [IMPROVEMENT] A-Z sorting for items in event parameter combobox
- [NEW] Added FillLight object class
- [BUGFIX] DDS textures rename or MoveTo make texture to disappear.
- [IMPROVEMENT] Speeding up dynamic cube reflection shadows rendering by using the same shadowmap of the main viewport.
- [IMPROVEMENT] Speeding up the sun shadowmap rendering submission by re-organizing the cascade splits distributed update.
- [IMPROVEMENT] Improved PlayerCharacter Crouch
- [NEW] Added Rigid Body grabbing
- [NEW] Added MissionCounter object class
- [NEW] Added missions list tab into the player inventory
During these days I've planned to publish a couple of tutorials about setting up a vehicle and about setting up missions in EasyGamePack.
From the next week the first thing to do now is finishing the new manual.
Finally It will contain approximately all you have to know about the engine. I think I'll spend a couple of months for doing this (less more at full time, the rest of the time I'm busy with HELLSEED).
Then the key word will be "optimization". Developing the 2021.1 version I'll spend almost all the time in trying to optimize the code by starting to work at the following objectives:
- Massive multithreading for optimizing CPU-GPU synchronization.
- New strategies for Drawcalls reduction.
- Increasing use of Compute and Geometry shaders.
- Existing shaders optimization.
During these months I've worked very hard expecially with the new physics. It is not perfect but I'm satisfied for now.
I've also started to organize and write the new manual with a new tool that makes things faster and will help me a lot in future if I need to make changes or additions.
I've done a lot of research on new rendering techniques and multithreading for the current and the future releases.
The way to the perfection is still long but the journey is beautifull thanks to this fantastic growing community :D
Thank you to all for the support and care that you show every day to have for me and my engine.
Enjoy and stay tuned!