Announcing rg3d 0.20

I'm happy to announce that rg3d 0.20 has been released. This release contains a lot of new features and improvements. The most large are WebAssembly support, initial 2D support and multi-layer terrains.

Terrain

Let's start from the engine, there are 182 new commits compared to 0.19 and here's the most interesting changes:

# rg3d

  • WebAssembly support - check this online demo (opens new window)
  • Initial 2D support - with lighting and physics (check it by cargo run --example 2d --release)
  • Multi-layer terrains - now you can create outdoor scenes as you would in many other game engines - check example by cargo run --example terrain --release
  • Added Framework which hides engine initialization and a game loop, all you need to do to start writing your game is to implement GameState trait for your game structure - here (opens new window) is the minimal example. Some examples have been refactored to use Framework, so can be used as a guide.
  • Changed a way of setting shader uniforms - now it uses closure instead of set of enum variants which is a lot faster.
  • Added Save mode for FileSelector and FileBrowser widgets - no need to type file name manually at the end of the path text box - there is separate "File name" field for that.
  • Immediately load requested textures to GPU to prevent huge lag on first frame.
  • Changed selection behaviour for TreeWidget.
  • Refactored examples - now they should be more clear.
  • Added continuous integration (huge thanks to Gideon Grinberg (opens new window) and Voodlaz (opens new window))
  • Support for custom vertex formats.
  • Ray-terrain intersection test.
  • Ability to pause sound context.
  • TextBox widget now can be in read-only state.
  • Fixed procedural textures serialization.
  • Added serialization support for arrays.
  • Fixed instanced rendering.
  • Fixed Screen-Space Ambient Occlusion banding issues.
  • Fixed light scattering issues.
  • Smart cascade selection for shadow maps.
  • Added proc-macro for Visit trait (huge thanks to toyboot4e (opens new window))
  • Fixed lighting issues.
  • Added scroll options for ScrollViewerBuilder.
  • Default shadows precision is now Full instead of Half which could cause graphical artifacts.
  • Fixed critical physics serialization bug (opens new window).
  • Added "on-demand" texture compression via tbc (opens new window) crate which supports R8RGTC, RG8RGTC, DXT1, DXT3, DXT5 compression.
  • Improved renderer performance.
  • Built-in profiler now able to print result in a string.
  • Added parallax mapping.
  • Improved performance of UI layout and message routing.
  • Added tooltips and context menus (huge thanks to MinusGix (opens new window)).
  • Ambient lighting belongs to scene, not renderer as it was before.
  • Multiple expansion strategies for Tree widget.
  • Fixed selection in ListView.
  • Added first overview of engine's architecture - it should help newcomers to be able to easily start contributing.
  • Minor fixes and improvements.

# rusty-editor (opens new window)

rusty-editor has gain lots of improvements for last few months. One of the huge improvements is the terrain editor. Check this video:

There are 98 new commits compared to 0.7, here's the most interesting changes:

  • Terrain editor.
  • Fixed Save/Save As dialog windows - now you don't have to type scene name in the path field, only in separate File name field.
  • Sound editor - now it is possible do add and edit sound sources.
  • Added Grid snapping for Move interaction mode.
  • Fixed Move interaction mode - now it correctly handles complex hierarchies and multi-selection.
  • Improved Settings window - now it has separate categories instead of huge list.
  • Added continuous integration (huge thanks to Voodlaz (opens new window))
  • Added context menu for world outliner.
  • Change main loop to prevent editor from spending too much time in logic update.
  • Added ability to create quads.
  • Save settings on every change.
  • Tangent-space visualizer.
  • Added ability to slowdown (Shift) or speedup (LeftCtrl) editor camera movement.
  • Gizmos are full-bright and not affected by scene lights.
  • Change selection to pasted nodes.
  • Fixed uniform scaling.
  • Fixed picking issues.
  • Fixed "Fit Collider" issues.
  • Now it is possible to change znear and zfar of preview camera.
  • Level-of-detail (LOD) editor.
  • Added ability to change render path for meshes.
  • Fixed potential infinite message loops that might hang editor.
  • Added ability to clear command stack.
  • Added ability to edit collision groups and masks for colliders
  • Minor fixes and improvements.

# Discussion

Join the Discord server (opens new window)

Discuss on Reddit (opens new window), HackerNews (opens new window).

# Support the engine

I'm working on the engine for more than 2 years now and getting very little financial support. If you want to see the project alive, please consider making a donation on Patreon (opens new window) or LiberaPay (opens new window) or one-time donation via BuyMeACoffee (opens new window)