内容推荐 本书系统全面地介绍了在透视投影、正交投影、光线追踪等不同场景下,3D编程的基础知识,简称为“1”。1包含两方面的内容:输入的顶点纹理坐标1,经过3D流水线处理后,输出内容的尺寸;3D程序和流水线的几何数学基础。本书可以作为分析Android、Chromium的图形系统和设计游戏引擎的理论基础,也可以作为高校计算机图形学课程的参考读物。 本书将透视投影拆分为几何模型和透视除法模型两部分进行分析;也分析了3D程序常用的模型视图变换、视口变换、纹理映射等对3D顶点纹理坐标1的影响;分析了虚拟现实使用的透镜畸变的形成原因,以及通过模型变换或者纹理映射实现的畸变校正。本书还分析了一些基于透视投影或者类似透视投影的常用3D编程模型,如双摄像头立体成像、延迟渲染、阴影等。对于正交投影,分析了正交投影的基本变换,同时分析了基于正交投影的Skia,包括Skia的顶点坐标、纹理坐标等的特点。此外,本书分析了光线追踪的基本原理,并利用计算着色器模拟了部分物体的光线追踪。很后,介绍了一种通用的GPU的多进程、多线程模型。 本书提供了大量基于WebGL和Vulkan的示例来验证书中的结论,以加深读者对问题的理解。 目录 章3D程序分析方法 1.1输入顶点数据 1.1.1描述顶点 1.1.2传递顶点 1.1.3绑定顶点缓冲区 1.2输入MVP数据 1.3输入纹理 1.3.1创建并传递纹理 1.3.2绑定纹理 1.4输出帧缓冲 1.5数据处理过程 1.6TensorFlow JS的输入输出 1.7Vulkan的输入输出 1.8GL和Vulkan的线程模型 1.9源码下载和编译 小结 第2章3D图形学基础 2.1符号和约定 2.2向量的基本运算 2.3齐次坐标 2.3.14×4齐次矩阵 2.3.2平行线相交 2.4顶点、三角形、片元 2.5光栅化原语 2.6视景体 2.7光照模型 小结 第3章透视投影 3.1左右手坐标系 3.23D坐标和坐标系 3.33D流水线 3.4小孔成像 3.5模型变换和世界变换的意义 3.6透视投影的几何模型 3.6.1眼睛坐标到投影坐标 3.6.2投影坐标到NDC坐标——xy分量 3.6.3眼睛坐标到NDC坐标——xy分量 3.6.4眼睛坐标到NDC坐标——z分量 3.6.5裁剪 3.6.6透视投影的几何模型 3.6.7几何模型的算法分析 3.7透视投影的透视除法模型 3.7.1眼睛坐标到裁剪坐标——xy分量 3.7.2眼睛坐标到NDC坐标——zw分量 3.7.3透视除法 3.7.4裁剪 3.7.5FOV表示透视投影矩阵 3.7.6真实深度 小结 第4章视图变换和眼睛坐标系 4.1平移 4.2旋转 4.3视图变换矩阵 4.4示例 小结 第5章正交投影 5.1坐标系和坐标变换 5.2正交投影变换 小结 第6章视口变换 6.1NDC到窗口的变换 6.2NDC到[0, 1]的变换 小结 第7章3D顶点——3D世界的1 7.1眼睛坐标 7.2正交投影 7.3透视投影 小结 第8章纹理坐标 8.1像素和多重采样 8.2三角形插值 8.2.1最近距离法 8.2.2加权距离法 8.2.3重心坐标法 8.3纹理映射和纹理坐标 8.3.1环绕模式 8.3.2非全窗口输出 8.3.3全窗口输出: NDC顶点坐标1,uv小于1 8.3.4全窗口输出: NDC顶点坐标1,uv大于1 8.3.5非归一化的纹理坐标 8.4点原语及其纹理坐标 8.5网格和纹理映射 8.5.1Blender介绍 8.5.2平面纹理映射 8.5.3球体纹理映射 小结 第9章VR枕形畸变 9.1理想薄凸透镜的放大率 9.2厚凸透镜的畸变 9.2.1厚凸透镜的基点和焦距公式 9.2.2厚凸透镜的畸变 9.2.3厚凸透镜放大率的泰勒级数 9.3畸变校正 9.3.1像差畸变校正 9.3.2像比例畸变校正 小结 0章一种特殊的全窗口显示的方法 10.1三个顶点实现全窗口显示 10.20顶点实现全窗口显示 小结 1章光线追踪 11.1正向追踪和逆向追踪 11.2光线追踪过程 11.3射线生成 11.4FOV、像的大小、占屏比 11.5光线追踪实现远小近大 11.6光线追踪平面 11.6.1射线和平面的关系 11.6.2射线和平面相交的实现 11.6.3Skybox 11.7光线追踪三角形 11.7.1射线和三角形的相交 11.7.2光线追踪三角形实现 11.8光线追踪球 11.8.1射线和球的相交 11.8.2光照计算 11.8.3光线追踪的1 11.9光线追踪的阴影实现 11.10光线追踪和光栅化对比 11.11示例 小结 2章透视投影的其他应用 12.1双摄像头立体成像 12.2延迟渲染 12.2.1深度测试剔除所有被遮挡的点 12.2.2示例 12.3阴影 12.3.1生成最近深度纹理 12.3.2使用深度纹理 12.3.3示例 小结 3章Skia 13.1Skia基础 13.1.1常用接口 13.1.2Skia矩阵 13.1.3测试方法 13.2Skia物体坐标和世界坐标 13.2.1物体坐标 13.2.2模型变换 13.3Skia纹理坐标 13.3.1顶点坐标不包含模型变换 13.3.2顶点坐标包含模型变换 13.4Skia正交投影 13.4.1正交投影 13.4.2窗口映射 13.4.3窗口映射对原点的影响 13.5Skia图像边缘检测 13.5.1Sobel算子 13.5.2实现边缘检测 小结 4章一种通用的GPU多进程、多线程框架 14.1资源 14.2纹理Mailbox扩展 14.3同步Sync标记扩展 14.4资源的生命周期 14.4.1显示客户端生产资源 14.4.2显示客户端到显示合成器的IPC 14.4.3显示合成器使用资源 14.4.4删除资源 小结 参考文献 |