游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3790|回复: 9

GPU gems 3:前言

[复制链接]

1

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2008-4-21 09:21:00 | 显示全部楼层 |阅读模式
正在学GPU gems 3,现将自已的翻译贴出来,希望能和大家一起研究.同时,本人英文及技术均有限,不妥之处也希望得到高人指点.

以下内容:

Part 1:几何学

虽然像素及像素着色器经常获得关注,几何学却是“一切的开始”。离开了几何学,我们将发现灯光、阴影和反射相当地无趣。为什么?因为提高了低层几何学的复杂性也就提高了像素的质量。所以,对本书这一部分的主题更好的描述是“复杂性”,因为其所有利用GPU提升场景复杂性的技术在过去均需要CPU的介入。大量的方法变为可能是依靠基于DX10的图形硬件的新近升级,包括:geometry shader\stream out\buffer fetches等能力。然而,许多主题对先前硬件的技术改进同样可行。

Chapter 1 generating complex procedural terrains using the GPU
利用GPU产生复杂的程序地形
1.1        导言
传统上,CPU生成并由GPU渲染的程序地形仅限于高度网格(height fields)。然而,CPU的串行处理特性并不适合于生成极度复杂地形——一个高度平行的任务。加之,CPU能处理的简单高度网格并不能提供有趣的地形特征(如洞穴或悬崖)。
在交互式帧率下生成高度复杂性的程序地形,我们指望GPU。通过利用几个新的DX10能力,如GS、stream output,和3D纹理渲染,我们能利用GPU快速生成复杂程序地形的大块(large blocks),集合起这些大块建立一个大的、细化的多边形模型,并在当前视口中显示这一地形。

1.2        边界立方体和密度函数(Marching Cubes and the Density Function)
概念上,地形表面可以利用称为“密度函数”的单一函数完全描述。在3D空间(x,y,x)内的任意点,本函数表示为单一的浮点值。这些值在空间内变化——时而为正,时而为负。如果值为正,这点在空间中位于实体地形内部。
如果值为负,这点位于空空间(empty space)(如空气或水)。在负值和正值之间的边界——密度值为零——是地形的表面。沿着这个表面,我们想要构造一个多边形网格。
我们利用GPU每次生成地形的一“块”多边形,但我们进一步细分这块为32×32×32的小单元,或三维象素。图1-2展示这一坐标系统。在这些三维象素内部,我们构建多边形(三角形)来表现地形表面。这一边界立方体运算法则允许我们在单一三维象素内生成正确的多边形,赋于,作为输入,其八个顶点的密度值。作为输出,其产生0-5间的任意个多边形。如果一个单元的八个顶点的密度值具有相同的正负,那么该单元完全在地形内部或外部,因此没有多边形输出。在所有其他情况下,该单元在岩石和空气之间,会有0-5间的任意个多边形产生。

1.2.1 在一个单元内部生成多边形
在一个单元内部生成多边形的工作如下:如图1-3获得八个顶点的密度值,确定每一个值是否为正或负。对于每一个值我们设置一位。如果密度为负,我们设该位为0;如果密度为正,我们设该位为1。
Figure 1-3. A Single Voxel with Known Density Values at Its Eight Corners
A solid dot indicates a positive density value at that corner. Each corner becomes a "bit" in determining the 8-bit case.

然后我们逻辑连接(接位取或)这八位以产生一个字节——也称为CASE——在所0~255范围内。如果CASE为0或255,那么这个单元全部在地形内部或外部,如前面描述的,没有多边形会生成。然而,如果CASE在范围[1,254]之间,会有不同数量的多边形生成。
如果CASE不是0或255,其通常在样式查找表[various loolup tables](在GPU上,使用constant buffers)中索引以确定基于这个CASE有多少个多边形输出,同时如何建立它们。每一个多边形通过连接位于此单元12条边的不同位置的三个点(顶点)加以建立。
Figure 1-4. The 14 Fundamental Cases for Marching Cubes
The other 240 cases are just rotations or inversions of these base cases. Image courtesy of Martin Franc.

正确的,一个顶点沿边放置的位置由插值决定。该顶点置于密度值大约为0的位置。例如,一个边的终点A的密度值为0.1,终点B的密度值为-0.3,则顶点位于从A到B的25%位置。
图1-5展示一个CASE。当这个CASE索引查找表后,蓝色的点表明顶点位于哪个边上。灰色区域显示这些顶点如何连接以构成三角形。注意蓝色点沿边实际出现的位置取决于此边终点的密度值。
Figure 1-5. Implicit Surface to Polygon Conversion

我们输出的是一个三角形列表,所以输出三个顶点建立一个三角形,接着下一个顶点输出开始一个新的三角形。如果一个确定的CASE要求我们生成N个多边形,我们需要产生顶点(沿单元边的某个位置)3×N次。

1.2.2 查找表[Lookup Tables]
两个主要的查找表在此工作。第一个,当通过索引CASE数值,告诉我们此CASE有多少个多边形要建立:
int case_to_numpolys[256];
第二个查找表要大得多。一旦其接收CASE值,该表提供在单元内部建立5个多边形的必须信息。这五个多边形均通过一个INT3值(3个整数值)加以描述;这三个值是必须连接以建立三角形的立方体边的编码[0~11]。图1-6显示边编码的方案。
int3 edge_connect_list[256][5];
Figure 1-6. The Edge Numbers Assigned to the 12 Edges of a Voxel

作为例子,如果CASE值为193,那么查找表case_to_numpolys[193]会告诉我们多少个多边形需要建立,是3个。接下来,edge_connect_list[193][]查找表返回如下值:
int3 edge_connect_list[193][0]:  11  5 10
int3 edge_connect_list[193][1]:  11  7  5
int3 edge_connect_list[193][2]:   8  3  0
int3 edge_connect_list[193][3]:  -1 -1 -1
int3 edge_connect_list[193][4]:  -1 -1 -1
为了在这个单元内部建立三角形,几何着色器(geometry shader)生成并输出九个顶点(沿边集合的适当位置)——组成三个三角形——到顶点缓存存储。注意最后两个INT3值为-1;这些值不会被取样,因为我们知道这个CASE仅有三个三角形。GPU将继续前进至下一个单元。








1

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
 楼主| 发表于 2008-4-21 09:29:00 | 显示全部楼层

Re:GPU gems 3:前言

怎么发图???

7

主题

68

帖子

143

积分

注册会员

Rank: 2

积分
143
发表于 2008-4-21 11:38:00 | 显示全部楼层

Re: GPU gems 3:前言

吾道不孤也。原版书真贵啊。。。。

18

主题

579

帖子

583

积分

高级会员

Rank: 4

积分
583
发表于 2008-4-21 11:55:00 | 显示全部楼层

Re:GPU gems 3:前言

中奖得到一本GPU GEMS 3,已经入手了写信调换的GPU GEMS 2,呵呵。

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2008-4-21 12:10:00 | 显示全部楼层

Re:GPU gems 3:前言

有电子版的了。。。。Emule上。

1

主题

3

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2008-4-23 15:16:00 | 显示全部楼层

Re:GPU gems 3:前言

Emule 上有GMES 1,2,3的电子版。。。
已经全部下载

5

主题

755

帖子

757

积分

高级会员

Rank: 4

积分
757
发表于 2008-4-23 16:22:00 | 显示全部楼层

Re:GPU gems 3:前言

我什么时候才能开始把这上面的技能用上啊。哎

35

主题

1735

帖子

1739

积分

金牌会员

Rank: 6Rank: 6

积分
1739
QQ
发表于 2008-4-23 18:05:00 | 显示全部楼层

Re:GPU gems 3:前言

老实说,我就不大相信LZ能坚持下去,把书翻译完。嘿嘿。

9

主题

53

帖子

87

积分

注册会员

Rank: 2

积分
87
发表于 2008-4-23 22:31:00 | 显示全部楼层

Re:GPU gems 3:前言

我也不相信瓦卡卡楼主有本事就把他翻完然后给我们看看

0

主题

34

帖子

34

积分

注册会员

Rank: 2

积分
34
发表于 2008-4-24 15:56:00 | 显示全部楼层

Re:GPU gems 3:前言

。。。。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-22 17:52

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表