diff options
Diffstat (limited to 'intern/cycles/kernel/kernels/cpu/kernel_cpu_impl.h')
-rw-r--r-- | intern/cycles/kernel/kernels/cpu/kernel_cpu_impl.h | 131 |
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 |