Unity之ASE实现边缘光效果

本文详细介绍了如何在Unity中利用ASE(Shader Graph)实现边缘光和人体表皮的Rim效果。通过理解菲涅尔反射原理,结合Fresnel节点创建边缘光流动效果,并展示了简单直观的ASE连线图。文章还探讨了ShaderType Surface类型的使用,以及如何将菲涅尔效果应用于皮肤的Emission通道,以达到细腻的皮肤质感。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.前言

今天来实现一个简单的边缘光效果,可以应用与物体表面的一种荧光外溢的效果,特别是用在人的身体表面,会让人的皮肤更细腻,更好看。
物体上效果如下:
在这里插入图片描述
人体表面效果如下:
在这里插入图片描述
我们可以看到,这种人体表面的泛光效果,在游戏中是用处非常广泛的,会让皮肤看起来更透亮,效果更好。

二.实现原理

实现原理如果但从ASE来讲,其实挺简单,就是使用菲涅尔Fresnel节点,菲涅尔节点的用处非常广泛,所以我们先来说一下它是怎么来的。

菲涅耳反射描述了一种光学现象,即当光线照射到物体表面上时,一部分发生反射,一部分进入物体内部,发生折射或散射。被反射的光和入射光之间存在一定的比率关系,这个比率关系可以通过菲涅耳等式进行计算。

一个经常使用的例子是,当你站在湖边,直接低头看脚边的水面时,你会发现水几乎是透明的,你可以直接看到水底的小鱼和石子。但是,当你抬头看远处的水面时,会发现几乎看不到水下的情景,而只能看到水面反射的环境。这就是所谓的菲涅耳效果,几乎任何物体都或多或少包含了菲涅耳效果。

下面来看一个我用单个节点拼成的Fresnel节点,

### 实现外发效果的关键要素 在Unity Shader Graph中创建外发效果主要依赖于几个核心概念和技术。为了达到理想的视觉效果,通常会利用到尔效应(Fresnel Effect),该技术能够增强物体边缘的亮度,从而模拟出自然的外发现象[^3]。 对于具体的实现方法,可以采用Add节点而非Multiply节点来处理照贴图与基础材质颜色之间的混合操作。这是因为照贴图往往仅强调发区域,其余部分保持为黑色;若采取相乘方式,则可能造成原有色彩信息的部分丧失。因此,通过添加的方式可以在保留原始纹理特征的同时叠加额外的芒层次[^4]。 另外,在Shader Graph内部定义一个名为`Outline Effect`的浮点数参数用于控制轮廓偏移量即所谓的“边缘厚度”。此参数需链接至Tiling and Offset节点内的Offset属性(X轴对应红色通道R, Y轴关联绿色通道G),以此调整图像边界向外扩展的程度并形成明显的晕感[^5]。 下面给出一段基于上述理论构建简单版外发着色器的具体步骤: #### 创建基本结构 启动Shader Graph编辑窗口后,选择合适的模板作为起点(例如Unlit或Lit)。接着按照需求搭建起整个计算流程框架。 #### 添加必要的输入变量 引入两个重要参数:“Emission Color”用来指定发射线的颜色,“Edge Thickness”负责设定外围亮带宽度。 ```csharp // Emission color property definition Vector1 EdgeThickness; Color EmissionColor; ``` #### 构建逻辑运算路径 依次加入如下组件: - **Screen Space Normal**获取屏幕空间法线向量; - **Dot Product**计算视角方向和平面法线夹角余弦值; - **One Minus**取反得到最终参与调制的比例因子; - **Smoothstep**平滑过渡函数确保渐变更加柔和自然; - **Fresnel Effect**应用学模型增加真实度; - 使用**Add**节点将经过处理后的强度信号累加到初始Albedo之上完成整体合成过程。 最后别忘了把修改过的Surface Description传递回去供后续渲染管线进一步加工处理。 ```python float fresnelTerm = FresnelEffect(ViewDir, ScreenSpaceNormal); fresnelTerm = Smoothstep(0.75, 1.0, OneMinus(fresnelTerm)); finalEmissive += EmissionColor * (fresnelTerm * EdgeThickness); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TxNet.Ltd.

你的赞同是对我的鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值