着色器shader

文章结构:
1、shader概述
2、GPU编程语言
3、ShaderLab基本语法
4、GPU管道流水线

shader概述

1、shader是给GPU执行的程序,中文名叫做着色器。是可以在GPU上运行的一段程序,通过Shader可以进行一些渲染相关的设置。
2、着色器是运行在图形处理单元GPU上,可以让程序直接操作图形硬件渲染功能。
3、shader能开发出很多好的效果。
4、渲染流水线,模型投影,定点着色。
5、Unity提供shader一般主要有:固定管线着色器,顶点片段着色器,表面着色器:
(1)固定管线着色器慢慢会被淘汰
(2)顶点shader:干预模型形态的shader;
(3)像素shader(片元shader):干预像素着色的shader;
6、模型定点运算时,可以加入顶点shader来干预顶点的位置;
顶点着色时,可以加入像素shader来干预像素的上色;

(一开始会被一些shader一些专业名词所困然如:固定管线着色器,顶点片段着色器,表面着色器,顶点着色器,片元着色器,像素着色器,我也纠结了好久)
注意:如果你是由丰富的的Cg开发经验的,好的选择就是直接使用vertex and fragment shader了。fixed function shader虽然简单,但能实现的效果非常有限。而surface shader是Unity3D提供的一种较为折中的方式,同样能实现较丰富的效果,但难度相对小很多。不过surface shader有一个问题,它不支持SubShader内部的多pass,所以某些需要多pass的效果要实现起来会比较困难。

GPU编程语言

1、基于OpenGL的GLSL
2、基于Direct3D的HLSL
3、NVIDIA公司的Cg语言(C for Graghic)

unity使用ShaderLab来进行着色程序的编写,对不同的平台进行编译重点支持Cg语言。

ShaderLab基本语法

Shader "ShaderName"{
        [Properties]
        //定义一些属性,定义在这里的会在属性检查器显示
        SubShader{......}
        //子着色器列表,一个shader必须至少有一个着色器
        [Fallback]
        //如果子着色器显卡不支持,就会降级,即Fallback执行
}
image.png

GPU管道流水线

CPU 和 GPU 之间的通信:
<1>把数据加载到显存中
<2>设置渲染状态
<3>调用Draw Call


image.png

绿色的区块表示:可以完全编辑程序控制的;黄色的区块表示:可以配置但是不可以编程;蓝色的区块表示:由GPU固定实现开发者没有控制权。实线表示shader必须由开发者编程实现,虚线表示这个shader是可以选择的。

CPUyuGPU:
https://www.jianshu.com/p/46916090da37
GPU管道流水线
https://www.jianshu.com/p/b55996eed36e
ShaderLab基本语法:https://www.cnblogs.com/Jason-c/p/8385946.html
Cg语言:
https://www.cnblogs.com/Jason-c/p/8390822.html
Surface Shader机制:
http://blog.csdn.net/candycat1992/article/details/39994049
顶点程序示例:https://www.cnblogs.com/Jason-c/p/8550078.html
片段程序示例:https://www.cnblogs.com/Jason-c/p/8558132.html
Surface Shader示例:https://www.cnblogs.com/Jason-c/p/8582238.html
Shader:http://blog.csdn.net/a6627651/article/details/50545643
U3D_Shader编程(第一篇:快速入门篇):https://blog.csdn.net/vrunsoftyanlz/article/details/80372071
U3D_Shader编程(第二篇:基础夯实篇):https://blog.csdn.net/VRunSoftYanlz/article/details/80372628

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容