十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

UE5 EA Texture Set

UE5 EA Texture Set 插件网址GitHub - Yeyap2513/Texture_EA: Texture Sets is a plugin developed by SEED for Unreal Engine 5, and provides an opt-in framework for building advanced, streamlined texture pipelines. · GitHub为什么要用EAEA使用的好处是指令通常返回一个float4。但这不代表它一定真的在显存里存了 4 个有效通道也不代表 GPU 对每个通道分别采样了一次。真正的浪费主要有三种贴图格式浪费如果你的贴图实际被存成RGBA8 / BC7 / BC3这类 4 通道格式但只有R有用那GBA就在浪费显存、磁盘、streaming 带宽。采样次数浪费如果你有很多单通道图Roughness.r、Metallic.r、AO.r、Cavity.r、FuzzMask.r每张都单独采样就会增加纹理采样数量。把它们打包进一张RGBAmask 贴图可以从多次采样变成一次采样。母材质维护浪费Substrate 下参数和贴图方向很多如果手动维护一堆贴图通道很容易乱。Texture Set 的价值是把“逻辑贴图”和“物理打包”分开材质里还是叫Roughness、Metallic、Normal但底层可以自动打包到合适的通道。使用流程安装好插件打开编辑器右键content空白区域点击创建TextureSetDefinition资产。.这里设置需要放进去的图片具体是什么这里就把你所需要的通道重组成了三张贴图而且还有很多空余位置你还可以往里面放更多的mask图来减少总的采样贴图的次数在材质里面创建出来对应的TextureSet材质函数并把刚才的Definition放进材质函数的插槽里面就可以正常使用了我们可以看到正好就采样了3次PS级别的贴图总共三个贴图在这里合成如何自定义channel创建两个自定义module数据定义就有对应的名称和贴图可以放了当你要用多个texture set sample的时候你会发现相同的材质函数下材质函数内的变量名称完全相同最终只能用到一个材质变量不能每个材质函数中都对应一个材质函数变量外卖找到对应的TextureSetSample函数找到里面的parameter name的变量不同材质函数填写不同材质变量它会给每个材质函数中的变量进行parameter name的字符串添加从而每个材质函数的变量能够名字不同从而显示到材质实例里面每个进行单独调整简单说一下原理EA 的Parameter Name不需要修改引擎源码因为 EA 的 Texture Set 节点并不是普通材质函数节点而是插件用 C 创建的自定义材质表达式。它的类是UMaterialExpressionTextureSetSampleParameter : public UProceduralMaterialFunction插件自行添加了UPROPERTY(EditAnywhere, CategoryParameter) FName ParameterName;所以 Details 面板里能看到Parameter Name。[源码位置 (line 21)](D:/UEProject/SubstrateTest/Plugins/Texture_EA-main/Source/TextureSets/Public/MaterialExpressionTextureSetSampleParameter.h:21)它再根据这个名称生成内部纹理参数TEXSET_ParameterName_PACKED_0 TEXSET_ParameterName_PACKED_1普通材质函数使用的是引擎内置的UMaterialExpressionMaterialFunctionCall这个类本身没有每次调用独立的ParameterName属性。如何自定义一个module每次都要自己写一大堆内容我将我的最小的substrate材质和其他最小的substrate材质进行bsdf混合的时候我希望换对应texture set sample对应的输入我就会换掉对应的Default Texture Set但是这个Default Texture Set和资产是强绑定的需要重新创建一个Texture Set Definition新的Texture Set Definition创建过后又需要重写写Custom Element Module会导致很麻烦所以有一个资产叫Texture Set Element Collection打开创建自己的一套模板然后在Texture Set Definition中module里面选择Texture Set Element Collection Module把之前设置好的Texture Set Element Collection Module放进去就可以直接把数据定义给筛进去不用重复写了当你修改了Default Texture Set的贴图贴图没生效如何解决1、暴力重启引擎2、找到对应修改后贴图的Default Texture Set对应的材质函数Texture Set Sample去把Texture Set Definition撤回重新放进去即可生效推荐不要为了塞满通道把采样条件不同的数据硬塞一起。比如这些不适合强行打包在一张图里一个需要 UV0一个需要 UV1一个需要高分辨率一个低分辨率就够一个需要 sRGB一个必须 Linear一个是 Normal 压缩一个是 Mask 数据一个需要三平面采样一个只需要普通 UV 采样一个需要频繁变化一个是静态贴图尤其 Normal如果用 UE 的 Normal 压缩通常更适合 BC5只可靠存 XY。你不能指望 Normal 的 B/A 顺便塞 Roughness因为压缩格式和解码逻辑不适合。所以你的结论可以这样整理Texture Set 很适合做自动通道打包自动压缩格式管理减少贴图数量减少无效 Alpha 存储统一角色/武器/布料/皮肤的贴图规范给 Substrate 母材质提供稳定输入但它不适合幻想成运行时让 GPU 只采 RGB 不采 A一个 Texture Set 覆盖所有材质类型把所有 Substrate 特性都塞进一个超级母材质任意通道混装都没有代价
返回列表