VRRW RD32 Atlas Fix
====================

ACHTUNG, Stand 15.08.2026 - dieser Filter loest das OOM-Problem NICHT MEHR:

  1. Ein "filter" in pack.mcmeta blockiert nur Dateien aus Paketen UNTERHALB
     des filternden Pakets. Dieses Paket wird als Mod-Resourcepack unter die
     Nutzer-ZIPs einsortiert, siehe Reihenfolge in latest.log:
       ... vrrw_rd32_atlas_fix, OBJanim Gold, Overworld Gold, VRRW Vanilla X 1024
     Es kann diese vier also gar nicht erreichen. Nachweis: danelion1.png steht
     im Filtermuster und liegt trotzdem mit 6,5 MB im Atlas.
  2. Selbst wenn er griffe, brachte er nichts. Der Atlas faellt erst auf
     16384x16384, wenn weniger als 268,4 Mio Pixel belegt sind. Gemessen sind es
     ueber 711 Mio (Overworld Gold 421,2 + Vanilla X 1024 290,0). Nach Abzug
     aller 135,3 Mio verwaisten Pixel blieben ueber 576 Mio - der Atlas bliebe
     32768x32768 und die VRAM-Belegung exakt gleich. Dateien zu entfernen spart
     nur dann Speicher, wenn dadurch eine Zweierpotenz unterschritten wird.

Korrektur vom 26.08.2026 (aktueller Quellstand): Der alte reine
Internalformat-Redirect ist entfernt. Im gemessenen alten Lauf trafen reale
Packs auf nicht 4x4-ausgerichtete Sprite-/Mip-/Animationsrechtecke; OpenGL
verweigerte sie mit 1.658.379 GL_INVALID_OPERATION und erzeugte ein 439-MB-Log.

Der neue Blockatlas-Pfad besitzt deshalb den gesamten Uploadvertrag:

  * nur der gemeinsame Minecraft-Blockatlas wird in linearem RGBA-BC7
    angelegt; BC1/BC3 werden nicht innerhalb einer GL-Textur gemischt;
  * gueltige 4x4-Uploads bleiben direkt, alle anderen werden in ein
    blockausgerichtetes Rechteck gepackt;
  * nur gemeinsam benutzte Randbloecke werden als kleine CPU-Schattenkopie
    behalten, nicht der 5,3-GiB-RGBA-Mipatlas;
  * jedes komprimierte Level wird vor Sprite-Uploads deterministisch
    transparent initialisiert;
  * Capability-, Pack-, GL- und Stichproben-Qualitaetsfehler reallokieren alle
    Levels als RGBA8 und laden alle vorbereiteten Spritequellen erneut.

R3-Ingame-Messung: Der BC7-Lauf behielt gegenueber RGBA8 zusaetzlich etwa
1421 MiB resident, nahezu genau den 1364-MiB-BC7-Mipstack. Die Atlas-
Transaktion dauerte 78,7 s statt etwa 1,5 s mit RGBA8. Das weist auf
Dual-Residency bzw. einen Driver-Shadow hin und macht BC7 noch nicht zu einem
sicheren Produktionsstandard.

Experimentelle Korrektur vom 26.08.2026: Mit der zusaetzlichen Property
-Dvrrw.atlasBc7Direct=true encodiert ein Compute-Shader RGBA-Quellrechtecke
vorab als BC7-Mode-5/Mode-6-Bloecke und uebergibt GL ausschliesslich diese
Bloecke per glCompressedTex(Sub)Image2D. Damit wird im direkten Pfad kein
vollstaendiger RGBA8-Atlas an den Treiber hochgeladen. Kleine wiederverwendete
SSBO/PBO-Stagingpuffer werden nach dem Erstaufbau auf 16 Byte verkleinert und
fuer Animationen nur bei Bedarf wieder angelegt. Ein persistenter 1364-MiB-
Diskcache ist absichtlich nicht Teil dieses Zwischenstands: Er braeuchte eine
belastbare Pack-/Treiber-/Encoder-Invalidierung und wuerde selbst erhebliche
I/O-Kosten erzeugen.

Dieser direkte Pfad bestand den echten Encode/Upload/Hardware-Decode-Selbsttest
auf einer NVIDIA GeForce RTX 5070 (Treiber 591.86, GL 4.3), einschliesslich
transparentem Clear, Cutout-Alpha und Wiederherstellung fremden GL-Pack-/PBO-
States. Vor Commit werden nun 32 ueber den Atlas verteilte Sprites, darunter
bis zu acht animierte First-Frames, an Ecken und Mitte gelesen und mit den
Quellen verglichen. Fehlendes/abgebrochenes Readback, GL-Fehler oder zu hohe
RGB-/Alpha-Abweichung erzwingen den vollstaendigen RGBA8-Replay. Die reale
32768-Ingame-A/B-Messung von Atlaszeit, Prozess-Residency, VRAM und Bildqualitaet
steht noch aus; deshalb bleiben sowohl BC7 als auch der direkte Pfad standardmaessig
aus und es gibt noch keine Produktions- oder FPS-Zusage.

Darum bedeutet eine fehlende oder leere Property jetzt immer exaktes RGBA8.
Nur -Dvrrw.atlasBc7=auto aktiviert die groessenabhaengige Automatik;
-Dvrrw.atlasBc7=true, =on oder =force erzwingt einen weiterhin Capability- und
Sicherheits-gegateten Versuch. -Dvrrw.atlasBc7=false/off/0/rgba8 bleibt RGBA8.
BC7 bleibt verlustbehaftet. Der Reload protokolliert deshalb RGB-/Alpha-Fehler,
Alpha-128-Klassenwechsel, realen GL-Kompressionsspeicher sowie Direct-/Staging-
Uploadzahlen. FPS/VRAM und Bildqualitaet muessen zusaetzlich im Spiel mit dem
konkreten Packset A/B gemessen werden.

Der Rest dieser Datei beschreibt den urspruenglichen Ansatz und bleibt als
Begruendung fuer die Dateiauswahl erhalten.

Dieser Filter entfernt 33 aktuell verwaiste High-Resolution-Dateien aus dem
Minecraft-Blockatlas. Er verändert keine verwendete Textur und überschreibt
den Original-Pack "Overworld Gold V.1.1.zip" nicht.

Warum: Der ungefilterte Lauf erzwingt einen 32768 x 32768 RGBA-Atlas und endet
nach dem RD32-Streaming mit GL_OUT_OF_MEMORY. Die 33 Dateien belegen zusammen
135.266.304 Quellpixel, obwohl sie im aktiven src/main weder von Modellen noch
von Java, Shadern oder MTL-Dateien referenziert werden.

Wichtig: Historische Backups bzw. ein alter vrrw_overworld-1.5.jar enthielten
Modelle für 31 dieser Namen. Wenn solche alten Modelle wieder importiert
werden, diesen Filter deaktivieren oder die betreffenden Namen aus pack.mcmeta
entfernen. Der aktuelle Quellstand und ein daraus neu gebautes JAR benötigen
sie nicht.

Zusatz fuer die sieben Entity-Farbatlanten: 166 Dateien mit dem Suffix
"_n.png" sind Normalmaps, wurden von den pauschalen Vanilla-Verzeichnisquellen
aber nochmals als Farbsprites gestitcht. Die JSON-Filter unter
assets/minecraft/atlases entfernen nur diese falschen Farb-Sprite-Eintraege.
Die PNG-Dateien selbst bleiben im ResourceManager erhalten und koennen von
Iris/PBR weiterhin als Normalmaps gelesen werden. Albedo, neue Vanilla-Muster,
Christmas-Chests und der Shulker-Spark bleiben unveraendert.
