Commit Graph

359 Commits

Author SHA1 Message Date
Campbell Barton
34114b3b75 code cleanup: remove/comment unused defines 2012-09-22 13:40:31 +00:00
Campbell Barton
25c96bc9f3 code cleanup: remove unused macros, commet some which may be useful later - or good to keep for completeness. quieted some warnings and add flags -Wmissing-include-dirs and -Wno-div-by-zero to cmake/gcc 2012-09-20 01:02:39 +00:00
Campbell Barton
d724d0adfe code cleanup: quiet warnings for gcc's -Wundef, -Wmissing-declarations 2012-09-16 00:26:36 +00:00
Campbell Barton
232571c61a code cleanup: replace macro for BLI_rect size/center with inline functions. 2012-09-15 11:48:20 +00:00
Sergey Sharybin
a73dd3476e Color Management, Stage 2: Switch color pipeline to use OpenColorIO
Replace old color pipeline which was supporting linear/sRGB color spaces
only with OpenColorIO-based pipeline.

This introduces two configurable color spaces:

- Input color space for images and movie clips. This space is used to convert
  images/movies from color space in which file is saved to Blender's linear
  space (for float images, byte images are not internally converted, only input
  space is stored for such images and used later).

  This setting could be found in image/clip data block settings.

- Display color space which defines space in which particular display is working.

  This settings could be found in scene's Color Management panel.

When render result is being displayed on the screen, apart from converting image
to display space, some additional conversions could happen.

This conversions are:

- View, which defines tone curve applying before display transformation.
  These are different ways to view the image on the same display device.
  For example it could be used to emulate film view on sRGB display.

- Exposure affects on image exposure before tone map is applied.

- Gamma is post-display gamma correction, could be used to match particular
  display gamma.

- RGB curves are user-defined curves which are applying before display
  transformation, could be used for different purposes.

All this settings by default are only applying on render result and does not
affect on other images. If some particular image needs to be affected by this
transformation, "View as Render" setting of image data block should be set to
truth. Movie clips are always affected by all display transformations.

This commit also introduces configurable color space in which sequencer is
working. This setting could be found in scene's Color Management panel and
it should be used if such stuff as grading needs to be done in color space
different from sRGB (i.e. when Film view on sRGB display is use, using VD16
space as sequencer's internal space would make grading working in space
which is close to the space using for display).

Some technical notes:

- Image buffer's float buffer is now always in linear space, even if it was
  created from 16bit byte images.

- Space of byte buffer is stored in image buffer's rect_colorspace property.

- Profile of image buffer was removed since it's not longer meaningful.

- OpenGL and GLSL is supposed to always work in sRGB space. It is possible
  to support other spaces, but it's quite large project which isn't so
  much important.

- Legacy Color Management option disabled is emulated by using None display.
  It could have some regressions, but there's no clear way to avoid them.

- If OpenColorIO is disabled on build time, it should make blender behaving
  in the same way as previous release with color management enabled.

More details could be found at this page (more details would be added soon):
http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.64/Color_Management

--
Thanks to Xavier Thomas, Lukas Toene for initial work on OpenColorIO
integration and to Brecht van Lommel for some further development and code/
usecase review!
2012-09-15 10:05:07 +00:00
Campbell Barton
19863a7268 fix for 3 obvious mistakes/bugs. 2012-09-15 06:30:40 +00:00
Campbell Barton
883117077b fix for 2 crashes freeing masks
- freeing a mask from RNA BKE_libblock_free() twice on the mask.
- loading a new blend file would only free the mask and not unlink it from nodes - it would access freed memory.
2012-09-14 01:15:08 +00:00
Jeroen Bakker
773ea9b93d Fix for [#32536] Mixing with translated images in compositor produces
garbage strips for each tile

Promoted the behaviour of combine channels to node operation so that all
nodes use the same implementation. (CombineChannel had a better
implementation)
2012-09-11 16:57:05 +00:00
Campbell Barton
47ec91e8d3 code clenup: comments and some style edits on ghost/osx (odd indentation) 2012-09-06 02:10:09 +00:00
Campbell Barton
1d4316f35f fix [#32490] Compsitor crashes on missing OpenEXR multilayer files 2012-09-04 19:42:09 +00:00
Campbell Barton
aaafa0c2fe code cleanup: move file string defines into BLI_path_utils.h, BKE_utildefines is now unused but keep incase we want to add defines there later. 2012-09-03 22:04:14 +00:00
Sergey Sharybin
eff97a82f8 Fix for compositor always cacheing frames when using Movie Clip input node
Issue was caused by getting image from compositor node conversion code,
now it'll check whether rendering happens and if so, frame wouldn't be
stored in the cache.

This possible fixes #32465: Memory leak when rendering
2012-09-03 14:26:53 +00:00
Campbell Barton
a7831c74e6 fix for bug in variable size blur compositor node - using incorrect Y blur operations and uninitialized memory was causing random blur results. 2012-08-24 12:48:56 +00:00
Campbell Barton
65dbeabdc6 style cleanup: indentation, also quiet double promotion warnings for despeckle node. 2012-08-23 16:17:47 +00:00
Campbell Barton
4e772065d7 set defaults for de-speckle 2012-08-23 07:02:11 +00:00
Campbell Barton
1ab5a4f0ed despeckle composite node 2012-08-23 06:48:01 +00:00
Campbell Barton
45a0287f45 change I made gave a little nicer bleeding direction for inpaint but introduced dithering artifact. 2012-08-23 06:27:12 +00:00
Campbell Barton
3090ae35af fix [#32374] Curve compositor UI drawing glitch
copy the curve for the compositor.
2012-08-21 15:14:29 +00:00
Jeroen Bakker
ae9f5239a6 Fix for
* [#32356] Problem with "Ghost" in the "Glare" Node in Compositor
2012-08-21 10:45:01 +00:00
Campbell Barton
988df24551 compositor color curve was MEM_dupallocN'ing the curve for every pixel calculation (when there were black or white inputs on the curve node).
avoid allocation by using local vars for black/white storage & curve calculation.
2012-08-21 08:30:45 +00:00
Campbell Barton
49d3766ceb code cleanup: use math functions for curve compo code. 2012-08-21 08:20:32 +00:00
Campbell Barton
77f47799dd code cleanup: use BLI_RCT_SIZE macro 2012-08-20 23:06:17 +00:00
Campbell Barton
58ab8d5c0a use BLI math length functions for distance compositor operations. 2012-08-19 10:41:16 +00:00
Dalai Felinto
48eb27791b The Distance Node in 2.49/2.5/2.6 pre-tiles has a different calculation for 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-19 03:05:38 +00:00
Jeroen Bakker
6547b1e770 Documentation of the Bokeh image operation :) 2012-08-17 12:53:04 +00:00
Campbell Barton
3bc16fd60d compositor: replace C++ new/delete with guardedalloc. 2012-08-16 12:32:48 +00:00
Campbell Barton
883e9df1cc fix for bug reading past the buffer bounds for the inpaint node. 2012-08-16 12:13:01 +00:00
Campbell Barton
add9aea573 compositor - EWA filter was blurring too much by default, this caused the 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-16 10:13:04 +00:00
Jeroen Bakker
597e6f9bbc Fix for
* [#32323] regression: Dispertion artifacts with smaller chunksizes
 * [#32125] "Projector" Dispersion not working with ChunkSize < 256
2012-08-15 18:14:34 +00:00
Campbell Barton
53333c78ce use vector for color operation internal storage. 2012-08-14 11:17:06 +00:00
Campbell Barton
9fd6c535ca fix [#32324] regression: node group with missing ID crashes new tile node system.
node groups with no ID now output magenta so it doesnt silently fail.
2012-08-14 11:05:26 +00:00
Campbell Barton
7a3b44cf69 style cleanup 2012-08-13 16:03:48 +00:00
Jeroen Bakker
e28fcec042 Fix for [#32220] regression - DistortionCache is never freed.
* at max 10 cache items will be available. Items will be removed by
latest usage.
 * number of cached items can be adjusted in code
 * added deinitialization of compositor when blender exists.
 * updated scons and cmake build files
2012-08-13 10:56:36 +00:00
Campbell Barton
61eacb534e inpaint node now blend inpaint pixels with existing alpha, this makes soft alpha blends inpaint look nicer.
also dont assign 1.0 alpha for parts of the image not inpaint'ed, this way you can maintain some alpha in the image.
2012-08-12 17:31:42 +00:00
Campbell Barton
b2fdb3f50e avoid divide by zero for the inpaint node. 2012-08-12 17:10:56 +00:00
Campbell Barton
b96c622015 style cleanup 2012-08-11 22:12:32 +00:00
Campbell Barton
823083a744 fix for own error with opencl bokeh blur. 2012-08-11 18:47:09 +00:00
Campbell Barton
b84c1dd592 compositor: bokeh blur size input can now be an image, in this case it uses VariableSizeBokehBlurOperation class internally.
updated opencl too.
2012-08-10 15:31:54 +00:00
Campbell Barton
94a3945cf9 code cleanup: compositor - define size for executePixel function output float array 2012-08-10 14:07:24 +00:00
Campbell Barton
e877247789 use define for bokeh blur size, also define size of determineResolution args. 2012-08-10 13:23:31 +00:00
Campbell Barton
3c35f560db minor compositor change: use the max dimension for bokeh blur size, rather then width. 2012-08-10 10:20:28 +00:00
Campbell Barton
7a760b4804 generate COM_OpenCLKernels.cl.h automatically at build time, this allows 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-09 19:59:36 +00:00
Campbell Barton
2f2560eb49 use sensor size when calculating dof rather then hard coded values. 2012-08-09 15:59:32 +00:00
Campbell Barton
5019cd179f add threshold blending to opencl too. 2012-08-08 18:10:13 +00:00
Campbell Barton
a401971cf8 sync changes between opencl and C++ VariableSizeBokehBlurOperation, also remove absf() check on pixel radius, this is ensured to be unsigned. 2012-08-08 18:04:40 +00:00
Campbell Barton
c21bf16c46 dof node; change how threshold is applied, rather then clip out pixels at the threshold, fade instead.
note: need to apply this change to opencl still.
2012-08-08 16:49:12 +00:00
Campbell Barton
2a78c2d304 improvement to the DOF node, after blurring the radius buffer (derived from the depth), overlay with the original so pixels in focus are not mixed with out of focus pixels. 2012-08-08 16:46:12 +00:00
Campbell Barton
a1693168f2 DOF node: clamp blurring the zdepth radius buffer by the blur max. This could doo easily blur very high depths and cause artifacts. 2012-08-08 16:14:56 +00:00
Campbell Barton
4f4a468128 use bilinear rather then bicubic scaling because bicubic blurs too much. 2012-08-07 15:01:48 +00:00
Campbell Barton
8ae89f4942 speedup to inpaint node in my tests was about ~30% for an optimized build.
also replace MIN/MAX2 with inline functions in transform.
2012-08-07 09:20:30 +00:00