0

別のオブジェクトを囲む透明なオブジェクトのケースをサポートするために、WebGL を使用して透明性の戦略を練ろうとしています。

http://learningwebgl.com/blog/?p=859で説明されているように、概念的には

  1. 背景をレンダリング
  2. ブレンドを有効にして深度テストを無効にする
  3. 前景をレンダリング

私はここでは少し世間知らずで、経験豊富なグラフィックスのプロが私を正してくれることに感謝しています。伝統的に (固定関数パイプラインを使用して)、これらのオブジェクトを面のリストに分解し、それらを深さで並べ替えてから、面ごとにブレンド/深さを有効/無効にしながら遠から近の順序でレンダリングするとします。

しかし、この場合、ジオメトリ全体をモノリシック VBO として GPU にロードする WebGL を使用して透過性を実現するにはどうすればよいでしょうか?

技術的なヒントやリンクはありますか?

乾杯、リンジー

4

2 に答える 2

0

私の知る限り、囲んでいるモデルを個別の VBO であるセクションに分割し、セクションを深度ソートする必要があります。セクションは個々の面である必要はありません。それぞれが囲まれたオブジェクトの前後に同時に存在しないように十分に小さくする必要があります。

Chiguireitor が指摘するように、不透明なものは何でも最初に描画できますが、透明性はソートする必要があります (または、厳密に加法的または減法的ブレンドを使用する必要があります)。

于 2012-04-09T21:16:50.853 に答える
0

私は専門家ではありませんが、最初にすべての不透明なモデルをレンダリングし (起動するには、アルファをサポートしていないシェーダーを使用)、透明なモデルを (透明度が有効なシェーダーを使用して) レンダリングできると言えます。このソリューションでは、モデルを「z オーダーで表示」する必要があります。これは、最初に遠くのモデルをレンダリングする必要があるためです。

ただし、このソリューションには大きな落とし穴が 1 つあります。両面透明モデルはうまく機能しません。

于 2011-07-08T17:11:01.957 に答える