Les shaders de toute complexité ne sont généralement pas le genre de choses que vous pouvez télécharger et déposer dans votre projet comme des rouages interchangeables. En règle générale, les effets les plus intéressants nécessitent un bon couplage avec le sous-système de rendu côté processeur afin d'obtenir leurs résultats. Il en va généralement de même pour les performances - les compromis de performances en termes de précision et de qualité par rapport au nombre d'instructions ou de pipelining ont tendance à être enracinés dans des exigences spécifiques à l'application.
Par conséquent, il n'y a vraiment pas grand-chose du type de référentiels auquel vous pensez. Les livres GPU Gems offrent une bonne collection de descriptions de techniques de style livre de cuisine avec des exemples de jeu et de code ombré que vous voudrez peut-être regarder, cependant. Il en va de même pour les livres Shader X.
Pas beaucoup, mais au moins quelques shaders de base pour commencer peuvent également être trouvés entre mes fichiers de moteurs de sorce ouverts:
les fichiers .vsh contiennent les vertex shaders et les fichiers .fsh les fragments shaders, mais je suppose que c'est auto-explicatif ...
Sur le matériel mobile actuel, vous devriez faire autant que possible dans le vertex shader et l'astuce pour des jeux superbes et rapides est d'écrire de nombreux shaders très spécialisés faisant toujours exactement ce qui est nécessaire pour donner à quelque chose l'apparence voulue. C'est du moins mon expérience avec mon iPhone 3GS, qui présente le même processeur graphique que l'iPhone 4 mais a moins de pixels pour fournir des données. C'est probablement déjà beaucoup mieux avec tegra 2 et encore mieux avec la puce A5 de pommes, mais pour l'instant, cela ne signifie pas que vous ne devriez pas essayer de porter des shaders pour les gpus de bureau sur les téléphones mobiles et vous attendre à de grandes performances: P Cela signifie également que le plein écran les effets, en particulier sur les appareils dotés d'un écran haute résolution, ont tendance à être lents.
J'espère que cela aide aussi un peu :).
la source
pourrait arracher une partie des connaissances mystérieuses d'ici http://glslsandbox.com/
la source
Lorsque je cherchais comment implémenter le brouillard sous OpenGL ES 2.0, j'ai trouvé un lien vers la fonctionnalité d'implémentation de projet compatible avec OpenGL ES 2.0 , qui n'est pas dans OpenGL ES 2.0, par exemple le brouillard, par sommet, par fragment (pixel) d'ombrage. Vous pouvez regarder directement dans la source des shaders .
J'ai également implémenté l'éclairage par fragment, modifiant cet exemple créé par ClockworkCoders (pas OpenGL ES 2.0).
Vous pouvez également jeter un œil à ces super tutoriels de lighthouse3D
la source
Le package AMD RenderMonkey contient des shaders très avancés pour OpenGL ES 2.0 parmi les fichiers d'exemple.
Jetez un œil en particulier à l'exemple de shader Renderman dans le répertoire des échantillons GLES, qui fournit un shader OpenGL ES 2.0 plus ou moins dépouillé qui pourrait servir de bon point de départ. Et cela pourrait aussi vous donner une bonne idée de la raison pour laquelle il n'y a pas beaucoup d'exemples de couper-coller de bons shaders. Le problème de base: les shaders sont étroitement couplés à la configuration du serveur OpenGL ES et aux modèles qui y sont rendus. Encore. Le shader Renderman est un excellent point de départ, si vous pouvez le détacher de l'outil REnderMonkey.
la source
Jetez un œil à GPUImage ( https://github.com/BradLarson/GPUImage ), c'est probablement la collection de shaders la plus complète que j'ai trouvée sur le Web jusqu'à présent. Comme ils sont tous conçus pour fonctionner avec GPUImage, ils partagent tous la même structure, donc si vous adaptez la même structure dans votre application / jeu, vous devriez pouvoir importer rapidement un certain nombre d'effets différents.
À votre santé!
la source