大きな領域をカバーするWebGL(MrDoobのThree.jsを使用)で使用できる手法はありますか。石の壁または反復しているように見えないランダムなテクスチャの石畳の床? http://www.timeref.com/webgl_house_test2.htmlに例があります。これを行うにはシェーダーを使用できますか?Webglタイル可能な非反復テクスチャ
答えて
まず、デモが素敵!
あなたの質問に関して:これは、夜明けから夜にエンジンプログラマを守ってきたものです。 :)
繰り返しテクスチャの表示を軽減するためにできることはいくつかあります。最初と最も明白なのは繰り返しテクスチャを使用しないことです!仮想テクスチャと呼ばれていますが、これは一般的なケース(RAGEのMegatextureは私が知っている唯一の商用実装の1つです)ではやりにくいですが、風景をテクスチャリングするなどの制限がある場合は、私はそのようなアプローチがほとんどのニーズに対して過度のものであると考えています。
状況を簡単にする方法はありますが、シェーダでサーフェスディテールを生成するルート(高価になる可能性があります)を実行したい場合、出力にさまざまなフラクタルを適用すると、多くのマイレージが得られます。 (マンデルブロのようなものを考えてみてください)、それはアーティストがコントロールするのが一般的に難しくなります。繰り返すテクスチャを繰り返しにくくするような方法でブレンドする方法については、interesting resourcesがありますが、レンガやタイルのような非常に規則的なパターンでテクスチャをマングルする傾向があります。
おそらく私が知っている最もアーティストにやさしいルートは、ディテールテクスチャを使用している可能性があります。これらは、2つの方法で動作します。より大きな繰り返しパターンにfine grained detailを追加するか、反復パターンの先頭にlarger layer of varianceを追加して単調性を分割することができます。 (これはあなたが望むものです)。どちらの場合も、ブレンドは非常に簡単で、実行時に大きなヒットを引き起こすことはありません。
それ以外の場合は、繰り返しテクスチャを使用することはできますが、ベーステクスチャをより大きく、より多様にすることができます。 Inはまだ遠くから面白そうに見えるかもしれませんが、それは実際にあなたが作っているアプリのタイプに依存します。ユーザーが第一人物の視点で歩き回ることが意図されているのであれば、おそらくこれで十分でしょう。あなたがフライをやっているなら、それはもっと簡単に目立つかもしれません。 (しかしその場合は、例題のように小さなテクスチャを何度も繰り返す必要はありません)もちろん、ここでのトレードオフは、より多くのテクスチャメモリとそれに伴うパフォーマンスヒットを使用することです。
あなたはおそらく今、実際にはこの問題に対する銀色の弾丸の解決策はないと実感したでしょう。これは主に、アプリの視覚的ニーズと掲載結果の要件とのバランスをとることにあります。これは、ほぼすべてのプロジェクトで異なるものになります。
Toji、すばやい返信をいただきありがとうございます。それは私に多くの調査を与える。スカイリムが目を覚ます! –
「セルオートマトン」のようなものを使用して、新しいランダムでない非繰り返しテクスチャを生成することはできませんか? (貧しい言葉のために私を許しなさい) –