Googleは私を失敗させた、私は有益な何かを見つけることができなかった。だからおそらくGameDevは:)。
- 3Dテクスチャとは何ですか?
- いつ使用されますか?
- パフォーマンスコストは?
- それらはどのように保存されますか?
あいまいなアイデアはたくさんありますが、「決定的な」定義はありません。
特に3Dテクスチャを介してパーティクルシステムをレンダリングする場合は、例やチュートリアルへの参照を歓迎します。
Googleは私を失敗させた、私は有益な何かを見つけることができなかった。だからおそらくGameDevは:)。
あいまいなアイデアはたくさんありますが、「決定的な」定義はありません。
特に3Dテクスチャを介してパーティクルシステムをレンダリングする場合は、例やチュートリアルへの参照を歓迎します。
回答:
3Dテクスチャは、通常のテクスチャのように機能します。しかし、それは本当に3Dです。2DテクスチャにはUV座標があり、3DテクスチャにはUVWがあります(適切に使用する必要がありました)。テクスチャ座標は単位立方体です(0-1、0-1、0-1)。
可能な使用法:
パフォーマンス:
通常のテクスチャと同じ-超高速(gpuで最も高速なメモリアクセス)。スレッド用にキャッシュされ、ニアスレッド(ピクセルシェーダー)がニア値を探している状況に最適化されています。
ポイントとして読み取ることも、線形サンプリングを使用することもできます(ネイティブ3線形補間。2DテクスチャでのEq bi-linear補間)。
これらは、2Dテクスチャの配列のようにメモリに保存されます。
3Dテクスチャのミップマッピング:
3Dテクスチャまたは「ボリュームテクスチャ」は、一連のカードのようなスライスとして配置された一連の通常のテクスチャです。これらは、CTスキャンなどの実世界のデータを取得して操作するボリュームレンダリングで使用されます。ゲームやグラフィックスでは、パーティクルシステムの柔軟性をボリュームテクスチャの固定コストと簡単な(そして簡単に並列化可能な)計算と引き換えに、煙のようなボリュームエフェクトを使用することがあります。ボリュームテクスチャでは、最近傍を見つけるのは非常に簡単ですが、これは問題になる可能性があります。これは、ルーズポイントで構成される従来のパーティクルシステムです。
また、いくつかの複雑なオブジェクトは、草などのボリュームテクスチャを使用することでメリットがあります。
Nvidiaの箱に入った煙は素晴らしい例です。
http://www.youtube.com/watch?v=9AS4xV-CK14
また、レンダリングするボリュームがある場合、光散乱のレンダリングは簡単です
既存の回答とは別に、ノイズやフラクタルのような3Dテクスチャをプロシージャルに作成する方法が好きです(実際には2Dプロシージャルテクスチャよりも理にかなっています)。投影モデル(UV、平面、円筒、球など)を選択します。
3D空間でビットマップレイヤーをサンプリングする代わりに、基本的なアルゴリズムを使用して3D空間の各ポイントに個別の値を取得します。これにより、基本的に無限のテクスチャ解像度が得られます。これは3Dの「テクスチャ」またはむしろ私にとっては表面シェーディングです^^
実際、ゲーム開発のビットマップテクスチャスナッフにかなりうんざりしています。宇宙船を汚したいとき、ノイズフォーミュラのいくつかのレイヤーを適用し、制限された解像度のビットマップをペイントする必要はありません。古い3Dバフは夢を見ることができます、彼はできません;)
今、これらの甘いオールドスクール3Dムービーサーフェスソリューションをカラー、通常、およびスペキュラーUVビットマップにプリベークすることは、私が得る唯一の楽しみであり、面倒に制限されているように感じます。デモシーンは(いつものように)リアルタイム3Dの手順でテクスチャを(事前に)生成する傾向がありますが、設計から実行時までこのワークフローをサポートする優れたツールを見つけるのは困難です。ほとんどのゲーム開発手順のアプローチは、メッシュ生成に関するもののようです。デプスマップ/遅延レンダリングの助けを借りたシェーダーパイプラインは、オールドスクールの3Dノイズアルゴをどの程度処理できますか?
...テクスチャ画像を形状の表面にパラメトリックにマッピングする方法を理解するのではなく、ノイズベースのテクスチャの体積特性により、ピクセルの(x、y、z)位置で単純に評価することができますシェーダー。このようにして、テクスチャを効果的にソリッドマテリアルから切り出すことができます。これは、合理的な歪みのないパラメトリックマッピングを実行するよりもはるかに簡単です。
これらの種類のボリュームノイズベースのプロシージャルテクスチャは、長編映画の主流であり、シェーダーはリアルタイムパフォーマンスを必要としません...今日のすべての特殊効果フィルムは、ノイズベースのプロシージャルシェーダーを多用しています... PixarのRenderManなどの言語で記述されたピクセルシェーダー内でのノイズ関数の広範な使用について。GPUでリアルタイムで使用できるノイズ関数の適切な実装により、デスクトップとコンソールの次世代のインタラクティブエンターテイメントに組み込まれた長編映画のエキサイティングなビジュアルアイデアを楽しみにしています。 http://http.developer.nvidia.com/GPUGems/gpugems_ch05.html
3Dテクスチャパターンは、2Dテクスチャパターンが2Dポリゴンのピクセルに適用されるのとほぼ同じ方法で、ボリュメトリックボディのボクセルに適用されます。JavaScriptの3Dボリュメトリックテクスチャの例を次に示します(WebGLが必要です)。
http://kirox.de/test/Surface.html
[v]を押して、ボディを回転させ、生成されたテクスチャのグラデーションをマウスホイールで変更します