OpenGL ES 2.0: Référentiel de shaders de qualité [fermé]

10

Puis-je vous demander de bien vouloir me proposer un référentiel de vertex et de shaders de fragments OpenGL (OpenGL ES 2.0) de haute qualité , s'il vous plaît?

Je recherche des shaders de ligting basés sur les pixels (comme le phong ) et simmilar. Ce serait bien d'en voir plus, de pouvoir choisir entre la qualité et les performances du shader.

Bunkai.Satori
la source

Réponses:

16

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.


la source
+1 pour un commentaire très précieux. Salut, Josh. Merci pour votre réponse. Eh bien, si une personne est au début du développement des shaders, cela aiderait vraiment à voir comment certains shaders standard sont mis en œuvre: par exemple comment Phong (qui est un algorithme très standard) est exécuté, des shaders d'éclairage pixel, etc. Je comprends votre et les sources que vous avez fournies sont un bon matériau. Je vais les regarder. Jusqu'à présent, les meilleures ressources que j'ai trouvées sont: le livre OpenGL Shading Language et le site Lighthouse 3D.
Bunkai.Satori
2
Je serais donc toujours heureux d'accueillir des dépôts de shaders de bonne qualité , illustrant le développement d'effets intéressants. Les scripts peuvent être utilisés comme sous-sol pour les combiner et créer de nouveaux effets attrayants.
Bunkai.Satori
@Bunkai Satori Je pense que Josh voulait dire que ce genre de référentiels n'existe pas principalement.
Le canard communiste
@Le canard communiste: Bonjour, merci pour votre commentaire. Je comprends que. Je suis reconnaissant pour chaque réponse ici, et pour celle de Josh aussi. Cependant, ce qui m'est venu à l'esprit, c'est que l'Internet est si grand, que peut-être quelqu'un d'autre que Josh se souviendra d'avoir vu des endroits pour s'inspirer de shaders particuliers. Je peux imaginer qu'une entreprise / un particulier utilisant beaucoup de shaders les collecterait et que certains d'entre eux pourraient également les publier. La réponse de Josh est mon candidat pour la réponse acceptée de toute façon, donc si personne ne contribue sous peu, je fermerai ce fil en marquant sa réponse.
Bunkai.Satori
13

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 :).

Slin
la source
Bonjour, bienvenue au GDSE. Bonne réponse!
Notabene
+1 pour une bonne réponse. Salut Slin, et bienvenue à GDSE. Merci pour cette bonne réponse et pour l'exemple. Je suis heureux que vous ayez partagé votre expérience avec la programmation de shaders pour plate-forme mobile. En ce moment, je fais tout le développement sur PC, en prévoyant de porter plus tard. Votre expérience sera donc appréciée.
Bunkai.Satori
9

pourrait arracher une partie des connaissances mystérieuses d'ici http://glslsandbox.com/

UlanB
la source
Salut UlanB. Cette collection est superbe. Pouvez-vous me dire comment je peux télécharger ces shaders. J'obtiens une erreur disant "WebGL non pris en charge" lorsque j'essaie d'ouvrir l'une des collections de shaders dans Chrome. Je vous remercie.
Vinodtiru
Je suis désolé, je ne peux pas vraiment vous fournir de support technique sur la compatibilité webgl. Probablement votre matériel qui ne prend pas en charge webgl. Les versions Linux de Chrome ne le prennent pas encore en charge.
UlanB
4

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

martin pilch
la source
+1 pour un bon commentaire. Salut Martin, merci pour vos liens. ouais, j'ai trouvé Lighthouse3D, et ça ressemble à une ressource de qualité.
Bunkai.Satori
1

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.

rerdavies
la source
1

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é!

ekscrypto
la source