1.基本贴图shader:
基础贴图实现:主贴图、自发光贴图、光滑度贴图、自发光贴图(自发光还加入了颜色影响和按 钮开关).
步骤:最左侧操作组——新建texture2D——新建sample texture 2D承接图片,转接到fragment片元着色器
颜色的rgb的每个值都是[0,1]的,颜色值相乘必然会使颜色值减小(物体更暗),相加必然会使颜色值增加更加接近1(物体更亮),自发光贴图大部分区域都是小于1的值,所以和颜色相加输出。
注意:此时未用到金属度贴图,金属度贴图记得是把透明通道输出接给metallic,而不是all
将复杂的相关节点打组生成单独的部分减少混乱度。
2.外轮廓光:fresnel effect节点
创建float控制外发光程度,创建颜色用作外发光颜色调节,将菲涅尔和发光颜色通过Mutiply乘起来,菲涅尔数据比较大,通过颜色相乘得到的数值比较合理。
3.溶解:
clipfloat是控制消融程度的数值,如果需要自动消融可以用time节点的sin或者cos结合reamp节点实现。
代码控制溶解:
public float DissloveTime = 3f;
private SkinnedMeshRenderer[] _renders;
private void Start()
{
//获得所有的蒙皮网格渲染器
_renders = transform.GetComponentsInChildren<SkinnedMeshRenderer>();
StartCoroutine(Dissolve());
}
private IEnumerator Dissolve()
{
//调用获取shader参数
SetDissolveRate(0);
float time = 0f;
while (time < DissloveTime)
{
time += Time.deltaTime;
//根据时间给shader对应参数赋值
SetDissolveRate(time / DissloveTime);
yield return null;
}
}
private void SetDissolveRate(float value)
{
//获取控制溶解的float参数值
int shaderid = Shader.PropertyToID("_clipfloat");
foreach (SkinnedMeshRenderer meshrender in _renders)
{
foreach (Material materia in meshrender.materials)
{
//给控制溶解程度的参数动态赋值,控制所有skin数据变化
materia.SetFloat(shaderid, value);
}
}
}
//获取控制溶解的float参数值
int shaderid = Shader.PropertyToID("_clipfloat");
这一步需要去shadergraph里查看设置的节点id名是什么文章来源:https://www.toymoban.com/news/detail-686764.html
文章来源地址https://www.toymoban.com/news/detail-686764.html
到了这里,关于Unity ShaderGraph教程——基础shader的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!