AcademySoftwareFoundation / AcademySoftwareFoundation/OpenColorIO

Invalid vector comparisons in HLSL shader code

Ouverte
#2,108 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
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

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.