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:
Diffstat (limited to 'intern/cycles/kernel/kernels/cpu/kernel_cpu_impl.h')
-rw-r--r--intern/cycles/kernel/kernels/cpu/kernel_cpu_impl.h131
1 files changed, 131 insertions, 0 deletions
diff --git a/intern/cycles/kernel/kernels/cpu/kernel_cpu_impl.h b/intern/cycles/kernel/kernels/cpu/kernel_cpu_impl.h
new file mode 100644
index 00000000000..1454f925ab9
--- /dev/null
+++ b/intern/cycles/kernel/kernels/cpu/kernel_cpu_impl.h
@@ -0,0 +1,131 @@
+/*
+ * Copyright 2011-2013 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.
+ */
+
+/* Templated common implementation part of all CPU kernels.
+ *
+ * The idea is that particular .cpp files sets needed optimization flags and
+ * simply includes this file without worry of copying actual implementation over.
+ */
+
+#include "kernel_compat_cpu.h"
+#include "kernel_math.h"
+#include "kernel_types.h"
+#include "kernel_globals.h"
+#include "kernel_film.h"
+#include "kernel_path.h"
+#include "kernel_path_branched.h"
+#include "kernel_bake.h"
+
+CCL_NAMESPACE_BEGIN
+
+/* Path Tracing */
+
+void KERNEL_FUNCTION_FULL_NAME(path_trace)(KernelGlobals *kg,
+ float *buffer,
+ unsigned int *rng_state,
+ int sample,
+ int x, int y,
+ int offset,
+ int stride)
+{
+#ifdef __BRANCHED_PATH__
+ if(kernel_data.integrator.branched) {
+ kernel_branched_path_trace(kg,
+ buffer,
+ rng_state,
+ sample,
+ x, y,
+ offset,
+ stride);
+ }
+ else
+#endif
+ {
+ kernel_path_trace(kg, buffer, rng_state, sample, x, y, offset, stride);
+ }
+}
+
+/* Film */
+
+void KERNEL_FUNCTION_FULL_NAME(convert_to_byte)(KernelGlobals *kg,
+ uchar4 *rgba,
+ float *buffer,
+ float sample_scale,
+ int x, int y,
+ int offset,
+ int stride)
+{
+ kernel_film_convert_to_byte(kg,
+ rgba,
+ buffer,
+ sample_scale,
+ x, y,
+ offset,
+ stride);
+}
+
+void KERNEL_FUNCTION_FULL_NAME(convert_to_half_float)(KernelGlobals *kg,
+ uchar4 *rgba,
+ float *buffer,
+ float sample_scale,
+ int x, int y,
+ int offset,
+ int stride)
+{
+ kernel_film_convert_to_half_float(kg,
+ rgba,
+ buffer,
+ sample_scale,
+ x, y,
+ offset,
+ stride);
+}
+
+/* Shader Evaluate */
+
+void KERNEL_FUNCTION_FULL_NAME(shader)(KernelGlobals *kg,
+ uint4 *input,
+ float4 *output,
+ float *output_luma,
+ int type,
+ int filter,
+ int i,
+ int offset,
+ int sample)
+{
+ if(type >= SHADER_EVAL_BAKE) {
+ kernel_assert(output_luma == NULL);
+ kernel_bake_evaluate(kg,
+ input,
+ output,
+ (ShaderEvalType)type,
+ filter,
+ i,
+ offset,
+ sample);
+ }
+ else {
+ kernel_shader_evaluate(kg,
+ input,
+ output,
+ output_luma,
+ (ShaderEvalType)type,
+ i,
+ sample);
+ }
+}
+
+CCL_NAMESPACE_END