Commit Graph

2883 Commits

Author SHA1 Message Date
7c4f70178f fix for glitch with vertex bake:
- the mesh would be tagged to update, then updated before bake finished.
- also increase self-shadow offset, in some cases the offset wasn't enough.
2013-01-23 04:22:02 +00:00
c8dbf61f35 fix [#33729] Shadows produce artefacts in vertex colour baking 2013-01-23 03:01:43 +00:00
193df0f5a0 Fix #33951: Only margin is correctly baked for non-displacement baking
Was own mistake in recent changes.
2013-01-22 09:37:46 +00:00
95a13a2c02 Fix projection texture painting crash
It was caused by own mistake by not noticing externtex is used not
only by render engine. Now this function uses pool passed as argument
rather than using R.pool.
2013-01-22 08:05:00 +00:00
709a86a8d9 Multires baker: fix wrong normalization if baking happens to multiple images
Previously normalization will happen per image buffer individually, which
was wrong in cases different faces of the sane mesh uses different images.

Also solved possible threading issues when calculating min.max displacement.
2013-01-21 18:34:27 +00:00
effaa79ffb Multires baker: fix bad face->grid index conversion for displacement baker 2013-01-21 18:34:20 +00:00
64c85d89dd Multires baker: fix memory leak caused by threading issues
Didn't notice this before because of non-working guarded allocation
at the time threading was added to multires baker.
2013-01-21 18:34:14 +00:00
04affbe80e Support normalized displacement maps in cases maximal distance is not set
This will calculate maximal distance automatically and normalize displacement
to it. Before this change normalization will not happen at all in cases max
distance is not set manually.

This affects on "regular" baker only, there are still some fixes to come for
multiresolution baker, but that could be solved separately.
2013-01-21 09:05:05 +00:00
86991fbcb0 Fixed render time regression in Blender Internal
It was caused by image threading safe commit and it was noticeable
only on really multi-core CPU (like dual-socket Xeon stations), was
not visible on core i7 machine.

The reason of slowdown was spinlock around image buffer referencing,
which lead to lots of cores waiting for single core and using image
buffer after it was referenced was not so much longer than doing
reference itself.

The most clear solution here seemed to be introducing Image Pool
which will contain list of loaded and referenced image buffers, so
all threads could skip lock if the pool is used for reading only.
Lock only needed in cases when buffer for requested image user is
missing in the pool. This lock will happen only once per image so
overall amount of locks is much less that it was before.

To operate with pool:
- BKE_image_pool_new() creates new pool
- BKE_image_pool_free() destroys pool and dereferences all image
  buffers which were loaded to it
- BKE_image_pool_acquire_ibuf() returns image buffer for given
  image and user. Pool could be NULL and in this case fallback to
  BKE_image_acquire_ibuf will happen.

  This helps to avoid lots to if(poll) checks in image sampling
  code.

- BKE_image_pool_release_ibuf releases image buffer. In fact, it
  will only do something if pool is NULL, in all other case it'll
  equal to DoNothing operation.
2013-01-21 08:49:42 +00:00
38cee985bb code cleanup: style & warnings. 2013-01-21 02:30:40 +00:00
a08a3ab931 Fix #33916: 2.65a regression: particles duplicating objects with halo - crash
allow_render_dupli_instance used to pass zero-based index to give_current_material
which is wrong.

Before rev53332 it wasn't so much visible because give_current_material used
to clamp index internally. But that was wrong behavior here anyway, and why
nobody noticed this for so long? :)
2013-01-18 12:29:18 +00:00
Alex Fraser
55030a4c1a Applying sRGB color space transform when baking to vertex colors. Thanks to Campbell Barton and Sergey Sharybin for their help! 2013-01-18 09:19:43 +00:00
8b204f131a Render: set minimum render size to 1x1 instead of 2x2. As far as I can tell this
works ok, and it's useful for debugging.
2013-01-15 10:47:13 +00:00
94ae0232b0 Merged changes in the trunk up to revision 53729.
Conflicts resolved:
release/datafiles/startup.blend
source/blender/blenloader/intern/readfile.c
2013-01-12 02:02:53 +00:00
18536e201f add a segfault handler that writes out the info log into a crash file alongside the blend file. 2013-01-10 16:37:48 +00:00
b02dd1e719 Fix #33815: blender internal crash rendering material pass with strands.
Patch from Sergey with modifications.
2013-01-09 15:39:26 +00:00
1bf5832dfb code cleanup: warnings and use stdbool for bpy* funcs. 2013-01-07 05:26:12 +00:00
6747dec926 style cleanup 2013-01-07 03:24:22 +00:00
feccbaabbd Merged changes in the trunk up to revision 53584.
Conflicts resolved:
release/scripts/startup/bl_ui/properties_render.py
source/blender/blenloader/intern/readfile.c
source/blender/editors/interface/interface_templates.c
source/blender/makesrna/RNA_enum_types.h

Also made additional code updates for:
r53355 UIList - Python-extendable list of UI items
r53460 Alpha premul pipeline cleanup
2013-01-05 22:24:05 +00:00
4190169282 code cleanup, also remove glError check in font drawing code since its now a debug option. 2013-01-04 17:24:40 +00:00
Alex Fraser
5e0e62f040 Patch [#29035] Vertex colour baking
There is a new option in the Bake panel to enable baking to vertex colors. Unlike regular baking, this mode does not require a UV map or image to bake to, however the object must have a vertex color layer.

Thanks to:
 - AutoCRC for funding
 - Brech van Lommel and Dalai Felinto for their initial advice on how to implement it
 - Campbell Barton for helping to make this feature work with modifiers and bmesh
2013-01-02 00:05:30 +00:00
2e0e2cb170 Highlight currently rendering tiles
This commit implements highlight of tiles which are being currently
rendered for both Blender Internal and Cycles (and should be possible
to use it for other external engines as well).

Couple of implementation details:

- Added one extra boolean flag to render engine which should be set
  to truth if render engine wants to highlight tiles. If so, property
  use_highlight_tiles should be set to True.

- Render Part's ready boolena was changed by status enum, which could
  be NONE, IN_PROGRESS and READY. All render part with IN_PROGRESS
  status will be highlighted in image editor.

- For external engines render part's status is filling in automatically.
  Initially all render parts has got NONE status, then one external
  engine acquire render result, corresponding part will change status
  to IN_PROGRESS. As soon as render result is finished, corresponding
  render part will change status to FINISHED

  This should make it easy to highlight tiles for other engines as well.
2013-01-01 16:15:13 +00:00
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
4a427d8e0d style cleanup 2012-12-29 01:54:58 +00:00
857df8065f style cleanup 2012-12-28 14:19:05 +00:00
6a0c8790d8 Better error report when no camera is found.
While trying to render a RenderLayer from a linked scene, I couldnt tell why it wasnt doing anything. It just stopped rendering. Until I look on the console and see the No Camera print.

This commit replaces the simple terminal printf with an actual error report, that shows in both terminal and to the user:
http://pasteall.org/pic/show.php?id=42499

I believe this commit is pretty harmless, and only adds functionality. But feel free to remove it.
2012-12-27 22:00:31 +00:00
c52468d31d flip lines to reduce odds of re-execution (non critical race condition when triangles overlap 2012-12-23 18:58:10 +00:00
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
40449b1994 Merged changes in the trunk up to revision 53280. 2012-12-23 00:23:11 +00:00
eb219852a8 Bug fix #33639
Material Texture blend modes Screen, Overlay and Multiply didn't respect
the alpha for textures... an error I could trace back to 2004 even.

Obviously the fix should be done, but it might change the appearance of
renders somewhat. Will keep an eye open if this is worth ugly 
version-patching.

Now: image textures with alpha, will only apply the blend modes
respecting the alpha values.
2012-12-21 10:15:12 +00:00
b2c66e268f replace MIN/MAX 3,4 with inline functions 2012-12-21 05:07:26 +00:00
a462d69bbf Another big patch set by Bastien Montagne, thanks a lot!
* Made Freestyle optional (turned on by default).

* Fix for missing bpath.c updates in the previous merge of trunk changes.
2012-12-20 07:57:26 +00:00
2fcac424c0 add a comment 2012-12-20 05:07:14 +00:00
6ccadbc6d6 must use permutation table 2012-12-20 05:03:00 +00:00
3bc3e178b3 style cleanup 2012-12-20 00:29:31 +00:00
62988549a1 Multirs baker: support for threaded baking 2012-12-19 08:13:41 +00:00
d433cd65f7 Merged changes in the trunk up to revision 53146.
Conflicts resolved:
release/datafiles/startup.blend
source/blender/blenkernel/CMakeLists.txt
source/blender/blenlib/intern/bpath.c
source/blender/blenloader/intern/readfile.c
2012-12-19 01:49:58 +00:00
0ddc77f913 code cleanup: warnings 2012-12-19 01:48:54 +00:00
460a961975 Multires baker: made octree aware of user-defined resolution in performance panel 2012-12-18 17:46:54 +00:00
9e2b1900a8 Multires baker: noneed to tag display as invalid after every flushed pixel 2012-12-18 17:46:48 +00:00
6571713ddb Ambient occlusion baker from multi-resolution mesh
This implements AO baking directly from multi-resolution mesh with much
less memory overhead than regular baker.

Uses rays distribution implementation from Morten Mikkelsen, raycast
is based on RayObject also used by Blender Internal.

Works in single-thread yet, multi-threading would be implemented later.
2012-12-18 17:46:42 +00:00
6b3e880311 Move multires baker into own file in render/
Currently will only keep object editor a bit clearer, but in
the future will be needed because of using some internal renderer
data structures.
2012-12-18 17:46:26 +00:00
593ae2c8f4 Fix #33505: various issues
* Motion blur with shutter time > 1 did result in the correct evaluation
  of some modifiers because it set the subframe to values > 1, and some
  places assume the current frame to be set to the integer coordinate and
  the subframe to be a value between 0 and 1.
* Shape keys did not take subframe time offsets into account.
* Point density texture was using an current frame value that was never set.
2012-12-17 20:37:10 +00:00
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
677f519ca5 Bugfix IRC report
Curves heavily scaled down will have render artifacts

Caused by precision issues when computing average normal map
for INDEX3 surface type. Now calculation happens in local object
space instead of world space.
2012-12-16 11:47:13 +00:00
b76d465e3c Fix related to #33480: for blender internal volume rendering, the camera inside
volume wasn't accurate, it still isn't quite but hopefully a bit better by
taking clip start into account.

With clip start it's actually impossible to do a single 'inside' test, since
there will not be a single point where all camera rays start from, though for
small clip start they will be close together.
2012-12-12 14:43:11 +00:00
7c699a217a define the size of matrix args for both rows/cols. 2012-12-11 14:29:01 +00:00
634b22fc46 code cleanup: spelling labda -> lambda 2012-12-11 14:18:37 +00:00
ed0e2fbd9f Merged changes in the trunk up to revision 52690.
Conflicts resolved:
release/datafiles/startup.blend
source/blender/blenlib/intern/bpath.c
2012-12-01 02:47:59 +00:00
e3d3ffe746 fix [#33303] face selection masking for painting does not work with mesh with n-gon
caused by own change to how origindex is used, now if mpoly's CD_ORIGINDEX array is missing its assumes that its the original mpoly array.
2012-11-26 10:15:32 +00:00