mo49
9/9/2019 - 9:05 AM

GLSLBasicBuiltInFunctions.md

GLSLビルトイン関数一覧

cf.

step(edge,x)

return x >= edge ? 1.0 : 0.0

edge: 閾値
x: チェックされる値

e.g.
step(3.0, 5.0) -> 1.0
step(3.0, 3.0) -> 1.0
step(3.0, 1.0) -> 0.0

cf.

smoothstep(edge0,edge1,x)

エルミート補間

t = clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0);
return t * t * (3.0 - 2.0 * t);

edge0: 下端の閾値
edge1: 上端の閾値
x: チェックされる値

e.g.
smoothstep(0.0, 5.0, -1.0) -> 0.0
smoothstep(0.0, 5.0, 3.0) -> 0.648
smoothstep(0.0, 5.0, 10.0) -> 5.0

cf.

mix(x,y,a)

線形補間

return x*(1-a)+y*a

x: 値A
y: 値B
a: 値Aと値Bを混ぜる割合(0.0~1.0)

e.g.
mix(1.0, 2.0, 0.5) -> 1.5

cf.

clamp(x,minVal,maxVal)

与えられた数値を一定範囲内に収める

return min(max(x, minVal), maxVal)

e.g.
clamp(0.0, 1.0, 3.0) -> 1.0
clamp(2.0, 1.0, 3.0) -> 2.0
clamp(5.0, 1.0, 3.0) -> 3.0

cf.

mod(x,y)

除算の剰余(モジュロ)

return x - y * floor(x/y)

x: 除算される数
y: 除算する数

e.g.
mod(1.0, 1.0) -> 0.0
mod(1.5, 1.0) -> 0.5
mod(1.99, 1.0) -> 0.99
mod(2.0, 1.0) -> 0.0

cf.