当前位置:首页 > 工业技术
DirectX3DHLSL高级实例精讲
DirectX3DHLSL高级实例精讲

DirectX3DHLSL高级实例精讲PDF电子书下载

工业技术

  • 电子书积分:16 积分如何计算积分?
  • 作 者:李健波,丁海燕编著
  • 出 版 社:清华大学出版社
  • 出版年份:2013
  • ISBN:9787302318439
  • 页数:507 页
图书介绍:本书从以HLSL为主线,从入门例子到复杂图形技术展示逐个展示,从灯光到纹理,从模型到阴影,从运动到碰撞以及与物理引擎的接合都提供了源代码,讲解和实际程序满足了各种用户层的实用需要。本书不是SDK的重复讲解(微软SDK的例子中展示了各种技术,读者容易迷失在代码中),而是将各个技术特点分散讲解,并提供实例代码。
《DirectX3DHLSL高级实例精讲》目录

第1章 入门基础 1

1.1入门程序 1

1.1.1程序的总体结构 1

1.1.2 D3D的引入 2

1.1.3 WinMain主程序代码讲解 2

1.1.4 Direct3D各部分代码功能 3

1.1.5效果文件 8

1.2装入模型 9

1.2.1模型装载 9

1.2.2装载模型的高级接口 9

1.2.3装载模型的低级接口 11

1.3效果文件和HLSL入门 11

1.3.1效果文件和HLSL文件综述 11

1.3.2效果文件 12

1.3.3 HLSL文件 13

1.4 .x文件入门 13

1.4.1.x文件 13

1.4.2.x文件的模板 15

1.5总结和记忆 16

第2章 DXUT库和渲染对象类 18

2.1 DXUT和D3D设备 19

2.1.1 DXUT框架入门 19

2.1.2设备管理 19

2.2 UI接口 24

2.2.1 UI类型 24

2.2.2 UI的定义创建与使用 24

2.2.3使用鼠标的控制 26

2.2.4控制小物体 27

2.2.5 UI设置的总结 28

2.3模型管理类CRenderObject 29

2.3.1新类的引入 29

2.3.2增加CRENDEROBJECT类 30

2.3.3 CRENDEROBJECT类代码的讲解 30

2.4 CBOARD类 36

2.4.1 CBOARD类的讲解 36

2.4.2 CBOARD类的使用 39

2.4.3 CBOARD类的扩展 40

2.5总结和记忆 42

第3章 效果文件和HLSL代码 43

3.1 FX效果文件 44

3.1.1效果文件的总体结构 44

3.1.2实例代码 44

3.1.3重要函数的讲解 46

3.2 HLSL入门 46

3.2.1 VertexShader和PixelShader功能 46

3.2.2效果文件状态变量 49

3.2.3使用Shader句柄方式 51

3.2.3 OnFrameMove()中增加代码 52

3.3 HLSL语言 54

3.3.1 HLSL中变量的类型 54

3.3.2 HLSL提供的运算符 54

3.3.3数据类型转换 55

3.3.4流程控制语句 55

3.3.5 HLSL的核心函数 55

3.3.6变量的修饰符和自定义函数 58

3.3.7程序实例 59

3.4编译常见错误和使用技巧 60

3.4.1 FX和HLSL常见编译错误 60

3.4.2执行错误 61

3.4.3编辑效果文件 62

3.4.4效果文件的编译的一些建议和经验 62

3.4.5 HLSL的代码保护 63

3.4.6效果文件的调试方法 63

3.4.7各Shader版本之间的区别 63

3.5总结和记忆 64

第4章 .X文件 65

4.1. .x文件结构 65

4.1.1 .x文件的组成 65

4.1.2简单.x文件实例 67

4.1.3 .x文件记录材质和纹理 68

4.1.4动画数据 69

4.2访问.x文件 70

4.2.1对.x文件的读取 70

4.2.2访问.x的高层接口 70

4.2.3访问.x文件的低层接口 71

4.2.4一些注意事项 74

4.3使用程序创建模型 74

4.3.1目的和方式 74

4.3.2具体实例 75

4.3.3其他创建模型的D3DX库 77

4.4其他格式的模型文件 78

4.4.1 .obj文件格式说明 78

4.4.2 .md5文件格式说明 80

4.4.3 FBX和COLLADA文件介绍 80

4.5渲染图元 81

4.5.1三角形条带渲染方式 81

4.5.2实例程序 82

4.5.3渲染图元的比较 83

4.6记忆和总结 84

第5章 D3D灯光 85

5.1模型的材质 86

5.1.1光照模型的数学表达式 86

5.1.2灯光属性 86

5.1.3法向量 87

5.1.4模型的材质 88

5.1.5实例代码 88

5.2点光源 90

5.2.1点光源的特点 90

5.2.2点光源中增加距离因子 93

5.3光照模型 94

5.3.1 Flat光照模型 94

5.3.2 Gouraud光照模型 95

5.3.3 Phone光照模型 96

5.4聚光灯和平行光 96

5.4.1聚光灯 96

5.4.2平行光 100

5.5全局光照的近似模拟 101

5.5.1半球光照 101

5.5.2光照贴图 103

5.5.3两种技术的比较 103

5.6 SSAO 104

5.6.1 SSAO实现原理 104

5.6.2实例代码讲解 105

5.6.3后续改进方向 107

5.7光线追踪 107

5.7.1光线追踪的原理 107

5.7.2实例代码讲解 108

5.7.3后续改进方向 114

5.8辐射度算法简介 114

5.9总结和记忆 115

第6章 纹理 116

6.1纹理和纹理页面 117

6.1.1纹理综述 117

6.1.2纹理使用实例 118

6.1.3访问纹理的其他形式和注意事项 121

6.2颜色、高光、透明纹理 121

6.2.1颜色纹理、镜面高光纹理的概念 121

6.2.2颜色纹理 122

6.2.3镜面高光纹理 122

6.2.4纹理融合 123

6.2.5透明纹理 123

6.3凹凸贴图和法线纹理 124

6.3.1凹凸贴图 124

6.3.2法线纹理的原理 125

6.3.3使用法线纹理的实例 126

6.4立方体环境贴图 129

6.4.1立方体环境贴图的原理 129

6.4.2使用立方体来模拟天空盒 129

6.4.3使用立方体贴图来模拟材质的反射 131

6.5 1D、 2D、 3D纹理 132

6.5.1 1D、 2D、 3D纹理的原理 132

6.5.2 1D纹理的使用 132

6.5.3 3D纹理的运用实例 134

6.6视差贴图 135

6.6.1视差贴图原理 135

6.6.2视差贴图实例 136

6.7反射和折射效果 138

6.7.1折射和反射的原理 138

6.7.2反射效果实例代码 138

6.7.3折射效果 140

6.7.4更复杂的效果 141

6.8过程纹理 141

6.8.1过程纹理原理 141

6.8.2过程纹理的实例 142

6.9投影纹理 144

6.9.1投影纹理的原理与使用 144

6.9.2投影纹理实例 145

6.10总结和记忆 148

第7章 缓冲区 149

7.1颜色缓冲区 150

7.1.1颜色缓冲区格式和基本操作 150

7.1.2颜色缓冲区运算实例 152

7.1.3颜色缓冲区的常用设置 153

7.2 Alpha混合和Alpha比较 154

7.2.1 Alpha混合和Alpha比较 154

7.2.2实例讲解 155

7.2.3关于透明纹理的选择 156

7.3深度缓冲区 156

7.3.1深度缓冲区原理 156

7.3.2使用HLSL来计算深度 159

7.3.3透明物体的深度 160

7.3.4深度缓冲区的设置 161

7.4模板缓冲 162

7.4.1模板缓冲区的功能和原理 162

7.4.2模板缓冲区的运用实例基础 164

7.4.3模板缓冲区高级实例 167

7.4.4双面模板的设置 170

7.5顶点、顶点索引、邻接缓冲区 171

7.5.1原理和用途 171

7.5.2代码实例 172

7.6总结和记忆 176

第8章 VertexShader运用 177

8.1 VertexShader的基本使用 177

8.1.1 VertexShader的功能和原理 177

8.1.2实例代码 178

8.2 VertexShade高级运用 181

8.2.1使用VertexShader实现物体的变形 181

8.2.2更复杂的VertexShader变换 184

8.3矩阵变换 184

8.3.1空间坐标变换 184

8.3.2矩阵变换的特性 185

8.3.3特殊矩阵的特殊性质 186

8.3.4 D3DX矩阵函数功能说明 186

8.4四元数 188

8.4.1四元数简单介绍 188

8.4.2四元数的物理意义 188

8.4.3实例程序 189

8.5物体方向和布告栏技术 191

8.5.1控制物体的方向 191

8.5.2布告栏技术 193

8.6顶点标识 196

8.6.1如何控制顶点 196

8.6.2代码实例 197

8.7总结和记忆 200

第9章 PixelShader运用 201

9.1基本功能 201

9.1.1 PixelShader功能和原理 201

9.1.2其他可以生成的特效 203

9.2图像的后期处理 204

9.2.1后期处理综述 204

9.2.2后期处理的几个实现 204

9.3 PixelShader分形 206

9.3.1分形的数学原理 206

9.3.2实例代码 207

9.4 Hough变换 209

9.4.1 Hough变换原理 209

9.4.2实例代码 210

9.5图像的傅立叶变换 212

9.5.1图像变换原理和算法 212

9.5.2快速傅立叶变换FFT 213

9.5.3代码实例 215

9.6总结和记忆 219

第10章 渲染到纹理 221

10.1渲染到纹理 221

10.1.1基本原理和实现 221

10.1.2接口函数讲解 225

10.1.3直接渲染到纹理 226

10.1.4渲染到纹理的实用技术 227

10.2渲染到立方体纹理 228

10.2.1渲染到立方体纹理 228

10.2.2实例讲解 229

10.2.3接口类函数讲解 232

10.3多渲染目标 233

10.3.1多渲染目标用途 233

10.3.2多渲染目标的实例 233

10.4渲染到顶点 236

10.4.1渲染到顶点 236

10.4.2实例代码 236

10.5总结和记忆 237

第11章 阴影 238

11.1平面阴影 238

11.1.1实现原理 238

11.1.2实例代码 240

11.2 ShadowMap阴影 243

11.2.1技术原理 243

11.2.2实例代码 244

11.2.3透明效果的阴影深度图 247

11.2.4阴影质量 248

11.3 ShadowVolume阴影 251

11.3.1技术原理 251

11.3.2创建阴影体 252

11.3.3顶点变换 254

11.3.4模板设置 255

11.3.5计算光照 257

11.3.6阴影体类代码 259

11.3.7特殊情况下处理方式 261

11.4阴影实现方式的比较 262

11.5总结和记忆 262

第12章 骨骼动画 263

12.1骨骼动画 264

12.1.1骨骼动画的原理 264

12.1.2骨骼动画的实例 265

12.2 .x文件中的骨骼和动画信息 268

12.2.1骨骼动画文件记录要求 268

12.2.2骨骼动画文件实例讲解 269

12.3实用骨骼代码 274

12.3.1程序总体结构 274

12.3.2骨骼类实现代码的讲解 276

12.3.3实例代码 277

12.4骨骼动画的融合和事件触发 281

12.4.1骨骼动画的融合 281

12.4.2事件触发 283

12.5总结和记忆 285

第13章 刚体动画、变形动画和纹理动画 286

13.1刚体动画 286

13.1.1刚体动画 286

13.1.2实例代码 286

13.2变形动画 288

13.2.1变形动画原理 288

13.2.2实例代码 289

13.3纹理动画 295

13.3.1动画纹理 295

13.3.2改变纹理坐标 295

13.3.3改变纹理 295

13.4变形动画工具 299

13.4.1 MPH的文件结构 299

13.4.2核心代码讲解 299

13.5总结和记忆 301

第14章 粒子 302

14.1粒子的显示 302

14.1.1技术实现的核心 302

14.1.2粒子类的结构 302

14.1.3粒子显示的优化 305

14.2粒子的运动 308

14.2.1粒子运动状态的描述 308

14.2.2粒子类的实现 309

14.2.3后续改进 313

14.3总结和记忆 313

第15章 物理模拟初步 314

15.1物理运动的数学模拟 314

15.1.1物理运动的数学描述方法 314

15.1.2一阶微分方程 315

15.1.3一阶方程数值求解的实例代码 315

15.1.4二阶微分方程的数学描述 317

15.1.5二体问题的数值模拟 318

15.1.6 Verlet积分 320

15.1.7数值积分方程的简单比较 321

15.2布料模拟 322

15.2.1布料模拟的原理 322

15.2.2布料实例代码 323

15.3简单的碰撞 327

15.3.1碰撞概述 327

15.3.2关于BV的期望特征 328

15.3.3使用球体检测碰撞 329

15.3.4使用AABB来检测碰撞 330

15.4 OBB碰撞检测算法实例 330

15.4.1 OBB分离轴原理 330

15.4.2实例代码 331

15.5 Bullet物理引擎入门 333

15.5.1入门实例 334

15.5.2计算物体的运动状态 335

15.5.3与图形结合 338

15.6总结和记忆 346

第16章 特效实例 347

16.1光晕效果 347

16.1.1简易光晕 347

16.1.2像素扩展方式的光晕 349

16.2延迟渲染(Deferred Shader) 350

16.2.1传统的渲染方式 350

16.2.2延迟渲染的实现原理 351

16.2.3延迟渲染的实例 351

16.3 HDR 355

16.3.1 HDR介绍 355

16.3.2 HDR的功能和使用 356

16.3.3 HDR效果的实例代码 357

16.3.4两个核心实例 358

16.4运动模糊和景深效果 366

16.4.1运动模糊的实现原理 366

16.4.2运动模糊的实例代码 367

16.43景深的实现原理 367

16.4.4景深效果的实例代码 368

16.5 NPR 370

16.5.1 NPR实现原理和分类 370

16.5.2技术实现 370

16.5.3常见NPR类型 371

16.6雾效果 374

16.6.1雾的实现原理 374

16.6.2体积雾的实现原理 375

16.6.3体积雾实例代码 376

16.7体积光照散射效果 379

16.7.1体积光照散射及实现原理 379

16.7.2体积光照散射(GodRay)实例代码 380

16.8各项异性材质 383

16.8.1各项异性材质特性 383

16.8.2实例代码 383

16.9总结和记忆 384

第17章 杂项实例 385

17.1模型差集与交集 385

17.1.1渲染模型交集的实现方式 385

17.1.2实现代码 386

17.2渲染线段 388

17.2.1 DrawLine接口方式 388

17.2.2使用渲染元型 389

17.3模型面的拾取 392

17.3.1模型面的拾取 392

17.3.2拾取的实例代码 394

17.4通用计算初步 396

17.4.1使用PixelShader实现矩阵相乘 396

17.4.2纹理迭代计算 397

17.4.3使用Jacobi迭代法求解线性方程组 399

17.4.4通用计算运用总结 401

17.5视频音频的后期处理 402

17.5.1视频后期处理 402

17.5.2音频处理 402

17.6总结和记忆 402

第18章 综合实例 403

18.1路径漫游 403

18.1.1实现原理和关键数据 403

18.1.2实现文件及代码讲解 405

18.1.3路径文件创建和工具 407

18.2简单水面 409

18.2.1水面的物理现象分析 409

18.2.2水面效果实现的代码讲解 409

18.2.3实例代码 410

18.3场景加载 417

18.3.1场景加载 417

18.3.2实例代码 418

18.4增加特效 424

18.4.1增加效果 424

18.4.2效果代码 424

18.4.3后续的需求 425

18.5动画组合 425

18.5.1动画内容 425

18.5.2实例代码 425

18.6总结和记忆 426

第19章 调试和优化 427

19.1 PIX调试 427

19.1.1 PIX的高级功能 427

19.1.2常用调试方式 432

19.1.3调试实例 432

19.2实例方式渲染 435

19.2.1实例方式渲染 435

19.2.2实例代码 436

19.3剪裁 439

19.3.1剪裁原理 439

19.3.2实例代码 441

19.4模型优化和简化 443

19.4.1模型优化 443

19.4.2模型优化的实例 444

19.4.3模型简化实例 446

19.4.4模型简化实例程序 446

19.5 D3D程序优化的一些基本方法 449

19.5.1资源的优化 449

19.5.2程序在执行过程中的一些建议 449

19.6总结和记忆 449

第20章 DX11入门 450

20.1迁移到DX 11 450

20.1.1 DXUT函数 450

20.1.2 CRENDEROBJECT类 451

20.1.3 CRENDEROBJECT的使用 456

20.2 DX 11使用的模型和DXUTSDKMesh 456

20.2.1 DXUTSDKMesh模型 456

20.2.2模型的装载、渲染和释放 458

20.2.3动画装载 458

20.3细分初步 459

20.3.1细分介绍 459

20.3.2细分的实例代码 459

20.4通用计算 463

20.4.1通用计算 463

20.4.2创建设备 464

20.4.3创建缓冲区 467

20.4.4显示线程状态 469

20.4.5线程、线程号、线程组 472

20.4.6大矩阵相乘 473

20.5使用ComputeShader图像处理 474

20.5.1辅助库 474

20.5.2对图像的简单操作 476

20.5.3计算分形 476

20.5.4 SM5.0功能介绍 478

20.6总结和记忆 479

第21章 附录 480

21.1 .x插件 480

21.1.1插件的安装 480

21.1.2插件导出注意事项 481

21.1.3设置 481

21.1.4导出方式 482

21.1.5其他 485

21.2纹理工具 485

21.2.1立方体纹理的创建 486

21.2.2体积纹理的创建 486

21.2.3法线纹理和高度纹理 486

21.2.4过程纹理的创建 488

21.3 Pix的使用 488

21.3.1 Pix功能总体讲解 488

21.3.2使用实例讲解Pix功能 489

21.3.3对象窗口 490

21.3.4其他功能 491

21.4 RenderMonkey简述 491

21.4.1界面介绍 492

21.4.2 RenderMonkey中的变量 493

21.4.3实例介绍 494

21.5 DirectMusic介绍及使用 495

21.6 Bullet物理引擎介绍 498

21.7路径导出工具 500

21.8其他工具概述 502

21.9总结和记忆 504

参考文献 505

参考网站 507

相关图书
作者其它书籍
返回顶部