• Unity笔记(7):Shader【着色器】


    SSS笔记:shader、shake、shoot

    前篇回顾:

    角色的动画与移动

    Unity笔记(5):制作[2D]角色连帧图动画_代码骑士的博客-CSDN博客

    1、下载组件

    2、创建管线资源

     点击左侧小加号

     创建

     删除管线渲染器(因为默认生成的是3D的) 

    新建2D渲染器

     将渲染器拖入管线资源渲染列表栏中

     打开编辑,项目设置

    选择graphics,将管线资源拖入

    3、创建一个shader graph 在shader文件右键,创建材质

     将材质拖给角色

     

    新建一个2DTexture改名为MainTex 将maintex结点拖入空白处,创建新的结点sampleTexture2D

     连接结点

     

     

     点击结点,选择渲染图片,点击参考图选择Quad

    保存

     

    返回界面看到图片发生变化

     

    右键添加sample noise结点

     

    再添加combine结点

     

    再创建新结点multiply

     

     连接

     

     

     参考图,可以看到噪声已经加到上面了 

     新建结点step

    连接

     

    修改参数可以看到如下变化

     

     添加变量取名fade

    拖出并连接

     保存,进入场景可以看到角色在不断变化

     修改材质上面的参数,图片也会发生变化

     

    将mode改为slider,增加一个滑轮

     

     界面

    增加节点position

     

    space改为object

     

     连接

    增加一个scale变量(float)

     

    默认值改为40,拖出并连接

     目前的节点连接图

    目前所做的一切都是对材质的着色和渲染

     新建结点

     

    在拖出一个fade创建新结点substract

    连接

     

    新建结点substract

     连接

    再创建新结点add

     

    连接

     

    新建结点multiply

    连接

     

     新建结点multiply、color

     连接

     可以看到,结点的规律:从右向右数量依次递减,很像树形结构,并依次做加法计算。

    右键颜色结点并点击成为参数

    点击color参数修改模式为HDR

     

    可以调节颜色亮度

      

     材质栏也可以修改炫光

     点击相机,勾选

    点击管线资源勾选hdr

     

    添加volume组件

     

    点击new

     添加bloom

     勾选Intensity调节亮度

     

     非常炫酷

     

     将材质拖到其他物体同样能完成渲染

     

    接下来通过脚本实现控制材质的变化:

    点击空格发生材质变化:

    代码:

    1. using UnityEngine;
    2. public class Dissolve : MonoBehaviour
    3. {
    4. Material material;//获取材质组件
    5. bool isDissolving = false;
    6. float fade = 1f;
    7. // Start is called before the first frame update
    8. void Start()
    9. {
    10. material = GetComponent().material;
    11. }
    12. // Update is called once per frame
    13. void Update()
    14. {
    15. if (Input.GetKeyDown(KeyCode.Space))
    16. {
    17. isDissolving = true;
    18. }
    19. if (isDissolving)
    20. {
    21. fade -= Time.deltaTime;
    22. if (fade <= 0f)
    23. {
    24. fade = 0f;
    25. isDissolving = false;
    26. }
    27. material.SetFloat("_Fade", fade);
    28. }
    29. }
    30. }

     脚本拖拽到角色即可:

    so cool!

     

    场景:

     步骤:

     

     

     接下来还会更新shake、shoot等内容,一起进步吧 

  • 相关阅读:
    kafka基础-什么是kafka以及kafka中的一些基本概念
    基于JavaSwing开发图书销售管理系统 课程设计 大作业 毕业设计
    基于ssm旅社客房收费管理系统+vue
    后台任务 window.requestIdleCallback 方法的使用
    Redis客户端访问
    第三章:最新版零基础学习 PYTHON 教程(第二节 - Python 运算符—Python 算术运算符)
    SpringCloud 微服务全栈体系(十五)
    牛客小白赛60(F.被抓住的小竹)&61(E.排队)(数学+推公式)
    Java 计算两个字符串的相似度 CosineSimilarity实现
    STM32F103C8 串口的使用
  • 原文地址:https://blog.csdn.net/qq_51701007/article/details/126442104