Shaders : avec ou sans réserve ?

Résolu
eplanet Messages postés 112 Date d'inscription dimanche 6 juin 2004 Statut Membre Dernière intervention 19 septembre 2007 - 14 déc. 2006 à 15:14
Galmiza Messages postés 573 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 9 avril 2008 - 16 déc. 2006 à 22:18
Bonjour à tous, je fais programme avec DirectX et j'aurai aimé avoir votre avis sur cette question : est-ce que le "tout shader" (à la fois vertex et pixel) est une bonne idée ou vaut-il mieux utiliser les shaders avec réserve ?
    J'ai commencé à introduire des shaders dans mon programme, et je me retrouve avec des objets utilisant des textures et les outils de transformation de directX, et d'autres où les shaders font tout le travail de positionnement dans la scène, de texturage et d'éclairage. Je me suis dis que ce serai peut-être bien de généraliser l'utilisation des shaders à TOUS mes objets pour unifier les différents algorithme de rendu...
    Mais, il ne faudrait pas que ces shaders aient une mauvaise influence sur mon fps, et qu'ils puissent être utilisés en nombre quasi illimité... Qu'en pensez-vous ?

Vince

4 réponses

Galmiza Messages postés 573 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 9 avril 2008 1
14 déc. 2006 à 22:02
Je fais tout 100% shaders depuis assez longtemps, aucun problème de performances.
Même pour faire un éclairage bidon, j'utilise les shaders.
Je n'ai jamais atteint la limite de taille ou de nombre.
Jamais non plus eu le temps de faire des gros projets avec ...
3
eplanet Messages postés 112 Date d'inscription dimanche 6 juin 2004 Statut Membre Dernière intervention 19 septembre 2007
15 déc. 2006 à 13:41
Je te remercie Galmiza, je vais donc généraliser l'utilisation des shaders...
Bonne journée

Vince
0
dletozeun Messages postés 546 Date d'inscription vendredi 13 février 2004 Statut Membre Dernière intervention 9 janvier 2008 1
16 déc. 2006 à 21:59
Les shaders ne sont limités que par la puissance de ta carte graphique! En fait un shader reprogramme le pipeline de ta carte graphique de A à Z  et est éxécuté par la carte graphique. Donc c'est tres tres puissant puisque tu soulages le cpu de tout calcul sophistiqué comme pour l'eclairage, les ombres, le multitexturing, etc....
0
Galmiza Messages postés 573 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 9 avril 2008 1
16 déc. 2006 à 22:18
En fait tout le pipeline n'est pas reprogrammé, mais uniquement la phase de transformation des vertex et passage coordonnées 3D à 2D (vertex shader), ainsi que la coloration des pixels (pixel shader).
La carte calcule toute seule quels pixels sont à afficher (rasterization) sur le backbuffer et applique les filtres antialiasing, filtrage linéaire, bilinéaire, anisotropique etc sans intervention de notre part.

http://www.mangue.org/wiki/Direct3D_Le_pipeline_de_rendu

Lorsqu'on utilise pas explicitement des shaders, DirectX fait quand même appel aux fonctionnalités de la carte donc par exemple l'éclairage est calculée par la carte.
Donc le CPU ne travaille pas moins. On peut en outre limiter le dialogue CPU->GPU.
Les shaders permette de manipuler les vertex et les pixels à souhait pendant la phase de rendu.

Cependant, depuis un vertex shader on a accès qu'aux propriétés du vertex en cours... c'est donc encore très limité comme technique.
Idem pour le pixel.

Waw, je viens de trouver un excellent pdf sur l'histoire des cartes vidéos.

http://web.univ-pau.fr/~bjobard/Cours/SIA/Assets/Cours/Cours1_Evolution_cartes_graphiques.pdf

Mais bon... les géométries shader et les shaders 4.0 ne sont même pas abordés.
0
Rejoignez-nous