Blender  V3.3
convert.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: Apache-2.0
2  * Copyright 2011-2022 Blender Foundation */
3 
4 #pragma once
5 
7 
8 /* Conversion Nodes */
9 
12  ccl_private float *stack,
13  uint type,
14  uint from,
15  uint to)
16 {
17  switch (type) {
18  case NODE_CONVERT_FI: {
19  float f = stack_load_float(stack, from);
20  stack_store_int(stack, to, float_to_int(f));
21  break;
22  }
23  case NODE_CONVERT_FV: {
24  float f = stack_load_float(stack, from);
25  stack_store_float3(stack, to, make_float3(f, f, f));
26  break;
27  }
28  case NODE_CONVERT_CF: {
29  float3 f = stack_load_float3(stack, from);
30  float g = linear_rgb_to_gray(kg, f);
31  stack_store_float(stack, to, g);
32  break;
33  }
34  case NODE_CONVERT_CI: {
35  float3 f = stack_load_float3(stack, from);
36  int i = (int)linear_rgb_to_gray(kg, f);
37  stack_store_int(stack, to, i);
38  break;
39  }
40  case NODE_CONVERT_VF: {
41  float3 f = stack_load_float3(stack, from);
42  float g = average(f);
43  stack_store_float(stack, to, g);
44  break;
45  }
46  case NODE_CONVERT_VI: {
47  float3 f = stack_load_float3(stack, from);
48  int i = (int)average(f);
49  stack_store_int(stack, to, i);
50  break;
51  }
52  case NODE_CONVERT_IF: {
53  float f = (float)stack_load_int(stack, from);
54  stack_store_float(stack, to, f);
55  break;
56  }
57  case NODE_CONVERT_IV: {
58  float f = (float)stack_load_int(stack, from);
59  stack_store_float3(stack, to, make_float3(f, f, f));
60  break;
61  }
62  }
63 }
64 
typedef float(TangentPoint)[2]
unsigned int uint
Definition: BLI_sys_types.h:67
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
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:10
#define ccl_private
Definition: cuda/compat.h:48
#define ccl_device_noinline
Definition: cuda/compat.h:40
#define CCL_NAMESPACE_END
Definition: cuda/compat.h:9
StackEntry * from
const KernelGlobalsCPU *ccl_restrict KernelGlobals
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
Definition: kernel/types.h:925
ccl_device float linear_rgb_to_gray(KernelGlobals kg, float3 c)
ccl_device_inline float average(const float2 &a)
Definition: math_float2.h:170
#define make_float3(x, y, z)
Definition: metal/compat.h:204
static const pxr::TfToken g("g", pxr::TfToken::Immortal)
ccl_device_inline int float_to_int(float f)
Definition: util/math.h:410