Technologieaustausch

Echtzeit-3D-Grafiken mit WebGL2

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

WebGL-Rendering-Pipeline

Die folgende Abbildung ist ein schematisches Diagramm der WebGL-Rendering-Pipeline:

Vertex-Pufferobjekte (VBOs)

VBOS enthält Informationen zur Beschreibung der Geometrie. Zum Beispiel die Scheitelpunktkoordinaten, Normalkoordinaten, Farbe, Texturkoordinaten usw. der Geometrie.

Index-Pufferobjekte (IBOs)

IBOs enthalten Informationen, die Scheitelpunktbeziehungen beschreiben. Es verwendet die Indexposition des Scheitelpunkts in den VBOs.

Vertex-Shader

Der Vertex-Shader wird auf jedem Vertex ausgeführt. Es verarbeitet scheitelpunktbezogene Informationen wie Scheitelpunktkoordinaten, Normalkoordinaten, Farbe und Texturkoordinaten. Diese Informationen werden vom VBO abgerufen und dem im Vertex-Shader verwendeten Attribut zugeordnet.

Fragment-Shader

Der Fragment-Shader wird für jedes Fragment ausgeführt, um die Farbe jedes Fragments zu berechnen.

Bildspeicher, Framebuffer

Der Frame-Puffer ist ein zweidimensionaler Puffer, der zum Speichern von Fragmenten verwendet wird, die im Fragment-Shader verarbeitet werden. Sobald alle Fragmente verarbeitet wurden, können die Rendering-Ergebnisse auf dem Bildschirm angezeigt werden.

Eigenschaften

Eigenschaften sind Eingabevariablen im Vertex-Shader. Es gibt an, wie Daten aus dem Puffer gelesen und an den Vertex-Shader übergeben werden. Sie können Positionsinformationen (drei 32-Bit-Gleitkommadaten) im Puffer speichern. Geben Sie dann an, aus welchem ​​Puffer die Positionsinformationen gelesen werden sollen, welchen Datentyp die Positionsinformationen haben, an welcher Position im Puffer mit dem Lesen begonnen werden soll und wie viele Bytes insgesamt gelesen werden sollen. Da der Vertex-Shader an jedem Vertex ausgeführt werden muss, sind die Attributwerte nicht bei jeder Ausführung gleich.

Uniformen

Uniformen sind Eingabevariablen für Vertex-Shader und Fragment-Shader. Im Gegensatz zu Attributen werden Uniform-Variablen innerhalb einer Rendering-Schleife fixiert. Zum Beispiel die Position der Lichtquelle.

Texturen

Texturen enthalten häufig Bilddaten, können aber auch andere Daten enthalten.

Variationen

Variable Variablen werden häufig verwendet, um Daten vom Vertex-Shader an den Fragment-Shader zu übergeben. Die Varyings-Variablen im Vertex-Shader werden interpoliert, bevor sie an den Fragment-Shader übergeben werden.