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。

相关推荐
AI视觉网奇1 天前
3d 数字人 ue metahuman 换脸 换身体
笔记·学习·ue5
AI视觉网奇1 天前
ue5.6 推送视频流
ue5
zhangzhangkeji2 天前
(12)GetPlayerPawn(..) 与 GetPlayerCharacter(..) 这俩函数啥区别 ?
ue5
zhangzhangkeji3 天前
UE5 多线程(6-2):多线程方面的出现的类的整理
ue5
郁闷的网纹蟒3 天前
虚幻5---第13部分---敌人
开发语言·c++·ue5·游戏引擎·虚幻
qq_421813793 天前
深度解析全钢防静电地板材质、分类与核心应用场景
材质
Vince丶3 天前
UE 自定义Plugins插件遇到的问题
笔记·ue5
AI视觉网奇3 天前
uemetahuman 插件学习笔记
笔记·学习·ue5
电子云与长程纠缠3 天前
UE5 DistanceToNearestSurface节点使用
ue5