rand
rand
一个确定性的伪随机数生成器,用于在着色器中创建噪点、颗粒等程序化细节,而无需使用纹理贴图。
核心优势
以程序化的方式为材质添加丰富的视觉细节(如颗粒、斑点、图案),从而减少对纹理文件的依赖,节省显存和网络请求。
常见用途
模拟电影胶片颗粒或噪点
程序化生成星空或雨滴
为木纹、大理石等程序化纹理增加不规则性
使用抖动(Dithering)技术平滑颜色渐变
如何调整
核心调整方式是操控作为输入的 UV 坐标。通过乘以一个系数(如 `uv().mul(10)`)可以改变图案的大小和密度;通过加上一个随时间变化的值(如 `uv().add(timer())`)可以使静态噪点动起来;通过 `step()` 或 `floor()` 函数处理其输出,可以将平滑的灰度噪点转为高对比度的图案。
代码示例
1// 将灰度噪点变为对比强烈的黑白点
2const highContrastNoise = step( 0.5, rand( uv().mul( 20 ) ) );