Шейдеры позволяют if(x>a && x<b)
, но я понимаю, что логические тесты медленные.Стоит ли оптимизировать его следующим образом:
mid = (a+b)*.5;
half = (b-a)*.5;
if(abs(x - mid) < half){...}
Кажется, кода гораздо больше, но со времен CPU ASM такие приемы иногда стоили делать.
Если half
и mid
может быть вычислено один раз на процессоре и передано в качестве параметров шейдера, тогда мы заменим: if(x>a && x<b)
на: if(abs(x - mid) < half)
- это это стоит потрудиться?
В моих тестахЯ вижу небольшое улучшение, тянущее half
и mid
в предварительно рассчитанные параметры шейдера, но у меня есть только один графический процессор для тестирования, поэтому я отвечаю на "общий" ответ, и если будут случаи, это будетзначительно лучше или хуже.