Add support for closures to the batched interface. The renderer interface for closures, including registering and processing them remains unchanged. The Ci variable in BatchedShaderGlobals has moved from the uniform portion to the varying portion, which may require changes to any renderer code that was utilizing the BatchedShaderGlobals. To utilize closures with the batched interface, you register the closures per usual, then once shading has finished, the Ci in BatchedShaderGlobals will contain an Block of pointers to the roots of a closure trees that can be processed independently just like in the normal single-point interface. This initial implementation is largely functional, however, there may be more optimization gains available in the code that copies the run-time SIMD values and scatters them to the separate closure-data locations. One remaining un-implemented feature is passing _closures_ via get/setmessage() when using the batched shading interface, and the locations where that would need to be implemented are marked in the source. Signed-off-by: Stephen Friedman <sfriedma@pixar.com> * Address batched closures review comments: * Remove unneded Block specializations for pointers. * Rename null variable to null_value. * remove a 0 default param to rop.llvm_void_ptr in batched_llvm_gen.cpp:llvm_gen_mul * Optimizations to masking and loading in wide_opclosure.cpp * Fix LLVM11+ builds by using llvm_vecor_type instead of llvm::VectorType::get Signed-off-by: Stephen Friedman <sfriedma@pixar.com> * Remove unneeded oslclosure.h in wide.h now that we aren't explicitly instantiating the templates. Signed-off-by: Stephen Friedman <sfriedma@pixar.com>
0 lines
0 B
Plaintext
0 lines
0 B
Plaintext
The file is empty.