3.4 The Vertex Shader
尽管vertex shader是第一个进行图形处理的阶段,但值得注意的是在这个阶段之前要进行一些数据处理,在DirectX中这被称作input assembler。很多数据流可以被编织在一起形成顶点和图元的集合并向下发送至流水线。例如,一个物体可以用一个位置数组和一个颜色数组表示。“input assembler”可能通过创建具有位置和颜色的顶点来创建这个物体的三角形组。第二个物体可能使用同样的位置数组(连同一个不同的模型变换矩阵)和一个不同的颜色数组来表达。数据表达在12.4.5节中详细讨论。在input assembler中也支持instancing,这个技术允许一个物体使用一些对于每个实例不一样的数据绘制很多次,并且仅仅使用一次draw call。15.4.2中讨论instancing的使用。DirectX10中的input assembler支持使用id标记每个instance,primitive和vertex,并且id可以给之后的任意shader阶段访问。对于早期的shader modles,这种数据只能额外加入到model中。
一个三角形mesh由一组顶点和描述顶点如何组成每个三角形的信息表达。vertex shader是处理三角形mesh的第一个阶段。对于vertex shader来说,是不知道三角形是如何组成的,正如其名,他专门处理输入的顶点。概括的说,vs提供了一个方法去修改、创建或者忽略每个多边形的顶点所相关的值,例如颜色、法线、纹理坐标和位置。通常,vs将顶点从模型空间变换到齐次剪裁空间;最低限度,一个vs必须总输出这个位置。
vs这个功能最初是2001年被DirectX8所引入的,因为vs是流水线的第一个阶段且使用频繁,他可以在GPU或CPU上实现,如果是CPU实现,就需要将结果转送给GPU去光栅化。这样做就会产生cpu到gpu的速度问题。目前的所有GPU都支持vs。
vertex shader非常类似于之前讨论的通用核心虚拟机(3.2节)。每个顶点被传入到vs程序中处理,vs输出很多个将在三角形或线段上插值的值(早期的shader model也支持输出point sprite particle object的size,但是现在sprite功能是geometry shader的一部分了)。vertex shader既不能创建也不能销毁顶点,并且一个顶点计算的结果不能传递给另一个顶点。每个顶点都是独立对待的,GPU可以对输入的顶点流平行的执行任意数量的vs。
之后的章节将讲解很多vs特效,例如shadow volume创建,vertex blending for animating joints,轮廓渲染(silhouette rendering)。另外一些vs的应用包括:
* 镜头特效(Lens effects):鱼眼效果、水底等歪曲的效果
* Object definition: 仅创建一个mesh一次,然后让他被vs变形
* Object 扭曲(twist)、弯曲(bend)、溶解(taper)操作。
* 程序控制的变形,例如旗帜,布料或水的运动。
* 图元创建:通过向流水线发送退化的mesh。这个功能在新GPU中已经被geometry shader代替。
* 卷页(page curls), 热模糊(heat haze), 水波纹(water ripples)和其他特效可以使用将整个frame buffer的内容作为一个屏幕对齐的mesh的纹理来达到,这个mesh使用程序来变形。
* Vertex texture fetch(SM3.0之上支持)可用来向顶点mesh附加纹理,允许廉价的实现海面和地形高地。
vs的输出可以有很多种不同的消费方法。通常的路径是对于每个被生成和光栅化的三角形,产生的独立的像素片段,发送到pixel shader程序中继续处理。在SM4.0中,数据也可以被发送到geometry shader中,流输出或者两者都有
分享到:
相关推荐
Realtime Rendering, 3D, CG, Graphics Realtime Rendering 3ed 第三版 pdf 英文版
Real-Time Rendering.3rd.pdf 图片版,凑合用吧
Real-Time Rendering, Fourth Edition 实时渲染最新版 第四版PDF,下载地址见文档....
realtime rendering 第三版 英文版 pdf格式
real-time rendering4th 高清免解压优质资源百度网盘下载绝对高清版本
只要3分,全彩图全文字,关键是只有39M,不是可怕的910M.
Real-Time Rendering 4th Edition 全彩892M百度网盘下载地址
游戏开发引擎的基本知识,很有用。包括渲染、碰撞,非扫描版哦。
Real Time Rendering 4th Edition 高清版 ,带目录。
Audio Visualization Using ThMAD Realtime Graphics Rendering for Ubuntu Linux 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除
因为本身·很大,大概900m,然而csdn上传只能220m以下,所以分了五卷
Realtime 3d Polygon Rendering using BSP Trees.pdf
因为本身·很大,大概900m,然而csdn上传只能220m以下,所以分了五卷
Audio Visualization Using ThMAD Realtime Graphics Rendering for Ubuntu Linux 英文无水印原版pdf pdf所有页面使用FoxitReader、PDF-XChangeViewer、SumatraPDF和Firefox测试都可以打开 本资源转载自网络,如...
2008 年新出的好书,英文版。 希望大家喜欢。 需要用djvu打开,可以打印。
浙江大学cad实验室自主研发图形引擎架构设计实现的有关资料
scout_realtime, 在你的浏览器中,实时服务器度量 侦察实时将实时服务器和流程指标发送到你的浏览器 ! 开始:在要监视的服务器上:安装 gem: gem install scout_realtime启动守护进程:scout_realtime start在你的...
Realtime Painting是unity开发的一个插件,可用于在模型上进行绘画。
Realtime Cloth Simulation