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
2014-10-06Compositor; Explicitly specify inline functionSergey Sharybin
2014-10-06Compositor: implement OpenCL backend for gaussian blurSergey Sharybin
Pretty much straightforward change which gives around 30% speedup on my laptop and around 2x speedup on desktop in the BI (which uses gts580). Tested with huge blurs (like 10% of blur) which was rather common during Caminandes. For now OpenCL is only limited for blur size more than 100 pixels. This is a bit experimental still, feedback is welcome. Reviewers: jbakker, lukastoenne Subscribers: ton Differential Revision: https://developer.blender.org/D576
2014-10-02Compositor: Reduce number of int<->float conversions in keying screen operationSergey Sharybin
2014-10-02Compositor: Simplify logic in keying blur operationSergey Sharybin
2014-09-23Fix T41921: MapUV node alpha setting broken.Lukas Tönne
The UV values includes the image width/height now. To restore the previous method as close as possible (even though it is not documented anywhere how this is supposed to work), we have to ignore this scaling.
2014-09-23Fixed border extension for the sunbeams node.Lukas Tönne
This ensures that the beams color does not darken along borders, by using the last valid color of the ray as the border color (extending colors in the direction of the source point).
2014-09-21Fix T41754, sunbeams node should return the unmodified source value atLukas Tönne
the source pixel.
2014-09-12Cleanup & remove redundant checkCampbell Barton
2014-09-11Fix wrong area of interest for movie undistortionSergey Sharybin
2014-09-11Fix T41785: The combination of movie-distortion and lens-distortion leads to ↵Sergey Sharybin
artifacts
2014-09-08Fix T41573: Compositing reroute converts floats to red colorBastien Montagne
At compo level, only skip data type conversion if both ends of a link do not require it. Thanks to Lukas for advices and review.
2014-08-23Fix T41538: Sun Beam Node has artifact at its radius.Lukas Tönne
The sunbeams node was clamping the range of influence to start at 1 pixel distance from the source. This was a poor fix for artifacts caused by an off set in buffer coordinates. Since the u coordinate starts at ceil(umax) the v coordinate also has to use ceil. This also fixes some discontinuities that became visible when the source point is close to a sharp line in the input image.
2014-08-18De-duplicate EWA filter code between renderer and compositorSergey Sharybin
The title says it all, move the EWA filter to BLI (currently it's math_interp.c) and use the function from both BI renderer and the compositor. This makes more central place of the algorithm, allowing to have fixes and optimizaitons synchronized across the two usages. This also fixes T41440: Displacement in compositing creates holes Reviewers: campbellbarton, lukastoenne Reviewed By: lukastoenne Maniphest Tasks: T41440 Differential Revision: https://developer.blender.org/D748
2014-08-14remove MAXFLOAT defineCampbell Barton
2014-08-13SpellingCampbell Barton
2014-08-05SpellingCampbell Barton
2014-08-05Deduplicate CUDA and OpenCL wranglersSergey Sharybin
For now it was mainly about OpenCL wrangler being duplicated between Cycles and Compositor, but with OpenSubdiv work those wranglers were gonna to be duplicated just once again. This commit makes it so Cycles and Compositor uses wranglers from this repositories: - https://github.com/CudaWrangler/cuew - https://github.com/OpenCLWrangler/clew This repositories are based on the wranglers we used before and they'll be likely continued maintaining by us plus some more players in the market. Pretty much straightforward change with some tricks in the CMake/SCons to make this libs being passed to the linker after all other libraries in order to make OpenSubdiv linked against those wranglers in the future. For those who're worrying about Cycles being less standalone, it's not truth, it's rather more flexible now and in the future different wranglers might be used in Cycles. For now it'll just mean those libs would need to be put into Cycles repository together with some other libs from Blender such as mikkspace. This is mainly platform maintenance commit, should not be any changes to the user space. Reviewers: juicyfruit, dingto, campbellbarton Reviewed By: juicyfruit, dingto, campbellbarton Differential Revision: https://developer.blender.org/D707
2014-08-05Cleanup: indentationCampbell Barton
2014-08-02SpellingCampbell Barton
2014-07-26New compositor node "Sun Beams"Lukas Tönne
This allows adding a "fake" sun beam effect, simulating crepuscular rays from light being scattered in a medium like the atmosphere or deep water. Such effects can be created also by renderers using volumetric lighting, but the compositor feature is a lot cheaper and is independent from 3D rendering. This makes it ideally suited for motion graphics. The implementation uses am optimized accumulation method for gathering color values along a line segment. The inner buffer loop uses fixed offset increments to avoid unnecessary multiplications and avoids variables by using compile-time specialization (see inline comments for further details).
2014-07-15Fix T41067: Muted nodes still do data type conversions.Lukas Tönne
Proxy operations from muted nodes would still create conversion operations where the datatypes don't match, which creates unexpected behavior. Arguably datatype conversion could still happen even when the main operation is muted, but this would be a design change and so is disabled now.
2014-07-08Fix T40986: crash on using the viewer node inside of group nodes.Lukas Tönne
Viewers were activated both inside the active group as well as the top level tree (the latter being a quick fix for getting a fallback viewer). This caused a race condition on the shared viewer image. Now the active viewer is defined at node conversion time in the converter so that only one can be active at a time without each node having to follow complicated rules for exclusion.
2014-07-01Fix T40903: Rendering: Alpha Channel is BrokenSergey Sharybin
2014-06-30Fix T40878: Translate node is inconsistentSergey Sharybin
2014-06-30Compositor: Get rid of hardcoded constantsSergey Sharybin
2014-06-30Fix for subpixel sampling was broken for render layers nodeSergey Sharybin
2014-06-23T39690: Modifications to Blender's 'temp dir' system.Bastien Montagne
Current temporary data of Blender suffers one major issue - default 'temp' dir on Windows is never automatically cleaned up, and can end being quite big when used by Blender, especially when we have to store per-process data (using getpid() in file names). To address this, this patch: * Divides tempdir paths in two, one for 'base' temp dir (the same as previous unique tempdir path), the other is a mkdtemp-generated sub-dir, specific to each Blender instance. * Only uses base tempdir when we need some shallow persistance accross Blender sessions - and we always reuse the same filename (quit.blend...) or generate small file (crash reports...). * Uses temp sub-dir for heavy files like pointcache or renderEXRs (Save Buffer option). * Erases temp sub-dir on quit or crash. To get this working it also adds a working 'recursive delete' to BLI_delete() under Windows. Note that, as in current code, the 'recover render result' hack-feature that was possible with SaveBuffer option is still removed. A real renderresult cache feature will be added soon, though. Reviewers: campbellbarton, brecht, sergey Reviewed By: campbellbarton, sergey CC: sergey Differential Revision: https://developer.blender.org/D531
2014-06-13Use advantage of SSE2 instructions in gaussian blur nodeSergey Sharybin
This gives around 30% of speedup for gaussian blur node. Pretty much straightforward implementation inside the node itself, but needed to implement some additional things: - Aligned malloc. It's needed to load data onto SSE registers faster. based on the aligned_malloc() from Libmv with some additional trickery going on to support arbitrary alignment (this magic is needed because of MemHead). In the practice only 16bit alignment is supported because of the lack of aligned malloc with arbitrary alignment for OSX. Not a bit deal for now because we need 16 bytes alignment at this moment only. Could be tweaked further later. - Memory buffers in compositor are now aligned to 16 bytes. Should be harmless for non-SSE cases too. just mentioning. Reviewers: campbellbarton, lukastoenne, jbakker Reviewed By: campbellbarton CC: lockal Differential Revision: https://developer.blender.org/D564
2014-06-05Fix subpixel precision in transform nodeSergey Sharybin
The node was using sampler from the callee node and passed it to the input nodes. Since the fact that compositor output node uses NEAREST interpolation (why it uses nearest is the whole separate story) it's not possible to have subpixel precision in such cases: <image> -> <translate> -> <output> For now solving by hard-coding translate node to use BILINEAR interpolation. It can't become worse in this node anyway and the sampling pipeline is to be re-visited from scratch.
2014-06-02Fix T40448: Blurring bug in the compositorSergey Sharybin
This commit pretty much reverts all the changes related on tile-ability of the fast gaussian blur. It's not tilable by definition and would almost always give you seams on the tile boundaries. Atmind already met the issue and tried to solve it by increasing some magic constant, which is pretty much likely simply made it so compositor switched to full-frame calculation in that particular .blend file. Fast gaussian is really not a production thing and need to be avoided. We're to improve speed of normal gaussian blur instead.
2014-06-01Fix T40459: Gauss table can be NULL when ending the blur node operation,Lukas Tönne
which must not be passed to MEM_freeN.
2014-05-29Fix T40414: Multiple input nodes in a group not working.Lukas Tönne
A node group can have multiple input nodes. In the compositor that means each of the input sockets has to be connected to the linked outputs, which is represented by a single link on the outside of the group.
2014-05-28Fix T40383: Keying node doesn't workSergey Sharybin
We should actually re-consider whether zero-sized kernels are allowed for edge detection.
2014-05-23Optimization of keying clip operationsSergey Sharybin
Gives around 20%-30% speedup by doing early exit from kernel traversal cycle.
2014-05-09Code cleanup: styleCampbell Barton
2014-05-07Nodes: add absolute value operation to all math nodesMatt Heimlich
Reviewed By: dingto, brecht Differential Revision: https://developer.blender.org/D507
2014-04-29Fix for wrong behavior of 'darken' blend mode with factor.Kevin Dietrich
The formula was not consistent across Blender and behaved strangely, now it is a simple linear blend between color1 and min(color1, color2). Reviewed By: brecht Differential Revision: https://developer.blender.org/D489
2014-04-29Accidentally left compositor debug option enabled, sorry.Lukas Tönne
(We should replace that with a proper build option really)
2014-04-29Fix T39936: Plane Track operation would not initialize resolutions forLukas Tönne
upstream nodes.
2014-04-29Fix T39539Jeroen Bakker
Initialization of not initialized memory when accessing the renderlayer directly
2014-04-25Fix T39799: Backdrop (compositor) ignores alpha.Lukas Tönne
This issue is because of a somewhat "special" behavior in old code, which got lost during rB09874df: There was a variant of the `relinkConnections` function which would leave the socket completely unconnected. This is not a valid state really (given that each unconnected input must otherwise connected to a constant `Set` type node), but was used as a way to distinguish connected alpha/depth sockets in composite and viewer output nodes. https://developer.blender.org/diffusion/B/browse/master/source/blender/compositor/intern/COM_InputSocket.cpp;28a829893c702918afc5ac1945a06eaefa611594$69 After the large cleanup patch ({D309}) every socket is now automatically connected to a constant, such that `getInputSocketReader` will never return a NULL pointer. This breaks the previous test method, which needs to be replaced by more explicit flags. Luckily this was done only for very few output nodes (Composite, Viewer, Output-File). These now use the regular SetValueOperation default in case "use alpha" is disabled, but set this to an explicit 1.0 value instead of mapping to the node socket.
2014-04-24Fix T39830: Viewer node update error in the compositor when using the ↵Sergey Sharybin
seperate/combine YCbCr nodes Mode of the YCC<->RGB was never set..
2014-04-24Fix T39786: Transform node gives bad result.Kevin Dietrich
Error caused by rB09874df1.
2014-04-23Fix T39848: Reroute nodes were not handled properly after compositorLukas Tönne
cleanup patch. These simply need a proxy node, which will be replaced by direct operation links afterward.
2014-04-17Style cleanupCampbell Barton
2014-04-16Fix for half pixel offset rasterizing masksCampbell Barton
2014-04-15Building with C++ guarded alloc works againCampbell Barton
2014-04-15Structural cleanup and improvements for the compositor.Lukas Tönne
Many parts of the compositor are unnecessarily complicated. This patch aims at reducing the complexity of writing nodes and making the code more transparent. == Separating Nodes and Operations == Currently these are both mixed in the same graph, even though they have very different purposes and are used at distinct stages in the compositing process. The patch introduces dedicated graph classes for nodes and for operations. This removes the need for a lot of special case checks (isOperation etc.) and explicit type casts. It simplifies the code since it becomes clear at every stage what type of node we are dealing with. The compiler can use static typing to avoid common bugs from mixing up these types and fewer runtime sanity checks are needed. == Simplified Node Conversion == Converting nodes to operations was previously based on "relinking", i.e. nodes would start with by mirroring links in the Blender DNA node trees, then add operations and redirect these links to them. This was very hard to follow in many cases and required a lot of attention to avoid invalid states. Now there is a helper class called the NodeConverter, which is passed to nodes and implements a much simpler API for this process. Nodes can add operations and explicit connections as before, but defining "external" links to the inputs/outputs of the original node now uses mapping instead of directly modifying link data. Input data (node graph) and result (operations graph) are cleanly separated. == Removed Redundant Data Structures == A few redundant data structures have been removed, notably the SocketConnection. These are only needed temporarily during graph construction. For executing the compositor operations it is perfectly sufficient to store only the direct input link pointers. A common pointer indirection is avoided this way (which might also give a little performance improvement). == Avoid virtual recursive functions == Recursive virtual functions are evil. They are very hard to follow during debugging. At least in the parts this patch is concerned with these functions have been replaced by a non-virtual recursive core function (which might then call virtual non-recursive functions if needed). See for example NodeOperationBuilder::group_operations.
2014-04-14Fix T39700: Plane deform still works foreverSergey Sharybin
Clamped the EWA sampling region to buffer size now. Solves the issue, but needs more tests to be sure weights are correct.
2014-04-11Fix T39206: Plane deform works incredibly slowSergey Sharybin
The issue was caused by the readEWA spending loads of time trying to sample regions outside of the buffer.Solved by adding an early exit check. We could also clamp the sampling region to the rect, but it's not so much clear whether weight will be correct in such case so left it for the future.