Blender V4.3
convert.h
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
2 *
3 * SPDX-License-Identifier: Apache-2.0 */
4
5#pragma once
6
8
9/* Conversion Nodes */
10
13 ccl_private float *stack,
14 uint type,
15 uint from,
16 uint to)
17{
18 switch (type) {
19 case NODE_CONVERT_FI: {
20 float f = stack_load_float(stack, from);
21 stack_store_int(stack, to, float_to_int(f));
22 break;
23 }
24 case NODE_CONVERT_FV: {
25 float f = stack_load_float(stack, from);
26 stack_store_float3(stack, to, make_float3(f, f, f));
27 break;
28 }
29 case NODE_CONVERT_CF: {
30 float3 f = stack_load_float3(stack, from);
31 float g = linear_rgb_to_gray(kg, f);
32 stack_store_float(stack, to, g);
33 break;
34 }
35 case NODE_CONVERT_CI: {
36 float3 f = stack_load_float3(stack, from);
37 int i = (int)linear_rgb_to_gray(kg, f);
38 stack_store_int(stack, to, i);
39 break;
40 }
41 case NODE_CONVERT_VF: {
42 float3 f = stack_load_float3(stack, from);
43 float g = average(f);
44 stack_store_float(stack, to, g);
45 break;
46 }
47 case NODE_CONVERT_VI: {
48 float3 f = stack_load_float3(stack, from);
49 int i = (int)average(f);
50 stack_store_int(stack, to, i);
51 break;
52 }
53 case NODE_CONVERT_IF: {
54 float f = (float)stack_load_int(stack, from);
55 stack_store_float(stack, to, f);
56 break;
57 }
58 case NODE_CONVERT_IV: {
59 float f = (float)stack_load_int(stack, from);
60 stack_store_float3(stack, to, make_float3(f, f, f));
61 break;
62 }
63 }
64}
65
unsigned int uint
CCL_NAMESPACE_BEGIN ccl_device_noinline void svm_node_convert(KernelGlobals kg, ccl_private ShaderData *sd, ccl_private float *stack, uint type, uint from, uint to)
Definition convert.h:11
const KernelGlobalsCPU *ccl_restrict KernelGlobals
#define ccl_private
#define ccl_device_noinline
#define CCL_NAMESPACE_END
ccl_device_forceinline float3 make_float3(const float x, const float y, const float z)
draw_view in_light_buf[] float
draw_view push_constant(Type::INT, "radiance_src") .push_constant(Type capture_info_buf storage_buf(1, Qualifier::READ, "ObjectBounds", "bounds_buf[]") .push_constant(Type draw_view int
ccl_device_inline void stack_store_float3(ccl_private float *stack, uint a, float3 f)
ccl_device_inline int stack_load_int(ccl_private float *stack, uint a)
CCL_NAMESPACE_BEGIN ccl_device_inline float3 stack_load_float3(ccl_private float *stack, uint a)
ccl_device_inline void stack_store_int(ccl_private float *stack, uint a, int i)
ccl_device_inline void stack_store_float(ccl_private float *stack, uint a, float f)
ccl_device_inline float stack_load_float(ccl_private float *stack, uint a)
@ NODE_CONVERT_IF
@ NODE_CONVERT_CI
@ NODE_CONVERT_CF
@ NODE_CONVERT_VF
@ NODE_CONVERT_VI
@ NODE_CONVERT_FI
@ NODE_CONVERT_IV
@ NODE_CONVERT_FV
ShaderData
ccl_device float linear_rgb_to_gray(KernelGlobals kg, float3 c)
ccl_device_inline float average(const float2 a)
ccl_device_inline int float_to_int(float f)
Definition util/math.h:424