May 12, 2021, 08:35 (GMT) |
Merge branch 'master' into cycles-x |
May 10, 2021, 10:36 (GMT) |
Fix albedo used instead of normal pass in Cycles X OptiX denoiser |
May 10, 2021, 09:52 (GMT) |
Merge branch 'master' into cycles-x |
May 8, 2021, 15:24 (GMT) |
Fix new shadow catcher not handling emissive meshes correctly These must also be excluded from direct light sampling for the shadow catcher pass. |
May 7, 2021, 14:43 (GMT) |
Cycles X: Initial implementation of shadow catcher It is re-implemented in a way which does differential rendering: the path is split at a first non-transparent bounce when shadow catcher object is hit. One path will track state of the shadow catcher object without other objects affecting it. The other path is rendering scene as usual. Upon user access of the shadow catcher pass the result is calculated as combined pass divided by the pass with shadow catcher object. This gives a pass which is to be multiplied with a backdrop to transport light and shadows caught. For the artificial objects which are to be added to the backdrop there is an internal matte pass. This pass is presented as combined to artists, so they alpha-over it onto the footage as usual. In the future we might implement shadow approximation to gain old-style shadow catcher behavior (maybe for compatibility reasons, maybe for some artistic reasons). This process is a bit more involved that the old single pass approach, but it allows to deal with indirect light, caustics. Example file: {F10059890} Example result: {F10055172} The footage is the Old_Factory MVI_4005.mov from https://cloud.blender.org/training/track-match-blend/56040f9b044a2a00ad6c660d Differential Revision: https://developer.blender.org/D11172 |
May 7, 2021, 13:12 (GMT) |
Cycles X: refactoring of kernel globals * Declare kernel globals and associated macros in one place * Add IntegratorStateGPU for CPU host to access * Reduce code duplication between CUDA and OptiX * Make shader sort key part of integrator state template * Remove unused CPU kernel globals * Prepare for copying/moving states * Rename integrator_path_state.h to integrator_state_flow.h, to avoid confusion with kernel_path_state.h. Part of these changes were implemented by Sergey for D11172. Differential Revision: https://developer.blender.org/D11185 |
May 7, 2021, 13:11 (GMT) |
Cleanup: make ShaderType a template parameter for SVM nodes |
May 5, 2021, 12:18 (GMT) |
Cycles X: tune kernel parameters for RTX cards As the kernel keeps changing the optimal values will change as well, so this will need to be revisited when more work is done. And every kernel probably has a different optimal value. But this is an easy step in the right direction. Differential Revision: https://developer.blender.org/D11160 |
May 5, 2021, 12:18 (GMT) |
Fix Cycles X crash using a BSDF in a light shader * Move BSDF feature test so the right offset is applied * Exclude BSDFs from volume shaders, and volumes from surface shaders, to prevent a similar issues. It would be most efficient to exclude BSDFs entirely from light shaders, but this is difficult since Cycles does not make a distinction. A shader can be used by both a Mesh and Light and is compiled only once. We do make a distinction between surface/volume/displacement shaders, so for that case we can ignore the node during shader compilation. Differential Revision: https://developer.blender.org/D11164 |
May 5, 2021, 09:31 (GMT) |
Fix kernel loading time accounted twice in render progress The render session is keeping track of the scene update, which includes kernel loading time. This fixes negative render times reported when CUDA kernels are compiled at runtime. A bit fragile logic, can be re-implemented using some user-counted scope utility classes, so that only outer-most time skip is applied. |
May 5, 2021, 08:36 (GMT) |
Cycles: Report device compute type to the full log Makes it more explicitly visible whether rendering was done on CUDA or OptiX. Before this change one had to carefully look at the device ID, and the look of OptiX device IDs was a bit confusing (mentioning both CUDA and OPTIX in the ID). |
May 4, 2021, 14:04 (GMT) |
Cleanup: Remove redundant Cycles attributes - Remove `ccl_maybe_unused` which was only defined for CPU, use more portable `ccl_attr_maybe_unused` instead. - Assume C++11 is always available, so use `constexpr` directly in the kernel code. Differential Revision: https://developer.blender.org/D11161 |
May 4, 2021, 13:13 (GMT) |
Cycles: Rename __SHADOW_TRICKS__ to __SHADOW_CATCHER__ Makes it more explicit what the code and feature is about. The shadow tricks are not used anymore (they were used by the NLM denoiser). Some of the code is still referring to the __SHADOW_TRICKS__ but it is all in an unused code paths. |
May 4, 2021, 13:13 (GMT) |
Cycles: Add ccl_constexpr utility macros Allows to give constexpr qualifier on backends and compilers which support this attribute. Currently only enabled for CPU. Need to check CUDA and OptiX for support. |
May 4, 2021, 13:13 (GMT) |
Cycles: Enable constexpr and maybe_unused attributes for CUDA and OptiX Tested on Linux with CUDA toolkit 11.3. Seems no additional compiler flags are needed to have C++11/C++17 attributes available. |
May 4, 2021, 13:13 (GMT) |
Cycles: Refactor shadow catcher ray visibility Allow to "filter" shadow catcher objects by any of the visibility (diffuse, glossy, and so on) to allow complete separation of objects in the scene. Implemented as a bitmask shift magic: shadow catcher objects have their visibility "duplicated" as a shift left by 16. The ray visibility for tracing will use either low or high visibility bits depending on whether shadow catcher object was hit or not. Currently no functional changes, just committing separately to make it easier to bisect possible unintended functional changes. Initial idea implementation from Brecht, adopted to the shadow catcher code by self. Differential Revision: https://developer.blender.org/D11158 |
May 4, 2021, 13:13 (GMT) |
Cycles: Avoid pixel offset calculation when is not needed Possibly gives unmeasurable speedup in the denoising passes writing function. |
May 4, 2021, 13:12 (GMT) |
Cycles: Undefine utility macro after use Was missing since the initial implementation of those macros for the new integrator kernels. |
May 4, 2021, 11:59 (GMT) |
Cycles: don't copy object matrices for objects without motion blur To avoid memory read/write cost on the GPU. Differential Revision: https://developer.blender.org/D11132 |
April 30, 2021, 16:19 (GMT) |
Cleanup: compiler warnings |
|