Shadery o dowolnej złożoności nie są na ogół rzeczami, które można pobrać i upuścić w swoim projekcie, jak wymienne koła zębate. Zazwyczaj bardziej interesujące efekty wymagają sporego sprzężenia z podsystemem renderowania po stronie procesora, aby osiągnąć swoje wyniki. To samo ogólnie dotyczy wydajności - kompromisy w wydajności w odniesieniu do dokładności i jakości w porównaniu z liczbą instrukcji lub potokiem są zwykle zakorzenione w specyficznych wymaganiach aplikacji.
W rezultacie tak naprawdę nie ma wiele na temat repozytoriów, o których myślisz. Książki z Klejnotami GPU oferują dobrą kolekcję opisów technik w stylu książki kucharskiej z przykładami gier i kodu zacieniowanego, na które warto jednak spojrzeć. Podobnie jak książki Shader X.
Niewiele, ale przynajmniej kilka podstawowych shaderów na początek można znaleźć między moimi plikami otwartych silników magii:
pliki .vsh zawierają moduły cieniujące wierzchołki, a pliki .fsh - moduły cieniujące fragmenty, ale myślę, że to samo wyjaśnienie ...
Na obecnym sprzęcie mobilnym powinieneś zrobić jak najwięcej w cieniowaniu wierzchołków, a sztuczką dla świetnie wyglądających i szybkich gier jest napisanie wielu bardzo wyspecjalizowanych shaderów robiąc zawsze dokładnie to, co jest potrzebne, aby coś wyglądało tak, jak powinno. Przynajmniej takie są moje doświadczenia z moim iPhonem 3GS, który ma tę samą kartę graficzną co iPhone 4, ale ma mniej pikseli do dostarczenia danych. Prawdopodobnie jest to już znacznie lepsze w przypadku Tegra 2, a jeszcze lepiej w przypadku układu A5 jabłek, ale na razie oznacza to, że nie powinieneś próbować przenosić shaderów dla komputerów stacjonarnych na telefony komórkowe i oczekiwać doskonałej wydajności: P Oznacza to również, że pełny ekran efekty, szczególnie na urządzeniach z wyświetlaczem o wysokiej rozdzielczości, są zwykle powolne.
Mam nadzieję, że to trochę pomoże :).
źródło
może zdobyć część tajemnej wiedzy z tego miejsca http://glslsandbox.com/
źródło
Kiedy szukałem sposobu implementacji mgły w OpenGL ES 2.0, znalazłem link do funkcjonalności implementacji projektu kompatybilnej wstecz z OpenGL ES 2.0 , która nie jest w OpenGL ES 2.0, na przykład mgła, na wierzchołek, na cieniowanie fragmentu (piksela). Możesz zajrzeć bezpośrednio do źródła shaderów .
Wdrażam także oświetlenie fragmentów, modyfikując ten przykład utworzony przez ClockworkCoders (nie OpenGL ES 2.0).
Możesz także zapoznać się z tymi świetnymi samouczkami lighthouse3D
źródło
Pakiet AMD RenderMonkey zawiera bardzo zaawansowane shadery dla OpenGL ES 2.0 wśród przykładowych plików.
Spójrz szczególnie na próbkę modułu cieniującego Rendermana w katalogu próbek GLES, który zapewnia mniej lub bardziej otwarty moduł cieniujący OpenGL ES 2.0, który może służyć jako dobry punkt wyjścia. I może również dać ci dobry pomysł, dlaczego nie ma wielu przykładów dobrych shaderów. Podstawowy problem: że shadery są ściśle powiązane z konfiguracją serwera OpenGL ES i modelami, które są na nich renderowane. Nadal. Moduł cieniujący Renderman jest doskonałym punktem wyjścia, jeśli możesz go podważyć za pomocą narzędzia REnderMonkey.
źródło
Spójrz na GPUImage ( https://github.com/BradLarson/GPUImage ), jego prawdopodobnie najbardziej kompletną kolekcję shaderów, jaką do tej pory znalazłem w Internecie. Ponieważ wszystkie zostały zaprojektowane do współpracy z GPUImage, wszystkie mają tę samą strukturę, więc jeśli dostosujesz tę samą strukturę w swojej aplikacji / grze, powinieneś być w stanie szybko zaimportować wiele różnych efektów.
Twoje zdrowie!
źródło