Blender V4.3
vertex_color.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
11 ccl_private float *stack,
12 uint layer_id,
13 uint color_offset,
14 uint alpha_offset)
15{
17 if (descriptor.offset != ATTR_STD_NOT_FOUND) {
19 float4 vertex_color = primitive_surface_attribute_float4(kg, sd, descriptor, NULL, NULL);
20 stack_store_float3(stack, color_offset, float4_to_float3(vertex_color));
21 stack_store_float(stack, alpha_offset, vertex_color.w);
22 }
23 else {
25 stack_store_float3(stack, color_offset, vertex_color);
26 stack_store_float(stack, alpha_offset, 1.0f);
27 }
28 }
29 else {
30 stack_store_float3(stack, color_offset, make_float3(0.0f, 0.0f, 0.0f));
31 stack_store_float(stack, alpha_offset, 0.0f);
32 }
33}
34
37 ccl_private float *stack,
38 uint layer_id,
39 uint color_offset,
40 uint alpha_offset)
41{
43 if (descriptor.offset != ATTR_STD_NOT_FOUND) {
45 float4 dx;
46 float4 vertex_color = primitive_surface_attribute_float4(kg, sd, descriptor, &dx, NULL);
47 vertex_color += dx;
48 stack_store_float3(stack, color_offset, float4_to_float3(vertex_color));
49 stack_store_float(stack, alpha_offset, vertex_color.w);
50 }
51 else {
52 float3 dx;
53 float3 vertex_color = primitive_surface_attribute_float3(kg, sd, descriptor, &dx, NULL);
54 vertex_color += dx;
55 stack_store_float3(stack, color_offset, vertex_color);
56 stack_store_float(stack, alpha_offset, 1.0f);
57 }
58 }
59 else {
60 stack_store_float3(stack, color_offset, make_float3(0.0f, 0.0f, 0.0f));
61 stack_store_float(stack, alpha_offset, 0.0f);
62 }
63}
64
67 ccl_private float *stack,
68 uint layer_id,
69 uint color_offset,
70 uint alpha_offset)
71{
73 if (descriptor.offset != ATTR_STD_NOT_FOUND) {
75 float4 dy;
76 float4 vertex_color = primitive_surface_attribute_float4(kg, sd, descriptor, NULL, &dy);
77 vertex_color += dy;
78 stack_store_float3(stack, color_offset, float4_to_float3(vertex_color));
79 stack_store_float(stack, alpha_offset, vertex_color.w);
80 }
81 else {
82 float3 dy;
83 float3 vertex_color = primitive_surface_attribute_float3(kg, sd, descriptor, NULL, &dy);
84 vertex_color += dy;
85 stack_store_float3(stack, color_offset, vertex_color);
86 stack_store_float(stack, alpha_offset, 1.0f);
87 }
88 }
89 else {
90 stack_store_float3(stack, color_offset, make_float3(0.0f, 0.0f, 0.0f));
91 stack_store_float(stack, alpha_offset, 0.0f);
92 }
93}
94
unsigned int uint
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)
#define NULL
ccl_device_inline void stack_store_float3(ccl_private float *stack, uint a, float3 f)
ccl_device_inline void stack_store_float(ccl_private float *stack, uint a, float f)
@ NODE_ATTR_RGBA
@ NODE_ATTR_FLOAT4
@ ATTR_STD_NOT_FOUND
ShaderData
descriptor
ccl_device_forceinline float3 primitive_surface_attribute_float3(KernelGlobals kg, ccl_private const ShaderData *sd, const AttributeDescriptor desc, ccl_private float3 *dx, ccl_private float3 *dy)
Definition primitive.h:84
ccl_device_forceinline float4 primitive_surface_attribute_float4(KernelGlobals kg, ccl_private const ShaderData *sd, const AttributeDescriptor desc, ccl_private float4 *dx, ccl_private float4 *dy)
Definition primitive.h:115
static bool find_attribute(const std::string &attributes, const char *search_attribute)
ccl_device_inline float3 float4_to_float3(const float4 a)
Definition util/math.h:535
ccl_device_noinline void svm_node_vertex_color_bump_dy(KernelGlobals kg, ccl_private ShaderData *sd, ccl_private float *stack, uint layer_id, uint color_offset, uint alpha_offset)
CCL_NAMESPACE_BEGIN ccl_device_noinline void svm_node_vertex_color(KernelGlobals kg, ccl_private ShaderData *sd, ccl_private float *stack, uint layer_id, uint color_offset, uint alpha_offset)
Definition vertex_color.h:9
ccl_device_noinline void svm_node_vertex_color_bump_dx(KernelGlobals kg, ccl_private ShaderData *sd, ccl_private float *stack, uint layer_id, uint color_offset, uint alpha_offset)