GLSL - Почему побитовые операторы зарезервированы?Что является хорошей альтернативой использованию битовых операций (операций с плавающей запятой, которые эмулируют поразрядно) - PullRequest
5 голосов
/ 23 августа 2010

Я провожу несколько экспериментов в WebGL, один из которых - фрагментный шейдер с эффектом XOR По какой-то причине все побитовые операторы зарезервированы в GLSL и вызывают ошибку компилятора при использовании. Почему эти операторы незаконны? Что я могу использовать вместо | в этом случае?

Ответы [ 2 ]

3 голосов
/ 23 августа 2010

В спецификации GLSL 1.0 они были зарезервированы «для будущего использования», что было спецификацией 1.3. Это разрешено для целых чисел без знака и со знаком, как скалярных, так и векторных.

Вы должны начать свой шейдер с

#version 130
2 голосов
/ 19 мая 2011

Я тоже столкнулся с этой проблемой, например пытается запустить Slisesix в Shader Toy с помощью Chrome.

На этот вопрос есть два ответа, показывающие, как вы можете реализовать битовое XOR без битовых операторов. Они могут быть медленными, но в некоторых случаях они будут достаточно быстрыми. Лучше, чем ничего.

Вы также можете увидеть, является ли + достаточно близким приближением к битовой XOR, в зависимости от ваших требований.

...