@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"));

}

 
 

最新文章

  1. windows多线程编程星球(一)
  2. Rotate Image
  3. @font-face 的用法
  4. 模板模式与策略模式/template模式与strategy模式/行为型模式
  5. 解读SQL Server 2014可更新列存储索引——存储机制
  6. 【国内独家首发】iPhone4 iOS7不完美越狱教程新鲜出炉
  7. js实现对比百分比
  8. 安卓AlertDialog的使用
  9. PAT-乙级-1021. 个位数统计 (15)
  10. JavaScript高级程序设计28.pdf
  11. 【bzoj1031】[JSOI2007]字符加密Cipher
  12. javascript 给关键字加链接
  13. c++17 代码你能看懂吗?
  14. 痞子衡嵌入式:ARM Cortex-M文件那些事(6)- 可执行文件(.out/.elf)
  15. Fiddler抓包【3】_设置断点修改
  16. 如何用python将一个时间序列转化成有监督学习
  17. 应急响应-GHO提取注册表快照
  18. svn服务器的搭建备份和还原和svnmanager的使用
  19. app已损坏,打不开。你应该将它移到废纸篓
  20. Eclipse 使用 VS快捷键

热门文章

  1. Gradle Goodness: Changing Name of Default Build File
  2. 给出一个整数,将这个整数中每位上的数字进行反转(JavaScript编程)
  3. 新花生壳+tomcat 发布javaWeb项目【亲测有效】
  4. 分布式网上商城项目-solr搜索功能错误
  5. Pagination
  6. 【Spark】源码分析之SparkContext
  7. 入口文件 index.php 隐藏
  8. thinkphp5.0上对redis的具体操作
  9. yii学习笔记(4),获取请求数据的request组件
  10. 理解Linux系统调用