PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Literatur GPU-Programmierung


Marscel
2011-06-27, 15:57:28
Ich habe Daten und schon eine Code-Basis, jetzt will ich visualisieren und je nach dem, vielleicht etwas mehr draus machen. Für ersteres gibts Frameworks, aber irgendwann sollen die Stützräder ab.

Was ich gerne hätte, wäre Literatur in Buchform zum Thema GPU-Programmierung, denn das wird hier nur und erst im Master-Gang behandelt. Also:

Überblick über aktuelle GPU-Architekturen und Begrifflichkeiten
Am liebsten "Wie man heute von Null aus vorgeht"
Mathematische Hintergründe, wie etwas berechnet wird, wie gängig optimiert wird
Kollisionsmanagement
aktuelle, vllt sogar zukunftstaugliche API; HLSLs? Toolkits?
Beispiele, Übungen, Hinweise auf weiterführende Ressourcen


Also am Ende würde ich gerne einigermaßen mit Primitives, Texturen und Lichtquellen umgehen können - ohne alles nachfragen zu müssen.

Was ich nicht brauche: Programmieren lernen, C++/ASM sind für mich nichts neues, auch die Grundvoraussetzungen in Mathe habe ich. Und Literatur, die sich mit dem Drumherum à la Spieleprogrammierung beschäftigt, benötige ich ebenso nicht.

Ich hab mal etwas selbst geguckt, über die Wiki-Literaturlisten habe ich schon diese beiden Werke gefunden:

http://www.amazon.de/Real-Time-Rendering-Tomas-Akenine-Möller/dp/1568811829
http://www.amazon.de/Computergrafik-anwendungsorientiertes-Lehrbuch-Michael-Bender/dp/3446404341

Also Kommentare und andere Vorschläge sind gerne gesehen.

Coda
2011-06-27, 16:21:50
Für GPU-Computing (was für 3D-Grafik auch immer wichtiger wird):

http://www.amazon.de/Programming-Massively-Parallel-Processors-Hands-/dp/0123814723/ref=sr_1_1?ie=UTF8&qid=1309184502&sr=8-1

del_4901
2011-06-27, 16:59:24
Für GPU-Computing (was für 3D-Grafik auch immer wichtiger wird):

http://www.amazon.de/Programming-Massively-Parallel-Processors-Hands-/dp/0123814723/ref=sr_1_1?ie=UTF8&qid=1309184502&sr=8-1
Ich find es nicht so toll, aber das mag wohl eher daran liegen das ich solche sequenziell strukturierten Buecher nicht so doll finde



Das hier ist ein gutes Buch was in die Fragestellung passen koennte, (auch fuer Echtzeitgrafiker):
http://www.amazon.de/Physically-Based-Rendering-Theory-Implementation/dp/0123750792/

Marscel
2011-06-27, 21:13:39
Für GPU-Computing (was für 3D-Grafik auch immer wichtiger wird):

http://www.amazon.de/Programming-Massively-Parallel-Processors-Hands-/dp/0123814723/ref=sr_1_1?ie=UTF8&qid=1309184502&sr=8-1

Bis mir die Parallelisierungsnotwendigkeit über den Weg läuft, wird wohl noch etwas vergehen, fürchte ich.

Das hier ist ein gutes Buch was in die Fragestellung passen koennte, (auch fuer Echtzeitgrafiker):
http://www.amazon.de/Physically-Based-Rendering-Theory-Implementation/dp/0123750792/

Aus Sicht von Geometrischen Fragen wirkt das ja sehr interessant. Werd ich mir merken.

Ich brauche aber wohl vorerst etwas, das noch ein bisschen handwerklicher an die Sache herangeht, Echtzeitrendering natürlich. Wie krieg ich in D3D/OGL etwas auf der Röhre gezeichnet - ich bin da auch nicht fanboyisch, was von beiden; was braucht man zum Texturieren an Daten, wieviel muss ich der GPU selbst sagen, was tut die API, brauche ich eigene Shaderprogramme und wenn ja, um was damit zu tun.

Sachen im Netz neigen dazu, veraltet oder inkonsistent zu sein oder nutzen Frameworks. Dann gibts wohl bei OGL Sachen, die irgendwie antiquiert sind und D3D9 ist kein D3D11 usw. und zur Theorie wird dann auf Uni-Seiten verwiesen, die es dann nicht mehr gibt.

Da so einen runden und zeitgemäßen Einstieg zu finden, das wäre cool.

Morgen schau ich mal, was noch in der Bibliothek der Uni zu finden ist.

del_4901
2011-06-27, 21:22:37
Ich brauche aber wohl vorerst etwas, das noch ein bisschen handwerklicher an die Sache herangeht, Echtzeitrendering natürlich. Wie krieg ich in D3D/OGL etwas auf der Röhre gezeichnet - ich bin da auch nicht fanboyisch, was von beiden; was braucht man zum Texturieren an Daten, wieviel muss ich der GPU selbst sagen, was tut die API, brauche ich eigene Shaderprogramme und wenn ja, um was damit zu tun.

Sachen im Netz neigen dazu, veraltet oder inkonsistent zu sein oder nutzen Frameworks. Dann gibts wohl bei OGL Sachen, die irgendwie antiquiert sind und D3D9 ist kein D3D11 usw. und zur Theorie wird dann auf Uni-Seiten verwiesen, die es dann nicht mehr gibt.

Da so einen runden und zeitgemäßen Einstieg zu finden, das wäre cool.

Morgen schau ich mal, was noch in der Bibliothek der Uni zu finden ist.
Zeitgemaess was API-Buecher angeht ist so eine Sache, bis die Buecher durch das Lektorat kommen und gedruckt werden, ist der Inhalt meistens schon veraltet.
Die Buecher welche als Einfuehrung in irgendeine 3D API dienen sollen sind alle recht Zaeh. Und dann aendert sich da alle Tage immer mal wieder was. Bei mir liegen sie inzwischen als Staubfaenger im Regal und ich habe hoechstens mal durchgeblaettert und fuer schlecht befunden. :) Ich glaube du bist mit irgendwelchen Tutorials im Netz besser beraten. Wenn du schnelle Erfolge haben moechtest, dann kann ich dir XNA ans Herz legen. Ansonsten kannst du mit DirectX 11 nicht soviel falsch machen.

Gast
2011-06-27, 23:59:58
Bei uns wird ziemlich alles mit Coin3D (https://secure.wikimedia.org/wikipedia/en/wiki/Coin3D) gemacht, einer freien OpenInventor Implementierung. Mit den low-level Sachen schlägt sich hier niemand mehr herum. Für Coin gibt es bindings für so ziemlich alle Sprachen und das ganze lästige drumherum fällt großteils weg, man hat durch die Szenegraphen-Architektur einen schönen High-Level Zugang kann das ganze aber bis in beliebige Tiefen verändern und anpassen. Shader, GPGPU usw. geht damit auch recht komfortabel.
Und ist als Bonus noch plattformübergreifend.

Coda
2011-06-28, 02:28:28
Dafür ist es schön ineffizient und man hat eigentlich nix von den Details verstanden danach. "Von Null aus vorgehen" sieht anders aus.

Tiamat
2011-06-28, 08:46:29
Eine Empfehlung ist schwierig. Gerade in dem Bereich muss man sich ne Menge aneignen. Ich kenne z.B kein Buch, das all das vereint, sorry.

Marscel
2011-06-28, 21:24:14
Eine Empfehlung ist schwierig. Gerade in dem Bereich muss man sich ne Menge aneignen. Ich kenne z.B kein Buch, das all das vereint, sorry.

Ach Fuck. Läuft wohl aufs Selbstbeibringen hinaus. Da schwebt nur die Ahnung mit, dass man sich Dinge unter falschen Sichtweisen beibringt oder ineffizientes Zeug produziert.

An der Uni soll es Bücher über D3D9 von 2003 und OpenGL 1.2 von 2004 geben, leider auch keine fruchtende Erkenntnis mehr.

Frameworks sind so eine Sache, dieses Mal würd ichs gerne nachhaltiger angehen in der Hoffnung, bei einigen Sachen besser mitreden zu können. Auch lizenztechnisch muss man da ab und zu gegenrechnen.

XNA hab ich vor einiger Zeit mal verwendet, klar, braucht man sich um wenig kümmern und kann gleich loslegen. Da kamen dann aber so Fragen auf wie: Warum braucht man VertexDeclarations - und warum müssen die hier so und da so aussehen und warum definiert der da seine eigene. Oder, was macht eigentlich die effect.fx genau, warum wird da mit irgendwelchen Shaderprofilen jongliert?

Und natürlich so eine Grundlagenreferenz, Projektionsmatrizen, einfache Kollisionen, ... Basics halt. Hab über die letzten Jahre ganz andere Dinge gemacht und habs einfach nicht mehr präsent.

Gast
2011-06-28, 23:31:27
du könntest natürlich noch auf die neueste ausgabe vom redbook warten, denke nicht, dass davor opengl nochmals upgedated wird ;)

http://www.amazon.com/OpenGL-Programming-Guide-Official-Learning/dp/0321773039/ref=sr_1_2?ie=UTF8&qid=1309296465&sr=8-2-spell


ansonsten ist für eine wiederholung der grundlagen Physically Based Rendering, das bereits AlphaTier empfohlen hat, zu gebrauchen. habs zwar nicht selbst, aber bisher nur gutes davon gehört und sobald ich mal mehr zeit hab wollt ichs mir auch zulegen...

del_4901
2011-06-28, 23:50:00
Ich wuerde von OpenGL abraten, weil man sich da vieles sehr ineffizient (und falsch) aneignen kann. Mal abgesehen von OpenGL ES wo die API mal etwas aufgeraeumt wurde. Mit DirectX oder XNA kann man nicht soviel verkehrt machen. Es gibt hier und da ein paar Mathebuecher die speziell auf Games ausgelegt sind, vielleicht ist da was brauchbares dabei um in die ganzen Matrixen einzusteigen.

Aquaschaf
2011-06-28, 23:57:25
Für GPU-Computing (was für 3D-Grafik auch immer wichtiger wird):

http://www.amazon.de/Programming-Massively-Parallel-Processors-Hands-/dp/0123814723/ref=sr_1_1?ie=UTF8&qid=1309184502&sr=8-1

Das Buch ist finde ich ein ziemlicher Witz, viel mehr als in der frei verfügbaren Cuda-Dokumentation von Nvidia steht da nicht drinnen. Aber hier geht es ja eh scheinbar nicht um GPGPU :)

Marscel
2011-06-29, 00:48:55
Ich hab noch mal überlegt, vielleicht ist es doch ein besserer Ausgangspunkt, einfach das DX SDK zu ziehen.

Vielleicht findet sich da ein kleinstes Sample, das man auseinander nehmen kann - MSDN und deren Blogs sind erfahrungsgemäßg zus. sehr gute Quellen. Learning-by-Failing, Nachrechnen, usw.

Wird wohl der nächste Schritt werden.

Tiamat
2011-06-29, 07:33:47
Unabhängig von der verwendeten API, Engine oder System kommen folgende Dinge immer vor:
-3D-Raum in Form von Vektoren und Matrizen (homogenisierte Matrizen), invertieren von Matrizen
-lokales, globales und Kamera-Koordinatensystem(inclusive Berechnnug eines Teils aus den anderen)
-Koordinatentransformationen(Translation, Skalierung, Rotation(Euler, Quaternionen))

Darüber hinaus ohne Benennung irgendwelcher api-abhängigen Sachen:
-Geometrie(typen) und Objekt
-Materialien
-Beleuchtung(Diffus, Glanzlicht und Emission)
-Shader und Texturen(prozeduale und nichtprozeduale)
-Lightmaps, Normalmaps, schießmichtotmaps
-Partikeleffekte(Differentialgleichungen)
-Animationen

Das ist schon mal das Survival-Kit, bevor man entnervt aufgibt lach
Aber du musst damit rechnen, dass das je nach API mehr oder weniger stark voneinander abweichen kann.

Gruß
Tiamat

Nasenbaer
2011-07-08, 13:53:37
Vielleicht etwas spät - ansonsten kann ich aber noch jenes Buch empfehlen:
http://www.amazon.de/Introduction-Programming-DirectX-Wordware-Graphics/dp/1598220535/ref=sr_1_1?ie=UTF8&qid=1310125645&sr=8-1

Ja es handelt sich dabei "noch" um DirectX10 aber die DX11-Version kommt wohl erst 2012 raus. Der Unterschied von 10 zu 11 ist aber sehr gering. Und das bekommt man allemal mit dem DX SDK hin. Außerdem wird man hier, im Gegensatz zur anderen API-Einführungsbüchern nicht erst mit nem C++-Einstieg genervt und zur Mathe wird auch nur noch das wichtigste erzählt.

Achso oder halt ein Buch, dass nicht auf Programmierung eingeht aber konzeptionell so ziemlich alles abdeckt - so gesehen die bessere Alternative zum "Physically based Rendering.."-Buch, wenn es um Echtzeitgrafik geht:
http://www.amazon.de/Real-time-Rendering-Tomas-Akenine-Möller/dp/1568814240/ref=sr_1_1?s=books-intl-de&ie=UTF8&qid=1310126235&sr=1-1

Gerade letzteres war bei meiner Diplomarbeit ne gute Hilfe, da immer fein säuberlich die Quellen angegeben sind und man so schnell zu den notwendigen Referenzen kam. Dennoch wurde das Prinzip bereits im Buch leicht verständlich erklärt. Manche Paper waren dagegen recht wirr. ^^

Marscel
2011-07-08, 15:16:49
Vielleicht etwas spät - ansonsten kann ich aber noch jenes Buch empfehlen:
http://www.amazon.de/Introduction-Programming-DirectX-Wordware-Graphics/dp/1598220535/ref=sr_1_1?ie=UTF8&qid=1310125645&sr=8-1

Sieht gut aus. :)

Ich hab erstmal meine Klausurenphase, weswegen das eher schleppend vorangeht.

Das SDK ist übrigens nicht schlecht, für D3D10 gibts eine Menge Basistutorials, Anmerkungen, die MSDN-Doku. ist für das API absolut ausreichend und das Hintergrundwissen, ... naja, ggf Google. Wahrscheinlich werd ich das genannte Buch mal ordern.