计算机
类型
可以朗读
语音朗读
1381千字
字数
2019-05-01
发行日期
展开全部
主编推荐语
19章逐步详解Vulkan特效,附完整源码,助读者快速掌握开发技术。
内容简介
本书共分为19章,内容按照必知必会的基础知识、基于Vulkan实现基本特效以及高级特效、完整游戏案例的顺序循序渐进地进行详细讲解,适合不同需求、不同水平层次的各类读者。为了便于读者学习,随书提供了书中所有案例的完整源代码(书中所有案例都给出了安卓版和Windows版,最后的大案例还进一步给出了MacOS、iOS和Linux版),最大限度地帮助读者快速地掌握各方面的开发技术。
目录
- 版权信息
- 版权
- 内容提要
- 前言
- 第1章 初识Vulkan
- 1.1 Vulkan概览
- 1.1.1 Vulkan简介
- 1.1.2 支持Vulkan的游戏概览
- 1.2 搭建开发环境
- 1.2.1 Android平台开发环境的配置
- 1.2.2 Windows平台开发环境的配置
- 1.3 第一个Vulkan程序
- 1.3.1 案例的运行效果
- 1.3.2 Vulkan应用程序的基本架构
- 1.3.3 3色三角形案例相关类的介绍
- 1.3.4 Vulkan中的常用方法
- 1.3.5 MyVulkanManager类的基本结构
- 1.3.6 创建Vulkan实例
- 1.3.7 获取物理设备列表
- 1.3.8 创建逻辑设备
- 1.3.9 创建命令缓冲
- 1.3.10 获取设备中支持图形工作的队列
- 1.3.11 初始化交换链
- 1.3.12 创建深度缓冲
- 1.3.13 创建渲染通道
- 1.3.14 创建帧缓冲
- 1.3.15 创建绘制用物体
- 1.3.16 初始化渲染管线
- 1.3.17 创建栅栏和初始化呈现信息
- 1.3.18 初始化基本变换矩阵、摄像机矩阵、投影矩阵
- 1.3.19 执行绘制
- 1.3.20 销毁相关对象
- 1.3.21 整体流程的执行
- 1.3.22 顶点着色器和片元着色器
- 1.4 Vulkan中立体物体的构建
- 1.5 本章小结
- 第2章 渲染管线和调试技术
- 2.1 渲染管线
- 2.2 着色器的预编译
- 2.3 Vulkan调试技术
- 2.4 Vulkan GPU大PK
- 2.4.1 移动端GPU的4大家族
- 2.4.2 PC端GPU中3大家族
- 2.5 本章小结
- 第3章 着色器编程语言——GLSL
- 3.1 着色语言概述
- 3.2 着色语言基础
- 3.2.1 数据类型概述
- 3.2.2 数据类型的基本使用
- 3.2.3 运算符
- 3.2.4 各个数据类型的构造函数
- 3.2.5 类型转换
- 3.2.6 存储限定符
- 3.2.7 插值限定符
- 3.2.8 一致块
- 3.2.9 layout限定符
- 3.2.10 流程控制
- 3.2.11 函数的声明和使用
- 3.2.12 片元着色器中浮点及整型变量精度的指定
- 3.2.13 程序的基本结构
- 3.3 特殊的内建变量
- 3.3.1 顶点着色器中的内建变量
- 3.3.2 片元着色器中的内建变量
- 3.3.3 内建常量
- 3.4 着色语言的内置函数
- 3.4.1 角度转换与三角函数
- 3.4.2 指数函数
- 3.4.3 常见函数
- 3.4.4 几何函数
- 3.4.5 矩阵函数
- 3.4.6 向量关系函数
- 3.4.7 纹理采样函数
- 3.4.8 微分函数
- 3.4.9 浮点数打包与解包函数
- 3.5 用invariant修饰符避免值变问题
- 3.6 预处理器
- 3.7 本章小结
- 第4章 投影与各种变换
- 4.1 矩阵相关类的介绍
- 4.1.1 矩阵数学计算类——Matrix
- 4.1.2 矩阵状态管理类——MatrixState3D
- 4.2 摄像机的设置
- 4.3 两种投影方式
- 4.3.1 正交投影
- 4.3.2 透视投影
- 4.3.3 推送常量
- 4.4 各种变换
- 4.4.1 基本变换的相关数学知识
- 4.4.2 平移变换
- 4.4.3 旋转变换
- 4.4.4 缩放变换
- 4.4.5 基本变换的实质
- 4.5 所有变换的完整流程
- 4.6 绘制方式
- 4.6.1 各种绘制方式概览
- 4.6.2 点与线段绘制方式
- 4.6.3 三角形条带与扇面绘制方式
- 4.6.4 索引法绘制
- 4.7 设置合理的视角
- 4.8 设置合理的投影参数
- 4.9 深度偏移
- 4.10 卷绕和背面剪裁
- 4.10.1 基本知识
- 4.10.2 一个简单的案例
- 4.11 间接绘制
- 4.11.1 背景知识
- 4.11.2 顶点法间接绘制
- 4.11.3 索引法间接绘制
- 4.12 本章小结
- 第5章 光照
- 5.1 曲面物体的构建
- 5.1.1 球体构建的基本原理
- 5.1.2 案例效果概览
- 5.1.3 开发步骤
- 5.2 基本光照效果
- 5.2.1 光照的基本模型
- 5.2.2 环境光
- 5.2.3 散射光
- 5.2.4 镜面光
- 5.2.5 3种光照通道的合成
- 5.3 定位光与定向光
- 5.4 点法向量和面法向量
- 5.5 光照的每顶点计算与每片元计算
- 5.6 本章小结
- 第6章 纹理映射
- 6.1 初识纹理映射
- 6.2 一个简单的案例
- 6.2.1 开发前的准备工作
- 6.2.2 纹理相关类
- 6.2.3 案例代码的开发
- 6.2.4 图像的瓦片组织方式
- 6.2.5 色彩通道的灵活组合
- 6.3 纹理拉伸
- 6.3.1 四种拉伸方式概览
- 6.3.2 不同拉伸方式的案例
- 6.4 纹理采样
- 6.4.1 纹理采样概述
- 6.4.2 最近点采样
- 6.4.3 线性纹理采样
- 6.4.4 MIN与MAG采样
- 6.4.5 不同纹理采样方式的案例
- 6.5 Mipmap纹理
- 6.5.1 基本原理
- 6.5.2 一个简单的案例
- 6.6 多重纹理与过程纹理
- 6.6.1 案例概览
- 6.6.2 将2D纹理映射到球面上的策略
- 6.6.3 案例的场景结构
- 6.6.4 开发过程
- 6.7 压缩纹理的使用
- 6.7.1 Android平台下的压缩纹理
- 6.7.2 PC中Windows平台下的压缩纹理
- 6.8 点精灵
- 6.8.1 基本知识
- 6.8.2 一个简单的案例
- 6.9 3D纹理
- 6.9.1 3D棋盘纹理的准备
- 6.9.2 3D棋盘纹理案例的开发
- 6.10 2D纹理数组
- 6.10.1 2D纹理数组的准备
- 6.10.2 2D纹理数组案例的开发
- 6.11 各向异性过滤
- 6.11.1 背景知识
- 6.11.2 一个简单的案例
- 6.12 本章小结
- 第7章 更逼真的场景——3D模型的加载
- 7.1 obj模型文件概述
- 7.1.1 obj文件的格式
- 7.1.2 用3ds Max设计3D模型
- 7.2 加载obj文件
- 7.2.1 加载仅有顶点坐标数据与面数据的obj文件
- 7.2.2 加载后自动计算面法向量
- 7.2.3 加载后自动计算平均法向量
- 7.2.4 加载纹理坐标
- 7.2.5 加载顶点法向量
- 7.3 双面光照
- 7.4 本章小结
- 第8章 独特的场景渲染技术——混合与雾
- 8.1 混合技术
- 8.1.1 基本知识
- 8.1.2 源因子和目标因子
- 8.1.3 简单混合效果的案例
- 8.2 地月系云层效果的实现
- 8.3 雾
- 8.3.1 雾的原理与优势
- 8.3.2 雾的简单实现
- 8.4 本章小结
- 第9章 常用3D开发小技巧
- 9.1 标志板
- 9.1.1 案例效果与基本原理
- 9.1.2 开发步骤
- 9.2 灰度图地形
- 9.2.1 基本原理
- 9.2.2 开发前的准备工作
- 9.2.3 普通灰度图地形
- 9.2.4 过程纹理地形
- 9.2.5 Mipmap地形
- 9.2.6 顶点着色器采样纹理地形
- 9.3 高真实感地形
- 9.3.1 基本思路
- 9.3.2 地形设计工具EarthSculptor的使用
- 9.3.3 一个简单的案例
- 9.4 天空盒与天空穹
- 9.4.1 天空盒
- 9.4.2 天空穹
- 9.4.3 天空盒与天空穹的使用技巧
- 9.5 简单镜像效果
- 9.5.1 基本原理
- 9.5.2 基本效果案例
- 9.5.3 升级效果案例
- 9.6 非真实感绘制
- 9.6.1 基本原理与案例效果
- 9.6.2 具体开发步骤
- 9.7 描边效果的实现
- 9.7.1 沿法线挤出轮廓
- 9.7.2 视空间中挤出
- 9.8 本章小结
- 第10章 两种测试及片元丢弃
- 10.1 剪裁测试
- 10.1.1 基本原理与核心代码
- 10.1.2 一个简单的案例
- 10.2 模板测试
- 10.2.1 基本原理
- 10.2.2 一个简单的案例
- 10.3 片元丢弃操作
- 10.4 任意剪裁平面
- 10.4.1 基本原理
- 10.4.2 茶壶被任意平面剪裁的案例
- 10.5 本章小结
- 第11章 顶点着色器的妙用
- 11.1 飘扬的旗帜
- 11.1.1 基本原理
- 11.1.2 开发步骤
- 11.2 扭动的软糖
- 11.2.1 基本原理
- 11.2.2 开发步骤
- 11.3 风吹椰林场景的开发
- 11.3.1 椰子树随风摇摆的基本原理
- 11.3.2 开发步骤
- 11.4 展翅飞翔的雄鹰
- 11.4.1 基本原理
- 11.4.2 开发步骤
- 11.5 二维扭曲
- 11.5.1 基本原理
- 11.5.2 开发步骤
- 11.6 吹气膨胀特效
- 11.6.1 基本原理
- 11.6.2 开发步骤
- 11.7 本章小结
- 第12章 片元着色器的妙用
- 12.1 程序纹理技术
- 12.1.1 砖块着色器
- 12.1.2 沙滩球着色器
- 12.2 数字图像处理
- 12.2.1 卷积的基本知识
- 12.2.2 平滑过滤
- 12.2.3 边缘检测
- 12.2.4 锐化处理
- 12.2.5 浮雕效果
- 12.2.6 图像渐变
- 12.2.7 卡通渲染
- 12.3 分形着色器
- 12.3.1 曼德布罗集简介
- 12.3.2 曼德布罗集着色器的实现
- 12.3.3 将曼德布罗集纹理应用到实际物体上
- 12.3.4 茱莉亚集着色器的实现
- 12.4 3D纹理的妙用
- 12.4.1 噪声函数的基础知识
- 12.4.2 柏林噪声生成工具
- 12.4.3 3D噪声木纹理茶壶的开发
- 12.5 体积雾
- 12.5.1 基本原理
- 12.5.2 开发步骤
- 12.6 粒子系统火焰的开发
- 12.6.1 火焰的基本原理
- 12.6.2 普通版火焰
- 12.6.3 点精灵版火焰
- 12.7 本章小结
- 第13章 真实光学环境的模拟
- 13.1 反射环境模拟
- 13.1.1 案例效果与基本原理
- 13.1.2 开发前的准备工作
- 13.1.3 开发步骤
- 13.2 折射环境模拟
- 13.2.1 案例效果与基本原理
- 13.2.2 开发步骤
- 13.3 色散效果模拟
- 13.3.1 案例效果与基本原理
- 13.3.2 开发步骤
- 13.4 菲涅尔效果的模拟
- 13.4.1 案例效果与基本原理
- 13.4.2 开发步骤
- 13.5 凹凸映射
- 13.5.1 案例效果与基本原理
- 13.5.2 法向量纹理图的生成
- 13.5.3 切向量的计算
- 13.5.4 案例的开发
- 13.6 镜头光晕
- 13.6.1 案例效果与基本原理
- 13.6.2 镜头光晕案例
- 13.7 投影贴图
- 13.7.1 案例效果与基本原理
- 13.7.2 开发步骤
- 13.8 绘制到纹理
- 13.8.1 案例效果与基本原理
- 13.8.2 开发步骤
- 13.9 高级镜像
- 13.9.1 案例效果与基本原理
- 13.9.2 开发步骤
- 13.10 高真实感水面倒影
- 13.10.1 案例效果与基本原理
- 13.10.2 开发步骤
- 13.11 本章小结
- 第14章 阴影及高级光照
- 14.1 多重渲染目标
- 14.1.1 基本知识
- 14.1.2 一个简单的案例
- 14.2 阴影的重要性
- 14.3 平面阴影
- 14.3.1 案例效果与基本原理
- 14.3.2 开发步骤
- 14.4 阴影映射
- 14.4.1 案例效果与基本原理
- 14.4.2 距离纹理的生成
- 14.4.3 阴影场景的绘制
- 14.5 阴影贴图
- 14.5.1 案例效果与基本原理
- 14.5.2 开发步骤
- 14.6 静态光照贴图
- 14.6.1 案例效果与基本原理
- 14.6.2 使用3ds Max制作静态光照贴图
- 14.6.3 案例的开发
- 14.7 聚光灯高级光源
- 14.7.1 第一种实现的案例效果与基本原理
- 14.7.2 第一种实现案例的开发步骤
- 14.7.3 第二种实现的案例效果与基本原理
- 14.7.4 第二种实现案例的开发步骤
- 14.8 延迟渲染
- 14.8.1 案例效果与基本原理
- 14.8.2 开发步骤
- 14.9 环境光遮挡
- 14.9.1 基本原理
- 14.9.2 一个简单的案例
- 14.9.3 效率的提升
- 14.9.4 平滑处理
- 14.10 本章小结
- 第15章 几种高级着色器特效
- 15.1 运动模糊
- 15.1.1 普通运动模糊
- 15.1.2 高级运动模糊
- 15.2 遮挡透视效果
- 15.2.1 案例效果与基本原理
- 15.2.2 开发步骤
- 15.3 积雪效果
- 15.3.1 案例效果与基本原理
- 15.3.2 开发步骤
- 15.4 背景虚化
- 15.4.1 案例效果与基本原理
- 15.4.2 开发步骤
- 15.5 泛光效果
- 15.5.1 案例效果与基本原理
- 15.5.2 开发步骤
- 15.6 色调映射
- 15.6.1 案例效果与背景知识
- 15.6.2 开发步骤
- 15.7 体绘制
- 15.7.1 案例效果与基本原理
- 15.7.2 开发步骤
- 15.8 本章小结
- 第16章 骨骼动画
- 16.1 开发骨骼动画
- 16.1.1 骨骼动画的基本原理
- 16.1.2 开发步骤
- 16.1.3 机器人模型在地面上运动时的问题
- 16.2 ms3d骨骼动画文件的加载
- 16.2.1 ms3d文件的格式
- 16.2.2 将3ds Max动画文件转换为ms3d文件
- 16.2.3 加载ms3d文件案例的开发
- 16.3 自定义格式骨骼动画的加载
- 16.3.1 bnggdh文件的格式
- 16.3.2 Bnggdh类
- 16.3.3 加载bnggdh文件的案例
- 16.4 本章小结
- 第17章 让应用运行得更流畅——性能优化
- 17.1 着色器的优化
- 17.1.1 计算量及计算频率的相关问题
- 17.1.2 其他需要注意的问题
- 17.2 纹理图的优化
- 17.3 3D图形绘制的优化
- 17.3.1 CPU阶段的优化
- 17.3.2 几何阶段的优化
- 17.3.3 光栅化阶段的优化
- 17.4 图元重启
- 17.4.1 基本原理
- 17.4.2 一个简单的案例
- 17.5 几何体实例渲染
- 17.5.1 基本原理
- 17.5.2 基于实例渲染的土星光环案例
- 17.6 视锥体剪裁
- 17.6.1 AABB包围盒的基本原理
- 17.6.2 AABB包围盒的计算
- 17.6.3 视锥体剪裁的基本思路及实现策略
- 17.6.4 一个简单的案例
- 17.7 遮挡查询
- 17.7.1 相关方法
- 17.7.2 基本原理和实现策略
- 17.7.3 一个简单的案例
- 17.8 计算着色器的使用
- 17.8.1 基础知识
- 17.8.2 动态法向量光照水面案例
- 17.9 多线程并发渲染
- 17.9.1 基本原理
- 17.9.2 飞船案例的开发
- 17.10 多子通道渲染
- 17.10.1 基本原理
- 17.10.2 一个简单的案例
- 17.11 细节级别LOD
- 17.12 本章小结
- 第18章 杂项
- 18.1 四元数旋转
- 18.1.1 基本原理与案例效果
- 18.1.2 开发步骤
- 18.2 3D拾取技术
- 18.2.1 案例效果与基本原理
- 18.2.2 开发步骤
- 18.3 多重采样抗锯齿
- 18.3.1 基本知识与案例效果
- 18.3.2 一个简单的案例
- 18.4 保存屏幕截图
- 18.5 Windows系统窗口缩放
- 18.6 曲面细分着色器
- 18.6.1 基本知识
- 18.6.2 一个简单的案例
- 18.7 几何着色器
- 18.8 macOS、iOS与Linux平台下Vulkan应用的开发
- 18.8.1 macOS与iOS平台下Vulkan应用程序的开发
- 18.8.2 Linux平台下Vulkan图形应用程序的开发
- 18.9 本章小结
- 第19章 基于Vulkan的3D休闲游戏——方块历险记
- 19.1 游戏背景及功能概述
- 19.1.1 游戏开发背景概述
- 19.1.2 游戏功能简介
- 19.2 游戏的策划及准备工作
- 19.2.1 游戏的策划
- 19.2.2 游戏的开发准备工作
- 19.3 游戏的架构
- 19.3.1 各类的简要介绍
- 19.3.2 游戏框架简介
- 19.4 布景相关类
- 19.4.1 3D布景类——My3Dlayer
- 19.4.2 总绘制类——MyDraw
- 19.4.3 摄像机管理类——CameraUtil
- 19.4.4 3D物体创建类——Square3D
- 19.5 机关与方块相关类
- 19.5.1 方块管理类——ZFTManager
- 19.5.2 地刺机关管理类——DiCiBox
- 19.5.3 掉落块机关管理类——DiaoLuoManager
- 19.6 游戏入口及辅助工具类
- 19.6.1 游戏入口类——main
- 19.6.2 触控监听类——Touch2D
- 19.7 着色器的开发
- 19.8 游戏的优化及改进
- 书中部分案例效果图
展开全部
出版方
人民邮电出版社
人民邮电出版社是工业和信息化部主管的大型专业出版社,成立于1953年10月1日。人民邮电出版社坚持“立足信息产业、面向现代社会、传播科学知识、服务科教兴国”,致力于通信、计算机、电子技术、教材、少儿、经管、摄影、集邮、旅游、心理学等领域的专业图书出版。