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。

相关推荐
zhangzhangkeji7 天前
UE5 C++(71):文件是否存在,文件夹是否存在,FPaths :: FileExists( const FString & InPath) ;
ue5
妙为7 天前
UE5角色穿过石头穿模
ue5·unreal engine5·角色穿越石头·穿模
mojugang7 天前
DC53是什么材质
材质·模具钢
yj爆裂鼓手8 天前
unity编辑器下ab包模式下textMeshPro文本不显示材质是紫色的异常,真机无异常的问题
unity·编辑器·材质
mojugang8 天前
D2对应国内什么材质
材质·模具钢
技术策划Boring8 天前
2025年工作复盘:开放世界3A项目配置管线与性能监控的探索
游戏·ue5·虚幻·p4·perforce
ct9788 天前
ThreeJs材质、模型加载、核心API
webgl·材质·threejs
zhangzhangkeji10 天前
UE5 C++(70-2):定义成员函数 getCleanDirectory(..) 和枚举类 EFileDirectoryType,来获得目录
ue5
avi911111 天前
UE4-UE5虚幻引擎-前置学习三,优化,基础CPP
ue5·ue4·游戏开发·虚幻·游戏优化·游戏代码
zhangzhangkeji11 天前
UE5线程进阶(3-2):任务图的相关源码整理。 FGraphEvent 与 TGraphTask 的区别和联系
ue5