October 19, 2021, 14:47 (GMT) |
Fix compilation error about undefined `PATH_MAX` |
October 19, 2021, 14:42 (GMT) |
Fix T92265: Outliner crash clicking override warning buttons `outliner_draw_overrides_buts` uses `uiDefIconBlockBut` but doing so without defining a function callback to actually build a block. This will make the button go down the route of spawning a popup, but without a menu. Crash then happens later accesing the (missing) menu in `ui_handler_region_menu`. So while we could dive into making this usage failsafe (carefully checking `BUTTON_STATE_MENU_OPEN` in combination with `uiHandleButtonData->menu` being NULL all over), but it seems much more straightforward to just use `uiDefIconBut` (instead of `uiDefIconBlockBut`) since this Override Warning buttons seem not to intend spawning a menu anyways? Maniphest Tasks: T92265 Differential Revision: https://developer.blender.org/D12917 |
October 19, 2021, 14:26 (GMT) |
Fix T92224: Refactor of append code unexpectedly changed behavior with 'localize all' off. In 2.93 and before, when appending wityh 'localize all' off, all linked IDs (including indirectly linked ones) from initial library would be made local. In 3.0, after refactor from rB3be5ce4aad5e, only directly linked IDs (i.e. user-selected IDs) would be made local. This change was not intentional (result of confusing code and naming in previous implementation), and old behavior is used in some workflows to control which data is kept linked and which data is made local. This commit revert to 2.93 behavior. NOTE: there is still an (extreme) corner case where behavior is different between 2.93 and 3.0: If you append (at the same time) object A from LibA.blend, and object B from LibB.blend, and object B uses somehow a material from LibA.blend: * In 2.93, that material would have been made local (because it belonged to one of the 'initial' libraries, even though not the initial lib of object B). * In 3.0, this material will remain linked, since from object B persective it comes from a different library. |
October 19, 2021, 14:17 (GMT) |
Fix T91197: marking assets from Python may crash When using `asset_mark` function from a Python script and afterwards updating the preview image, a crash might happen. The preview image is generated by the `asset_mark` function. This may happen on a background thread, introducing potential synchronization issues. This patch fixes this by separating the preview generation `ID.asset_generate_preview` from the mark as asset `ID.asset_mark`. Note: this separation of "mark as asset" and "generate preview" also applies to the `ED_asset_mark_id()` C function; if it is desired to have previews rendered after marking as asset, a call to `ED_asset_generate_preview()` is now also required. Reviewed By: sybren Maniphest Tasks: T91197 Differential Revision: https://developer.blender.org/D12922 |
October 19, 2021, 14:01 (GMT) |
Geometry Nodes: Fields version of the raycast node This patch includes an updated version of the raycast node that uses fields instead of attributes for inputs instead of outputs. This makes the node's UI much clearer. It should be faster too, since the evaluation system for fields provides multi-threading. The source position replaces the input geometry (since this node is evaluated in the context of a geometry like the other field nodes). Thanks to @guitargeek for an initial version of this patch. Differential Revision: https://developer.blender.org/D12638 |
October 19, 2021, 13:53 (GMT) |
BKE_callback_remove: prevent crash on Blender exit `BKE_callback_remove` now checks whether the callback actually is known, before trying to remove it. `BKE_blender_atexit()` runs after `BKE_callback_global_finalize()`. When an at-exit callback tried to unregister its BKE callbacks, these would already be unregistered, causing a crash of Blender when exiting, |
October 19, 2021, 13:53 (GMT) |
Asset Library Service: make insensitive to trailing slashes Make `AssetLibraryService::get_asset_library_on_disk(path)` insensitive to trailing slashes; i.e. `get_asset_library_on_disk("/path")` and `get_asset_library_on_disk("/path/�)` will now return the same `AssetLibrary*`. |
October 19, 2021, 13:39 (GMT) |
Geometry Nodes: Remove implicit realizing and conversion This commit removes the implicit conversion from points to a mesh that used to happen before the next modifier. It also removes the implicit realizing of instances that happened before another modifier. Now we have specific nodes for both of these operations, the implicit conversions make less sense, and implicit instance realizing has already been removed in other nodes. This adds another geometry nodes modifier before modifiers that would have realized instances implicitly before. Currently adding another data-block during versioning after linking means that an assert needs to be changed. That should be made unnecessary by T92333. Differential Revision: https://developer.blender.org/D12722 |
October 19, 2021, 13:30 (GMT) |
Cleanup: trailing whitespace |
October 19, 2021, 13:11 (GMT) |
Cycles: bake transparent shadows for hair These transparent shadows can be expansive to evaluate. Especially on the GPU they can lead to poor occupancy when only some pixels require many kernel launches to trace and evaluate many layers of transparency. Baked transparency allows tracing a single ray in many cases by accumulating the throughput directly in the intersection program without recording hits or evaluating shaders. Transparency is baked at curve vertices and interpolated, for most shaders this will look practically the same as actual shader evaluation. Fixes T91428, performance regression with spring demo file due to transparent hair, and makes it render significantly faster than Blender 2.93. Differential Revision: https://developer.blender.org/D12880 |
October 19, 2021, 13:10 (GMT) |
Cycles: avoid intermediate stack array for writing shadow intersections Helps save one OptiX payload and is a bit more efficient. Differential Revision: https://developer.blender.org/D12909 |
October 19, 2021, 13:09 (GMT) |
Cycles: decouple shadow paths from main path on GPU The motivation for this is twofold. It improves performance (5-10% on most benchmark scenes), and will help to bring back transparency support for the ambient occlusion pass. * Duplicate some members from the main path state in the shadow path state. * Add shadow paths incrementally to the array similar to what we do for the shadow catchers. * For the scheduling, allow running shade surface and shade volume kernels as long as there is enough space in the shadow paths array. If not, execute shadow kernels until it is empty. * Add IntegratorShadowState and ConstIntegratorShadowState typedefs that can be different between CPU and GPU. For GPU both main and shadow paths juse have an integer for SoA access. Bt with CPU it's a different pointer type so we get type safety checks in code shared between CPU and GPU. * For CPU, add a separate IntegratorShadowStateCPU struct embedded in IntegratorShadowState. * Update various functions to take the shadow state, and make SVM take either type of state using templates. Differential Revision: https://developer.blender.org/D12889 |
October 19, 2021, 13:06 (GMT) |
Tests: update Cycles GPU tests blacklist so all tests pass More tests are matching now, mainly due to unified volume sampling. |
October 19, 2021, 12:55 (GMT) |
Fix failing view layer tests after recent changes to naming convention |
October 19, 2021, 12:48 (GMT) |
Fix splash screen showing language when building without that feature |
October 19, 2021, 12:30 (GMT) |
Render: change view layer name convention to ViewLayer_001 to avoid OpenEXR issues Some compositing applications do not support spaces and dots in layer names, and change these to other symbols on import. This causes various compatibility issues, including with Cryptomatte metadata. While technically those could be considered bugs in the Cryptomatte implementation of other software, where they are not properly accounting for that layer renaming, it's not ideal. The OpenEXR channel naming convention is "layer.pass.channel". We get away with dots in the layer name since we parse this from right to left, but it's a weak assumption. Now we don't forbid using spaces or dots, and existing files are unchanged. But at least by default names will be compatible, and hopefully other software catches up in time to support more flexible layer names. Ref T68924 |
October 19, 2021, 10:59 (GMT) |
Cleanup: fix compiler warnings |
October 19, 2021, 10:59 (GMT) |
Cycles: improve sampling pattern description regarding adaptive sampling |
October 19, 2021, 10:59 (GMT) |
Render: use "_" as delimiter in AOV names to avoid issues with OpenEXR OpenEXR uses "." to separate layers/passes/channels, so using AOV.001 is a problem. Other applications will not be able to parse it correctly. Default to AOV_001 instead, and don't allow using dots in AOV names. Fixes T89991 Ref T73266 Ref D12871 |
October 19, 2021, 10:10 (GMT) |
Fix invalid principled diffuse in Cycles OSL Need to initialize components for the full Diffuse BSDF. Steps to reproduce: - Default cube scene - Switch to Cycles renderer - Enable OSL backend - Start viewport render - Observe cube being much black Differential Revision: https://developer.blender.org/D12921 |
|
|
|


Master Commits
MiikaHweb | 2003-2021