problem with integer geometry attributes and batched shader execution
I maintainer di solito rispondono entro 1 giorno
@AlexMWells ci sta già lavorando.
Dal 8/2/2025.
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
I'm seeing a problem with batched execution that I've managed to distill to the repro case below with testshade. Basically, if I have an integer geometry attribute, then batched OSL execution seems to disregard what the renderer writes to the destination depending on what the default value is specified in the shader. For eample, suppose I have a shader with the following parameter declaration, int face_idx = 0 [[int lockgeom=0]], the value returned by the renderer doesn't make it to the shader. But in this case it does: face_idx = 2 [[int lockgeom=0]]. FWIW, a value of '1' also fails.
This is based on OSL-v1.14.2.0 which goes dates back to September so it's possible this has been fixed?
Here's my example shader:
shader example(int face_idx = 0 [[int lockgeom = 0]],
output color dst = 0)
{
dst = color(face_idx * 0.25, 0, 0);
}
A patch to add the face_idx user-data to batched testshade:
diff --git a/src/testshade/batched_simplerend.cpp b/src/testshade/batched_simplerend.cpp
index ea2acbdf..6618fba7 100644
--- a/src/testshade/batched_simplerend.cpp
+++ b/src/testshade/batched_simplerend.cpp
@@ -21,6 +21,7 @@ struct UniqueStringCache {
, red("red")
, green("green")
, blue("blue")
+ , face_idx("face_idx")
, lookupTable("lookupTable")
, blahblah("blahblah")
, options("options")
@@ -51,6 +52,7 @@ struct UniqueStringCache {
ustring red;
ustring green;
ustring blue;
+ ustring face_idx;
ustring lookupTable;
ustring blahblah;
ustring options;
@@ -663,7 +665,17 @@ BatchedSimpleRenderer<WidthT>::get_userdata(ustringhash name,
// For testing of interactions with default values
// may not provide data for all lanes
- if (name == ucache().s && Masked<float>::is(val)) {
+ if (name == ucache().face_idx && Masked<int>::is(val)) {
+ printf("found face_idx!\n");
+ Masked<int> out(val);
+ for (int i = 0; i < WidthT; ++i) {
+ if (out[i].is_on()) {
+ out[i] = int(4 * bsg->varying.u[i]);
+ }
+ }
+ return out.mask();
+ }
+ else if (name == ucache().s && Masked<float>::is(val)) {
Masked<float> out(val);
for (int i = 0; i < WidthT; ++i) {
// NOTE: assigning to out[i] will mask by itself
Command line:
env TESTSHADE_BATCH_SIZE=16 testshade --batched --res 256 256 -o dst output.exr example
Here are the images I get:
With face_idx = 0 [[in lockgeom=0]] I get the wrong image:
With face_idx = 2 [[in lockgeom=0]] I get the expected image:
Is anyone able to reproduce this?
Thanks!
- Lingua principale
- C++
- Stelle
- 2.3k
- Fork
- 415
- Merge medio
- 2g 14h
- PR unite (30g)
- 13
Preparare l'ambiente
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di AcademySoftwareFoundation/OpenShadingLanguage
-
build / testing / port / CI
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
AcademySoftwareFoundation/OpenShadingLanguage#2148 · 5 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
AcademySoftwareFoundation/OpenShadingLanguage#2109 · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 38/100
AcademySoftwareFoundation/OpenShadingLanguage#2175 ·
I maintainer di solito rispondono entro 1 giorno
-
Tracesets handling proposalAperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
AcademySoftwareFoundation/OpenShadingLanguage#2146 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
AcademySoftwareFoundation/OpenShadingLanguage#2135 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di AcademySoftwareFoundation/OpenShadingLanguage
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
grumpycoders/pcsx-redux#2171 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
bytedance/trae-agent#524 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Update OPENEXR_IMATH_TAGAperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 84/100
AcademySoftwareFoundation/openexr#2683 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
microsoft/onnxruntime#32881 ·
I maintainer di solito rispondono entro 1 giorno