AcademySoftwareFoundation / AcademySoftwareFoundation/OpenColorIO

Invalid vector comparisons in HLSL shader code

Aperta
#2,108 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
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

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.