Question

Comme une expérience d'apprentissage, j'écris un mode immédiat géré par une application DirectX 9.

Je calcul manuellement Normales Vertex à travers tous les triangles dans une scène pour permettre l'ombrage de Gouraud lisse.

Cela fonctionne comme prévu, mais je suppose que ce n'est pas l'approche la plus efficace. Est-il possible d'obtenir le GPU de le faire pour moi?

Était-ce utile?

La solution

Vérifier cette et cette .

Autres conseils

Vous pouvez en théorie générer le sommet Normales à l'intérieur du vertex shader. Cela implique calcul chaque fois que vous restituez un maillage en utilisant ce shaders, donc pourquoi ne pas générer à l'avance.

Si vous voulez dire que vous voulez les générer à l'avance de rendu, mais utiliser le GPU au lieu du CPU, je dirais que ça ne vaut pas la peine d'accélérer quelque chose que vous allez seulement faire une fois. D'ailleurs, je ne suis pas sûr si DX9 a une façon d'obtenir des informations de sommet calculé à partir d'un retour shader (DX10 fait).

Dans l'ensemble, la meilleure chose à faire dans la plupart des cas est le traditionnel: Normales sommet de calcul dans le programme qui enregistre les fichiers de données qui contiennent les mailles - faire comme une étape de pré-calcul. En général, vous les avez si le maillage est venu d'un paquet 3D comme Max ou Maya, parce qu'il ya des informations artistiques dans les Normales, à moins que vous savez tout le maillage est censé être parfaitement lisse (ou facettes), ce n'est pas calculable dans le cas général .

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