Blender V4.5
node_hash.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#include "stdcycles.h"
6#include "vector2.h"
7#include "vector4.h"
8
9#define vector3 point
10
11/* **** Hash a float or vector[234] into a float [0, 1] **** */
12
13float hash_float_to_float(float k)
14{
15 return hashnoise(k);
16}
17
18float hash_vector2_to_float(vector2 k)
19{
20 return hashnoise(k.x, k.y);
21}
22
24{
25 return hashnoise(k);
26}
27
28float hash_vector4_to_float(vector4 k)
29{
30 return hashnoise(vector3(k.x, k.y, k.z), k.w);
31}
32
33/* **** Hash a vector[234] into a vector[234] [0, 1] **** */
34
35vector2 hash_vector2_to_vector2(vector2 k)
36{
37 return vector2(hash_vector2_to_float(k), hash_vector3_to_float(vector3(k.x, k.y, 1.0)));
38}
39
41{
43 hash_vector4_to_float(vector4(k[0], k[1], k[2], 1.0)),
44 hash_vector4_to_float(vector4(k[0], k[1], k[2], 2.0)));
45}
46
47vector4 hash_vector4_to_vector4(vector4 k)
48{
49 return vector4(hash_vector4_to_float(k),
50 hash_vector4_to_float(vector4(k.w, k.x, k.y, k.z)),
51 hash_vector4_to_float(vector4(k.z, k.w, k.x, k.y)),
52 hash_vector4_to_float(vector4(k.y, k.z, k.w, k.x)));
53}
54
55/* **** Hash a float or a vec[234] into a color [0, 1] **** */
56
57color hash_float_to_color(float k)
58{
59 return color(hash_float_to_float(k),
60 hash_vector2_to_float(vector2(k, 1.0)),
61 hash_vector2_to_float(vector2(k, 2.0)));
62}
63
64color hash_vector2_to_color(vector2 k)
65{
66 return color(hash_vector2_to_float(k),
67 hash_vector3_to_float(vector3(k.x, k.y, 1.0)),
68 hash_vector3_to_float(vector3(k.x, k.y, 2.0)));
69}
70
72{
73 return color(hash_vector3_to_float(k),
74 hash_vector4_to_float(vector4(k[0], k[1], k[2], 1.0)),
75 hash_vector4_to_float(vector4(k[0], k[1], k[2], 2.0)));
76}
77
78color hash_vector4_to_color(vector4 k)
79{
80 return color(hash_vector4_to_float(k),
81 hash_vector4_to_float(vector4(k.z, k.x, k.w, k.y)),
82 hash_vector4_to_float(vector4(k.w, k.z, k.y, k.x)));
83}
84
85/* **** Hash a float or a vec[234] into a vector3 [0, 1] **** */
86
88{
90 hash_vector2_to_float(vector2(k, 1.0)),
91 hash_vector2_to_float(vector2(k, 2.0)));
92}
93
95{
97 hash_vector3_to_float(vector3(k.x, k.y, 1.0)),
98 hash_vector3_to_float(vector3(k.x, k.y, 2.0)));
99}
100
102{
104 hash_vector4_to_float(vector4(k.z, k.x, k.w, k.y)),
105 hash_vector4_to_float(vector4(k.w, k.z, k.y, k.x)));
106}
107
108/* Hashing float or vector[234] into vector2 of components in range [0, 1]. */
109
110vector2 hash_float_to_vector2(float k)
111{
112 return vector2(hash_float_to_float(k), hash_vector2_to_float(vector2(k, 1.0)));
113}
114
116{
117 return vector2(hash_vector3_to_float(vector3(k.x, k.y, k.z)),
118 hash_vector3_to_float(vector3(k.z, k.x, k.y)));
119}
120
121vector2 hash_vector4_to_vector2(vector4 k)
122{
123 return vector2(hash_vector4_to_float(vector4(k.x, k.y, k.z, k.w)),
124 hash_vector4_to_float(vector4(k.z, k.x, k.w, k.y)));
125}
126
127#undef vector3
#define vector3
color hash_vector3_to_color(vector3 k)
Definition node_hash.h:71
vector3 hash_float_to_vector3(float k)
Definition node_hash.h:87
float hash_vector4_to_float(vector4 k)
Definition node_hash.h:28
float hash_vector3_to_float(vector3 k)
Definition node_hash.h:23
vector2 hash_float_to_vector2(float k)
Definition node_hash.h:110
color hash_float_to_color(float k)
Definition node_hash.h:57
color hash_vector4_to_color(vector4 k)
Definition node_hash.h:78
float hash_vector2_to_float(vector2 k)
Definition node_hash.h:18
vector2 hash_vector3_to_vector2(vector3 k)
Definition node_hash.h:115
color hash_vector2_to_color(vector2 k)
Definition node_hash.h:64
#define vector3
Definition node_hash.h:9
vector2 hash_vector2_to_vector2(vector2 k)
Definition node_hash.h:35
vector4 hash_vector4_to_vector4(vector4 k)
Definition node_hash.h:47
float hash_float_to_float(float k)
Definition node_hash.h:13
vector3 hash_vector2_to_vector3(vector2 k)
Definition node_hash.h:94
vector3 hash_vector4_to_vector3(vector4 k)
Definition node_hash.h:101
vector3 hash_vector3_to_vector3(vector3 k)
Definition node_hash.h:40
vector2 hash_vector4_to_vector2(vector4 k)
Definition node_hash.h:121