sample
sample
将一个自定义的采样算法(如模糊、扭曲)封装成一个可复用的节点,用于创建自定义的“采样器”。
核心优势
它允许你将复杂的采样逻辑(如多重纹理拾取、程序化扭曲)封装起来,创建可复用、可组合的自定义采样节点,极大地简化了节点图并提高了代码的模块化程度。
常见用途
自定义纹理滤镜(如模糊)
为程序化效果实现域扭曲(Domain Warping)
实现三平面贴图(Tri-Planar Mapping)
如何调整
通过修改创建它时传入的回调函数来调整。你可以改变函数内部的算法(如增加采样点数以增强模糊效果)、更改数学运算(如将颜色相加改为相乘),或引入动态节点(如 `timer`)来创建动画效果。
代码示例
1// 创建一个自定义的4点模糊采样器
2const blurSampler = sample( ( uvNode ) => {
3
4 const c1 = textureNode.uv( uvNode.add( vec2( -0.01, -0.01 ) ) );
5 const c2 = textureNode.uv( uvNode.add( vec2( 0.01, -0.01 ) ) );
6 const c3 = textureNode.uv( uvNode.add( vec2( -0.01, 0.01 ) ) );
7 const c4 = textureNode.uv( uvNode.add( vec2( 0.01, 0.01 ) ) );
8
9 // 返回平均颜色
10 return add( c1, c2, c3, c4 ).mul( 0.25 );
11
12} );