渲染流程-几何阶段

几何阶段主要负责大部分多边形操作和顶点操作,包括顶点着色、坐标变换、生成图元、投影、裁剪、屏幕映射等过程,其中顶点着色、坐标变换由顶点着色器完成。几何阶段处理流程图

1.顶点着色器

顶点着色器(Vertext shader)是完全可编程的,主要用于实现顶点的坐标变换、顶点着色两大功能。
顶点着色的输入来自于CPU,包括顶点属性(顶点坐标、法线、纹理坐标等),顶点着色器的处理单位为顶点,输入进来的每个顶点都会调用一次顶点着色器。
坐标变换,包括平移、旋转、缩放等变换。

2.生成图元

生成图元这个步骤,很多书籍并未提及,在OpenGL 编程指南里渲染流程中有一步骤就是图元装配,图元装配的第一步就是生成图元,剩下还有投影、裁剪、屏幕映射,所以在此特地说明一下。之后的裁剪操作是以图元为单位进行处理的,因为不同的图元所用的裁剪算法有所差别。
CPU将顶点数据传给GPU时,同时还会传递顶点索引信息,这个索引信息就是来确定顶点怎样来构成图元。这里写图片描述
上图中,element array存放的就是顶点索引。由图可以看出每个顶点有自己专属的索引名,1、2、3这三个顶点 构成一个三角形,3、2、4这三个顶点构成一个三角形。

3.投影

这里写图片描述
其中左图为透视投影,右图为平行投影。
透视投影有近大远小的效果,更好地显示立体效果;平行投影并没有近大远小的效果。
这里主要说明一下透视投影,以下为透视投影的视锥体(也称为视景体、平截头体)。
这里写图片描述
将视锥体投影到zoy这个平面上,即为下面的这个图:

这里写图片描述
视锥体的参数与Unity场景中的Camera参数也是一一对应的,当然这里还少一个参数aspect屏幕的横纵比,这个在Unity屏幕上会有设置。

4.裁剪

裁剪,简单说就是仅保留视景体内部的图元进行渲染,这一阶段是可配置的。
一个图元相对视体内部的位置,分为三种情况:完全位于内部、完全位于外部、部分位于内部。所以就要分情况进行处理:

  • 当图元完全位于视体内部,图元就可以进入下一渲染阶段。如下图中绿色三角形。
  • 当图元完全位于视体外部,直接丢弃,无需进行渲染。如下图中红色三角形。
  • 当图元部分位于视体内部,就要进行裁剪处理,仅保留图元在视景体内部的部分。如下图中黄色三角形。
    这里写图片描述

5.屏幕映射

这一阶段是不可配置也不可编程的,主要是来实现图元的坐标转换到屏幕坐标。

6.参考博客/文献

7.后续

为了更深入理解渲染流程中的几何阶段,后面会更新贯穿整个几何阶段的坐标变换,来详细说明顶点/图元是怎样一步一步转换到屏幕坐标的。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值