1.欢迎来到shader的世界

作者: 一壶开心酒 | 来源:发表于2017-08-13 11:20 被阅读20次

我们有必要了解什么是shader,shader那就是着色器,它的作用可以先简单理解为给屏幕上的物体画上颜色。而什么东西负责给屏幕上画颜色?当然是GPU,所以我们写shader的目的就是告诉GPU往屏幕哪里画、怎么画。shader与渲染流水线关系非常密切,我们应该对渲染流水线的工作流程有一定的了解。
渲染流水线最终目的在于渲染一张二维纹理,也就是我们在屏幕上看到的效果

什么是渲染流水线

渲染管线主要分为三个阶段:应用程序阶段、几何阶段、光栅阶段。

1. 应用程序阶段。

这个阶段相对比较好理解,就比如我们在Unity里开发了一个游戏,其实很多底层的东西Unity都帮我们实现好了,例如碰撞检测、视锥剪裁等等,这个阶段主要是和CPU、内存打交道,在把该计算的都计算完以后,在这个阶段的末端,这些计算好的数据(顶点坐标、法向量、纹理坐标、纹理)就会通过数据总线传给图形硬件,作为我们进一步处理的源数据。

2. 几何阶段

主要负责顶点坐标变换、光照、裁剪、投影以及屏幕映射,改阶段基于GPU进行运算,在该阶段的末端得到了经过变换和投影之后的顶点坐标、颜色、以及纹理坐标。简而言之,几何阶段的主要工作就是“变换三维顶点坐标”和“光照计算”。
问题随之而来,为什么要变换顶点坐标?我是这么理解的,比如你有一个三维游戏场景,场景中的每个模型都可以用一个向量来确定它的位置,但如何让计算机根据这些坐标把模型正确的、有层次的画在屏幕上?这就是我们需要变换三维顶点坐标的原因,最终目的就是让GPU可以将这些三维数据绘制到二维屏幕上。根据顶点坐标变换的先后顺序,主要有如下几个坐标空间:模型坐标空间;世界坐标空间;观察坐标空间;屏幕坐标空间。

3. 光栅化阶段。

经过上面的步骤之后,我们得到了每个点的屏幕坐标值,和我们需要绘制的图元,但此时还有两个问题:

(1)屏幕坐标是浮点数,但像素是用整数来表示的,如何确定屏幕坐标值所对应的像素?

答:绘制的位置只能接近两指定端点间的实际线段位置,例如,一条线段的位置是(10.48, 20.51),转换为像素位置就是(10,21)。

(2)如何根据已确定位置的点,在屏幕上画出线段或者三角形?

答:涉及到具体的画线和填充算法,有兴趣的话可以研究。

这个过程结束后,顶点和图元已经对应到像素,之后的流程就是如何处理像素,即给像素赋予颜色值。
给像素赋予颜色的阶段称为Pixel Operation,是在更新帧缓存之前,执行最后一系列针对每个片段的操作,其目的是计算出每个像素的颜色值。在这个阶段,被遮挡的面通过一个被称为深度测试的过程消除。
pixel operation包含下面这些流程:
(1)消除遮挡面;
(2)Texture operation,纹理操作,根据像素的纹理坐标,查询对应的纹理值;
(3)Blending,通常称为alpha blending,根据目前已经画好的颜色,与正在计算的颜色的alpha值混合,形成新的颜色。
(4)Filtering,将正在计算的颜色经过某种滤镜后输出。
该阶段之后,像素的颜色值被写入帧缓存中。
这个阶段用上一个阶段传递来的数据来产生屏幕上的像素,并渲染出最终的图像。
点击关注我的微博,给大家带来欢乐

相关文章

  • 1.欢迎来到shader的世界

    我们有必要了解什么是shader,shader那就是着色器,它的作用可以先简单理解为给屏幕上的物体画上颜色。而什么...

  • 第一章 欢迎来到Shader世界

    1.1 程序员的三大浪漫 (我很喜欢这个开篇) 有人说,程序员的三大浪漫是编译原理、操作系统和图形学(是的,我己...

  • 1.欢迎来到异次元

    MagicBook荣誉出品 禁止盗用内容 投稿邮箱:magicbookycy@magicsky.tk 欢迎来稿 欢...

  • 今天的挑战

    欢迎来到我的世界1.少吃点

  • 欢迎来到这个世界

    今天是端午,回到了小时候的地方,看着熟悉的街道,戏水的河边,告诉了我,你来了。 没有人告诉我存在的意义,但最近看了...

  • 欢迎来到真实世界

    6月17号,我小孩满月酒,请了亲朋好友齐聚。很开心,咱也是有儿有女的人生了!从此一家人快乐的生活着…… 哈哈,这好...

  • 欢迎来到“虚拟世界”

    消失 图·网 1.梦 我叫…… 抱歉,我忘了名字。我这一生遇到过很多人,他们叫我的名字不尽相同。 我不记得他们叫...

  • 欢迎你来到这个世界

    2018年9月25日1:26分在我焦急的等待中我的第二个宝贝来到了这个世界,生下来4斤9两,当我听见医生说...

  • 欢迎来到这个世界!

    好可怕!我居然梦到我被一辆大客车撞了!怎么回事!搞不好因为自己恐怖故事读多了!我连忙从街心公园的草地上...

  • 欢迎来到这世界

    「感冒」 冬天天冷,睡觉之前总要内心挣扎一会,希望被窝自己不用特别放暖水包就能自行暖呼呼就好了……昨天站在床前迟迟...

网友评论

    本文标题:1.欢迎来到shader的世界

    本文链接:https://www.haomeiwen.com/subject/dtgsrxtx.html