Commit Graph

918 Commits

Author SHA1 Message Date
Brecht Van Lommel
cdb8e39565 Fix for own multilayer EXR fix, should not have caused any issues might as well
make sure it works if this function gets called from other places.
2013-02-12 15:58:06 +00:00
Ton Roosendaal
58a6f07649 Bug fix #34213 (2)
Adding non-RGBA float buffers as texture crashes MipMap code.
Images with less than 4 channels not supported (yet). Not sure
if we ever should even... normals, Z, vectors, UV, Index, all
don't like downsampling.
2013-02-12 15:51:05 +00:00
Brecht Van Lommel
5354998a21 Fix #34213: crash loading openexr multilayer with use alpha disabled. 2013-02-12 14:58:58 +00:00
Sergey Sharybin
7fcc1ac48b Implemented delayed partial rect update for image buffers
Used by image painting mode, so every brush step would mark area
if affected on, but actual color space conversion would happen
later when actually displaying image.

Implemented as a rcti stored in ImBuf which is getting merged with
partial rect passed to IMB_partial_display_buffer_update_delayed.

This makes painting as fast as it currently possible and finally
solves #33935: Texture painting slow down with mouse, but not with tablet
2013-02-11 13:24:35 +00:00
Campbell Barton
942ad6d9cd style cleanup 2013-02-10 17:06:05 +00:00
Ton Roosendaal
d1136ba2ef Bug fix #34174
Multilayer files saved from Maya (and I bet others) store the 'primary' layer without
layer or pass name, just as R G B A. Allows viewers to show stuff too, I guess.

Blender now reads this as well, just allowing an empty string for the layer and pass.
2013-02-09 16:54:10 +00:00
Sergey Sharybin
bc5df753aa Fix part #33935: Texture painting slow down with mouse, but not with tablet
Issue is solved for painting on byte buffer with default sRGB display enabled.
In this case it is possible to skip any color space transform and just apply
dither if needed.

Still not sure if there's a regression in painting on flaots or not, will
continue investigation.
2013-02-08 08:18:44 +00:00
Sergey Sharybin
d648e03619 Fix #34145: 'Save Image' incorrect file type.
Own mistake in 16bit PNG support, wrong bitmask for custom flags

ftype really needs cleanup..
2013-02-07 07:24:02 +00:00
Brecht Van Lommel
a85355fdb9 Fix #34139: render display did not convert to straight alpha when dithering was enabled. 2013-02-06 20:49:33 +00:00
Campbell Barton
1c1fb24f31 fix for rangefunc being unused for int & int array.
also cast strlen to an int to avoid overflow.
2013-02-04 15:48:29 +00:00
Campbell Barton
69993c5d40 style cleanup: spaces -> tabs 2013-02-04 00:18:09 +00:00
Campbell Barton
162c331417 style cleanup 2013-01-19 06:12:25 +00:00
Sergey Sharybin
15638eaa6f Jpeg2000 should be saved with straight alpha 2013-01-15 10:00:55 +00:00
Sergey Sharybin
0ce2d278b7 Follow general mathutils rules for naming straight<->premul functions 2013-01-15 08:37:17 +00:00
Campbell Barton
9263fdb30e fix [#33781] Confusing units in displacement modifier parameters
16bit PNG images were not doing any conversions when saving linear float buffers, but would always load them as SRGB.
apply the same method used for 16bit images from floats as used in jpeg2000.
2013-01-15 08:10:02 +00:00
Campbell Barton
f9133c5ccc write 16 bit PNG files even when there is no float buffer,
the existence of a float buffer can depend on the image being used in the compositor for example, so better give the user what they expect - 16bit png if its selected from the UI.
2013-01-15 07:35:32 +00:00
Sergey Sharybin
aab01c86cf Patch #33837: ffmpeg1.1 and libav9.1 compatibility update
Patch makes it possible to compile blender with recent ffmpeg
and libav libraries, mainly by getting rid of deprecated API.

Original patch by Campbell Barton with own modifications to
support compilation with older ffmpeg versions.

This patch could break compatibility of FFV1 videos playing
back in older players, mainly because of alpha support changes.
Preserving compatibility with such players became a headache
and think it's high time to get rid of workarounds here.
2013-01-12 12:51:10 +00:00
Campbell Barton
e24443b79a style cleanup 2013-01-09 03:30:15 +00:00
Sergey Sharybin
f5317b5f0c Style cleanup in OCIO area
Also fixed typo in function name.
2013-01-08 20:55:07 +00:00
Sergey Sharybin
bb0319022d Fix #33809: Wrong exposure affect after alpha premul changes
Exposure shouldn't affect on alpha channel, only RGB shall be
affected by exposure.

Was a regression since recent alpha premul pipeline changes.
2013-01-08 20:50:26 +00:00
Sergey Sharybin
c69f571478 Remove unused IMB function which wasn't ported to new color management
Also marked some TODOs as actually solved.
2013-01-08 13:32:48 +00:00
Campbell Barton
08358a60b0 style cleanup 2013-01-08 01:48:14 +00:00
Sergey Sharybin
fa0805e287 Changes for opengl render to reflect new alpha premul pipeline
without hurting quick texture painting

- ED_view3d_draw_offscreen will now output buffer with
  transparent alpha, if sky needed it should be alpha-undered
  later.

- ED_view3d_draw_offscreen_imbuf now accepts alpha mode as an
  argument which could be either R_ADDSKY or R_PREMULALPHA

- OpenGL render and sequencer's opengl preview will now reflect
  scene's Alpha Mode

- Quick Edit will use OpenGL with transparent alpha mode
2013-01-05 15:33:18 +00:00
Sergey Sharybin
52a81c8364 There was a typo in previous commit
Additional changes:

- Made mipmapping operate with unsigned short instead of char
  which allowed to eliminate extra division by 255, so prevision
  should be a bit better now.

- Actually, this is not real unsigned short range, but it's a
  range of 255*255 which is more convenient for mipmapping, so
  made conversion functions private for scaling.c

  Not sure it worth making this functions operate in 65535
  range, for now current behavior seems to be just fine.
2013-01-04 20:34:06 +00:00
Sergey Sharybin
4990883664 Optimization for speed regression in mipmap generation
Regression was caused by alpha premul cleanup commit and the reason
of slowdown was uchar <-> float conversion which is slow.

Replaced with uchar <-> int conversion which seeps to be accurate
enough and mostly eliminates slowdown.

Slowdown was easy to notice when movie clip is used for 3d vierport
background and undistortion is enabled. In this case every frame
will re-calculate mipmaps.

It's still a nit slower than mipmap generation before cleanup
commit, but couldn't think about extra boost here atm.
2013-01-04 17:28:58 +00:00
Sergey Sharybin
f1da6fe4dd Fix for saving 8bit PNG images when there's no byte buffer in ImBuf
Misunderstand flag of file filter, should work fine now.
2012-12-31 15:30:03 +00:00
Campbell Barton
b754fcd6f9 code cleanup: warning 2012-12-31 14:55:16 +00:00
Sergey Sharybin
08cea96ab0 Alpha premul pipeline cleanup
This assumptions are now made:
- Internally float buffers are always linear alpha-premul colors
- Readers should worry about delivering float buffers with that
  assumptions.
- There's an input image setting to say whether it's stored with
  straight/premul alpha on the disk.
- Byte buffers are now assumed have straight alpha, readers should
  deliver straight alpha.

Some implementation details:

- Removed scene's color unpremultiply setting, which was very
  much confusing and was wrong for default settings.
  Now all renderers assumes to deliver premultiplied alpha.

- IMB_buffer_byte_from_float will now linearize alpha when
  converting from buffer.

- Sequencer's effects were changed to assume bytes have got
  straight alpha. Most of effects will work with bytes still,
  however for glow it was more tricky to avoid data loss, so
  there's a commented out glow implementation which converts
  byte buffer to floats first, operates on floats and returns
  bytes back. It's slower and not sure if it should actually
  be used -- who're using glow on alpha anyway?

- Sequencer modifiers should also be working nice with straight
  bytes now.

- GLSL preview will predivide float textures to make nice shading,
  shading with byte textures worked nice (GLSL was assuming straight
  alpha).

- Blender Internal will set alpha=1 to the whole sky. The same
  happens in Cycles and there's no way to avoid this -- sky is
  neither straight nor premul and doesn't fit color pipeline well.

- Straight alpha mode for render result was also eliminated.

- Conversion to correct alpha need to be done before linearizing
  float buffer.

- TIFF will now load and save files with proper alpha mode setting
  in file meta data header.

- Remove Use Alpha from texture mapping and replaced with image
  datablock setting.

  Behaves much more predictable and clear from code point of view
  and solves possible regressions when non-premultiplied images were
  used as textures with ignoring alpha channel.
2012-12-31 13:52:13 +00:00
Sergey Sharybin
f62fc79da0 16 bit PNG write support
This commit adds a support of saving 16bit PNG files.

Alpha for such files would be premultiplied, would be corrected
with an upcoming alpha premul cleanup (it's not the only format
which will output 16bit image with premul alpha).
2012-12-30 13:01:47 +00:00
Campbell Barton
4a427d8e0d style cleanup 2012-12-29 01:54:58 +00:00
Campbell Barton
857df8065f style cleanup 2012-12-28 14:19:05 +00:00
Ton Roosendaal
914b0aafa5 Yesterday's memory free error fix in IMB_onehalf was wrong, it should
be fixed in the icons code!
2012-12-28 10:38:07 +00:00
Ton Roosendaal
b931d2d0cd Function IMB_onehalf was not freeing memory.
(Used for icon mipmap)
2012-12-27 17:15:45 +00:00
Sergey Sharybin
851cb9b345 Added support of J2K codec for Jpeg2000 writing
This codec is absolutely needed to generate DCP using OpenDCP,
before that external application to convert JP2 to J2K was used
which slowed down export a lot.

New codec is exposed to image format settings panel and called
Codec. Default one is JP2 which creates files with .jp2 extension,
new one is called J2K which creates with .j2c extension.

Other changes:
- Fixed avi jpeg warning which was treating as error here.
- Made it so extension is detecting from ImageFormatData instead
  of image file type, which makes it possible to have different
  extension for the same file type depending on it's settings.

  IRIS format should still be changed (depending on number of
  channels it'll be .bw, .rgb or .rgba extension)

- Default image format settings would be set from image buffer
  when re-saving it. Makes it possible to easily open .j2c file
  and save it using J2K codec (without this change it'll save as
  .jp2 using JP2 codec)
2012-12-23 13:57:09 +00:00
Brecht Van Lommel
438b19e94a Fix #33629: DDS DXT5 with alpha not loaded correctly, Y flipping code was wrong. 2012-12-20 15:45:42 +00:00
Campbell Barton
9f9296761c patch [#33306] Default file format: PNG, 90% 2012-12-19 15:02:51 +00:00
Campbell Barton
e72239c6a4 style cleanup 2012-12-18 01:52:18 +00:00
Bastien Montagne
ab2c273b12 Added GPL header to sconscripts!
Also changed shebang to '#!/usr/bin/env python', this is more portable across unixes...
2012-12-17 08:01:43 +00:00
Campbell Barton
5943c81a93 code cleanup: neareast -> nearest 2012-12-11 14:19:41 +00:00
Sergey Sharybin
759e96164a Fix #33433: Importing video files into movie clip editor crashes Blender
This was a regression in svn rev52718 caused by the fact that we can not
free packet fun until we've finished all manipulation with decoded frame
since frame and packet could share same pointers.

For now restored old behavior of next_packet which seems to be well
tested and better not do bigger refactoring here so close to release.

Memory leak fixed by that revision was fixed by calling av_free_packet
just before avcodec_decode_video2 in cases we're at the end of file.

Tested with valgrind and could not see any memory leaks in ffmpeg
area.
2012-12-06 21:08:24 +00:00
Bastien Montagne
818a345be3 Silent a bunch of gcc warnings (usually dummy, but noisy!). 2012-12-02 16:01:06 +00:00
Peter Schlaile
ecf89326e1 == FFMPEG ==
This fixes a memory leak caused by the last packet on stream EOF not freed.
(Memory leak occurs on ffmpeg heap managed by av_malloc / av_free, so it is
invisible to Blender)

Also: clean up the code a little bit (anim->next_packet was never really used,
so could be moved into a local variable)
2012-12-02 15:15:44 +00:00
Brecht Van Lommel
5a6d695218 CMake: hide some unnecessary LLVM/OSL/EXR prints. 2012-11-27 17:30:46 +00:00
Jason Wilkins
9b701b7d32 cineonlib.c: Quieted warning, inconsistency between printf format (%lu) and the type of an argument (uintptr_t??)
The struct member is an unsigned int, not a pointer, so it is mysterious why the orignal code cast it to an uintptr_t.

I changed the code to cast it to an unsigned long so that it matches the format.
2012-11-24 14:19:21 +00:00
Campbell Barton
1b32f258e7 ifdef'd gcc diagnostic pragma's to quiet msvc and others. 2012-11-23 10:03:50 +00:00
Sergey Sharybin
feadc66c5e Fix #33222: When rendering DPX it's flipped in the Image Editor
Avoid using IMB_flipy from image save callback. It will use a bit more
memory but wold be thread-safe.
2012-11-21 11:10:37 +00:00
Thomas Dinges
5280353a51 * Fix Windows compile. #ifdef _MSC_VER was misspelled. 2012-11-19 19:28:06 +00:00
Sergey Sharybin
d0a7259837 Improved FFmpeg error reports when audio stream failed to be allocated
Also fixed crash using --debug-ffmpeg caused by BLI_vsnprintf modifies
va_list -- need to create copy of list if this list is gonna to be reused.
2012-11-19 17:22:40 +00:00
Brecht Van Lommel
1e98e96f7c Windows Libs: move OpenEXR headers to same directory structure as other platforms. 2012-11-19 16:02:29 +00:00
Campbell Barton
973cb29d84 style cleanup: if's on the same line. 2012-11-18 02:41:55 +00:00