前言
Shader,一款中文名为着色器的东西,对于很多开发者来言它是一个神秘的存在,想学但是又不知道如何去学,或者学了一段时间又发现Get不到它的点,始终感觉游离在外,不得其法。
那么本文今天就来给大家讲解一下如何从零基础入门Shader,目的在于让初学Shader的程序员或者美术er可以快速进入这个丰富多彩的世界。
一、什么是Shader
Shader其实就是专门用来渲染图形的一种技术,通过shader,我们可以自定义显卡渲染画面的算法,使画面达到我们想要的效果。小到每一个像素点,大到整个屏幕,比如下面这两个游戏内比较常见的效果。
二、Shader分类
顶点Shader(3D图形都是由一个个三角面片组成的,顶点Shader就是计算每个三角面片上的顶点,并为最终像素渲染做准备)。
像素Shader,顾名思义,就是以像素为单位,计算光照、颜色的一系列算法。
几个不同的图形API都有各自的Shader语言,在DirectX中,顶点shader叫做 Vertex Shader ,像素Shader叫做 Pixel Shader;在OpenGL中,顶点Shader也叫做 Vertex Shader ,但像素Shader叫做 Fragment Shader,也就是我们常说的片断Shader或者片元Shader。
说白了,Shader其实就是一段代码,这段代码的作用是告诉GPU具体怎样去绘制模型的每一个顶点的颜色以及最终每一个像素点的颜色。
三、Shader编程语言
既然Shader是一段代码,那必然要用一种语言来书写它,目前主流的有三种语言:基于OpenGL的OpenGL Shading Language,简称GLSL。基于DirectX的High Level Shading Language,简称HLSL。还有NVIDIA公司的C for Graphic,简称Cg语言。
GLSL与HLSL分别是基于OpenGL和Direct3D的接口,两者不能混用。而Cg语言是用于图形的