Commit Graph

145 Commits

Author SHA1 Message Date
Brecht Van Lommel
c3e1fce775 Cycles: add Object Info node, with outputs object location, object/material
pass index, and a random number unique to the instance of the object.

This can be useful to give some variation to a single material assigned to
multiple instances, either manually controlled through the object index, based
on the object location, or randomized for each instance. 

http://wiki.blender.org/index.php/Doc:2.6/Manual/Render/Cycles/Nodes/More#Object_Info
2012-05-21 12:52:28 +00:00
Brecht Van Lommel
3e83fd441d Fix #31486: cycles texture coordinate reflection output has wrong direction. 2012-05-18 12:49:22 +00:00
Bastien Montagne
2e89e0096a Spell check fix (lenght -> length)
Note: two remains, in comments in extern/bullet2/src/LinearMath/btVector3.h and extern/libmv/libmv/image/tuple.h.
2012-05-16 14:25:25 +00:00
Brecht Van Lommel
dd9c1b7fbf Cycles: OpenCL image texture support, fix an attribute node issue and refactor
feature enabling #defines a bit.
2012-05-13 12:32:44 +00:00
Brecht Van Lommel
c8cbe63947 Cycles: fix issues with texture coordinates and object scale. Auto texture
space size and location were outdated often, and already computed on demand
by blender internal, now do that through RNA as well.
2012-05-08 23:39:31 +00:00
Dalai Felinto
5797edfcf2 adding kernel_projection.h in CMakelists 2012-05-07 20:37:48 +00:00
Brecht Van Lommel
e6a84eb1b5 Cycles: add light falloff node, with quadratic/linear/constant falloff and a
smoothing factor to reduce high values near the light.
http://wiki.blender.org/index.php/Doc:2.6/Manual/Render/Cycles/Nodes/More#Light_Falloff

Note that this was already possible to do manually with the Ray Length, but
this adds a convenient node for it. This commit also makes the mapping node
min/max option work, fixing #31348.
2012-05-07 20:24:38 +00:00
Dalai Felinto
e11b9df3f1 cycles-fisheye: fixed formula for dir to equisolid
second time I need a scond commit to get the equisolid formula right, shame on me ;)
the formula is:
r = 2 x focallength x sin (theta / 2)
2012-05-07 17:22:13 +00:00
Dalai Felinto
9a731205e9 direction to equisolid - final fix for [#31307] Cycles panoramic fisheye lens and vector pass problem 2012-05-07 16:51:55 +00:00
Brecht Van Lommel
022d12a721 Fix most of #31307: cycles panorama camera not working correct with speed
vectors and window texture coordinates. Only for Fisheye Equisolid it's
still not working correct yet. Patch from Dalai with modifications.
2012-05-07 10:53:09 +00:00
Brecht Van Lommel
4f1cdb3e42 Code cleanup: patch by Thomas to fix PassType values to be consecutive. 2012-05-06 15:19:36 +00:00
Brecht Van Lommel
c0331cfc09 Cycles: minor refactoring of fisheye code to fit code style. 2012-05-05 19:44:35 +00:00
Dalai Felinto
d710638c47 small fix for equisolid fisheye (cycles)
the FOV formular is: R = 2 * lens * sin (theta / 2)
in this case theta is fov/2 already, thus the fix
2012-05-04 16:29:41 +00:00
Dalai Felinto
d7fbe03a8a Fisheye Camera for Cycles
For sample images see:
http://www.dalaifelinto.com/?p=399 (equisolid)
http://www.dalaifelinto.com/?p=389 (equidistant)

The 'use_panorama' option is now part of a new Camera type: 'Panorama'.
Created two other panorama cameras:

- Equisolid: most of lens in the market simulate this lens - e.g. Nikon, Canon, ...)
             this works as a real lens up to an extent. The final result takes the
             sensor dimensions into account also.
             .:. to simulate a Nikon DX2S with a 10.5mm lens do:
                 sensor: 23.7 x 15.7
                 fisheye lens: 10.5
                 fisheye fov: 180
                 render dimensions: 4288 x 2848

- Equidistant: this is not a real lens model. Although the old equidistant lens simulate
               this lens. The result is always as a circular fisheye that takes the whole sensor
               (in other words, it doesn't take the sensor into consideration).
               This is perfect for fulldomes ;)

               For the UI we have 10 to 360 as soft values and 10 to 3600 as hard values (because we can).


Reference material:
http://www.hdrlabs.com/tutorials/downloads_files/HDRI%20for%20CGI.pdf
http://www.bobatkins.com/photography/technical/field_of_view.html

Note, this is not a real simulation of the light path through the lens.
The ideal solution would be this:
https://graphics.stanford.edu/wikis/cs348b-11/Assignment3
http://www.graphics.stanford.edu/papers/camera/


Thanks Brecht for the fix, suggestions and code review.
Kudos for the dome community for keeping me stimulated on the topic since 2009 ;)

Patch partly implemented during lab time at VisGraf, IMPA - Rio de Janeiro.
2012-05-04 16:20:51 +00:00
Brecht Van Lommel
f87682f631 Fix #31247: cycles crash after recent bugfix. 2012-05-02 18:14:59 +00:00
Brecht Van Lommel
d64661b507 Cycles: add Ray Length output to Light Path node. This gives the distance travelled
by the last light ray. One use case for this might be to do absorption.

Patch #31232 by Agustin benavidez, see this blog post for details:
http://agus3d.blogspot.com.ar/2012/05/blender-cycles-ray-length-node-output.html
2012-05-02 17:03:46 +00:00
Brecht Van Lommel
30c2abd323 Fixes for recent cycles and python/context commits. 2012-05-02 14:22:22 +00:00
Brecht Van Lommel
1e2afcddd3 Fix #31168: cycles mask layer should only affect objects for camera rays.
Fix: texture coordinate normal output was not correct, still changed under
object transform.
2012-05-02 09:33:45 +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
f7078dcbe2 Cycles: remove a few usages of double, to fix opencl warnings. 2012-04-30 10:03:13 +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
95432a2a2b Fix #31065: cycles render crash with large node groups, increased the stack
size now, this seems to work well after some testing.
Fix: material override not working on objects without a material assigned.
2012-04-23 18:15:38 +00:00
Brecht Van Lommel
93df58160e Fix #30966: cycles nan mesh vertices got set to (0, 0, 0), now remove them instead. 2012-04-16 08:35:21 +00:00
Brecht Van Lommel
117f2826b9 Fix #30955: cycles render issue with lights that have shadow casting disabled. 2012-04-15 15:35:09 +00:00
Thomas Dinges
ed47be3bf2 Cycles/OpenCL:
* Reverted the general activation of __KERNEL_SHADING__.
Better to handle this in the device file. This way each platform gets specifically what it is capable of atm. 

* Nvidia has Shading + Multi Closure
* AMD (Apple) has only Clay Render
* AMD (non Apple) has Basic Shading
2012-04-09 17:44:33 +00:00
Daniel Genrich
2e08b763c5 Bugfix [#30835]: Cycles doesn't work with AMD Juniper GPU, compiller throws errors. Thanks for reporting!
Problem: AMD does not like something like this.
float3 *a;
flaot b = a->x;

You need to circumvent this by using:
float3 *a;
float b = (*a).x;
2012-04-09 15:31:31 +00:00
Brecht Van Lommel
f7a0499f16 Cycles: fix nan's generated by glossy BSDF in some cases. 2012-04-06 16:08:14 +00:00
Thomas Dinges
d024238fb2 Cycles / OpenCL:
* Enable __KERNEL_SHADING__ per default for OpenCL.
This enables basic shading (color, emission, textures...) for AMD cards. 

You need the latest AMD catalyst driver in order to have this work.
2012-04-05 16:19:51 +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
e12adeb8c9 Fix #30551: cycles passes combining did not always give identical result combined
with antialiasing/defocus, now divide out color at the very end instead of for each
sample.
2012-03-28 12:18:12 +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
53dab9ec69 Cycles: fix for ColorRamp node alpha output. 2012-03-26 13:21:43 +00:00
Brecht Van Lommel
bbc3d820f4 Cycles: add ColorRamp node. 2012-03-26 12:45:14 +00:00
Brecht Van Lommel
b26d3f371a Fix #30603: cycles incorrect ray differentials when rendering with panorama
camera, causing bump map issues.
2012-03-20 19:32:12 +00:00
Brecht Van Lommel
8b4c1f729b Cycles: fix issue reported in IRC, rendering a material that mixes a transparent
and glass BSDF would give a different result with/without using light passes.
2012-03-20 16:16:17 +00:00
Brecht Van Lommel
9b8dae71a5 Cycles: support for environment texture "Mirror Ball" projection mode, next to
existing "Equirectangular". This projection is useful to create light probes
from a chrome ball placed in a real scene. It expects as input a photograph of
the chrome ball, cropped so the ball just fits inside the image boundaries.

Example setup with panorama camera and mixing two (poor quality) photographs
from different viewpoints to avoid stretching and hide the photographer:
http://www.pasteall.org/pic/28036
2012-03-08 19:52:58 +00:00
Brecht Van Lommel
9fba458a7f Cycles: float texture support. Due to GPU limitations there are now 95 byte,
and 5 float image textures. For CPU render this limit will be lifted later
on with image cache support. Patch by Mike Farnsworth.

Also changed color space option in image/environment texture node, to show
options Color and Non-Color Data, instead of sRGB and Linear, this is more
descriptive, and it was not really correct to equate Non-Color Data with
Linear.
2012-03-07 12:27:18 +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
4a90339519 Cycles: support for camera rendering an environment map with equirectangular
environment map, by enabling the Panorama option in the camera.

http://wiki.blender.org/index.php/Doc:2.6/Manual/Render/Cycles/Camera#Panorama

The focal length or sensor settings are not used, the UI can be tweaked still to
communicate this, also panorama should probably become a proper camera type like
perspective or ortho.
2012-02-28 16:44:54 +00:00
Campbell Barton
6ca7d82932 code cleanup: white space, spelling & ';;' end of lines. 2012-02-25 16:04:03 +00:00
Brecht Van Lommel
334416bdaf Cycles: fix cuda kernel not getting rebuilt correctly after changes, due to
refactoring that changed variable names, also fixed OpenCL compile issue with
advanced shading.
2012-02-23 15:10:10 +00:00
Thomas Dinges
f8c6f81271 Cycles:
* Remove obsolete comments in the Oren Nayar code.
2012-02-23 09:11:17 +00:00
Brecht Van Lommel
3eaa46e80d Cycles: improve the Oren-Nayar BSDF (roughness value for Diffuse), to avoid
undesired dark rings, and give more accurate lighting when the light is
behind the object. As a bonus, the code is simpler & faster.

Patch by Yasuhiro Fujii, detailed explanation here:
http://mimosa-pudica.net/improved-oren-nayar.html
2012-02-22 15:04:22 +00:00
Brecht Van Lommel
697270a024 Fix another padding error in cycles, to complete the previous bugfix. 2012-02-15 14:56:08 +00:00
Brecht Van Lommel
2e752dea2f Fix #30139: multi render layer not working with CUDA render, due to padding error
in render pass code.
2012-02-15 14:32:07 +00:00
Brecht Van Lommel
b6d12f11fe Fix #30004: cycles brightness/contrast node issues. The formula used did not work
very well for colors that can be outside of the 0.0..1.0 range, giving +/- infinity
results.

Now we just use a simple linear contrast factor as proposed by Paolo Sourvinos, and
clamp values to be >= 0, and also make the parameters work more in the 0..1 range
instead of the 0..100 range, to be more consistent with other nodes.
2012-02-08 17:09:30 +00:00
Brecht Van Lommel
4a427a441b Fix #30049: cycles noise texture producing nan values with some
texture coordinates, due to int overflow.

Also minor tweak in shader code to avoid copying uninitialized
values, should have no effect though because they were not used.
2012-02-07 17:32:01 +00:00
Brecht Van Lommel
21554f2df5 Fix #30011 & #30027: cycles division by zero evaluating BSDF with zero weights,
showed up as NaN on GPU render.
2012-01-31 15:59:30 +00:00
Brecht Van Lommel
87149fc4b6 Fix #30034: bug in multiple importance sampling + transparency, would
give slightly wrong lighting behind transparent objects.
2012-01-31 14:57:46 +00:00
Brecht Van Lommel
26d3b873d5 Fix #30009: cycles translucent BSDF + environment importance sampling not
working correct.
2012-01-30 18:34:01 +00:00