1
シェイダーではif(x>a && x<b)
が許されますが、私の理解は論理テストが遅いです。これは、線に沿って最適化する価値がある:シェーダプログラミング - 2つの値の間でテストする場合
mid = (a+b)*.5;
half = (b-a)*.5;
if(abs(x - mid) < half){...}
それはより多くのコードをようだが、CPUのASMの日から、そのようなトリックは時々やる価値でした。
half
とmid
はCPUに一度計算し、シェーダのパラメータとして渡すことができれば、我々は交換してください:とif(x>a && x<b)
:if(abs(x - mid) < half)
は - で悩ま価値がこののですか?
私のテストでは、half
とmid
をあらかじめ計算されたシェーダパラメータに引き上げていますが、テストするGPUは1つだけですので、私は一般的な答えの後にあります。それは劇的に良くなったり悪くなったりするでしょう。