(原) MaterialEditor部- UmateriaEditor中 Node编译过程和使用(3)
@author: 白袍小道
转载说明原处
插件同步在GITHUB: DaoZhang_XDZ
说明
1、本篇是接着-----(原) MaterialEditor部- UmateriaEditor中 Node编译过程和使用(2)
2、通过上一篇小的已经知道MaterialExpression的基础过程。下面进入到加入自定义
MaterialExpression的案例(为了方便这里就直接用ABS,Gif/RAWTexture为两个案例,GIF放到单独)
3、让自定义的MaterialExpression在MaterialEditor中的GraphyEditor中包含和使用。
效果
案例过程
一、基础
先来看一个关键地方
MaterialExpressionClasses::InitMaterialExpressionClasses()
(在这里会讲所有的UCLASS进行过滤获取MaterialExpression,并按照规则放入不同
(附图,UCLASS的初始管理部分)
二、书写相关代码
下面代码就是ABS的迁移而已,有需要可以自己按规则书写
、UDZMatExpressionAbs
a\ 继承于UMaterialExpression
b\ 三个函数:构造,Compile,Caption
构造部分:
struct FConstructorStatics { FText NAME_Math; FConstructorStatics() : NAME_Math(LOCTEXT("Math", "Math")) { } }; static FConstructorStatics ConstructorStatics; #if WITH_EDITORONLY_DATA MenuCategories.Add(ConstructorStatics.NAME_Math); #endif |
#if WITH_EDITOR int32 UDZMatExpressionAbs::Compile(FMaterialCompiler * Compiler, int32 OutputIndex) { int32 Result = INDEX_NONE; if (!Input.GetTracedInput().Expression) { // an input expression must exist Result = Compiler->Errorf(TEXT("Missing DZAbs input")); } else { // evaluate the input expression first and use that as // the parameter for the Abs expression // Compiler中已经实现ABS部分,一般基础都是包含了的,你也可以自由组合 // 如果新完全新加(跳入shader-HLSL篇) Result = Compiler->Abs(Input.Compile(Compiler)); } return Result; } #endif |
void UDZMatExpressionAbs::GetCaption(TArray<FString>& OutCaptions) const { OutCaptions.Add(TEXT("DZ_Abs")); } |
最新文章
- windows多线程编程星球(一)
- Rotate Image
- @font-face 的用法
- 模板模式与策略模式/template模式与strategy模式/行为型模式
- 解读SQL Server 2014可更新列存储索引——存储机制
- 【国内独家首发】iPhone4 iOS7不完美越狱教程新鲜出炉
- js实现对比百分比
- 安卓AlertDialog的使用
- PAT-乙级-1021. 个位数统计 (15)
- JavaScript高级程序设计28.pdf
- 【bzoj1031】[JSOI2007]字符加密Cipher
- javascript 给关键字加链接
- c++17 代码你能看懂吗?
- 痞子衡嵌入式:ARM Cortex-M文件那些事(6)- 可执行文件(.out/.elf)
- Fiddler抓包【3】_设置断点修改
- 如何用python将一个时间序列转化成有监督学习
- 应急响应-GHO提取注册表快照
- svn服务器的搭建备份和还原和svnmanager的使用
- app已损坏,打不开。你应该将它移到废纸篓
- Eclipse 使用 VS快捷键