● 宏亮的和声:Pixel Shader
Pixel Shader单元出现的原因其实非常直接——光栅化处理过程并没有真正的光线存在,那么对光线与物体作用特效的描述,就只有通过创造“被光照射后颜色发生变化”的像素这样的方式来完成了。材质的本质,其实就是像素的集合,既然我们预先制作的材质并不能充分地反映出现场真实的光影效果,那对其进行修改不就好了。
经过精心修饰的像素效果
我们面前的所有颜色,归根结底可以通过红绿蓝三原色以及它们的混合来表达,而三原色的深浅以及混合程度,又可以通过三组数字以及它们之间的关系来表示。因此对颜色本身、它们与光线以及他们彼此间相互影响的描述,完全可以被直接看做是对数字的近身缠斗。
想要控制并且实时正确的描述颜色说起来似乎不难,做起来却并非易事。在传统的不可编程渲染流水线中,一旦像素进入了流水线,程序员们就失去了对它们的控制。为了能够将正确的带有交互关系的颜色以程序的形式表达出来,程序员们发明了可以根据场景需要在光栅化之后用实时演算的数学方式改变像素颜色的方法——Pixel Shader。
当空间模型完成坐标变换及像素化之后,材质单元进行动作的同时Pixel Shader也在全力开动。根据shader programe的需求,ALU会按照程序员提供的数学关系以及要求对特定像素的RGB值进行对应的计算和更改,这些数学关系和要求基本上都涉及对原始材质进行“更改的部分”。透过改变这些像素的最终颜色,人类在Pixel Shader单元出现之后终于达成了实现表面光照反应、次表面/界面间发生的半反射、散射以及折射等等传统贴图很难实时随意且正确呈现的视觉效果的目的。
读到这里,相信各位不难看出材质操作与shader之间的关系了。对物体表面的描绘来自shader/ALU与材质单元共同作用的结果,材质操作无法对高自由度场景以及物体的光影以及光线关系等效果进行实时正确的描述,而Pixel Shader又只能对像素进行修饰而非实时的创造,要想实现正确真实的视觉效果,两者在目前来说显然是缺一不可的。如果说材质单元是图形过程中重归轻快悠扬的第三乐章,那么Pixel Shader就是该乐章中宏亮同时感人至深的和声部分。
推荐经销商