#contents ---- *参考 [#k2e391f5] - UE4 VisualStudioを使ってエンジンをデバッグする - Let's Enjoy Unreal Engine http://unrealengine.hatenablog.com/entry/2014/08/22/215802 * 初期設定 [#t8eadc68] + ソースコードの取得 https://github.com/EpicGames/UnrealEngine/tree/master のページの右側「Clone or Download」を押して取得 -- Gitの場合はそこのURLをコピー、GitからCloneでそのURLを指定 --- Master以外のバージョンにしたい場合はswichする -- Downloadだと、zipファイルが取得できるのでそのまま + 落としてきた中にある「Setup.bat」を実行 + 「Generate Project File.bat」を実行 + 「UE4.sln」が出来上がる + 「UE4.sln」を立ち上げて「Development Editor」構成でビルド。実行。 + プロジェクトブラウザが立ち上がるので「C++」タブで何か作る + プロジェクト用のVisual Studioが立ち上がる -- この時点で「UE4.sln」のVisual Studioは閉じていい + 「Development Editor」構成でビルド。実行。 + いつものエディターが立ち上がる。以後はこれを弄っていく * GBufferの拡張 [#jfc449db] - [UE4] GBufferを拡張する - もんしょの巣穴blog http://monsho.blog63.fc2.com/blog-entry-191.html * マテリアル関連 [#pa056c7f] ** 参考 [#e5bd56d6] - [UE4] エンジンのシェーダコードを変更する 基礎編 - もんしょの巣穴 http://monsho.blog63.fc2.com/blog-entry-155.html - UE4.14.0 Forward Shadingのエンジン改造でセルシェードやってみた - SlideShare https://www.slideshare.net/com044/ue4140-forward-shading-69295343 ** シェーダーの流れ [#v9c2b632] - SurfaceShading がMicrofacet Specular, lambertの計算。 下がSurfaceShadingのみの結果。 &ref(Engine-Material-Base00.png,,80%); - GetDynamicLighting - LightAccumulator_Add 辺りがライティング決定部分。NoLがライティング係数。 下がNoLのみの結果。 &ref(Engine-Material-Base01.png,,80%); - Indirect Lightingは別処理。 *** Defferd Shading時のシェーダーの流れ [#x820b8f2] RadialPixelMain(DefferdLightPixelShader.usf) GetDynamicLighting(DeferredLightingCommon.usf) SurfaceShading(ShadingModels.usf) *** Forward Shading時のシェーダーの流れ [#r6405ca8] FPixelShaderInOut_MainPS(BasePassPixelShader.usf) GetForwardDirectLighting(ForwardLightingCommon.usf) GetDynamicLighting(DeferredLightingCommon.usf) SurfaceShading(ShadingModels.usf) ** Shading Modelの追加 [#h0763e5c] *** 参考 [#te88a92d] - UE4のShading Modelを拡張して独自のライティングや描画機能を追加する方法を公開するよ! - Qiita @junyash http://qiita.com/junyash/items/472c49b09d0e4f4cc010 *** やってみた [#g6b49fb5] UE4.15 + Engine/Config/ConsoleVariables.ini r.ShaderDevelopmentModeを1に + Engine/Source/Runtime/Engine/Classes/Engine/EngineTypes.h EMaterialShadingModel に追加 + Engine/Source/Runtime/Engine/Private/Materials/MaterialShader.cpp GetShadingModelString UpdateMaterialShaderCompilingStats + Engine/Source/Runtime/Engine/Private/Materials/MaterialShared.cpp FMaterial::SetupMaterialEnvironment + Engine/Shaders/DeferredShadingCommon.usf #define SHADINGMODELID_* + Engine/Shaders/BasePassPixelShader.usf FPixelShaderInOut_MainPS + Engine/Shaders/ShadingModels.usf SurfaceShading 自作関数に - その他 -- GBuffer.ShadingModelID でシェーダーのIDを取得 -- Engine/Shaders/DeferredLightingCommon.usf GetDynamicLighting が SurfaceShading の呼び出し元。 -- LightAccumulator.usf LightAccumulator_Add がライト計算周り。 ** マテリアルの出力にパラメーターを追加 [#u9935729] [[エンジン改造-マテリアルの出力にパラメーターを追加]] ** シェーダーの変更 [#ccd7acf3] *** メモ [#p244e1e6] - シェーダーコード変更した後は、エディター上でCtrl+Sfhit+. -- r.ShaderDevelopmentMode=1 の設定をしておく必要あり。(config or console) |