• 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等内容,一起进步吧 

  • 相关阅读:
    1.HTML-HTML解决中文乱码问题
    lnmp架构之mysql的主从复制(一)
    有个朋友被骗了,大家要擦亮眼睛
    【毕业设计】机器视觉停车位识别检测系统 - python 深度学习
    leetcode 39. 组合总和
    免费小程序商城搭建之b2b2c o2o 多商家入驻商城 直播带货商城 电子商务b2b2c o2o 多商家入驻商城 直播带货商城 电子商务
    TorchDynamo初探②:Torch.FX调研和实践
    如何成为一名高级数字 IC 设计工程师(1-6)Verilog 编码语法篇:经典数字 IC 设计
    智能问答技术在百度搜索中的应用
    剑指 Offer 03. 数组中重复的数字
  • 原文地址:https://blog.csdn.net/qq_51701007/article/details/126442104