Commit Graph

972 Commits

Author SHA1 Message Date
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
b85056cbf4 fix for error in own recent commit adding node undo pushes. (bad use of sizeof) 2012-09-15 07:30:11 +00:00
Campbell Barton
e75f5c8208 quiet -Wmissing-prototypes warnings, and enable this warning by default for C with gcc.
helps for finding unused functions and making functions static, also did some minor code cleanup.
2012-09-15 01:52:28 +00:00
Campbell Barton
7a71f58af3 fixes for NULL checks, remove some redundant checks and add some in that have been removed by accident as code has been updated. 2012-09-14 06:17:14 +00:00
Campbell Barton
f6c7a69565 code cleanup: correct misleading use of LABEL button type. 2012-09-14 05:44:47 +00:00
Campbell Barton
db1191d451 fix [#31019] [Minor] Freshly added nodes aren't getting undo push
also noticed ED_undo_push was checking USER_GLOBALUNDO unnecessarily
2012-09-12 11:09:27 +00:00
Campbell Barton
319831d7b8 code cleanup: use an enum for uiBut->pointype (more useful debug display of members),
and rename COL -> COLOR --- less confusing since the layout engine has row/col's.
2012-09-11 23:10:23 +00:00
Campbell Barton
aa2d84da37 style cleanup:
also remove some redundant conversions int -> short -> int
2012-09-09 00:00:21 +00:00
Campbell Barton
1a7eb3454e style cleanup 2012-09-08 08:59:47 +00:00
Campbell Barton
a9f10b6bc2 style cleanup 2012-09-08 06:40:03 +00:00
Campbell Barton
306e2b4878 stule cleanup 2012-09-04 18:47:08 +00:00
Brecht Van Lommel
adea12cb01 Cycles: merge of changes from tomato branch.
Regular rendering now works tiled, and supports save buffers to save memory
during render and cache render results.

Brick texture node by Thomas.
http://wiki.blender.org/index.php/Doc:2.6/Manual/Render/Cycles/Nodes/Textures#Brick_Texture

Image texture Blended Box Mapping.
http://wiki.blender.org/index.php/Doc:2.6/Manual/Render/Cycles/Nodes/Textures#Image_Texture
http://mango.blender.org/production/blended_box/

Various bug fixes by Sergey and Campbell.
* Fix for reading freed memory in some node setups.
* Fix incorrect memory read when synchronizing mesh motion.
* Fix crash appearing when direct light usage is different on different layers.
* Fix for vector pass gives wrong result in some circumstances.
* Fix for wrong resolution used for rendering Render Layer node.
* Option to cancel rendering when doing initial synchronization.
* No more texture limit when using CPU render.
* Many fixes for new tiled rendering.
2012-09-04 13:29:07 +00:00
Campbell Barton
56b28635e7 code cleanup: rename BLI_in_rctf() --> BLI_rctf_isect_pt(), to conform with our naming convention. 2012-08-23 18:25:45 +00:00
Campbell Barton
1ab5a4f0ed despeckle composite node 2012-08-23 06:48:01 +00:00
Campbell Barton
1939baa47d style cleanup 2012-08-22 16:44:32 +00:00
Campbell Barton
267f625179 lasso select works in the node editor again, Ctrl+Alt+LMB, Ctrl+Alt+Shif+LMB to deselect 2012-08-22 13:34:06 +00:00
Campbell Barton
2b9fd376e1 all areas of blender now do node tree id user count management, except for some exceptions like making a node tree local and material clipboard. 2012-08-22 09:35:46 +00:00
Campbell Barton
ffcc63a7d0 node tree functions for copy/free now support optional ID user count management,
this is not used yet, so no functional changes.
2012-08-22 08:54:18 +00:00
Campbell Barton
c92ab5c3ef code cleanup: use rect size macros 2012-08-21 20:34:05 +00:00
Campbell Barton
77f47799dd code cleanup: use BLI_RCT_SIZE macro 2012-08-20 23:06:17 +00:00
Campbell Barton
26f073b327 macros for rectangle center and size 2012-08-20 15:29:02 +00:00
Campbell Barton
6c74d1147e minor cleanup to node pasting. 2012-08-20 13:59:19 +00:00
Campbell Barton
0f6a6c7499 fix for crash pasting nodes into a node tree when the ID pointer is lost.
also fix for ID user count on paste which wasn't increasing.
2012-08-20 13:51:25 +00:00
Campbell Barton
63f143a3cc use rctf struct for UI buttons and blocks, easier to read and means we can use BLI_rctf functions. 2012-08-18 16:53:46 +00:00
Campbell Barton
2845816863 HDR color picking was not working for node space 2012-08-17 13:00:11 +00:00
Campbell Barton
1465b06fad code cleanup:
- pass wire color to camera draw_viewport_object_reconstruction() rather then getting the theme color directly.
  this makes a change where selection color wont be used for unselected cameras (which IMHO is better, drawing selected wire color on nonselected cameras was confusing).
- use rgb_uchar_to_float()
2012-08-17 12:32:13 +00:00
Campbell Barton
81dd80f1d3 support fro HDR color picking (values over 1.0) when color picking in the image editor or node space. 2012-08-16 14:47:14 +00:00
Campbell Barton
60915c9099 escape key now quits composite. 2012-08-15 11:31:04 +00:00
Campbell Barton
15bd03f958 fix for missing change to fluidsim from last commit and name jobs a more useful name - 'wm_job'. 2012-08-15 10:03:29 +00:00
Campbell Barton
97859e8709 add wm job types they are not used yet, so this just defines them for new jobs add add argument to search by job type. 2012-08-15 09:42:06 +00:00
Campbell Barton
9591142294 add variable size option to bokeh blur node, remove f_stop option (it wasnt used), and add blur_max to the interface. 2012-08-14 14:31:39 +00:00
Campbell Barton
59fedc6b7c rename blur Reference to Variable Size, improve tooltip 2012-08-14 12:39:12 +00:00
Campbell Barton
c140ccb9fd 2d smoothview now scales back the time to move for smaller view zoom/panning.
also the compositor bounds (used for scroll bars), were only calculated when pressing the home key in 2.63, how this is updated on draw
2012-08-12 19:35:47 +00:00
Campbell Barton
9cce2d8645 smooth-view for 2d views, graph editor, sequencer, node view, works with border zoom, view selected, view all. 2012-08-12 01:07:31 +00:00
Campbell Barton
b96c622015 style cleanup 2012-08-11 22:12:32 +00:00
Campbell Barton
c567cf3fab code cleanup: WM naming conventions 2012-08-11 21:35:24 +00:00
Campbell Barton
5e0f254afa utility functions for getting/setting rectangles for operators. 2012-08-08 20:38:55 +00:00
Campbell Barton
f0951f58ca code cleanup: rename G.afbreek --> is_break, G.rendering --> is_rendering 2012-08-08 18:37:06 +00:00
Campbell Barton
0b5a995cfd code cleanup: rename G.rt to G.debug_value 2012-08-08 18:21:54 +00:00
Lukas Toenne
543cee14ca Renamed the mx/my coordinates in SpaceNode to more descriptive 'cursor'. This follows the naming in the View3D space, since this vector is used for essentially the same purpose (adding nodes at a specific location), although not used for any transform origin and not displayed in the editor.
Note: While renaming DNA properties is usually dangerous and can break files, in this case it is possible because the mx/my values are only used at runtime.
2012-08-08 17:37:02 +00:00
Lukas Toenne
bd3ec60651 Search option for adding nodes.
The 'Add' menu in the node editor now has an option 'Search' at the top, which opens a separate popup for searching node types by name.

The operator for this is implemented completely in Python (this could also be done for the regular menu-based Add options in the future). There are a few necessary extensions to the RNA as well:

* The View2D struct in regions is now exposed. Currently only contains converter functions for coordinates from the region to the view (i.e. scrolled and zoomed view space). Used for converting mouse location to node space.

* The SpaceNode exposes the existing 'cursor_location' for operators to store mouse position beyond invoke calls. Not used for anything else (transforms) so far.

* The edit_tree in SpaceNode is also exposed, this is needed for operators to work correctly inside node groups.
2012-08-08 16:44:16 +00:00
Campbell Barton
098cbdac62 fix for minor regression in own recent edits: sample line was drawing in newly created curve nodes (Hue correct). 2012-08-08 08:41:10 +00:00
Campbell Barton
4005b88b30 minor edits to node view
- when single (non frame) node selected, dont zoom in, just pan.
- only reset the background when pressing home key
2012-08-07 18:45:24 +00:00
Campbell Barton
06791ba281 select linked
- dupligroup now only selects objects with dupligroup enabled.
- selected onjects are skipped, this way and undo push wont happen if no new objects are selected.

also minor edits to node view all/selected
2012-08-07 17:20:21 +00:00
Campbell Barton
258b4a8dad add view selected for node view 2012-08-07 16:30:34 +00:00
Lukas Toenne
cfe7bab080 Fix for drawing arrows on node lines between two reroute nodes. This was a typo in r48762 which inverted the arrow scale. 2012-08-06 20:48:08 +00:00
Campbell Barton
2b8ac9bc61 inpaint node from tomato branch by Peter Schlaile
http://en.wikipedia.org/wiki/Inpainting
2012-08-06 13:45:11 +00:00
Lukas Toenne
54b61401ed Fix #32271, Node group/parent crash. The grouping operators need to also look at the non-selected nodes in the edit tree to find nodes whose parent is to be moved but the child is not, and then detach those. 2012-08-06 11:23:09 +00:00
Campbell Barton
2988c81d6b fix [#32272] crash while rendering and modifying the node setup. 2012-08-06 10:13:49 +00:00
Campbell Barton
df81b50bf2 prevent copy/paste from incompatible types (compo -> material for eg) - would crash instantly. 2012-08-06 08:41:45 +00:00