Unity | Shader基础知识(什么是shader)_unity shader-程序员宅基地

技术标签: unity  Unity相关  游戏引擎  Unity中写shader  

 一、什么是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(着色器)和material(材质)的关系-程序员宅基地 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_49427945/article/details/127517986

智能推荐

php根据两个条件查询数据,利用PHP访问数据库——实现分页功能与多条件查询功能(示例代码)...-程序员宅基地

文章浏览阅读406次。1.实现分页功能代号名称价格require_once "./DBDA.class.php";  //加载数据库访问类的封装文件require_once "page.class.php";  //加载分页类的封装文件$db = new DBDA();$sql = "select count(*) from car";$arr = $db->query($szts);$page = new Pa..._php双条件任意查询

duilib视频教程_Duilib教程-HelloDuilib及DuiDesigner的简单使用-程序员宅基地

文章浏览阅读246次。一、HelloDuilib1.首先理解DUILIB显示的一个基本流程,如下图:在Duilib中,WindowImplBase这个类代表了图中“CWndClass”。所以我们需要做的是:1)生成一个XML。2)生成一个WindowImplBase对象。3)加载XML。4)显示窗口。但是编写的时候,WindowImplBase已经帮我们做了许多工作,我们只需要指定XML路径,它就能够帮助我们自动..._duilib视频教程下载

python反爬虫原理与绕过实战pdf-antispider-程序员宅基地

文章浏览阅读2.1k次。antispider 为书籍《Python3 反爬虫原理与绕过实战》配套代码详细目录和封面预览本书共 10 章,除第 1 章环境安装配置外和第 3 章爬虫与反爬虫之外,其他章节涉及的 Python 代码均记录在 antispider 中。包括:第 2 章 WEB网站的构成和页面渲染第 4 章 信息校验型反爬虫第 5 章 动态渲染反爬虫第 6 章 文本混淆反爬虫第 7 章 特征识别反爬虫第 8 章 ..._python3反爬虫原理与绕过实战pdf

t3提示服务器sa修改,登陆提示可能是刚修改过SQL Server的超级用户(SA)的口令...-程序员宅基地

文章浏览阅读3.4k次。安装软件后,登录系统管理提示: SQL Server口令此提示可能由于有时sa口令遗忘或失效,也可能是环境问题所致。首先:要分析是否设置了sa口令,或者录入的sa口令是否正确,可通过命令提示符验证sa口令。〖操作步骤〗1. 在正在连接到的计算机中打开命令提示符窗口。开始—运行—输入cmd—确定2. 在命令提示符处键入以下命令:osql -U sa注意:(1)‘U’字符一定为大写(2)这样可以通过 ..._t3 sql server口令 由于sql server的超级用户口令修改过

c语言打印乱码_C语言打印字符乱码和char *字符循环赋值时“段错误 (核心已转储)”...-程序员宅基地

文章浏览阅读520次。C语言打印字符乱码和char *字符循环赋值时“段错误 (核心已转储)”C语言打印字符乱码和char *字符循环赋值时“段错误 (核心已转储)”问题解决。1.打印字符乱码#include #include char *SYM="";void change(){char tmp[10]="SYM";printf("%d\n",tmp);SYM=tmp;}int main(int argc, char..._c for 循环中char* 乱码

eclipse的web项目tomcat启动失败问题、Thymeleaf修饰失败库存为空问题和css不起作用问题_eclipse运行web项目启动不了-程序员宅基地

文章浏览阅读567次。解决方法:eclipse的web项目中把项目里面lib文件中的jar包复制到webapp或WebContent文件下的lib里面。_eclipse运行web项目启动不了

随便推点

工控机安装linux步骤,工控机驱动安装步骤及流程说明-程序员宅基地

文章浏览阅读1.4k次。工控机调试安装流程说明:一、 手动安装Windows XP操作系统。二、 安装主板驱动和显卡驱动。三、 安装Office2003。(根据提示进行安装)四、 安装733和724板卡驱动。五、 安装磨砂卡驱动。六、 安装打印机驱动。(根据提示进行安装)七、 安装搅拌站程序,并对软件进行调试设置。(根据提示进行安装)一、Windows XP操作系统的安装:1、 开机时常按Del键,进入CMOS环境。2、..._工控机安装linux系统

CCF201412-4 最优灌溉(80分)-程序员宅基地

文章浏览阅读52次。试题编号:201412-4试题名称:最优灌溉时间限制:1.0s内存限制:256.0MB问题描述:问题描述  雷雷承包了很多片麦田,为了灌溉这些麦田,雷雷在第一个麦田挖了一口很深的水井,所有的麦田都从这口井来引水灌溉。  为了灌溉,雷雷需要建立一些水渠,以连接水井和麦田,雷雷也可以利用部分麦田...

计算机导论第二周总结_开始的时候将输入符号串 从左到右依此填在纸带的第 号格子上, 其他格子保持空白(-程序员宅基地

文章浏览阅读172次。计算机导论课后总结第二周一、本周上课内容:图灵机、二、课上基础知识概念总结:第一章内容1) 图灵机i.不是真实的机器,是一种理论模型。可以视为现代数学计算机的数学模型。ii.图灵机有一个可以向左右两端无限伸展的纸带。有一个能在纸带上左右移动的读写头HEAD。还有一个控制器,存有控制规则和一个状态寄存器。2) 计算机科学的定义:i.研究计算机及其周围各种现象和规律的科学即处理信息的学..._开始的时候将输入符号串 从左到右依此填在纸带的第 号格子上, 其他格子保持空白(

myeclipse 2017 ci 10 破解包+教程(亲测已成功)_crack.bat 和 tlu文件-程序员宅基地

文章浏览阅读2.7k次。版权声明:如转载请表明出处 https://blog.csdn.net/weixin_42247720/article/details/81585837 准备工作:下载破解包:myeclipse 2017 ci 10 破解包:链接:https://pan.bai..._crack.bat 和 tlu文件

C语言实现五子棋游戏(具体说明+具体步骤)_c语言五子棋代码-程序员宅基地

文章浏览阅读1.9w次,点赞42次,收藏321次。C语言五子棋目录一、运行效果二、基本流程三、基本步骤四、完整代码+注释一、运行效果二、基本流程三、基本步骤四、完整代码+注释_c语言五子棋代码

Hadoop学习之web查看HADOOP以及文件的上传和下载_info sasl.sasldatatransferclient: sasl encryption -程序员宅基地

文章浏览阅读5k次。Hadoop之web查看HADOOP以及文件的上传和下载_info sasl.sasldatatransferclient: sasl encryption trust check: localhosttrus