Commit: aed0f84b1476c5982018be2f40c9ccc5ea17a806
Author: Sergey Sharybin
Date:   Fri May 8 18:57:37 2015 +0500
Branches: cycles_kernel_split
https://developer.blender.org/rBaed0f84b1476c5982018be2f40c9ccc5ea17a806

Cycles kernel split: De-duplicate kernel_path_trace_setup()

Currently it is moved to a dedicated file which then can be extended further
with more functionality related on common path tracing routines for mega and
split kernels.

===================================================================

M       intern/cycles/kernel/CMakeLists.txt
M       intern/cycles/kernel/kernel_Background_BufferUpdate.cl
M       intern/cycles/kernel/kernel_DataInit.cl
M       intern/cycles/kernel/kernel_path.h
A       intern/cycles/kernel/kernel_path_common.h
M       intern/cycles/kernel/kernel_split.h

===================================================================

diff --git a/intern/cycles/kernel/CMakeLists.txt 
b/intern/cycles/kernel/CMakeLists.txt
index b2cef47..c6336c0 100644
--- a/intern/cycles/kernel/CMakeLists.txt
+++ b/intern/cycles/kernel/CMakeLists.txt
@@ -47,6 +47,7 @@ set(SRC_HEADERS
        kernel_montecarlo.h
        kernel_passes.h
        kernel_path.h
+       kernel_path_common.h
        kernel_path_state.h
        kernel_path_surface.h
        kernel_path_volume.h
diff --git a/intern/cycles/kernel/kernel_Background_BufferUpdate.cl 
b/intern/cycles/kernel/kernel_Background_BufferUpdate.cl
index 80ab291..d4ed895 100644
--- a/intern/cycles/kernel/kernel_Background_BufferUpdate.cl
+++ b/intern/cycles/kernel/kernel_Background_BufferUpdate.cl
@@ -16,31 +16,6 @@
 
 #include "kernel_split.h"
 
-ccl_device_inline void kernel_path_trace_setup(KernelGlobals *kg, ccl_global 
uint *rng_state, int sample, int x, int y, ccl_addr_space RNG *rng, 
ccl_addr_space Ray *ray)
-{
-       float filter_u;
-       float filter_v;
-
-       int num_samples = kernel_data.integrator.aa_samples;
-
-       path_rng_init(kg, rng_state, sample, num_samples, rng, x, y, &filter_u, 
&filter_v);
-
-       /* sample camera ray */
-       float lens_u = 0.0f, lens_v = 0.0f;
-
-       if(kernel_data.cam.aperturesize > 0.0f)
-               path_rng_2D(kg, rng, sample, num_samples, PRNG_LENS_U, &lens_u, 
&lens_v);
-
-       float time = 0.0f;
-
-#ifdef __CAMERA_MOTION__
-       if(kernel_data.cam.shuttertime != -1.0f)
-               time = path_rng_1D(kg, rng, sample, num_samples, PRNG_TIME);
-#endif
-
-       camera_sample(kg, x, y, filter_u, filter_v, lens_u, lens_v, time, ray);
-}
-
 /*
  * Note on kernel_ocl_path_trace_Background_BufferUpdate kernel.
  * This is the fourth kernel in the ray tracing logic, and the third
diff --git a/intern/cycles/kernel/kernel_DataInit.cl 
b/intern/cycles/kernel/kernel_DataInit.cl
index 44600e6..dbf9e62 100644
--- a/intern/cycles/kernel/kernel_DataInit.cl
+++ b/intern/cycles/kernel/kernel_DataInit.cl
@@ -16,32 +16,6 @@
 
 #include "kernel_split.h"
 
-ccl_device_inline void kernel_path_trace_setup(KernelGlobals *kg, ccl_global 
uint *rng_state, int sample, int x, int y, ccl_addr_space RNG *rng, 
ccl_addr_space Ray *ray)
-{
-       float filter_u;
-       float filter_v;
-
-       int num_samples = kernel_data.integrator.aa_samples;
-
-       path_rng_init(kg, rng_state, sample, num_samples, rng, x, y, &filter_u, 
&filter_v);
-
-       /* sample camera ray */
-
-       float lens_u = 0.0f, lens_v = 0.0f;
-
-       if(kernel_data.cam.aperturesize > 0.0f)
-               path_rng_2D(kg, rng, sample, num_samples, PRNG_LENS_U, &lens_u, 
&lens_v);
-
-       float time = 0.0f;
-
-#ifdef __CAMERA_MOTION__
-       if(kernel_data.cam.shuttertime != -1.0f)
-               time = path_rng_1D(kg, rng, sample, num_samples, PRNG_TIME);
-#endif
-
-       camera_sample(kg, x, y, filter_u, filter_v, lens_u, lens_v, time, ray);
-}
-
 /*
  * Note on kernel_ocl_path_trace_data_initialization kernel
  * This kernel Initializes structures needed in path-iteration kernels.
diff --git a/intern/cycles/kernel/kernel_path.h 
b/intern/cycles/kernel/kernel_path.h
index 0ba8f69..b9cba26 100644
--- a/intern/cycles/kernel/kernel_path.h
+++ b/intern/cycles/kernel/kernel_path.h
@@ -42,6 +42,7 @@
 #include "kernel_path_state.h"
 #include "kernel_shadow.h"
 #include "kernel_emission.h"
+#include "kernel_path_common.h"
 #include "kernel_path_surface.h"
 #include "kernel_path_volume.h"
 
@@ -1143,32 +1144,6 @@ ccl_device float4 
kernel_branched_path_integrate(KernelGlobals *kg, RNG *rng, in
 
 #endif
 
-ccl_device_inline void kernel_path_trace_setup(KernelGlobals *kg, ccl_global 
uint *rng_state, int sample, int x, int y, RNG *rng, Ray *ray)
-{
-       float filter_u;
-       float filter_v;
-
-       int num_samples = kernel_data.integrator.aa_samples;
-
-       path_rng_init(kg, rng_state, sample, num_samples, rng, x, y, &filter_u, 
&filter_v);
-
-       /* sample camera ray */
-
-       float lens_u = 0.0f, lens_v = 0.0f;
-
-       if(kernel_data.cam.aperturesize > 0.0f)
-               path_rng_2D(kg, rng, sample, num_samples, PRNG_LENS_U, &lens_u, 
&lens_v);
-
-       float time = 0.0f;
-
-#ifdef __CAMERA_MOTION__
-       if(kernel_data.cam.shuttertime != -1.0f)
-               time = path_rng_1D(kg, rng, sample, num_samples, PRNG_TIME);
-#endif
-
-       camera_sample(kg, x, y, filter_u, filter_v, lens_u, lens_v, time, ray);
-}
-
 ccl_device void kernel_path_trace(KernelGlobals *kg,
        ccl_global float *buffer, ccl_global uint *rng_state,
        int sample, int x, int y, int offset, int stride)
diff --git a/intern/cycles/kernel/kernel_path_common.h 
b/intern/cycles/kernel/kernel_path_common.h
new file mode 100644
index 0000000..1912dfa
--- /dev/null
+++ b/intern/cycles/kernel/kernel_path_common.h
@@ -0,0 +1,50 @@
+/*
+ * Copyright 2011-2015 Blender Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+CCL_NAMESPACE_BEGIN
+
+ccl_device_inline void kernel_path_trace_setup(KernelGlobals *kg,
+                                               ccl_global uint *rng_state,
+                                               int sample,
+                                               int x, int y,
+                                               ccl_addr_space RNG *rng,
+                                               ccl_addr_space Ray *ray)
+{
+       float filter_u;
+       float filter_v;
+
+       int num_samples = kernel_data.integrator.aa_samples;
+
+       path_rng_init(kg, rng_state, sample, num_samples, rng, x, y, &filter_u, 
&filter_v);
+
+       /* sample camera ray */
+
+       float lens_u = 0.0f, lens_v = 0.0f;
+
+       if(kernel_data.cam.aperturesize > 0.0f)
+               path_rng_2D(kg, rng, sample, num_samples, PRNG_LENS_U, &lens_u, 
&lens_v);
+
+       float time = 0.0f;
+
+#ifdef __CAMERA_MOTION__
+       if(kernel_data.cam.shuttertime != -1.0f)
+               time = path_rng_1D(kg, rng, sample, num_samples, PRNG_TIME);
+#endif
+
+       camera_sample(kg, x, y, filter_u, filter_v, lens_u, lens_v, time, ray);
+}
+
+CCL_NAMESPACE_END
diff --git a/intern/cycles/kernel/kernel_split.h 
b/intern/cycles/kernel/kernel_split.h
index c20fc52..eb386c2 100644
--- a/intern/cycles/kernel/kernel_split.h
+++ b/intern/cycles/kernel/kernel_split.h
@@ -73,6 +73,7 @@ ccl_device_inline void atomic_add_float(volatile ccl_global 
float *source, const
 #include "kernel_path_state.h"
 #include "kernel_shadow.h"
 #include "kernel_emission.h"
+#include "kernel_path_common.h"
 #include "kernel_path_surface.h"
 #include "kernel_path_volume.h"

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to