エンジン改造-マテリアルの出力にパラメーターを追加
をテンプレートにして作成
[
ホーム
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
#contents
----
UE4.15.1で検証
* 参考 [#vd9b40e9]
- [UE4] GBufferを拡張せずに異方性スペキュラをやってみる -...
http://monsho.blog63.fc2.com/blog-entry-193.html
- UE4でマテリアル出力にピンを追加(UE4.14.0) - Qiita
http://qiita.com/com04/items/6dc75c647ce97ba72ba4
* メモ [#q58a0421]
- EMaterialProperty - MP_MAXは33が限界。Uint32でビットマ...
* やってみた [#a1051e1c]
+ Engine\Source\Runtime\Engine\Public\SceneTypes.h
++ enum EMaterialProperty
#code(C,nonumber,nomenu){{
MP_PixelDepthOffset,
}}
の下に追加分
+ Engine\Source\Runtime\Engine\Classes\Materials\Material.h
#code(C,nonumber,nomenu){{
FScalarMaterialInput PixelDepthOffset;
}}
の下に追加するパラメーターの変数を追加する
#code(C,nonumber,nomenu){{
UPROPERTY()
FScalarMaterialInput CellShadeParam;
}}
-- FScalarMaterialInput
-- FVector2MaterialInput
-- FVectorMaterialInput
+ Engine\Source\Runtime\Engine\Private\Materials\Material...
++ void UMaterial::Serialize(...)
#code(C,nonumber,nomenu){{
static_assert(MP_MAX == 29,
}}
を追加した分のMP_MAX値にする
#code(C,nonumber,nomenu){{
static_assert(MP_MAX == 33,
}}
++ UMaterial::PostLoad()
#code(C,nonumber,nomenu){{
DoMaterialAttributeReorder(&PixelDepthOffset, UE4Ver);
}}
の下に追加分
#code(C,nonumber,nomenu){{
DoMaterialAttributeReorder(&CellShadeParam, UE4Ver);
}}
++ FExpressionInput* UMaterial::GetExpressionInputForProp...
#code(C,nonumber,nomenu){{
case MP_PixelDepthOffset: return &PixelDepthOffset;
}}
の下に追加分
#code(C,nonumber,nomenu){{
case MP_CellShadeParam: return &CellShadeParam;
}}
++ UMaterial::CompilePropertyEx
#code(C,nonumber,nomenu){{
case MP_PixelDepthOffset: return PixelDepthOffset.Compi...
}}
の下に追加分
#code(C,nonumber,nomenu){{
case MP_CellShadeParam: return CellShadeParam.CompileW...
}}
++ bool UMaterial::IsPropertyActive(EMaterialProperty InP...
#code(C,nonumber,nomenu){{
case MP_PixelDepthOffset:
Active = !bIsTranslucentBlendMode;
break;
}}
の下に追加。このピンを使用するShadingModelを記述する。
#code(C,nonumber,nomenu){{
case MP_CellShadeParam:
Active = ShadingModel == MSM_Cell || ShadingModel == MS...
break;
}}
+ Engine\Source\Runtime\Engine\Private\Materials\Material...
++ int32 UMaterialExpressionMakeMaterialAttributes::Compi...
++ UMaterialExpressionBreakMaterialAttributes::UMaterialE...
#code(C,nonumber,nomenu){{
static_assert(MP_MAX == 29,
}}
を追加した分のMP_MAX値にする
#code(C,nonumber,nomenu){{
static_assert(MP_MAX == 33,
}}
++ UMaterialExpressionBreakMaterialAttributes::UMaterialE...
#code(C,nonumber,nomenu){{
Outputs.Add(FExpressionOutput(TEXT("PixelDepthOffset"), ...
}}
の下に追加分。
#code(C,nonumber,nomenu){{
Outputs.Add(FExpressionOutput(TEXT("CellShadeParam"), 1,...
}}
++ int32 UMaterialExpressionBreakMaterialAttributes::Comp...
#code(C,nonumber,nomenu){{
PropertyToIOIndexMap.Add(MP_PixelDepthOffset, 24);
}}
の下に追加分
#code(C,nonumber,nomenu){{
PropertyToIOIndexMap.Add(MP_CellShadeParam, 25);
}}
+ Engine\Source\Runtime\Engine\Private\Materials\Material...
++ void FMaterialAttributeDefinitionMap::InitializeAttrib...
#code(C,nonumber,nomenu){{
Add(FGuid(0x0AC97EC3, 0xE3D047BA, 0xB610167D, 0xC4D919FF...
}}
の下に追加分。GUIDは被ってはいけない。ピンの初期値もここ。
#code(C,nonumber,nomenu){{
Add(FGuid(0x0AC97EC4, 0xE3D047BE, 0xB610168C, 0xC4D91203...
}}
+ Engine\Source\Runtime\Engine\Classes\Materials\Material...
#code(C,nonumber,nomenu){{
FExpressionInput PixelDepthOffset;
}}
の下に追加するパラメーターの変数を追加する
#code(C,nonumber,nomenu){{
UPROPERTY()
FExpressionInput CellShadeParam;
}}
+ Engine\Source\Runtime\Engine\Private\Materials\HLSLMate...
++ FHLSLMaterialTranslator(...)
#code(C,nonumber,nomenu){{
SharedPixelProperties[MP_PixelDepthOffset] = true;
}}
の下に追加するパラメーターの分初期化を追加
#code(C,nonumber,nomenu){{
SharedPixelProperties[MP_CellShadeParam] = true;
}}
++ bool Translate()
#code(C,nonumber,nomenu){{
Chunk[MP_PixelDepthOffset] = Material->CompilePropertyAn...
}}
の下に追加するパラメーターの分、値の取得を追加
#code(C,nonumber,nomenu){{
Chunk[MP_CellShadeParam] = Material->CompilePropertyAndS...
}}
+ Engine\Source\Editor\UnrealEd\Private\MaterialGraph.cpp
#code(C,nonumber,nomenu){{
MaterialInputs.Add(FMaterialInputInfo(LOCTEXT("PixelDept...
}}
の下に追加
#code(C,nonumber,nomenu){{
MaterialInputs.Add(FMaterialInputInfo(LOCTEXT("CellShade...
}}
+ シェーダーからマテリアルのパラメーターを取得する
Engine\Shaders\MaterialTemplate.usf
こんな感じ
#code(C,nonumber,nomenu){{
half4 GetMaterialCellShadeParamRaw(FPixelMaterialInputs ...
{
return PixelMaterialInputs.CellShadeParam;
}
half4 GetMaterialCellShadeParam(FPixelMaterialInputs Pix...
{
return GetMaterialCellShadeParamRaw(PixelMaterialInp...
}
}}
終了行:
#contents
----
UE4.15.1で検証
* 参考 [#vd9b40e9]
- [UE4] GBufferを拡張せずに異方性スペキュラをやってみる -...
http://monsho.blog63.fc2.com/blog-entry-193.html
- UE4でマテリアル出力にピンを追加(UE4.14.0) - Qiita
http://qiita.com/com04/items/6dc75c647ce97ba72ba4
* メモ [#q58a0421]
- EMaterialProperty - MP_MAXは33が限界。Uint32でビットマ...
* やってみた [#a1051e1c]
+ Engine\Source\Runtime\Engine\Public\SceneTypes.h
++ enum EMaterialProperty
#code(C,nonumber,nomenu){{
MP_PixelDepthOffset,
}}
の下に追加分
+ Engine\Source\Runtime\Engine\Classes\Materials\Material.h
#code(C,nonumber,nomenu){{
FScalarMaterialInput PixelDepthOffset;
}}
の下に追加するパラメーターの変数を追加する
#code(C,nonumber,nomenu){{
UPROPERTY()
FScalarMaterialInput CellShadeParam;
}}
-- FScalarMaterialInput
-- FVector2MaterialInput
-- FVectorMaterialInput
+ Engine\Source\Runtime\Engine\Private\Materials\Material...
++ void UMaterial::Serialize(...)
#code(C,nonumber,nomenu){{
static_assert(MP_MAX == 29,
}}
を追加した分のMP_MAX値にする
#code(C,nonumber,nomenu){{
static_assert(MP_MAX == 33,
}}
++ UMaterial::PostLoad()
#code(C,nonumber,nomenu){{
DoMaterialAttributeReorder(&PixelDepthOffset, UE4Ver);
}}
の下に追加分
#code(C,nonumber,nomenu){{
DoMaterialAttributeReorder(&CellShadeParam, UE4Ver);
}}
++ FExpressionInput* UMaterial::GetExpressionInputForProp...
#code(C,nonumber,nomenu){{
case MP_PixelDepthOffset: return &PixelDepthOffset;
}}
の下に追加分
#code(C,nonumber,nomenu){{
case MP_CellShadeParam: return &CellShadeParam;
}}
++ UMaterial::CompilePropertyEx
#code(C,nonumber,nomenu){{
case MP_PixelDepthOffset: return PixelDepthOffset.Compi...
}}
の下に追加分
#code(C,nonumber,nomenu){{
case MP_CellShadeParam: return CellShadeParam.CompileW...
}}
++ bool UMaterial::IsPropertyActive(EMaterialProperty InP...
#code(C,nonumber,nomenu){{
case MP_PixelDepthOffset:
Active = !bIsTranslucentBlendMode;
break;
}}
の下に追加。このピンを使用するShadingModelを記述する。
#code(C,nonumber,nomenu){{
case MP_CellShadeParam:
Active = ShadingModel == MSM_Cell || ShadingModel == MS...
break;
}}
+ Engine\Source\Runtime\Engine\Private\Materials\Material...
++ int32 UMaterialExpressionMakeMaterialAttributes::Compi...
++ UMaterialExpressionBreakMaterialAttributes::UMaterialE...
#code(C,nonumber,nomenu){{
static_assert(MP_MAX == 29,
}}
を追加した分のMP_MAX値にする
#code(C,nonumber,nomenu){{
static_assert(MP_MAX == 33,
}}
++ UMaterialExpressionBreakMaterialAttributes::UMaterialE...
#code(C,nonumber,nomenu){{
Outputs.Add(FExpressionOutput(TEXT("PixelDepthOffset"), ...
}}
の下に追加分。
#code(C,nonumber,nomenu){{
Outputs.Add(FExpressionOutput(TEXT("CellShadeParam"), 1,...
}}
++ int32 UMaterialExpressionBreakMaterialAttributes::Comp...
#code(C,nonumber,nomenu){{
PropertyToIOIndexMap.Add(MP_PixelDepthOffset, 24);
}}
の下に追加分
#code(C,nonumber,nomenu){{
PropertyToIOIndexMap.Add(MP_CellShadeParam, 25);
}}
+ Engine\Source\Runtime\Engine\Private\Materials\Material...
++ void FMaterialAttributeDefinitionMap::InitializeAttrib...
#code(C,nonumber,nomenu){{
Add(FGuid(0x0AC97EC3, 0xE3D047BA, 0xB610167D, 0xC4D919FF...
}}
の下に追加分。GUIDは被ってはいけない。ピンの初期値もここ。
#code(C,nonumber,nomenu){{
Add(FGuid(0x0AC97EC4, 0xE3D047BE, 0xB610168C, 0xC4D91203...
}}
+ Engine\Source\Runtime\Engine\Classes\Materials\Material...
#code(C,nonumber,nomenu){{
FExpressionInput PixelDepthOffset;
}}
の下に追加するパラメーターの変数を追加する
#code(C,nonumber,nomenu){{
UPROPERTY()
FExpressionInput CellShadeParam;
}}
+ Engine\Source\Runtime\Engine\Private\Materials\HLSLMate...
++ FHLSLMaterialTranslator(...)
#code(C,nonumber,nomenu){{
SharedPixelProperties[MP_PixelDepthOffset] = true;
}}
の下に追加するパラメーターの分初期化を追加
#code(C,nonumber,nomenu){{
SharedPixelProperties[MP_CellShadeParam] = true;
}}
++ bool Translate()
#code(C,nonumber,nomenu){{
Chunk[MP_PixelDepthOffset] = Material->CompilePropertyAn...
}}
の下に追加するパラメーターの分、値の取得を追加
#code(C,nonumber,nomenu){{
Chunk[MP_CellShadeParam] = Material->CompilePropertyAndS...
}}
+ Engine\Source\Editor\UnrealEd\Private\MaterialGraph.cpp
#code(C,nonumber,nomenu){{
MaterialInputs.Add(FMaterialInputInfo(LOCTEXT("PixelDept...
}}
の下に追加
#code(C,nonumber,nomenu){{
MaterialInputs.Add(FMaterialInputInfo(LOCTEXT("CellShade...
}}
+ シェーダーからマテリアルのパラメーターを取得する
Engine\Shaders\MaterialTemplate.usf
こんな感じ
#code(C,nonumber,nomenu){{
half4 GetMaterialCellShadeParamRaw(FPixelMaterialInputs ...
{
return PixelMaterialInputs.CellShadeParam;
}
half4 GetMaterialCellShadeParam(FPixelMaterialInputs Pix...
{
return GetMaterialCellShadeParamRaw(PixelMaterialInp...
}
}}
ページ名: