目前在three.js中有3种包装模式:
THREE.RepeatWrapping
THREE.ClampToEdgeWrapping
THREE.MirroredRepeatWrapping
示例:
var texture = new THREE.TextureLoader().load( "textures/water.jpg" );
texture.wrapS = THREE.RepeatWrapping;
texture.wrapT = THREE.RepeatWrapping;
我在着色器中使用纹理来进行gpgpu计算,为了我的目的,我希望纹理在其边界之外为零。例如,如果使用ClampToEdge,则在纹理边界外查找值将产生边界内最近像素的颜色。在坐标(1.3,.5)处查找值将得到(1.,.5)的颜色,因为1.3对于纹理坐标来说太大了
所以我希望它在边界之外产生零,或者如果不可能,我希望能够连续地将边缘设置为零。这样做的最佳方式是什么?
答案 0 :(得分:2)
在着色器中检查纹理坐标
vec4 value = vec4(0);
if (texcoord.x >= 0. || texcoord.x <= 1. ||
texcoord.y >= 0. || texcoord.y <= 1.)
value = texture2D(someSampler, texcoord);
}