《三维数字地球引擎设计》PDF下载

  • 购买积分:14 如何计算积分?
  • 作  者:(美)帕特里克·卡兹,凯文·瑞恩著;杨超等译
  • 出 版 社:北京:国防工业出版社
  • 出版年份:2017
  • ISBN:9787118113747
  • 页数:431 页
图书介绍:本书详细介绍了三维数字地球引擎设计的基本原理和主要算法,主要内容包括对三维数字地球技术发展的介绍、三维数字地球涉及的基础几何数学知识的介绍、球面几何模型渲染的介绍、在三维数字地球开发过程中经常遇到的顶点精度和深度缓存精度问题的分析和解决、三维数字地球中矢量数据的处理和显示、三维球面地形的构建、大面积的地形影像数据调度与渲染等,涉及到三维数字地球引擎技术中从数据处理、模型构建到绘制渲染中方方面面的问题。

第一章 绪论 1

1.1 虚拟地球渲染中的挑战 1

1.2 内容简介 5

1.2.1 基础知识 5

1.2.2 精度修正 5

1.2.3 矢量数据 5

1.2.4 三维球面地形构建 6

1.3 OpenGlobe结构 7

1.4 约定惯例 9

第一部分 基础知识 10

第二章 数学基础 10

2.1 虚拟地球坐标系 10

2.1.1 地理坐标系 10

2.1.2 WGS84坐标系 12

2.2 椭球体基础 14

2.2.1 WGS84椭球体 15

2.2.2 椭球体表面法线 16

2.2.3 大地纬度和高度 17

2.3 坐标变换 18

2.3.1 地理坐标系向WGS84坐标系转换 18

2.3.2 WGS84坐标系向地理坐标系转换 21

2.4 椭球体上的曲线 30

2.5 资源 34

第三章 渲染设计 35

3.1 渲染需求 35

3.2 概要 39

3.2.1 代码结构 42

3.3 状态管理 43

3.3.1 全局状态 43

3.3.2 定义渲染状态 45

3.3.3 GL状态与渲染状态同步 48

3.3.4 绘图状态 50

3.3.5 清除状态 51

3.3.6 通过状态排序 53

3.4 shader 56

3.4.1 编译和连接shader 56

3.4.2 顶点属性 59

3.4.3 片元输出 62

3.4.4 uniform单元 63

3.4.5 自动的uniform单元 67

3.4.6 高速缓存shader 73

3.5 顶点数据 76

3.5.1 顶点缓冲区 77

3.5.2 引导缓冲区 82

3.5.3 顶点数组 83

3.5.4 GL渲染操作 86

3.5.5 Direct3D中的顶点数据 87

3.5.6 网格 87

3.6 纹理 93

3.6.1 创建纹理 93

3.6.2 采样器 98

3.6.3 用纹理渲染 100

3.6.4 GL渲染操作 101

3.6.5 Direct3D中的纹理 102

3.7 帧缓冲区 103

3.7.1 GL渲染操作 105

3.7.2 Direct3D中的帧缓冲区 106

3.8 完整流程:渲染一个三角形 106

3.9 资源 109

第四章 球面渲染 111

4.1 分格化 111

4.1.1 细分表面 111

4.1.2 细分表面操作 114

4.1.3 立方体图分格化 117

4.1.4 地理网格分格化 120

4.1.5 分格化算法比较 122

4.2 着色 122

4.2.1 光照 122

4.2.2 纹理 127

4.2.3 CPU/GPU权衡 130

4.2.4 经纬度网格 131

4.2.5 夜间照明 134

4.3 GPU光线投射 138

4.4 资源 142

第二部分 精度修正 144

第五章 顶点位置精度修正 144

5.1 抖动产生原因 145

5.1.1 浮点舍入误差 146

5.1.2 导致抖动的根本原因 147

5.1.3 为什么缩放不能解决抖动问题 150

5.2 根据中心渲染物体 150

5.3 使用CPU根据视点进行渲染 155

5.4 在GPU上根据视点进行渲染 158

5.4.1 通过DSFUN90提高精度 160

5.4.2 精度LOD 162

5.5 一些建议 164

5.6 资源 166

第六章 深度缓存精度 168

6.1 深度缓存误差的原因 169

6.1.1 最小三角分隔 173

6.2 基本解决方案 174

6.3 补偿深度缓存 175

6.4 对数深度缓存 177

6.5 多视锥体渲染 179

6.5.1 性能影响 181

6.6 w缓存 183

6.7 算法总结 183

6.8 资源 184

第三部分 矢量数据 185

第七章 矢量数据和折线 185

7.1 矢量数据源 186

7.2 解决z冲突 186

7.3 折线 188

7.3.1 批处理 189

7.3.2 静态缓存 191

7.3.3 线宽 192

7.3.4 轮廓线 196

7.3.5 采样 199

7.4 资源 200

第八章 多边形 201

8.1 纹理渲染 201

8.2 多边形镶嵌 202

8.2.1 输入整理 203

8.2.2 三角化 206

8.2.3 耳部剪除优化 213

8.2.4 细分 214

8.2.5 设置高度 218

8.2.6 绘制 218

8.2.7 管线修正 219

8.3 地形上的多边形 219

8.3.1 绘制方法 220

8.3.2 阴影体 221

8.3.3 采用阴影体绘制多边形 223

8.3.4 优化 225

8.4 资源 226

第九章 球面布告板 227

9.1 基础渲染 228

9.2 最小化纹理切换 233

9.2.1 纹理图集装箱算法 235

9.2.2 基于纹理图集的渲染 239

9.3 原点与偏移 241

9.4 文本渲染 244

9.5 资源 247

第十章 并行化资源准备 248

10.1 并行化无处不在 248

10.1.1 CPU并行化 248

10.1.2 GPU并行化 249

10.1.3 多线程并行化 250

10.2 数字地球中任务级的并行化 251

10.3 多线程的体系结构 252

10.3.1 消息队列 253

10.3.2 粗粒度线程 255

10.3.3 细粒度线程 260

10.3.4 异步I/O 262

10.3.5 单线程测试/调试模式 263

10.4 OpenGL多线程编程 263

10.4.1 一个GL线程,多个工作线程 263

10.4.2 多个线程,一个GL上下文 264

10.4.3 多线程,多内容 265

10.4.4 多线程驱动 274

10.5 参考资料 275

第四部分 三维球面地形构建 276

第十一章 地形基础知识 276

11.1 地形表示的基础理论 277

11.1.1 高度图 277

11.1.2 体素渲染 278

11.1.3 内隐式曲面 279

11.1.4 不规则三角网格 280

11.1.5 地形表示法小结 281

11.2 渲染高度图 282

11.2.1 创建三角形网格 283

11.2.2 顶点着色位移图 286

11.2.3 GPU光线投射算法 288

11.2.4 高度放大技术 300

11.3 计算法向量 301

11.3.1 前向求差分算法 303

11.3.2 中心差分算法 305

11.3.3 Sobel滤波方法 306

11.3.4 法向量计算方法小结 308

11.4 地形着色 309

11.4.1 颜色图和纹理坐标 310

11.4.2 细节图 311

11.4.3 程序着色 311

11.5 相关资料 323

第十二章 大面积地形渲染 325

12.1 细节等级(LOD) 326

12.1.1 离散LOD 327

12.1.2 连续LOD 327

12.1.3 层次LOD 329

12.1.4 屏幕空间误差 330

12.1.5 Artifacts 332

12.2 预处理 334

12.2.1 高度图转换为Mipmaps和Clipmaps 335

12.2.2 瓦片 336

12.2.3 网格简化 338

12.3 外存绘制 338

12.3.1 缓存层次结构 339

12.3.2 加载顺序策略 340

12.3.3 替换策略 342

12.3.4 预取 343

12.3.5 压缩 345

12.4 剔除 346

12.4.1 背面剔除 346

12.4.2 视锥体剔除 347

12.4.3 地平线剔除 347

12.4.4 硬件遮挡查询 349

12.4.5 从前往后绘制 351

12.5 资源 354

第十三章 geometry clipmapping算法 355

13.1 clipmap金字塔 357

13.2 顶点缓冲区 359

13.3 顶点和片断shader 361

13.4 融合 364

13.5 clipmap更新 367

13.5.1 环形寻址 368

13.5.2 更新区域 369

13.5.3 更新高程 372

13.5.4 更新法线 374

13.5.5 多线程Out-of-Core更新 376

13.5.6 上采样 379

13.5.7 替换和预取 381

13.5.8 比较和综合 382

13.6 着色 383

13.7 球体上的geometry clipmapping算法 385

13.7.1 在顶点shader中映射到椭球体表面 385

13.7.2 spherical clipmapping算法 388

13.7.3 coordinate clipmapping算法 389

13.8 相关资料 391

第十四章 chunked LOD算法 392

14.1 chunks 393

14.2 选择过程 394

14.3 chunk之间的裂痕 396

14.4 转换算法 397

14.5 生成算法 399

14.5.1 更新 399

14.5.2 激活顶点 402

14.5.3 网格化 405

14.6 着色 405

14.7 Out-of-Core渲染 407

14.8 地球上执行chunked LOD算法 408

14.9 chunked LOD算法与geometry clipmapping算法的比较 410

14.10 相关资料 411

附录A 消息队列实现 412

参考文献 421

关于作者 432