参考

初期設定

  1. ソースコードの取得
    https://github.com/EpicGames/UnrealEngine/tree/master
    のページの右側「Clone or Download」を押して取得
    • Gitの場合はそこのURLをコピー、GitからCloneでそのURLを指定
      • Master以外のバージョンにしたい場合はswichする
    • Downloadだと、zipファイルが取得できるのでそのまま
  2. 落としてきた中にある「Setup.bat」を実行
  3. 「Generate Project File.bat」を実行
  4. 「UE4.sln」が出来上がる
  1. 「UE4.sln」を立ち上げて「Development Editor」構成でビルド。実行。
  2. プロジェクトブラウザが立ち上がるので「C++」タブで何か作る
  3. プロジェクト用のVisual Studioが立ち上がる
    • この時点で「UE4.sln」のVisual Studioは閉じていい
  4. 「Development Editor」構成でビルド。実行。
  5. いつものエディターが立ち上がる。以後はこれを弄っていく

GBufferの拡張

マテリアル関連

参考

シェーダーの流れ

  • SurfaceShading
    がMicrofacet Specularの計算。

    下がSurfaceShadingのみの結果。

    Engine-Material-Base00.png

    がMicrofacet Specular, lambertの計算。
  • GetDynamicLighting - LightAccumulator_Add
    辺りがライティング決定部分。NoLがライティング係数。
    下がNoLのみの結果。

    Engine-Material-Base01.png
  • Indirect Lightingは別処理。

Defferd Shading時のシェーダーの流れ

RadialPixelMain(DefferdLightPixelShader.usf)
 GetDynamicLighting(DeferredLightingCommon.usf)
  SurfaceShading(ShadingModels.usf) 

Forward Shading時のシェーダーの流れ

FPixelShaderInOut_MainPS(BasePassPixelShader.usf)
 GetForwardDirectLighting(ForwardLightingCommon.usf)
  GetDynamicLighting(DeferredLightingCommon.usf)
   SurfaceShading(ShadingModels.usf) 

Shading Modelの追加

参考

やってみた


UE4.15
  1. Engine/Config/ConsoleVariables.ini
    r.ShaderDevelopmentModeを1に
  2. Engine/Source/Runtime/Engine/Classes/Engine/EngineTypes.h
    EMaterialShadingModel

    に追加
  3. Engine/Source/Runtime/Engine/Private/Materials/MaterialShader.cpp
    GetShadingModelString

    UpdateMaterialShaderCompilingStats
  4. Engine/Source/Runtime/Engine/Private/Materials/MaterialShared.cpp
    FMaterial::SetupMaterialEnvironment
  5. Engine/Shaders/DeferredShadingCommon.usf

    #define SHADINGMODELID_*

  6. Engine/Shaders/BasePassPixelShader.usf
    FPixelShaderInOut_MainPS
  7. Engine/Shaders/ShadingModels.usf
    SurfaceShading

    自作関数に
  • その他
    • GBuffer.ShadingModelID
      でシェーダーのIDを取得
    • Engine/Shaders/DeferredLightingCommon.usf
      GetDynamicLighting が SurfaceShading の呼び出し元。
    • LightAccumulator.usf
      LightAccumulator_Add がライト計算周り。

マテリアルの出力にパラメーターを追加

エンジン改造-マテリアルの出力にパラメーターを追加

Gバッファの拡張


エンジン改造-Gバッファの拡張

PostProcessMaterialのタイミング追加


PostProcessMaterialのタイミング追加

シェーダーの変更

  • https://docs.unrealengine.com/latest/JPN/Programming/Rendering/ShaderDevelopment/index.html

    シェーダーで作業をする場合、r.ShaderDevelopmentMode を必ず 1 に設定して有効にしてください。最も簡単な方法は、ConsoleVariables.ini を編集して、ロード時に毎回有効になるようにします。これで、エラー時のリトライ、シェーダー開発関連のログ、および警告が有効になります。


    Engine\Config\ConsoleVariables.ini

メモ

  • シェーダーコード変更した後は、エディター上でCtrl+Sfhit+.
    • r.ShaderDevelopmentMode=1 の設定をしておく必要あり。(config or console)

エディタ拡張


    ホーム 一覧 単語検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS