The Book of Shaders - Generative designs - Random[1] 学习笔记.
1. Random
R
a
n
d
o
m
(
x
)
=
f
r
a
c
t
(
s
i
n
(
x
)
∗
6331.346237
)
Random(x)=fract(sin(x)∗6331.346237)
Random(x)=fract(sin(x)∗6331.346237)
2. Random 2D
通过向量点积将二维向量映射为一维浮点数, 然后得到二维的随机函数 :
R
a
n
d
o
m
2
D
(
c
o
o
r
d
)
=
R
a
n
d
o
m
(
d
o
t
(
c
o
o
r
d
.
x
y
,
v
e
c
2
(
12.9898
,
78.233
)
)
)
Random2D(coord)=Random(dot(coord.xy,vec2(12.9898,78.233)))
Random2D(coord)=Random(dot(coord.xy,vec2(12.9898,78.233)))
3. 网格化
在调用 Random2D 前, 将 floor 函数应用于坐标.
R
a
n
d
o
m
G
r
i
d
2
D
(
c
o
o
r
d
)
=
R
a
n
d
o
m
(
f
l
o
o
r
(
c
o
o
r
d
∗
10.0
)
)
RandomGrid2D(coord)=Random(floor(coord∗10.0))
RandomGrid2D(coord)=Random(floor(coord∗10.0))
参考文献
[1] Patricio Gonzalez Vivo, Jen Lowe. The Book of Shaders. Retrieved Jan. 8, 2019, from https://thebookofshaders.com/10/?lan=ch