Unity Shader学习1——简述

一、什么是Shader:

        Shader,就是着色器,是一种运行在 GPU 上的程序。GPU —— Programmable Graphics Processing Unit,即可编程图形处理单元,也称为可编程图形硬件。至于 GPU 上的编程,实质上就是 GPU 允许应用程序指定一个序列的指令进行顶点操作控制。Shader 的作用是:

        对三维物体进行着色处理、光与影的计算、纹理颜色的呈现等,从而将游戏引擎中一个个作为抽象的几何数据存在的模型、场景和特效,以和真实世界类似的光与影的形式呈现与玩家的眼中。(简单点的理解就是:利用 GPU 编程使得构件出来的对象近似于真实世界中的对象呈现出来的处理)通过 Shader 可以改变物体的形状、大小、位置以及旋转等

 

二、Shader发展和架构:

1.发展简史:

        学过 OpenGL 的人应该知道,OpenGL 的发展历程就是从固定管线的渲染发展到可编程管线的渲染。其实,Shader 也是相似的,最初的 Shader 编程采用的也是固定管线,如今也发展为可编程流水线。

        微软图形软件库DirectX,定义了一系列的 SM,即 Shader Model(Shader 模型),用于描述 Shader 的特性和能力,而且与DirectX的版本具有对应关系如下:

        SM 1.0 ——》DirectX 8.0,SM 2.0 ——》DirectX 9.0,

        SM 3.0 ——》DirectX 9.0c,SM 4.0 ——》DirectX 10.0,

        SM 5.0 ——》DirectX 11.0

        说到DirectX我们自然而然地想起与之比肩的另外一个图形软件库标准OpenGL,它对于SM的也具有版本对应关系:

        SM 4.0 ——》OpenGL 3.3,SM 5.0 ——》OpenGL 4.3

 

主流图形 API:OpenGL、OpenGL ES 和 DirectX

近几年推出的新型图形 API:Vulkan 和 Metal

 

2.内容架构:

        Shader 分为两种基础类型:顶点 Shader 片段 Shader,它们的特点分别是:

顶点 Shader:具有可以处理、变换,最终会渲染到屏幕上的网格物体的顶点位置的功能,但它不能生成新的顶点;

片段 Shader:会对一个片段(预备像素)进行各种测试,如 Z 深度测试、Alpha 比较测试,能通过各种测试的片段,最终会被写入渲染的输出帧中,从而成为屏幕上的一个可见像素。

 

3.Shader 的实例化:

        从上文我们已经知道了 Shader 是 GPU 中的一种编程程序,那么与 CPU 中运行的普通编程语言(C语言、C++等)中的类相似,GPU 中的 Shader 也相当于一个类,能够进行实例化,生成对象,然后可以对此对象进行各种属性的设置,例如设置贴图和颜色。

 

4.Shader 的实现语言:

        GPU 与 CPU 是截然不同的,这不仅仅再其硬件结构的差异上,这也就决定了在两者运行环境下的编程过程也是不同的。目前面向GPU的编程,有3种高级图像语言,分别是:

        a.微软的 HLSL(High Level Shading Language),是通过 Direct3D 图形软件库来写 Shader 程序的语言;

        b.OpenGL 提供的 GLSL(OpenGL Shading Language) 来写 Shader 程序;

        c.NVIDIA 提供的 Cg(C for graphics)语言(以 HLSL 为基础,很相似),兼容 Direct3D 和 OpenGL 图形接口;

 

        考虑到最大化的跨平台支持,选择使用兼容性最高的 Cg 作为编写Shader的语言,但假如只针对 Unity 3D 引擎,也可以选择 GLSL。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值