当前课程知识点:游戏程序设计 > 第七章 《实时图形渲染管道》 > 7.3实时图形渲染管道 几何阶段 > 7.3实时图形渲染管道 几何阶段
这就是我们在应用阶段的操作
我们可以想一下其实应用阶段
就是说拿到一个场景来筛选
那些场景中我需要画置哪些物体
或者绘制哪些物体
然后最后的话把这些物体拆分成一个一个图元
然后交给GPU
让GPU去绘制
然后GPU的话
其实它GPU拿到我们所有渲染指令之后
它其实是有两个阶段
然后第一个阶段是几何阶段
第二个阶段是光栅化阶段
然后几何阶段
其实它就是说
因为之前我们已经把
用VertexBuffer和IndexBuffer
等于说把图元已经拆分成
这些Buffer的数据结构
这些数据了
然后我需要在这个GPU里面
先把这些数据给它装配回去
就等于我先要建立它这个映射关系和拓扑关系
来知道我现在这些三角形是在哪里
就是它们是如何组织的
以及在哪里和
一些法线这些额外操作
然后我会进行一个顶点着色的操作
就等于是vertex shader
然后它这块的话输入
每一个顶点的属性
然后来进行计算变换
然后包括纹理坐标
还有一些顶点光照的内容
然后它会把所有结果
在裁切空间中来进行输出
然后这个时候我们来看一下
就是顶点着色的空间变化的这块
然后在几何图元shader中
其实有这几步
第一步
其实我们一个模型传进来的时候
还是在它自己的模型空间中的
然后是model space
然后我们会把它变换到世界空间
就等于相当于我有一个
水杯的模型
就是有水瓶的模型
它的模型(空间原点)可能是在自己的水瓶底部
然后这个时候是它的模型空间
我要把它变成世界空间
就变成了实际放的那个位置
然后观察空间会说
我用观察者的原点来建一个坐标系
然后这个时候是观察空间
然后最后它再变换到
齐次空间和屏幕空间
然后我们可以看下这个
看下这个是怎么变的
就是在游戏中
它其实会有一个变换矩阵
就是我们之前课程可能有一些几何基础内容
它会说
我拿个矩阵去乘这个顶点的是模型空间位置
就可以从
用这个矩阵
然后这个矩阵可以把顶点
从模型空间变成世界空间
然后我们去乘这个矩阵
然后最后就变成了世界空间中的顶点位置
然后这个矩阵就是世界矩阵
然后除此之外的话就是,我们在进行完
世界空间的矩阵变换之后
世界空间中的顶点位置
然后我们再去乘
从(世界)空间到视空间的矩阵
然后这个时候我们能够把
视空间的
(世界)空间的顶点变到视空间下面
等于这个矩阵就是view矩阵
然后我们可以看一下
就是说现在这个
如果我定义一个球
就是这个圆球
它是在相对于自己的
中心点是模型空间
然后把它变成这个坐标系下是世界空间
然后在这个观察者位置之下
我会把它变成视空间
然后这个视空间
其实就是在摄像机
朝向的时候建立一个坐标系
然后这个时候它的观察
就是我们可以想一下
就是说他这个球可能是个单位球体在这
然后最后变成世界空间
然后
从世界空间变成了视空间
它是有这样一个流程
在变到视空间之后
然后其实我们要进行投影计算
然后投影计算一般是有两种
就是透视投影和正交投影
然后一般情况下透视投影
可能会用到一些
偏3D的游戏
就是比如射击游戏或者赛车游戏这些
但是可能正交投影
我们用那些比较多的就是
一些2D的卷轴的游戏
投影空间之后
其实我们需要进行一步
就是说把它当前的结果会变成
变换到一个那个齐次裁剪空间
相当于我们可以理解为
我们把这个面拽了
然后最后拽成这样一个
立方体的结构里面
然后等于这个是一次变化
然后相当于我们这样这个投影
投影椎体的结果
其实就是现在当前这个画面看到的结果
我们还是看一个实际的例子
就是我们刚才看到一个
比这个复杂一点的
顶点着色器shader
然后我们看一下
其实我们就是可以做的操作就是
顶点动画、骨骼动画、
蒙皮动画,还有阴影
然后还可以进行一些简单的光照
然后这个时候是几何阶段
几何阶段还有一个附选的过程
就是附加的选择的过程
它是几何着色器
还有那个Hull着色器和Domain着色器
然后这个时候
他其实是可以来进行一些网格的Tessellation(曲面细分)
或者一些变换的操作,相当于其实
我可以来去增加网格的一些复杂度
还有这块我可以经过曲面细分
把一个比较平的平面
来添加更多的线和点上去
然后这个时候表达一些更好的凹凸效果
这个其实就是在
vertex shader之外额外加的一些选择
然后这个是朝向剔除
就等于是说他会
就是它会在算的时候来选我们这个物体
我是按正面绘制还是按背面绘制
还是来进行双面的绘制
然后在之前那个shader中
我们也可以看到这个选项
然后三角形裁剪的话其实等于是说
因为有些物体
它其实是骑在这个视锥的边上的
然后这个时候会把外面的东西来剔掉
然后只往下一个阶段传这些裁完的结果
然后裁剪计算其实就只是说在这个
齐次裁剪空间中的这个
负1到正1的范围中进行计算
然后我们之前我们的这个运算是在那个
负1到正1
但是其实我们的屏幕并不一定是
肯定我们屏幕的那个大小不是负1正1
我们屏幕的大小可能比如1920*1080
然后这种大小它其实会把
负1到正1这个空间
然后再转换到它视口的这个空间上面来
就等于是这边的位置
然后变成我们
再比如一个设备
1920*1080
坐标系下的一个操作
然后这个是我们几何阶段(整个流程)
就等于是我们拿到模型
把这个模型装上
然后可能会进行一些
着色计算
就可能
就是进行一些光照计算
然后把这个图元进行一些增点
就是通过GeometryShader或者其他的
曲面细分的方式
然后再把它们变到摄像机空间
然后再进行背面剔除和裁切
然后这个时候我们已经完成了几何阶段
-1. 1什么是游戏(上)
--选择题
-1.2 什么是游戏(下)
--选择题
-1.3 游戏是如何开发出来的
-1.4 游戏引擎(上)
-1.5 游戏引擎(下)
--单选题
-1.6 如何成为一个游戏开发者
--多选题
-2.1 什么是游戏服务器
--单选题
-2.2 游戏服务器的和分类发展
--单选题
-2.3 核心技术和实现难点
--单选题
-2.4 设计原理与方法论
--单选题
-3.1 三维坐标系统
--多选题
-3.2 向量与运算
--单选题
-3.3 矩阵与线性变换
--双选题
-3.4 四元数
--3.4 四元数
--多选题
-4.1 游戏循环概述(上)
--多选题
-4.2 游戏循环概述(下)
--单选题
-4.3 《无尽之路》的实现
--单选题
-4.4 支撑游戏的功能
--选择题
-4.5 支撑游戏的机制与系统
--多选题
-5.1 基本介绍
--5.1 基本介绍
--单选题
-5.2 随机数生成器
--单选题
-5.3 随机数分布与应用
--单选题
-6.1 什么是游戏玩法开发
--单选题
-6.2 建立愿景 Vision
--单选题
-6.3 划定边界 Scope
-6.4 迭代 Iteration
--单选题
-6.5 迭代 Iteration+抛光Polish
--单选题
-7.1实时图形渲染管道 宏观渲染系统
--单选题
-7.2实时图形渲染管道 应用阶段
--单选题
-7.3实时图形渲染管道 几何阶段
--单选题
-7.4实时图形渲染管道 光栅化阶段
--单选题
-7.5实时图形渲染管道 总结 参考
-8.1 物理回顾1
--单选题
-8.2 物理回顾2
--单选题
-8.3 材质 1
--8.3 材质 1
-8.4 材质 2
--8.4 材质 2
-8.5 材质3
--8.5 材质3
-8.6局部光照
--8.6局部光照
--单选题
-8.7 全局光照
--8.7 全局光照
--单选题
-9.1 动画介绍
--9.1 动画介绍
--多选题
-9.2 游戏动画介绍
-9.3 动画技术类型
--多选题
-9.4 骨骼蒙皮动画
--多选题
-9.5 动画流水线
--多选题
-9.6 动画前沿趋势
--多选题
-10.1 .基本概念
--多选题
-10.2 设计目标
--多选题
-10.3 传输数据分析
--多选题
-10.4 常用同步方案 1
-10.4 常用同步方案 2
-10.4 常用同步方案 3
-10.4 常用同步方案 4
--多选题
-10.5 方案对比
--多选题
-11.1 基本图元
--单选题
-11.2 图元距离(上)
--单选题
-11.2 图元距离(下)
--单选题
-11.3 图元相交测试+ 其他几何方法
--单选题
-12.1 著名物理引擎介绍
--单选题
-12.2 物理引擎原理(上)
--单选题
-12.3 物理引擎原理(下)
--单选题
-12.4 游戏中的物理体
--单选题
-12.5 物理引擎使用入门
--单选题
-13.1开发语言
--13.1开发语言
--单选题
-13.2 开发环境
--单选题
-13.3 腾讯开发组件介绍
--单选题
-13.4 网络通信+业务框架介绍
--多选题
-14.1 进程间通信(上)
-14.2 进程间通信(下)
-14.3 通信格式
-14.4 并发模型
-14.5 超时处理
-14.6 大系统小做(上)
--多选题
-14.7 大系统小做(下)
-14.8 架构层面的技术支持(上)
--单选题
-14.9 架构层面的技术支持(下)
-14.10 分布系统的关键能力
--多选题
-15.1 游戏人工智能综述
-15.2 人工智能在游戏中主要方法 上
--多选题
-15.3人工智能在游戏中主要方法 (下)
-15.4 人工智能在游戏制作中的应用领域1
--多选题
-15.5 人工智能在游戏制作中的应用领域2
-15.6 人工智能在游戏制作中的应用领域3
--多选题
-15.7 人工智能在游戏运营中的应用实践(上)
-15.8 人工智能在游戏运营中的应用实践(下)
--多选题
-16.1 游戏支撑系统(1)
--单选题
-16.2 游戏支撑系统(2)
--单选题
-16.3 游戏支撑系统(3)
--单选题
-16.4 游戏支撑系统(4)
--单选题
-16.5 游戏支撑系统(5)
-17.1 游戏逻辑服务器(上)
--单选题
-17.1 游戏逻辑服务器(下)
-17.2 外挂与反外挂(上)
-17.2 外挂与反外挂(下)
--多选题
-18.1运行环境
--18.1运行环境
--多选题
-18.2物理部署
--18.2物理部署
--多选题
-18.3系统的可运维性
--多选题
-18.4运维案列分析
--多选题