文章目录

  • 一、前言
  • 二、最终效果
  • 三、PBR ShaderGraph中的自发光
  • 四、Unlit ShaderGraph中的自发光
  • 1、简单的加操作实现自发光
  • 2、优化版


一、前言

之前写过一篇文章:
《ShaderGraph使用教程与各种特效案例:Unity2020》
地址:

有同学留言提出一个问题:

unity 内置自发光shader unity自发光没有效果_unity


这篇文章就来解答一下。

二、最终效果

做出来的效果如下:

unity 内置自发光shader unity自发光没有效果_自发光_02


Demo工程已上传到GitHub,地址:https://github.com/linxinfa/UnityShaderGraphUnlitEmission

unity 内置自发光shader unity自发光没有效果_unity 内置自发光shader_03

三、PBR ShaderGraph中的自发光

我们先看下PBR ShaderGraphLit ShaderGraph)下的自发光效果。

没有自发光效果是这样的:

unity 内置自发光shader unity自发光没有效果_unity 内置自发光shader_04


使用自发光贴图,输入到Emmision,有了自发光效果:

unity 内置自发光shader unity自发光没有效果_unity_05


我们可以对自发光贴图做个乘法,方便调整自发光强度:

unity 内置自发光shader unity自发光没有效果_shader_06

四、Unlit ShaderGraph中的自发光

我们来看看Unlit ShaderGraph是怎样的。

Unlit ShaderGraph,没有Emission的输入,所以我们不能很方便得添加自发光效果。

unity 内置自发光shader unity自发光没有效果_自发光_07

1、简单的加操作实现自发光

如果将自发光贴图与Base Color做一个简单的加法,效果如下:

unity 内置自发光shader unity自发光没有效果_shadergraph_08


加上一个自发光强度控制,效果如下:

unity 内置自发光shader unity自发光没有效果_自发光_09

2、优化版

根据需求,是想要在基础色上层显示自发光颜色,而不是简单的加操作。也就是说,自发光的部位,不能有基础色。

按照这个思路,我们先对发光贴图做一个处理,即得到发光贴图的黑白反色图。

unity 内置自发光shader unity自发光没有效果_shader_10


使用这张黑白反色图,与基础色进行相乘,即可将基础色中发光的部位的颜色滤掉。

unity 内置自发光shader unity自发光没有效果_shader_11


然后再与发光贴图做一个加法操作,这样,发光的部位就是自发光贴图的纯颜色了。

unity 内置自发光shader unity自发光没有效果_shadergraph_12


加上自发光强度控制,当自发光越来越弱的时候,要渐渐显示回基础色。

最终节点如下:

unity 内置自发光shader unity自发光没有效果_shadergraph_13