Question

Je souhaite commencer à développer des jeux en utilisant XNA de Microsoft.Une partie de cela est le développement de Shader, mais je ne sais pas par où commencer.Je sais que Compositeur d'effets de nVidia est un excellent outil pour développer des shaders, mais je n'ai pas trouvé beaucoup de contenu utile et mis à jour sur la façon de démarrer réellement.

Quels tutoriels recommanderiez-vous ?

Était-ce utile?

La solution

Le développement de shaders sous XNA (qui utilise évidemment DirectX) nécessite la connaissance de HLSL ou un assemblage de shader.Je recommanderais de se familiariser avec le premier avant de plonger dans le second.

Avant d'écrire des shaders, c'est une bonne idée de bien comprendre le pipeline des shaders et d'essayer de comprendre ce qui est possible lors de l'utilisation de shaders programmables.Lorsque vous êtes familier avec la vie d'un pixel (des données sources jusqu'à l'écran), la compréhension des exemples de shaders devient beaucoup plus facile.

Ensuite, essayez d'écrire votre propre HLSL qui fait ce que le T&L fixes le faisait le pipeline, juste pour vous salir les mains.C'est l'équivalent d'un programme "hello world" dans le monde des vertex/pixel shader.Lorsque vous êtes capable de le faire et que vous comprenez ce que vous avez écrit, vous êtes prêt à passer à des choses plus amusantes.

Comme prochaine étape, vous souhaiterez peut-être simuler des éclairage profane dans l'un de vos shaders à partir d'une seule source de lumière.Vous pouvez ensuite l'adapter sur la piste pour utiliser plusieurs lumières.Jouez avec les couleurs et le mouvement des lumières.Cela vous aidera également à vous familiariser avec l’utilisation des constantes de shader.

Lorsque vous disposez de quelques shaders de base ensemble, vous devez essayer de faire en sorte que votre jeu/moteur utilise plusieurs shaders/différents sur différents objets.Commencez à ajouter d'autres éléments comme le basique bosse ou cartes normales.

Lorsque vous arrivez à ce stade, le monde est à vous.Vous pouvez commencer à vous plonger dans des effets géniaux et même envisager d'utiliser le GPU pour plus que ce qui était initialement prévu.

Pour ceux qui sont un peu plus avancés, il existe quelques bons livres disponibles gratuitement en ligne qui contiennent d'excellentes informations sur Nvidia. ici et ici.

N'oubliez pas qu'il existe une excellente série de livres appelée ShaderX qui couvre de superbes trucs sur les shaders.Il y a 1, 2, 3, 4, 5 et 6 déjà imprimé, et 7 arrive bientôt.

Bonne chance.Si vous lancez des shaders, j'aimerais les voir :)

Autres conseils

Je voudrais juste réitérer à quel point les livres GPU Gems sont formidables - une ressource vraiment fantastique pour tout développement graphique sérieux.

OJ a essentiellement résumé un très bon processus d'apprentissage, j'ajouterais simplement qu'avoir une bonne base en mathématiques géométriques (vecteurs/matrices au minimum) ne peut pas être sous-estimé - mais ce n'est pas aussi difficile que les gens le prétendent parfois.Apprendre ce que sont et ce que font un produit scalaire, un produit vectoriel, un vecteur normal et une multiplication matricielle est une bonne première étape :).Essayez de comprendre exactement ce qui se passe entre l'espace Monde/Vue/Projection-Clip/Écran, quelle est la division de perspective, etc.

Lorsque je commençais à apprendre, un bon exercice consiste à implémenter l'intégralité du pipeline T&L dans un logiciel, avec le découpage/l'élimination, etc.C'est un long processus et cela peut ne pas sembler utile car je suis sûr que vous voulez simplement vous plonger dans les choses amusantes, mais avoir une bonne compréhension de ce qui se passe est vraiment utile et s'avérera utile lorsque vous rencontrerez invariablement des problèmes plus insidieux et plus difficiles. pour diagnostiquer les bugs.

Essayez de ne pas être marginalisé avec des outils comme FX Composer au départ, ils sont utiles pour le prototypage, mais avoir une base solide dans les bases est bien plus intéressant à long terme.

L'une des meilleures façons de démarrer avec les shaders est de lire Introduction à la programmation de jeux 3D avec DirectX 9.0c, une approche shader de Frank Luna.L'auteur présente d'abord le DirectX et le HLSL puis révèle progressivement la puissance du shader.Il commence avec des shaders très simples mais à la fin du livre vous savez comment créer des éclairages, des ombres, des systèmes de particules, etc.Super livre.

OJ vous a suggéré de lire la série ShaderX, mais les éléments qui s'y trouvent ne sont pas destinés aux débutants et ne vous aideront donc pas beaucoup lorsque vous ferez vos premiers pas.

J'ai également posté un article ici sur les meilleurs livres qui vous aideront à démarrer dans le développement de jeux.

Je rejoindrais les éloges donnés à OJ - vraiment une bonne réponse.Néanmoins, une fois que vous avez compris les bases, vous pouvez apprendre beaucoup et rapidement en téléchargeant l'un des deux excellents outils suivants :

Une fois que vous avez fait cela, accédez à leurs bibliothèques de projets et commencez à parcourir des exemples, en commençant par l'ombrage de base et en passant aux ombres, au mappage normal, aux matériaux, aux effets et à tout ce qui vous intéresse.prenez un projet, commencez à modifier les algorithmes en fonction de certains objectifs que vous vous êtes fixés et voyez comment y parvenir.Vous constaterez que de nombreux exemples sont vraiment avancés et vous ouvriront les horizons.

Amusez-vous

Même si de nombreux bons conseils ont déjà été donnés, si vous avez du mal à bien comprendre les étapes à suivre, Moulin mental fournit un moyen visuel de construire des Shaders (l'Artist Edition est fournie gratuitement avec Fx Composer - elle-même également gratuite !).

Bien que vous feriez mieux d'apprendre directement le code HLSL à long terme, Mental Mill peut générer ces fichiers Fx pour vous (afin que vous puissiez jeter un œil aux modifications).Notez que, comme tous les générateurs de code, il est un peu plus verbeux que ce que vous êtes susceptible de faire une fois que vous aurez compris HLSL !

La progression visuelle des effets, d'une méthode à l'autre, est très impressionnante !

SAMS XNA déchaîné par Chad Carter est un excellent point de départ pour XNA et suppose peu de connaissances en matière de pratiques de développement de jeux ou de mathématiques difficiles avant de commencer.Il comporte deux chapitres sur les shaders de base et avancés.

En passant, gardez un œil sur Google pour les didacticiels WPF Shader, il utilise désormais la même technologie pour autoriser les shaders clients dans les applications WPF et les didacticiels pour cela, je crois, sont largement compatibles avec XNA.

Je n'ai pas utilisé XNA ou DirectX.Mais, pour connaître les bases de la programmation des shaders avec Cg, le Tutoriel Cg est le meilleur livre que j'ai trouvé.

Vous devriez également regarder RenderMonkey.C'est un bon outil.En ce qui concerne les livres, consultez les recettes de programmation de jeux XNA 2.0 de Riemer Grootjans...super livre.

Une réflexion rapide sur les éditeurs de shaders visuels.Ce type d'éditeurs est une chose très amusante à jouer, mais je recommanderais vraiment, vraiment de continuer à travailler avec du HLSL basé sur du texte (là, RM et FXC font le travail).Je travaille en tant que développeur de jeux et j'ai construit quelques systèmes de shaders (celui de Battlefield 2 et Farcry 2, par exemple) et, pour être honnête, j'ai découvert que HLSL est plus précieux que n'importe quel réseau de shaders graphiques à ce jour.

Il y a des choses comme suivre le flux d'exécution, déboguer le shader ou être capable d'itérer rapidement des cas de test qui vous donnent un aperçu quasiment impossible à obtenir via un outil visuel.

J'ai moi-même utilisé des générateurs de shaders visuels et je les aime bien. Un jour, lorsque l'ombrage ne sera plus aussi critique en termes de performances qu'aujourd'hui, ils pourraient être le bon outil pour le travail.

..même si je suppose que nous verrons un éclairage différé et probablement un rendu logiciel complet avant ce jour ;)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top