Commit Graph

99 Commits

Author SHA1 Message Date
Thomas Dinges
23023be4f5 Cycles Addon:
* Some tiny updates and cleanups to the Cycles addon entry.
2012-04-30 19:52:07 +00:00
Brecht Van Lommel
1d8c798188 Cycles: support for motion vector and UV passes.
Most of the changes are related to adding support for motion data throughout
the code. There's some code for actual camera/object motion blur raytracing
but it's unfinished (it badly slows down the raytracing kernel even when the
option is turned off), so that code it disabled still.

Motion vector export from Blender tries to avoid computing derived meshes
when the mesh does not have a deforming modifier, and it also won't store
motion vectors for every vertex if only the object or camera is moving.
2012-04-30 12:49:26 +00:00
Brecht Van Lommel
07b2241fb1 Cycles: merging features from tomato branch.
=== BVH build time optimizations ===

* BVH building was multithreaded. Not all building is multithreaded, packing
  and the initial bounding/splitting is still single threaded, but recursive
  splitting is, which was the main bottleneck.

* Object splitting now uses binning rather than sorting of all elements, using
  code from the Embree raytracer from Intel.
  http://software.intel.com/en-us/articles/embree-photo-realistic-ray-tracing-kernels/

* Other small changes to avoid allocations, pack memory more tightly, avoid
  some unnecessary operations, ...

These optimizations do not work yet when Spatial Splits are enabled, for that
more work is needed. There's also other optimizations still needed, in
particular for the case of many low poly objects, the packing step and node
memory allocation.

BVH raytracing time should remain about the same, but BVH build time should be
significantly reduced, test here show speedup of about 5x to 10x on a dual core
and 5x to 25x on an 8-core machine, depending on the scene.

=== Threads ===

Centralized task scheduler for multithreading, which is basically the
CPU device threading code wrapped into something reusable.

Basic idea is that there is a single TaskScheduler that keeps a pool of threads,
one for each core. Other places in the code can then create a TaskPool that they
can drop Tasks in to be executed by the scheduler, and wait for them to complete
or cancel them early.

=== Normal ====

Added a Normal output to the texture coordinate node. This currently
gives the object space normal, which is the same under object animation.

In the future this might become a "generated" normal so it's also stable for
deforming objects, but for now it's already useful for non-deforming objects.

=== Render Layers ===

Per render layer Samples control, leaving it to 0 will use the common scene
setting.

Environment pass will now render environment even if film is set to transparent.

Exclude Layers" added. Scene layers (all object that influence the render,
directly or indirectly) are shared between all render layers. However sometimes
it's useful to leave out some object influence for a particular render layer.
That's what this option allows you to do.

=== Filter Glossy ===

When using a value higher than 0.0, this will blur glossy reflections after
blurry bounces, to reduce noise at the cost of accuracy. 1.0 is a good
starting value to tweak.

Some light paths have a low probability of being found while contributing much
light to the pixel. As a result these light paths will be found in some pixels
and not in others, causing fireflies. An example of such a difficult path might
be a small light that is causing a small specular highlight on a sharp glossy
material, which we are seeing through a rough glossy material. With path tracing
it is difficult to find the specular highlight, but if we increase the roughness
on the material the highlight gets bigger and softer, and so easier to find.

Often this blurring will be hardly noticeable, because we are seeing it through
a blurry material anyway, but there are also cases where this will lead to a
loss of detail in lighting.
2012-04-28 08:53:59 +00:00
Brecht Van Lommel
6d4841ba82 Fix #31058: missing Simplify panel for cycles. 2012-04-26 12:13:26 +00:00
Brecht Van Lommel
88a261c13b Cycles: add render layer use environment option to disable world lighting on
individual render layers.
2012-04-13 12:58:12 +00:00
Nicholas Bishop
1a9a8406fe Tiny fix for console warning, remove period from a description in Cycles. 2012-04-08 16:19:13 +00:00
Brecht Van Lommel
6e93e33294 Cycles: add rejection of inf/nan samples, in principle these should not happen
but this makes it more reliable for now.

Also add an integrator "Clamp" option, to clamp very light samples to a maximum
value. This will reduce accuracy but may help reducing noise and speed up
convergence.
2012-04-05 15:17:45 +00:00
Brecht Van Lommel
d7d8c668ca Fix #30803: shader node Mapping location property conflicted with based class
location property (for the node editor), now renamed to "translation".
2012-04-04 16:11:39 +00:00
Brecht Van Lommel
755f018324 Cycles: shadow pass support. Note that this only takes into account lamps,
emitting objects or world lighting do not contribute to the shadow pass.

Consider this more as a pass useful for some compositing tricks, unlike
other lighting passes this pass can't be used to exactly reconstruct the
combined pass.
2012-03-28 10:39:21 +00:00
Brecht Van Lommel
d87995a6b1 Cycles: add rendered draw mode option in 3d view header to show the active
render layer rather than the viewport layers.
2012-03-28 09:07:35 +00:00
Thomas Dinges
e13e78495b Cycles UI files:
* Minor cleanup and raise blender version to 2.62 in the addon.
2012-03-11 16:25:58 +00:00
Brecht Van Lommel
36b2f4a009 Cycles: another tooltip tweak. 2012-03-09 19:01:44 +00:00
Brecht Van Lommel
077deb1453 Cycles: improve F/Stop number tooltip description. 2012-03-08 20:13:33 +00:00
Brecht Van Lommel
284fcd2df2 Cycles: fix UI when material has nodes but use nodes option is disabled, it
didn't show this option then.
2012-03-08 19:53:01 +00:00
Campbell Barton
ee84084f99 style cleanup: pep8 + picky edits 2012-03-08 05:36:05 +00:00
Brecht Van Lommel
cb45a5bbb0 Cycles: option to specify camera aperture in radius or f/stop:
http://wiki.blender.org/index.php/Doc:2.6/Manual/Render/Cycles/Camera#Depth_of_Field

Patch by Ejner Fergo.
2012-03-07 13:01:30 +00:00
Brecht Van Lommel
e6c2f05efa Cycles: mask layers were still confusing, now they work more like in the original
commit again and less like blender internal, see documentation:
http://wiki.blender.org/index.php/Doc:2.6/Manual/Render/Cycles/Passes
2012-03-07 12:27:38 +00:00
Brecht Van Lommel
8a76aa2e47 Cycles: fix AO pass not rendering with AO enabled for world, and make mask
layers work more like blender internal.
2012-02-28 19:43:33 +00:00
Brecht Van Lommel
22abc63f67 Cycles: ambient occlusion support, with AO factor and distance, and a render pass.
http://wiki.blender.org/index.php/Doc:2.6/Manual/Render/Cycles/World#Ambient_Occlusion
http://wiki.blender.org/index.php/Doc:2.6/Manual/Render/Cycles/Passes#Lighting_Passes
2012-02-28 16:45:08 +00:00
Brecht Van Lommel
0052cbed0d Cycles: support for mask layers in render layer, this has the same effect as
assigning holdout shaders to every object in the specified layers.

http://wiki.blender.org/index.php/Doc:2.6/Manual/Render/Cycles/Passes#Layers
2012-02-28 16:44:45 +00:00
Campbell Barton
637bc0ddea Code Cleanup: pep8 edits 2012-02-04 11:10:41 +00:00
Brecht Van Lommel
5504ba6f50 Cycles: material pass index button was missing from material properties still. 2012-02-01 13:38:23 +00:00
Brecht Van Lommel
f99343d3b8 Cycles: Render Passes
Currently supported passes:
* Combined, Z, Normal, Object Index, Material Index, Emission, Environment,
  Diffuse/Glossy/Transmission x Direct/Indirect/Color

Not supported yet:
* UV, Vector, Mist

Only enabled for CPU devices at the moment, will do GPU tweaks tommorrow,
also for environment importance sampling.

Documentation:
http://wiki.blender.org/index.php/Doc:2.6/Manual/Render/Cycles/Passes
2012-01-25 17:23:52 +00:00
Thomas Dinges
c905415f6b Cycles Node Editor:
* Add Use Nodes button for World shader type
* UI was not redrawing the Node area, when enabling "Use nodes", added check for it to the listener.
2012-01-24 20:10:37 +00:00
Thomas Dinges
9dac61c74d Cycles Textures:
* Remove the "Use nodes" button, the TextureOutput node was never ported to trunk from the cycles branch.
2012-01-22 22:59:21 +00:00
Thomas Dinges
b3d5224390 Cycles UI:
* Use full width for the world sample as lamp properties
2012-01-22 22:43:21 +00:00
Campbell Barton
acfeb47aa3 use property definitions more consistant with other addons in trunk. (no functional change) 2012-01-20 18:31:23 +00:00
Brecht Van Lommel
5873301257 Sample as Lamp option for world shaders, to enable multiple importance sampling.
By default lighting from the world is computed solely with indirect light
sampling. However for more complex environment maps this can be too noisy, as
sampling the BSDF may not easily find the highlights in the environment map
image. By enabling this option, the world background will be sampled as a lamp,
with lighter parts automatically given more samples.

Map Resolution specifies the size of the importance map (res x res). Before
rendering starts, an importance map is generated by "baking" a grayscale image
from the world shader. This will then be used to determine which parts of the
background are light and so should receive more samples than darker parts.
Higher resolutions will result in more accurate sampling but take more setup
time and memory.

Patch by Mike Farnsworth, thanks!
2012-01-20 17:49:17 +00:00
Campbell Barton
2019f636b0 misc small changes and bmesh support for testing script 2012-01-17 18:01:16 +00:00
Brecht Van Lommel
92764260d7 Cycles: add option to cache BVH's between subsequent renders, storing the BVH on
disk to be reused by the next render.

This is useful for rendering animations where only the camera or materials change.
Note that saving the BVH to disk only to be removed for the next frame is slower
if this is not the case and the meshes do actually change.

For a render, it will save bvh files to the cache user directory, and remove all
cache files from other renders. The files are named using a MD5 hash based on the
mesh, to verify if the meshes are still the same.
2012-01-16 13:13:37 +00:00
Campbell Barton
9c2a58a811 remove api from addon bl_info, was never used. 2012-01-14 13:02:20 +00:00
Brecht Van Lommel
d7932ceea8 Cycles: multi GPU rendering support.
The rendering device is now set in User Preferences > System, where you can
choose between OpenCL/CUDA and devices. Per scene you can then still choose
to use CPU or GPU rendering.

Load balancing still needs to be improved, now it just splits the entire
render in two, that will be done in a separate commit.
2012-01-09 16:58:01 +00:00
Campbell Barton
33bd38ebc7 minor edits to cycles c/python module
- rename 'bcycles' --> '_cycles', since this is the python convention when a py module uses a C module internally.
- use macros for returning None
- make with_osl an attribute rather then a function.
- changes methods METH_VARARGS --> METH_O when single args are used.
2011-12-24 02:47:13 +00:00
Thomas Dinges
e68f0ff3c0 Another Fix after Cucumber Merge:
* Cycles did not displayed the Scene panels anymore, due to addition of COMPAT_ENGINE to them.
2011-12-22 22:34:23 +00:00
Brecht Van Lommel
c287a09b40 Cycles: support for multiple render layers. It currently renders each layer
entirely before moving on to the next.
2011-12-21 20:51:55 +00:00
Brecht Van Lommel
72d2d05770 Cycles: border rendering support, includes some refactoring in how pixels are
accessed on devices.
2011-12-20 12:25:37 +00:00
Campbell Barton
b44c82b4fd remove invalid NULL checks from own recent commit and minor pep8 edits. 2011-12-05 22:19:30 +00:00
Brecht Van Lommel
45de380771 Cycles
* Compile all of cycles with -ffast-math again
* Add scons compilation of cuda binaries, tested on mac/linux.
* Add UI option for supported/experimental features, to make it
  more clear what is supported, opencl/subdivision is experimental.
* Remove cycles xml exporter, was just for testing.
2011-12-01 16:33:21 +00:00
Campbell Barton
42d50c75fa minor cycles edits
- use sets rather then tuples
- use relative imports
2011-11-27 03:49:09 +00:00
Brecht Van Lommel
04d1971a66 Fix cycles python error introduced in revision 42138. 2011-11-24 21:14:48 +00:00
Campbell Barton
6e28ac2d7b pep8 edits and avoid naming conflicts with python builtins 2011-11-24 19:36:12 +00:00
Brecht Van Lommel
6f73e351ee Cycles:
* Fix #29354: crash on branch file. Note that for best compatibility, you need
  to save your files with one of the latest branch builds, since not all version
  patching code was moved to trunk.
* Rename "Cycles" to "Cycles Render" in info header menu.
* Code tweaks to try to fix #29301. It's not a real solution though, I'm thinking
  cause is extended precision for floats on some cpu's, used in one case but not
  in the other, leading to bounding box intersection issue...
2011-11-21 16:28:19 +00:00
Thomas Dinges
2b1f800e9e Bugfix for [#29279] Cycles Displacement Panel appears when blender render engine is choosen. 2011-11-19 22:59:48 +00:00
Campbell Barton
4d9766aacf minor cleanup
- remove / comment unused python vars
- replace mul_v3_fl(somevec, -1.0f); with negate_v3(somevec);
2011-11-16 16:38:37 +00:00
Brecht Van Lommel
ef6eab3ce4 Cycles: move clew into cycles namespace to avoid conflicts, and fix mesh
displacement panel showing with blender internal.
2011-11-15 19:23:35 +00:00
Campbell Barton
747f06d3d2 set cycles scripts as pep8 & make some minor changes.
also update sphinx doc generator.
2011-11-15 02:58:01 +00:00
Brecht Van Lommel
2ab2423b06 Cycles:
* Fix #29257: nan-pixels with zero roughness for glass/glossy.
* Fix #29239: crash with border rendering, this is not working yet, but should
  no longer crash now.
* Show object name in 3d view rendered draw type.
* Attempt to improve Sample as Light option description.
2011-11-14 19:45:21 +00:00
Bastien Montagne
21fa7e0b86 Some UI messages fixes and tweaks in recent merges (found while translating in french). 2011-11-14 19:13:52 +00:00
Thomas Dinges
f79d14dcfa Cycles Addon:
* Added URL to wiki
* Marked as official
* api/blender bump
2011-11-13 10:05:07 +00:00
Brecht Van Lommel
7d110c2923 Cycles: fix missing particle panels and show emitter option not being respected. 2011-11-10 16:02:46 +00:00