Question

Lorsque vous exécutez un pixel shader sous Direct3D, les limites des coordonnées de texture imposées par MaxTextureRepeat ne deviennent-elles un problème que lors des appels à des fonctions de recherche de texture telles que Tex2D (), ou entrent-elles en jeu chaque fois que les coordonnées de texture sont accessibles shader?

Je souhaite savoir s'il est possible d'éviter la limitation MaxTextureRepeat en appelant quelque chose comme frac () sur les coordonnées de la texture avant de les transmettre à la fonction de recherche de texture.

Était-ce utile?

La solution

Les coordonnées de texture sont à la précision de l'interpolateur natif. Sur un matériel compatible avec le shader pixel 2.0, il s'agit d'au moins 24 bits en virgule flottante (ou peut-être de 32 bits, pas sûr). En interne, les calculs dans pixel shader doivent comporter au moins 24 bits en virgule flottante. La plupart des GPU modernes fonctionnent avec une précision de virgule flottante de 32 bits.

MaxTextureRepeat est la capacité du matériel d'échantillonnage de texture.

Donc, oui, si vous ne rencontrez pas de limites de précision en virgule flottante, limiter l’étendue avant l’échantillonnage est un moyen d’éviter les limites de répétition de la texture.

Toutefois, lorsque la fracturation passe de 0 à 1, vous obtenez des gradients élevés. Par conséquent, le GPU souhaite utiliser un niveau de résolution très faible. Cela peut ne pas être un problème en fonction de votre situation bien sûr; mais c'est un point de problème potentiel.

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