AcademySoftwareFoundation / AcademySoftwareFoundation/OpenColorIO
Invalid vector comparisons in HLSL shader code
- Langage dominant
- C++
- Étoiles
- 2.1k
- Forks
- 503
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
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.
Guide de contribution
Ouvrir le guide de contribution
Piste de recherche
Commencez par GpuShaderText::vectorCompareExpression() et comparez la gestion existante spécifique à Metal avec la génération HLSL. Reproduisez le problème en utilisant la configuration OCIO fournie avec les versions récentes de Blender et un look AgX, puis vérifiez que les comparaisons vectorielles HLSL générées se compilent correctement.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- cpp
- Domaine
- computer-graphics
- Type d'issue
- Bug
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 55/100