Was sollte jeder Grafikprogrammierer schreiben?

18

Ich habe diese Frage auf SO gesehen, aber hier möchte ich mich auf GFX konzentrieren.

Welche Anwendungen / Funktionen sollte also Ihrer Meinung nach jeder angehende GFX-Programmierer schreiben / ändern, um besser zu werden?

Community-Wiki, da es keine "richtige Antwort" gibt.

LE: Bezieht sich nicht auf tatsächliche Spiele, sondern auf grafische Funktionen, z. B. das Ändern von Elementen in einer Engine (z. B. das Laden von Objekten), das Erstellen eines Compositors usw.

Cristina
quelle
2
Ähnlich wie bei dieser Frage: gamedev.stackexchange.com/questions/854/…
Bryan Denny

Antworten:

22

Meine Antwort ist immer dieselbe: Wenn Sie noch keine geschrieben haben, schreiben Sie einen Raytracer.

Sie müssen sich mit Optimierungsstrukturen, numerischer Präzision und vielen anderen Problemen befassen, aber Sie arbeiten auch direkt mit der Mathematik des Lichts auf eine Weise, wie Sie es selten tun, wenn Sie mit all den Hacks und Approximationen umgehen, die sich zusammensetzen ein Echtzeit-Renderer für die Produktion.

Entfernen Sie das gesamte Bauwerk von Ladesystemen, Schlagworten der Woche, verschieben Sie dieses oder jenes, und Sie bleiben schließlich mit Licht zurück, das durch ein Medium wandert. Am Ende ist das alles, was Grafiken zu bieten haben.

Charlie
quelle
Interessant, ich dachte darüber nach, einen Raytracer vorzuschlagen, eine sehr schöne Matheübung. Ich bin nicht einverstanden damit, dass Deferred ein Modewort der Woche ist, es ist wie Raytracing eine ziemlich große Veränderung in der Herangehensweise an Ihr Rendering, die für einen Grafikprogrammierer etwas ist, dessen Sie sich bewusst sein sollten.
Kaj
Ich würde sagen, dass Optimierung nicht so wichtig ist wie der Umgang mit beliebigen Netzen, was ein Schritt ist, den viele Leute mit Raytracern nie erreichen.
Jonathan Fischoff
Ich würde diesen Vorschlag zweitens (drittens?) Mit der Einschränkung, dass es (wie erwähnt) Maschen unterstützen muss und nicht nur bei glänzenden Kugeln auf einem Schachbrett anhalten muss. Bonuspunkte für jeden Versuch einer globalen Beleuchtung. Auch wenn Sie es nicht stark in etwas tatsächlich Verwendbares optimieren , sollten Sie sich bemühen, zu verstehen, welche Bits langsam sind und warum.
JasonD
Und eine Einschränkung bei diesem Vorschlag: Obwohl Grafik nur mit Licht durch ein Medium reisen kann, erhalten Sie nur sehr wenig Schulung in Bezug auf das, was Sie in der tatsächlichen (aktuellen) Produktionsumgebung benötigen.
Kaj
1
+1 Einen Ray Tracer zu schreiben war das Nützlichste, was ich in der Klasse meiner College-Grafik gelernt habe
Bryan Denny
7

Heutzutage mag es von geringem praktischem Nutzen sein, aber das Schreiben in einem Software-Renderer, zumindest einem einfachen (vielleicht nur ein paar sich drehende, strukturierte Würfel), ist eine lohnende Übung.

Wenn Sie wissen, wie Sie Polygone in 3D-Hardware und Rendering-APIs transformieren, projizieren, ausschneiden, sortieren, rastern und texturieren können, erhalten Sie ein besseres Verständnis

Bluescrn
quelle
so ziemlich das. Ansonsten ein Sprite-Blitter mit Alpha-Unterstützung. ..oder zumindest etwas, ALLES, wo Sie Pixel anhand ihrer Bitwerte manipulieren.
Lassi Kinnunen
6

Obwohl ich keinen Code rendere, halte ich das Schreiben eines BSP-Compilers und des zugehörigen Traversal-Codes für eine gute Übung in der Vektor-Mathematik.
Zweitens ein verzögerter Renderer. Nicht, weil dies die endgültige Antwort auf das Rendern ist, sondern um Ihnen einen Einblick in einen anderen Ansatz für das Rendern zu geben.

Kaj
quelle
2

Erlernen Sie die Mechanik und die Fähigkeiten, gute Shader zu schreiben. Es ist zwar nicht in allen Fällen zu 100% notwendig, aber es ist eine wertvolle Fähigkeit, dies zu wissen.

RCIX
quelle
Ich stimme deiner Antwort zu, aber sie ist zu weit gefasst und einige Ressourcen und Links zu ihnen würden für eine vollständige Antwort nicht schaden :).
lukas.pukenis