Commit Graph

282 Commits

Author SHA1 Message Date
Brecht Van Lommel
4c287f1d4d Fix shadow pass issue with non-progressive render shadow pass with emitting
meshes and world MIS.
2013-02-20 12:10:05 +00:00
Brecht Van Lommel
b94993941f Fix #34252: cycles rendering 16bit PNG with too light colors. 2013-02-14 21:40:29 +00:00
Thomas Dinges
cb75d64f7d Cycles:
* Compile fix when building without OSL.
2013-02-14 19:30:25 +00:00
Brecht Van Lommel
e0ca72735d Further fix for #34121: OSL + persistent images could crash in some cases still. 2013-02-14 16:48:43 +00:00
Brecht Van Lommel
adbd84c320 Fix #34121: OSL + persistent images option was not freeing shader memory properly,
causing memory to increase continuously during animation render.
2013-02-14 16:11:47 +00:00
Brecht Van Lommel
909d64079a Fix #34226: cycles shadow pass got incorrectly influenced by world multiple
importance sampleing.
2013-02-13 16:46:18 +00:00
Sergey Sharybin
ae385fb61c Correction for fix #34205: Zooming in rendered mode during update out of sync with intended zoom
Didn't initially notice one possibility when GPU render would fail here,
2013-02-13 07:50:41 +00:00
Brecht Van Lommel
45c70acd27 Fix some (quite harmless) use of uninitialized memory reported by valgrind. 2013-02-12 13:48:04 +00:00
Sergey Sharybin
b3b9931276 Fix #34205: Cycles: Zooming in rendered mode during update out of sync with intended zoom
Made sure no pause_cond.wait() happens at the same time as session as resetting.
2013-02-12 13:06:52 +00:00
Brecht Van Lommel
9307565269 Attempted fix for issue with latest CUDA kernel for 32 bit windows/linux/mac,
there seems to be some sort of compiler bug in CUDA toolkit 4.2, uninlining a
few functions seems to avoid it.
2013-02-11 22:41:11 +00:00
Brecht Van Lommel
d686b1c20f Fix small memory leak in cycles tile render, a few bytes for each tile.
Reported by "aquo" on IRC.
2013-02-06 21:32:34 +00:00
Campbell Barton
296444e1dc style cleanup: some warnigs & spelling. 2013-02-06 14:02:19 +00:00
Stuart Broadfoot
35e89d9cfc Cycles Hair: Fixed hair shape and inclusion of multiple attributes for triangle primitives
When using triangle primitives this fix enables 'closed tip'. 

UVs and vertex colours are added when using triangle primitives for hair.

Two new preset modes have also been included to allow easy access to curves and triangle planes.
2013-02-02 01:49:57 +00:00
Brecht Van Lommel
dc0f4b5618 Cycles: make multiple importance sampling for lamps an option per lamp now,
disabled by default for backwards compatibility.
http://wiki.blender.org/index.php/Doc:2.6/Manual/Render/Cycles/Integrator
2013-01-30 15:57:15 +00:00
Sergey Sharybin
452a52575c Cycles material preview: fix for generated/packed/movie files
Issue was caused by cycles trying to find builtin images in a main
database and in case of preview render images are not in database,
they're just referenced by shader node tree.

Now builtin images in cycles have got void* pointer to store data
needed to load builtin images.

In case ob blender session, this pointer will store pointer from
PointerRNA for image datablock and used later to construct Image
class based on this pointer.

This also saves database lookup for final render which is nice :)

Reviewed by Brecht.
2013-01-30 13:42:12 +00:00
Stuart Broadfoot
6d2f104884 Cycles Hair: Addition of render settings and static BVH strand width scaling
Addition of a RNA function to toggle between the hair settings and rebuild the cache. This enables the usage of the render step, child number and full display percentage with f12 rendering.

A scaling to the strand radius has also been added for the static bvh. This only matches up with dynamic for uniform scaling.

A very small fix is included for multiple uvs/vertex colours when using child particles.
2013-01-29 12:32:43 +00:00
Brecht Van Lommel
38c94e9194 Fix cycles crash that happened with mesh emission and diffuse/glossy ray
visibility disabled on some objects.
2013-01-25 02:00:57 +00:00
Stuart Broadfoot
976c6b7b6e Cycles Hair: Multiple vertex colours and UV coordinates
Added export of multiple UV coordinates and vertex colour attributes.

A debugging option to export the strands without using the cache has also been removed.
2013-01-23 17:15:45 +00:00
Brecht Van Lommel
543e06ce0e Fix #33915: tweak self intersection epsilon for motion blur a bit further, still
had some cases where there were artifacts. Also fix rendering error with shutter
time set to 0.
2013-01-23 16:56:02 +00:00
Brecht Van Lommel
7bcbbe26d5 Fix #33905: cycles crash with bsdf node plugged twice into add shader. 2013-01-23 13:13:20 +00:00
Campbell Barton
f414d2980a code cleanup: remove some paranoid checks which would have crashed anyway earlier on.
Also some minor formatting.
2013-01-20 14:50:50 +00:00
Stuart Broadfoot
3373b8154b Cycles Hair: Introduction of Cardinal Spline Curve Segments and minor fixes.
The curve segment primitive has been added. This includes an intersection function and changes to the BVH.

A few small errors in the line segment intersection routine are also fixed.
2013-01-15 19:44:41 +00:00
Brecht Van Lommel
6adfd91657 Fix #33830: cycles normal mapping was not quite correct, was not correctly
respecting the assumption that normal and tangent are interpolated without
normalization.
2013-01-15 16:35:05 +00:00
Sergey Sharybin
7a90af7b5a Packed and generated images support for Cycles
This commit adds support of packed and generated images
for Cycles when using SVM backend. Movies are still not
supported. This changes also doesn't touch OSL which is
much less trivial to adopt for any images which are not
saved to disk.

Implementation details:

- When adding images to Image Manager is now possible
  to mark image as builtin. Builtin images will bypass
  OIIO loader and will use special loading callbacks.

- Callbacks are set by Blender Session and they're
  using C++ RNA interface to obtain needed data (pixels,
  dimensions, is_float flag).

- Image Manager assumes file path is used as reference
  to a builtin images, but in fact currently image
  datablock name is used for reference. This makes it
  easy to find an image in BlendData database.

- Added some extra properties to Image RNA:
  * channels, which denotes actual number of channels
    in ImBuf. This is needed to treat image's pixels
    correct (before it wasn't possible because API
    used internal number of channels for pixels which
    is in fact doesn't correlate with image depth)
  * is_float, which is truth if image is stored in
    float buffer of ImBuf.

- Implemented string lookup for C++ RNA collections
  for cases there's no manual lookup function.

OSL is not supported because it used own image loading
and filtering routines and there's seems to be no API
to feed pre-loaded pixels directly to the library.

Think we'll either need to add some API to support
such kind of feeding or consider OSL does not have
support of packed images at all.

Movies are not supported at this moment because of lack
of RNA API to load specified frame. It's not difficult
to solve, just need to consider what to best here:
* Either write some general python interface for ImBuf
  and use it via C++ API, or
* Write a PY API function which will return pixels for
  given frame, or
* Use bad-level BKE_* call

Anyway, small steps, further improvements later.

Reviewed by Brecht, thanks!
2013-01-12 10:59:13 +00:00
Brecht Van Lommel
ad10cbf04a Cycles: multiple importance sampling for lamps, which helps reduce noise for
big lamps and sharp glossy reflections. This was already supported for mesh
lights and the background, so lamps should do it too.

This is not for free and it's a bit slower than I hoped even though there is
no extra BVH ray intersection. I'll try to optimize it more later.

* Area lights look a bit different now, they had the wrong shape before.
* Also fixes a sampling issue in the non-progressive integrator.
* Only enabled for the CPU, will test on the GPU later.
* An option to disable this will be added for situations where it does not help.

Same time comparison before/after:
http://www.pasteall.org/pic/show.php?id=43313
http://www.pasteall.org/pic/show.php?id=43314
2013-01-09 21:09:20 +00:00
Sergey Sharybin
fd35b0aa66 Fix for recent tile_order feature not working properly with persistent data 2013-01-08 16:56:04 +00:00
Thomas Dinges
41c588256b Cycles / Tile Rendering:
* Added new option to chose the tile order.
In addition to the "Center" method, 4 new methods are available now, like Top -> Bottom and Right -> Left. 

Thanks to Sergey for code review and some tweaks!
2013-01-07 19:55:49 +00:00
Stuart Broadfoot
ec33cacc62 Added vertex color attributes (currently limited to one) and UVs included for triangle mesh hair.
I have also included a small speedup for the intersection test.
2013-01-04 12:44:38 +00:00
Brecht Van Lommel
bf25f1ea96 Cycles Hair: refactoring to store curves with the index of the first key and the
number of keys in the curve, rather than curve segments with the indices of two
keys. ShaderData.segment now stores the segment number in the curve.
2013-01-03 12:09:09 +00:00
Brecht Van Lommel
57cf48e7c6 Cycles Hair: refactoring to support generic attributes for hair curves. There
should be no functional changes yet. UV, tangent and intercept are now stored
as attributes, with the intention to add more like multiple uv's, vertex
colors, generated coordinates and motion vectors later.

Things got a bit messy due to having both triangle and curve data in the same
mesh data structure, which also gives us two sets of attributes. This will get
cleaned up when we split the mesh class.
2013-01-03 12:08:54 +00:00
Stuart Broadfoot
178a877a95 Fix to prevent undefined normals being generated with `add_face_normals()', from triangles with zero area. 2013-01-01 19:44:09 +00:00
Sergey Sharybin
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
Thomas Dinges
6b05c887d3 Cycles Hair:
* Implemented the Hair Info Node for OSL.
2012-12-29 01:57:32 +00:00
Stuart Broadfoot
e9ba345c46 New feature
Patch [#33445] - Experimental Cycles Hair Rendering (CPU only)

This patch allows hair data to be exported to cycles and introduces a new line segment primitive to render with.

The UI appears under the particle tab and there is a new hair info node available.

It is only available under the experimental feature set and for cpu rendering.
2012-12-28 14:21:30 +00:00
Brecht Van Lommel
7cbfe1839b Fix part of #33662: cycles crash using displacement on meshes with vertices not
attached to any face.
2012-12-26 20:59:35 +00:00
Brecht Van Lommel
4ee0087e35 Fix cycles displacement not working well with OSL and multiple objects. 2012-12-23 14:29:43 +00:00
Brecht Van Lommel
abd3c87663 Cycles: reduce memory usage of instanced objects by about 40%, as long as the
motion vector pass is not enabled.
2012-12-20 19:26:57 +00:00
Brecht Van Lommel
3759c10e5c Fix #33485: cycles OSL now autodetects the presence of emission and transparent
closures to enable multiple importance sampling and transparent shadows.
2012-12-12 06:51:06 +00:00
Brecht Van Lommel
43c04eefe3 Cycles: RGB and Vector Curves nodes now supported, with the limitation that the
range must be left to the default (0..1 and -1..1).
2012-12-11 14:39:37 +00:00
Brecht Van Lommel
7c81952179 Cycles: trick to make building with OSL trunk work as well, it has a different
name for LoadMemoryShader so we make it call the right name depending on which
is available.
2012-12-11 14:39:32 +00:00
Brecht Van Lommel
c20292f624 Fix mapping node min/max not working OSL. 2012-12-06 09:13:57 +00:00
Brecht Van Lommel
a9d889cba4 Fix #33405: preview render getting stuck in a particular .blend file, ObjectKey
operator< had wrong brackets, changed it now to be more clear.

Fix #33404: crash GPU rendering with OSL option still enabled. There was a check
to disable OSL in this case, but it shouldn't have modified scene->params because
this is used for comparison in scene->modified().
2012-12-04 07:48:09 +00:00
Brecht Van Lommel
7c0a0bae79 Fix #33375: OSL geom:trianglevertices gave wrong coordinates for static BVH.
Also some simple OSL optimization, passing thread data pointer directly instead
of via thread local storage, and creating ustrings for attribute lookup.
2012-12-01 19:15:05 +00:00
Brecht Van Lommel
75cce01a61 Fix #33364: cycles tile rendering artifacts. 2012-11-30 18:55:04 +00:00
Brecht Van Lommel
1246ef714e Fix #33351: cycles OSL not loading grayscale images as RGB correctly. 2012-11-30 06:10:25 +00:00
Brecht Van Lommel
e7f594b0df Fix #33347: cycles OSL crash connecting string to vector socket. 2012-11-30 06:10:16 +00:00
Brecht Van Lommel
0d6976ad0c Fix #32900: object motion blur not working on the GPU. To make this work I disabled motion
blurring of scale animation, probably not a big loss in practice since it's not so common
to animate this, can be added back later.
2012-11-29 00:43:50 +00:00
Brecht Van Lommel
bb0195e039 Fix #33337: cycles crash with progressive refine and multiple render layers. 2012-11-28 19:57:29 +00:00
Brecht Van Lommel
33f81187fb Fix #33335: cycles SVM closure issue in recent bugfix, incorrectly tagging
node as done.
2012-11-28 19:13:34 +00:00
Brecht Van Lommel
5f8fded639 Fix cycles OSL shader loading warnings after recent bugfix. 2012-11-27 16:02:12 +00:00