2010-08-22 11 views
5

Sto eseguendo alcuni esperimenti in WebGL, uno dei quali è uno shader di frammenti di effetto XOR. Per qualche motivo, tutti gli operatori bit a bit sono riservati in GLSL e causano un errore del compilatore quando utilizzato. Perché questi operatori sono illegali? Cosa posso usare al posto di | in questo caso?GLSL - Perché gli operatori bit a bit sono riservati? Qual è una buona alternativa all'utilizzo di operazioni bitwise (operazioni in virgola mobile che emulano bit per bit)

+0

Hai menzionato un effetto XOR, ma poi hai detto "invece di' | '" (l'operatore OR bit a bit). Intendevi "invece di'^'"? – LarsH

+0

Beh, stavo cercando il primo effetto di questo post - http://mrdoob.com/blog/post/623 L'autore lo ha chiamato l'effetto "XOR", quindi scimmia vedi scimmia. Il suo nome potrebbe avere più a che fare con l'aspetto dell'effetto che il codice per influenzarlo. – schellsan

risposta

3

Nella specifica GLSL 1.0, erano riservati "per uso futuro", che era la specifica 1.3. È consentito per interi non firmati e firmati, sia scalari che vettoriali.

Si dovrebbe iniziare la Shader da

#version 130 
+1

Grazie, suppongo che la versione 1.3 non sia supportata su Webgl di Chromium, poiché sto ricevendo l'errore "Numero di versione non supportato da ESSL" – schellsan

+0

La maggior parte delle volte è possibile risolvere xor con if(): i = 0; if (cond1) i ++; if (cond2) i ++; if (i == 1) .... – Calvin1602

+0

per XOR logico, sì ... ma la domanda era per * bitwise * XOR; come fai a risolverlo? – LarsH

2

mi sono imbattuto in questo problema anche, ad esempio, cercando di eseguire Slisesix in Shader Toy utilizzando Chrome.

This question ha due risposte che mostrano i modi in cui è possibile implementare XOR bit a bit senza operatori bit a bit. Potrebbero essere lenti, ma in alcuni casi sarebbero abbastanza veloci. Meglio di niente.

Si potrebbe anche vedere se + è un'approssimazione abbastanza vicina a XOR bit a bit, a seconda di quali sono i requisiti.

+1

Grazie! Vorrei poter scegliere anche questa risposta. – schellsan

Problemi correlati