UDKでのレンダリングアクセスに関する質問


7

私もUDKフォーラムでこれについて質問しましたが、何の反応も得られませんでした。基本的に、私はUT3の改造についてある程度の経験がありますが、UDKを使い始めたばかりであり、レンダリングの制御の程度についていくつか質問があります。

  1. 私は、UDKディストリビューションにいくつかのHLSLシェーダーファイル(拡張子.usf)が存在するにもかかわらず、マテリアルエディターの外部に独自のシェーダーを実装する手段がないことを収集しました。これは正しいです?(マテリアルエディタのカスタムノードについては知っていますが、非常に制限されており、最も単純なロジック以外には扱いにくいです。)

  2. UE3が遅延レンダリングを採用していることを理解しています。ポストプロセスで現在のピクセルの色と深度にアクセスできることを知っています。しかし、より一般的な方法でこれらまたは他のGバッファー属性にアクセスする方法はありますか?(通常、位置、隣接するピクセルの値...)

  3. レンダーターゲットは一般的な方法でサポートされていますか?議論のために、代替のPOVから深度をレンダリングするようにカメラを設定し、メインビューのレンダリング中にシャドウマップスタイルの深度比較を行うことは可能でしょうか?

  4. 現在のレベルのテレインまたはBSPジオメトリに使用されているマテリアルなど、クライアント上のすべてのマテリアルを(一括で)オーバーライドすることはできますか?(代替のビジョンモードおよびその性質のものを実装するため。)

もちろん、UDKに付属するツールは非常に洗練されており、無料のScaleformやSpeedTreeに勝るものはありませんが、ドラッグアンドドロップを超えて移動したい人には、プラットフォームがひどいものだと思い始めています。グラフィックの観点からの材料編集。たとえば、ソースエンジンのmodでのレンダリングをはるかに制御できるように感じます。


これらの問題についてUDKの経験者に
連絡をお待ち

回答:


4
  1. MaterialEditorでできなかったことがたくさんありません。あなたが必要とするほとんどすべてを行うことができます。マテリアルエディターが最適なシェーダーコードを生成していないと主張する人もいますが、シェーダーコンパイラーは、ここで自動生成されたコードを最適化するのに優れています。だから、それを試してみてください。多くのAAAゲームがこのツールチェーンで開発され、これらの多くはこのエディターで作成されたマテリアルで完全に動作しました。しかし、あなたの質問に答えるために:いいえ、これはプレーンなUDKでは不可能です。

  2. UE3は遅延レンダリングを使用しません。シャドウイングシステムは、フォワードレンダラーに加えて一種の遅延技術を使用します。ただし、レンダーパイプラインはまったく遅延されないため、G-Bufferなどは使用できません。これに関する詳細情報:http : //www.unrealtechnology.com/Downloads/Slides/xfest-gfx.ppt 残念ながら、クイック検索でUE3の内部に関する他の公開されているドキュメントを見つけることができなかったため、このプレゼンテーションを希望しますあなたに良い概観を与えます。すぐに隣接ピクセルにアクセスできます。DOFまたはBloomポストエフェクトを見てください。これがコードで実装されているのか、Material-Editor経由で実装されているのかはわかりませんが、MaterialEditorに実装されている場合は、実際に動作する例を見つけることができます。

  3. SceneCaptureActorsをご覧ください。これらは、Render-to-Textureに使用できますが、すぐに使用できるUDKアクターにどれだけのチューニングの可能性があるかはわかりません。このレンダリングされたテクスチャをマテリアルで使用できます。残念ながら、特定のケース(深度のレンダリング)は、そのままではUDKでサポートされていません。

  4. いいえ、これは不可能ですが、マテリアルで処理されるMaterial-Parametersを使用して回避策を実行できます(したがって、1つのマテリアルに両方のモードのシェーダーが含まれます)。その後、Kismetを介してマテリアルパラメータを変更できます。これにより、必要な操作を正確に行うことができます。

私の意見では、レンダリングに関してUE3で実行できないことは多くありません。ドラッグアンドドロップのマテリアル編集とレベルエディター中心のデザインは、プログラマーが期待するものではないかもしれませんが、まさにそれがコンテンツの人たちが必要としているものです。これは、結局のところ、本当に良いソリューションであることが証明されています。もちろん、これにはコンテンツ作成者がシステムとその制限を知っていることが必要です。

あなたはそれを試してみて、UDKが提供するツールを使って必要なものを構築しようとするべきです。私はあなたがあなたが望むものを手に入れることができることを非常に確信しています。


返信いただきありがとうございます。re:#1-これは私の質問にまったく答えません。re:#2-引用、またはその他の情報はありますか?re:#3-SceneCapture *アクタークラスについては知っていますが、それらはシーンの「通常の」ビューのキャプチャに制限されているようです。射影深度比較を実行できるかどうかについて具体的に尋ねました。私は確かに、UDKで利用可能なツールから必要なものを取得しようとしましたが、それがまさに私がこの質問のリストを作成した方法です。
Neverender

ええ、あなたは正しいです...私は引きずり出されて、散歩し始めました:)、それについて申し訳ありません...
DarthCoder 2010

追加情報をありがとう。マテリアルエディタはほとんどの用途に十分な用途があると言ったとき、どこから来たのか理解しています。UDKを使用してこのアイデアを実現できないように見えるのは残念です。すべての素材に特殊なケースを挿入することは、実際に実行可能なアプローチではありません。
Neverender

1

これを読んだ人がUDKフォーラムのスレッドにクリックスルーするのを怠った場合に備えて、おそらくこれを更新する必要があることに気付きました。モデレーターから、エンジンを変更しない限り、やりたいことはすべて不可能だと言われました。

1)残念ながら、カスタムノードはHLSLをUDKマテリアルに取り込む唯一の方法です。

2)UE3は完全な遅延を実行しないため、ポストプロセスエフェクトで使用できるのは色と深度のみです。現在、現在のピクセルの位置にアクセスできるノードはありませんが、非常に便利です(この計算は、シャドウフィルタリングのような多くのシェーダーで行われます)。

3)代替POVからのレンダリングはシーンキャプチャを通じてサポートされますが、キャプチャできる唯一の属性はカラーです。

4)これは、エンジンコードを変更した場合にのみ可能です。

基本的に、あなたが求めているすべてのものは、UE3ソースへの完全なアクセスを必要とします。

引用:http : //forums.epicgames.com/showthread.php?p=27609556#post27609556


0

あなたが求めていることについては、UDK はお勧めしません。ネイティブアクセスがありません。

UnrealScriptは最速の言語ではないため、UDKによってスクリプトへのアクセスが提供されていても、めちゃくちゃ遅くなります。

Unrealは遅延レンダリングを使用しません。どこで聞いたの?一部のライセンシーは、遅延レンダリングを実装しています。ただし、ネイティブでは付属していません。

それ以外は、私はグラフィックスの男ではありません:)


「適切な」ライセンシーのように、UE3ソースまたはネイティブクラスにアクセスできないため、エンジン自体に深いハッキングを行うことはできません。ただし、DLLBind(udn.epicgames.com/Three/DLLBind.html)を使用すると、ネイティブコードを記述して、それをUnrealScriptから呼び出すことができます。これは、最適化の目的には十分です。

返信いただきありがとうございます; ただし、パフォーマンスの観点から、達成したいことのほとんどは、UnrealScriptで仮想的にうまく実装できると確信しています。最初に尋ねた2つのことのパフォーマンスは、UnrealScriptではなく、主に使用されているシェーダーに依存します。3番目と4番目の場合、理想的には、シーン内のすべての標準マテリアルをオーバーライドする特定のマテリアルを使用して、シーンを指定のレンダーターゲットに再レンダーするように要求できます。どちらの部分も特にスクリプト集約型ではありません。作業負荷は依然としてエンジンにかかっています。
Neverender
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.