2

タイル遅延レンダリング メソッドを実装しようとしていますが、行き詰まっています。各タイル (32x32) の最小/最大深度を計算し、テクスチャに保存しています。次に、シーン内のすべてのポイントライト (球体) の長方形の左下と右上の座標で表されるスクリーン スペース バウンディング ボックス (バウンディング スクエア) を計算します (私のアプリの写真を参照)。これは最小/最大深度とともに、光が実際のタイルに影響を与えるかどうかを確認するために使用されます。

問題は、これを行う方法がわからないことです。アイデア、ソースコード、または正確な計算はありますか?

光のバウンディング ボックス、レンダリングされたライト ボリューム

アップデート あなたの考えだと思います

私の試み

4

1 に答える 1

3

画面空間は基本的に 2D エンティティであるため、バウンディング ボックスの代わりにバウンディング レクタングルを考えてください。

これを計算する簡単な方法は次のとおりです。

  1. ModelViewProjection マトリックスを使用して、ワールド空間バウンディング ボックスの 8 つのコーナー ポイントを画面に投影します。
  2. これらの点の境界矩形を見つけます (これは、点の最小/最大 X 座標と Y 座標です)。

より洗練された方法を使用して、点光源のスクリーン空間境界矩形を計算できます。カメラの位置を通過し、ライトの照明球 (ライトの半径) に接する 4 つの平面を計算します。イメージ プレーンとの各接平面の交点により、イメージ プレーン上に 4 本の線が得られます。この行は、結果の境界四角形を定義します。

数学の詳細については、この記事を参照してください: http://www.altdevblogaday.com/2012/03/01/getting-the-projected-extent-of-a-sphere-to-the-near-plane/

于 2014-02-17T13:56:17.417 に答える