标签:
这篇文章是我在学习蛮牛的一套关于Shader教程(http://www.unitytrain.cn/course/96)后的简单总结,个人感觉这套教程并不是以高级Shader编程为目的的,更像是授人以渔的宗旨。下面我会分为三个部分:Shader简述、图形学基础,Cg简介为大家介绍Shader的相关内容,也算是做一个总结。
一:Shader简述
a.先说一下GPU与CPU的区别,简单说:GPU主要负责跟显示相关的数据处理,而CPU主要负责操作系统和应用程序。为什么不把显示相关的数据直接交给CPU处理呢?下面附上教程中的解释:
b.Shader分类。Shader中文翻译为“着色器”,含义是:可编程图形管线。主要分为:Vertex Shader和fragment Shader,即定点Shader和片段Shader。上面有一个概念是“图形管线”,简单解释就是:计算机处理图形显示的处理流水线。
c.Shader 的主流编程语言。主流的Shader编程语言主要有HLSL、GLSL、CG。下面简单说一下区别:HLSL(High Level Shader Language)是微软基于DX的作品,只能运行在Windows平台上。GLSL(OpenGL Shading Language),OpenGL着色语言,是用来在OpenGL中着色编程的语言(OpenGL是个定义了一个跨编程语言、跨平台的编程接口规格的专业的图形程序接口),是跨平台的着色器语言。到这里,我们已经可以发现有一个比较麻烦的问题出现了,就是我们底层图形驱动限制了上层的编程语言,一旦想要改动图形驱动库,那就不得不重写整个Shader Files,此时CG就应运而生了,CG在HLSL和GLSL上做了进一步封装,屏蔽了上层的着色器语言对底层图形库的依赖。
d.Unity Shader。ShaderLab其实是Unity对Shader语法结构的一种包装,其中支持三种Shader:surface Shader、Vertex and Fragment Shader 和 Fixed function shader (更具体的可以参考官方文档),Fixed function shader 是一种比较“保守”的Shader(兼容性最好),vertex and fragment Shader
标签:
原文地址:http://www.cnblogs.com/lixiang-share/p/5022932.html