2009-07-20 10 views
1

En tant qu'apprentissage, j'écris une application DirectX 9 gérée en mode immédiat.Calcul des normales de vertex dans DirectX

Je calcule manuellement les normales Vertex sur tous les triangles d'une scène pour permettre une ombrage Gouraud uniforme.

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 pour le faire pour moi?

Répondre

2

Vérifiez this et this.

+1

Notez que ces fonctions ne déchargent pas le travail sur le GPU, ce ne sont que des fonctions d'assistance qui sont basées sur le processeur. –

+0

Certaines fonctions D3DX sont horriblement lentes pour une raison quelconque. – Virne

3

Vous pourriez en théorie générer les normales de vertex à l'intérieur du vertex shader. Cela implique un calcul à chaque fois que vous rendez un maillage en utilisant ce shader, alors pourquoi ne pas le générer à l'avance. Si vous voulez dire que vous voulez les générer avant le rendu, mais utilisez le GPU au lieu du CPU, je dirais que ça ne vaut pas la peine d'accélérer quelque chose que vous allez faire une seule fois. En outre, je ne suis pas sûr si DX9 a un moyen de récupérer des informations de vertex calculées à partir d'un shader (DX10 fait). Dans l'ensemble, la meilleure chose à faire dans la plupart des cas est la traditionnelle: calcul normale vertex dans le programme qui enregistre les fichiers de données qui contiennent les maillages - le faire comme une étape de pré-calcul. Habituellement vous les avez si le mesh provenait d'un paquet 3d comme Max ou Maya, car il y a des informations artistiques dans les normales, à moins que vous sachiez que tout le maillage est supposé être parfaitement lisse (ou facetté), il n'est pas calculable dans le cas général .

+0

Peut-être qu'Ash fait quelque chose de différent que de rendre des objets statiques. Si la géométrie est générée ou modifiée par image, les normales doivent également être calculées. Quelques cubes de marche par exemple. – Virne

+0

Mais cela nécessite généralement une solution sur mesure (les normales de cubes de marche peuvent être obtenues de différentes façons, par exemple) - nous aurions donc besoin d'un contexte d'abord si c'est le cas. – nielsj

Questions connexes