AcademySoftwareFoundation / AcademySoftwareFoundation/OpenColorIO
Invalid vector comparisons in HLSL shader code
- Lingua principale
- C++
- Stelle
- 2.1k
- Fork
- 503
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
In some cases OCIO generates invalid HLSL code like this:
`if ( gamma != float3(1., 1., 1.) )`
This fails compilation with the following error:
`error X3019: if statement conditional expressions must evaluate to a scalar`
The correct code should be:
`if ( any( gamma != float3(1., 1., 1.) ) )`
This is essentially the same issue as #1810 but for HLSL. There's already a fix in `GpuShaderText::vectorCompareExpression()` but it's only for Metal.
Can be reproduced using the OCIO config shipped with recent Blender versions, with some of the AgX looks. In our case we're creating a LegacyViewingPipeline containing a DisplayViewTransform and a looks override, similarly to the ociodisplay app.
Guida per i contributori
Apri la guida per i contributori
Direzione di ricerca
Inizia con GpuShaderText::vectorCompareExpression() e confronta la gestione esistente specifica per Metal con la generazione HLSL. Riproduci il problema usando la configurazione OCIO fornita con le versioni recenti di Blender e un AgX look, quindi verifica che i confronti vettoriali HLSL generati vengano compilati correttamente.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- cpp
- Ambito
- computer-graphics
- Tipo di issue
- Bug
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 55/100