もんしょの巣穴blog

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

[UE4] UE4の描画パスについて Ver 4.6.1

今回はUE4の描画パスについて簡単に調べた結果をメモっておく感覚で書いていきます。
タイトルにバージョン番号が入っているのはバージョンによって変更される可能性が高いためです。
また、今回はソースコードを軽く読んでわかった範囲でしか書いていません。
間違いがありましたら突っ込んでいただけると大変ありがたいので、よろしくお願いします。

描画パスというのはいわゆる描画の順番です。
例えば、モデルが何も描画されていない、画面がクリアされているだけの状態ではポストプロセスを実行しても意味がありません。
半透明オブジェクトはその性質上、不透明オブジェクトの後に描かれなければなりません。
そのような順番を定義しているのが描画パスです。
UE4ではこの描画パスの定義は "Engine\Source\Runtime\Renderer\Private\DeferredShadingRenderer.cpp" の "FDeferredShadingSceneRenderer::Render()" メソッドが担っているようです。
以下はこのメソッドから呼ばれている関数群が何をやっているのかを順番に解説していったものです。
なお、ソースコードは掲載しませんが(規約に違反するし)、関数名と行番号は掲載しておきます。
自分でも調べてみたい方は参考にしてみてください。

では、続きからどうぞ。

[[UE4] UE4の描画パスについて Ver 4.6.1]の続きを読む
スポンサーサイト
  1. 2014/12/21(日) 11:28:41|
  2. UE4
  3. | トラックバック:0
  4. | コメント:0

[UE4] とりとめのないマテリアルネタ色々

この記事はUnreal Engine 4 (UE4) Advent Calendar 2014の13日目の記事です。
今回はこれといったテーマはないですが、先日のUE4勉強会でEpicの下田さんがやっていたようなマテリアルのネタをとりとめもなく紹介していこうと思います。

まずこの画像をご覧ください。

ue235.png 

この画像の真ん中部分、皆さんには何色に見えるでしょうか?
左が白、右が黒はどなたでも同じだと思いますが、真ん中はグレーにみえますか?
よく見ていただければわかるのですが、これはグレーではなく黒と白のチェッカーです。

現在のPCやゲーム機はフルカラー画像が当たり前ですが、20年位前は16色とか256色とかが主流でした。
16色では滑らかなグラデーションを描こうとしても16階調しか作れませんし、それを作ると他の色は全く使えないことになります。
そんな時代に生み出されたグラデーションや半透明を表現する方法がこのチェッカーパターンによる表現でした。
当時はディスプレイもCRTで滲みもあったため、結構それっぽく見えたんですよ。

なんでこんな話をするのかというと、UE4の半透明って色々コスト高いよねっていう…
話が見えない?
つまり、この技術を使えば不透明でも半透明できるじゃん!というわけです。
それを実現するのがこのマテリアルファンクションです。

ue236.jpg 

エンジン側のコンテンツとして存在しているDitherTemporalAAです。
UE4勉強会でも下田さんが使われていましたが、気づかれた方はいらっしゃるでしょうか?
このファンクションは主にOpacityMaskに使用する命令で、毎フレーム変化するディザパターンでピクセルを描画したりしなかったりします。
しかもそれにTemporalAAがかかると、複数フレームで大変綺麗に半透明っぽくなります。
実装してみた結果がこちらです。

ue237.jpg 

どうでしょう?半透明にしか見えませんよね?
でも、これが不透明マテリアルです。
よく見れば、後ろのボックスの真っ直ぐであるはずの辺がざわついているのがわかりますが、動いてればそんなに気づきません。

この手法の半透明はライティング等がすべて不透明マテリアルとして行われるので、他の不透明マテリアルから浮いてしまうような状況を避けられますし、半透明マテリアルを使うよりコストが安いです。
しかし、制限も多い技術です。

先のマテリアルの入力、Alpha Thresholdにアルファ値を入力するのですが、こちらはデフォルトが0.5で、結果画像も0.5です。
この数値が一番綺麗に表示されますが、1.0や0.0に近い値ではうまく表現できません。
0.8くらいでは半透明っぽさは完全に失われてしまいますし、0.2くらいになるとディザパターンがまるわかりになります。

また、TemporalAAのお陰で、カメラが動いた際に奥のオブジェクトが伸びたように見えてしまいます。
もちろん、TemporalAAが無効の場合、あまり綺麗に描画されません。
下の画像はNoAAの場合の結果です。

ue238.jpg

シャドウマップも厳しいものがあります。
以下の画像がシャドウキャスタとして使用した場合のシャドウマップですが、さすがにこれは使えないですね。

ue239.jpg

静止画ではわからないですが、かなりざわざわします。

このように問題もある技術ではありますが、制限さえ守れば十分使い道がある技術です。
制限としては、
 1.シャドウキャスタとして使用しない
 2.アルファ値0.5付近から動くことがない
 3.TemporalAAが使用できない環境ではない
これくらいでしょうか。
これらの条件から考えると、幽霊とか使えそうですね。

では、続きからは他のマテリアルの紹介を行います。


[[UE4] とりとめのないマテリアルネタ色々]の続きを読む
  1. 2014/12/13(土) 09:10:52|
  2. UE4
  3. | トラックバック:1
  4. | コメント:0

[UE4] UE4勉強会の資料

先日(12/6)に行われたUE4勉強会にて話した内容の資料、及びUE4プロジェクトをアップしました。

http://1drv.ms/1EYLzjL
ue4study_tokyo03.ppt
ue4study_tokyo03.pdf
UE4Study_Tokyo03.zip

PowerPointの資料は権利関係が怪しい某○○ちゃんの画像を削除しました。
また、Appendixに加筆がされています。

Appendixは3つ。
Appendix AはIOR(屈折率)からスペキュラを求める方法。
Appendix BはBRDF.usfを変更することでライティングモデルを変更する方法。
こちらは勉強会での下田さんも少し話されていた内容です。
Appendix CはTwitterにも書いたメタリックパラメータの物理ベースレンダリング上での意味についてです。

プロジェクトではブルーマン先生登場時のBGMを削除しています。
こちらはMatineeプロジェクトから持ってきたのですが、.uasset形式での配布は禁止だったはずですので。
ちなみに、使用したBGMはMatineeプロジェクトの07番です。
加えて、Matineeに設定する際にピッチを変更して尺に合うように設定していました。

質問やミスなどがありましたらお伝え下さい。
  1. 2014/12/09(火) 01:34:12|
  2. UE4
  3. | トラックバック:0
  4. | コメント:0

プロフィール

monsho

Author:monsho
ゲームプログラマ?

最近の記事

最近のコメント

最近のトラックバック

月別アーカイブ

カテゴリー

ブロとも申請フォーム

この人とブロともになる

ブログ内検索

RSSフィード

リンク

このブログをリンクに追加する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。