《DirectX实时渲染技术详解》PDF下载

  • 购买积分:18 如何计算积分?
  • 作  者:(美)kelly Dempski著;于忠德,吴红艳,林锋译
  • 出 版 社:重庆:重庆大学出版社
  • 出版年份:2006
  • ISBN:7562428662
  • 页数:649 页
图书介绍:本书是关于计算机图形学编程最新技术的专著,介绍了DirectX中的实时渲染技术(Real-Time Rendering Techniques)。本书首先回顾了近年来3D图形学的发展,并简单介绍了必备的基础知识,比如数学基础(矢量和矩阵)、Direct3D基础(色彩和光照等)。然后介绍了用于特效编程的实时渲染技术,重点放在支持硬件加速功能的顶点着色器(vertex shader)和像素着色器 (pixel shader)上,详细介绍了其原理,例如着色器的硬件实现、汇编指令集、在D3D中的应用等,然后介绍了其应用,例如高级纹理混合、几何操纵、角色动画、色彩操纵、光照的实现、环境映射中的折射与反射、卡通阴影技术、其他阴影技术、逐像素光照、凹凸贴图等。最后也介绍了其他一些有用的技术,例如运动模糊、2D渲染、使用视频作为纹理、使用像素着色器进行图象处理等等。本书的例子使用DirectX SDK版本8,支持着色器版本1.1,可以在VC++ 6.0下编译运行。

第1部分 预备知识 3

第1章 3D图形学:历史回顾 3

PC机的硬件进展 4

家用游戏机的硬件进展 5

电影的发展 6

DirectX的简要历史 6

OpenGL概述 7

第2章 向量复习课程 9

什么是向量 10

规一化向量 11

向量算术 12

向量点积 13

向量叉积 14

四元数 15

D3DX中的向量 16

总结 18

第3章 矩阵复习课程 19

什么是矩阵 20

单位矩阵 21

旋转矩阵 22

放缩矩阵 22

平移矩阵 22

矩阵连接 23

矩阵与D3DX 24

总结 25

第4章 颜色与光照概要 27

什么是颜色 28

环境光照与放射光照 29

漫反射光照 30

镜面反射光照 31

其他光源类型 33

用Direct3D来汇总一切 34

阴影类型 35

总结 36

第5章 图形管线介绍 37

Direct3D管线 38

顶点数据与高阶表面 39

固定功能的变换与光照阶段 40

顶点着色器 40

裁剪器 41

多重纹理化 41

深度检测、模板检测和alpha检测 42

像素着色器 42

雾化 42

帧缓冲区 43

性能考虑 43

总结 44

第2部分 建立沙箱 47

第6章 设置开发环境和简单的Win32应用程序 47

SDK初探 48

S设置开发环境 49

一个简单的Win32应用程序 50

编译并运行这个简单应用程序 55

回顾:我们为什么那样做 57

总结 57

第7章 创建和管理Direct3D设备 59

什么是Direct3D设备 60

使用Direct3D设备进行渲染 66

清除设备 66

重温Application.h 67

重温Application.cpp 69

总结 75

第8章 一切从顶点开始 79

第3部分 渲染 79

什么是顶点 80

创建顶点 83

销毁顶点缓冲区 85

设置与改变顶点数据 85

渲染顶点 86

性能考虑 88

在屏幕上的某些东西 89

总结 94

第9章 使用变换 95

变换意味着什么 96

世界变换 97

观察变换 97

构建世界与观察变换 98

投影变换 100

变换与D3D设备 102

使用矩阵堆栈 102

视口 103

综合应用 104

建议的练习 108

总结 109

性能考虑 109

第10章 从顶点到几何图形 111

将顶点转化为表面 112

渲染表面 113

加载并渲染.X文件 117

性能考虑 119

源代码 120

总结 131

第11章 固定功能光照 133

D3DLIGHT8结构 134

为光照设置设备 138

应用程序 138

源代码 140

总结 151

第12章 纹理入门 153

纹理——内部的机制 154

创建纹理 157

纹理和顶点 159

纹理和设备 161

高级话题 162

性能考虑 162

应用程序 163

总结 172

第13章 纹理阶段状态 173

设置纹理阶段状态 174

混合与多重纹理化 175

凹凸映射 178

纹理坐标状态 178

纹理过滤和Mip贴图 180

源代码 183

纹理阶段状态与着色器 183

总结 189

第14章 深度检测与Alpha混合 191

深度检测 192

Alpha混合(Alpha Blending) 195

Alpha检测 197

性能考虑 197

源代码 198

总结 205

第4部分 着色器 209

第15章 顶点着色器 209

顶点着色器 211

着色器代码 214

混合和写掩码 216

着色器的实现 217

与计算几何图形一起使用着色器 222

与网格一起使用着色器 222

基本着色器 222

性能问题 224

源代码 224

总结 230

第16章 像素着色器 233

什么是像素着色器 234

像素着色器版本 235

像素着色器的输入、输出和操作 236

附属纹理读取 237

指令配对 240

纹理寻址 240

像素着色器的局限与告诫 246

测定像素着色器的支持 247

汇编、创建和使用像素着色器 247

一个非常简单的像素着色器应用程序 248

在顶点着色器中的简单光照 248

在像素着色器中的简单混合 249

简单的像素着色器应用 251

总结 254

第5部分 顶点着色器技术 259

第17章 与网格一起使用着色器 259

基本概念 260

从材质到顶点颜色 261

从顶点颜色到顶点数据 262

性能考虑 263

程序实现 263

总结 270

第18章 顶点着色器的简单与复杂几何操纵 271

沿着法线扩张顶点 272

用正弦波来扭曲顶点 274

程序实现 278

扩展该例子的想法 282

总结 282

第19章 布告板和顶点着色器 285

布告板的基本思想 286

布告板着色器 287

程序实现 291

其他的布告板概念 296

总结 296

第20章 工作在笛卡尔坐标之外 299

笛卡尔坐标系与其他坐标系 300

在顶点着色器中坐标系之间的映射 302

应用程序代码 304

该项技术的应用 310

总结 311

第21章 贝塞尔面片 313

线、曲线以及面片 314

用“微积分”来得到表面法线 317

在着色器中计算面片值 319

贝塞尔应用程序 321

贝塞尔面片的使用和优点 329

连接曲线和面片 330

总结 330

第22章 角色动画——矩阵调色板蒙皮 333

角色动画技术 334

地址寄存器 337

在着色器里的矩阵调色板蒙皮 337

应用程序 339

调色板的其他用途 347

总结 348

第23章 简单的颜色操纵 349

将深度编码到顶点颜色中 350

深度着色器 351

深度编码应用程序 353

X射线着色器 354

X射线应用程序 356

总结 359

第24章 在顶点着色器里实现光照 361

把光源向量转换到物体空间 362

方向光源着色器 365

点光源着色器 367

聚光灯着色器 369

应用程序代码 371

在一个着色器内的多个光源 373

总结 373

第25章 卡通阴影 375

着色器、纹理和复变函数 376

将此方法应用于卡通阴影(第1部分) 378

将此方法应用于卡通阴影(第2部分) 379

将所有一切放到着色器中 380

卡通阴影应用程序 381

关于纹理变化的概念 383

总结 384

关于着色器变化的概念 384

第26章 反射和折射 387

环境映射和立体贴图 388

动态地改变立体贴图 389

计算反射向量 389

计算近似折射向量 391

反射/折射顶点着色器 393

应用程序代码 395

立体贴图的其他使用 400

总结 401

第27章 阴影——平面阴影 403

在平面上投射阴影 404

平面方程 405

阴影矩阵 406

模板缓冲区与阴影 407

平面阴影应用程序 409

局限和改进之处 416

总结 418

第28章 阴影——阴影体 419

阴影体的解释 420

阴影体着色器 426

阴影体应用程序 427

阴影体的优点与缺点 433

总结 435

第29章 阴影——阴影贴图 437

阴影贴图概念 438

将光源视点渲染到纹理 440

纹理映射世界 442

深度比较顶点着色器 444

阴影映射像素着色器 445

阴影贴图应用程序 445

局限与改进 452

总结 453

第6部分 像素着色器技术 457

第30章 逐像素光照 457

简单的光源贴图 458

使用像素着色器的逐像素光照 459

逐像素聚光灯 460

逐像素聚光灯顶点着色器 463

逐像素聚光灯像素着色器 464

逐像素聚光灯应用程序 465

逐像素点光源 467

逐像素点光源顶点着色器 468

逐像素点光源像素着色器 469

逐像素点光源应用程序 469

局限 471

总结 472

第31章 逐像素光照——凹凸映射 475

凹凸映射的概念 476

创建并使用法线贴图 477

创建纹理空间基向量 479

凹凸映射顶点着色器 480

没有像素着色器的凹凸映射 481

凹凸映射像素着色器 487

局限与改进余地 488

总结 489

第32章 用逐像素方式实现的逐顶点技术 491

逐像素反射 492

使用texm3x3pad 493

反射凹凸映射顶点着色器 495

反射凹凸映射像素着色器 496

反射凹凸映射的应用程序 497

逐像素卡通阴影 502

逐像素卡通顶点着色器 502

逐像素卡通像素着色器 503

逐像素卡通的应用程序 506

总结 508

第7部分 其他有用的技术 511

第33章 渲染到纹理——全屏运动模糊 511

创建一个作为渲染目标的纹理 512

从纹理渲染目标获得表面 514

渲染到纹理渲染目标 515

渲染到动态立体贴图 515

运动模糊 517

作为后处理技术的运动模糊 518

运动模糊应用程序 519

性能涵义 526

总结 527

第34章 2D渲染——只是减掉一个“D” 529

放弃DirectDraw的原因 530

丢掉一个“D” 531

精灵——图像就是一切 533

在2D里使用顶点 534

一个非常简单的2D应用程序 536

性能涵义 540

总结 543

可能的扩展 543

第35章 DirectShow:用视频作为纹理 545

DirectShow简述 546

我想要我的MP3 548

视频到纹理滤波器的操作 548

准备构建纹理类 551

纹理滤波器类 551

视频纹理应用程序 559

总结 561

第36章 用像素着色器进行图像处理 563

后期处理的优点 564

用像素着色器进行全屏颜色操纵 565

用颜色曲线来操纵颜色 574

用卷积核进行图像处理 579

性能考虑 583

总结 584

第37章 绘制文本的更好方式 585

基本概念 586

程序实现 588

总结 600

第38章 精确的定时 601

低分辨率定时 602

高分辨率定时 603

关于动画的一般说法 604

程序实现 605

总结 608

第39章 模板缓冲区 609

模板缓冲区和模板检测的目的 610

模板缓冲区的渲染状态 611

模板化的狙击区域 614

总结 619

第40章 拾取:实际拾取过程的更多介绍 621

非常简单的2D拾取 622

光线拾取 624

采用光线拾取的地形跟踪 626

照片般完美的逐像素拾取过程 630

逐像素拾取顶点着色器 631

逐像素拾取应用程序 632

逐像素拾取的其他用途 637

性能问题 638

总结 638

索引 641