💡Licht, Texturen, Z-Buffer & Co.
💡Licht und Materialien: Lambert, Phong, PBR
pbrMetallicRoughness.Schnellere und bei flachen Winkeln realistischere Variante mit dem Halbvektor H. Jahrzehntelang der Standard der Fixed-Function-Pipeline (OpenGL 1.x).
🏁Texturen und UV-Koordinaten
texture2D(uTex, vUv) die Farbe. Übrigens: Das Apartment-Modell hat 0 Texturen und keine UVs – alle Oberflächen sind einfarbige PBR-Materialien, das hält die Datei klein.Die Textur ist ein 64 × 64-Schachbrett, die rote Ecke markiert UV (0; 0). Zoom stark hinein und vergleiche NEAREST (Klötzchen) mit LINEAR (bilineare Mischung der vier Nachbartexel).
🌳Szenengraph: Eltern und Kinder
updateMatrixWorld().Dreh die Schulter: Unterarm und Hand folgen, obwohl sich ihre lokalen Werte nicht ändern. Genau so hängen in der Ferienwohnung 712 Meshes an 9 Gruppenknoten – verschiebt man „OG_Moebel“, wandern alle Möbel des Obergeschosses mit.
🧱Z-Buffer: Wer ist vorne?
Türkis wird nach rechts unten tiefer (z 0,15 → 0,85), Violett liegt überall bei z = 0,5 – die beiden durchdringen sich. Ohne Tiefentest gewinnt, wer zuletzt zeichnet; mit Tiefentest gewinnt pro Pixel das nähere Fragment.
near nicht zu klein wählen, Flächen leicht versetzen oder polygonOffset.🪜Anti-Aliasing: Treppenstufen glätten
Mit nur einem Abtastpunkt pro Pixel ist ein Pixel entweder ganz drin oder ganz draußen – schräge Kanten werden zur Treppe. Mehr Abtastpunkte ergeben Zwischenwerte: 25 Pixel sind hier nur teilweise bedeckt und bekommen eine Mischfarbe.
In WebGL: getContext("webgl2", { antialias: true }) fordert MSAA für den Standard-Framebuffer an; three.js: new WebGLRenderer({ antialias: true }). Alternativen als Nachbearbeitung: FXAA, SMAA, TAA.
🚀Draw Calls und Performance
gl.drawElements) ist ein Auftrag der CPU an die GPU: „Zeichne diesen Puffer mit diesem Shader und diesen Uniforms“. Jeder kostet CPU-Zeit für Zustandswechsel – oft ist nicht die Zahl der Dreiecke das Problem, sondern die Zahl der Draw Calls.Im Schnitt nur 23 Dreiecke pro Draw Call – für eine GPU winzig. Moderne Grafikkarten schaffen Millionen Dreiecke pro Bild; 712 Draw Calls sind im Browser noch gut machbar (Richtwert: einige Hundert bis wenige Tausend pro Bild).