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-06-26Cleanup: full sentences in comments, improve comment formattingCampbell Barton
2021-06-24Cleanup: comment blocks, trailing space in commentsCampbell Barton
2021-06-23Compositor: Full frame ID Mask nodeManuel Castilla
Adds full frame implementation to this node operations. No functional changes. 1.2x faster than tiled fallback. Reviewed By: jbakker Differential Revision: https://developer.blender.org/D11638
2021-06-23Compositor: Full frame Image nodeManuel Castilla
Adds full frame implementation to Image node operations. Mostly refactored into buffer utility methods for reuse in other operations. No functional changes. 1.8x faster than tiled fallback. Reviewed By: jbakker Differential Revision: https://developer.blender.org/D11559
2021-06-23Cleanup: remove unused parameterManuel Castilla
2021-06-22Cleanup: Spelling MistakesLeon Zandman
This patch fixes many minor spelling mistakes, all in comments or console output. Mostly contractions like can't, won't, don't, its/it's, etc. Differential Revision: https://developer.blender.org/D11663 Reviewed by Harley Acheson
2021-06-21Cleanup: improve naming in CompositorManuel Castilla
2021-06-21Cleanup: move function parameter to memberManuel Castilla
Get current pass only when needed.
2021-06-16Fix: Image node alpha socket converted to operations twiceManuel Castilla
On selecting a multi-layer image with a combined pass, a "Combined" socket is created and default combined pass socket "Image" is disabled by setting `SOCK_UNAVAIL` flag. When converting into operations, `ImageNode` converts alpha socket on finding any socket with a combined pass without checking the flag. Since commit rB93e2491ee724 an assertion fails when mapping sockets twice because now map `add_new` is used. Reviewed By: jbakker Differential Revision: https://developer.blender.org/D11566
2021-06-16Compositor: Full frame Value nodeManuel Castilla
Adds full frame implementation to Value node operation. No functional changes. Reviewed By: jbakker Differential Revision: https://developer.blender.org/D11594
2021-06-16Compositor: Full frame RGB nodeManuel Castilla
Adds full frame implementation to RGB node operation. No functional changes. Reviewed By: jbakker Differential Revision: https://developer.blender.org/D11593
2021-06-15BLI: use explicit task isolation, no longer part of parallel operationsBrecht Van Lommel
After looking into task isolation issues with Sergey, we couldn't find the reason behind the deadlocks that we are getting in T87938 and a Sprite Fright file involving motion blur renders. There is no apparent place where we adding or waiting on tasks in a task group from different isolation regions, which is what is known to cause problems. Yet it still hangs. Either we do not understand some limitation of TBB isolation, or there is a bug in TBB, but we could not figure it out. Instead the idea is to use isolation only where we know we need it: when holding a mutex lock and then doing some multithreaded operation within that locked region. Three places where we do this now: * Generated images * Cached BVH tree building * OpenVDB lazy grid loading Compared to the more automatic approach previously used, there is the downside that it is easy to miss places where we need isolation. Yet doing it more automatically is also causing unexpected issue and bugs that we found no solution for, so this seems better. Patch implemented by Sergey and me. Differential Revision: https://developer.blender.org/D11603
2021-06-15Cleanup: use back-slash for doxygen commentsCampbell Barton
2021-06-09Fix: Compositor test desintegrate failing on arm64Manuel Castilla
Changes introduced in commit rBe9f2f17e8518 can create different render results when there is a Math or Mix operation after TextureOperation on tiled execution model. This is due to WriteBufferOperation forcing a single pixel resolution when these operations use a preferred resolution of 0 to check if their inputs have resolution. Fixing this behaviour creates different renders too. This patch keeps previous tiled implementation and adds the new implementation only for full frame execution. Reviewed By: Jeroen Bakker (jbakker) Differential Revision: https://developer.blender.org/D11546
2021-06-09Compositor: Refactor recursive methods to iterativeManuel Castilla
In order to reduce stack size this patch converts full frame recursive methods into iterative. - No functional changes. - No performance changes. - Memory peak may slightly vary depending on the tree because now breadth-first traversal is used instead of depth-first. Tests in D11113 have same results except for test1 memory peak: 360MBs instead of 329.50MBs. Reviewed By: Jeroen Bakker (jbakker) Differential Revision: https://developer.blender.org/D11515
2021-06-08Fix compile error with 'WITH_CXX_GUARDEDALLOC'Germano Cavalcante
Seen with msvc
2021-06-08BLI: support disabling task isolation in task poolJacques Lucke
Under some circumstances using task isolation can cause deadlocks. Previously, our task pool implementation would run all tasks in an isolated region. Now using task isolation is optional and can be turned on/off for individual task pools. Task pools that spawn new tasks recursively should never enable task isolation. There is a new check that finds these cases at runtime. Right now this check is disabled, so that this commit is a pure refactor. It will be enabled in an upcoming commit. This fixes T88598. Differential Revision: https://developer.blender.org/D11415
2021-06-02Fix T88567: Cryptomatte only works for the first View Layer.Jeroen Bakker
The view layer was always set to 0. This patch increments it.
2021-06-02Cleanup: spelling in commentsCampbell Barton
2021-06-01Cleanup: clang-tidyJacques Lucke
* `readability-redundant-member-init` * `readability-inconsistent-declaration-parameter-name` * Remove constructor that can be defaulted.
2021-06-01Compositor: Full-frame base systemManuel Castilla
This patch adds the base code needed to make the full-frame system work for both current tiled/per-pixel implementation of operations and full-frame. Two execution models: - Tiled: Current implementation. Renders execution groups in tiles from outputs to input. Not all operations are buffered. Runs the tiled/per-pixel implementation. - FullFrame: All operations are buffered. Fully renders operations from inputs to outputs. Runs full-frame implementation of operations if available otherwise the current tiled/per-pixel. Creates output buffers on first read and free them as soon as all its readers have finished, reducing peak memory usage of complex/long trees. Operations are multi-threaded but do not run in parallel as Tiled (will be done in another patch). This should allow us to convert operations to full-frame in small steps with the system already working and solve the problem of high memory usage. FullFrame breaking changes respect Tiled system, mainly: - Translate, Rotate, Scale, and Transform take effect immediately instead of next buffered operation. - Any sampling is always done over inputs instead of last buffered operation. Reviewed By: jbakker Differential Revision: https://developer.blender.org/D11113
2021-05-31Fix T88666: Cryptomatte: EXR sequence does not update when scrubbing the ↵Jeroen Bakker
timeline. Cause is that initializing the cryptomatte session would reset the current frame of an image sequence. The solution is to always use the scene current frame so it resets to the correct frame. This was a todo that wasn't solved after it landed in master. Needs to be backported to 2.93.
2021-05-31Fix (unreported): TextureOperation inputs have no resolutionManuel Castilla
When compositor node tree has a texture node, TextureOperation vector inputs has always {0, 0} resolution instead of having same resolution as TextureOperation which is the expected behaviour for resolutions propagation. Current TextureOperation determineResolution implementation doesn't determine inputs resolution, breaking propagation of preferred resolution and that's the reason why they are always 0. Setting scene resolution always would mean it is its own resolution and could make sense, but setting it only when preferred resolution is 0, breaks preferred resolution logic affecting other operations as explained in D10972. In any case scene resolution is already the default preferred resolution on viewer and compositor nodes. Reviewed By: jbakker Differential Revision: https://developer.blender.org/D11381
2021-05-26Compositor: Use BLI_color in convert alpha node.Jeroen Bakker
Recently the CPP colors module landed in master. This patch will use the new module in the convert alpha node.
2021-05-24Cleanup: Refactor PlaneTrack and PlaneDistort operationsManuel Castilla
Deduplicates code by introducing a PlaneDirtortBaseOperation for common logic. Reviewed By: #compositing, jbakker Differential Revision: https://developer.blender.org/D11273
2021-05-14Cleanup: clang-formatCampbell Barton
2021-05-10Compositor: Add vars and methods for easier image loopingManuel Castilla
These variables and methods should make it easier to loop through buffers elements/pixels. They take into account single element buffers. Single element buffers can be used for set operations to reduce memory usage. Usage example: P2078 Reviewed By: #compositing, jbakker Differential Revision: https://developer.blender.org/D11015
2021-05-03Merge branch 'blender-v2.93-release'Sergey Sharybin
2021-05-03Fix T87989: Crash using OpenCL in compositorSergey Sharybin
Initial report was mentioning the Classroom demo scene, but this is probably because the scene was pre-configured to be used with OpenCL. Would expect any OpenCL compositing to be failing prior to this fix. The reason why crash was happening is due to OpenCL queue being released from OpenCLDevice destructor. Is not that obvious, but when Vector (including std::vector) is holding elements by value a destructor will be called on "old" memory when vector capacitance changes. Solved by making forbidding copy semantic for compositor devices and forcing move semantic to be used. Also use emplace semantic in the devices vector initialization.
2021-04-28Fix Compositor: WorkScheduler task model deletes worksManuel Castilla
WorkScheduler task model deletes work packages after executing them. The other models don't do so. All models should handle packages the same way. Reviewed By: #compositing, jbakker Differential Revision: https://developer.blender.org/D11102
2021-04-28Fix Compositor: WorkScheduler task model deletes worksManuel Castilla
WorkScheduler task model deletes work packages after executing them. The other models don't do so. All models should handle packages the same way. Reviewed By: #compositing, jbakker Differential Revision: https://developer.blender.org/D11102
2021-04-28Replace COM_DEBUG #define with constexpr. Fixes T87035Tyler
Reviewed By: jbakker Maniphest Tasks: T87035 Differential Revision: https://developer.blender.org/D11068
2021-04-23macOS: Fix unknown -Wsuggest-override warningAnkit Meel
Added in rB7cef01b090c4c2d2703274edb91886ae37d3ce82 and rB87bfa2b207b90b5e34ebd835a23c2a82afbed878 Reviewed by: jbakker, #platform_macos Differential Revision: https://developer.blender.org/D11012
2021-04-14Fix (unreported) compositor resolution propagation broken by some nodesManuel Castilla
Some operations may use no preferredResolution ({0, 0}) when calling determineResolution on inputs to check if they have resolution on their own. See MixOperation or MathOperation determineResolution implementation. In such cases {0, 0} resolution ends up being set when an input doesn't have own resolution, breaking propagation of the original preferredResolution. They don't mean to set it as resolution, it's just a check. This patch only allows to set valid resolutions (>0). When it's 0 it may be understood as "No preferred or determined resolution" so it should not be set to give output operations another chance of finding a proper resolution by calling determineResolution again with a different preferredResolution. Test file: {F9932526} Reviewed By: #compositing, jbakker Differential Revision: https://developer.blender.org/D10972
2021-04-13Cleanup: sort cmake file listsCampbell Barton
2021-04-12Fix T74680: Incorrect mixing in Glare nodeSzymon Ulatowski
The mixing function was designed to give correct results for Mix values of -1, 0, and +1, but the behavior between these points was not linear. This is unavoidable, because the function depends on both Mix and Mix^2 (by multiplying value and mf) so they could not cancel out completely. The new formula simply calculates the weighted sum without trying to invent a smooth function. Value for MixGlareOperation is now passed directly without scaling because it is then easier to use. Note that the previous formula performed max() twice for both input image and the result, now there is just one max() per channel because the glare input can't be negative. Reviewed By: jbakker Differential Revision: https://developer.blender.org/D7138
2021-04-12Compositor: Allocate OIDN memory after receiving lock.Jeroen Bakker
Related to {T77023}. When using many Denoise nodes the memory in OIDN are allocated up front. A mutex could stall the process until. This change will allocate the memory after it received the lock.
2021-04-12Fix: File output uses incorrect resolution when first socket unused.Jeroen Bakker
File output node always received the resolution from the first socket. When that socket didn't had a link it would use a resolution of 0,0. What lead to not saving the file at all. This only effected Multi layer OpenEXR files. This change would go over all the links to find the first valid resolution.
2021-04-12Fix T87252: File output node broken with more than 4 inputs.Jeroen Bakker
In recent refactor the operator sockets were migrated from a std::list to a blender::Vector. The way how the file output node created the sockets along mapping the sockets could lead to storing incorrect pointers. This patch fixes this by defining and mapping the sockets in separate loops.
2021-04-09Compositor: Output where debug is stored.Jeroen Bakker
2021-04-09Compositor: Enable suggest-override warning.Jeroen Bakker
Compostior relies heavilly on overridden methods. The override keyword has been added in this module and is desired. The benefit of the override keyword is that it reports an error when not applied to a (base) virtual method and report what will not match when refactoring the code to be closer to blender style guide. Reviewed By: sybren Differential Revision: https://developer.blender.org/D10846
2021-04-08Cleanup: spellingCampbell Barton
2021-04-08Cleanup: enable modernize-use-equals-default checkJacques Lucke
This removes a lot of unnecessary code that is generated by the compiler automatically. In very few cases, a defaulted destructor in a .cc file is still necessary, because of forward declarations in the header. I removed some defaulted virtual destructors, because they are not necessary, when the parent class has a virtual destructor already. Defaulted constructors are only necessary when there is another constructor, but the class should still be default constructible. Differential Revision: https://developer.blender.org/D10911
2021-04-06Compositor: Add Streaming Operator for NodeOperationBuilder.Jeroen Bakker
For debugging purposes to convert the internal state of the NodeOperationBuilder to a graphviz. Usage: std::cout << *this << "\n"; Inside any method of the NodeOperationBuilder.
2021-04-06Suppress compiler warning.Jeroen Bakker
2021-04-02Cleanup: Remove blender namespace from Map.Jeroen Bakker
2021-04-02Cleanup: remove loading blender namespace from Vector.Jeroen Bakker
2021-04-02Cleanup: Added leading `e` to enum types.Jeroen Bakker
2021-04-02Cleanup: rename eChunkExecutionState to eWorkPackageState.Jeroen Bakker
2021-04-02Compositor: stream operators for WorkPackages.Jeroen Bakker
Helps developers during debugging.