eplanet
Messages postés112Date d'inscriptiondimanche 6 juin 2004StatutMembreDernière intervention19 septembre 2007
-
14 déc. 2006 à 15:14
Galmiza
Messages postés573Date d'inscriptionsamedi 16 novembre 2002StatutMembreDerniè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 ?
Galmiza
Messages postés573Date d'inscriptionsamedi 16 novembre 2002StatutMembreDernière intervention 9 avril 20081 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 ...
dletozeun
Messages postés546Date d'inscriptionvendredi 13 février 2004StatutMembreDernière intervention 9 janvier 20081 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....
Galmiza
Messages postés573Date d'inscriptionsamedi 16 novembre 2002StatutMembreDernière intervention 9 avril 20081 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.
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.