@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

 
 

Construct

struct FConstructorStatics

{

FText NAME_Math;

FConstructorStatics()

: NAME_Math(LOCTEXT("Math", "Math"))

{

}

};

static FConstructorStatics ConstructorStatics;

 
 

#if WITH_EDITORONLY_DATA

MenuCategories.Add(ConstructorStatics.NAME_Math);

#endif

 
 

 
 

Compile

关于Compile(案例中直接用了原来ABS的代码)

留心的话会知道在前一篇提到了FHLSLMaterialTranslator,其中FHLSLMaterialTranslator也是继承了MaterialCompile.完成实现。(当然也可以重新书写一个MaterialCompile)

 
 

FHLSLMaterialTranslator::ABS

 
 

 
 

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

}

 
 

(原) MaterialEditor部- UmateriaEditor中 Node编译过程和使用(3)修正的更多相关文章

  1. (原) MaterialEditor部- UmateriaEditor中 Node编译过程和使用(3)

    @author: 白袍小道 转载说明原处 插件同步在GITHUB: DaoZhang_XDZ         说明 1.本篇是接着-----(原) MaterialEditor部- UmateriaE ...

  2. (原) MaterialEditor部- UmateriaEditor中 Node编译过程和使用(1)

    @author: 白袍小道 转载说明原处 插件同步在GITHUB: DaoZhang_XDZ     最后YY需求(手滑) 1.在理清楚基础套路和细节后,自定义纹理资源,并加入到现有UE材质系统 2. ...

  3. (原) MaterialEditor部- UmateriaEditor中 Node编译过程和使用(2)

    @白袍小道 转载说明原处 插件同步在GITHUB: DaoZhang_XDZ     需求: 1.梳理FexpressionInput和Output的编译和链接(套路和逻辑目的) 2.如何做到节点编译 ...

  4. (原) MatEditor部- UmateriaEditor中Texture使用过程(1)

    @author: 白袍小道 转载说明原处 插件同步在GITHUB: DaoZhang_XDZ     最后YY需求(手滑)(开黑前弄下,充数,见谅) 1.在理清楚基础套路和细节后,自定义纹理资源,并加 ...

  5. 【Android】源码external/目录中在编译过程中生成的文件列表

    => external/eyes-free:   accessibilityvalidator.jar (host,share) => external/mesa3d:   libMesa ...

  6. 第48章 MDK的编译过程及文件类型全解—零死角玩转STM32-F429系列

    第48章     MDK的编译过程及文件类型全解 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.co ...

  7. 第48章 MDK的编译过程及文件类型全解

    Frm: http://www.cnblogs.com/firege/p/5806134.html 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教 ...

  8. MDK 的编译过程及文件类型全解

    MDK 的编译过程及文件类型全解 ------(在arm9的开发中,这些东西都是我们自己搞定的,但是在windows上,IDE帮我们做好了,了解这些对深入开发是很有帮助的,在有arm9开发的基础上,下 ...

  9. [译]C++, Java和C#的编译过程解析

    1.1.1 摘要 我们知道计算机不能直接理解高级语言,它只能理解机器语言,所以我们必须要把高级语言翻译成机器语言,这样计算机才能执行高级语言编写的程序,在接下来的博文中,我们将介绍非托管和托管语音的编 ...

随机推荐

  1. M4修改外部晶振8M和25M晶振的方法

    共计修改三个参数: 1.HSE_VALUE   具体位置在stm32f4xx.h中 2.PLL_M          具体位置在system_stm32f4xx.c中 3.Keil编译器 工程的Opt ...

  2. Spring Bean自动注册的实现方案

    这里Spring管理的Bean,可以认为是一个个的Service,每个Service都是一个服务接口 自动注册Service的好处: 1.根据指定的name/id获取对应的Service,实现简单工厂 ...

  3. 常用的layer弹出层

    本文来自 松耦合 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/dunegao/article/details/78978448?utm_source=copy 常用 ...

  4. DBUtils连接池,websocket

    1.mysql数据库连接池 概念:数据库连接池(Connection pooling)是程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由程序动态地对池中的连接进行申请,使用,释放. 这样 ...

  5. GPUImage源码解读之GPUImageFramebuffer

    简介 OpenGL ES的FrameBuffer是渲染发生的地方,普通的2D图形的渲染默认发生在屏幕上:而三维的图形渲染则除了包括像素点的颜色,还有Depth Buffer,Stencil Buffe ...

  6. Mysql 之 MERGE 存储引擎

    MERGE 存储引擎把一组 MyISAM 数据表当做一个逻辑单元来对待,让我们可以同时对他们进行查询.构成一个 MERGE 数据表结构的各成员 MyISAM 数据表必须具有完全一样的表结构.每一个成员 ...

  7. PHPStorm等编辑器debug调试(包括使用postman、soapUI)

    很多人在开发的时候,需要进行断点调试,但是很多人配置了很多,还是调试不了,其实是不需要这么麻烦的. 注意:PHPStorm等编辑器debug的配置不用进行任何配置,默认配置就好 实质上,断点调试的时候 ...

  8. Django学习笔记1

    重点在注释# 1.views.py from django.shortcuts import render from django.http import * #from django.templat ...

  9. Java中connection的常用方法及其描述是什么

    1. close(), 关闭该数据库连接2. commit(), 提交所有更改内容并释放该Connection对象锁定的资源3. createStatement(), 基于本Connection对象, ...

  10. Thinkphp5 使用composer中seeder播种机

    前因: 前几天,客户要求做一个会员问答的系统,我就按流程做了,到了需要调用数据库数据时,觉得一个个添加又有点笨~ 解决过程: 后来查了查手册,看看国外blog案例,我搞出来了个不错的方法~~~ 我的使 ...