(原) MaterialEditor部- UmateriaEditor中 Node編譯過程和使用(2)
阿新 • • 發佈:2019-03-15
mapi src lint 需求 入口 fma -s 一個 結果 FMaterial::BeginCompileShaderMap
Property進入屬性編譯部分
@白袍小道
轉載說明原處
插件同步在GITHUB: DaoZhang_XDZ
? ?
需求:
1、梳理FexpressionInput和Output的編譯和鏈接(套路和邏輯目的)
2、如何做到節點編譯的驅動
3、增加自定義節點(非CustomNode)
? ?
說明:
提交編輯:
一、UMaterial::PostEditChangeProperty
二、FMaterialCompile 、FHLSLMaterialTranslator、material(materialInterface\Resouces)
? ?
首先是一個熟悉的入口
? ?
FMaterial::BeginCompileShaderMap
bool FMaterial::BeginCompileShaderMap( const FMaterialShaderMapId& ShaderMapId, EShaderPlatform Platform, TRefCountPtr<FMaterialShaderMap>& OutShaderMap, bool bApplyCompletedShaderMapForRendering) |
? ?
? ?
FHLSLMaterialTranslator
最後的輸入收集
? ?
? ?
CompileProperty
這裏才是更具
Ret = MaterialInterface->CompileProperty(Compiler, MP_EmissiveColor); |
? ?
UMaterialInterface::CompileProperty
? ?
按照不同的輸入屬性表達式,進入CompileWith
? ?
FExpressionInput::Compile
這裏就到了真正節點邏輯
? ?
說明總結圖
節點的編譯:(樹形組合)
這種方式類似於 整個大的編譯,從結果反向到輸入,層層遞歸。(每個節點都會加入自身的編譯邏輯,並鏈接上下節點)
? ?
? ?
案例:
(未完待續, 先去做點東東)
一、MaterialExpressionAbs
? ?
二、MaterialExpressionTextureSample
? ?
? ?
三、MaterialExpressionFunction
(原) MaterialEditor部- UmateriaEditor中 Node編譯過程和使用(2)