SlideShare uma empresa Scribd logo
1 de 25
Baixar para ler offline
UE4.14.0(Preview)で
Forward Shadingを触ってみた
正式版!
自己紹介
● Twitter: com04
● ゲームプログラマー
● 趣味UE4歴: 2年ちょい
● お金貰ってニート中(有給消化)
● スライドは後で公開します
やってみた
● 4.14でForward Shadingが正式採用されたの
で試してみた
– (というのを書いてたら、Epic Games Japanの岡田さんが
Forward Shading+VRのスライドを書かれました)
● UE4.14で広がるVRの可能性
http://www.slideshare.net/EpicGamesJapan/ue414vr
Forward Shadingの有効化
● 「プロジェクト設定」ウィンドウ
→「エンジン」→「Rendering」
→「Forward Shading」チェックボックスをONに
● 再起動を促されるので、エディターを再起動。
有効になったかチェック
● ビューポートの左上にある項目で
「バッファを可視化」→「概要」にする
有効になったかチェック
● Deferred Shading
Gバッファが確認できる
● Forward Shading
Gバッファが見れない
有効になった!
● これだけ!簡単!
で?
● ぼくは何がやりたい?
やりたい!
● Forward Shading出来るのなら、セルシェード(セル
ルック)の実装いい感じに出来るんじゃ?
その前に
● セルシェード(セルルック)に関しては、
おぎまふさん( @ogimafu )が詳しいです。
つよい。いつか倒したい
– 【UE4】セルっぽいルックを頑張ってみる その1(概要)
- 開発日誌
http://ogimafu.blogspot.jp/2015/03/ue4.html
– 【第3回UE4札幌Meetup!!!】 UE4で実装するセル表現
http://www.slideshare.net/TomohiroOgiwara/ue4meet
up-63696087
マテリアル出力追加したい
● マテリアル出力のパラメーターを追加してシェーディン
グ時に使用したい場合、
– Deferred ShadingだとGバッファを拡張してシェー
ディング情報を保存する枠を確保しないといけない
– Forward ShadingだとGバッファが無く、すぐに
シェーディングされるのでそのままの流れで使え
る!Gバッファ追加しなくていい!
そもそものレンダリングフロー
● Deferred Shading
– メッシュの描画命令→
Gバッファにシェーディングに必要な情報をレンダリングして保存
→
(ほぼ)全部のメッシュの描画命令が出た後にGバッファの情報を
使用してスクリーンベースでシェーディング(陰影付)
● Forward Shading
– メッシュの描画命令→
そのままシェーディング
詳しく喋ると1晩かかるのでググって!
やってみた!
● マテリアルのBPで影の色を指定出来るように!
やった事
● マテリアルの出力を拡張。セルシェード用のパラメー
ターを追加。
– マテリアル単位で影色の指定出来るように。
● セルシェード用のパラメーターを、シェーダーの
シェーディング計算部分に流すように←ココ!
● シェーダーをいい感じに弄る
エンジン改造
● UE 4.14.0のエンジンのソースコード落としてきて環境を
整える
– [UE4] エンジンのソースコード取得とビルド手順のまとめ
UE4.6改訂版 – historia
http://historia.co.jp/archives/1327
– エンジン改造 - UE4 Document@com04
http://com04.sakura.ne.jp/unreal/wiki/index.php?
%A5%A8%A5%F3%A5%B8%A5%F3%B2%FE
%C2%A4
事前情報:エンジンコードでのフラグ
● ソースコードでForward ShadingがONかどうか取得
● シェーダーコードでForward Shading時のdefine
● シェーダーコードで、Forward Shadingの時、Gバッ
ファがdisableになってる
static IConsoleVariable* CVarForwardShading =
IConsoleManager::Get().FindConsoleVariable(TEXT("r.ForwardShading"));
const bool bForwardShading =
CVarForwardShading ? (CVarForwardShading->GetInt() != 0) : false;
#define FORWARD_SHADING
#define USES_GBUFFER // これがdisableになってる
事前情報:シェーダーの流れ
● Forward Shading時のシェーダーの流れ
● FPixelShaderInOut_MainPS(BasePassPixelShader.usf)
– GetForwardDirectLighting(ForwardLightingCommon.usf)
● GetDynamicLighting(DeferredLightingCommon.usf)
– SurfaceShading(ShadingModels.usf)
● シェーダーコードは”UnrealEngine/Engine/Shaders”あたり
● ライティング計算はDeferredと同じ物を使ってる。
マテリアル出力に追加~シェーダーで取得
● マテリアル出力に追加~シェーダー内でその値取得まで
● この場で喋ってたら眠くなりそうなので纏めておいた
– UE4でマテリアル出力にピンを追加(UE4.14.0)
http://qiita.com/com04/items/6dc75c647ce97ba72ba4
● 変更箇所多いけど無心で書き加えていくだけ。
シェーダー内での受け渡し枠
● Engine/Shaders/DeferredShadingCommon.usf
– シェーダー内のパラメーター渡し用にFGBufferDataに変数追加
– 初期化しないとエラーが出るので、DecodeGBufferDataに追加
して対処。
// 583行目辺り
#if FORWARD_SHADING
GBuffer.ShadowColor = float3(0,0,0);
#endif
// 350行目辺り
float StoredSpecular;
#if FORWARD_SHADING // ここから
float3 ShadowColor;
#endif // ここまで
シェーダー内での受け渡し
● Engine/Shaders/BasePassPixelShader.usf
– FGBufferData::ShadowColorに、マテリアルから渡されて
きたパラメーターを突っ込む
// 671行目辺り
GBuffer.Depth = MaterialParameters.ScreenPosition.w;
#if FORWARD_SHADING // ここから
GBuffer.ShadowColor = GetMaterialShadowColor(PixelMaterialInputs);
#endif // ここまで
影色の適用
● 色計算部分。LightAccumulator_Add関数を丸々コピー&ペー
ストでLightAccumulator_AddMeetupを作成。
(LightAccumulator.usf)
– 引数にShadowColorを追加
– カラー計算をShadowColorとTotalLightで補間するように
void LightAccumulator_AddMeetup(inout FLightAccumulator In,
float3 TotalLight, float3 ShadowColor, float3 ScatterableLight,
float3 CommonMultiplier,
const bool bNeedsSeparateSubsurfaceLightAccumulation)
// In.TotalLight += TotalLight * CommonMultiplier;
In.TotalLight += lerp(ShadowColor, TotalLight, CommonMultiplier);
影色の適用
● 呼び出し元を差し替える
GetDynamicLighting(DeferredLightingCommon.usf)
// accumulate surface
{
float3 SurfaceLighting =
SurfaceShading(GBuffer, LobeRoughness, LobeEnergy, L, V, N, Random);
#if FORWARD_SHADING
float light = ((NoL * SurfaceAttenuation) > 0.5f) ? 1.0f : 0.0f; // とりあえず2値化
LightAccumulator_AddMeetup(LightAccumulator, SurfaceLighting,
GBuffer.ShadowColor*(1.0/PI), (1.0/PI), light,
bNeedsSeparateSubsurfaceLightAccumulation);
#else
LightAccumulator_Add(LightAccumulator, SurfaceLighting,
(1.0/PI), LightColor * (NoL * SurfaceAttenuation),
bNeedsSeparateSubsurfaceLightAccumulation);
#endif
}
Indirect Lightを消す
● エディター上のPostProcessのSettings
– 「Global Illumination」-「Indirect
Lighting Intensity」を0.0に
● Indirectが有効だと周囲の色味でシェーディングされるのでセ
ルルックっぽくなくなる。左が有効、右が無効。
できた!
● これだけ!
● Gバッファーとか何にも弄らなくていい!
● 多分ぼくが見たセルシェードの中で一番扱いやすいかも。
● 今回弄ってないけど、やるべき項目
– スペキュラも段階付けるとかしないと。
● EngineShadersShadingModels.usf
– StandardShading辺りのハズ…
– ドロップシャドウ周り
● 頑張ればライティング値からテクスチャルックアップの陰影
付も出来るかも。
以上です!
● セルルックとか特殊なシェーディング楽しいよ!
● エンジン改造楽しいよ!(沼

Mais conteúdo relacionado

Mais procurados

UE4のレイトレで出来ること/出来ないこと
UE4のレイトレで出来ること/出来ないことUE4のレイトレで出来ること/出来ないこと
UE4のレイトレで出来ること/出来ないことSatoshi Kodaira
 
UE4 LODs for Optimization -Beginner-
UE4 LODs for Optimization -Beginner-UE4 LODs for Optimization -Beginner-
UE4 LODs for Optimization -Beginner-com044
 
UE4 アセットロード周り-アセット参照調査-
UE4 アセットロード周り-アセット参照調査-UE4 アセットロード周り-アセット参照調査-
UE4 アセットロード周り-アセット参照調査-com044
 
[UE4]マテリアルの注意すべきこと!~テクスチャロードとSwitch~
[UE4]マテリアルの注意すべきこと!~テクスチャロードとSwitch~[UE4]マテリアルの注意すべきこと!~テクスチャロードとSwitch~
[UE4]マテリアルの注意すべきこと!~テクスチャロードとSwitch~com044
 

Mais procurados (20)

メカアクションゲーム『DAEMON X MACHINA』 信念と血と鋼鉄の開発事例
メカアクションゲーム『DAEMON X MACHINA』 信念と血と鋼鉄の開発事例メカアクションゲーム『DAEMON X MACHINA』 信念と血と鋼鉄の開発事例
メカアクションゲーム『DAEMON X MACHINA』 信念と血と鋼鉄の開発事例
 
UE4のレイトレで出来ること/出来ないこと
UE4のレイトレで出来ること/出来ないことUE4のレイトレで出来ること/出来ないこと
UE4のレイトレで出来ること/出来ないこと
 
UE4とBlenderでランニングコストを抑えるモダンなワークフロー
UE4とBlenderでランニングコストを抑えるモダンなワークフローUE4とBlenderでランニングコストを抑えるモダンなワークフロー
UE4とBlenderでランニングコストを抑えるモダンなワークフロー
 
UE4 LODs for Optimization -Beginner-
UE4 LODs for Optimization -Beginner-UE4 LODs for Optimization -Beginner-
UE4 LODs for Optimization -Beginner-
 
UE4を使った映像制作 (UE4 Character Art Dive Online)
UE4を使った映像制作 (UE4 Character Art Dive Online)UE4を使った映像制作 (UE4 Character Art Dive Online)
UE4を使った映像制作 (UE4 Character Art Dive Online)
 
UE4 アセットロード周り-アセット参照調査-
UE4 アセットロード周り-アセット参照調査-UE4 アセットロード周り-アセット参照調査-
UE4 アセットロード周り-アセット参照調査-
 
UE4をレンダラとした趣味的スピード背景ルックデブ(UE4 Environment Art Dive)
UE4をレンダラとした趣味的スピード背景ルックデブ(UE4 Environment Art Dive)UE4をレンダラとした趣味的スピード背景ルックデブ(UE4 Environment Art Dive)
UE4をレンダラとした趣味的スピード背景ルックデブ(UE4 Environment Art Dive)
 
MetaHumanサンプル解体新書 UNREAL FEST EXTREME 2021 SUMMER
MetaHumanサンプル解体新書  UNREAL FEST EXTREME 2021 SUMMERMetaHumanサンプル解体新書  UNREAL FEST EXTREME 2021 SUMMER
MetaHumanサンプル解体新書 UNREAL FEST EXTREME 2021 SUMMER
 
猫でも分かる UE4の新しいサンプル「Action RPG」について
猫でも分かる UE4の新しいサンプル「Action RPG」について猫でも分かる UE4の新しいサンプル「Action RPG」について
猫でも分かる UE4の新しいサンプル「Action RPG」について
 
猫でも分かるUE4のポストプロセスを使った演出・絵作り
猫でも分かるUE4のポストプロセスを使った演出・絵作り猫でも分かるUE4のポストプロセスを使った演出・絵作り
猫でも分かるUE4のポストプロセスを使った演出・絵作り
 
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
 
UE4における大規模背景制作事例(コリジョン編)
UE4における大規模背景制作事例(コリジョン編) UE4における大規模背景制作事例(コリジョン編)
UE4における大規模背景制作事例(コリジョン編)
 
[CEDEC2018] UE4アニメーションシステム総おさらい
[CEDEC2018] UE4アニメーションシステム総おさらい[CEDEC2018] UE4アニメーションシステム総おさらい
[CEDEC2018] UE4アニメーションシステム総おさらい
 
UE4で学ぶ水中表現(UE4 Environment Art Dive)
UE4で学ぶ水中表現(UE4 Environment Art Dive)UE4で学ぶ水中表現(UE4 Environment Art Dive)
UE4で学ぶ水中表現(UE4 Environment Art Dive)
 
猫でも分かる UE4のAnimation Blueprintの運用について
猫でも分かる UE4のAnimation Blueprintの運用について猫でも分かる UE4のAnimation Blueprintの運用について
猫でも分かる UE4のAnimation Blueprintの運用について
 
[UE4]マテリアルの注意すべきこと!~テクスチャロードとSwitch~
[UE4]マテリアルの注意すべきこと!~テクスチャロードとSwitch~[UE4]マテリアルの注意すべきこと!~テクスチャロードとSwitch~
[UE4]マテリアルの注意すべきこと!~テクスチャロードとSwitch~
 
猫でも分かる Control Rig UE4.25 版
猫でも分かる Control Rig UE4.25 版猫でも分かる Control Rig UE4.25 版
猫でも分かる Control Rig UE4.25 版
 
UE4で”MetaHumanを使わずに”耳なし芳一になる10の方法 | UE4 Character Art Dive Online
UE4で”MetaHumanを使わずに”耳なし芳一になる10の方法 | UE4 Character Art Dive OnlineUE4で”MetaHumanを使わずに”耳なし芳一になる10の方法 | UE4 Character Art Dive Online
UE4で”MetaHumanを使わずに”耳なし芳一になる10の方法 | UE4 Character Art Dive Online
 
60fpsアクションを実現する秘訣を伝授 基礎編
60fpsアクションを実現する秘訣を伝授 基礎編60fpsアクションを実現する秘訣を伝授 基礎編
60fpsアクションを実現する秘訣を伝授 基礎編
 
UE4におけるレベル制作事例
UE4におけるレベル制作事例  UE4におけるレベル制作事例
UE4におけるレベル制作事例
 

Mais de com044

[UE4]自動テストでもっと楽したい!
[UE4]自動テストでもっと楽したい![UE4]自動テストでもっと楽したい!
[UE4]自動テストでもっと楽したい!com044
 
UE4ぷちコンの勧め
UE4ぷちコンの勧めUE4ぷちコンの勧め
UE4ぷちコンの勧めcom044
 
2019年03月 UE4界隈ニュース
2019年03月 UE4界隈ニュース 2019年03月 UE4界隈ニュース
2019年03月 UE4界隈ニュース com044
 
UE4でAIとビヘイビアツリーと-基礎-
UE4でAIとビヘイビアツリーと-基礎-UE4でAIとビヘイビアツリーと-基礎-
UE4でAIとビヘイビアツリーと-基礎-com044
 
AI基礎
AI基礎AI基礎
AI基礎com044
 
2019年01月 UE4界隈ニュース
2019年01月 UE4界隈ニュース2019年01月 UE4界隈ニュース
2019年01月 UE4界隈ニュースcom044
 
2018年11月 UE4界隈ニュース
2018年11月 UE4界隈ニュース2018年11月 UE4界隈ニュース
2018年11月 UE4界隈ニュースcom044
 
第8回UE4勉強会 in 大阪 201809 UE4界隈ニュース
第8回UE4勉強会 in 大阪 201809 UE4界隈ニュース第8回UE4勉強会 in 大阪 201809 UE4界隈ニュース
第8回UE4勉強会 in 大阪 201809 UE4界隈ニュースcom044
 
第7回UE4勉強会 in 大阪 201807 UE4界隈ニュース
第7回UE4勉強会 in 大阪 201807 UE4界隈ニュース第7回UE4勉強会 in 大阪 201807 UE4界隈ニュース
第7回UE4勉強会 in 大阪 201807 UE4界隈ニュースcom044
 
第6回UE4勉強会 in 大阪 201805 UE4界隈ニュース
第6回UE4勉強会 in 大阪 201805 UE4界隈ニュース第6回UE4勉強会 in 大阪 201805 UE4界隈ニュース
第6回UE4勉強会 in 大阪 201805 UE4界隈ニュースcom044
 
UE4勉強会 in 大阪 - もっとアニメーションBP
UE4勉強会 in 大阪 - もっとアニメーションBPUE4勉強会 in 大阪 - もっとアニメーションBP
UE4勉強会 in 大阪 - もっとアニメーションBPcom044
 
第5回UE4勉強会 in 大阪 201803 UE4界隈ニュース
第5回UE4勉強会 in 大阪 201803 UE4界隈ニュース第5回UE4勉強会 in 大阪 201803 UE4界隈ニュース
第5回UE4勉強会 in 大阪 201803 UE4界隈ニュースcom044
 
UE4勉強会 in 大阪 - アニメーション基礎
UE4勉強会 in 大阪 - アニメーション基礎UE4勉強会 in 大阪 - アニメーション基礎
UE4勉強会 in 大阪 - アニメーション基礎com044
 
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動についてUE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動についてcom044
 
第4回UE4勉強会 in 大阪 UE4でのチーム製作
第4回UE4勉強会 in 大阪   UE4でのチーム製作第4回UE4勉強会 in 大阪   UE4でのチーム製作
第4回UE4勉強会 in 大阪 UE4でのチーム製作com044
 
第4回UE4勉強会 in 大阪 201801 UE4界隈ニュース
第4回UE4勉強会 in 大阪   201801 UE4界隈ニュース第4回UE4勉強会 in 大阪   201801 UE4界隈ニュース
第4回UE4勉強会 in 大阪 201801 UE4界隈ニュースcom044
 
第3回ue4勉強会 in 大阪 201711 ue4界隈ニュース
第3回ue4勉強会 in 大阪   201711 ue4界隈ニュース第3回ue4勉強会 in 大阪   201711 ue4界隈ニュース
第3回ue4勉強会 in 大阪 201711 ue4界隈ニュースcom044
 
第2回UE4勉強会 in 大阪 - マテリアル基礎・初級
第2回UE4勉強会 in 大阪 - マテリアル基礎・初級第2回UE4勉強会 in 大阪 - マテリアル基礎・初級
第2回UE4勉強会 in 大阪 - マテリアル基礎・初級com044
 
第2回UE4勉強会 in 大阪 - 201709 ue4界隈ニュース
第2回UE4勉強会 in 大阪 -  201709 ue4界隈ニュース第2回UE4勉強会 in 大阪 -  201709 ue4界隈ニュース
第2回UE4勉強会 in 大阪 - 201709 ue4界隈ニュースcom044
 
第1回UE4勉強会 in 大阪 - エンジン改造ってどうなの?
第1回UE4勉強会 in 大阪 - エンジン改造ってどうなの?第1回UE4勉強会 in 大阪 - エンジン改造ってどうなの?
第1回UE4勉強会 in 大阪 - エンジン改造ってどうなの?com044
 

Mais de com044 (20)

[UE4]自動テストでもっと楽したい!
[UE4]自動テストでもっと楽したい![UE4]自動テストでもっと楽したい!
[UE4]自動テストでもっと楽したい!
 
UE4ぷちコンの勧め
UE4ぷちコンの勧めUE4ぷちコンの勧め
UE4ぷちコンの勧め
 
2019年03月 UE4界隈ニュース
2019年03月 UE4界隈ニュース 2019年03月 UE4界隈ニュース
2019年03月 UE4界隈ニュース
 
UE4でAIとビヘイビアツリーと-基礎-
UE4でAIとビヘイビアツリーと-基礎-UE4でAIとビヘイビアツリーと-基礎-
UE4でAIとビヘイビアツリーと-基礎-
 
AI基礎
AI基礎AI基礎
AI基礎
 
2019年01月 UE4界隈ニュース
2019年01月 UE4界隈ニュース2019年01月 UE4界隈ニュース
2019年01月 UE4界隈ニュース
 
2018年11月 UE4界隈ニュース
2018年11月 UE4界隈ニュース2018年11月 UE4界隈ニュース
2018年11月 UE4界隈ニュース
 
第8回UE4勉強会 in 大阪 201809 UE4界隈ニュース
第8回UE4勉強会 in 大阪 201809 UE4界隈ニュース第8回UE4勉強会 in 大阪 201809 UE4界隈ニュース
第8回UE4勉強会 in 大阪 201809 UE4界隈ニュース
 
第7回UE4勉強会 in 大阪 201807 UE4界隈ニュース
第7回UE4勉強会 in 大阪 201807 UE4界隈ニュース第7回UE4勉強会 in 大阪 201807 UE4界隈ニュース
第7回UE4勉強会 in 大阪 201807 UE4界隈ニュース
 
第6回UE4勉強会 in 大阪 201805 UE4界隈ニュース
第6回UE4勉強会 in 大阪 201805 UE4界隈ニュース第6回UE4勉強会 in 大阪 201805 UE4界隈ニュース
第6回UE4勉強会 in 大阪 201805 UE4界隈ニュース
 
UE4勉強会 in 大阪 - もっとアニメーションBP
UE4勉強会 in 大阪 - もっとアニメーションBPUE4勉強会 in 大阪 - もっとアニメーションBP
UE4勉強会 in 大阪 - もっとアニメーションBP
 
第5回UE4勉強会 in 大阪 201803 UE4界隈ニュース
第5回UE4勉強会 in 大阪 201803 UE4界隈ニュース第5回UE4勉強会 in 大阪 201803 UE4界隈ニュース
第5回UE4勉強会 in 大阪 201803 UE4界隈ニュース
 
UE4勉強会 in 大阪 - アニメーション基礎
UE4勉強会 in 大阪 - アニメーション基礎UE4勉強会 in 大阪 - アニメーション基礎
UE4勉強会 in 大阪 - アニメーション基礎
 
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動についてUE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
 
第4回UE4勉強会 in 大阪 UE4でのチーム製作
第4回UE4勉強会 in 大阪   UE4でのチーム製作第4回UE4勉強会 in 大阪   UE4でのチーム製作
第4回UE4勉強会 in 大阪 UE4でのチーム製作
 
第4回UE4勉強会 in 大阪 201801 UE4界隈ニュース
第4回UE4勉強会 in 大阪   201801 UE4界隈ニュース第4回UE4勉強会 in 大阪   201801 UE4界隈ニュース
第4回UE4勉強会 in 大阪 201801 UE4界隈ニュース
 
第3回ue4勉強会 in 大阪 201711 ue4界隈ニュース
第3回ue4勉強会 in 大阪   201711 ue4界隈ニュース第3回ue4勉強会 in 大阪   201711 ue4界隈ニュース
第3回ue4勉強会 in 大阪 201711 ue4界隈ニュース
 
第2回UE4勉強会 in 大阪 - マテリアル基礎・初級
第2回UE4勉強会 in 大阪 - マテリアル基礎・初級第2回UE4勉強会 in 大阪 - マテリアル基礎・初級
第2回UE4勉強会 in 大阪 - マテリアル基礎・初級
 
第2回UE4勉強会 in 大阪 - 201709 ue4界隈ニュース
第2回UE4勉強会 in 大阪 -  201709 ue4界隈ニュース第2回UE4勉強会 in 大阪 -  201709 ue4界隈ニュース
第2回UE4勉強会 in 大阪 - 201709 ue4界隈ニュース
 
第1回UE4勉強会 in 大阪 - エンジン改造ってどうなの?
第1回UE4勉強会 in 大阪 - エンジン改造ってどうなの?第1回UE4勉強会 in 大阪 - エンジン改造ってどうなの?
第1回UE4勉強会 in 大阪 - エンジン改造ってどうなの?
 

UE4.14.0 Forward Shadingのエンジン改造でセルシェードやってみた