1
所以我正在使用WebGL中的GPU着色器進行計算 - 在代碼的JavaScript部分中,我將預先計算的值放到數組上作爲紋理髮送,以便在片段shader-WebGL 1D紋理 - 着色器值捕獲
var count=0;
var table = [];
for (var y = 0.1; y<1; y+=.01) {
for (var x = 0.1; x<1; x+=.01) {
var u = x;
var u2 = y;
u += u2 * 0.003921568627451;
u *= 4.0;
var sig = 1/(Math.exp(2.0 *(u-3)) + 1);
table.push(Math.floor(sig*255));
//table.push(255);
table.push(0);
table.push(0);
table.push(0);
count+=4;
console.log(Math.floor(sig*255)+"");
console.log(0+"");
console.log(0+"");
console.log(0+"");
}
}
//alert(count);
//alert(table[101]);
texturetab = gl.createTexture();
gl.bindTexture(gl.TEXTURE_2D, texturetab);
gl.pixelStorei(gl.UNPACK_ALIGNMENT, 1);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 100, 100, 0,
gl.RGBA, gl.UNSIGNED_BYTE, new Uint8Array(table));
//
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
gl.uniform1i(gl.getUniformLocation(prog, "uTabSamp"), 2);
但是當我「趕」上着色器的紋理值,計算作爲如果只是閱讀0-24值它不改變,因爲它應─ (哪裏片段該值在片段着色器上被捕獲):
sigmoid = (texture2D(uTabSamp, vec2(floor(u*100.+.5), floor(u2*100.+.5))).r)/255.;
float hfunc = sigmoid * u * u;
float ffunc = -u +(a - pow(v*nb,m))*hfunc ;
看到WebGL難以閱讀,我該如何解決這個問題?
gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.NEAREST); gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.NEAREST); gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE); gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE); 像這樣? – Skorpius
的確如此。 –