Saya telah mendengar bahwa jika pernyataan harus dihindari dalam bayangan, karena kedua bagian dari pernyataan akan dieksekusi, dan daripada yang salah akan dijatuhkan (yang merusak kinerja).
Masih menjadi masalah di DirectX 10? Seseorang mengatakan kepada saya, bahwa di dalamnya hanya cabang yang tepat yang akan dieksekusi.
Sebagai ilustrasi saya punya kode:
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;
}
Apakah ada cara lain untuk membuatnya lebih cepat?
Jika demikian, bagaimana caranya?
Kedua cabang terlihat serupa, satu-satunya perbedaan adalah nilai-nilai "konstanta" ( y1, y2, b1, b2
sama untuk semua piksel dalam Pixel Shader).