Unity3D Shader 学习笔记(一):初识Shader
第一节:图形处理器简史
GPU发展简史
GPU英文全称Graphic Procssing Unit。
T&L变换和光照流水线
可编程GPU
GPU的优点和缺点
第二节:Unity Shader
Shader和渲染管线
什么是shader
中文翻译是着色器,是一种较为短小的程序片段,用于告诉图形硬件如何计算和输出图像,过去由汇编语言来编写,现在也可以使用高级语言来编写。一句话概括:shader是可编辑图形管线的算法片段。
它主要分为两类,vertexshader和fragmentshader;
什么是渲染管线
渲染管线也称为渲染流水线,是显示芯片内部处理信号相互独立的并行处理单元。一个流水线是一序列可以并行和按照固定顺序进行的阶段。就像一个在同一时间内,不同阶段不同汽车一起制造的装配线,传统的图形硬件流水线以流水的方式处理大量的顶点、几何图元和片段。
Gpu前段模块到 →图元装配阶段
:在过去是硬件决定的,不能也不可能对其进行编程。
现阶段加入了顶点着色器就是可编程渲染管线的加入带来的好处,用户可以对输入进行控制。(片段着色器同理)
帧缓冲:framebuffer
计算机一次现实需要的数据;(深度,颜色)
图片详解!!
vertexshader:
顶点处理的阶段,也是顶点shader的工作范围
Transform:针对顶点空间集合变换。
,texgen:纹理坐标→uv
,lighting:光照
T&L:变换光照流水线。可编程shader出来之前之前是被集成的
当图形硬件有可编程能力后,固定编写的模块(T&L)就被vertexshader取代了
、、、、、、、、、、、、、、、、、、、、、、、、、
CulingDepthTest:裁剪和深度测试。
裁剪:为了减少GPU的工作量
深度测试:锥形视距的剔除。
、、、、、、、、、、、、、、、、、、、、、、、、、、、
TexturingFog:纹理采样和物化处理
光栅化处理的阶段,也是片段shader的工作范围
纹理采样:光栅化阶段判别屏幕上应该显示什么颜色,要进行采样,从纹理当中找到某一个点,绘制色彩。
雾化处理:近处清晰,远处雾化。
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
AlphaTest
测试alpha,绘制半透明或者全透明的物体。
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
Blending
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
混合最终图像。
在unity优化当中,重要的一点就是减少drawcall的调用。
Drawcall:图形数据通过api调用gpu的过程。(包括收集和传递图形数据)
Shader和材质贴图之间的关系
shader 实际上就是一小段程序,它负责将输入的顶点数据以指定的方式和输入的贴图或者颜色等组合起来,然后输出。绘图单元可以根据这个输出来将图像绘制到屏幕上。输入的贴图或者颜色等,加上对应的shader,以及对shader的特定的参数设置,将这些内容(shader以及输入参数)打包储存在一起,得到的就是一个matiarial(材质)之后我们便可以将材质赋予三维物体进行渲染输出了。
材质好比引擎最终使用的商品,shader好比生产这种商品的加工方法,贴图就是原材料。
第三节:三大主流高级编程语言
Shader language 的发展方向是设计出在便携性方面可以和c++和\java相比的高级语言,“赋予程序员灵活而方便的编程方式”,并“尽可能的控制渲染过程”同时“利用图形硬件的并行性,提高算法的效率”
HLSL:基于DrectX的High Level shding language
GLSL:基于OpenGL的OpenGL shading Language
CG:NVIDIA的C for Graphic
Shader的高级语言
Unity3D Shader 学习笔记(一):初识Shader的更多相关文章
- Shader学习笔记
Shader学习笔记 例子: Shader "SrfShader1"{ //定义显示在Inspector中的变量,并从Inspector中获取值 Properties{ _Colo ...
- 【HLSL学习笔记】WPF Shader Effect Library算法解读之[DirectionalBlur]
原文:[HLSL学习笔记]WPF Shader Effect Library算法解读之[DirectionalBlur] 方位模糊是一个按照指定角度循环位移并叠加纹理,最后平均颜色值并输出的一种特效. ...
- 【HLSL学习笔记】WPF Shader Effect Library算法解读之[Embossed]
原文:[HLSL学习笔记]WPF Shader Effect Library算法解读之[Embossed] Embossed(浮雕效果) 浮雕效果主要有两个参数:Amount和Wid ...
- 【HLSL学习笔记】WPF Shader Effect Library算法解读之[BandedSwirl]
原文:[HLSL学习笔记]WPF Shader Effect Library算法解读之[BandedSwirl] 因工作原因,需要在Silverlight中使用Pixel Shader技术,这对于我来 ...
- Storm学习笔记 - Storm初识
Storm学习笔记 - Storm初识 1. Strom是什么? Storm是一个开源免费的分布式计算框架,可以实时处理大量的数据流. 2. Storm的特点 高性能,低延迟. 分布式:可解决数据量大 ...
- LevelDB学习笔记 (1):初识LevelDB
LevelDB学习笔记 (1):初识LevelDB 1. 写在前面 1.1 什么是levelDB LevelDB就是一个由Google开源的高效的单机Key/Value存储系统,该存储系统提供了Key ...
- Unity3D学习笔记3——Unity Shader的初步使用
目录 1. 概述 2. 详论 2.1. 创建材质 2.2. 着色器 2.2.1. 名称 2.2.2. 属性 2.2.3. SubShader 2.2.3.1. 标签(Tags) 2.2.3.2. 渲染 ...
- Unity Shader学习笔记-1
本篇文章是对Unity Shader入门精要的学习笔记,插图大部分来自冯乐乐女神的github 如果有什么说的不正确的请批评指正 目录 渲染流水线 流程图 Shader作用 屏幕映射 三角形遍历 两大 ...
- Unity Shader 学习笔记(一)
_MainTex_ST (1)简单来说,TRANSFORM_TEX(tex,name) (tex.xy * name##_ST.xy + name##_ST.zw)主要作用是拿顶点的uv去和材质球的t ...
随机推荐
- tomcat 闪退处理
参考文章:https://www.cnblogs.com/lanjianhappy/p/6491436.html 首先确保JDK环境变量已经配置好! 设置jdk环境 变量:https://jingya ...
- Beta 冲刺 (1/7)
Beta 冲刺 (1/7) 队名:洛基小队 峻雄(组长) 已完成:β版的初步计划 后两天计划:设计角色的技能树 剩余任务:角色的技能 困难:关于技能施放以及相关伤害计算等的代码 非易 已完成:角色交互 ...
- MySql详解(三)
MySql详解(三) 导入基础表 具体的SQL文件已经放入百度网盘,连接为:http://pan.baidu.com/s/1hseoVR2,后面的MySql内容都是按照这些基础表展开的. depart ...
- 【转】通过blob获取图像并显示
HTML代码: <div id="forAppend" class="demo"></div> JS代码: var eleAppend ...
- Python各类并发模版
以后在写一些Python并发的时候参考下面这个模块,小西总结的挺全的,直接搬砖了. 进程并发 from multiprocessing import Pool, Manager def func(d, ...
- tsconfig.json
概述 如果一个目录下存在一个tsconfig.json文件,那么它意味着这个目录是TypeScript项目的根目录. tsconfig.json文件中指定了用来编译这个项目的根文件和编译选项. 一个项 ...
- C++之C++的词法单位
C++的字符集 ASCII码字符集是计算机中的常用字符集.它包括英文字母及阿拉伯数字等128个字符,存储一个ASCII码占用一个字节单元. 由于汉字处理的需要,又出现了汉字国标码等对应于不同语言的字符 ...
- A. Nephren gives a riddle
What are you doing at the end of the world? Are you busy? Will you save us? Nephren is playing a gam ...
- 关于Altium Designer 提示发送错误报告解决方法
提示是这样子,,,,,, 稍微有点问题就提示,,,复制也提示,,,,移动也提示,,,,,,算是服了这个软件了.......真是忍无可忍,那就无需再忍,解决掉 以前是安装上一个虚拟的打印机就好了,,,其 ...
- APP快速搭建框架
AppDelegate: - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDicti ...