ScratchPixel – Computergrafik kostenlos von Grund auf lernen
(scratchapixel.com)- Eine Online-Lernplattform, auf der man Computergrafik von den Grundlagen bis zu fortgeschrittenen Themen kostenlos lernen kann
- Behandelt systematisch eine Vielzahl von Themen wie 3D-Rendering, mathematische Grundlagen, digitale Bildverarbeitung, prozedurale Generierung und Tooling
- Die kurspraktische Struktur ist auf Übungen ausgerichtet, sodass man direkte Ergebnisse zuerst erlebt statt Theorie voranzustellen
- Wird laufend erweitert, unter anderem mit einem Lernkurs zur Vulkan API (neu), einem 3D-Programming-Blog (geplant) und einem Buch (in Vorbereitung)
- Eine kostenlose Lernressource, mit der Entwickler und Designer die Prinzipien und Implementierungstechniken der Computergrafik tiefgehend verstehen können
- Scratchapixel ist eine Website, auf der man den gesamten Bereich der Computergrafik kostenlos lernen kann, unter dem Slogan „Learn computer graphics from scratch and for free“
Aktuell verfügbare Kurse
-
Grundlagen des 3D-Renderings (The Foundations of 3D Rendering)
- Ein einsteigerfreundlicher Einführungskurs ins Rendering mit sinnvoller Reihenfolge
- Verfolgt einen Ansatz, bei dem statt Theorie zuerst die Umsetzung konkreter Ergebnisse behandelt wird
- Die wichtigsten Kursthemen sind:
- Einführung in Ray Tracing, Rendering von 3D-Szenen, Rasterization, Projektionsmatrizen, Shading und Beleuchtung, Texturing, Beschleunigungsstrukturen, Volumen-Rendering usw.
- Jede Lektion behandelt zusammen mit praktischen Implementierungsbeispielen Themen wie Berechnung von Pixelkoordinaten, Pinhole-Kameramodell sowie BRDF- und Shader-Konzepte
- Ein einsteigerfreundlicher Einführungskurs ins Rendering mit sinnvoller Reihenfolge
-
Mathematik für Computergrafik (Mathematics for Computer Graphics)
- Erklärt die für die Umsetzung von Grafik benötigten mathematischen Theorien und Werkzeuge
- Dieser Abschnitt ist nicht als Einführung gedacht, sondern als Referenzmaterial zu Konzepten, die in anderen Kursen erwähnt werden
- Zu den zentralen Themen gehören Geometrie, Matrizeninversion (Gauss-Jordan-Methode), Interpolation, LookAt-Funktion, Mathematik des Shadings, Monte-Carlo-Methoden, Fourier-Transformation usw.
- Erklärt die für die Umsetzung von Grafik benötigten mathematischen Theorien und Werkzeuge
-
Computer Graphics Gems
- Eine Sammlung interessanter einzelner Grafikthemen, die keiner bestimmten Kategorie zugeordnet sind
- Derzeit ist nur eine Lektion zur Schwarzkörperstrahlung enthalten
- Eine Sammlung interessanter einzelner Grafikthemen, die keiner bestimmten Kategorie zugeordnet sind
-
Geometry
- Behandelt, wie Formen in der Computergrafik definiert werden
- Erklärt Methoden zur Formdarstellung mit Bézier-Kurven und -Flächen
- Behandelt, wie Formen in der Computergrafik definiert werden
-
Digital Imaging
- Behandelt Bilddateiverarbeitung und Farbmanagement
- Zentrale Themen sind Licht und Farbräume, Umwandlung digitaler Bilder von Datei zu Anzeige sowie grundlegende Bildbearbeitung
-
Procedural Generation of Virtual Worlds
- Behandelt die prozedurale Simulation natürlicher Phänomene
- Enthält Themen wie Value Noise, Perlin Noise und Simulation der Himmelsfarbe
-
Tooling
- Behandelt Entwicklung von 3D-Tools und Interaktionstechniken
- Enthält Inhalte wie Windowing, OBJ-Dateiformat und Steuerung der Kameranavigation
Neueste Nachrichten
- Der bald startende Blog wird neben 3D-Programmierung auch verwandte Themen wie AI und Bildung behandeln
- Ein neuer Kurs zur Vulkan API wird bald hinzugefügt
- Ein Buch mit dem Titel „Learn Computer Graphics Programming from Scratch“ ist ebenfalls in Vorbereitung
1 Kommentare
Hacker-News-Kommentare
Diese Website hat sich wirklich enorm weiterentwickelt. So großartig, dass der Weihnachtsmann eine Spende dalassen sollte.
Ich finde, im Bereich Computergrafik braucht es mehr offene Lehrmaterialien. Ältere Techniken sind in veralteten Büchern vergraben, und neue Techniken sind hinter Unternehmensmauern verborgen. Ein gutes Beispiel ist Sergei Savchenkos 3D Graphics Programming Games and Beyond.
Moderne Graphics-APIs sind heutzutage unnötig komplex, daher halte ich es für einen besseren Einstieg, die GPU erst einmal zu vergessen und stattdessen selbst einen Software-Rasterizer oder Raytracer zu implementieren.
Schade ist allerdings, dass diese Seite außer Discord keine Kontaktmöglichkeit bietet. Es wäre auch schön, wenn die Spendenseite direkt von der Startseite aus erreichbar wäre.
Das ist wirklich eine Schatzkiste von Material.
Mein Nickname stammt von der Reactor-3D-Engine, die ich früher gebaut habe. Quake 3 hat mein Leben in der Highschool verändert. Wenn Doom mich in die Welt der Computer gebracht hat, dann hat Quake 3 mich für 3D begeistert.
Ich war nicht besonders gut in Mathe, aber ich habe gelernt, indem ich Code abgeschrieben und angepasst habe, und heute habe ich eine Karriere, die Web und Grafik verbindet. Dank der weiten Verbreitung von WebGL und WebGPU habe ich bei der Arbeit sogar promovierten Kollegen Vertex Packing und das Übertragen von GPU-Structs beigebracht.
Ich habe auch mit einem XNA-Silverlight-Entwickler zusammengearbeitet und bin damit so etwas wie ein entfernter Verwandter von MonoGame. Heute sind eher neue Ansätze wie Vulkan/DX12/Metal der Standard.
Diese Seite ist wirklich großartig. Die muss ich mir unbedingt ansehen.
Während meines Masterstudiums habe ich selbst einen Raytracer implementiert, und das Buch, auf das ich mich damals bezogen habe, war Andrew S. Glassners An Introduction to Ray Tracing. Es kann inzwischen kostenlos heruntergeladen werden — Link
Ich habe eine alte Sammlung kostenloser Materialien zum Graphics Programming. Ich aktualisiere sie heute nicht mehr besonders oft, aber vielleicht ist sie trotzdem hilfreich — gist-Link
Während des größten Teils meiner Karriere war Grafik ein blinder Fleck für mich. Ich bin eher in Richtung Daten und verteilte Systeme gegangen, aber eigentlich habe ich mit dem Programmieren angefangen, weil ich Spiele machen wollte.
Früher habe ich mit OpenGL eine Simulation von Planetenbahnen gebaut oder mit Flash ein seltsames Shoot-’em-up erstellt. Aber wann immer ich versuche, Vulkan zu lernen, gebe ich wegen der schieren Menge an Code auf. Vermutlich liegt es daran, dass mir die grundlegenden Konzepte fehlen. Wenn ich irgendwann mehr Luft habe, würde ich das gern ernsthaft noch einmal angehen.
Als Beispielmaterial empfehle ich Tiny Renderer und Ray Tracing in One Weekend.
Wenn man diesen Prozess durchläuft, versteht man viel tiefer, warum GPUs so entworfen wurden, wie sie sind. Danach würde ich empfehlen, auf OpenGL 4.6 oder D3D11 sowie auf Seiten wie ShaderToy und ShaderAcademy auszuweiten.
CPU-basiertes Rendering ist weiterhin wichtig, weil Film-Renderer wegen der Präzision CPUs verwenden. Zur Einordnung: WARP und LLVMpipe sind Software-Rasterizer, die auch in echten Produktionsumgebungen eingesetzt werden.
Ich genieße die Inhalte dieser Website wirklich sehr. Danke auch dafür, dass letztes Jahr Feedback zu den AI-Thumbnails umgesetzt wurde — HN-Feedback-Link
Eines meiner Ziele für dieses Jahr ist es, von Grund auf einen Software-3D-Renderer selbst zu bauen. Ganz ohne Game Engine und ohne GPU, einfach komplett selbst implementiert.
Heutzutage kann man einem LLM einen Website-Link oder ein PDF geben und es in interaktives Lernmaterial verwandeln. Ich habe heute selbst ein 1000-seitiges PDF auf diese Weise umgewandelt und zum Lernen über Game Engines genutzt. Schön ist, dass es so nicht einfach nur als Lesezeichen liegen bleibt.
Hoffentlich kommt irgendwann der Tag, an dem NVIDIAs Monopol auf Graphics-APIs, Googles Dominanz im Web und AMDs schwache Alternative ein Ende haben.