Commit Graph

2578 Commits

Author SHA1 Message Date
Sergey Sharybin
58da4a1760 Merging r50576 through r50587 from trunk into soc-2011-tomato 2012-09-14 14:05:05 +00:00
Sergey Sharybin
de7a57a242 Merging r50522 through r50572 from trunk into soc-2011-tomato 2012-09-13 11:13:13 +00:00
Sergey Sharybin
777a49dfef Merging r50502 through r50521 from trunk into soc-2011-tomato 2012-09-11 09:13:57 +00:00
Sergey Sharybin
96d20fe437 Color Management: added check for invertibility of color spaces
So now non-invertible color spaces can not be used as input color space
for images and as working color space for sequencer.

Currently have got two hard-coded families which are rrt and display.
If color space belong to one of this families, it would be considered
as non-invertible.

Data color spaces are always considered invertible.

If color space has got to_reference transformation, it'll be considered
invertible.
2012-09-11 07:56:47 +00:00
Sergey Sharybin
b0605eed2c Color Management: finish pipeline changes
This commit hopefully finishes color management pipeline changes, implements
some missed functionality and fixes some bugs.

Mainly changes are related on getting rid of old Color Management flag which
became counter-intuitive in conjunction with OpenColorIO.

Now color management is always assuming to be enabled and non-color managed
pipeline is emulated using display device called None. This display has got
single view which is basically NO-OP (raw) transformation, not applying any
tone curve and displays colors AS-IS. In most cases it behaves the same as
disabling Color Management in shading panel, but there is at least one known
difference in behavior: compositor and sequence editors would output images
in linear space, not in sRGB as it used to be before.

It'll be quite tricky to make this behave in exactly the same way as it
used to, and not sure if we really need to do it.

3D viewport is supposed to be working in sRGB space, no tonemaps would be
applied there. This is another case where compatibility breaks in comparison
with old color management pipeline, but supporting display transformation
would be tricky since it'll also be needed to make GLSL shaders, textures
and so be aware of display transform.

Interface is now aware of display transformation, but it only uses default
display view, no exposure, gamma or curve mapping is supported there.
This is so color widgets could apply display transformation in both
directions. Such behavior is a bit counter-intuitive, but it's currently
the only way to make color picking working smoothly. In theory we'll need
to support color picking color space, but it'll be also a bit tricky since
in Blender display transform is configurable from the interface and could
be used for artistics needs and in such design it's not possible to figure
out invertable color space which could be used for color picking.

In other software it's not so big issue since all color spaces, display
transform and so are strictly defined by pipeline and in this case it is
possible to define color picking space which would be close enough to
display space.

Sequencer's color space now could be configured from the interface --
it's settings are situated in Scene buttons, Color Management panel.
Default space is sRGB. It was made configurable because we used vd16
color space during Mango which was close to Film view used by grading
department.

Sequencer will convert float buffers to this color space before operating
with them hopefully giving better results. Byte buffers wouldn't be
converted to this color space an they'll be handled in their own colors[ace.
Converting them to sequencer's working space would lead to precision loss
without much visible benefits. It shouldn't be an issue since float and
byte images would never be blended together -- byte image would be converted
to float first if it's needed to be blended with float image.

Byte buffers now allowed to be color managed. This was needed to make code
in such areas as baking and rendering don't have hardcoded linear to sRGB
conversions, making things more clear from code point of view.

Input color space is now assigning on image/movie clip load and default
roles are used for this. So for float images default space would be rec709
and for byte images default space would be sRGB.

Added Non-Color color space which is aimed to be used for such things as
normal/heights maps. It's currently the same as raw colorspace, just has
got more clear naming for users. Probably we'll also need to make it not
affected by display transformation.

Think this is all main pipeline-related changes, more details would be there:

http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.64/Color_Management

Other changes and fixes:

- Lots of internal code clean up in color management module.

- Made OpenColorIO module using guarded memory allocation. This allowed to
  fix couple of memory leaks and would help preventing leaks in the future.

- Made sure color unpremultiply and dither are supported by all OpenColorIO
  defined color transformations.

- Made compositor's preview images be aware of display transformation.
  Legacy compositor still uses old Color Management flags, but likely we'll
  disable compositor for the release and remove legacy code soon, so don't
  think we'll need to spend time on porting that code to new color management
  system.

- Made OpenGL rendering be aware of display transform when saving render
  result. Now it behaves in the same way as regular rendering.

TODO:

- HSV widgets are using linear rgb/sRGB conversions for single channel,
  not sure how this should be ported to new color pipeline.

- Image stamp would use hardcoded linear rgb to sRGB conversion for
  filling rectangles. Probably it should use default display view
  for this instead, would check this with Brecht.

- Get rid of None color space which was only used for compatibility reasons.

- Made it more clear which color spaces could be used as input space.

- There're also some remained TODO's in the code marked as OCIO_TODO,
  but wouldn't consider them as stoppers for at least this commit.
2012-09-10 11:46:15 +00:00
Sergey Sharybin
832841d50f Merging r50484 through r50501 from trunk into soc-2011-tomato 2012-09-10 10:58:59 +00:00
Sergey Sharybin
37a70492d1 Merging r50470 through r50477 from trunk into soc-2011-tomato 2012-09-08 10:17:42 +00:00
Sergey Sharybin
62076905a3 Merging r50457 through r50469 from trunk into soc-2011-tomato 2012-09-07 12:53:41 +00:00
Sergey Sharybin
0325c72799 Merging r50455 through r50456 from trunk into soc-2011-tomato 2012-09-06 16:44:27 +00:00
Sergey Sharybin
0b778a9026 Merging r50423 through r50449 from trunk into soc-2011-tomato 2012-09-06 09:44:32 +00:00
Sergey Sharybin
16a126622e Merging r50413 through r50422 from trunk into soc-2011-tomato 2012-09-05 14:19:40 +00:00
Sergey Sharybin
196028a99f Color Management: made OpenColorIO transformations aware of color unpremultiply
Mainly behaves in the same way as legacy color transformation, but it'll
give different result on over and under exposured areas.

Not sure if it's indeed issue -- seems this behaves crappy in both of
current stable release and OCIO branch.
2012-09-05 13:58:01 +00:00
Sergey Sharybin
3963425006 Merging r50374 through r50412 from trunk into soc-2011-tomato 2012-09-05 11:42:20 +00:00
Sergey Sharybin
e15f352831 Merging r50265 through r50373 from trunk into soc-2011-tomato 2012-09-04 09:06:37 +00:00
Sergey Sharybin
d6a617ff06 Merging r50248 through r50264 from trunk into soc-2011-tomato 2012-08-29 12:49:10 +00:00
Jens Verwiebe
8321acaf43 missing linebreak when multithreaded gl meesage is printed to log 2012-08-28 13:43:20 +00:00
Thomas Dinges
614a82cb8c Tomato Cycles:
* Added a Brick Texture Node to Cycles.
* Based on the Blender Internal Brick Texture with some modifications. 
* Tested on CPU and GPU (CUDA & OpenCL)

Documentation: http://wiki.blender.org/index.php/User:DingTo/CyclesBrickTexture

ToDo: Only works correct on flat surfaces, like a Plane. If you attach the shader to 3D objects like a cube, the mapping is not correct on the Y/Z vector. 

Thanks to Lukas Toenne for fixing a issue I had with the Node code! :)
2012-08-25 16:52:55 +00:00
Sergey Sharybin
dd65a6b67d Color Management: pipeline cleanup
- Move color management settings to scene, so it's now clear for
  all areas (such as compositor, sequencer) which settings to
  use for display buffers

- Currently removed per-editor color management settings. It could
  be nice to have them, but they don't fit nicely into overall
  pipeline and could be added as a override settings for display
  only later.

- Make sequencer working in space defined by sequencer_workspace
  role in OCIO configuration file.
  If this role is not set, sequencer will fallback to legacy sRGB
  Gamma 2.2 space.

  Currently use vd16 color space for sequencer. Not sure what exactly
  this color space is, but it's pretty close to SPI Film view and
  it's still invertable.

- Sequencer will now output linear float buffers, not color managed
  float buffers.
  Before this sequencer used to output float buffers in sRGB space,
  which was sequencer's working space. Now it can not output buffers
  in this space since other areas are not aware of this space.
  This also makes it's consistent that all float buffers in Blender
  are in linear space.

- When saving render result into byte file format scene's display
  transform would be applied on this buffer.
  When saving files from image editor, there'll be a display
  transform settings which are default set to scene's settings but
  could also be overwritten.

Additional details are there (would be extended soon):

  http://wiki.blender.org/index.php/User:Nazg-gul/ColorManagement
2012-08-22 14:23:08 +00:00
Campbell Barton
c984a8fa56 svn merge ^/trunk/blender -r50107:50112 2012-08-22 12:04:27 +00:00
Campbell Barton
92a1572102 fix for rare crash in cycles BVH tree packing. 2012-08-22 11:18:37 +00:00
Sergey Sharybin
bd2cb7ae50 Merging r50049 through r50076 from trunk into soc-2011-tomato 2012-08-21 10:44:04 +00:00
Campbell Barton
9a776daca8 code cleanup: vfont's used confusing and over complicated method of storing memory for loaded fonts, not store as a temp var in the fonts. 2012-08-21 10:39:02 +00:00
Brecht Van Lommel
66f694fca3 Fix cycles issue with non-progressive integrator and AO, setting AO samples > 1
did not give properly normalized values.
2012-08-21 09:01:50 +00:00
Thomas Dinges
e410049a6a Cycles / Cmake:
* Removed last instance of "BLENDER_PLUGIN" define, removed in r39465 in the cycles branch.
2012-08-20 19:40:49 +00:00
Sergey Sharybin
21e403e546 Merging r49953 through r50015 into from trunk into soc-2011-tomato 2012-08-19 13:57:55 +00:00
Sergey Sharybin
c37a863ff4 Tomato Cycles: fix for reading freed memory
Incorrect read was happening after nodes which are not affect on output
were removed from the graph. Other nodes could have been connected to
this nodes which lead to accessing freed memory in some other places.

Solved by removing links from unused nodes before removing them from
the graph.
2012-08-19 12:07:28 +00:00
Sergey Sharybin
900d7d9e35 Tomato Cycles: fix crash appearing when direct light usage is different on different layers
Seems some variables used for light sampling should be reset when
integrator's use_direct_light flag is setting to false, otherwise
this values could be used from previously rendered layer resulting
in using freed memory of __light_distribution texture.
2012-08-18 15:46:32 +00:00
Campbell Barton
47e313ec0c cmake option to build without iksolver 2012-08-18 13:36:29 +00:00
Campbell Barton
9e742ffc2b style cleanup: also correct some doxy comments 2012-08-18 13:07:48 +00:00
Sergey Sharybin
bcbd8c00c7 Tomato Cycles: fix incorrect memory read when synchronizing mesh motion 2012-08-17 12:58:31 +00:00
Sergey Sharybin
63b5338dbd Fixed incorrect sample counter reported when rendering several render layers 2012-08-16 08:49:43 +00:00
Sergey Sharybin
5c29f5bfcf Tomato Cycles: revert some changes of r49835
Apparently for viewport rendering on GPU tile size of 1024 gives
much better performance than using single tile. Not sure why it
doesn't work for background rendering, need to be investigated
further.

Meanwhile use old debug value of 1024 for tile size.
2012-08-13 14:51:39 +00:00
Thomas Dinges
b37fae8611 Tomato Cycles:
*Typo fix.
2012-08-12 12:47:32 +00:00
Sergey Sharybin
711b97c2ac Tomato Cycles: use actual number of tiles for viewport rendering
Before this debug_tile_size was used as a size of tile, which
became hidden property since tile-based rendering implementation
and couldn't have been controlled.

This resolves the issue with single thread used for viewport
rendering in some cases. Also it makes possible to control tiles
for CUDA viewport rendering, which still behaves much faster when
using the single tile.

Also fixed issue with minimal tile size which was used to calculate
divider of final resolution to be used for initial rendering. Now
it's a Resolution Divider property in Performance tab. This option
could be used to tweak initial resolution of viewport for faster
navigation or faster refresh when changing some properties.
2012-08-12 11:58:34 +00:00
Sergey Sharybin
8aeba8ec8b Merging r49815 through r49833 from trunk into soc-2011-tomato 2012-08-12 10:07:55 +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
Sergey Sharybin
00afee41c8 Merging r49775 through r49807 from trunk into soc-2011-tomato 2012-08-11 14:39:09 +00:00
Campbell Barton
51182bc78d add MEM_recallocN(), so bytes are ensured to be zero'd when growing. 2012-08-11 12:16:09 +00:00
Campbell Barton
bfbea03228 svn merge ^/trunk/blender -r49757:49763 2012-08-10 10:37:31 +00:00
Lukas Toenne
d33a0effba Fix for particle object rendering in Cycles. On object sync the object first has to determine if a particle update is needed (which depends on dupli objects and their meshes), before deciding to skip the actual syncing. 2012-08-10 10:15:45 +00:00
Daniel Genrich
a1dd6ea836 Smoke: High res on even resolution did not write to all cells (downsampling = n-1, upsampling = n).
Thanks goes to MiikaH.
2012-08-10 09:58:58 +00:00
Sergey Sharybin
6129a0f97c Merging r49738 through r49757 from trunk into soc-2011-tomato 2012-08-10 08:54:14 +00:00
Thomas Dinges
e7f12cec35 Cycles Test App:
* Fix for changes in the OpenImageIO API.
2012-08-09 23:00:57 +00:00
Sergey Sharybin
2e30bf28c1 Merging r49711 through r49737 from trunk into soc-2011-tomato 2012-08-09 17:03:33 +00:00
Campbell Barton
f0951f58ca code cleanup: rename G.afbreek --> is_break, G.rendering --> is_rendering 2012-08-08 18:37:06 +00:00
Sergey Sharybin
c905bc3b80 Merging r49667 through r49680 from trunk into soc-2011-tomato 2012-08-08 08:21:58 +00:00
Campbell Barton
3179ee8a86 patch [#32282] Fix segfault on exit in IM shutdown.
from Bill Currie (taniwha)
2012-08-08 07:31:19 +00:00
Thomas Dinges
c8934b44f9 Tomato Cycles:
* Improvement for reporting current sample.
Also show the current amount of rendered samples, when using the CPU, and 1x1 tiles.
2012-08-07 14:02:53 +00:00
Campbell Barton
9ad19c26ca svn merge ^/trunk/blender -r49644:49653 2012-08-07 13:38:35 +00:00