Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-05-11Fix T88093: persistent data and particle object instancing not workingBrecht Van Lommel
2021-05-11Fix T88099: error with persistent data and motion blurBrecht Van Lommel
2021-05-04Merge branch 'blender-v2.93-release'Germano Cavalcante
2021-05-03Fix T85287: Cycles deadlock loading Blender images in some casesBrecht Van Lommel
2021-05-03Fix T88001: persistent data render wrong when changing camera borderBrecht Van Lommel
2021-05-03Cleanup: spellingCampbell Barton
2021-05-03Cycles: add reference counting to NodesKévin Dietrich
This adds a reference count to Nodes which is incremented or decremented whenever they are added to or removed from a socket, which will help us track used Nodes throughout the scene graph generically without having to add an explicit count or flag on specific Node types. This is especially useful to track Nodes defined through Procedurals out of Cycles' control. This also modifies the order in which nodes are deleted to ensure that upon deletion, a Node does not attempt to decrement the reference count of another Node which was already freed or deleted. This is not currently used, but will be in the next commit. Reviewed By: brecht Differential Revision: https://developer.blender.org/D10965
2021-04-29Fix error in Python UI scriptBrecht Van Lommel
2021-04-29Fix: missing AO factor from Cyclest Fast GI panelBrecht Van Lommel
The AO distance was already there, but I forgot the factor also has an impact on this.
2021-04-12Fix Cycles broken motion blur pass after recent bugfixBrecht Van Lommel
2021-04-12Fix T87283: crash with persistent data and motion blurBrecht Van Lommel
2021-04-08Cleanup: Use const arguments for volume codeHans Goudey
The problem was that you could getting write access to a grid from a `const Volume *` without breaking const correctness. I encountered this when working on support for volumes in the bounding box node. For geometry nodes there is an important distinction between getting data "for read" and "for write", with the former returning a `const` version of the data. Also, for volumes it was necessary to cast away const, since all of the relevant functions in `volume.cc` didn't have const versions. This patch adds `const` in these places, distinguising between "for read" and "for write" versions of functions where necessary. The downside is that loading and unloading in the global volume cache needs const write-access to some member variables. I see that as an inherent problem that comes up with caching that never has a beautiful solution anyway. Some of the const-ness could probably be propogated futher in EEVEE code, but I'll leave that out, since there is another level of caching. Differential Revision: https://developer.blender.org/D10916
2021-04-06Fix Cycles rendering files with Simplify wrong after recent changesBrecht Van Lommel
The versioning code was not taking into account the old default for AO bounces.
2021-04-05Render: faster animation and re-rendering with Persistent DataBrecht Van Lommel
For Cycles, when enabling the Persistent Data option, the full render data will be preserved from frame-to-frame in animation renders and between re-renders of the scene. This means that any modifier evaluation, BVH building, OpenGL vertex buffer uploads, etc, can be done only once for unchanged objects. This comes at an increased memory cost. Previously there option was named Persistent Images and had a more limited impact on render time and memory. When using multiple view layers, only data from a single view layer is preserved to keep memory usage somewhat under control. However objects shared between view layers are preserved, and so this can speedup such renders as well, even single frame renders. For Eevee and Workbench this option is not available, however these engines will now always reuse the depsgraph for animation and multiple view layers. This can significantly speed up rendering. These engines do not support sharing the depsgraph between re-renders, due to technical issues regarding OpenGL contexts. Support for this could be added if those are solved, see the code comments for details.
2021-04-05Cycles: update Light Paths presetBrecht Van Lommel
* Add Fast GI / AO bounces to presets * Add Default preset matching defaults * Add Fast Approximate GI preset * Lower Full GI depths to 32
2021-04-04Cycles: make AO bounces settings more discoverableBrecht Van Lommel
* Move out of Simplify panel, into Light Paths > Fast Global Illumination * Add separate boolan setting to enable/disable it separate from Simplify * Default AO bounces to 1 * Put ambient occlusion distance in this panel as well
2021-04-01Cycles: add a spread setting for area lightsMatteo Falduto
This simulates the effect of a honeycomb or grid placed in front of a softbox. In practice, it works by attenuating rays coming off-angle as a function of the provided spread angle parameter. Setting the parameter to 180 degrees poses no restrictions to the rays, making the light behave the same way as before this patch. The total light power is normalized based on the spread angle, so that the light strength remains the same. Differential Revision: https://developer.blender.org/D10594
2021-03-30Cycles: disable NanoVDB for AMD OpenCLBrecht Van Lommel
It is causing issue with AMD OpenCL drivers, due to a potential driver bug. Ref T84461
2021-03-25Geometry Nodes: rename attribute domainsJacques Lucke
This patch renames two domains: * `Polygon` -> `Face` * `Corner` -> `Face Corner` For the change from `polygon` to `face` I did a "deep rename" where I updated all (most?) cases where we refere to the attribute domain in code as well. The change from `corner` to `face corner` is only a ui change. I did not see a real need to update all code the code for that. It does not seem to improve the code, more on the contrary. Ref T86818. Differential Revision: https://developer.blender.org/D10803
2021-03-17Nodes: Add support to mute node wiresCharlie Jolly
This patch adds the ability to mute individual wires in the node editor. This is invoked like the cut links operator but with a new shortcut. Mute = Ctrl + Alt Cut = Ctrl Dragging over wires will toggle the mute state for that wire. The muted wires are drawn in red with a bar across the center. Red is used in the nodes context to indicate invalid links, muted links and internal links. When a wire is muted it exposes the original node buttons which are normally hidden when a wire is connected. Downstream and upstream links connected using reroute nodes are also muted. Outside scope of patch: - Add support for pynodes e.g. Animation Nodes - Requires minor change to check for muted links using the `is_muted` link property or the `is_linked` socket property. Maniphest Tasks: T52659 Differential Revision: https://developer.blender.org/D2807
2021-03-16Revert removal of lambda usage for Python RNA callbacksCampbell Barton
This reverts commits - 476be3746e85b4891189c8d480501905b9400c66 - 8d50a3e19e025ef470132e7edadd7b180db833f5 - 08dbc4f996e4e95f3ab64f7bb3e1193700c585f5 (partially).
2021-03-12Fix T86332: setting Cycles dicing camera fails after recent changesBrecht Van Lommel
Somehow "from __future__ import annotations" and "lambda" are not working together well here, work around it by not using a lambda function.
2021-02-23Cycles: Add option to change input passes for viewport denoisingPatrick Mours
There are cases where the default input passes of color+albedo do not yield useful results and while this was possible to change that for final frame rendering (in the layer settings), viewport denoising always used a fixed color+albedo. This adds an option to change the input passes for viewport denoising too, so that one can use it in scenes that otherwise wouldn't work well with it. Reviewed By: brecht Differential Revision: https://developer.blender.org/D10404
2021-02-21PyAPI: use postponed annotations to support Python 3.10Campbell Barton
Support Python 3.10a5 or 3.9x with support explicitly enabled. - Enable Python's postponed annotations for Blender's RNA classes types registered on startup. - Using postponed annotations has implications for how they are defined, since they must evaluate in the modules name-space instead of the classes name-space. See changes to annotations in `release/scripts`. - Use `from __future__ import annotations` at the top of the module to ensure the script will run with Python 3.10. - Old logic is kept since it could be used if PEP-649 is supported. Resolves T83626 Ref D10474
2021-02-20Geometry Nodes: expose float2 attribute in rnaJacques Lucke
This also fixes the issue reported in T85651. Differential Revision: https://developer.blender.org/D10477
2021-02-18Cleanup: spelling, correct doc-string argumentsCampbell Barton
2021-02-17Cycles: add utility functions for zero float2/float3/float4/transformBrecht Van Lommel
Ref D8237, T78710
2021-02-17Cycles: support accessing custom mesh attributesJacques Lucke
This makes custom mesh attributes available in Cycles. Typically, these attributes are generated by Geometry Nodes, but they can also be created with a Python script. * The `subdivision` code path is not yet supported. * This does not make vertex weights and some other builtin attributes available in Cycles, even though they are accesible in Geometry Nodes. All attributes generated in Geometry Nodes should be accessible though. * In some cases memory consumption could be removed by not storing all attributes in floats. E.g. booleans and integer attributes for which all values are within a certain range, could be stored in less than 4 bytes per element. Differential Revision: https://developer.blender.org/D10210
2021-02-13Fix T85573: Building with Python 3.10a5 failsCampbell Barton
Replace deprecated _PyUnicode_AsString{AndSize} usage. T83626 still needs to be resolved before 3.10 is usable.
2021-02-12Merge branch 'blender-v2.92-release'Jeroen Bakker
2021-02-12Cycles: Use Blender Settings For AOVJeroen Bakker
This patch will share the AOV settings between Cycles and Eevee. It enable using the AOV name conflict detection of Blender. This means that unlike how Cycles used to work it isn't possible to add an AOV with a similar name. Conflicts with internal render pass names will be indicated with an Warning icon. Reviewed By: Brecht van Lommel Differential Revision: https://developer.blender.org/D9774
2021-02-12Cleanup: don't subclass 'Panel' for mix-in classesCampbell Barton
This reports warnings with `--debug-python` since all panel sub-classes are expected to be registered.
2021-02-05Cleanup: correct spelling in commentsCampbell Barton
2021-02-02Python API: option for render engines to delegate Freestyle render to EeveeMiguel Pozo
Eevee is now used for Freestyle rendering by default, since other engines are unlikely to have support for this. Workbench and Cycles do their own rendering. RenderEngine add-ons can do their own Freestyle rendering by setting bl_use_custom_freestyle = True. Differential Revision: https://developer.blender.org/D8335
2021-01-27Sky Texture: change Nishita Altitude to use unit systemMarco
Differential Revision: https://developer.blender.org/D9968
2021-01-25Cycles: modernize usage of rna iteratorsJacques Lucke
Using rna iterators in range-based for loops is possible since {rBc4286ddb095d32714c9d5f10751a14f5871b3844}. This patch only updates the places that are easy to update without more changes in surrounding code. Differential Revision: https://developer.blender.org/D10195
2021-01-25Cycles: internal support for Alembic proceduralsKevin Dietrich
The implementation is currently optimized to load animation sequences once and then quickly scrubbing through them. Later on an option should be added to optimize for memory usage and only load the current frame into memory. Currently mesh and curve objects are supported, including support for UV and vertex color attributes. Missing still is support for arbitrary attributes and motion blur, as well as better handling of changing topology. Shader assignments are made using FaceSets found in the Alembic archive. The animation (and constant) data of the objects inside the Alembic archive is loaded at once at the beginning of the render and kept inside a cache. At each frame change we simply update the right socket of the corresponding Cycles node if the data is animated. This allows for fast playback in the viewport (depending on the scene size and compute power). Note this is not yet exposed in the Blender UI, it's a feature that is still under development and not ready for general use. Ref T79174, D3089
2021-01-25Cycles: internal support for the concept of proceduralsKevin Dietrich
Procedurals are nodes in the scene that can generate an arbitrary number of other nodes at render time. This will be used to implement an Alembic procedural that can load an Alembic file into Cycles nodes. In the future we also expect to have a USD procedural. Direct loading of such files at render time is a standard feature in other production renderers. Reasons to support this are memory usage and performance, delayed loading of heavy scene data until rendering, Cycles standalone rendering using standard file formats beyond our XML files, and shared functionality for Cycles integration in multiple 3D apps. Ref T79174, D3089
2021-01-25Cleanup: move code to find geometry shaders into own functionKevin Dietrich
Ref D3089
2021-01-22Cycles: optimize device updatesKévin Dietrich
This optimizes device updates (during user edits or frame changes in the viewport) by avoiding unnecessary computations. To achieve this, we use a combination of the sockets' update flags as well as some new flags passed to the various managers when tagging for an update to tell exactly what the tagging is for (e.g. shader was modified, object was removed, etc.). Besides avoiding recomputations, we also avoid resending to the devices unmodified data arrays, thus reducing bandwidth usage. For OptiX and Embree, BVH packing was also multithreaded. The performance improvements may vary depending on the used device (CPU or GPU), and the content of the scene. Simple scenes (e.g. with no adaptive subdivision or volumes) rendered using OptiX will benefit from this work the most. On average, for a variety of animated scenes, this gives a 3x speedup. Reviewed By: #cycles, brecht Maniphest Tasks: T79174 Differential Revision: https://developer.blender.org/D9555
2021-01-20Fix T84872: OptiX GPU + CPU rendering uses branched path samplesBrecht Van Lommel
Branched path tracing is not supported for OptiX, and it would still use the number of AA samples from there when branched path was enabled by the user earlier but auto disabled and hidden in the UI when using OptiX. Ref D10159
2021-01-13UI: Revert design changes to data-block selector for the 2.92 releaseJulian Eisel
Partially reverts 2250b5cefee7. Removing the user count and fake user count icons was controversial (which was expected) and there are a few further changes needed, that won't make it in time for the release, see D9946. While there is a design to bring back the user count and fake user indicators, a new design idea was proposed that the UI team wants to follow. This came too late for the 2.92 release, the new design is targeted at the 2.93 release now. Meanwhile, UI team decision was to simply revert the design changes. The new design is being worked on in https://developer.blender.org/T84669. Note that this commit does not revert some internal changes done in 2250b5cefee7. Namely the introduction of `ed_util_ops.c` and data-block operators in there. These will still be needed in the new design.
2021-01-11Fix T83544: Cycles crash when rendering with Save Buffers enabledJacques Lucke
The issue is that the "Noisy Image" pass is added even though it should not. `use_denoising` has to be enabled on the scene and on the view layer to actually enable it. Differential Revision: https://developer.blender.org/D10048 Reviewers: lukasstockner97, brecht
2021-01-04Cleanup: clang-formatCampbell Barton
2020-12-26Fix unreported: Cycles CLI device override doesn't set peer memory usage flagLukas Stockner
Reviewed By: brecht Differential Revision: https://developer.blender.org/D9929
2020-12-24Bake: vertex color baking support for CyclesBrecht Van Lommel
In the Bake > Output panel, there is now a choice between Image Textures and Vertex Colors. The active vertex color layer is used for baking. This works with both existing per-corner and sculpt per-vertex vertex colors.
2020-12-23Fix T84063: crash reading pointer properties in Attribute shader nodeBrecht Van Lommel
Path resolving can find e.g. a datablock rather than a float or integer, treat that as a failure to find a valid property.
2020-12-21UI: make light spot shape panel consistent between Cycles and EeveeMatteo Falduto
Differential Revision: https://developer.blender.org/D9906
2020-12-18UI: Redesigned data-block selectorsJulian Eisel
The previous design is rather old and has a couple of problems: * Scalability: The current solution of adding little icon buttons next to the data-block name field doesn't scale well. It only works if there's a small number of operations. We need to be able to place more items there for better data-block management. Especially with the introduction of library overrides. * Discoverability: It's not obvious what some of the icons do. They appear and disappear, but it's not obvious why some are available at times and others not. * Unclear Status: Currently their library status (linked, indirectly linked, broken link, library override) isn't really clear. * Unusual behavior: Some of the icon buttons allow Shift or Ctrl clicking to invoke alternative behaviors. This is not a usual pattern in Blender. This patch does the following changes: * Adds a menu to the right of the name button to access all kinds of operations (create, delete, unlink, user management, library overrides, etc). * Make good use of the "disabled hint" for tooltips, to explain why buttons are disabled. The UI team wants to establish this as a good practise. * Use superimposed icons for duplicate and unlink, rather than extra buttons (uses less space, looks less distracting and is a nice + consistent design language). * Remove fake user and user count button, they are available from the menu now. * Support tooltips for superimposed icons (committed mouse hover feedback to master already). * Slightly increase size of the name button - it was already a bit small before, and the move from real buttons to superimposed icons reduces usable space for the name itself. * More clearly differentiate between duplicate and creating a new data-block. The latter is only available in the menu. * Display library status icon on the left (linked, missing library, overridden, asset) * Disables "Make Single User" button - in review we weren't sure if there are good use-cases for it, so better to see if we can remove it. Note that I do expect some aspects of this design to change still. I think some changes are problematic, but others disagreed. I will open a feedback thread on devtalk to see what others think. Differential Revision: https://developer.blender.org/D8554 Reviewed by: Bastien Montagne Design discussed and agreed on with the UI team, also see T79959.
2020-12-11Cycles: Add CPU+GPU rendering support with OptiXPatrick Mours
Adds support for building multiple BVH types in order to support using both CPU and OptiX devices for rendering simultaneously. Primitive packing for Embree and OptiX is now standalone, so it only needs to be run once and can be shared between the two. Additionally, BVH building was made a device call, so that each device backend can decide how to perform the building. The multi-device for instance creates a special multi-BVH that holds references to several sub-BVHs, one for each sub-device. Reviewed By: brecht, kevindietrich Differential Revision: https://developer.blender.org/D9718