UE5 材质节点 十字光斑效果

近期看见一十字光斑教程,通过对传入UV进行变化在SphereMask阶段实现变化:

(出处:https://www.bilibili.com/video/BV1jjSmBDE2n)

饶有兴趣,拆解研究下。

1.本质是UV传入阶段对UV进行修改,首先将UV转换到-1 - 1区间,加上abs节点实现镜像。

2.如果再加上幂运算,可以实现曲线式的分布

3.绘制出来可以理解

4.原版中最后一步用了SphereMask,于是借助AI提取了UE SphereMask伪代码:

复制代码
函数 GenerateHLSLExpression(Generator, Scope, OutputIndex, OutExpression):
    // 获取 A 和 B 的 HLSL 表达式
    ExpressionA = 获取 A 的 HLSL 表达式
    ExpressionB = 获取 B 的 HLSL 表达式

    // 如果 A 或 B 无效,则返回失败
    如果 ExpressionA 或 ExpressionB 为空:
        返回 False

    // 计算 A 和 B 之间的距离
    ExpressionDistance = 计算 A 和 B 之间的距离

    // 获取 Radius 的 HLSL 表达式(或常量),并确保其有效
    ExpressionRadius = 获取 Radius 的 HLSL 表达式 或 使用 AttenuationRadius 常量
    ExpressionRcpRadius = 计算 1 / 最大(表达式 Radius, 0.00001)

    // 归一化距离(使用半径进行缩放)
    ExpressionNormalizedDistance = 距离 * 1 / 半径

    // 获取 Hardness 的 HLSL 表达式(或常量),并转化为百分比
    ExpressionHardness = 获取 Hardness 的 HLSL 表达式 或 使用 HardnessPercent 常量 * 0.01

    // 计算 Softness,Softness = 1 - Hardness
    ExpressionSoftness = 1 - Hardness

    // 计算 Softness 的倒数,避免除以零
    ExpressionRcpSoftness = 1 / 最大(Softness, 0.00001)

    // 计算 1 - 距离
    ExpressionOneMinusDistance = 1 - 距离

    // 最终的表达式计算:根据 Softness 和 1 - 距离 生成遮罩效果
    OutExpression = Saturate( (1 - 距离) * (1 / Softness) )

    返回 True

似乎比较麻烦,但仔细一想直接上smoothstep应该也行。

4.所以最后再加上smoothstep提取发光区域即可完成,这个效果核心就是用power修改传入uv。

相关推荐
日月云棠10 小时前
UE5 Lyra Teams模块深度分析:从队伍创建到伤害判定的完整链路
ue5
2401_8595062416 小时前
需求分析、节点确认、过程透明——我用做项目的思路选了一家玉雕工作室
材质
日月云棠3 天前
UE5 Lyra Inventory 物品系统模块深度分析——从数据定义到网络同步的完整链路
ue5
日月云棠4 天前
UE5 Lyra Weapons 模块深度分析——从装备实例到弹道散布的完整武器系统
ue5
清泓y5 天前
UE5程序化生成技术
ue5
清泓y6 天前
UE5--VR与AR开发技术
ue5·ar·vr
日月云棠6 天前
UE5 Lyra Messages 模块深度解析——从一条击杀消息看游戏事件系统的设计哲学
游戏·ue5
日月云棠7 天前
UE5 Lyra Input 模块:从手柄摇杆到技能释放,一条链路如何做到零耦合
ue5
chaojihaomai7 天前
AI电商商品图生成中的材质保真问题——扩散模型重建优先级分析与锁定式方案
人工智能·材质
xcLeigh8 天前
Unity基础:材质与纹理入门——给物体穿上“衣服“
unity·游戏引擎·材质