第一节:图形处理器简史

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的更多相关文章

  1. Shader学习笔记

    Shader学习笔记 例子: Shader "SrfShader1"{ //定义显示在Inspector中的变量,并从Inspector中获取值 Properties{ _Colo ...

  2. 【HLSL学习笔记】WPF Shader Effect Library算法解读之[DirectionalBlur]

    原文:[HLSL学习笔记]WPF Shader Effect Library算法解读之[DirectionalBlur] 方位模糊是一个按照指定角度循环位移并叠加纹理,最后平均颜色值并输出的一种特效. ...

  3. 【HLSL学习笔记】WPF Shader Effect Library算法解读之[Embossed]

    原文:[HLSL学习笔记]WPF Shader Effect Library算法解读之[Embossed] Embossed(浮雕效果)          浮雕效果主要有两个参数:Amount和Wid ...

  4. 【HLSL学习笔记】WPF Shader Effect Library算法解读之[BandedSwirl]

    原文:[HLSL学习笔记]WPF Shader Effect Library算法解读之[BandedSwirl] 因工作原因,需要在Silverlight中使用Pixel Shader技术,这对于我来 ...

  5. Storm学习笔记 - Storm初识

    Storm学习笔记 - Storm初识 1. Strom是什么? Storm是一个开源免费的分布式计算框架,可以实时处理大量的数据流. 2. Storm的特点 高性能,低延迟. 分布式:可解决数据量大 ...

  6. LevelDB学习笔记 (1):初识LevelDB

    LevelDB学习笔记 (1):初识LevelDB 1. 写在前面 1.1 什么是levelDB LevelDB就是一个由Google开源的高效的单机Key/Value存储系统,该存储系统提供了Key ...

  7. 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. 渲染 ...

  8. Unity Shader学习笔记-1

    本篇文章是对Unity Shader入门精要的学习笔记,插图大部分来自冯乐乐女神的github 如果有什么说的不正确的请批评指正 目录 渲染流水线 流程图 Shader作用 屏幕映射 三角形遍历 两大 ...

  9. Unity Shader 学习笔记(一)

    _MainTex_ST (1)简单来说,TRANSFORM_TEX(tex,name) (tex.xy * name##_ST.xy + name##_ST.zw)主要作用是拿顶点的uv去和材质球的t ...

随机推荐

  1. Linux 下Shell的学习3-service编程

    1. vim /etc/init.d/nginx 2. chmod 755 /etc/init.d/nginx 3. service nginx status #!/bin/bash # nginx ...

  2. 第 14 章 结构和其他数据形式(伸缩型数组成员C99)

    伸缩型数组成员C99 声明一个伸缩型数组成员的规则: 1.伸缩型数组成员必须是结构的最后一个成员: 2.结构中必须至少有一个成员: 3.伸缩数组的方括号是空的. 示例 struct flex { in ...

  3. CSP vs Actor Go vs Erlang

    源于从Erlang到Go的一些思维碰撞,就像当初从C++到Erlang一样,整理下来记于此. Actor Actor模型,又叫参与者模型,其”一切皆参与者(actor)”的理念与面向对象编程的“一切皆 ...

  4. BZOJ2839:集合计数(容斥,组合数学)

    Description 一个有N个元素的集合有2^N个不同子集(包含空集),现在要在这2^N个集合中取出若干集合(至少一个),使得它们的交集的元素个数为K,求取法的方案数,答案模1000000007. ...

  5. -bash: fork: retry: Resource temporarily unavailable;centos6.5

    Last login: Wed Jun 18 14:04:11 2014 from 1.1.1.135 -bash: fork: retry: Resource temporarily unavail ...

  6. Python2.7-hmac

    hmac 模块,基于密钥的哈希算法 1.模块对象 1.1 HMAC 对象 1.1.1 初始化构建类:需要通过模块方法 hmac.new(key[, msg[, digestmod]]) 创建一个新对象 ...

  7. ssh访问服务器端visdom

    在服务器端启动visdompython -m visdom.server在windows端,将服务器的8097端口重定向到windows端(做了映射绑定):ssh -L 8097:127.0.0.1: ...

  8. 搭建windows远程节点_jmeter自动化测试环境(接口测试)

    WINDOWS10系统下 环境 172.16.0.115虚拟机windows系统作为远程节点. jenkins安装在172.16.0.119:8088虚拟机中. 一.安装配置Java环境   wind ...

  9. HDU 3072 Intelligence System(tarjan染色缩点+贪心+最小树形图)

    Intelligence System Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  10. 手机app测试讲座

    活动简介: 移动 面向人群: 测试工程师,软件工程师,系统运维工程师,项目经理 活动时间 基于C#的移动应用程序测试(1) 2016年5月18日 上午9:00 基于C#的移动应用程序测试(2) 201 ...