エンジン改造-ShadingModel拡張
をテンプレートにして作成
[
ホーム
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
#contents
----
UE4.15.1で検証
* 参考 [#j6c919a8]
- [UE4] 拡張したGBufferを使って異方性スペキュラをやってみ...
http://monsho.blog63.fc2.com/blog-entry-192.html
* メモ [#s7cb3fef]
- MSM_MAX(SHADINGMODELID_MASK)は最大16。
シェーダー内で0xf(SHADINGMODELID_MASK)でマスクしている。
他の変数と合わせて、8bit使用。
その8bitをGバッファの1変数に書き込んでいるのでMSM_MAXは1...
* やってみた [#ff88f001]
+ Engine\Source\Runtime\Engine\Classes\Engine\EngineTypes.h
#code(C,nonumber,nomenu){{
MSM_Eye UMETA(DisplayName="Eye"),
}}
の下に追加する。
#code(C,nonumber,nomenu){{
MSM_Cell UMETA(DisplayName = "Cell"),
}}
+ Engine\Source\Runtime\Engine\Private\Materials\Material...
++ FString GetShadingModelString(...)
#code(C,nonumber,nomenu){{
case MSM_Eye: ShadingModelName = TEXT("MSM_Eye"); bre...
}}
の下に追加する。
#code(C,nonumber,nomenu){{
case MSM_Cell: ShadingModelName = TEXT("MSM_Cell"); b...
}}
++ void UpdateMaterialShaderCompilingStats(...)
#code(C,nonumber,nomenu){{
case MSM_TwoSidedFoliage:
}}
の下に追加する
#code(C,nonumber,nomenu){{
case MSM_Cell:
}}
+ Engine\Source\Runtime\Engine\Private\Materials\Material...
++ void FMaterial::SetupMaterialEnvironment(...)
#code(C,nonumber,nomenu){{
case MSM_Eye: OutEnvironment.SetDefine(TEXT("MATERIAL...
}}
の下に追加分。シェーダー内でdefine定義される。
#code(C,nonumber,nomenu){{
case MSM_Cell: OutEnvironment.SetDefine(TEXT("MATERIA...
}}
+ Engine\Shaders\DeferredShadingCommon.usf
++ #define SHADINGMODELID_*
#code(C,nonumber,nomenu){{
#define SHADINGMODELID_EYE 9
}}
の下に追加。MSM_*と一致させる。
#code(C,nonumber,nomenu){{
#define SHADINGMODELID_CELL 10
}}
SHADINGMODELID_NUMも合わせて数値を更新する
+ Engine\Shaders\BasePassPixelShader.usf
++ FPixelShaderInOut_MainPS
#code(C,nonumber,nomenu){{
#elif MATERIAL_SHADINGMODEL_EYE
}}
の下に新規作成したShading Model IDを繋げてGバッファへの出...
+ Engine\Shaders\ShadingModels.usf
++ SurfaceShading
#code(C,nonumber,nomenu){{
switch( GBuffer.ShadingModelID )
}}
に新しいShading Modelを追加
#code(C,nonumber,nomenu){{
case SHADINGMODELID_CELL:
return CellShading( GBuffer.DiffuseColor, GBuffer.Specu...
}}
+ シェーディングを独自にする。
++ Engine\Shaders\DeferredShadingCommon.usf
#code(C,nonumber,nomenu){{
GetDynamicLighting
}}
でSurfaceShadingでシェーディング計算、LightAccumulator_Ad...
終了行:
#contents
----
UE4.15.1で検証
* 参考 [#j6c919a8]
- [UE4] 拡張したGBufferを使って異方性スペキュラをやってみ...
http://monsho.blog63.fc2.com/blog-entry-192.html
* メモ [#s7cb3fef]
- MSM_MAX(SHADINGMODELID_MASK)は最大16。
シェーダー内で0xf(SHADINGMODELID_MASK)でマスクしている。
他の変数と合わせて、8bit使用。
その8bitをGバッファの1変数に書き込んでいるのでMSM_MAXは1...
* やってみた [#ff88f001]
+ Engine\Source\Runtime\Engine\Classes\Engine\EngineTypes.h
#code(C,nonumber,nomenu){{
MSM_Eye UMETA(DisplayName="Eye"),
}}
の下に追加する。
#code(C,nonumber,nomenu){{
MSM_Cell UMETA(DisplayName = "Cell"),
}}
+ Engine\Source\Runtime\Engine\Private\Materials\Material...
++ FString GetShadingModelString(...)
#code(C,nonumber,nomenu){{
case MSM_Eye: ShadingModelName = TEXT("MSM_Eye"); bre...
}}
の下に追加する。
#code(C,nonumber,nomenu){{
case MSM_Cell: ShadingModelName = TEXT("MSM_Cell"); b...
}}
++ void UpdateMaterialShaderCompilingStats(...)
#code(C,nonumber,nomenu){{
case MSM_TwoSidedFoliage:
}}
の下に追加する
#code(C,nonumber,nomenu){{
case MSM_Cell:
}}
+ Engine\Source\Runtime\Engine\Private\Materials\Material...
++ void FMaterial::SetupMaterialEnvironment(...)
#code(C,nonumber,nomenu){{
case MSM_Eye: OutEnvironment.SetDefine(TEXT("MATERIAL...
}}
の下に追加分。シェーダー内でdefine定義される。
#code(C,nonumber,nomenu){{
case MSM_Cell: OutEnvironment.SetDefine(TEXT("MATERIA...
}}
+ Engine\Shaders\DeferredShadingCommon.usf
++ #define SHADINGMODELID_*
#code(C,nonumber,nomenu){{
#define SHADINGMODELID_EYE 9
}}
の下に追加。MSM_*と一致させる。
#code(C,nonumber,nomenu){{
#define SHADINGMODELID_CELL 10
}}
SHADINGMODELID_NUMも合わせて数値を更新する
+ Engine\Shaders\BasePassPixelShader.usf
++ FPixelShaderInOut_MainPS
#code(C,nonumber,nomenu){{
#elif MATERIAL_SHADINGMODEL_EYE
}}
の下に新規作成したShading Model IDを繋げてGバッファへの出...
+ Engine\Shaders\ShadingModels.usf
++ SurfaceShading
#code(C,nonumber,nomenu){{
switch( GBuffer.ShadingModelID )
}}
に新しいShading Modelを追加
#code(C,nonumber,nomenu){{
case SHADINGMODELID_CELL:
return CellShading( GBuffer.DiffuseColor, GBuffer.Specu...
}}
+ シェーディングを独自にする。
++ Engine\Shaders\DeferredShadingCommon.usf
#code(C,nonumber,nomenu){{
GetDynamicLighting
}}
でSurfaceShadingでシェーディング計算、LightAccumulator_Ad...
ページ名: