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)
risposta
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
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
La maggior parte delle volte è possibile risolvere xor con if(): i = 0; if (cond1) i ++; if (cond2) i ++; if (i == 1) .... – Calvin1602
per XOR logico, sì ... ma la domanda era per * bitwise * XOR; come fai a risolverlo? – LarsH
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.
Grazie! Vorrei poter scegliere anche questa risposta. – schellsan
- 1. Operazioni bit a bit su numeri non
- 2. Sostituire operazioni bit a bit in ESLint
- 3. Operazioni bit a bit a 48 bit in Javascript?
- 4. Elenco Python per operazioni bit a bit
- 5. Operazioni bit a bit in OCaml
- 6. operazioni bit per bit in Postgres
- 7. Come si eseguono operazioni bit in glsl
- 8. operazioni Mysql bit per bit e filtrare
- 9. di PHP in operazioni bit per bit restituisce valori strani
- 10. Operatori bit a bit e "endianness"
- 11. operazioni bit a bit sul vettore <bool>
- 12. operazioni bit per bit con CGBitmapInfo e CGImageAlphaInfo
- 13. Prestazioni di operazioni a numero intero e bit a bit su GPU
- 14. operatori booleani vs operatori bit a bit
- 15. Tipo di ritorno di operatori bit a bit in C++
- 16. In Nimrod, qual è la sintassi per le operazioni bit a bit?
- 17. Operazioni di bit-lanciando in T-SQL
- 18. Istruzione condizionale con operatori bit a bit
- 19. CUDA: Perché gli operatori bit a bit sono talvolta più veloci degli operatori logici?
- 20. Alcune domande sugli operatori bit a bit
- 21. Esiste un modo per simulare operazioni bit a bit su interi per _m256 tipi su AVX?
- 22. Perché esiste una distinzione tra operatori logici e bit a bit in Java e C#?
- 23. Perché le operazioni bit a bit erano leggermente più veloci delle operazioni di addizione/sottrazione su microprocessori precedenti?
- 24. In che modo le operazioni if-statement e bit a bit sono le stesse in questo esempio?
- 25. Operatore bit a bit per ottenere byte da 32 bit
- 26. Qualcuno può spiegare a me le operazioni di bit bit ARM?
- 27. Come eseguire query bit a bit su DB in Django?
- 28. C# Operazioni bit a bit su cortocircuiti - Perché trasmettere a un int?
- 29. Il risultato delle operazioni bit a bit sui tipi di integrale firmato è ben definito?
- 30. Precedenza dell'operatore (bit a bit '&' inferiore a '==')
Hai menzionato un effetto XOR, ma poi hai detto "invece di' | '" (l'operatore OR bit a bit). Intendevi "invece di'^'"? – LarsH
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