PS 1.x 中的寄存器

译注:对于一个想学好着色器语言(不管是ASM还是HLSL、GLSL)的人来说,了解显卡中相应寄存器的功能和局限是必不可少的。 下面给出了PS 1.X中可用的寄存器的相关信息,希望能给大家带来帮助!


有些单词我实在不知道怎么翻译,只可意会!

像素着色器需要依靠寄存器来取得顶点数据,输出像素数据,取得计算时的临时结果和关联纹理采样通道(stage)。有几种类型的寄存器,每一种都有特殊的功能和用途。

像素着色器需要的用到的数据由寄存器保管,下面是寄器存的所有介绍
寄存器类型:描述了四种可用的寄存器和他们各自的用途
读取端口限制:单指针使用多个寄存器时的限制
R/RW: 描述了哪些寄存器可以用来读,写或是读写。
范围:各个分量的范围的详细说明

Register Types  
                                     Versions    
Name  Type                   1_1        1_2        1_3        1_4 
c#  Constant register       8             8             8           8 
r#  Temporary register    2             2             2           6 
t#  Texture register          4             4             4           6 
v#  Color register            2             2             2           2 in phase 2 

1,常量寄存器:常量寄存器容纳了常量数据。数据可以用IDirect3DDevice9::SetPixelShaderConstantF函数将一个常量装入常量寄存器中。也可以用def-ps来定义一个常量。 常量寄存器对纹理寻址指令来说是不可用的,唯一例外的是texm3x3spec-ps指令,这个指令使用一个常量寄存器来提供一个视线向量(eye-ray vector)

2,临时寄存器:临时寄存器用来存立即结果。r0用来作为PS的最终输出。shader的最后时刻r0中存放的是最后的像素颜色值
如果任何的着色器试图从一个没有被写入数据的临时寄存器中读取数据时,着色器激IDirect3DDevice9::CreatePixelShader将会失败(shader validation will fail)。假设激活(validation)是可用状态D3DXAssembleShader函数调用也会因为相同的原因而失败。(不要使用D3DXSHADER_SKIPVALIDATION)

纹理寄存器:
在ps 1_1 到1_3中,纹理寄存器容纳纹理数据或是纹理坐标。当一个纹理被采样时,纹理数据便被装载到一个纹理寄存器中。
当纹理通道状态属性被登记的时候纹理采样使用纹理坐标来查询(look up)或采样(sample)一个纹理坐标(u,v,w,q)标记的颜色值。纹理坐标数据会根据顶点纹理坐标数据进行插值,并关联到相关的纹理通道。纹理通道号与纹理坐标声明序列有一个一一对应关系。默认情况下,顶点格式中定义的第一个纹理坐标与纹理通道0关联。
在这些版本的像素着色器中,当纹理寄存器用来做算术运算的时候就和临时寄存器的效果一样了。
在ps_1_4中,纹理寄存器(t#)容纳的是只读纹理坐标信息。这意味着纹理坐标集和纹理通道编号是独立的。纹理通道编号由目的寄存器(r0 to r5)决定。对于texld指令来说,纹理坐标集由源寄存器t0 to t5决定。因此纹理坐标集可以映射到任何的纹理通道上。另外,对于texld的源寄存器(指定纹理坐标信息)也可以是临时寄存器(r#)。在这样的情况下,临时寄存器记录纹理坐标。
颜色寄存器容纳了每个像素的颜色值,这个值通过顶点数据中的漫反射和镜面光颜色值迭代而来。对于ps_1_4。颜色寄存器只有在phase2中可用。如果着色模式设置为D3DSHADE_FLAT,那么顶点颜色中的颜色迭代将不可用。如果雾化开启的话,那么渲染管线还是会忽略着色模式,对雾进行颜色迭代。记住雾化比像素着色器后应用。
通常我们会从v0加载顶点漫反射颜色数据。从v1加载顶点镜面光颜色数据。
输入颜色数据值将会被规范到0和1,因为这是像素着色器中的颜色寄存器的有效范围

像素着色器对颜色寄存器进行只读操作。颜色寄存器中存放的是迭代值,但是迭代可能会造成比纹理坐标低很多精度

作者:码瘾少年·麒麟子 
出处:http://www.cnblogs.com/geniusalex/ 
蛮牛专栏:麒麟子 
简介:09年入行,喜欢游戏和编程,对3D游戏和引擎尤其感兴趣。 
版权声明:本文版权归作者和博客园共有,欢迎转载。转载必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载:译注:对于一个想学好着色器语言(不管是ASM还是HLSL、GLSL)的人来说,了解显卡中相应寄存器的功能和局限是必不可少的。 下面给出了PS 1.X中可用的寄存器的相关信息,希望能给大家带来帮助!


有些单词我实在不知道怎么翻译,只可意会!

像素着色器需要依靠寄存器来取得顶点数据,输出像素数据,取得计算时的临时结果和关联纹理采样通道(stage)。有几种类型的寄存器,每一种都有特殊的功能和用途。

像素着色器需要的用到的数据由寄存器保管,下面是寄器存的所有介绍
寄存器类型:描述了四种可用的寄存器和他们各自的用途
读取端口限制:单指针使用多个寄存器时的限制
R/RW: 描述了哪些寄存器可以用来读,写或是读写。
范围:各个分量的范围的详细说明

Register Types  
                                     Versions    
Name  Type                   1_1        1_2        1_3        1_4 
c#  Constant register       8             8             8           8 
r#  Temporary register    2             2             2           6 
t#  Texture register          4             4             4           6 
v#  Color register            2             2             2           2 in phase 2 

1,常量寄存器:常量寄存器容纳了常量数据。数据可以用IDirect3DDevice9::SetPixelShaderConstantF函数将一个常量装入常量寄存器中。也可以用def-ps来定义一个常量。 常量寄存器对纹理寻址指令来说是不可用的,唯一例外的是texm3x3spec-ps指令,这个指令使用一个常量寄存器来提供一个视线向量(eye-ray vector)

2,临时寄存器:临时寄存器用来存立即结果。r0用来作为PS的最终输出。shader的最后时刻r0中存放的是最后的像素颜色值
如果任何的着色器试图从一个没有被写入数据的临时寄存器中读取数据时,着色器激IDirect3DDevice9::CreatePixelShader将会失败(shader validation will fail)。假设激活(validation)是可用状态D3DXAssembleShader函数调用也会因为相同的原因而失败。(不要使用D3DXSHADER_SKIPVALIDATION)

纹理寄存器:
在ps 1_1 到1_3中,纹理寄存器容纳纹理数据或是纹理坐标。当一个纹理被采样时,纹理数据便被装载到一个纹理寄存器中。
当纹理通道状态属性被登记的时候纹理采样使用纹理坐标来查询(look up)或采样(sample)一个纹理坐标(u,v,w,q)标记的颜色值。纹理坐标数据会根据顶点纹理坐标数据进行插值,并关联到相关的纹理通道。纹理通道号与纹理坐标声明序列有一个一一对应关系。默认情况下,顶点格式中定义的第一个纹理坐标与纹理通道0关联。
在这些版本的像素着色器中,当纹理寄存器用来做算术运算的时候就和临时寄存器的效果一样了。
在ps_1_4中,纹理寄存器(t#)容纳的是只读纹理坐标信息。这意味着纹理坐标集和纹理通道编号是独立的。纹理通道编号由目的寄存器(r0 to r5)决定。对于texld指令来说,纹理坐标集由源寄存器t0 to t5决定。因此纹理坐标集可以映射到任何的纹理通道上。另外,对于texld的源寄存器(指定纹理坐标信息)也可以是临时寄存器(r#)。在这样的情况下,临时寄存器记录纹理坐标。
颜色寄存器容纳了每个像素的颜色值,这个值通过顶点数据中的漫反射和镜面光颜色值迭代而来。对于ps_1_4。颜色寄存器只有在phase2中可用。如果着色模式设置为D3DSHADE_FLAT,那么顶点颜色中的颜色迭代将不可用。如果雾化开启的话,那么渲染管线还是会忽略着色模式,对雾进行颜色迭代。记住雾化比像素着色器后应用。
通常我们会从v0加载顶点漫反射颜色数据。从v1加载顶点镜面光颜色数据。
输入颜色数据值将会被规范到0和1,因为这是像素着色器中的颜色寄存器的有效范围

像素着色器对颜色寄存器进行只读操作。颜色寄存器中存放的是迭代值,但是迭代可能会造成比纹理坐标低很多精度

作者:码瘾少年·麒麟子 
出处:http://www.cnblogs.com/geniusalex/ 
蛮牛专栏:麒麟子 
简介:09年入行,喜欢游戏和编程,对3D游戏和引擎尤其感兴趣。 
版权声明:本文版权归作者和博客园共有,欢迎转载。转载必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载:http://www.cnblogs.com/geniusalex/archive/2010/04/26/1940512.html

时间: 2024-08-30 18:09:17

PS 1.x 中的寄存器的相关文章

PS合成黑夜中提灯静坐的美女

  PS合成黑夜中提灯静坐的美女          最终效果 1.打开背景素材. 2.夜晚能更好的体现孤独,所以我们首先应该将这张图片调整成夜色效果,点击图层面板下方的"创建新的填充或调整图层"按钮,在菜单中选择"色相/饱和度",如下进行调整. 3.使用同样的设置调出"渐变映射",这里将渐变颜色设置为"黑到白"渐变. 4.将图层的混合模式设置为"柔光",不透明度设置为40%.

PS合成高楼中远眺城市日出场景

  PS合成高楼中远眺城市日出场景           教程中用到的素材比较少,仅有人物.天空.城市三个素材,合成的过程也比较简单:先把天空融入到城市天空中,再把人物抠出放置到合适的位置,然后整体渲染颜色即可. 最终效果 1.首先在ps中打开"城市"图片,这里的天空不是我们所需的,用"钢笔工具"将天空抠选出来并删除.将我们下载的"天空"图片放在城市图层的下面,然后使用画笔工具将两个图片的连接处涂抹的融合一些. 2.打开"男孩"

PS合成童话故事中的悬浮场景

  PS合成童话故事中的悬浮场景           最终效果 1.新建1300 * 1833 px,分辨率为150 px文件. 2.把素材拖入文档,调整位置. 3.创建图层蒙版,擦除衔接位置,使画面更加融合. 4.给乌云层新建曲线调整图层,创建剪切蒙版,分别设置红绿蓝.

PS合成星空中闪烁的猫咪

PS合成星空中闪烁的猫咪   一.首先,打开你的Photoshop,然后打开星空素材,由于版式问题我们需要把图片先逆时针旋转90度. 二.置入提供的小帅猫,右键小帅猫图层栅格化,然后我们隐藏背景星空. 三.接着进入提取高光的环节.为什么说这是新手教程就是因为这个最关键的环节着实没什么技术难度,和抠图差不多....点击通道,我们点击然后复制差别最大的蓝通道得到蓝副本. 四.隐藏其他通道,点击蓝副本,Ctrl+t调整色阶,得到一个反差效果最好的小猫.

PS形状工具中的描边属性介绍

  PS形状工具中的描边属性介绍          步骤: 1.在PS中选择"矩形工具",在文档中绘制一个矩形; 2.选择形状属性,设置描边颜色,像素大小以及对齐.端点.角点; 3.大家也可以尝试设置"更多选项"中的属性; 4.最终效果图: 分类: PS入门教程

PS合成漂浮中的美女华丽场景

教程向朋友们介绍利用PS合成漂浮中的美女华丽场景.教程用到的素材非常普通,一幅简单的山脉图片和一幅人物图片.不过作者非常善于后期的制作,用山峰做成漂浮的小岛,用云彩等来渲染空间感.效果非常唯美.最终效果 主题华丽漂浮在哪">  下面是具体的制作步骤: 1.首先创建一个新文件,大小为800px*110px,背景图层填充黑色,创建一个新图层填充白色,然后在菜单栏中选择"滤镜-渲染-纤维",设置如图所示. 2.接着降低图层有不透明度至15%左右,效果如图所示. 3.在phot

用PS去除背景中的规则纹路杂物

  如果要去除杂物的背景是纯色的,或呈颗粒状,都是比较容易的.比较麻烦的情况是背景包含有规则的纹路,比如各种花纹.边框或毛皮.稍微不细心,在PS仿制过程中就会产生错位和留有人为痕迹.下面一起看看这篇PS教程的主要内容吧. 图1原图,画面中有杂物 图2 清理后,不再有杂物分散注意力了 Photoshop核心技巧 A:沿纹路跨边界的修复方法对于消除复杂的背景上的杂物非常实用. B:利用选区对边沿进行保护,可以让您的修复结果更加精细,更加完美. 做细致修补时,建议养成在新建的透明图层上做仿制操作,而不

PS抠出水中红花

原图 最终效果 先看素材,大家认为用哪种方法把水里的红花抠出来好.也许有很多同学会用到背景橡皮工具.魔术棒.色彩范围.抽出滤镜.通道.计算等方法中的一种或者几种,但我们在抠图的时候一要讲时间功率,二要讲抠图质量.下面我们开始来分析. 打开原图素材,点通道面板去看看红.绿.蓝三个通道,看能不能很好很快的把红花抠出来,观察了几个通道,要很快很好的把红花抠出来,确非易事,因为每个通道红花的背景都是花的,所以放弃再RGB通道抠图的念头. 既然RGB通道不好扣,我们试试别的方法. 1.色彩范围: 执行:选

ps打造字中字技巧

以前的教程用photoshop打造字中字,我们讲解了如何把文字放到路径中,形成字中字效果,今天演示一个类似的教程,先看效果图. 教程新建文档500x375像素,背景黑色.选择文字工具拖动,画一个覆盖画布的文本框. 前景色白色,字体方正大黑,尺寸9点,输入或者复制粘贴文字,效果如下. Ctrl+T,属性里设置旋转-25度. 回去确定变形,双击文字层缩略图,拖动增大文本框,输入其它的文字填补空缺,效果如下. 分类: PS文字教程