Skip to content

Commit

Permalink
Add more rendering goodies and a screenshot
Browse files Browse the repository at this point in the history
  • Loading branch information
YuriSizov committed Oct 11, 2023
1 parent 8de2ebb commit 64f6bc7
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 1 deletion.
8 changes: 7 additions & 1 deletion collections/_article/dev-snapshot-godot-4-2-beta-1.md
Original file line number Diff line number Diff line change
Expand Up @@ -255,6 +255,12 @@ For the rendering team the name of the game this time around is "Go big, or go h

It's hard to pick where to start, but performance improvements across the board definitely deserve a mention. Splitting of raster barriers into vertex and fragment components aims to improve performance on mobile devices ([GH-77420](https://github.com/godotengine/godot/pull/77420)). Noise textures receive an optimization ([GH-80407](https://github.com/godotengine/godot/pull/80407)), and so does the depth prepass ([GH-80070](https://github.com/godotengine/godot/pull/80070)). Shader loading and compilation times should see an improvement thanks to ShaderRD compilation groups ([GH-79606](https://github.com/godotengine/godot/pull/79606)).

Another major optimization in this release comes from two changes to how the engine stores meshes ([GH-81138](https://github.com/godotengine/godot/pull/81138)). A different approach in the memory layout of vertex data, separating positions from normals and tangents, should improve performance on mobile devices and, in some situations, on desktop as well. A new compressed option reduces bandwidth requirements, which can result in performance gains in bandwidth limited scenarios.

Importantly, these changes were implemented without breaking compatibility. The engine will automatically upgrade older meshes to the newer format. However, this is a one-way conversion. Meshes that have been imported in 4.2 beta 1 or later will no longer be compatible with older version of Godot, and will require re-importing, should you choose to go back to 4.1.x or earlier.

![A compute texture demo from the official collection of Godot demos](/storage/blog/godot-4-2-beta/compute-shader-textures.webp)

If you are using compute shaders, a pair of goodies should make your life way more exciting. First is the newly added ability to create custom texture objects ([GH-79288](https://github.com/godotengine/godot/pull/79288)). You can see how it works in practice to create water effects with this [soon-to-be merged compute texture demo](https://github.com/godotengine/godot-demo-projects/pull/938). And another submission adds a set of APIs to call compute code on the render thread, for cases when you need to synchronize compute shaders and rendering ([GH-79696](https://github.com/godotengine/godot/pull/79696)).

A prominent bug has been fixed, which caused a crash if you went over 204 lights, decals, and reflection probes, combined ([GH-80845](https://github.com/godotengine/godot/pull/80845)). This issue stopped users from fully flexing the strength of the Forward+ renderer, but now they are free to use up to 512 of each entity type in the default configuration (this limit can be increased). And the built-in glow effect has been improved, making its visuals closer to the high quality look from Godot 3.x ([GH-82353](https://github.com/godotengine/godot/pull/82353) by [Raffaele Picca](https://github.com/RPicster)).
Expand Down Expand Up @@ -283,7 +289,7 @@ It's now possible to directly animate velocity over life, inherit projectile vel

On the more technical side of things, both GPU and CPU particles now have a dedicated signal for when they are finished with emission and simulation ([GH-76853](https://github.com/godotengine/godot/pull/76853), [GH-76859](https://github.com/godotengine/godot/pull/76859) by [HolonProduction](https://github.com/HolonProduction)). This can be extremely useful for animations that require a precise order of operations.

The CPU particle system exists as a fallback for less capable and less powerful devices, but with modern hardware the need for it is significantly reduced. Specifically for the time when you decide to move to GPU particles, which offer way more functionality, especially with the aforementioned rework, there is now a built-in tool to convert CPU particles to their GPU equivalent ([GH-80779](https://github.com/godotengine/godot/pull/80779) by [Yuri Rubinsky](https://github.com/Chaosus)).
Please note, that the aforementioned changes to GPU particles mark the point where they start to deviate from CPU particles. This means that in the future more GPU-only features are going to be implemented, leaving CPU particles as a low-cost, simplified alternative, and not a direct 1-to-1 equivalent. GPU particles are supported by all rendering backends in Godot 4, and we encourage users to move towards using them. To aid in that transition, there is now a built-in tool to convert CPU particles to their GPU equivalent ([GH-80779](https://github.com/godotengine/godot/pull/80779) by [Yuri Rubinsky](https://github.com/Chaosus)).

#### Shaders

Expand Down
Binary file not shown.

0 comments on commit 64f6bc7

Please sign in to comment.