16 ビット画像の z スタックを JavaScript (つまり、画像の配列) に読み込んでいます。私は webgl シェーダーが初めてで、配列をループする方法に問題があります。
画像の可変長リスト全体 (数百まで) を GPU に配置したいと考えています。次に、z スタックが変更されるたびに、GPU は新しい画像をレンダリングします。現在、私は以下を持っています:
<script id="shader-vertex" type="x-shader/x-vertex">
attribute float a_fluxes;
varying float v_flux;
attribute vec2 a_position;
uniform vec2 u_resolution;
void main() {
vec2 zeroToOne = a_position / u_resolution;
gl_Position = vec4((zeroToOne * 2.0 - 1.0) * vec2(1, -1), 0, 1);
v_flux = a_fluxes/256.;
}
</script>
<script id="shader-fragment" type="x-shader/x-fragment">
precision highp float;
varying float v_flux;
void main() {
gl_FragColor = vec4(v_flux, v_flux, v_flux, 1);
}
</script>
画像 (x、y、および z) の 3 次元配列は、a_fluxes に入る 1 次元リストに変換されることになっています。
z 画像の 1 つの x 次元と y 次元を反復するにはどうすればよいですか? ループを使用して頂点シェーダーを反復処理する必要がありますか?それとも、ピクセルの可能なすべての x、y 座標の配列を頂点シェーダーに渡す必要がありますか? フラグメント シェーダーでこれらの計算を行う必要がありますか?