Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2011-09-16 17:14:02 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2011-09-16 17:14:02 +0400
commit66b1dfae89cc44953bd51c5da962cab437e76972 (patch)
treee7679b3e554fb4f1bb6f68775c8619bcde0da822 /intern/cycles/kernel/kernel_camera.h
parent0a5fcf3da3e82fd114095c8c2903d927f15ffc31 (diff)
Cycles: tweaks to properties and nodes
* Passes renamed to samples * Camera lens radius renamed to aperature size/blades/rotation * Glass and fresnel nodes input is now index of refraction * Glossy and velvet fresnel socket removed * Mix/add closure node renamed to mix/add shader node * Blend weight node added for shader mixing weights There is some version patching code for reading existing files, but it's not perfect, so shaders may work a bit different.
Diffstat (limited to 'intern/cycles/kernel/kernel_camera.h')
-rw-r--r--intern/cycles/kernel/kernel_camera.h26
1 files changed, 19 insertions, 7 deletions
diff --git a/intern/cycles/kernel/kernel_camera.h b/intern/cycles/kernel/kernel_camera.h
index 1f93394e078..c2828c20eee 100644
--- a/intern/cycles/kernel/kernel_camera.h
+++ b/intern/cycles/kernel/kernel_camera.h
@@ -20,6 +20,21 @@ CCL_NAMESPACE_BEGIN
/* Perspective Camera */
+__device float2 camera_sample_aperture(KernelGlobals *kg, float u, float v)
+{
+ float blades = kernel_data.cam.blades;
+
+ if(blades == 0.0f) {
+ /* sample disk */
+ return concentric_sample_disk(u, v);
+ }
+ else {
+ /* sample polygon */
+ float rotation = kernel_data.cam.bladesrotation;
+ return regular_polygon_sample(blades, rotation, u, v);
+ }
+}
+
__device void camera_sample_perspective(KernelGlobals *kg, float raster_x, float raster_y, float lens_u, float lens_v, Ray *ray)
{
/* create ray form raster position */
@@ -30,14 +45,11 @@ __device void camera_sample_perspective(KernelGlobals *kg, float raster_x, float
ray->D = Pcamera;
/* modify ray for depth of field */
- float lensradius = kernel_data.cam.lensradius;
-
- if(lensradius > 0.0f) {
- /* sample point on lens */
- float2 lensuv;
+ float aperturesize = kernel_data.cam.aperturesize;
- lensuv = concentric_sample_disk(lens_u, lens_v);
- lensuv *= lensradius;
+ if(aperturesize > 0.0f) {
+ /* sample point on aperture */
+ float2 lensuv = camera_sample_aperture(kg, lens_u, lens_v)*aperturesize;
/* compute point on plane of focus */
float ft = kernel_data.cam.focaldistance/ray->D.z;