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 ...
随机推荐
- python基础学习3----列表
一.字符格式化输出 占位符 %s s = string 字符串 %d d = digit 整数 %f f = float 浮点数 name = input(&q ...
- python虚拟环境 -- virtualenv , virtualenvwrapper
virtualenv -- python虚拟沙盒 有人说:virtualenv.fabric 和 pip 是 pythoneer 的三大神器. 一.安装 pip install virtualenv ...
- 批处理之windows更改网卡IP地址
新建文本文档,更改后缀为“.bat”,写入以下代码: netsh interface ip set address name="本地连接" source=static 192.16 ...
- JRebel for Hybris ,Idea and Windows
参考: Jrebel官网参考地址:https://manuals.zeroturnaround.com/jrebel/standalone/hybris.html Wiki Hybris参考地址:ht ...
- C++基础算法学习——完美立方
形如a 3 = b 3 + c 3 + d 3 的等式被称为完美立方等式.例如12 3 = 6 3 + 8 3 + 10 3 .编写一个程序,对任给的正整数N(N≤100),寻找所有的四元组(a, b ...
- PyQt5--QToggleButton
# -*- coding:utf-8 -*- ''' Created on Sep 20, 2018 @author: SaShuangYiBing Comment: '' import sys fr ...
- java多重转型问题
我们来看一个简单的问题,下面的代码会打印出什么? public class hello { public static void main(String[] args){ System.out.pri ...
- H5页面meta标签小结:
<meta name="viewport" content="width=device-width,user-scalable=no"> <m ...
- java中Integer与int装箱拆箱一点收获
示例代码: class BoxIntInteger { public static void main(String[] args) { Integer a = new Integer(10111); ...
- Matlab警告消息消除
在运行matlab程序时候,有些matlab子函数在高版本将会被舍弃,在使用的时候,matlab编译器就会报出警告信息. The COMBNTNS function will be removed i ...