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
2018-07-18Compositor: Cryptomatte compositing node.Stefan Werner
This patch adds a new matte node that implements the Cryptomatte specification. It also incluces a custom eye dropper that works outside of a color picker. Cryptomatte export for the Cycles render engine will be in a separate patch. Reviewers: brecht Reviewed By: brecht Subscribers: brecht Tags: #compositing Differential Revision: https://developer.blender.org/D3531
2018-02-28Refactor depsgraph/render logic to serve evaluated depsgraph to enginesDalai Felinto
User notes ---------- Compositing, rendering of multi-layers in Eevee should be fully working now. Development notes ----------------- Up until now we were still using the same depsgraph for rendering and viewport evaluation. And we had to go out of our ways to be sure the depsgraphs were updated. Now we iterate over the (to be rendered) view layers and create a depsgraph to each one, fully evaluated and call the render engines (Cycles, Eevee, ...) with this viewlayer/depsgraph/evaluation context. At this time we are not handling data persistency, Depsgraph is created from scratch prior to rendering each frame. So I got rid of most of the partial update calls we had during the render pipeline. Cycles: Brecht Van Lommel did a patch to tackle some of the required Cycles changes but this commit mark these changes as TODOs. Basically Cycles needs to render one layer at a time. Reviewers: sergey, brecht Differential Revision: https://developer.blender.org/D3073
2017-05-03Render API/Cycles: Identify Render Passes by their name instead of a type flagLukas Stockner
Previously, every RenderPass would have a bitfield that specified its type. That limits the number of passes to 32, which was reached a while ago. However, most of the code already supported arbitrary RenderPasses since they were also used to store Multilayer EXR images. Therefore, this commit completely removes the passflag from RenderPass and changes all code to use the unique pass name for identification. Since Blender Internal relies on hardcoded passes and to preserve compatibility, 32 pass names are reserved for the old hardcoded passes. To support these arbitrary passes, the Render Result compositor node now adds dynamic sockets. For compatibility, the old hardcoded sockets are always stored and just hidden when the corresponding pass isn't available. To use these changes, the Render Engine API now includes a function that allows render engines to add arbitrary passes to the render result. To be able to add options for these passes, addons can now add their own properties to SceneRenderLayers. To keep the compositor input node updated, render engine plugins have to implement a callback that registers all the passes that will be generated. From a user perspective, nothing should change with this commit. Differential Revision: https://developer.blender.org/D2443 Differential Revision: https://developer.blender.org/D2444
2016-05-05Optimize linear<->sRGB conversion for SSE2 processorsSergey Sharybin
Using SSE2 intrinsics when available for this kind of conversions. It's not totally accurate, but accurate enough for the purposes where we're using direct colorspace conversion by-passing OCIO. Partially based on code from Cycles, partially based on other online articles: https://stackoverflow.com/questions/6475373/optimizations-for-pow-with-const-non-integer-exponent Makes projection painting on hi-res float textures smoother. This commit also enables global SSE2 in Blender. It shouldn't bring any regressions in supported hardware (we require SSE2 since 2.64 now), but should keep an eye on because compilers might have some bugs with that (unlikely, but possible).
2016-02-20CMake: Don't pass SSE2 flags in compositor for 64bit MSVCSergey Sharybin
ALl 64 bit platforms supports SSE2, hence the flag is ignored and warning was generated.
2016-01-30CMake: Remove per-module Werror settingsSergey Sharybin
Seems i was the only one who was really up to using it and i do have gcc-5 finally backported and installed here so such a fine-tune flags are no longer needed.
2016-01-28Fix/Workaround T46412: Defocus node not working on Windows 32 bitSergey Sharybin
The issue was caused by some functions in compositor returning garbage values. Partially the issue was caused by vc12_xp toolset we're using, but even with regular vc120 toolset nodes like bokeh image did not work correct. This is a bit weird solution, which could indicate some sort of compiler bug, but is also actually makes sense because we do use SSE intrinsics in the compositor now. Maybe it all gets interfered in some way. In any case, if someone wants to find a real solution for the issue please go ahead. This shouldn't have affect on supported platform because we already demand CPU to have SSE2 support.
2015-12-29More from T47045: Add i18n translations to render status from compo.Bastien Montagne
Also fix inconsistency for freestyle translation - we use IFACE_ everywhere (TIP_ may be more suited, but let's be consistent first!).
2015-07-24Compositor: Allow using debug pass output in the compositorSergey Sharybin
Currently only works correct with single float output, RGBA and vector are not supported so if one need to use this passes he'll need to wait a bit still. It is coming, don't worry.
2015-07-18CMake: Add option to enable -Werror cflag in some areasSergey Sharybin
It is rather annoying attitude nowadays to use const qualifier all over the place, including using it for multi-dimensional arrays. This isn't really supported in GCC prior to version 5.0 because it considers such an arrays to be a "pointer to a const pointer" which gives implicit casting errors. It's not possible to disable this particular type of warnings treated as errors in any GCC version prior to 5.0 as well, meaning currently usage of -Werror globally in Blender code is not possible at all. This commit makes it possible to use -Werror in areas which are complaint with older GCC versions. New advanced CMake options are: - WITH_COMPOSITOR_WERROR - WITH_LIBMV_WERROR - WITH_CYCLES_WERROR
2015-06-11Compositor: Use atomics to update finished tiles progressSergey Sharybin
Integer is not safe for incremental by multiple threads and if one is unlucky enough that could cause progress re[reports to go totally nuts.
2015-04-06Multi-View and Stereo 3DDalai Felinto
Official Documentation: http://www.blender.org/manual/render/workflows/multiview.html Implemented Features ==================== Builtin Stereo Camera * Convergence Mode * Interocular Distance * Convergence Distance * Pivot Mode Viewport * Cameras * Plane * Volume Compositor * View Switch Node * Image Node Multi-View OpenEXR support Sequencer * Image/Movie Strips 'Use Multiview' UV/Image Editor * Option to see Multi-View images in Stereo-3D or its individual images * Save/Open Multi-View (OpenEXR, Stereo3D, individual views) images I/O * Save/Open Multi-View (OpenEXR, Stereo3D, individual views) images Scene Render Views * Ability to have an arbitrary number of views in the scene Missing Bits ============ First rule of Multi-View bug report: If something is not working as it should *when Views is off* this is a severe bug, do mention this in the report. Second rule is, if something works *when Views is off* but doesn't (or crashes) when *Views is on*, this is a important bug. Do mention this in the report. Everything else is likely small todos, and may wait until we are sure none of the above is happening. Apart from that there are those known issues: * Compositor Image Node poorly working for Multi-View OpenEXR (this was working prefectly before the 'Use Multi-View' functionality) * Selecting camera from Multi-View when looking from camera is problematic * Animation Playback (ctrl+F11) doesn't support stereo formats * Wrong filepath when trying to play back animated scene * Viewport Rendering doesn't support Multi-View * Overscan Rendering * Fullscreen display modes need to warn the user * Object copy should be aware of views suffix Acknowledgments =============== * Francesco Siddi for the help with the original feature specs and design * Brecht Van Lommel for the original review of the code and design early on * Blender Foundation for the Development Fund to support the project wrap up Final patch reviewers: * Antony Riakiotakis (psy-fi) * Campbell Barton (ideasman42) * Julian Eisel (Severin) * Sergey Sharybin (nazgul) * Thomas Dinged (dingto) Code contributors of the original branch in github: * Alexey Akishin * Gabriel Caraballo
2015-01-19D627: Memory usage optimization for the compositor.Jeroen Bakker
The compostor used a fixed size of 4 floats to hold pixel data. this patch will select size of a pixel based on its type. It uses 1 float for Value, 3 float for vector and 4 floats for color data types. When benchmarking on shots (opening shot of caminandes) we get a reduction of memory of 30% and a tiny speedup as less data transformations needs to take place (but these are negligable. More information of the patch can be found on https://developer.blender.org/D627 and http://wiki.blender.org/index.php/Dev:Ref/Proposals/Compositor2014_p1.1_TD Developers: jbakker & mdewanchand Thanks for Sergey for his indept review.
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-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-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-03-11New Corner Pin node: uses explicit corner values for a plane warp ↵Lukas Tönne
transformation. This was suggested by Christopher Barrett (terrachild). Corner pin is a common feature in compositing. The corners for the plane warping can be defined by using vector node inputs to allow using perspective plane transformations without having to go via the MovieClip editor tracking data. Uses the same math as the PlaneTrack node, but without the link to MovieClip and Object. {F78199} The code for PlaneTrack operations has been restructured a bit to share it with the CornerPin node. * PlaneDistortCommonOperation.h/.cpp: Shared generic code for warping images based on 4 plane corners and a perspective matrix generated from these. Contains operation base classes for both the WarpImage and Mask operations. * PlaneTrackOperation.h/.cpp: Current plane track node operations, based on the common code above. These add pointers to MovieClip and Object which define the track data from wich to read the corners. * PlaneCornerPinOperation.h/.cpp: New corner pin variant, using explicit input sockets for the plane corners. One downside of the current compositor design is that there is no concept of invariables (constants) that don't vary over the image space. This has already been an issue for Blur nodes (size input is usually constant except when "variable size" is enabled) and a few others. For the corner pin node it is necessary that the corner input sockets are also invariant. They have to be evaluated for each tile now, otherwise the data is not available. This in turn makes it necessary to make the operation "complex" and request full input buffers, which adds unnecessary overhead.
2013-10-25Remove duplicate cmake enries in game engine and compositorSergej Reich
2013-09-13Cleanup and improvements of the compositor debug output.Lukas Toenne
Debug code for graphviz output moved to a dedicated file COM_Debug.h/cpp. The DebugInfo class has only static functions, which are called from a number of places to keep track of what is happening in the compositor. If debugging is disabled these are just inline stubs, so we don't need #ifdefs everywhere and don't get any overhead. The graphviz output is much more useful now. DebugInfo keeps track of node names in a static string map for meaningful names. It uses a number of colors for various special operation classes. ExecutionGroups are indicated in graphviz with clusters. Currently the graphviz .dot files are stored in the BLI_temporary_dir() folder. A separate dot file is generated for each stage of the ExecutionGroup scheduling, this is intended to give some idea of the compositor progress, but could still be improved.
2013-09-05Compositor cleanup: Merge conversion operations into a single file (see also ↵Lukas Toenne
r59820). Most convert operations can share a common base class with a single socket reader (except channel separate/combine nodes).
2013-09-05Merge some operations into a single fileSergey Sharybin
This merges all mix operations into a COM_MixBaseOperation (naming could be better, but this way it corresponds to what's going on with math operations. Same was done with RenderLayers operations. Overall this gives 20% of bf_compositor library compilation time decrease. And it was rather annoying to have tens of files with just a single-line constructors anyway. TODO: - All Convert operations could also be merged into a single file, but that would require adding some ConvertBaseOperation to reduce code duplication (ideally). Leaving it unchanged for now. - Some operations' headers seems to be wrongly including MixOperation header, they need to include NodeOperation instead it seems. This is rather harmless, but would be nice to doublecheck on this eventually.
2013-08-16Merge plane track feature from tomato branchSergey Sharybin
This commit includes all the changes made for plane tracker in tomato branch. Movie clip editor changes: - Artist might create a plane track out of multiple point tracks which belongs to the same track (minimum amount of point tracks is 4, maximum is not actually limited). When new plane track is added, it's getting "tracked" across all point tracks, which makes it stick to the same plane point tracks belong to. - After plane track was added, it need to be manually adjusted in a way it covers feature one might to mask/replace. General transform tools (G, R, S) or sliding corners with a mouse could be sued for this. Plane corner which corresponds to left bottom image corner has got X/Y axis on it (red is for X axis, green for Y). - Re-adjusting plane corners makes plane to be "re-tracked" for the frames sequence between current frame and next and previous keyframes. - Kayframes might be removed from the plane, using Shit-X (Marker Delete) operator. However, currently manual re-adjustment or "re-track" trigger is needed. Compositor changes: - Added new node called Plane Track Deform. - User selects which plane track to use (for this he need to select movie clip datablock, object and track names). - Node gets an image input, which need to be warped into the plane. - Node outputs: * Input image warped into the plane. * Plane, rasterized to a mask. Masking changes: - Mask points might be parented to a plane track, which makes this point deforming in a way as if it belongs to the tracked plane. Some video tutorials are available: - Coder video: http://www.youtube.com/watch?v=vISEwqNHqe4 - Artist video: https://vimeo.com/71727578 This is mine and Keir's holiday code project :)
2013-08-05SplitViewer node:Sv. Lockal
- fix thumbnail preview (previously it showed only one input) - make SplitViewer node update even if the second input is not connected - now it works when the first socket is connected to a zero-sized node tree (e. g. Color Input node) - SplitViewer node is now based on 2 operations: SplitOperation and ViewerOperation. - ViewerBaseOperation was removed as a redundant one. Any future viewer style node can use the same principle and prepare the output before passing to an actual ViewerOperation. Thanks Lukas Toenne for reviewing this patch and giving me get few pieces of advice.
2013-05-28move BLO_sys_types.h -> BLI_sys_types.h (it had nothing todo with loading)Campbell Barton
remove MEM_sys_types.h which was a duplicate.
2013-03-21code cleanup: misc warnings/styleCampbell Barton
2013-02-06Code clean up translate nodeMonique Dewanchand
added constants. moved the code to a separate class. so it can be reused for other nodes
2013-02-01Move opencl and reigidbody from source/blender/ to intern/Sergey Sharybin
This modules does not depend on any blender-specific data structures or algorithms and due to our policy better be placed to intern/ Shall be no functional changes, tested CMake and SCons on Linux, hopefully other platforms will work as well. P.S. SVN history shall be preserved for the files.
2012-12-28Convert alpha node: rename "key alpha" to "straight alpha" for consistency.Brecht Van Lommel
2012-11-14Map Range Node (tiles)Dalai Felinto
this node allows for more control for normalization of the mapped input range. Made during BlenderPRO 2012 - Brasilia, Brazil :) Idea and testing: Daniel Salazar Implementation: yours truly Reviewed by Lukas Toenne and Sergey Sharybin
2012-10-24Adding a pixelate node.Jeroen Bakker
This makes it possible to create pixelized scale in the Tile compositor. Just append the node in front of a scale node or where you want the pixelization to take place. There were some bugs on this subject, but they used the work around to add a blur size of 0 in the place where they need the pixelization.
2012-10-23code cleanup: remove $Id's that crept back in, also osl style editsCampbell Barton
2012-08-23despeckle composite nodeCampbell Barton
2012-08-19The Distance Node in 2.49/2.5/2.6 pre-tiles has a different calculation for ↵Dalai Felinto
RGB and YCC. While RGB calculate the distance in 3d between R,G and B, the YCC only takes Cb and Cr into consideration. This commit makes COM_DistanceMatteOperation inheritable and expose the calculate distance function to be re-implemented for the YCC node operation. Thanks Troy Sobotka for the report over email. Patch incorporates review suggestions by Jeroen Bakker.
2012-08-11add back datatoc, use this instead of cmake script which was too slow.Campbell Barton
2012-08-11startup.blend and preview.blend are now converted to C at build time.Campbell Barton
made some changes to startup.c - change default player to internal since its working now. - added new screen for full screen 3d viewport (nice for demo's and navigating) - disable cursor depth option (was enabled by default because of re-used flag)
2012-08-09generate COM_OpenCLKernels.cl.h automatically at build time, this allows ↵Campbell Barton
editing COM_OpenCLKernels.cl and rebuilding and means we dont have to have both files in svn. updates made to cmake and scons.
2012-08-06inpaint node from tomato branch by Peter SchlaileCampbell Barton
http://en.wikipedia.org/wiki/Inpainting
2012-07-10Mango request: added an input node to use track's position in compositorSergey Sharybin
-- svn merge -r48088:48089 -r48091:48092 ^/branches/soc-2011-tomato
2012-07-04Spellfixes: colour -> colorBastien Montagne
2012-06-28code cleanup: cmake buildsystem edits, unused var warnings and better ↵Campbell Barton
description for WITH_PYTHON_MODULE. also disable workaround for some linux installs.
2012-06-19Implementation of node for track position inputSergey Sharybin
2012-06-16feather option for dilate/erode node - needed for alpha masks so we can ↵Campbell Barton
(blur in/out), currently only positive values supported.
2012-06-14Kaying node from tomato branchSergey Sharybin
Merge keying node from tomato branch into trunk. It was considered stable and helpful by Mango team and it'll help studio pipeline, because nodes would stop disappearing when opening files in current trunk. Full information about keying nodes could be found there: http://wiki.blender.org/index.php/User:Nazg-gul/Keying
2012-06-14Keying Screen node from tomato branchSergey Sharybin
Merge Keying Screen node developed in tomato branch into trunk. This node is aimed to make dealing with non-even greenscreens better by generating gradiented image which could be used a input for keyer nodes. Based on building voronoi diagram using motion tracking markers as sites position and average pattern color as color for that site. Pretty straignforward node, some documentation is there http://wiki.blender.org/index.php/User:Nazg-gul/Keying#Screen_color
2012-06-14Fixed glaresJeroen Bakker
2012-06-14 Matched FogGlow with old implementationJeroen Bakker
2012-06-13 * optimized threadingJeroen Bakker
* break out with glare node * Added OpenCL kernels compatible with AMD still need some testing.
2012-06-10Merging r47624 through r47661 from trunk into soc-2011-tomatoSergey Sharybin
2012-06-09code cleanup: reduce float/double promotionCampbell Barton
2012-06-09Changes to keying nodes:Sergey Sharybin
- Replace FastGaussian blur with GaussianBokeh blur which should give better results. - Changes a bit formula of saturation which in some cases gives better result. Also included (commented out) original formula which was also checked by Brecht and which gave better result in some other cases. - Made clipping white/black temporal dependent, so hopefully it wouldn't destroy gradients on edges.