December 4, 2020, 10:28 (GMT) |
Cleanup: Clang-Tidy, modernize-deprecated-headers No functional changes. |
December 4, 2020, 10:28 (GMT) |
Fix variable shadowing warning |
December 4, 2020, 10:25 (GMT) |
Fix "Make Asset" failing for collections in the Outliner All ID types but collections have a `TreeStoreElem.type` of 0, but collections... AFAIK to avoid compatilibity breaking changes back in 2.8. |
December 4, 2020, 09:50 (GMT) |
Cleanup: replace NULL with nullptr in C++ code No functional changes. |
December 4, 2020, 09:14 (GMT) |
Point users to new location of "Show Group Colors" option In ad85256e7108 the "Show Group Colors" option was changed from a per-editor option to a user preference. Since so many people wanted to turn this option off, this makes sense. However, this move caused some confusion because the option was just gone from the menu. This commit adds a dummy menu item. It's disabled, and the tooltip explains that the option can now be found in Preferences. T83390 was created to track the removal of these hints. Reviewed by: Severin Differential Revision: https://developer.blender.org/D9735 |
December 4, 2020, 07:46 (GMT) |
EEVEE Cryptomatte Cryptomatte is a standard to efficiently create mattes for compositing. The renderer outputs the required render passes, which can then be used in the compositor to create masks for specified objects. Unlike the Material and Object Index passes, the objects to isolate are selected in compositing, and mattes will be anti-aliased. Cryptomatte was already available in Cycles this patch adds it to the EEVEE render engine. Original specification can be found at https://raw.githubusercontent.com/Psyop/Cryptomatte/master/specification/IDmattes_poster.pdf **Accurate mode** Following Cycles, there are two accuracy modes. The difference between the two modes is the number of render samples they take into account to create the render passes. When accurate mode is off the number of levels is used. When accuracy mode is active, the number of render samples is used. **Deviation from standard** Cryptomatte specification is based on a path trace approach where samples and coverage are calculated at the same time. In EEVEE a sample is an exact match on top of a prepared depth buffer. Coverage is at that moment always 1. By sampling multiple times the number of surface hits decides the actual surface coverage for a matte per pixel. **Implementation Overview** When drawing to the cryptomatte GPU buffer the depth of the fragment is matched to the active depth buffer. The hashes of each cryptomatte layer is written in the GPU buffer. The exact layout depends on the active cryptomatte layers. The GPU buffer is downloaded and integrated into an accumulation buffer (stored in CPU RAM). The accumulation buffer stores the hashes + weights for a number of levels, layers per pixel. When a hash already exists the weight will be increased. When the hash doesn't exists it will be added to the buffer. After all the samples have been calculated the accumulation buffer is processed. During this phase the total pixel weights of each layer is mapped to be in a range between 0 and 1. The hashes are also sorted (highest weight first). Blender Kernel now has a `BKE_cryptomatte` header that access to common functions for cryptomatte. This will in the future be used by the API. * Alpha blended materials aren't supported. Alpha blended materials support in render passes needs research how to implement it in a maintainable way for any render pass. This is a list of tasks that needs to be done for the same release that this patch lands on (Blender 2.92) * T82571 Add render tests. * T82572 Documentation. * T82573 Store hashes + Object names in the render result header. * T82574 Use threading to increase performance in accumulation and post processing. * T82575 Merge the cycles and EEVEE settings as they are identical. * T82576 Add RNA to extract the cryptomatte hashes to use in python scripts. Reviewed By: Cl�ment Foucault Maniphest Tasks: T81058 Differential Revision: https://developer.blender.org/D9165 |
December 4, 2020, 07:14 (GMT) |
EEVEE: Arbitrary Output Variables This patch adds support for AOVs in EEVEE. AOV Outputs can be defined in the render pass tab and used in shader materials. Both Object and World based shaders are supported. The AOV can be previewed in the viewport using the renderpass selector in the shading popover. AOV names that conflict with other AOVs are automatically corrected. AOV conflicts with render passes get a warning icon. The reason behind this is that changing render engines/passes can change the conflict, but you might not notice it. Changing this automatically would also make the materials incorrect, so best to leave this to the user. **Implementation** The patch adds a copies the AOV structures of Cycles into Blender. The goal is that the Cycles will use Blenders AOV defintions. In the Blender kernel (`layer.c`) the logic of these structures are implemented. The GLSL shader of any GPUMaterial can hold multiple outputs (the main output and the AOV outputs) based on the renderPassUBO the right output is selected. This selection uses an hash that encodes the AOV structure. The full AOV needed to be encoded when actually drawing the material pass as the AOV type changes the behavior of the AOV. This isn't known yet when the GLSL is compiled. **Future Developments** * The AOV definitions in the render layer panel isn't shared with Cycles. Cycles should be migrated to use the same viewlayer aovs. During a previous attempt this failed as the AOV validation in cycles and in Blender have implementation differences what made it crash when an aov name was invalid. This could be fixed by extending the external render engine API. * Add support to Cycles to render AOVs in the 3d viewport. * Use a drop down list for selecting AOVs in the AOV Output node. * Give user feedback when multiple AOV output nodes with the same AOV name exists in the same shader. * Fix viewing single channel images in the image editor [T83314] * Reduce viewport render time by only render needed draw passes. [T83316] Reviewed By: Brecht van Lommel, Cl�ment Foucault Differential Revision: https://developer.blender.org/D7010 |
December 4, 2020, 05:37 (GMT) |
Fix T83346: Scrolling doesn't work with mouse over panel header Just a misplaced assignment to the return value from the panel handler in rB600fb28b6295. |
December 4, 2020, 04:50 (GMT) |
Geometry Nodes: Attribute compare node This node reads two input attributes as floats and allows for basic element-wise comparison operations. Like the attribute math node, it's also possible to switch to using floats as inputs. This node can be combined with the point separate node for more flexibility on which points to separate out. I used the same abstractions that the attribute math node uses in this commit, assuming that makes sense. |
Revision 871fda8 by Michael A. Kowalski (usd-importer-T81257) December 4, 2020, 02:01 (GMT) |
USD importer: instancing improvements. Added new USDDataCache class for caching prototype mesh data. No longer using a global static cache for prototype meshes. Now precomputing the prototype meshes in a USDDataCache instance which is passed as an argument to USDXformableReade::create_objects(). These changes simplify the code, provide better support for thread safety and circumvent potential issues with dangling pointers in the previous implementation. |
December 4, 2020, 01:23 (GMT) |
UI: Remove Decorators from Keymap Preferences Improvements to the layout of the Keymaps section of Preferences by removing unneeded Decorator columns. Differential Revision: https://developer.blender.org/D9726 Reviewed by Hans Goudey |
December 4, 2020, 00:31 (GMT) |
Geometry Nodes: Refactor and change point separate node The threshold input is unecessary with an "attribute compare" node before this one, or with attribute rounding. So to remove some complexity it is removed, and a boolean input attribute is used instead. For the implementation, the existing code becomes a bit more specific to point cloud data, because I'm realizing that mesh separate is quite a different problem, and it doesn't make sense to force the same code to be able to solve that too. |
December 4, 2020, 00:27 (GMT) |
Geometry Nodes: Add boolean type to random attribute node |
December 4, 2020, 00:23 (GMT) |
Geometry Nodes: Add a boolean attribute data type |
December 3, 2020, 22:43 (GMT) |
Fix variable shadowing warning |
December 3, 2020, 22:42 (GMT) |
Fix warning because of mismatching forward declaration |
December 3, 2020, 21:55 (GMT) |
Sculpt: Wet paint area radius This adds a new property to the sculpt vertex color paint brush to limit the area of the brush that is going to be used to sample the wet paint color. This is exactly the same concept as normal radius and area radius that exist for sculpting brushes for sampling the surface depth and orientation. When working near color hard edges, this allows to prevent the color from the other side of the edge to blend into the wet paint. With 1.0 (the previous default) wet paint radius, as soon as the brush touches one vertex of the other color, the wet paint mix color changes, making it impossible to maintain the border between the two colors. Reviewed By: sergey, dbystedt, JulienKaspar Differential Revision: https://developer.blender.org/D9587 |
December 3, 2020, 21:54 (GMT) |
Sync with review branches, adds "Remove Asset-Data" support Mostly internal changes. But also adds removing of asset data via the "Remove Asset-Data" operator in the Outliner and button context menus, as well as through deleting asset files in the Asset Browser. |
December 3, 2020, 21:52 (GMT) |
Merge branch 'master' into asset-browser |
December 3, 2020, 21:51 (GMT) |
Support deleting asset-data (not the data-block itself!) from the Asset Browser |
|
|
|


Master Commits
MiikaHweb | 2003-2021