Blender V4.3
mapping_util.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
10svm_mapping(NodeMappingType type, float3 vector, float3 location, float3 rotation, float3 scale)
11{
12 Transform rotationTransform = euler_to_transform(rotation);
13 switch (type) {
15 return transform_direction(&rotationTransform, (vector * scale)) + location;
17 return safe_divide(transform_direction_transposed(&rotationTransform, (vector - location)),
18 scale);
20 return transform_direction(&rotationTransform, (vector * scale));
22 return safe_normalize(transform_direction(&rotationTransform, safe_divide(vector, scale)));
23 default:
24 return make_float3(0.0f, 0.0f, 0.0f);
25 }
26}
27
MINLINE float safe_divide(float a, float b)
@ NODE_MAPPING_TYPE_POINT
@ NODE_MAPPING_TYPE_VECTOR
@ NODE_MAPPING_TYPE_TEXTURE
@ NODE_MAPPING_TYPE_NORMAL
#define ccl_device
#define CCL_NAMESPACE_END
ccl_device_forceinline float3 make_float3(const float x, const float y, const float z)
NodeMappingType
CCL_NAMESPACE_BEGIN ccl_device float3 svm_mapping(NodeMappingType type, float3 vector, float3 location, float3 rotation, float3 scale)
ccl_device_inline float2 safe_normalize(const float2 a)
ccl_device_inline Transform euler_to_transform(const float3 euler)
Definition transform.h:175
ccl_device_inline float3 transform_direction(ccl_private const Transform *t, const float3 a)
Definition transform.h:94
ccl_device_inline float3 transform_direction_transposed(ccl_private const Transform *t, const float3 a)
Definition transform.h:123