Adsk Contrib - Modify half-domain LUT1D GPU shader to improve zero handling #1981
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Made a small improvement in the GPU shader for half-domain LUT1D ops.
The half-domain LUT1D is structured like a half-float and so it has two entries for zero (positive and negative). The shader was looking up positive 0 at the negative 0 entry. Normally, a half-domain LUT1D should set +0 and -0 to the same value, so in practice this should not be an issue, but it is now more technically correct. I added a unit test to verify this (it failed prior to the shader adjustment, the GPU matched the CPU at -0 rather than +0).
In addition, I clarified the code that scales denorms in that shader. This is numerically equivalent but might be somewhat clearer to read.
Finally, I added an unrelated but potentially useful unit test to verify that the cacheID of a Processor containing a LUT3D changes if one of the LUT entries changes.