AcademySoftwareFoundation / AcademySoftwareFoundation/OpenShadingLanguage
[BUG] Bad output indices from `pointcloud_search()` with batched shading
- Langage dominant
- C++
- Étoiles
- 2.3k
- Forks
- 414
- Merge moyen
- 3 j 1 h
- PR mergées (30 j)
- 10
Description
**Describe the bug**
When using `pointcloud_search()` with batched shader execution, the output `indices` array is not being filled correctly. It looks a little like OSL thinks the output is a uniform rather than a varying value, but I don't know enough about what is going on under the hood to be sure.
**OSL version and dependencies**
* OSL branch/version: 1.14.5.1
* OS: Rocky 8.8
* C++ compiler: GCC 11.2.1
* LLVM version: 15.0.7
* OIIO version: 3.0.6.1
**To Reproduce**
Steps to reproduce the behavior:
1. `oslc search.osl` (source code in section below).
2. `testshade -g 16 16 -batched -param file cloud.geo search.oso -o Cout batched.png`
3. `testshade -g 16 16 -param file cloud.geo search.oso -o Cout unbatched.png`
4. Compare `batched.png` to `unbatched.png`. The latter has the expected results, and the former does not.
In the above commands, `cloud.geo` is `testsuite/pointcloud-fold/cloud.geo` from the OSL repo.
**Evidence**
search.osl
```
shader search( string file = "", output color Cout = 0 )
{
int indices[1];
// Uncommenting this workaround gives the expected results in batched
// mode. I suspect it works by tricking OSL into realising that `indices`
// is a varying quantity.
// indices[0] = P[0];
if( pointcloud_search( file, P, 1, 1, "index", indices ) )
{
Cout = color( indices[0] / 15.0 );
}
else
{
Cout = color( 1, 0, 0 );
}
}
```
batched.png :
unbatched.png :
Guide de contribution
Ouvrir le guide de contribution
Piste de recherche
Exécutez les commandes oslc et testshade indiquées avec testsuite/pointcloud-fold/cloud.geo, puis comparez les sorties groupée et non groupée. Commencez au point d’entrée pointcloud_search et suivez la manière dont le tableau d’indices de sortie est géré pendant l’exécution groupée. Le travail est terminé lorsque batched.png correspond aux résultats non groupés attendus sans le workaround.
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é
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 40/100