July 6, 2021, 15:38 (GMT) |
Cycles X: Reduce OIDN memory usage with multi-device render Allow OIDN to modify render buffers in-place, without allocating extra temporary buffers. Currently memory is only saved for non-composited passes (combined, shadow catcher matte). The composited passes are possible to avoid memory allocation as well, but requires passing row stride to the pass accessor which is not yet possible. Differential Revision: https://developer.blender.org/D11826 |
July 6, 2021, 15:31 (GMT) |
Fix alpha in denoised shadow catcher pass in Cycles X Seems it was wrong since the initial implementation. The issue is that for the shadow catcher pass we can not copy alpha from input pass as the pass is calculated based on other passes. Decided to go with an implicit knowledge that composited passes are always opaque. Saves some complications and memory by storing full RGBA buffer for noisy composited passes. Differential Revision: https://developer.blender.org/D11825 |
July 6, 2021, 15:24 (GMT) |
GPU: Detect mathing struct based on shader interface. |
July 6, 2021, 15:24 (GMT) |
Rename Scene's embeded collections from "Master Collection" to "Scene Collection" Note that this name is essentially never used anywhere, besides as 'information' mostly accessible from python console. Those embedded IDs are not in Main, so they are not accessible by name ever, and mostly unusable from animation perspective (either drivers or fcurves). Therefore, no breakage is expected in user scripts or addons, nor when loading in older versions of Blender. Reviewed By: dfelinto, brecht Differential Revision: https://developer.blender.org/D11812 |
July 6, 2021, 14:46 (GMT) |
Cleanup: White space |
July 6, 2021, 14:46 (GMT) |
Fix surface objects |
July 6, 2021, 13:51 (GMT) |
Cycles X: Shading performance improvements by changing inlining behavior for SVM The shading kernels (shade_surface, ...) are limited by memory a lot. I found several hotspots where execution was stalled waiting for spills to be loaded back into registers. That's something that can be adjusted by changing the inlining logic: For example, the compiler did not inline "kernel_write_denoising_features" (even though it was marked __inline__), which caused it to force synchronization before the function call. Forcing it inline avoided that and got rid of that hotspot. Then there was cubic texture filtering and NanoVDB, which introduced huge code chunks into each texture sampling evaluation (increasing register and instruction cache pressure), even though they are rarely actually used. Making them __noinline__ outsources that overhead to only occur when actually used. Another case is the SVM. The compiler currently converts the node type switch statement into a binary searched branch sequence. This means depending on the SVM node hit, the GPU has to branch over large portions of code, which increases instruction cache pressure immensely (GPU is fetching lots of code even for stuff it immediately jumps away from again, while jumping through the binary searched branches). This can be reduced somewhat by making all the node functions __noinline__, so that the GPU only has to branch over a bunch of call instructions, rather than all the inlined code. The SVM "offset" value is passed by value into the node functions now and returned through function return value, to make the compiler keep it in a register. Otherwise when passed as a pointer, in OptiX the compiler was forced to move it into local memory (since functions are compiled separately there, so the compiler is unaware of how that pointer is used). Differential Revision: https://developer.blender.org/D11816 |
July 6, 2021, 13:48 (GMT) |
Merge remote-tracking branch 'origin/master' into temp-lineart-contained |
July 6, 2021, 12:24 (GMT) |
GPU: Fix crash when using EGL with --gpu-debug flag. During initialization of the platform a debug message is generated and interpreted by de callback. Here the platform is checked what requires an initialized platform. Fixed by giving the platform check less priority in the check. |
July 6, 2021, 11:38 (GMT) |
Fix crash rendering some scenes after master merge Now that lamps are handled are primitives in intersections, we must include them in the bitmask used for packing primitive type bits. |
July 6, 2021, 11:22 (GMT) |
Alembic export: evaluation mode option This option will determine visibility on either render or the viewport visibility. Same for modifer settings. So it will either evaluate the depsgrah with DAG_EVAL_RENDER or DAG_EVAL_VIEWPORT. This not only makes it more flexible, it is also a lot clearer which visibility / modfier setting is taken into account (up until now, this was always considered to be DAG_EVAL_RENDER) This option was always present in the USD exporter, this just brings Alembic in line with that. ref. T89594 Maniphest Tasks: T89594 Differential Revision: https://developer.blender.org/D11820 |
July 6, 2021, 11:22 (GMT) |
Alembic: remove non-functional "Renderable Objects" only option When introduced in {rB61050f75b13e} this was actually working (meaning it checked the Outliner OB_RESTRICT_RENDER flag and skipped the object if desired). Behavior has since then been commented in rBae6e9401abb7 and apparently refactored out in rB2917df21adc8. If checked, it seemed to be working (objects marked non-renderable in the Outliner were pruned from the export), however unchecking that option did not include them in the export. Now it changed - for the worse if you like - in rBa95f86359673 which made it so if "Renderable Objects" only is checked, it will still export objects invisible in renders. So since we now have the non-functional option with a broken/misleading default, it is better to just remove it entirely. In fact it has been superseeded by the "Visible Objects" option (this does the same thing: depsgraph is evaluated in render mode) and as a second step (and to make this even clearer) a choice whether Render or Viewport evaluation is used can be added (just like the USD exporter has). When that choice is explicit, it's also clear which visibility actually matters. This is breaking API usage, should be in release notes. ref. T89594 Maniphest Tasks: T89594 Differential Revision: https://developer.blender.org/D11808 |
July 6, 2021, 10:38 (GMT) |
Cycles X: Make pass definition more robust to changes Previously adding, removing, or even changing order of passes in the kernel_types.h would likely to break display pass enum. This was because the python enum was relying on an exact match of enum item values. Now we do an identifier-based lookup via `Pass::get_type_enum`, which allows to more safely change passes in kernel without risk of breaking display passes. Additionally, conversion of pass to string now also happens via the `Pass::get_type_enum`. All in all, it is the pass type enum which s the source of truth with this change. Differential Revision: https://developer.blender.org/D11823 |
July 6, 2021, 10:36 (GMT) |
Fix incompatible type passed to XR haptic Likely caused by recent fixed-size types changes. Seems to be no-functional-changes since the function is unused. |
July 6, 2021, 10:26 (GMT) |
Cycles X: Allow viewing denoising passes in viewport Can be used without denoiser configured (acting as if the denoising data passes are enabled in the view layer options). Differential Revision: https://developer.blender.org/D11821 |
July 6, 2021, 10:25 (GMT) |
Cycles X: Only copy denoised passes for multi-device render No functional changes, and timing of the denoising process should be quite the same. The change opens the doors to allow denoisers to modify data in-place, avoiding extra allocation in the denoisers, lowering memory peak of the denoising process. Differential Revision: https://developer.blender.org/D11815 |
July 6, 2021, 09:36 (GMT) |
Merge branch 'master' into cycles-x |
July 6, 2021, 09:13 (GMT) |
Cycles X: Reduce memory usage when denoising in multi-device render The idea is to create a full big tile buffer on the actual device which will be used for denoising. This avoids OptiX creating a yet another copy of the render buffers on the actual device. Mainly moving some lines around from DeviceDenoiser to Denoiser to make logic more accessible by all denoisers, and in the path tracer. Assume allocation is cheaper than data transfer, so that some TODOs are marked as done. It's possible to reduce memory even further by allowing OIDN and OptiX to modify the copy of the render buffers in-place, as it can be thrown away. Considering this an independent further improvement which is not tackled in this change. Differential Revision: https://developer.blender.org/D11814 |
July 6, 2021, 08:42 (GMT) |
Vulkan: Add support for wayland. |
July 6, 2021, 07:38 (GMT) |
Merge branch 'master' into temp-D10912-change-group-socket-types |
|
|
|


Master Commits
MiikaH:n Sivut a.k.a. MiikaHweb | 2003-2021