Blender V4.3
sepcomb_vector.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/* Vector combine / separate, used for the RGB and XYZ nodes */
10
12 ccl_private float *stack,
13 uint in_offset,
14 uint vector_index,
15 uint out_offset)
16{
17 float vector = stack_load_float(stack, in_offset);
18
19 if (stack_valid(out_offset)) {
20 stack_store_float(stack, out_offset + vector_index, vector);
21 }
22}
23
25 ccl_private float *stack,
26 uint ivector_offset,
27 uint vector_index,
28 uint out_offset)
29{
30 float3 vector = stack_load_float3(stack, ivector_offset);
31
32 if (stack_valid(out_offset)) {
33 if (vector_index == 0) {
34 stack_store_float(stack, out_offset, vector.x);
35 }
36 else if (vector_index == 1) {
37 stack_store_float(stack, out_offset, vector.y);
38 }
39 else {
40 stack_store_float(stack, out_offset, vector.z);
41 }
42 }
43}
44
unsigned int uint
#define ccl_device
#define ccl_private
#define CCL_NAMESPACE_END
CCL_NAMESPACE_BEGIN ccl_device_inline float3 stack_load_float3(ccl_private float *stack, uint a)
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)
ccl_device_inline bool stack_valid(uint a)
ShaderData
CCL_NAMESPACE_BEGIN ccl_device void svm_node_combine_vector(ccl_private ShaderData *sd, ccl_private float *stack, uint in_offset, uint vector_index, uint out_offset)
ccl_device void svm_node_separate_vector(ccl_private ShaderData *sd, ccl_private float *stack, uint ivector_offset, uint vector_index, uint out_offset)