参考

初期設定

  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, lambertの計算。
    下がSurfaceShadingのみの結果。
    Engine-Material-Base00.png
  • 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 がライト計算周り。

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

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

シェーダーの変更

メモ

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

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