GPU编程入门(8) GPU ASM 顶点渲染初步

看这个题目应该跟汇编有一定的关系吧。。。。唠叨句,可能有人觉得学游戏的,特别是现在高级语言那么多的情况下汇编的重要性已经很低了。。。错。。。为什么错,自己找书看去吧。。咔咔。。。看这篇文章多少要有点汇编的基础,自己掂量吧

GPU可编程实时渲染初期,HLSLCG语言出现以前,使用GPU进行渲染是借助 一种类似于汇编的ASM的语言来进行的 ,这种语言难入门更难掌握,不过和汇编语言一样,他的效率也比高级的渲染语言要高,理由也是相同,因为高级语言要编译。我们花两次的时间简要的介绍一下顶点和像素ASM语言的基本语法和函数什么的。

如果你问为什么要学,那我先用一句多学点总没什么坏处压死你,然后我告诉你,因为以前是用这种语言的,而且有部分人多这种方式的语言有偏好,所以导致市场上很多写GPU编程的书都是用ASM写的,了解一下花不了多少时间,如果你学过汇编的话就更是扫一扫就好,不看的话可能真的要错过很多精彩的东西。正题(我居然发现每次说正题前说通废话会让我有快感。。。。汗一个):

首先是顶点着色器的输入和输出,也就是整体架构,如图:

下面稍做解释,顶点着色器对每个顶点要运行一次,主要的输入是顶点,寄存器包括输入寄存器和输出寄存器,输入寄存器包括

一个地址寄存器a0,是能够对常量进行索引访问的特殊寄存器,具体说就是处理每个顶点的时候,将地址寄存器设置为索引值,就可以使用适当的常量了。这么说大概很多人不明白,可实际上很简单,等用实例的时候一看就明白了

12个可读写的临时寄存器r0~r11,就是用来保存在复杂计算过程中的数据的寄存器。注意,寄存器和顶点找色器不保持为连续的

常量寄存器c(n),至少256个,为浮点类型,保存四维向量,可读,用外部程序写入,最常见的用途是设置变换矩阵和影响顶点的其他数据。

顶点元素寄存器v0~v16,浮点类型,是一个四维向量,可读,用于输入顶点数据。

接下来是输出寄存器,如下:oPos:输出变换后的最终顶点位置,也就是屏幕坐标

oD1~2,两个颜色输出,漫反射和镜面反射宿处,四维向量

oT18,纹理输出寄存器,四维向量

oFog,输出雾化值,float类型

oPts,顶点大小,浮点类型

然后是常用顶点着色器指令,不写了,给张图:

切。。。怎么都传不上来了,好烂的blog,还有就是保存成草稿的文章怎么都在也发表不了了,难道是我太SB不会弄?!切。。。。。。BS。。

PS:文中的图来至《real time rendering tricks and techniques in Directx 》网上有电子书,可以考虑下来看看,这本书全部用ASM写的,很精彩,入门,提高都不错。。。自己看着办吧。。。。

 

 
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页