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-04-13Cycles: Initialize all OptiX structs to zero before usePatrick Mours
This is done to ensure building with newer OptiX SDK releases that add new struct fields gives deterministic results (no uninitialized fields and therefore random data is passed to OptiX).
2021-04-12Fix Cycles broken motion blur pass after recent bugfixBrecht Van Lommel
2021-04-12Fix T86880: Cycles bevel shader not working after editing worldBrecht Van Lommel
2021-04-12Fix T87283: crash with persistent data and motion blurBrecht Van Lommel
2021-04-12Fix T87324: incorrect parametric coordinates with light spreadBrecht Van Lommel
2021-04-11Cleanup: clang-formatCampbell Barton
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-08Cleanup: spellingCampbell Barton
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-01Cleanup: spellingCampbell Barton
2021-04-01Fix "unused variable" warning when compiling without nanovdbSebastian Parborg
2021-04-01Cycles: light spread importance sampling for rectangular area lightsBrecht Van Lommel
Compute a subset of the area light that actually affects the shading point and only samples points within that. It's not perfect as the real subset is a circle instead of a rectangle, and the attenuation is not accounted for. However it massively reduces noise for shading points near the area light anyway. Ellipse shaped area lights do not have this importance sampling, but do not have solid angle importance sampling either. Ref D10594
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-04-01Fix Cycles build error with "make developer" on some CPUsNikita Sirgienko
The combination of building unit tests and WITH_CYCLES_NATIVE_ONLY did not correctly detect when AVX/AVX2 support is available. Differential Revision: https://developer.blender.org/D8201
2021-03-31Alembic procedural: fix missing update when editing shadersKévin Dietrich
2021-03-31Alembic procedural: comment, speficy the behavior of a functionKévin Dietrich
2021-03-31Alembic procedural: cleanup, make add_object privateKévin Dietrich
This should only be accessed from within the procedural.
2021-03-31Alembic procedural: fix out of bound access when editing object properties ↵Kévin Dietrich
or shaders The index_data_map was not cleared when clearing a cache, so this would just append the new correct data to the end of the array instead of overwriting it, which would cause us to then use outdated indices.
2021-03-30Fix T87007: Cycles Background not updated if strength is initially nullKévin Dietrich
When the strength is initially set to zero, the shader graph is optimized out to remove any node which will not be executed because of this, which removes pretty much every single node, except for the output. As the graph is empty, the world shader is made invisible to rays so it is not evaluated in the kernel. However, when the strength is then modified, the Background is not updated as the modification happens on the Shader Node and not on the Background Node, so it is never tagged as modified. To fix this, we need to tag the Background as modified when its shader is also modified so the Kernel data is properly updated. Regression caused by rBbbe6d44928235cd4a5cfbeaf1a1de78ed861bb92.
2021-03-30Cycles: Do not allocate tile buffers on all devices when peer memory is ↵Patrick Mours
active and denoising is not Separate tile buffers on all devices only need to exist when denoising is active (so any overlap being rendered simultaneously does not write to the same memory region). When denoising is not active they can be distributed like all other memory when peer memory support is available. Reviewed By: brecht Differential Revision: https://developer.blender.org/D10858
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-26Cleanup: redundant expressionKévin Dietrich
2021-03-26Fix T86939: Cycles objects bounds not updated when transforming objectsKévin Dietrich
As a rather premature optimization from rBbbe6d4492823, Object bounds were only computed when either the Object or its Geometry were modified. Prior to rB42198e9eb03b, this would work, as the Geometry was tagged as modified if the Object's transform was also modified. Since this tagging is not done anymore due to side effects, and since at the time bounds are computed Objects were already processed and tag as unmodified, the check on the modified status was always false. For now remove this check, so the bounds are always unconditionally updated. If this ever becomes a performance problem in large scenes with motion blur, we will then try to find a way to nicely optimize it. This would only affect BHV2 as OptiX and Embree handle object bounds themselves.
2021-03-26Cleanup: clang-formatCampbell Barton
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-24Alembic procedural: deduplicate cached data accross framesKévin Dietrich
Currently the procedural will add an entry to the cache for every frame even if the data only changes seldomly. This means that in some cases we will have duplicate data accross frames. The cached data is now stored separately from the time information, and an index is used to retrieve it based on time. This decoupling allows for multiple frames to point to the same data. To check if two arrays are the same, we compute their keys using the Alembic library's routines (which is based on murmur3), and tell the cache to reuse the last data if the keys match. This can drastically reduce memory usage at the cost of more processing time, although processing time is only increased if the topology may change.
2021-03-24Cleanup: unused variableKévin Dietrich
2021-03-24Fix T86601: Cycles accumulates displacement when transforming an ObjectKévin Dietrich
In order to update the BVH when only the transformations are changing, we would tag the Object's Geometry as modified. However, when displacement is used, and the vertices were not themselves modified, this would cause us to redo the displacement on already displaced vertices. To fix this, use a specific update flag for detecting and notifying that transformations were modified. Regression caused by rBbbe6d44928235cd4a5cfbeaf1a1de78ed861bb92.
2021-03-23Fix T86567: Cycles crashes when playing back animated volumesKévin Dietrich
The crash is caused by an out of bound access in the kernel due to missing data update when a Volume's voxel data changes. Although the previous bounding mesh is cleared, the Volume Node was not tagged as modified, and therefore never rebuilt. To fix this, tag the Geometries (not just Volumes, to be more robust) as modified in Geometry.clear(). Regression caused by rBbbe6d44928235cd4a5cfbeaf1a1de78ed861bb92.
2021-03-23Nodes: Add Refract and Faceforward functions to Vector Maths nodesCharlie Jolly
Cycles, Eevee, OSL, Geo, Attribute Based on outdated refract patch D6619 by @cubic_sloth `refract` and `faceforward` are standard functions in GLSL, OSL and Godot shader languages. Adding these functions provides Blender shader artists access to these standard functions. Reviewed By: brecht Differential Revision: https://developer.blender.org/D10622
2021-03-21Cleanup: spelling, doxygen comment formattingCampbell Barton
2021-03-19Fix Cycles NaN assert in random walk SSS due to very small throughputBrecht Van Lommel
Now terminate if there are many bounces and the throughput gets so small that we get precision issues.
2021-03-18Cleanup: spellingCampbell Barton
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-15Fix T86121: Cycles Attribute returning wrong results with OSLBrecht Van Lommel
Fix uninitialized variable in the OSL shader.
2021-03-15Fix (apparently harmless) Cycles asan warningsBrecht Van Lommel
2021-03-15Cycles: optimize ensure_valid_reflection(), reduces render time by about 1%Mikhail
This is an implementation that is about 1.5-2.1 times faster. It gives a result that is on average 6° different from the old implementation. The difference is because normals (Ng, N, N') are not selected to be coplanar, but instead reflection R is lifted the least amount and the N' is computed as a bisector. Differential Revision: https://developer.blender.org/D10084
2021-03-15Fix T56925: Cycles banding artifacts in dense volumesMikhail Matrosov
Offset the starting point of segments by a random amount to avoid the bounding box shape affecting the result and creating artifacts. Differential Revision: https://developer.blender.org/D10576
2021-03-15Fix Cycles rendering crash on OpenBSDBrecht Van Lommel
Static initialization order was not guaranteed to be correct for node base types. Now wrap all initialization in accessor functions to ensure the order is correct. Did not cause any known bug on Linux/macOS/Windows, but showed up on this platform.
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-03-12Fix compiler warning when building Cycles without EmbreeBrecht Van Lommel
2021-03-12Alembic procedural: specific result type for cache lookupsKévin Dietrich
This type, CacheLookupResult, holds the data for the current time, or an explanation as to why no data is available (already loaded, or simply nothing available). This is useful to document the behavior of the code but also, in future changes, to respond appropriately for missing data.
2021-03-12Alembic procedural: add support for instancingKévin Dietrich
Inside of the procedural, instances are AlembicObjects which point to the AlembicObject that they instance. In Alembic, an instance is an untyped Object pointing to the original (instanced) one through its source path. During the archive traversal we detect such instances and, only if the instanced object is asked to be rendered, set the instance's AlembicObject to point to the original's AlembicObject. Cycles Object Nodes are created for each AlembicObject, but only for non-instances are Geometries created, which are then shared between Object Nodes. It is supposed, and expected, that all instances share the same shaders, which will be set to be the ones found on the original object. As for caching, the data cache for an AlembicObject is only valid for non-instances and should not be read to or from as it is implicitly shared.
2021-03-12Alembic procedural: move cache building out of object update methodsKévin Dietrich
This will help support instancing as cache building is now decoupled from the logic to update the Nodes' sockets as data (and cache) will need to be shared by different Geometries somehow, and also simplify implementing different data caching methods by centralizing this operation.
2021-03-12Alembic procedural: fix missing attribute updateKévin Dietrich
We need to explicitely tag the Attribute and AttributeSet as modified if we change or add/remove data. This is more of a bandaid until attributes handling is refactored to be able to reuse routines from the Attribute API.
2021-03-12Cleanup: unused variableKévin Dietrich