Blender V4.3
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{
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{
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{
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
Group Output data from inside of a node group A color picker Mix two input colors RGB to Convert a color s luminance to a grayscale value Generate a normal vector and a dot product Brightness Control the brightness and contrast of the input color Vector Map input vector components with curves Camera Retrieve information about the camera and how it relates to the current shading point s position Clamp a value between a minimum and a maximum Vector Perform vector math operation Invert Invert a color
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