发布时间:2026/7/22 16:29:50
【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/7/22 16:29:50

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

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

2026/7/22 16:24:50

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/7/22 16:24:50

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/7/22 17:49:59

TuneUp JS核心功能解析:简化UIAutomation代码的7个实用技巧

TuneUp JS核心功能解析&#xff1a;简化UIAutomation代码的7个实用技巧 【免费下载链接】tuneup_js A JavaScript library to ease automated iOS UI testing with UIAutomation and Instruments. 项目地址: https://gitcode.com/gh_mirrors/tu/tuneup_js TuneUp JS是一…

2026/7/22 17:49:59

Dify本地部署-以Kylin-Server-V10-SP1为例

适用系统&#xff1a;Kylin Linux Advanced Server V10 (Tercel) / SP1 硬件要求&#xff1a;CPU ≥ 2核&#xff0c;内存 ≥ 4GiB&#xff08;建议 ≥ 8GiB&#xff09; 网络要求&#xff1a;可访问华为云镜像代理&#xff08;内网/隔离环境见文末离线方案&#xff09;一、前置…

2026/7/22 17:49:59

I2C总线时钟配置原理与寄存器编程实践详解

1. I2C总线时钟配置的核心原理与寄存器设计I2C总线通信的稳定性&#xff0c;很大程度上取决于SCL时钟信号的精确性。这个时钟信号并非简单地由主控制器的主频分频而来&#xff0c;它需要满足I2C协议规范中关于高低电平最小保持时间的要求&#xff0c;同时还要适应不同从设备的速…

2026/7/22 17:44:59

pyFDA与Amaranth结合:FPGA滤波器设计与实现

pyFDA与Amaranth结合&#xff1a;FPGA滤波器设计与实现 【免费下载链接】pyfda Python Filter Design Analysis Tool 项目地址: https://gitcode.com/gh_mirrors/py/pyfda pyFDA&#xff08;Python Filter Design Analysis Tool&#xff09;是一款强大的滤波器设计与分析…

2026/7/22 9:29:13

Unity与Python本地通信:基于Flask的跨语言数据交换实战

1. 项目概述&#xff1a;为什么我们需要一个本地通信服务器&#xff1f;在游戏开发、数字孪生、仿真训练等众多领域&#xff0c;Unity作为强大的实时3D内容创作平台&#xff0c;其核心逻辑通常由C#驱动。然而&#xff0c;当我们需要进行复杂的数据分析、机器学习推理、科学计算…

2026/7/22 0:02:17

抓包代理链路下的 TLS 指纹变化分析 TLSFOWARD抓包工具

抓包代理链路下的 TLS 指纹变化分析&#xff1a;为什么调试环境会影响访问结果 摘要 在网页调试、接口联调、自动化巡检和授权采集排查中&#xff0c;抓包是常见手段。但很多开发者会遇到一个现象&#xff1a;正常访问页面时没有问题&#xff0c;一进入抓包或代理调试环境&…

2026/7/22 0:02:17

微信QQ聊天记录误删恢复与备份方案全指南

1. 聊天记录误删的常见场景与恢复思路作为一名长期关注数据安全的技术博主&#xff0c;我处理过上百起聊天记录误删的求助案例。手机误操作、系统升级失败、设备损坏是三大常见诱因。上周就遇到用户更新微信时断电&#xff0c;导致近两年的工作群聊记录全部消失的极端案例。不同…

2026/7/22 0:02:17

2026最新8款个人AI编程免费工具深度实测

作为一名全栈独立开发者&#xff0c;我最近半年一直在折腾副业项目&#xff0c;每个月在AI编程工具上的订阅费算下来其实也不算便宜。作为个人开发者&#xff0c;我们追求的就是用最少的成本获得最高效的开发体验。TRAE 基础版免费&#xff0c;字节跳动出品的国内首款 AI 原生 …

2026/7/21 20:02:44

3个高效策略:快速掌握Axure中文界面配置

3个高效策略&#xff1a;快速掌握Axure中文界面配置 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面感…