Domanda

Quando si esegue un pixel shader in Direct3D, i limiti sulle coordinate delle trame imposti da MaxTextureRepeat diventano un problema solo durante le chiamate alle funzioni di ricerca delle trame come Tex2D () o entrano in gioco ogni volta che si accede alle coordinate delle trame all'interno del Shader?

Vorrei sapere se è possibile evitare la limitazione MaxTextureRepeat chiamando qualcosa come frac () sulle coordinate delle trame prima di passarle alla funzione di ricerca delle trame.

È stato utile?

Soluzione

Le coordinate della trama sono alla precisione dell'interpolatore nativo. Sull'hardware compatibile con pixel shader 2.0, questo è almeno 24 bit in virgola mobile (o forse 32 bit, non sono sicuro). Internamente i calcoli in pixel shader devono essere in virgola mobile di almeno 24 bit. La maggior parte delle GPU moderne funzionano con precisione in virgola mobile a 32 bit.

MaxTextureRepeat è la capacità dell'hardware di campionamento delle trame.

Quindi, sì, se non si incontrano limiti di precisione in virgola mobile, quindi limitare l'intervallo prima del campionamento è un modo per evitare i limiti di ripetizione della trama.

Tuttavia, dove frac passa da 0 a 1 otterrai grandi gradienti, quindi in quei punti la GPU vorrà usare un livello mip a risoluzione molto bassa. Questo non può essere un problema a seconda della situazione ovviamente; ma è un punto di potenziali problemi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top