Pixel Shader

本文详细介绍了Direct3D 9.0C中的Pixel Shader架构,包括不同版本的特性、指令集和寄存器限制。Pixel Shader用于替代固定功能的像素处理,简化了纹理处理流程,并通过指令进行颜色计算。文章列举了从PS 1.0到PS 3.0的指令,如纹理采样、算术操作和控制流指令,以及如何管理Pixel Shaders和Texture Stage State。
摘要由CSDN通过智能技术生成

 

    我们已经知道可以使用vertex shader替换固定功能的顶点处理,pixel shader则用来替换固定功能的像素处理。多个纹理阶段串联可以完全被pixel shader所替换。specular addition,雾化以及frame buffer处理则不会受pixel shader的影响。

    使用固定功能像素处理,应用程序需要为每个texture stage设置状态,并且尝试在多纹理串联的受限数据流里执行per-pixel处理。使用pixel shader,你只要写一个很小的程序,从纹理里面采样,然后组合采样值产生一个新的颜色,将这个颜色值传递到Frame buffer, 做进一步的处理。

    在DirectX 9.0C里面Direct3D有几种不同的pixel shader 架构版本。我们将看看每个版本的寄存器模型,指令模型和指令集。跟vertex shader一样,pixel shader也是使用的是一组Token,每个指令一个Token。大部分应用程序不会直接构建TOKEN数组,将会使用D3DX将文本指令编译成TOKEN数组。

 

Pixel Shader Architecture

 

 

pixel shader的架构图

在所有的版本里面里面pixel shader的架构基本都类似,指令集和寄存器文件有所不一样。Pixel shader 必须执行两项任务:描述纹理是怎么寻址采样以及怎么组合采样值产生新的颜色值。

Pixel Shader指令执行流程

 

Pixel Shader的架构版本

 

  各个版本feature区别列表:

Feature 1.0 1.1 1.2 1.3 Phase 1 1.4 Phase 2
Arithmetic Instructions 8 8 8 8 8   8
Texture Address instructions 4 4 4 4 6   6
Total Instructions 8 12 12 12 14   14
Constant registers(cn) 8 8 8 8   8  
temporary registers(rn) 2 2 2 2   6  
texture registers(tn) 4 4 4 4   6  
color registers(vn) 2 2 2 2 0   2

 

各个版本可用指令列表:

Instruction Syntax Meaning 1.0 1.1 1.2 1.3 1.4
add d,s0,s1 component addition YES YES YES YES YES
bem d.rg,s0,s1 bump enviroment map         YES
cmp d,s0,s1,s2 compare to 0.0     YES YES YES
cnd d,s0,s1,s2 compare to 0.5 YES YES YES YES YES
def d,v0,v1,v2,v3 constant definition YES YES YES YES YES
dp3 d,s0,s1 dot product YES YES YES YES YES
dp4 d,s0,s1 dot product     YES YES YES
lrp d,s0,s1,s2 linear interpolation YES YES YES YES YES
mad d,s0,s1,s2 multiply and add YES YESS YES YES YES
mov d,s register copy YES YES YES YES YES
mul d,s0,s1 component multiply YES YES YES YES YES
nop   no operation YES YES YES YES YES
phase   instruction phase         YES
ps .major.minor shader version YES YES YES YES YES
sub d,s0,s1 component subtraction YES YES YES YES YES
tex d sample texture YES YES YES YES  
texbem d,s bump enviroment map YES YES YES YES  
texbeml d,s bumpmap with luminance YES YES YES YES  
texcoord d texture is coordinate YES YES YES YES  
texcrd d,s texture is coordinate         YES
texdepth d compute  pixel depth         YES
texdp3 d,s texture dot product     YES YES  
texdp3tex d,s dot product with lookup     YES YES  
texkill s kill source pixel<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值