一、什么是Shader?

Shader的中文名叫着色器。

二、什么是着色器?

着色器的作用:这个世界是3D的,包括在Unity的场景中,我们建的球球,方块块之类的,都是3D的,但是,屏幕是2D的,把3D的东西,通过颜色的汇总,显示在2D的屏幕上。

三、颜色是怎么汇总的?

想知道颜色是怎么合到一起的,我们就找个图片,把它拆开看。

因为世界上所有的颜色,都可以通过三种颜色(红绿蓝)组合出来。

所以我们也把图片拆成这三种颜色。

1.拆图片

所有图片都是由四部分组成

R 红色、G 绿色、B 蓝色、A 透明

比如下面这个图:

R(红色)的部分:

G(绿色)的部分:

B(蓝色)的部分:

A(透明)的部分:

这里解释一下A:

A的意思是黑色的部分就没有图片,是透明的,就是图中的

白色的部分就是图片可以显示,有什么图片就显示什么图片

总结一下就出现了经典的话:黑透白不透

2.颜色组合

我们每个位置,把这四种组合起来,就能出现不同的颜色(如下)

然后,把想要的颜色,上到屏幕上指定的位置,就变成了我们想要的图案。

四、图片是怎么动起来的?

1.举个例子

上面的圆形,就是不停的换显示的图片。

这里还不理解,可以看下面的链接

【手翻书】悲伤的小人_哔哩哔哩_bilibili

2.对于着色器来说

每张图片,对着色器来说,就是把颜色显示在不同的地方。

所以,对着色器来说,让图片动起来,就是改变颜色原本的位置。

所以,如果我们希望火焰上下动起来,我们只需要改其中一个颜色的位置。

因为火焰是红色为主的,所以改红色效果会最明显。

那么我们让火焰R图(如下图)的透明框一会变大一会变小,那显示的火焰就会一会大一会小。

还可以左右改变位置:比如我们让其他图继续严丝合缝的拼,但是把上图循环的从居中位置,往左偏一点,那火焰的颜色就会改变,右边被移开的一小部分就没有红色了,左边因为红色位置改变了,和之前的颜色颜色就会有改变,就会出现一些动态的效果。

真正的火焰燃烧时,每个位置的颜色不可能都一直保持一致,一会黄一会红,才有烧的感觉,这种情况就让红色错位就能做到了

五、着色的分类

1.顶点着色器

下图是一个颜色渐变的线,在画这个线的时候,我们一般只管点(箭头指的)的颜色,中间的颜色就是根据情况过度过去的。

结论:知道两个点的颜色,可以填出一个线的颜色。

2.几何着色器

下图是一个渐变的面,当我们用顶点画出了渐变的线,渐变的线和线之间,就可以填出渐变的面。

结论:得到渐变的线,就可以填出渐变的面。

3.细分着色器

我们往往不是做特别简单的一个面,我们可能做圆的,弧面,歪七扭八的,这时候,我们需要进一步让这个面更像我们希望的样子,就用这个着色器。

4.像素着色器

到了上一步,物体基础的颜色,已经出现了,但是,物体会在不同的环境下,收到反光,太阳,等其他颜色的影响,可以理解为几个颜色融合到一起,这时候就用到了像素着色器。

5.上色步骤汇总

这些个步骤放一起,也叫shader,毕竟他们只是为了一种东西染色。

六、Unity当中我们使用的着色器

1.多个一套着色器

首先,不同的物体会用不同的着色器。

比如,石头用石头的着色器,水面有水面的着色器,可以想象,一个场景里会有很多个着色器(shader),那么,unity不可能把所有shader都收录进来,那软件得多大,所以,unity就给他收集了一部分帮助大家日常使用。

那么这些好多个shader在一起,起了个名字叫做渲染管线。

举个例子:一个美女叫美女,好多个美女在一起,有可能叫女团。

2.unity当中的渲染管线

unity的考虑:

a.我们既然放了一些shader,所以你们可以考虑只用我们的shader。

b.如果你对我们的shader不满意,那么你可以自己建立shader。

c.如果你不光不满意我们的shader,你还觉得清晰度不够,那么我们不光让你自己建,我还能让你超高清。

备注:为啥不直接用c呢,看着就知道c好,啥都有。但是c大呀,就为啥有大小不一样的杯子,你不能办公室喝水,抱个水桶干吧。

所以unity就开了不同种的渲染管线,让你自己选择。

分别叫做:

​​​​​​​

Unity | Shader基础知识(什么是shader)相关推荐

  1. 《Unity 3D 游戏开发技术详解与典型案例》——1.1节Unity 3D基础知识概览

    本节书摘来自异步社区<Unity 3D 游戏开发技术详解与典型案例>一书中的第1章,第1.1节Unity 3D基础知识概览,作者 吴亚峰 , 于复兴,更多章节内容可以访问云栖社区" ...

  2. Unity Mesh基础知识

    Unity Mesh基础知识 什么是Mesh Mesh的组成部分 利用Mesh创建一个Cube 创建Cube 顶点坐标 渲染 转载链接 什么是Mesh     Mesh是指的模型的网格,3D模型是由多 ...

  3. Unity资源管理——基础知识整理

    部分参考自: Unity - Manual: Unity User Manual 2021.3 (LTS) UWA | 致力于游戏VR和AR应用提供项目研发解决方案 | 简单优化.优化简单 | 侑虎科 ...

  4. Unity3D中的shader基础知识

    1.Unity中配备了强大的阴影和材料的语言工具称为ShaderLab,以程式语言来看,它类似于CgFX和Direct3D的效果框架语法,它描述了材质所必须要的一切咨询,而不仅仅局限于平面顶点/像素着 ...

  5. 【笔记】Unity优化 基础知识

    目录 Find 和 FindObjectOfType Camera.main 按 ID 寻址 与 UnityEngine.Object 子类进行 Null 比较 矢量和四元数数学以及运算顺序 使用非分 ...

  6. Unity Mesh基础系列(一)生成网格(程序生成)

    目录 1 渲染事物 2 创建顶点网格 3 创建Mesh 4 生成附加顶点数据 本文主要内容: 1.创建一个点阵网格 2.用协程分析点阵网格的位置 3.用三角形定义表面 4.自动生成法线 5.增加纹理坐 ...

  7. Unity3d基础知识之Texture纹理、Shader着色器、Material材质、Rendering Mode

    Unity3d基础知识之Texture纹理.Shader着色器.Material材质.Rendering Mode 一.纹理.着色器与材质 Texture(纹理):应用于网格表面上的标准位图图像.Un ...

  8. Shader的基础知识

    管线渲染 定义:图形数据在GPU上经过运算处理,最后输出到屏幕的过程 1. 顶点处理: 接收模型顶点数据.坐标系装换 2. 图元装配: 组装面.连接相邻的顶点,绘制为三角面 3. 光栅化 :计算三角面 ...

  9. Unity之Shader基础探索

    Unity之Shader基础探索 一.什么是Shader? 1.Shader的开发语言 2.着色器用途 3.着色器的编辑 4.着色器性能分析工具 5.着色器编译 6.异步着色器的编译工作原理 7.内置 ...

最新文章

  1. UA PHYS515A 电磁理论IV 时变电磁场理论6 用含时Green函数求解时变电磁场问题的例子
  2. CodeForces - 557E(trie
  3. js实现无缝循环滚动
  4. 玩转控件:封装Dev的LabelControl和TextEdit
  5. LeetCode 362. 敲击计数器(map)
  6. 【Java面试题】49 垃圾回收的优点和原理。并考虑2种回收机制。
  7. UE4的编译配置详解
  8. Struts--result详解
  9. 684.冗余连接(力扣leetcode) 博主可答疑该问题
  10. 期货量化交易程序CTP入门指南 二
  11. 机器学习源代码_机器学习中程序源代码的静态分析
  12. IME 消息 函数 常量
  13. Java导入导出功能
  14. 寒武纪“失速”,是AI芯片行业的阵痛?
  15. 【UNITY3D 游戏开发之五】Google-protobuf与FlatBuffers数据的序列化和反序列化
  16. 北鲲云超算平台为生命科学的发展赋能,24小时完成10亿规模分子库筛选全流程
  17. 创建一个动态空间存储未知大小的二维数组
  18. Spring AOP思想的理解和简单实现
  19. Unity 接入百度AI - 红酒识别
  20. 《C++ Primer》习题参考答案:第6章 - C++模块设计——函数

热门文章

  1. linux 命令切换显卡,linux 切换显卡
  2. Android中的四大组件详解
  3. Android 日历开发教程[三]
  4. es 时间字段聚合_ES按时间聚合、嵌套聚合
  5. Centos 7.5安装safe-rm,防止rm -rf /命令误删除文件
  6. 银行ATM存款机系统
  7. 最新emoji表情代码大全_8月最新早安祝福语的动画表情图片大全,8月最新早安祝福语表情动态图片带字...
  8. matlab如何设置横纵坐标轴的字体粗细
  9. raspberry pi_现在您的Raspberry Pi可以给草坪浇水了
  10. 如何关闭Win10自动更新