Shader学习笔录--Unity3D教程宝典之Shader篇 基本知识

基础讲:基本知识

 

以下内容不需要入门的时候立刻阅读和理解,建议逐渐深入学习后,不时回来看看即可。

 

什么事GUP

GUPGraphic Processing Unit,中文翻译为“图形处理器”。显卡包括(GPU,显卡,显卡BIOS,显卡PCB板)

什么事Shader

Shader程序:GPU执行,针对3D对象进行操作的程序

 

Shader有哪几种?

CG:与DirectX 9.0以上以及OpenGL完全兼容,运行时或是先编译成GPU汇编代码

HLSL:主要用于Direct3D,平台:Window

GLSL:主要用于OpenGL,平台:移动平台(IOSAndroid),mac(only use when you target Mac Os X or OpenGL ES 2.0)

 

为什么Shader 中选择CG

因为CG/HLSLGLSL支持更多平台

 

Unity3D 里面CG输出什么?

Window平台:Direct3DGPU汇编代码

MacOpenGL GPU汇编代码

Flashflash GPU汇编代码

IOS/AndroidUnity会将CG转换成GLSL代码

总结:也就是除了移动平台会把CG转换成GLSL代码,其余平台都是转换成汇编代码

 

什么是缓冲:

一个像素有如下缓冲:

颜色缓存Color buffer/Pixel buffer:储存该点即将显示的颜色,RGBA

深度缓存 Depth buffer/z buffer:存储该点的深度 z

模板缓存 Stencil buffer:通常用作限制渲染区域,更高级用法需结合深度缓冲,例如某像素的模板缓冲值会随着其是否通过深度缓冲测试而改变

累积缓存 Accumulation buffer:与颜色缓冲累死,同样存储一个RGBA值,累积缓存是为合成多幅图像而设计的,累积缓存提供了一种在保持好的颜色分辨率下实现在场景中“多重曝光(multiple exposures)”的方法,是用累积缓存可以产生许多图像效果来提高图像的真实性,其中包括:反走样,运动模糊,软阴影,深度域(景深)和卷积,要产生这些效果,必须将图像渲染多次,对场景位置(或所选物体)进行微小。渐增的改变,然后累积结果。

 

什么事图元装配(Primitive Assembly

经过变换的顶点 被装配成几何图元

 

什么是光栅化(栅格化,Rasterization

栅格化这个术语可以用于任何将矢量图形转换成栅格图形的过程

3D渲染中汉族要指:三角形等图元(矢量)转换成像素碎片的过程,或者说决定哪些像素几何图元覆盖的过程,光栅化的结果是像素位置的集合和片段的集合

 

什么事光栅造作(Raster Operation

指在碎片fragment处理,在更新帧缓存前后执行的一系列操作,通过包括裁剪,深度测试,alpha测试,alpha混合等

 

碎片Fragment等于像素吗?

像素点:屏幕上能显示的最小图像单元

像素:帧缓存中某个像素点的内容,通常即指颜色

碎片:更新像素潜在需要的状态

碎片输出的是当前的fragment函数在这个像素点的颜色,并不代表这像素点的最终颜色,最后显示的颜色是这个点的所有碎片经过叠加等运算形成的最终结果

 

针对3D对象进行操作,并被GPU所执行的程序

 

什么事地形着色器(Geometry Shader

几何着色器可以从多边形网格中增删顶点,它能够执行对CPU来说过于繁重的生成几何结构和增加模型细节的工作。Direct3D 版本10增加了支持几何着色器的API,成为Shader Model 4.0的组成部分,OpenGL只可通过它的一个插件来使用几何着色器,但极有可能在3.1版本中该功能将会归并,几何着色器的输出连接光栅化器的输入。但是并不实用

 

什么是Tessellation

针对DX11,该技术需要消耗大量硬件资源,因此开发人员不会再场景中的每个地方都使用它,一般只考虑玩家视角近景和轮廓边缘,利用GPU硬件加速,将现有3D模型的三角形拆分的更细,更细致,也就是大大增加了三角形数量,使得渲染对象的表面和边缘更平滑,更惊喜

 

坐标系

计算机3D中,3D坐标系采用的主要是笛卡尔坐标系(Cartesian坐标系),也称直角坐标系

x轴朝右,y朝上,z朝屏幕里的时候,为左手坐标系

x轴朝右,y朝上,z朝屏幕外即朝向你的时候,为右手坐标系

所以,Unity使用的是左手坐标系

 D3D 左手及裁剪空间(x,y,z,w)  z=z/w 即 [0,1]

OpenGL使用右手,即裁剪空间里(x,y,z,w)  z=(z/w+1)/2  [-1,1]

 

#pargame target 3.0:定义Shader模型为Shader Model 3.0

2.0 Direct3D 9 (默认缺省值)。支持32张贴图+64个计算

3.0 Direct3D 9  支持512张贴图+512个计算

4.0 只支持DirectX 11

5.0 只支持DirectX 11

 

 

 

 

 

文章载自风宇冲    风宇冲Unity3D教程学院

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值