网站首页 软件下载 游戏下载 翻译软件 电子书下载 电影下载 电视剧下载 教程攻略
书名 | Vulkan开发实战详解 |
分类 | 教育考试-考试-计算机类 |
作者 | 吴亚峰编 |
出版社 | 人民邮电出版社 |
下载 | |
简介 | 作者简介 吴亚峰,毕业于北京邮电大学,后留学澳大利亚卧龙岗大学取得硕士学位。1998年开始从事Java应用的开发,有10多年的Java开发与培训经验。主要的研究方向为Vulkan、OpenGL ES、手机游戏、以及VR/AR。同时为3D游戏、VR/AR独立软件工程师,并兼任百纳科技软件培训中心首席培训师。 目录 章初识Vulkan1 1.1Vulkan概览1 1.1.1Vulkan简介1 1.1.2支持Vulkan的游戏概览2 1.2搭建开发环境4 1.2.1Android平台开发环境的配置4 1.2.2Windows平台开发环境的配置8 1.3个Vulkan程序15 1.3.1案例的运行效果15 1.3.2Vulkan应用程序的基本架构15 1.3.33色三角形案例相关类的介绍20 1.3.4Vulkan中的常用方法22 1.3.5MyVulkanManager类的基本结构28 1.3.6创建Vulkan实例31 1.3.7获取物理设备列表32 1.3.8创建逻辑设备32 1.3.9创建命令缓冲33 1.3.10获取设备中支持图形工作的队列35 1.3.11初始化交换链35 1.3.12创建深度缓冲41 1.3.13创建渲染通道43 1.3.14创建帧缓冲46 1.3.15创建绘制用物体47 1.3.16初始化渲染管线51 1.3.17创建栅栏和初始化呈现信息62 1.3.18初始化基本变换矩阵、摄像机矩阵、投影矩阵63 1.3.19执行绘制63 1.3.20销毁相关对象66 1.3.21整体流程的执行67 1.3.22顶点着色器和片元着色器68 1.4Vulkan中立体物体的构建70 1.5本章小结71 第2章渲染管线和调试技术72 2.1渲染管线72 2.2着色器的预编译79 2.3Vulkan调试技术81 2.4VulkanGPU大PK89 2.4.1移动端GPU的4大家族89 2.4.2PC端GPU中3大家族91 2.5本章小结92 第3章着色器编程语言——GLSL93 3.1着色语言概述93 3.2着色语言基础94 3.2.1数据类型概述94 3.2.2数据类型的基本使用98 3.2.3运算符100 3.2.4各个数据类型的构造函数102 3.2.5类型转换104 3.2.6存储限定符104 3.2.7插值限定符107 3.2.8一致块108 3.2.9layout限定符109 3.2.10流程控制111 3.2.11函数的声明和使用113 3.2.12片元着色器中浮点及整型变量精度的指定114 3.2.13程序的基本结构114 3.3特殊的内建变量115 3.3.1顶点着色器中的内建变量115 3.3.2片元着色器中的内建变量116 3.3.3内建常量117 3.4着色语言的内置函数117 3.4.1角度转换与三角函数118 3.4.2指数函数119 3.4.3常见函数120 3.4.4几何函数123 3.4.5矩阵函数124 3.4.6向量关系函数125 3.4.7纹理采样函数126 3.4.8微分函数129 3.4.9浮点数打包与解包函数129 3.5用invariant修饰符避免值变问题130 3.6预处理器131 3.7本章小结132 第4章投影与各种变换133 4.1矩阵相关类的介绍133 4.1.1矩阵数学计算类—Matrix133 4.1.2矩阵状态管理类—MatrixState3D134 4.2摄像机的设置137 4.3两种投影方式138 4.3.1正交投影138 4.3.2透视投影144 4.3.3推送常量146 4.4各种变换148 4.4.1基本变换的相关数学知识148 4.4.2平移变换149 4.4.3旋转变换150 4.4.4缩放变换151 4.4.5基本变换的实质152 4.5所有变换的完整流程153 4.6绘制方式156 4.6.1各种绘制方式概览156 4.6.2点与线段绘制方式158 4.6.3三角形条带与扇面绘制方式161 4.6.4索引法绘制164 4.7设置合理的视角169 4.8设置合理的投影参数174 4.9深度偏移178 4.10卷绕和背面剪裁181 4.10.1基本知识181 4.10.2一个简单的案例182 4.11间接绘制183 4.11.1背景知识184 4.11.2顶点法间接绘制184 4.11.3索引法间接绘制186 4.12本章小结188 第5章光照189 5.1曲面物体的构建189 5.1.1球体构建的基本原理189 5.1.2案例效果概览190 5.1.3开发步骤190 5.2基本光照效果194 5.2.1光照的基本模型194 5.2.2环境光195 5.2.3散射光199 5.2.4镜面光205 5.2.53种光照通道的合成210 5.3定位光与定向光212 5.4点法向量和面法向量215 5.5光照的每顶点计算与每片元计算218 5.6本章小结223 第6章纹理映射224 6.1初识纹理映射224 6.2一个简单的案例225 6.2.1开发前的准备工作225 6.2.2纹理相关类226 6.2.3案例代码的开发241 6.2.4图像的瓦片组织方式248 6.2.5色彩通道的灵活组合250 6.3纹理拉伸251 6.3.1四种拉伸方式概览251 6.3.2不同拉伸方式的案例254 6.4纹理采样259 6.4.1纹理采样概述259 6.4.2最近点采样259 6.4.3线性纹理采样260 6.4.4MIN与MAG采样261 6.4.5不同纹理采样方式的案例262 6.5Mipmap纹理266 6.5.1基本原理266 6.5.2一个简单的案例268 6.6多重纹理与过程纹理272 6.6.1案例概览273 6.6.2将2D纹理映射到球面上的策略273 6.6.3案例的场景结构274 6.6.4开发过程275 6.7压缩纹理的使用283 6.7.1Android平台下的压缩纹理284 6.7.2PC中Windows平台下的压缩纹理286 6.8点精灵289 6.8.1基本知识289 6.8.2一个简单的案例289 6.93D纹理292 6.9.13D棋盘纹理的准备293 6.9.23D棋盘纹理案例的开发294 6.102D纹理数组297 6.10.12D纹理数组的准备297 6.10.22D纹理数组案例的开发298 6.11各向异性过滤302 6.11.1背景知识303 6.11.2一个简单的案例303 6.12本章小结305 第7章更逼真的场景——3D模型的加载306 7.1obj模型文件概述306 7.1.1obj文件的格式306 7.1.2用3dsMax设计3D模型307 7.2加载obj文件308 7.2.1加载仅有顶点坐标数据与面数据的obj文件308 7.2.2加载后自动计算面法向量312 7.2.3加载后自动计算平均法向量315 7.2.4加载纹理坐标317 7.2.5加载顶点法向量320 7.3双面光照321 7.4本章小结324 第8章独特的场景渲染技术——混合与雾325 8.1混合技术325 8.1.1基本知识325 8.1.2源因子和目标因子326 8.1.3简单混合效果的案例328 8.2地月系云层效果的实现330 8.3雾333 8.3.1雾的原理与优势333 8.3.2雾的简单实现334 8.4本章小结336 第9章常用3D开发小技巧337 9.1标志板337 9.1.1案例效果与基本原理337 9.1.2开发步骤338 9.2灰度图地形341 9.2.1基本原理341 9.2.2开发前的准备工作342 9.2.3普通灰度图地形342 9.2.4过程纹理地形344 9.2.5Mipmap地形347 9.2.6顶点着色器采样纹理地形351 9.3高真实感地形353 9.3.1基本思路353 9.3.2地形设计工具EarthSculptor的使用354 9.3.3一个简单的案例356 9.4天空盒与天空穹358 9.4.1天空盒358 9.4.2天空穹359 9.4.3天空盒与天空穹的使用技巧361 9.5简单镜像效果361 9.5.1基本原理361 9.5.2基本效果案例362 9.5.3升级效果案例364 9.6非真实感绘制366 9.6.1基本原理与案例效果366 9.6.2具体开发步骤368 9.7描边效果的实现370 9.7.1沿法线挤出轮廓370 9.7.2视空间中挤出373 9.8本章小结374 0章两种测试及片元丢弃375 10.1剪裁测试375 10.1.1基本原理与核心代码375 10.1.2一个简单的案例375 10.2模板测试377 10.2.1基本原理377 10.2.2一个简单的案例380 10.3片元丢弃操作383 10.4任意剪裁平面385 10.4.1基本原理385 10.4.2茶壶被任意平面剪裁的案例386 10.5本章小结387 1章顶点着色器的妙用388 11.1飘扬的旗帜388 11.1.1基本原理388 11.1.2开发步骤389 11.2扭动的软糖392 11.2.1基本原理392 11.2.2开发步骤393 11.3风吹椰林场景的开发394 11.3.1椰子树随风摇摆的基本原理395 11.3.2开发步骤396 11.4展翅飞翔的雄鹰400 11.4.1基本原理400 11.4.2开发步骤400 11.5二维扭曲402 11.5.1基本原理403 11.5.2开发步骤403 11.6吹气膨胀特效406 11.6.1基本原理406 11.6.2开发步骤406 11.7本章小结407 2章片元着色器的妙用408 12.1程序纹理技术408 12.1.1砖块着色器408 12.1.2沙滩球着色器410 12.2数字图像处理411 12.2.1卷积的基本知识411 12.2.2平滑过滤412 12.2.3边缘检测413 12.2.4锐化处理414 12.2.5浮雕效果414 12.2.6图像渐变415 12.2.7卡通渲染416 12.3分形着色器418 12.3.1曼德布罗集简介418 12.3.2曼德布罗集着色器的实现419 12.3.3将曼德布罗集纹理应用到实际物体上421 12.3.4茱莉亚集着色器的实现421 12.43D纹理的妙用423 12.4.1噪声函数的基础知识423 12.4.2柏林噪声生成工具426 12.4.33D噪声木纹理茶壶的开发427 12.5体积雾429 12.5.1基本原理429 12.5.2开发步骤430 12.6粒子系统火焰的开发431 12.6.1火焰的基本原理431 12.6.2普通版火焰433 12.6.3点精灵版火焰441 12.7本章小结444 3章真实光学环境的模拟445 13.1反射环境模拟445 13.1.1案例效果与基本原理445 13.1.2开发前的准备工作446 13.1.3开发步骤447 13.2折射环境模拟449 13.2.1案例效果与基本原理449 13.2.2开发步骤450 13.3色散效果模拟452 13.3.1案例效果与基本原理452 13.3.2开发步骤452 13.4菲涅尔效果的模拟453 13.4.1案例效果与基本原理453 13.4.2开发步骤454 13.5凹凸映射455 13.5.1案例效果与基本原理455 13.5.2法向量纹理图的生成456 13.5.3切向量的计算458 13.5.4案例的开发459 13.6镜头光晕464 13.6.1案例效果与基本原理464 13.6.2镜头光晕案例465 13.7投影贴图468 13.7.1案例效果与基本原理468 13.7.2开发步骤470 13.8绘制到纹理472 13.8.1案例效果与基本原理472 13.8.2开发步骤473 13.9不错镜像476 13.9.1案例效果与基本原理476 13.9.2开发步骤477 13.10高真实感水面倒影480 13.10.1案例效果与基本原理480 13.10.2开发步骤481 13.11本章小结484 4章阴影及不错光照485 14.1多重渲染目标485 14.1.1基本知识485 14.1.2一个简单的案例486 14.2阴影的重要性491 14.3平面阴影493 14.3.1案例效果与基本原理493 14.3.2开发步骤494 14.4阴影映射497 14.4.1案例效果与基本原理497 14.4.2距离纹理的生成498 14.4.3阴影场景的绘制501 14.5阴影贴图506 14.5.1案例效果与基本原理506 14.5.2开发步骤507 14.6静态光照贴图508 14.6.1案例效果与基本原理508 14.6.2使用3dsMax制作静态光照贴图509 14.6.3案例的开发510 14.7聚光灯不错光源512 14.7.1种实现的案例效果与基本原理513 14.7.2种实现案例的开发步骤514 14.7.3第二种实现的案例效果与基本原理515 14.7.4第二种实现案例的开发步骤516 14.8延迟渲染517 14.8.1案例效果与基本原理517 14.8.2开发步骤518 14.9环境光遮挡522 14.9.1基本原理522 14.9.2一个简单的案例524 14.9.3效率的提升526 14.9.4平滑处理528 14.10本章小结529 5章几种不错着色器特效530 15.1运动模糊530 15.1.1普通运动模糊530 15.1.2不错运动模糊533 15.2遮挡透视效果536 15.2.1案例效果与基本原理536 15.2.2开发步骤538 15.3积雪效果541 15.3.1案例效果与基本原理541 15.3.2开发步骤541 15.4背景虚化542 15.4.1案例效果与基本原理542 15.4.2开发步骤543 15.5泛光效果545 15.5.1案例效果与基本原理545 15.5.2开发步骤546 15.6色调映射548 15.6.1案例效果与背景知识548 15.6.2开发步骤549 15.7体绘制550 15.7.1案例效果与基本原理550 15.7.2开发步骤551 15.8本章小结553 6章骨骼动画554 16.1开发骨骼动画554 16.1.1骨骼动画的基本原理554 16.1.2开发步骤557 16.1.3机器人模型在地面上运动时的问题563 16.2ms3d骨骼动画文件的加载566 16.2.1ms3d文件的格式566 16.2.2将3dsMax动画文件转换为ms3d文件570 16.2.3加载ms3d文件案例的开发574 16.3自定义格式骨骼动画的加载591 16.3.1bnggdh文件的格式591 16.3.2Bnggdh类594 16.3.3加载bnggdh文件的案例594 16.4本章小结606 7章让应用运行得更流畅——性能优化607 17.1着色器的优化607 17.1.1计算量及计算频率的相关问题607 17.1.2其他需要注意的问题608 17.2纹理图的优化609 17.33D图形绘制的优化610 17.3.1CPU阶段的优化610 17.3.2几何阶段的优化611 17.3.3光栅化阶段的优化612 17.4图元重启612 17.4.1基本原理612 17.4.2一个简单的案例613 17.5几何体实例渲染614 17.5.1基本原理614 17.5.2基于实例渲染的土星光环案例615 17.6视锥体剪裁620 17.6.1AABB包围盒的基本原理620 17.6.2AABB包围盒的计算621 17.6.3视锥体剪裁的基本思路及实现策略622 17.6.4一个简单的案例623 17.7遮挡查询626 17.7.1相关方法626 17.7.2基本原理和实现策略626 17.7.3一个简单的案例627 17.8计算着色器的使用630 17.8.1基础知识630 17.8.2动态法向量光照水面案例633 17.9多线程并发渲染640 17.9.1基本原理641 17.9.2飞船案例的开发641 17.10多子通道渲染646 17.10.1基本原理646 17.10.2一个简单的案例647 17.11细节级别LOD652 17.12本章小结653 8章杂项654 18.1四元数旋转654 18.1.1基本原理与案例效果654 18.1.2开发步骤656 18.23D拾取技术662 18.2.1案例效果与基本原理662 18.2.2开发步骤665 18.3多重采样抗锯齿670 18.3.1基本知识与案例效果670 18.3.2一个简单的案例671 18.4保存屏幕截图674 18.5Windows系统窗口缩放676 18.6曲面细分着色器677 18.6.1基本知识677 18.6.2一个简单的案例680 18.7几何着色器685 18.8macOS、iOS与Linux平台下Vulkan应用的开发688 18.8.1macOS与iOS平台下Vulkan应用程序的开发688 18.8.2Linux平台下Vulkan图形应用程序的开发692 18.9本章小结700 9章基于Vulkan的3D休闲游戏——方块历险记701 19.1游戏背景及功能概述701 19.1.1游戏开发背景概述701 19.1.2游戏功能简介701 19.2游戏的策划及准备工作702 19.2.1游戏的策划703 19.2.2游戏的开发准备工作703 19.3游戏的架构705 19.3.1各类的简要介绍705 19.3.2游戏框架简介706 19.4布景相关类707 19.4.13D布景类——My3Dlayer707 19.4.2总绘制类——MyDraw712 19.4.3摄像机管理类——CameraUtil716 19.4.43D物体创建类——Square3D717 19.5机关与方块相关类718 19.5.1方块管理类——ZFTManager718 19.5.2地刺机关管理类——DiCiBox721 19.5.3掉落块机关管理类——DiaoLuoManager722 19.6游戏入口及辅助工具类724 19.6.1游戏入口类——main724 19.6.2触控监听类——Touch2D726 19.7着色器的开发728 19.8游戏的优化及改进730 内容推荐 本书共分为19章,内容按照必知必会的基础知识、基于Vulkan实现基本特效以及高级特效、完整游戏案例的顺序循序渐进地进行详细讲解,适合不同需求、不同水平层次的各类读者。 |
随便看 |
|
霍普软件下载网电子书栏目提供海量电子书在线免费阅读及下载。