A che punto entrano in gioco le limitazioni di MaxTextureRepeat?
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.
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.