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
path: root/intern
AgeCommit message (Collapse)Author
2021-05-18Cycles: Avoid unnecessary data updates in viewportSergey Sharybin
The BlenderSync will do quite a bit of work on every sync_data() call even if there is nothing changed in the scene. There will be early outputs done deeper in the call graph, but this is not really enough to ensure best performance during viewport navigation. This change makes it so sync_data() is only used when dependency graph has any update tags: if something changed in the scene the dependency graph will know it. If nothing changed there will be no IDs tagged for an update in the dependency graph. There are two weak parts in the current change: - With the persistent data there is a special call to ignore the check of the dependency graph tags. This is more of a safety, because it is not immediately clear what the correct state of recalc flags is. - Deletion of objects is detected indirectly, via tags of scene and collections. It might not be bad for the first version of the change. The test file used: {F10117322} Simply open the file, start viewport render, and navigate the viewport. On my computer this avoids 0.2sec spend on data_sync() on every up[date of viewport navigation. We can do way more granular updates in the future: for example, avoid heavy objects sync when it is only camera object which changed. This will need an extended support from the dependency graph API. Doing nothing if nothing is changed is something we would want to do anyway. Differential Revision: https://developer.blender.org/D11279
2021-05-18Cleanup: formatKévin Dietrich
2021-05-18Cleanup: clang-formatCampbell Barton
2021-05-18Alembic procedural: fix wrong property used as base for attributeKévin Dietrich
lookups We use the schema so that we can access top level attributes as well. This is already done for polygon meshes and curves, so this only modifies the behavior for subdivision objects.
2021-05-18Alembic procedural: fix crash accessing invalid ICompoundPropertiesKévin Dietrich
Although it is not a pointer, accessing an ICompoundProperty dereferences a pointer under the hood, so check for validity.
2021-05-17Merge branch 'blender-v2.93-release'Brecht Van Lommel
2021-05-17Fix T85892: disable progressive refine when using adaptive samplingBrecht Van Lommel
This is giving too bright pixel values, as the sample scaling and random number sample are wrong. The proper fix for this is complicated. It will be solved in Cycles X, for now we disable this combination.
2021-05-17Fix T88216: Cycles persistent data fails with animated object transform in ↵Brecht Van Lommel
instance
2021-05-17Fix T88210: Cycles persistent data failing with image sequencesBrecht Van Lommel
2021-05-17Fix OpenCL group size performance issue on Intel GPUsBrecht Van Lommel
Contributed by Intel. On some scenes like classroom with particular integrated GPUs this speeds up rendering 1.97x. With other benchmarks and GPUs it's between 0.99-1.14x.
2021-05-15XR Controller Support Step 1: Internal Abstractions for OpenXR ActionsPeter Kim
Adds internal API for creating and managing OpenXR actions at the GHOST and WM layers. Does not bring about any changes for users since XR action functionality is not yet exposed in the Python API (will be added in a subsequent patch). OpenXR actions are a means to communicate with XR input devices and can be used to retrieve button/pose states or apply haptic feedback. Actions are bound to device inputs via a semantic path binding (https://www.khronos.org/registry/OpenXR/specs/1.0/html/xrspec.html#semantic-path-interaction-profiles), which serves as an XR version of keymaps. Main features: - Abstraction of OpenXR action management functions to GHOST-XR, WM-XR APIs. - New "xr_session_start_pre" callback for creating actions at appropriate point in the XR session. - Creation of name-identifiable action sets/actions. - Binding of actions to controller inputs. - Acquisition of controller button states. - Acquisition of controller poses. - Application of controller haptic feedback. - Carefully designed error handling and useful error reporting (e.g. action set/action name included in error message). Reviewed By: Julian Eisel Differential Revision: http://developer.blender.org/D10942
2021-05-14CLOG: Fix memleak in own recent improvement to CLOG filter.Bastien Montagne
Mistake in rBef5782e29744.
2021-05-14Python GPU: Replace part of the code that uses 'bgl' with 'gpu'Germano Cavalcante
This is part of the process described in T80730. The aim is to deprecate the bgl module. Reviewed By: fclem, brecht, campbellbarton Revision: D11147
2021-05-14Cleanup: spelling, rename metas to meta-strips / meta-ballsCampbell Barton
2021-05-14Cleanup: clang-formatCampbell Barton
2021-05-14Merge branch 'blender-v2.93-release'Kévin Dietrich
2021-05-14Fix T87929: Cycles, missing update when visibility is modifiedKévin Dietrich
This issue originates from a missing BVH packing for visibility data when it is modified. To fix this, this adds update flags to the managers to carry the modified visibility information from the Objects' modified flag to the GeometryManager. Another set of flags is added to determine which data need to be packed: geometry, vertices, or visibility. Those flags are then used when packing the primivites. Reviewed By: brecht Maniphest Tasks: T87929 Differential Revision: https://developer.blender.org/D11219
2021-05-12Merge branch 'blender-v2.93-release'Sergey Sharybin
2021-05-12Fix non-finite tangent in Cycles with missing UV mapSergey Sharybin
Was causing calculation issues later on in the kernel. This change catches the most obvious case: missing attribute. The old code was trying to set tangent to 0, but because it was transformed as a normal it got converted to non-finite value. This change makes it so that no transform is involved and 0 is written directly to the SVM stack. To cover all cases it will require using safe_normalize() in this node and in the normal transform function. This is more involved change from performance point of view, would be nice to verify whether we really want to go this route. I've left asserts in the BSDF allocation functions. Don't have strong connection to them, but think they are handy and are not different from having an assert in the path radiance checks. Differential Revision: https://developer.blender.org/D11235
2021-05-12Merge branch 'blender-v2.93-release'Sergey Sharybin
2021-05-12Cycles X: Fix possible use of uninitialized ShaderClosureSergey Sharybin
It is possible that BSDF allocation will advance pointer in the allocation "pool" but will return null pointer if the weight is too small. One artist-measurable issue this change fixes is random issues with denoising: normal pass for denoising could have accessed non-initialized normal of a closure. Differential Revision: https://developer.blender.org/D11230
2021-05-12Cycles: fix inconsistent-missing-override warningsAnkit Meel
LLVM Clang 13, macOS. Reviewed By: brecht Differential Revision: https://developer.blender.org/D11207
2021-05-12Merge branch 'blender-v2.93-release'Brecht Van Lommel
2021-05-11Fix T72791: Cycles wrong results when mixing multiple random walk BSSRDFsChris Eveleigh
Take into account the closure sample weight for the throughput. Differential Revision: https://developer.blender.org/D10936
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-11Cleanup: unnecessary extra lines for doxy sectionsCampbell Barton
2021-05-07Cleanup: Fix deinterlace code block styleSebastian Parborg
2021-05-07Cleanup: Remove deprecated variables and functions calls from our ffmpeg codeSebastian Parborg
There need to be more cleanup for ffmpeg 4.5 (ffmpeg master branch). However this now compiles on ffmpeg 4.4 without and deprication warnings. Reviewed By: Sergey, Richard Antalik Differential Revision: http://developer.blender.org/D10338
2021-05-06Cleanup: spellingCampbell Barton
2021-05-06Cleanup: link directly to stackexchange URLCampbell Barton
2021-05-05Merge branch 'blender-v2.93-release'Sergey Sharybin
2021-05-05Fix kernel loading time accounted twice in render progressSergey Sharybin
The render session is keeping track of the scene update, which includes kernel loading time. This fixes negative render times reported when CUDA kernels are compiled at runtime. A bit fragile logic, can be re-implemented using some user-counted scope utility classes, so that only outer-most time skip is applied.
2021-05-04Fix compile error without AlembicKévin Dietrich
Thanks to @Severin for noticing and providing a little patch.
2021-05-04Merge branch 'blender-v2.93-release'Germano Cavalcante
2021-05-03Fix errors in Cycles commentsBrecht Van Lommel
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-03Cycles standalone: Fixed macOS dependencies.Stefan Werner
Added IOKit and Accerelate as linked frameworks where necessary.
2021-05-03Cleanup: spellingCampbell Barton
2021-05-03Alembic Procedural: precompute vertex normalsKévin Dietrich
This precomputes vertex normals in the procedural and caches them in case none are found in the archive. This only applies to polygon meshes, as subdivision meshes are yet to be subdivided, so it is useless to do this computation. The goal here is to speed up data updates between frames, as computing normals shows up in profiles even for large objects. This saves around 16% of update time for a production file.
2021-05-03Alembic Procedural: refactor data readingKévin Dietrich
This splits the data reading logic from the AlembicObject class and moves it to separate files to better enforce a separation of concern. The goal was to simplify and improve the logic to read data from an Alembic archive. Since the procedural loads data for the entire animation, this requires looping over the frame range and looking up data for each frame. Previously those loops would be duplicated over the entire code causing divergences in how we might skip or deduplicate data across frames (if only some data change over time and not other on the same object, e.g. vertices and triangles might not have the same animation times), and therefore, bugs. Now, we only use a single function with callback to loop over the geometry data for each requested frame, and another one to loop over attributes. Given how attributes are accessed it is a bit tricky to simplify further and only use a ingle function, however, this is left as a further improvement as it is not impossible. To read the data, we now use a set of structures to hold which data to read. Those structures might seem redundant with the Alembic schemas as they are somewhat a copy of the schemas' structures, however they will allow us in the long run to treat the data of one object type as the data of another object type (e.g. to ignore subdivision, or only loading the vertices as point clouds). For attributes, this new system allows us to read arbitrary attributes, although with some limitations still: * only subdivision and polygon meshes are supported due to lack of examples for curve data; * some data types might be missing: we support float, float2, float3, booleans, normals, uvs, rgb, and rbga at the moment, other types can be trivially added * some attribute scopes (or domains) are not handled, again, due to lack of example files * color types are always interpreted as vertex colors
2021-05-03Cleanup: use boolean for has_event variable & return valueCampbell Barton
2021-05-03Cleanup: formatKévin Dietrich
2021-05-03Cycles: use reference count to detect used shadersKévin Dietrich
Shaders are only compiled if they are used by some other Node (Geometry, Light, etc.). This usage detection is done before updating the Scene, however it fails at detecting Shaders used by Procedurals not known to Cycles (e.g. ones defined by third party applications), as Procedurals are only updated after the shaders are compiled. To remedy this, we now use the Node reference counting mechanism to detect whether a Shader is used and therefore should be compiled. This removes `ShaderManager::update_shaders_used` as it is not needed anymore, however, since it would also update the Shader ids, this is now performed in `ShaderManager::device_update`, and a new virtual `device_update_specific` method was added to handle device updates for SVM and OSL. Reviewed By: brecht Differential Revision: https://developer.blender.org/D10965
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-30Merge branch 'blender-v2.93-release'Sebastian Parborg
2021-04-30Fix "use after free" issue in clogSebastian Parborg
Keep track of clog_refs so we can null the pointers when calling CLG_exit. Otherwise we will run into issues where the code will try to access freed data.
2021-04-30Merge branch 'blender-v2.93-release'Campbell Barton
2021-04-30Merge branch 'blender-v2.93-release'Campbell Barton