Revision d4fd06d by Hans Goudey February 12, 2021, 19:25 (GMT) |
Geometry Nodes: Add operation setting to attribute randomize node This commit adds a drop-down to the attribute randomize node to support a few operations on the values of existing attributes: "Replace/Create" (the existing behavior), "Add", "Subtract", and "Multiply". At this point, the operations are limited by what is simple to implement. More could be added in the future, but there isn't a strong use case for more complex operations anyway, and a second math node can be used. Differential Revision: https://developer.blender.org/D10269 |
Revision d7c2c88 by Hans Goudey February 12, 2021, 18:46 (GMT) |
Geometry Nodes: Allow attribute nodes to use different domains Currently every attribute node assumes that the attribute exists on the "points" domain, so it generally isn't possible to work with attributes on other domains like edges, polygons, and corners. This commit adds a heuristic to each attribute node to determine the correct domain for the result attribute. In general, it works like this: - If the output attribute already exists, use that domain. - Otherwise, use the highest priority domain of the input attributes. - If none of the inputs are attributes, use the default domain (points). For the implementation I abstracted the check a bit, but in each node has a slightly different situation, so we end up with slightly different `get_result_domain` functions in each node. I think this makes sense, it keeps the code flexible and more easily understandable. Note that we might eventually want to expose a domain drop-down to some of the nodes. But that will be a separate discussion; this commit focuses on making a more useful choice automatically. Differential Revision: https://developer.blender.org/D10389 |
Revision ba03f7f by Harley Acheson February 12, 2021, 18:40 (GMT) |
Fix T85562: Remove Win32 RIM_INPUTSINK Removal of Win32 code that allows background windows to receive raw input. Differential Revision: https://developer.blender.org/D10408 Reviewed by Brecht Van Lommel |
Revision 432b758 by Aaron Carlisle February 12, 2021, 18:14 (GMT) |
Py Doc: Update Sphinx and theme versions |
Revision 95cba37 by Aaron Carlisle February 12, 2021, 18:14 (GMT) |
Py Doc: Delete old deployment scripts Now, the API docs are deployed via the new devops pipeline developed by James. |
Revision 97072e0 by Aaron Carlisle February 12, 2021, 18:14 (GMT) |
Py Doc: Fix rst syntax errors |
Revision 6b40ee6 by Brecht Van Lommel February 12, 2021, 18:06 (GMT) |
OpenColorIO: remove default display workaround A fix for this is in 2.0 (and recent 1.1.x versions), no need for this anymore. Differential Revision: https://developer.blender.org/D10275 |
Revision 1b4961b by Brecht Van Lommel February 12, 2021, 18:06 (GMT) |
OpenColorIO: upgrade to version 2.0.0 Ref T84819 Build System ============ This is an API breaking new version, and the updated code only builds with OpenColorIO 2.0 and later. Adding backwards compatibility was too complicated. * Tinyxml was replaced with Expat, adding a new dependency. * Yaml-cpp is now built as a dependency on Unix, as was already done on Windows. * Removed currently unused LCMS code. * Pystring remains built as part of OCIO itself, since it has no good build system. * Linux and macOS check for the OpenColorIO verison, and disable it if too old. Ref D10270 Processors and Transforms ========================= CPU processors now need to be created to do CPU processing. These are cached internally, but the cache lookup is not fast enough to execute per pixel or texture sample, so for performance these are now also exposed in the C API. The C API for transforms will no longer be needed afer all changes, so remove it to simplify the API and fallback implementation. Ref D10271 Display Transforms ================== Needs a bit more manual work constructing the transform. LegacyViewingPipeline could also have been used, but isn't really any simpler and since it's legacy we better not rely on it. We moved more logic into the opencolorio module, to simplify the API. There is no need to wrap a dozen functions just to be able to do this in C rather than C++. It's also tightly coupled to the GPU shader logic, and so should be in the same module. Ref D10271 GPU Display Shader ================== To avoid baking exposure and gamma into the GLSL shader and requiring slow recompiles when tweaking, we manually apply them in the shader. This leads to some logic duplicaton between the CPU and GPU display processor, but it seems unavoidable. Caching was also changed. Previously this was done both on the imbuf and opencolorio module levels. Now it's all done in the opencolorio module by simply matching color space names. We no longer use cacheIDs from OpenColorIO since computing them is expensive, and they are unlikely to match now that more is baked into the shader code. Shaders can now use multiple 2D textures, 3D textures and uniforms, rather than a single 3D texture. So allocating and binding those adds some code. Color space conversions for blending with overlays is now hardcoded in the shader. This was using harcoded numbers anyway, if this every becomes a general OpenColorIO transform it can be changed, but for now there is no point to add code complexity. Ref D10273 CIE XYZ ======= We need standard CIE XYZ values for rendering effects like blackbody emission. The relation to the scene linear role is based on OpenColorIO configuration. In OpenColorIO 2.0 configs roles can no longer have the same name as color spaces, which means our XYZ role and colorspace in the configuration give an error. Instead use the new standard aces_interchange role, which relates scene linear to a known scene referred color space. Compatibility with the old XYZ role is preserved, if the configuration file has no conflicting names. Also includes a non-functional change to the configuraton file to use an XYZ-to-ACES matrix instead of REC709-to-ACES, makes debugging a little easier since the matrix is the same one we have in the code now and that is also found easily in the ACES specs. Ref D10274 |
Revision 5393054 by Hans Goudey February 12, 2021, 18:03 (GMT) |
Geometry Nodes: Add dependency relation for collection objects Currently moving or changing an object references in a node modifier's node group does not trigger re-evaluation. Because there is no collection relation in the dependency graph, we must add the relation to all objects in the collection individually. |
Revision a4baede by Hans Goudey February 12, 2021, 17:58 (GMT) |
Geometry Nodes: Make instances real on-demand This commit makes the geometry output of the collection info usable. The output is the geometry of a collection instance, but this commit adds a utility to convert the instances to real geometry, used in the background whenever it is needed, like copy on write. The recursive nature of the "realize instances" code is essential, because collection instances in the `InstancesComponent`, might have no geometry sets of their own containing even more collection instances, which might then contain object instances, etc. Another consideration is that currently, every single instance contains a reference to its data. This is inefficient since most of the time there are many locations and only a few sets of unique data. So this commit adds a `GeometryInstanceGroup` to support this future optimization. The API for instances returns a vector of `GeometryInstanceGroup`. This may be less efficient when there are many instances, but it makes more complicated operations like point distribution that need to iterate over input geometry multiple times much simpler. Any code that needs to change data, like most of the attribute nodes, can simply call `geometry_set_realize_instances(geometry_set)`, which will move any geometry in the `InstancesComponent` to new "real" geometry components. Many nodes can support read-only access to instances in order to avoid making them real, this will be addressed where needed in the near future. Instances from the existing "dupli" system are not supported yet. Differential Revision: https://developer.blender.org/D10327 |
Revision ff3df2e by Jacques Lucke February 12, 2021, 16:50 (GMT) |
Merge branch 'blender-v2.92-release' |
Revision 98db4cc by Jacques Lucke February 12, 2021, 16:44 (GMT) |
Fix T84899: instance ids are not unique in common cases Ids stored in the `id` attribute cannot be assumed to be unique. While they might be unique in some cases, this is not something that can be guaranteed in general. For some use cases (e.g. generating "stable randomness" on points) uniqueness is not important. To support features like motion blur, unique ids are important though. This patch implements a simple algorithm that turns non-unique ids into unique ones. It might fail to do so under very unlikely circumstances, in which it returns non-unique ids instead of possibly going into an endless loop. Here are some requirements I set for the algorithm: * Ids that are unique already, must not be changed. * The same input should generate the same output. * Handle cases when all ids are different and when all ids are the same equally well (in expected linear time). * Small changes in the input id array should ideally only have a small impact on the output id array. The reported bug happened because cycles found multiple objects with the same id and thought that it was a single object that moved on every check. Differential Revision: https://developer.blender.org/D10402 |
Revision c04bcc8 by Antonio Vazquez February 12, 2021, 15:54 (GMT) |
Merge branch 'blender-v2.92-release' |
Revision ccea44e by Antonio Vazquez February 12, 2021, 15:54 (GMT) |
GPencil: Fix compiler warnings after previous commit These warnings were not detected by Windows compiler as the Linux compiler does. |
Revision 5b073a9 by Antonio Vazquez February 12, 2021, 14:24 (GMT) |
Merge branch 'blender-v2.92-release' |
Revision 72989f9 by Antonio Vazquez February 12, 2021, 14:23 (GMT) |
Revision dad32cb by Brecht Van Lommel February 12, 2021, 14:22 (GMT) |
Merge branch 'blender-v2.92-release' |
Revision 9febda9 by Brecht Van Lommel February 12, 2021, 14:01 (GMT) |
Baking: support vertex color baking of normal material, UV discontinuities Baking vertex colors per-corner leads to unwanted discontinuities when there is sampling noise, for example in ambient occlusion or with a bevel shader node for normals. For this reason the code used to always average results per-vertex. However when using split normals, multiple materials or UV islands, we do want to preserve discontinuities. So now bake per corner, but make sure the sampling seed is shared for vertices. Fix T85550: vertex color baking crash with split normals, Ref D10399 Fix T84663: vertex color baking blending at UV seams |
Revision 7db0055 by Sybren A. Stüvel February 12, 2021, 13:54 (GMT) |
CMake/Deps: fix build of nasm when asciidoc and xmlto are unavailable Create zero-byte manual page files `nasm.1` and `ndisasm.1` such that nasm's `make install` step succeeds. Installing nasm requires that its manual pages are built. This requires local packages `asciidoc` and `xmlto` to be installed. Not only does `asciidoc` pull in 110 MB of packages (itself + dependencies), there is also no need for these manual pages. Nasm is just used for building other dependencies, and not even part of our precompiled libraries in SVN. Reviewed By: sebbas Differential Revision: https://developer.blender.org/D10396 |
Revision 780cabb by Philipp Oeser February 12, 2021, 12:59 (GMT) |
Fix T85558: crash changing the resolution mode of the "volume to mesh" node The nodes update function geo_node_volume_to_mesh_update would not run if it is not the very first node in the tree. If the update function is not run, there are sockets not cleared from the SOCK_UNAVAIL flag (but this needs to be done -- these get available depending on the chosen mode). Havent tracked down why this was actually updating when it was the first node in the tree, but now make sure we always get an update by specifing an appropriate RNA update callback for the property. Maniphest Tasks: T85558 Differential Revision: https://developer.blender.org/D10403 |
|
|
|


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