-
Notifications
You must be signed in to change notification settings - Fork 373
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
problem with integer geometry attributes and batched shader execution #1929
Comments
I am able to reproduce the problem, think the caching of get_userdata might be broken vs. obtaining the value from the renderer. |
Adding
Which means face_idx can be only be 0 or 1. When an integer is only assigned a 0 or 1, it is allowed to be forced to be a true boolen vs. an integer. This is why you got correct results when you had initialized face_idx=2, it wasn't allowed to treat the face_idx as a bool. So some extra logic need to be added to disqualify the "force boolean" when a parameter is bound. |
I'm not sure I understand how the force boolean comes into play here? |
Its a bug in Batched Analysis, it is not properly considering get_userdata could write any integer value to face_idx. It is only looking at the lack of writers to face_idx in the .oso and the default value. With With |
I have a fix now, just need to clean it up, should be able to post PR tomorrow. |
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:
A patch to add the
face_idx
user-data to batchedtestshade
: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!
The text was updated successfully, but these errors were encountered: