shader技巧(持续更新)
-
数学函数:
abs():绝对值函数。
acos():反余弦函数。
asin():反正弦函数。
atan():反正切函数。
ceil():向上取整函数。
cos():余弦函数。
exp():指数函数。
floor():向下取整函数。
frac():小数部分函数,保证数值在0-1之间。
log():自然对数函数。
max():最大值函数。
min():最小值函数。
pow():幂函数。
sin():正弦函数。
sqrt():平方根函数。
tan():正切函数。
step(a,b):阈值函数,a>b=0,a<b=1
smoothstep(a,b,x):平滑插值,(x-a)/(b-a) -
向量
cross(vec2,vec2):向量叉积函数。
dot(vec2,vec2):向量点积函数。
distance(vec2,vec2):距离函数,绘制的时候线条宽度需要用到distance。
length(vec2):向量长度函数。 -
几何函数:
normalize(vec3):向量归一化函数。
reflect(vec3):向量反射函数。
rotate(vec3):向量旋转函数。
scale(vec3):向量缩放函数。
translate(vec3):向量平移函数。 -
纹理函数:
texture2D(sample,vec2):2D 纹理采样函数,输入sample和vec2,输出某个点的vec4向量
textureCube(sample,vec2):立方体纹理采样函数,输入sample和vec2,输出某个点vec4向量 -
高度计算
图像转为灰度图,灰度值表示点的高度
参考:https://search.bilibili.com/article?vt=12550451&keyword=shader%E7%AE%97%E6%B3%95 -
随机函数,输入uv
float random (vec2 st) {
return fract(sin(dot(st,vec2(12.)))*100000); //sin*大数据即可
}
void main(){
vec2 uv = gl_FragCoord.xy/iResolution.xy;
gl_FragColor = vec4(vec3(random(uv)),1.0);
}
c

参考:<>
