Commit Graph

310 Commits

Author SHA1 Message Date
Sergey Sharybin
18326d852b Merging r50625 through r51896 from trunk into soc-2011-tomato
Merging just in case we'll want to develop some experimental stuff
2012-11-05 19:42:27 +00:00
Sergey Sharybin
beba8014e4 Merging r50602 through r50617 form trunk into soc-2011-tomato 2012-09-15 06:24:48 +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
0b778a9026 Merging r50423 through r50449 from trunk into soc-2011-tomato 2012-09-06 09:44:32 +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
c294ae035f Merging r50192 through r50223 from trunk into soc-2011-tomato 2012-08-26 14:12:09 +00:00
Campbell Barton
ee96cde864 style cleanup: whitespace 2012-08-26 11:35:43 +00:00
Campbell Barton
77610e1550 svn merge ^/trunk/blender -r49573:49601 2012-08-06 09:33:43 +00:00
Campbell Barton
dfdfa06c27 code cleanup: minor edit - replace memset() with zero initialization, remove unneeded NULL check in ibuf_sample() 2012-08-05 15:04:10 +00:00
Sergey Sharybin
cae3dbd141 Merging r49534 through r49573 from trunk into soc-2011-tomato 2012-08-05 12:54:39 +00:00
Campbell Barton
3d20474414 style cleanup 2012-08-04 19:34:38 +00:00
Campbell Barton
43fede9519 svn merge ^/trunk/blender -r48986:48991 2012-07-17 09:58:20 +00:00
Campbell Barton
32cf7fcdb1 code cleanup: spelling 2012-07-16 23:23:33 +00:00
Brecht Van Lommel
7c8f82a174 Cycles: regular rendering now works tiled, and supports save buffers to
save memory during render and cache render results.


Implementation notes:

In the render engine API it's now possible to get the render result for
one render layer only, and retrieve the expected tile size in case save
buffers is used. This is needed because EXR expects tiles with particular
size and coordinates.

The EXR temporary files are now also separated per layer, since Cycles
can't give the full render result for all render layers, and EXR doesn't
support writing parts of tiles.

In Cycles internally the handling of render buffers and multi GPU
rendering in particular changed quite a bit, and could use a bit more
refactoring to make things more consistent and simple.
2012-06-28 10:34:38 +00:00
Campbell Barton
d5032657ed style cleanup 2012-06-06 22:38:39 +00:00
Campbell Barton
2ab62ce126 code cleanup: defines with braces - end with '(void)0' so callers must end with ';' like normal function.
... without this some editors dont parse the source so well.
2012-05-27 12:21:13 +00:00
Campbell Barton
54b64cfd61 code cleanup: use const float and define array size 2012-05-26 22:21:56 +00:00
Campbell Barton
de6af75d4d code cleanup: use array size and const for vector args 2012-05-26 16:04:31 +00:00
Campbell Barton
c1570d9f49 code cleanup: missed some min/max use of float[3], also found case of DO_MIN/MAX re-reading same value from array 4 times when it can do once (use minf rather then MIN2, same for maxf) 2012-05-12 22:34:20 +00:00
Campbell Barton
385e5eb92e code cleanup: color/bw conversion - use BLI color function.
change modifier to use the average of the RGB since perceptual conversion isn't really needed for modifiers.
2012-05-09 10:48:24 +00:00
Brecht Van Lommel
c01aa64247 Fix: issue in strand render + instancing bugfix, also optimized it a bit to avoid
unnecessary memory allocations.
2012-05-04 09:58:35 +00:00
Brecht Van Lommel
d0017e1813 Fix strand render + instancing render bug, gave tile artifacts. 2012-05-03 20:06:25 +00:00
Campbell Barton
112162e09e code cleanup: header cleanup 2012-04-30 14:24:11 +00:00
Campbell Barton
e701f9b670 style cleanup: whitespace / commas 2012-04-29 15:47:02 +00:00
Campbell Barton
c21c58f44c style cleanup, also remove unused externs. 2012-03-11 19:09:01 +00:00
Campbell Barton
89a963fb7f style cleanup: comment blocks 2012-03-09 18:28:30 +00:00
Campbell Barton
4f7bdc59d3 style cleanup: spelling.
also remove large, duplicate comments from sunsky.h
2012-03-09 00:41:09 +00:00
Campbell Barton
400a0297b0 - simplify rip code not to expand/contract selection.
- disable BVH edge visibility test (ifdef'd out. dont think its really needed)
2012-03-07 00:08:00 +00:00
Campbell Barton
7bbf4b7831 style cleanup
- spelling - turns out we had tessellation spelt wrong all over.
- use \directive for doxy (not @directive)
- remove BLI_sparsemap.h - was from bmesh merge IIRC but entire file commented and not used.
2012-03-02 16:05:54 +00:00
Campbell Barton
ea13ec1699 Spelling Cleanup 2012-03-01 12:20:18 +00:00
Campbell Barton
7cc206ddca Code Cleanup: remove non existing function declarations.
added some missing functions too - which are not used yep but should be there for api completeness.
* CDDM_set_mloop
* CDDM_set_mpoly
* BLI_mempool_count
2012-02-29 15:00:37 +00:00
Campbell Barton
2b7ca2304a unify include guard defines, __$FILENAME__
without the underscores these clogged up the namespace for autocompleation which was annoying.
2012-02-17 18:59:41 +00:00
Sergey Sharybin
51bada696f Longer names support for all ID and other object names
This commit extends limit of ID and objects to 64 (it means 63 meaning
characters and 1 for zero-terminator). CustomData layers names are also
extended.
Changed DNA structures and all places where length constants were hardcoded.

All names which are "generating" from ID block should be limited by MAX_ID_NAME-2,
all non-id names now has got own define called MAX_NAME which should be used all
over for non-id names to make further name migration stuff easier.

All name fields in DNA now have comment with constant which corresponds to
hardcoded numeric value which should make it easier to further update this
limits or even switch to non-hardcoded values in DNA.

Special thanks to Campbell who helped figuring out some issues and helped a lot
in finding all cases where hardcoded valued were still used in code.

Both of forwards and backwards compatibility is stored with blender versions newer
than January 5, 2011. Older versions had issue with placing null-terminator to
DNA strings on file load which will lead to some unpredictable behavior or even
crashes.
2012-01-11 08:51:06 +00:00
Brecht Van Lommel
de4befb075 Code refactoring: split render result related functions into separate file. 2012-01-05 17:50:09 +00:00
Brecht Van Lommel
8c01369935 Fix #29028: dupli objects missing speed vectors. Check for avoiding creation of
speed vectors was checking object instead of object instance layer, which is the
one that is actually used for render layer checks.
2011-11-29 15:46:33 +00:00
Brecht Van Lommel
539c94a051 Camera: some code refactoring, use an intermediate CameraParams struct instead
of long list of variables everywhere. Intention is to also let 3d view use this
eventually, instead of duplicating code.
2011-11-18 15:52:00 +00:00
Lukas Toenne
11c83d8432 Ocean Sim modifier patch
by Matt Ebb, Hamed Zaghaghi

This adds a new Modifier "Ocean" to simulate large-scale wave motion.
Details can be found in the wiki documentation [1], the project homepage [2] and the patch tracker [3]

The modifier is disabled by default for now. To enable it, the WITH_OCEANSIM (cmake) / WITH_BF_OCEANSIM (scons) flags have to be set. The code depends on fftw3, so this also has to be enabled.

[1]
http://wiki.blender.org/index.php/Doc:2.6/Manual/Modifiers/Simulation/Ocean

[2]
http://www.savetheoceansim.com

[3]
http://projects.blender.org/tracker/?group_id=9&atid=127&func=detail&aid=28338
2011-11-13 12:17:27 +00:00
Miika Hamalainen
edec46b0a6 Merge with trunk r41625 2011-11-07 16:36:49 +00:00
Campbell Barton
96d73bfdcf replace VECCOPY with copy_v3_v3, same for 2d copy, also added vec copy functions for int & char. 2011-11-07 01:38:32 +00:00
Campbell Barton
85540d5aa7 more macro --> BLI math lib, mainly replace VECCOPY in render and blenkernel. 2011-11-06 16:38:21 +00:00
Miika Hamalainen
2ed6f077b3 Merge with trunk r41545 2011-11-05 08:04:49 +00:00
Campbell Barton
62f2218554 macro formatting & remve some unused code. 2011-11-05 05:44:52 +00:00
Sergey Sharybin
4ea816837d Configurable sensor size:
- Added support of variable size sensor width and height.
- Added presets for most common cameras, also new presets can be defined by user.
- Added option to control which dimension (vertical or horizontal) of sensor
  size defines FOV. Old behavior of automatic FOV calculation is also kept.
- Renderer, viewport, game engine and collada importer/exporter should
  deal fine with this changes. Other exporters would be updated soon.
2011-11-04 14:36:06 +00:00
Brecht Van Lommel
79a389ee37 RenderEngine: add .is_animation and .is_preview properties to detect if it's
an animation or preview render that is being done.
2011-11-02 13:36:28 +00:00
Miika Hamalainen
0a37e6ab97 Dynamic Paint:
* Redesigned alpha blending and paint drying algorithms. Now it gives much better results when using low brush alpha or when surface has initial color set.
* Fix: "Slow" dissolve/dry was scaled incorrect when using substeps. Also adjusted time to better match non-"slow" setting.
* Fixed possible issues when using image textured brush.
* Fix: particle brush panel was no longer visible since last commit.
* Adjusted default surface values.
* Some more code cleanup.
2011-10-31 13:01:06 +00:00
Miika Hamalainen
46ae692710 Merge with trunk r41342 2011-10-28 17:00:53 +00:00
Campbell Barton
4a04f72069 remove $Id: tags after discussion on the mailign list: http://markmail.org/message/fp7ozcywxum3ar7n 2011-10-23 17:52:20 +00:00
Miika Hamalainen
d4541fd891 Merge with trunk r41197 2011-10-22 16:43:23 +00:00
Brecht Van Lommel
1bdf652b89 Code refactoring: move external engine functions into own file. 2011-10-22 16:24:28 +00:00
Miika Hamalainen
30cba27987 Dynamic Paint:
* Some changes and cleanup pointed on the codereview.
2011-10-22 16:16:14 +00:00