OpenGL®シャドウとは何ですか?

OpenGraphics®(OpenGL®)Shadowは、同様の照明条件下で実際の生活でシャドウがどのように鋳造されるかについての3次元(3D)OpenGL®シーンの視覚的近似です。 Shadowsは、主にシーンに影をキャストするための生来のサポートがないため、OpenGL®に実装する複雑な視覚的な機能です。代わりに、さまざまなバッファー、シェーダー、場合によっては特定のグラフィックカードの特別な機能にアクセスできる拡張など、さまざまなツールを使用して、シーン内のオブジェクトとジオメトリからシャドウを作成するために使用できるさまざまな手法があります。ほとんどの場合、OpenGL®シャドウレンダリングの品質、精度、速度は、コンピューターまたはデバイスに存在するグラフィックスハードウェアの処理能力とメモリに直接関連しています。 OpenGL®シャドウを実装するより一般的な方法には、シャドウボリューム、シャドウマッピング、レイトレースが含まれます。

OpenGL®シャドウサポートを備えたアプリケーションを作成するには、数学的知識とOpenGL®の仕組みを深く理解する必要があります。 OpenGL®は、動的でリアルタイムでレンダリングされる3Dシーンを作成するために主に使用されているため、シャドウを作成するために使用されるアルゴリズムは、速度のために最適化するだけでなく、レンダリングに使用されるグラフィックパイプラインで引き起こされる可能性のあるリソースと混乱を慎重に測定する必要があります。これらの理由から、レイトレースと呼ばれる影を作成する最も基本的な方法は、非常に長い時間がかかる可能性があるため、完全な3Dシーンでは非現実的です。

レイトレースは、基本的に、シーンを通ってカメラの表示平面または位置からオブジェクトの表面までの想像上の線、または光線をたどり、1つ以上の光源とその他の要因の位置に基づいて表面の色を計算します。ラスター化の過程で、ここで3Dシーンは2次元(2D)表面に描かれているため、表示されるレイトレースのプロセスは、描画されているすべてのピクセルで実行する必要があり、特にテクスチャまたは他の表面特性では、同じピクセルを数回評価する必要があります。これは、リアルタイムのレイトレースを意味しますが、それは正確に影をレンダリングしますが、通常は実用的ではありません。

OpenGL®シャドウの作成に使用できるもう1つの方法は、シャドウマッピングとして知られています。この方法では、深さまたはステンシルバッファーを使用して、光源からシーン内の異なるオブジェクトの表面までの一連の距離として、光源の角度からシーンをレンダリングします。その後、シーンは正しい視聴角から2度目にレンダリングされ、各ピクセルがバッファ内の特定の距離範囲内に収まるかどうかを確認し、ピクセルが点灯するか影があるかを示します。シャドウマッピングを使用することはメモリ集約的であり、複数の光源を持つシーンでは、mを含むことができます複数の角度から複数のマップをアナキングします。

シャドウボリュームは、他の方法よりも正確なOpenGL®シャドウを作成する方法ですが、独自の問題を提示します。シャドウボリュームは、基本的に、光源から離れたオブジェクトの明るい表面から拡大するシーンの目に見えないジオメトリです。このボリュームを他のオブジェクトに対してチェックして、ボリュームが発生した表面の影に落ちているかどうかを確認できます。この手順は非常に複雑であり、速度に対して最適化された場合、最終的に視覚アーティファクトを作成します。

他の言語

この記事は参考になりましたか? フィードバックをお寄せいただきありがとうございます フィードバックをお寄せいただきありがとうございます

どのように我々は助けることができます? どのように我々は助けることができます?