Shader jeglicher Komplexität können im Allgemeinen nicht wie austauschbare Zahnräder heruntergeladen und in Ihr Projekt eingefügt werden. In der Regel erfordern die interessanteren Effekte eine angemessene Kopplung an das CPU-seitige Rendering-Subsystem, um ihre Ergebnisse zu erzielen. Gleiches gilt im Allgemeinen für die Leistung - Leistungskompromisse in Bezug auf Genauigkeit und Qualität gegenüber der Anzahl der Anweisungen oder dem Pipelining beruhen in der Regel auf anwendungsspezifischen Anforderungen.
Infolgedessen steht der Art der Repositories, an die Sie denken, nicht viel im Wege. Die GPU Gems-Bücher bieten eine gute Sammlung von Beschreibungen von Techniken im Stil eines Kochbuchs mit Spiel- und schattierten Codebeispielen, die Sie sich vielleicht ansehen möchten. So auch die Shader X-Bücher.
Nicht viel, aber zumindest ein paar grundlegende Shader für den Einstieg finden Sie auch zwischen meinen Open Sorce Engines-Dateien:
Die .vsh-Dateien enthalten die Vertex-Shader und die .fsh-Dateien die Fragment-Shader, aber ich denke, das ist selbsterklärend ...
Auf der aktuellen mobilen Hardware sollten Sie so viel wie möglich im Vertex-Shader tun. Der Trick für großartig aussehende und schnelle Spiele besteht darin, viele sehr spezialisierte Shader zu schreiben, die immer genau das tun, was erforderlich ist, damit etwas so aussieht, wie es soll. Zumindest ist das meine Erfahrung mit meinem iPhone 3GS, das dieselbe GPU wie das iPhone 4 bietet, aber weniger Pixel hat, für die Daten geliefert werden müssen. Dies ist höchstwahrscheinlich bereits viel besser mit Tegra 2 und noch besser mit Äpfeln A5-Chip, aber im Moment bedeutet dies, dass Sie nicht versuchen sollten, Shader für Desktop-GPUS auf Mobiltelefone zu portieren und eine großartige Leistung zu erwarten: P Dies bedeutet auch, dass Vollbild Effekte, insbesondere bei Geräten mit hochauflösendem Display, sind in der Regel langsam.
Hoffe das hilft auch ein bisschen :).
quelle
könnte etwas von dem arkanen Wissen von hier entreißen http://glslsandbox.com/
quelle
Als ich nach der Implementierung von Nebel unter OpenGL ES 2.0 gesucht habe, habe ich einen Link zur abwärtskompatiblen Projektimplementierungsfunktion von OpenGL ES 2.0 gefunden , die nicht in OpenGL ES 2.0 enthalten ist, z. B. Nebel pro Scheitelpunkt pro Fragment (Pixel). Sie können direkt in die Shader-Quelle schauen .
Ich habe auch die Beleuchtung pro Fragment implementiert und dieses von ClockworkCoders (nicht OpenGL ES 2.0) erstellte Beispiel geändert .
Sie können sich auch diese großartigen Tutorials von lighthouse3D ansehen
quelle
Das AMD RenderMonkey-Paket enthält unter den Beispieldateien sehr erweiterte Shader für OpenGL ES 2.0.
Schauen Sie sich insbesondere das Renderman-Shader-Beispiel im GLES-Beispielverzeichnis an, das einen mehr oder weniger nackten OpenGL ES 2.0-Shader bietet, der als guter Ausgangspunkt dienen könnte. Vielleicht geben Sie auch eine gute Vorstellung davon, warum es nicht viele Beispiele für gute Shader zum Ausschneiden und Einfügen gibt. Das Grundproblem: Die Shader sind eng mit der OpenGL ES-Serverkonfiguration und den darauf gerenderten Modellen verbunden. Immer noch. Der Renderman-Shader ist ein ausgezeichneter Ausgangspunkt, wenn Sie ihn mit dem REnderMonkey-Tool lösen können.
quelle
Schauen Sie sich GPUImage ( https://github.com/BradLarson/GPUImage ) an, die wahrscheinlich vollständigste Sammlung von Shadern, die ich bisher im Web gefunden habe. Da sie alle für die Arbeit mit GPUImage ausgelegt sind, haben sie alle dieselbe Struktur. Wenn Sie also dieselbe Struktur in Ihrer Anwendung / Ihrem Spiel anpassen, sollten Sie in der Lage sein, schnell eine Reihe verschiedener Effekte zu importieren.
Prost!
quelle