新書推薦:
《
无尽的海洋:美国海事探险与大众文化(1815—1860)
》
售價:HK$
99.7
《
治盗之道:清代盗律的古今之辨
》
售價:HK$
122.1
《
甲骨文丛书·剑桥世界暴力史(第一卷):史前和古代世界(套装全2册)
》
售價:HK$
210.6
《
甲骨文丛书·中华早期帝国:秦汉史的重估
》
售價:HK$
300.2
《
欲望与家庭小说
》
售價:HK$
98.6
《
惜华年(全两册)
》
售價:HK$
70.3
《
甲骨文丛书·古代中国的军事文化
》
售價:HK$
99.7
《
中国王朝内争实录(套装全4册):从未见过的王朝内争编著史
》
售價:HK$
244.2
|
編輯推薦: |
元宇宙中的景色是如何搭建的?背后离不开计算机图形学的发展和成熟。
本书两位作者都是美国加利福尼亚州立大学的计算机教授,具有丰富的教学经验。
从立方体到3D模型,从水面到VR,从头实现属于你自己的景色。
·提供模型、图像文件、纹理文件、贴图文件、图表等配套资源
·提供教学PPT、章末习题代码以及课程大纲等教师资源
|
內容簡介: |
本书以OpenGL和C 作为工具,介绍计算机图形学编程的相关内容。全书从图形编程的基础和准备工作讲起,介绍了OpenGL图像管线、3D模型、纹理贴图、光照、阴影、天空和背景、增强表面细节、曲面细分、几何着色器、水面模拟、光线追踪等计算机图形学编程技术。本书各章配备了不同形式的习题,供读者巩固所学知识。
本书适合作为高等院校计算机科学专业的计算机图形编程课程的教材或辅导书,也适合对计算机图形编程感兴趣的读者自学。
|
關於作者: |
V.斯科特·戈登(V. Scott Gordon),加利福尼亚州立大学萨克拉门托分校教授,撰写及合著出版物30多部,涉及人工智能、神经网络、进化计算、计算机图形学、软件工程、视频和策略游戏编程,以及计算机科学教育等多个领域。戈登博士在科罗拉多州立大学获得博士学位。 约翰·克莱维吉(John Clevenger ),加利福尼亚州立大学萨克拉门托分校教授,拥有超过40年的教学经验,教学内容包括高级图形学、游戏架构、操作系统、VLSI芯片设计、系统仿真等主题。他是国际大学生程序设计竞赛(ICPC)的技术总监,负责监督编程竞赛支持系统PC^2的持续开发。克莱维吉博士在加州大学戴维斯分校获得博士学位。
|
目錄:
|
第 1 章 入门 1
1.1 语言和库 1
1.1.1 C 1
1.1.2 OpenGL / GLSL 2
1.1.3 窗口管理库 2
1.1.4 扩展库 2
1.1.5 数学库 3
1.1.6 纹理图像加载库 3
1.1.7 可选库 3
1.2 安装和配置 3
参考资料 4
第 2 章 OpenGL 图像管线 5
2.1 OpenGL 管线 5
2.1.1 C /OpenGL 应用程序 6
2.1.2 顶点着色器和片段着色器 8
2.1.3 曲面细分着色器 11
2.1.4 几何着色器 11
2.1.5 栅格化 12
2.1.6 片段着色器 13
2.1.7 像素操作 13
2.2 检测 OpenGL 和 GLSL 错误 14
2.3 从文件中读取 GLSL 源代码 16
2.4 从顶点构建对象 17
2.5 场景动画 18
2.6 C 代码文件结构 19
补充说明 20
习题 21
参考资料 21
第 3 章 数学基础 22
3.1 3D 坐标系统 22
3.2 点 22
3.3 矩阵 22
3.4 变换矩阵 24
3.4.1 平移矩阵 24
3.4.2 缩放矩阵 25
3.4.3 旋转矩阵 25
3.5 向量 26
3.5.1 点积的应用 27
3.5.2 叉积的应用 28
3.6 局部和世界空间 28
3.7 视觉空间和合成相机 28
3.8 投影矩阵 30
3.8.1 透视投影矩阵 30
3.8.2 正射投影矩阵 31
3.9 LookAt 矩阵 32
3.10 用来构建矩阵变换的 GLSL
函数 32
补充说明 33
习题 34
参考资料 34
第 4 章 管理 3D 图形数据 35
4.1 缓冲区和顶点属性 35
4.2 统一变量 37
4.3 顶点属性插值 37
4.4 模型-视图和透视矩阵 38
4.5 我们的第 一个3D程序—— 一个3D立方体 39
4.6 渲染一个对象的多个副本 45
实例化 45
4.7 在同一个场景中渲染多个不同模型 47
4.8 矩阵栈 49
4.9 应对“Z 冲突”伪影 53
4.10 图元的其他选项 54
4.11 性能优先的编程方法 55
4.11.1 尽量减少动态内存空间分配 55
4.11.2 预先计算透视矩阵 55
4.11.3 背面剔除 56
补充说明 58
习题 58
参考资料 59
第 5 章 纹理贴图 60
5.1 加载纹理图像文件 60
5.2 纹理坐标 61
5.3 创建纹理对象 62
5.4 构建纹理坐标 62
5.5 将纹理坐标载入缓冲区 63
5.6 在着色器中使用纹理:采样器变量和纹理单元 64
5.7 纹理贴图:示例程序 64
5.8 多级渐远纹理贴图 66
5.9 各向异性过滤 69
5.10 环绕和平铺 69
5.11 透视变形 70
5.12 材质—更多OpenGL细节 71
补充说明 72
习题 72
参考资料 72
第 6 章 3D 模型 74
6.1 程序构建模型—构建一个球体 74
6.2 OpenGL 索引—构建一个环面 79
6.2.1 环面 79
6.2.2 OpenGL 中的索引 79
6.3 加载外部构建的模型 84
补充说明 90
习题 90
参考资料 90
第 7 章 光照 91
7.1 光照模型 91
7.2 光源 91
7.3 材质 93
7.4 ADS 光照计算 95
7.5 实现 ADS 光照 96
7.5.1 Gouraud 着色(双线性光强插值法) 97
7.5.2 Phong 着色 101
7.6 结合光照与纹理 105
补充说明 106
历史记录 106
习题 107
参考资料 107
第 8 章 阴影 108
8.1 阴影的重要性 108
8.2 投影阴影 108
8.3 阴影体 109
8.4 阴影贴图 109
8.4.1 阴影贴图(第 1 轮)—— 从光源位置“绘制”物体 110
8.4.2 阴影贴图(中间步骤)——将 Z 缓冲区复制到纹理 111
8.4.3 阴影贴图(第 2 轮)—— 渲染带阴影的场景 111
8.5 阴影贴图示例 113
8.6 阴影贴图的伪影 117
8.7 柔和阴影 119
8.7.1 现实世界中的柔和阴影 119
8.7.2 生成柔和阴影——百分比邻近滤波(PCF) 120
8.7.3 柔和阴影/PCF 程序 122
补充说明 124
习题 124
参考资料 125
第 9 章 天空和背景 126
9.1 天空盒 126
9.2 穹顶 127
9.3 实现天空盒 128
9.3.1 从头开始构建天空盒 128
9.3.2 使用 OpenGL 立方体贴图 131
9.4 环境贴图 133
补充说明 136
习题 137
参考资料 137
第 10 章 增强表面细节 138
10.1 凹凸贴图 138
10.2 法线贴图 139
10.3 高度贴图 145
补充说明 146
习题 147
参考资料 147
第 11 章 参数曲面 148
11.1 二次贝塞尔曲线 148
11.2 三次贝塞尔曲线 149
11.3 二次贝塞尔曲面 151
11.4 三次贝塞尔曲面 152
补充说明 153
习题 153
参考资料 153
第 12 章 曲面细分 154
12.1 OpenGL 中的曲面细分 154
12.2 贝塞尔曲面细分 158
12.3 地形、高度图的细分 162
12.4 控制细节级别 166
补充说明 168
习题 168
参考资料 168
第 13 章 几何着色器 169
13.1 OpenGL 中的逐个图元处理 169
13.2 修改图元 170
13.3 删除图元 172
13.4 添加图元 173
13.5 更改图元类型 175
补充说明 176
习题 176
参考资料 176
第 14 章 其他技术 177
14.1 雾 177
14.2 复合、混合、透明度 178
14.3 用户定义剪裁平面 182
14.4 3D 纹理 183
14.5 噪声 187
14.6 噪声应用——大理石 190
14.7 噪声应用——木材 193
14.8 噪声应用——云 195
14.9 噪声应用——特殊效果 198
补充说明 199
习题 200
参考资料 200
第 15 章 模拟水面 202
15.1 游泳池表面和底部的几何设定 202
15.2 添加水面反射和折射 205
15.3 添加水面波浪 212
15.4 更多修正 213
15.5 为水的流动添加动画 216
15.6 水下焦散 218
补充说明 219
习题 220
参考资料 220
第 16 章 光线追踪和计算着色器 221
16.1 计算着色器 222
16.1.1 编译及使用计算着色器 222
16.1.2 计算着色器中的并行计算 222
16.1.3 工作组 225
16.1.4 工作组详解 225
16.1.5 工作组的限制 227
16.2 光线投射 227
16.2.1 定义 2D 纹理图像 228
16.2.2 构建和显示光线投射图像 228
16.2.3 光线与球面的交点 233
16.2.4 轴对齐的光线与立方体的交点 234
16.2.5 无光照的简单光线投射的输出 235
16.2.6 添加 ADS 光照 235
16.2.7 添加阴影 237
16.2.8 非轴对齐的光线与立方体的交点 238
16.2.9 确定纹理坐标 239
16.2.10 平面交点和过程纹理 244
16.3 光线追踪 246
16.3.1 反射 246
16.3.2 折射 247
16.3.3 结合反射、折射和纹理 249
16.3.4 增加光线数 250
16.3.5 通用解决方案 254
16.3.6 更多示例 257
16.3.7 透明对象的颜色混合 260
补充说明 264
习题 265
参考资料 265
第 17 章 3D 眼镜和 VR 头显的立体视觉 267
17.1 双目视图和投影矩阵 268
17.2 色差式渲染 269
17.3 并排式渲染 270
17.4 修正头显的镜头畸变 271
17.5 简单的测试硬件配置 276
补充说明 277
习题 277
参考资料 277
附录 A PC(Windows)上的安装与设置 279
A.1 安装库和开发环境 279
A.1.1 安装开发环境 279
A.1.2 安装 OpenGL/GLSL 279
A.1.3 准备 GLFW 279
A.1.4 准备 GLEW 280
A.1.5 准备 GLM 280
A.1.6 准备 SOIL2 280
A.1.7 准备共享的 lib 和include 文件夹 280
A.2 在 MS Visual Studio 中开发和部署 OpenGL 项目 281
创建 Visual Studio 自定义项目模板 281
参考资料 282
附录 B Mac(macOS)平台上的安装与设置 283
B.1 安装库和开发环境 283
B.1.1 准备并安装依赖库 283
B.1.2 准备开发环境 284
B.2 修改 Mac 的 C /OpenGL/ GLSL 应用程序代码 285
B.2.1 修改 C 代码 285
B.2.2 修改 GLSL 代码 286
参考资料 287
附录 C 使用 Nsight 图形调试器 288
C.1 关于 NVIDIA Nsight 288
C.2 设置 Nsight 288
C.3 在 Nsight 中运行 C /OpenGL
应用程序 289
参考资料 291
|
|