Unity 之渲染管线初探

Unity 是一款跨平台的 3D 引擎,有着强大的渲染功能,并主要用于游戏开发。

谈到 Unity 的渲染功能,我们不得不提及到着色器(Shader)——3D 游戏引擎中最重要的一个因素­,它在游戏效果以及画面显示方面起到了决定性的作用。Shader 编程也属于计算机图形学中一个重要的部分。

接下来让我们从可编程渲染管线来了解 Shader 编程。

渲染管线模型

3D 游戏以及 3D 模型通过渲染管线来渲染到 2D 的屏幕上。渲染管线的流程是在 GPU 中进行的,它主要占有计算机的显存部分。渲染管线在这个过程中进行了顶点处理、面处理、光栅化、像素处理。

1)顶点处理

大多数接触过 3D 图形的人都知道3D 模型是通过众多点构成的面而展现出来的。

顶点处理,是通过一系列坐标系的变换,让各个顶点通过一定的规律在摄像机前位移,最终在屏幕上对应这些顶点的过程。

首先,物体的各个顶点从自身坐标系,通过世界变换矩阵处理转换到世界坐标系,再通过取景变换矩阵变换到观察者坐标系,最后通过投影变换,将顶点转移到屏幕坐标系。

有一点大家会经常忘记,在观察者坐标系转换到投影坐标系的过程中,GPU(图形处理单元)还对材质属性和光照属性进行了处理。

2)面处理

三点成一面。面处理有三个部分:面的组装、面的截取、面的剔除。

面的组装:模型中的三个点会组成一个三角形的面(非任意点,因为每个点都有自己的编号)。这些面,面面相接,组成了我们能看到的模型。

面的截取:由于摄像机和人眼一样,可视的区域是一个锥形,模型在摄像机可视范围内可能并不是全覆盖,也就是在摄像机外,这些在摄像机之内的部分就会被截取。

面的剔除:为了模拟肉眼,摄像机前的物体会出现近大远小的现象,那么物体和物体之间会有遮挡,被遮挡的面会被剔除不处理;每个面都有法向量,所以只有在面的法向量和摄像机散射向量夹角大于90度的才会被摄像机捕捉到。

3)光栅化

光栅化,又称之合并阶段。它的主要功能是将面转换成一帧中的像素集合。

这一阶段是不可以编程的,它负责执行多个片段测试,包括:深度测试、alpha 测试和模板测试,程序员可以通过高度配置来实现想要的效果。如果通过了所有的测试,这部分颜色就会与帧缓冲存储的颜色通过 alpha 混合函数进行合并。

4)像素处理

这个阶段将像素区域着色,然后赋予贴图。

(左上为3D网格模型,左下为赋予贴图后的3D模型,右图为贴图)

Shader 详解

介绍完GPU 渲染管线之后,我们再来简单了解一下可编程着色器 Shader —— 图形渲染里最有趣的部分。Shader 能让渲染的图形展示出水面效果、火焰的热流效果、角色的虚化效果等视觉效果。

着色器可分为顶点着色器(VertexShader)、几何着色器(Geometry Shader)和像素着色器(Pixel Shader)。它们从输入的数据中取得一个元素,通过程序计算,变换为输出数据的一个或多个元素

顶点着色器输入源为顶点,顶点包含其在自身坐标系或世界坐标系的位置和矢量信息,而输出源为已通过变换和照明处理的顶点,包含其投影坐标系的信息。

几何着色器的输入源为一个有 n 个顶点的几何图元以及最多 n 个作为控制点的额外顶点,输出源则变成 0 或多个图元。根据效果需要,这些图元的可能和输入的时候不同。

像素着色器输入为顶点间的片段,这些片段所包含的信息来自于对三角形顶点信息的插值,输出成将要写到帧缓冲里的颜色

结语

在游戏中,绚丽的场景和角色是怎么来的呢? 很简单,纹理数据以纹理坐标(UV 坐标)寻址的,而并非内存地址。通过着色器我们可以直接读取纹理贴图。

模型的顶点和纹理内的 UV 坐标一一对应,这样,纹理就以一定的规则贴在了模型上。

以上就是对渲染管线的简单介绍,关于着色器语法且待下回分解。

本文作者:吴思淇(点融黑帮), 现就职于点融Social team,一个热爱游戏设计的web 前端程序猿一枚。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,602评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,442评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,878评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,306评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,330评论 5 373
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,071评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,382评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,006评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,512评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,965评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,094评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,732评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,283评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,286评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,512评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,536评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,828评论 2 345

推荐阅读更多精彩内容