【UE5】在材质Custom写函数的方法:结构体封装法 泡芙注入法

发布时间:2026/10/21 22:40:10

【UE5】在材质Custom写函数的方法:结构体封装法 泡芙注入法 UE材质的Custom本身会构建为函数所以并不能在Custom定义函数但当然还是有办法的总结一些在custom写函数的方法常规办法常规办法就是使用结构体作为函数使用以一个Lerp功能函数演示让我们看看写法structVolBlendFunc//定义结构体{//在结构体中新建“结构体变量”,这里的变量名和 Custom 输入的变量无关floatA;floatB;//新建一个“函数”这里的写法和函数基本一样floatBlend(floatPos){returnlerp(A,B,Pos);}};VolBlendFunc VolSample;//为结构体起名“//使用VolSample.AA;//将“参数A”设置到“结构体变量A”VolSample.BB;returnVolSample.Blend(x);//和使用函数的方式基本一样,这里的x是custom输入的x设置到了Pos根据用法还有很多写法这是另一种写法structBaseNumFunc//定义一个结构体。{floata;float2 b;float3 c;float4 d;BaseNumFuncNum()//定义一个函数块。{BaseNumFunc l;//将结构体命名为l方便后续调用结构体中的变量l.a1;l.bfloat2(0.5,0.1);l.cfloat3(1,1,0);l.dfloat4(1,0,1,1);returnl;}}BaseNum;//返回结构体的名字。aBaseNum.Num().a;bBaseNum.Num().b;dBaseNum.Num().d;returnBaseNum.Num().c;//调用结构体中的函数里设置的数据。学会了吗很难用别学。直接看下面的泡芙注入↓泡芙注入原理这是一种利用Custom特性用作弊手法将任何东西写入HLSL的实现。先看看原理例如你写了一个floatClerp(A,B,X);returnC;它会被编译为一个函数CustomExpressionIndex正常来说后续你可以通过CustomExpression0来调用这个函数但在编译时是无法控制编译器会将哪个Custom编译到什么index导致风险相当大但如果我们这么写呢return0;}floatBlend(floatPos){returnlerp(A,B,Pos);会发现他是原样写在了这里但你会注意到Custom自动生成的CustomExpression0看上去被我们直接结束了而下面的内容刚好构成了新的函数这种作弊方法正是利用了这个特性把任何东西写入HLSL包括函数写入只需要先写上return 0;}后面随便写任何HLSL的东西最后记得编译器在生成CustomExpression时会补一个}“因此最后一个”}不写return0;}//先手一个大比斗将其扇懵floatFA(floatPos)//写了一个函数{returnlerp(A,B,Pos);}floatFB(floatPos)//又写一个函数{returnlerp(A,B,Pos);//最后一个“}”不写等编译器自动补使用连法1“0法”那么实际使用时就是这样“加法”是为了在编译时会带着这个custom这个custom输出0(大比兜的值)一个0的操作没有性能损耗如果不连接这个Custom会作为无用节点被优化掉的return0;}//先手一个大比斗将其扇懵然后对HLSL进行疯狂的注入/**接下来你可以在HLSL里写任何东西不限于函数 //例如你可以写 #if !MATERIAL_LWC_ENABLED #define UE_DF_FORCE_FP32_OPS 1 #endif //也可以加include #include /Engine/Private/xxxx.ush **///用注释画画都行把hlsl疯狂注入成泡芙floatMyFLerp(floatX,floatY,floatPos)//写多少函数都行{returnlerp(X,Y,Pos);//总之切记最后一个“}”不写编译器需要补一个连法2“引脚法”还有一种方式在使用函数的CustomB开放一个没用的函数输入(引脚名无所谓)将泡芙CustomA连上也是可以防止CustomA被优化掉:相比0的方法优点是减少了一次0。缺点是让Custom节点之间有了某种实际上不存在的因果关系。取决于你的喜好了。如果注入的并不是函数如果你注入的内容不包括函数需要对结尾进行设计因为Custom必补一个}我喜欢用void(){收尾例如想在这画个画,Custom效果如下:编译结果其他玩法切换函数因为Switch是静态切换(在实际编译前)所以能做到这样的事。啊为啥叫泡芙注入啊Shader:这是泡芙↓
延伸阅读

更多相关文章

2026/10/21 7:22:20

速度最快的网线已经来了,为什么大多数家庭依然不用它

很多人在升级家庭网络时,都会遇到一个共同的问题:既然买网线,不如一步到位,直接选择速度最快的产品。如今电商平台上,Cat8网线已经越来越常见,不少商家都会打出"40Gbps高速传输"“电竞专用”"未来十年不用换"等宣传语,让不少用户认为数字越大,性能…

2026/10/22 11:44:24

P1049 [NOIP 2001 普及组] 装箱问题

记录157 #include<bits/stdc.h> using namespace std; int n,v,a[35]; int min_remain2e410;// 记录最小剩余空间&#xff0c;初始化为一个比V大的数 void dfs(int remain_v,int num){// remain_v: 当前剩余体积, num: 当前考虑到了第几个物品if(num>n){ // 1. 终止…

2026/10/22 2:43:08

P1071 [NOIP 2009 提高组] 潜伏者

记录156 #include<bits/stdc.h> using namespace std;int main() {// 优化IO速度ios::sync_with_stdio(false);cin.tie(0);string s1,s2,s3;cin>>s1>>s2>>s3;// 1. 定义两个 map// decode_map[密文字符] 明文字符map<char,char> decode_map; /…

2026/10/22 11:45:05

插件化架构实战:knowledge-work-plugins 核心设计与落地避坑指南

1. 从"知识工作插件"这个命名说起&#xff1a;它到底想解决什么问题第一次看到"knowledge-work-plugins"这个命名&#xff0c;我的直觉是&#xff1a;这不是一个具体工具&#xff0c;而是一类架构思路的统称。它指向的是把知识工作者的日常操作——写文档、…

2026/10/22 11:45:05

pyshark调用tshark实现WEP/WPA无线流量解密实战指南

抓包的时候最烦的就是遇到加密的 WiFi 流量——明明 HTTP 请求就在眼前&#xff0c;打开却是满屏的 802.11 协议乱码&#xff0c;DNS、TCP 全被藏在密文后面。以前我处理这种问题都是打开 Wireshark 图形界面&#xff0c;点鼠标配置解密密钥&#xff0c;可一旦要批量分析几十个…

2026/10/22 11:45:05

数控中专生考证全指南:从初级到技师,路线、方法与避坑

“学数控的中专生&#xff0c;到底该考哪些证&#xff1f;先考哪个&#xff1f;考到什么程度够用&#xff1f;”每年到实习季&#xff0c;我都能收到一大堆类似的问题。学校老师说的是一套&#xff0c;网上培训机构说的是另一套&#xff0c;进了工厂老师傅又有一套说法&#xf…

2026/10/22 11:45:05

UART的Verilog实现全解析:从RTL设计到仿真验证的工程实践

1. UART项目整体设计与模块划分思路我做过不少UART相关的项目&#xff0c;从简单的调试口到完整的通信协议栈都有涉猎。这个标题看起来基础&#xff0c;但UART这个东西属于典型的"看着简单&#xff0c;落地全是坑"的模块——波特率怎么分频、接收端怎么采样、帧格式怎…

2026/10/22 11:45:05

STC51串口通信与RS485总线实战指南:从原理到避坑

1. 串口通信为什么是嵌入式里的“万能胶”做了这么多年单片机开发&#xff0c;要说哪个外设用得最勤、最容易翻车、也最绕不开&#xff0c;串口绝对排第一。STC51这个芯片&#xff0c;到现在还在大量项目里用&#xff0c;原因很简单&#xff1a;便宜、稳定、资料多&#xff0c;…

2026/10/22 11:40:04

华为LTE网优L3-2题库的实战诊断方法论

简介&#xff1a;本资源是一份面向通信工程从业者、LTE网络优化工程师及备考华为L3认证人员的专业题库解析文档&#xff0c;聚焦5G演进前的LTE网优核心考点与实操排错逻辑。内容涵盖传播延时建模、PCI冲突影响、MBSFN参考信号配置、VoLTE/CSFB改造对比、RRU-BBU传输故障诊断工具…

2026/10/22 11:29:28

金融AI落地指南:从调研报告到技术选型与工程实践

简介&#xff1a;这份PDF报告聚焦2025年金融服务业中国AI现状与趋势&#xff0c;面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者&#xff0c;帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件&#xff0c;大小约1…

2026/10/22 0:01:49

电商智能运营体系从0到1:架构设计、落地步骤与避坑指南

前两年我们团队接了一个电商平台的运营中台项目&#xff0c;目标很直白&#xff1a;把过去靠运营拍脑袋做的选品、定价、发券、推活动这些事&#xff0c;逐步用数据算法和自动化流程代替。项目名字内部就叫“电商智能运营体系”。最近有不少朋友问我当时是怎么设计的、踩过哪些…

2026/10/22 0:01:49

若依框架AI代码生成不稳定?用Agent Skill三层结构+五步法搞定

最近一段时间&#xff0c;我一直想把后台管理系统里那些机械重复的增删改查代码交给AI去写。框架用的是若依&#xff0c;按理说这类业务代码模式非常固定&#xff0c;应该是AI最擅长的事情。可真试下来却不是那么回事——你让AI生成一个用户管理模块&#xff0c;它给出的Contro…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑