Age | Commit message (Collapse) | Author | |
---|---|---|---|
2016-03-14 | Fix T47785: Rendering Crash, Node Connector Crash, Changing Editors Crash | Sergey Sharybin | |
Regressions after 2.76, to be backported to 2.77. | |||
2016-02-21 | Fix compositor using edge repeat policy when it shouldn't | Sergey Sharybin | |
Was easy to notice when alpha-overing smaller image with blur on the bigger frame. | |||
2016-02-17 | Fix T47452: Translate-node seams w/ subpixel offset | Campbell Barton | |
2015-08-27 | Fix T45617: Map UV node produces image artifacts | Sergey Sharybin | |
Basically filtering was happening twice, first time by applying weights of EWA filter itself and then by applying subpixel offset while reading pixel values. | |||
2015-03-12 | Cleanup: style | Campbell Barton | |
2015-03-09 | Fix T43908: Mask render bug, one pixel black line | Sergey Sharybin | |
This was a regression caused by attempts to fix T42844 and there were some red-herrings which lead me to the wrong way to fix it. It's some deeper issue than just interpolation offset, it's mainly how the node resolution is being mapped to each other. It could be actually a part of canvas awareness project.. | |||
2015-01-23 | cleanup: style | Campbell Barton | |
2015-01-20 | Fix T42844: Compositor scale offset | Sergey Sharybin | |
Different interpolation methods in compositor could lead to 0.5 pixel offset in final renders. This is because of some inconsistency in integer coordinates which might mean pixel corner or pixel center. Should be all fine now. | |||
2015-01-19 | D627: 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-04-15 | Structural 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. | |||
2013-12-22 | Style Cleanup: remove preprocessor indentation (updated wiki style guide too) | Campbell Barton | |
2013-12-04 | Fix for EWA (elliptical weighted average) sampling in the compositor. | Lukas Tönne | |
EWA sampling is designed for downsampling images, i.e. scaling down the size of input image pixels, which happens regularly in compositing. While the standard sampling methods (linear, cubic) work reasonably well for linear transformations, they don't yield good results in non-linear cases like perspective projection or arbitrary displacement. EWA sampling is comparable to mipmapping, but avoids problems with discontinuities. To work correctly the EWA algorithm needs partial derivatives of the mapping functions which convert output pixel coordinates back into the input image space (2x2 Jacobian matrix). With these derivatives the EWA algorithm projects ellipses into the input space and accumulates colors over their area. This calculation was not done correctly in the compositor, only the derivatives du/dx and dv/dy were calculation, basically this means it only worked for non-rotated input images. The patch introduces full derivative calculations du/dx, du/dy, dv/dx, dv/dy for the 3 nodes which use EWA sampling currently: PlaneTrackWarp, MapUV and Displace. In addition the calculation of ellipsis area and axis-aligned bounding boxes has been fixed. For the MapUV and Displace nodes the derivatives have to be estimated by evaluating the UV/displacement inputs with 1-pixel offsets, which can still have problems on discontinuities and sub-pixel variations. These potential problems can only be alleviated by more radical design changes in the compositor functions, which are out of scope for now. Basically the values passed to the UV/Displacement inputs would need to be associated with their 1st order derivatives, which requires a general approach to derivatives in all nodes. | |||
2013-09-05 | code cleanup: | Campbell Barton | |
- add missing headers from cmake (own omission) - quiet rna_test.c unused define warnings. - minor style edits - spelling corrections and ignore all uppercase words with spell checking script. | |||
2013-09-05 | Removed unused variables used only in BLI_assert, this triggers compiler ↵ | Lukas Toenne | |
warning in release builds. | |||
2013-09-05 | Extend mode option for MemoryBuffer reading in compositor. This will allow ↵ | Lukas Toenne | |
proper interpolation of pixel values when using wrapping in the Translate node. Implemented in inline functions, so won't cause overhead if constant values are passed (as happens with most calls using the default argument). | |||
2012-08-16 | compositor - EWA filter was blurring too much by default, this caused the ↵ | Campbell Barton | |
displace node to blur the image when no displacement was applied, making images fuzzy, the original C code has an interpolation option. Added this option back and use for displace and UV composite nodes. | |||
2012-08-10 | use define for bokeh blur size, also define size of determineResolution args. | Campbell Barton | |
2012-08-10 | add asserts in MemoryBuffer.readNoCheck() so it raises an error when used ↵ | Campbell Barton | |
incorrectly in debug mode. | |||
2012-08-03 | fix for bokeh blur using uninitialized memory - it would cause some tiles ↵ | Campbell Barton | |
not to be blurred. was in fact a bug in MemoryBuffer::getMaximumValue | |||
2012-07-25 | Defocus node. | Jeroen Bakker | |
added some maxblur optimizations. Per tile the max blur is calcualted, will save some unneeded CPU/GPU loops GPU: 1:09 => 0:21 CPU: 1:50 => 0:35 | |||
2012-07-22 | style cleanup | Campbell Barton | |
2012-07-17 | code cleanup: spelling | Campbell Barton | |
2012-07-12 | Compositor: | Jeroen Bakker | |
re-optimized the Defocus node. * localized MemoryBuffers * removed read(x,y) calls * shuffled some lines in the execute pixel * added a readNoCheck function to the memorybuffer (only use this when you are certain you are reading a pixel inside the memorybuffer. | |||
2012-07-10 | Fix compilation error when using MSVC | Sergey Sharybin | |
2012-07-10 | Inline the read Memory Buffer functions for speed optimizations. | Jeroen Bakker | |
2012-06-26 | rename remaining class members with m_ prefix. | Campbell Barton | |
2012-06-25 | optionally use guarded alloc for tiles compositor, also replace allocation ↵ | Campbell Barton | |
functions with a macro. | |||
2012-06-14 | Fixed glares | Jeroen Bakker | |
2012-06-14 | stule cleanup: node headers | Campbell Barton | |
2012-06-03 | minor optimizations to compositor, avoid indirections when operating array ↵ | Campbell Barton | |
members multiple times | |||
2012-05-18 | style cleanup: compositor, pointer syntax, function brace placement, line length | Campbell Barton | |
2012-05-17 | ____ | Jeroen Bakker | |
`````|````` | | | ..'''' | | | |______ .'' | | | | ..' | | |_______ |___________ ....'' merge to TRUNK! * The old compositor is still available (Debug Menu: 200) This commit was brought to you by: Developers: * Monique Dewanchand * Jeroen Bakker * Dalai Felinto * Lukas Tönne Review: * Brecht van Lommel Testers: * Nate Wiebe * Wolfgang Faehnle * Carlo Andreacchio * Daniel Salazar * Artur Mag * Christian Krupa * Francesco Siddi * Dan McGrath * Bassam Kurdali But mostly by the community: Gold: Joshua Faulkner Michael Tiemann Francesco Paglia Blender Guru Blender Developers Fund Silver: Pablo Vazquez Joel Heethaar Amrein Olivier Ilias Karasavvidis Thomas Kumlehn Sebastian Koenig Hannu Hoffrén Benjamin Dansie Fred M'ule Michel Vilain Bradley Cathey Gianmichele Mariani Gottfried Hofmann Bjørnar Frøyse Valentijn Bruning Paul Holmes Clemens Rudolph Juris Graphix David Strebel Ronan Zeegers François Tarlier Felipe Andres Esquivel Reed Olaf Beckman Jesus Alberto Olmos Linares Kajimba Maria Figueiredo Alexandr Galperin Francesco Siddi Julio Iglesias Lopez Kjartan Tysdal Thomas Torfs Film Works Teruyuki Nakamura Roger Luethi Benoit Bolsee Stefan Abrahamsen Andreas Mattijat Xavier Bouchoux Blender 3D Graphics and Animation Henk Vostermans Daniel Blanco Delgado BlenderDay/2011 Bradley Cathey Matthieu Dupont de Dinechin Gianmichele Mariani Jérôme Scaillet Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó, Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli, Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein, Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio, Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel, Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey, Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter, Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini, Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch, Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson, Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song, Dylan Urquidi ) |