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 platziert. 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 verwenden.
Die Probes werden direkt vom Editor aus gebacken. Die indirekte Beleuchtung wird auch 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 die Unterstützung dieser Funktion.

Da 32-Bit-Gleitkommazahlen eine höhere Präzision nahe Null 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 weiten Entfernungen erzeugen. Extrem nahe oder weit entfernte Clipping-Einstellungen verstärken diesen Effekt.
Reverse-Z konfiguriert den NDC-Raum und die Projektionsmatrizen so, dass die 32-Bit-Gleitkommagenauigkeit optimal genutzt wird, sodass sehr nahe und extrem entfernte Objekte ohne die üblichen Z-Fighting-Artefakte gerendert werden können.
Schau dir hier das Reverse-Z-Beispiel an.
Immer SIMD
Aufgrund der weit verbreiteten Akzeptanz von WebAssemby SIMD konnten wir alle Nicht-SIMD-Varianten der Laufzeit entfernen. Das bedeutet, dass der -simd
Suffix nicht mehr verwendet und für Laufzeitnamen impliziert wird.
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 geschrieben wurden. Dass wir so viele hatten, ist ein deutliches Zeichen dafür, 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 zuerst 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.
- Korrektur des Imports von entfernten Szenendateien, die alte Dateiinhalte instanziieren.
- Freigabe der Einstellungen für Bildkompressionsqualität und Ratenverzerrungsoptimierung (RDO) in Ressourcenansicht > Bilder.
- Linux: Absturzberichterstattung ermöglichen.
- Verbesserter Login-Bildschirm im Editor, um stattdessen über den Browser einzuloggen (für Zugriff auf Passwortmanager).
- Korrektur verschiedener Abstürze.
Engine
- Use Reverse-Z whenever
EXT_clip_control
available. - Neue gebackene globale Beleuchtung über spärliche GI-Probe-Volumen.
- Korrektur des EPSILON_F Konstante ungültig für mediump floats, die auf Android-Geräten mit niedrigerem Speicherfehler verursachen.
- Aktualisierung auf meshoptimizer 0.23 (mögliche ~5-10% Dateigrößenverbesserungen für Meshes).
- Korrektur von Hot-Reload von Plugins, die potenziell zusätzliche Plugin-Einträge in der Plugin-Ansicht verursachen.
- Optimierung der Auswertung des Tile-Feedback-Buffers auf Geräten mit niedrigerer Leistung.
- Korrektur von Artefakten bei Punktlichtschatten.
Runtime
- Entferne Nicht-SIMD-Varianten der WebAssemby-Laufzeit.
- Optimierungen für unkomprimierte Textur-Uploads unter Verwendung von ImageBitmap.
- Erlaube das Hochladen auf Texturen von ImageBitmap.
Runtime API
- Füge
Property.array()
undProperty.record()
hinzu.
Docker Image
- Basis-Image von Ubuntu 20.04 auf 22.04 gewechselt.
Plugin API
- Wir verlangen nun, dass der
"wonderlandengine"
Schlüssel in derpackage.json
eines Plugins vorhanden ist. - Füge experimentelles
tools.computeMeshBounds(mesh)
hinzu. - Füge
ui.inputTextMultiline()
hinzu.