Ho sentito che se le dichiarazioni dovessero essere evitate negli shader, poiché entrambe le parti delle istruzioni verranno eseguite e verrà eliminato il torto (il che danneggerebbe le prestazioni).
È ancora un problema in DirectX 10? Qualcuno mi ha detto che in esso verrà eseguito solo il ramo giusto.
Per l'illustrazione ho il codice:
float y1 = 5; float y2 = 6; float b1 = 2; float b2 = 3;
if(x>0.5){
x = 10 * y1 + b1;
}else{
x = 10 * y2 + b2;
}
C'è un altro modo per renderlo più veloce?
In tal caso, come si fa?
Entrambi i rami sembrano simili, l'unica differenza sono i valori di "costanti" ( y1, y2, b1, b2
sono gli stessi per tutti i pixel in Pixel Shader).