-
Matplotlib官方参考文档中的像素着色器入门指南
资源介绍
第十八章 像素着色器入门
(((
(
IntroductionIntroductionIntroduction
Introduction
tototo
to
PixelPixelPixel
Pixel
ShadersShadersShaders
Shaders
)))
)
像素着色器是一个执行在图形卡的 GPU 上的程序,它运行在对每个像素进行光栅化处理时。(不
像顶点着色器,Direct3D 不会以软件模拟像素着色器的功能。)它实际上替换了固定功能管线的多纹
理化阶段(the multitexturing stage),并赋予我们直接操纵单独的像素和访问每个像素的纹理坐标的能
力。这种对像素和纹理坐标的直接访问使我们可以达成各种特效,例如:多纹理化(multitexturing)、
每像素光照(per pixel lighting)、景深(depth of field)、云状物模拟(cloud simulation)、焰火模拟(fire
simulation)、高级阴影技术(sophisticated shadowing technique)。
图形卡支持的像素着色器的版本可以通过 D3DCAPS9 结构的 PixelShaderVersion 成员和
D3DPS_VERSION 宏进行检查。下列代码片断展示了这点:
目标目标目标
目标
获得对多纹理化概念的基本理解
学习如何编写、创建并使用像素着色器
学习如何使用像素着色器实现多纹理化效果
18.118.118.1
18.1
多纹理化概览多纹理化概览多纹理化概览
多纹理化概览
多纹理化(Multitexturing)可能是用像素着色器实现的最简单的技巧了。此外,因为像素着色器
替换多纹理化阶段,那么接下来我们应该对多纹理化“是什么”和“做什么”有一个最基本的理解。
本节介绍多纹理化的简明概览。
当我们一开始讨论纹理化(texturing)的时候(第 6 章),我们忽略了固定功能管线中对多纹理化
的讨论,这有两个原因:第一,多纹理化是有一点棘手的过程,我们考虑到这在当时是一个高级话题 ;
此外,固定功能多纹理化阶段被新的和更强有力的像素着色器替换掉了。因此花时间在已经过时的固
定功能纹理化阶段上是无意义的。
多纹理化后面的概念有一点和混合(blending)相关。在第七章中我们了解到:可以将正要被光栅
化的像素与之前写入后台缓冲的像素进行混合来达成一种特效。我们延伸这种相同的思想到多纹理化
中(multiple texture)。也就是说,我们一次使用几个纹理,然后定义这些纹理如何被混合在一起,以
// If the device's supported version is less than version 2.0
if ( caps.PixelShaderVersion < D3DPS_VERSION(2, 0) )
// Then pixel shader version 2.0 is not supported on this device.