Wonderland Engine 1.4.0 - GI-Probe-Volumen, Reverse-Z, Array-Eigenschaften
Spärliche globale Beleuchtungs-Probe-Volumen, Reverse-Z, neue benutzerdefinierte Komponententypen (Arrays und Records). Siehe den vollständigen Changelog unten.
Spärliche globale Beleuchtungs-Probe-Volumen
Das Highlight dieses Releases ist unsere hochwertige Implementierung von Probe-Volumen. Unsere Methode platziert sphärische harmonische Diffuslichtprobes in der Szene, indem sie die Szene voxelisiert und die Lichtprobes in der Nähe von Oberflächen verteilt. Das Ergebnis ist ressourcenschonend sowohl für die GPU als auch für die Download-Zeiten, da wir Probes nur dort platzieren, wo sie benötigt werden, und die Daten effizient nutzen.
Die Probes werden direkt im Editor gebacken. Die indirekte Beleuchtung wird sogar auf dynamische und geskinte Objekte angewendet.
Die oben gezeigte Szene enthält etwa 52.000 Probes, was etwa 2,5 MB heruntergeladener GI-Daten entspricht.
Reverse Z
Vielen Dank an Playko für das Sponsoring dieser Funktion.

Da 32-Bit-Gleitkommazahlen in der Nähe von Null eine höhere Präzision aufweisen, ist der übliche Präzisionsbereich für NDC-Koordinaten (das Ergebnis der Projektion) von -1 bis 1 suboptimal und kann starke Z-Fighting-Artefakte in nahen und fernen Entfernungen erzeugen. Extrem nahe oder ferne Clipping-Plane-Einstellungen verstärken diesen Effekt.
Reverse-Z konfiguriert den NDC-Raum und die Projektionsmatrizen so, dass die 32-Bit-Gleitkommagenauigkeit optimal genutzt wird, was das Rendern von sehr nahen und extrem weit entfernten Objekten ohne die üblichen Z-Fighting-Artefakte ermöglicht.
Schau dir hier das Reverse-Z-Beispiel an.
Immer SIMD
Dank der breiten Akzeptanz von WebAssembly SIMD konnten wir alle Nicht-SIMD-Varianten der Laufzeit entfernen. Das bedeutet, dass der -simd
Suffix nicht mehr verwendet wird und für Laufzeitnamen impliziert ist.
Unterstützung für Projekte älter als 1.0.0
Es ist kaum zu glauben, dass Wonderland Engine 1.0.0 fast auf den Tag genau vor 2 Jahren veröffentlicht wurde.
Mit 1.4.0 entfernen wir 38 einzelne Projektdatei-Migrationen, die Projektdateien aktualisieren, die mit Versionen älter als 1.0.0 erstellt wurden. Dass wir so viele hatten, zeigt, wie ernst es uns mit der Abwärtskompatibilität ist.
Wenn du ein Projekt hast, das älter als 1.0.0 ist und du es mit 1.4.0 weiter bearbeiten möchtest, kannst du es jederzeit mit 1.3.4 oder einer früheren Version der Wonderland Engine öffnen, um es zunächst auf eine Version nach 1.0.0 zu migrieren.
Changelog
Editor
- Neuer Bereich für globale Beleuchtung in den Projekteinstellungen, um Probe-Volumen zu erstellen und zu konfigurieren.
- Fix für den Import von entfernten Szenendateien, die alte Dateiinhalte instanzieren.
- Bildkompressionsqualität und Rate-Distortion-Optimierung (RDO) Einstellungen in Ressourcenansicht > Bilder freigeben.
- Linux: Absturzberichterstattung aktivieren.
- Verbesserter Login-Bildschirm im Editor, um sich stattdessen über den Browser anzumelden (für den Zugriff auf Passwortmanager).
- Verschiedene Abstürze behoben.
Engine
- Reverse-Z verwenden, wann immer
EXT_clip_control
verfügbar ist. - Neue gebackene globale Beleuchtung über spärliche GI-Probe-Volumen.
- Fix für die EPSILON_F Konstante, die für mediump floats ungültig ist und Probleme auf Android-Geräten mit niedrigeren Spezifikationen verursacht.
- Aktualisierung auf meshoptimizer 0.23 (mögliche ~5-10% Dateigrößenverbesserung für Meshes).
- Fix für Hot-Reload von Plugins, das potenziell zusätzliche Plugin-Einträge in der Plugins-Ansicht verursacht.
- Optimierte Auswertung des Tile-Feedback-Buffers auf Geräten mit niedrigerer Leistung.
- Fix für Artefakte bei Punktlichtschatten.
Runtime
- Entferne Nicht-SIMD-Varianten der WebAssembly-Laufzeit.
- Optimierungen für unkomprimierte Textur-Uploads mit ImageBitmap.
- Upload auf Texturen von ImageBitmap erlauben.
Runtime API
Property.array()
undProperty.record()
hinzugefügt.
Docker Image
- Basis-Image von Ubuntu 20.04 auf 22.04 gewechselt.
Plugin API
- Der
"wonderlandengine"
Schlüssel muss nun in derpackage.json
eines Plugins vorhanden sein. - Experimentelles
tools.computeMeshBounds(mesh)
hinzugefügt. ui.inputTextMultiline()
hinzugefügt.