2

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 座標の配列を頂点シェーダーに渡す必要がありますか? フラグメント シェーダーでこれらの計算を行う必要がありますか?

4

1 に答える 1

0

GPU を使用してそれらの間でジャンプする予定がある場合は、テクスチャをアトラス (1 つの画像としての画像の 2 次元配列) にまとめるとよいと思います。WebGL はボリューム テクスチャをサポートしていませんが、画像ごとにスライスを使用することをお勧めします。あなたのサブイメージの1つに。

于 2013-02-14T21:58:02.087 に答える