2017-06-15 41 views
0

目前,在three.js所3種包裝方式:three.js所:使質地零個外邊框

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對於紋理座標而言太大

所以我希望這樣會在邊界之外產生零,或者如果是不可能的我想能夠連續設置邊緣爲零。做這個的最好方式是什麼?

+2

我可能是誤會,但你不已經知道它是出界於1.3,然後可以測試它是否在邊界和返回/套0如果不是? – 2pha

回答

2

在着色器檢查的紋理座標

vec4 value = vec4(0); 
if (texcoord.x >= 0. || texcoord.x <= 1. ||  
    texcoord.y >= 0. || texcoord.y <= 1.) 
    value = texture2D(someSampler, texcoord); 
}