计算机图形学入门11:图形管线与着色器

1.什么是图形管线

        把场景中的物体经过一系列的处理,最后一张图像的形式在屏幕上显示出来,这一系列过程就是图形管线(Graphics Pipeline),也叫实时渲染管线(Real-time Rendering Pipeline)。如下图所示,为整个渲染管线的过程。

        渲染管线从上到下依次完成以下步骤:
        1.获取到场景中三维空间中的一些顶点。
        2.经过投影变换,将这些点转换到屏幕坐标系下。
        3.将这些点拼装成不同的三角形。
        4.通过光栅化,将三角形离散成不同的着色点,也就是片元(Fragment)。
        5.着色计算,给不同片元进行光照计算等处理。
        6.输出到屏幕上。

        这些步骤都是在硬件GPU上写好的。

        着色(Shading)会同时发生在顶点处理阶段(Vertex Processing)片元处理阶段(Fragment Processing),这个是因为考虑不同的着色频率。如果使用的是顶点着色(Gouraud Shading),对每个顶点进行着色处理那就发生在顶点处理阶段,如果使用的片元着色(Phong Shading),对每个片元(像素)进行着色,那么就发生在片元处理阶段。在现代的GPU里,这套渲染管线允许有一部分是可编程的,这部分就叫做着色器(Shader),用来控制顶点和像素是如何进行着色的。

2.着色器

        在上述已经说明了,在现代的GPU里,渲染管线允许有一部分是可编程的,在顶点和片元处理阶段,对顶点和片元(像素)是进行如何着色,这就是着色器(Shader)

        Shader本质上是能够在硬件上执行的语言,举一个OpenGL上GLSL语言的例子,如下图所示,OpenGL是图形学中的一个API,可以写Shader。

        Shader中每一个顶点或像素执行一次,写一个函数都是通用的,每一个像素都会执行,只需要操作一个顶点或像素。GPU都是并行计算的,运输性能远超CPU。

        对顶点进行着色的叫做顶点着色器(Vertex Shader),对片元(像素)进行着色的叫做片元着色器(Fragment Shader)。随着现代GPU的发展,出现了几何着色器(Geometry Shader),可以动态产生更多的三角形,对几何的操作。还出现了Compute Shader,它不仅仅是图形学内部的计算,还可以做各式各样通用的GPU计算。

        练习Shader可以去Shadertoy BETA网站。以下图片是使用Shader实现的一个例子。

相关推荐

  1. 计算机图形题库

    2024-06-16 08:28:04       21 阅读
  2. 19 OpenGL计算着色

    2024-06-16 08:28:04       45 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-16 08:28:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-16 08:28:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-16 08:28:04       82 阅读
  4. Python语言-面向对象

    2024-06-16 08:28:04       91 阅读

热门阅读

  1. 江苏徐州存储服务器怎样进行搭建?

    2024-06-16 08:28:04       29 阅读
  2. 神经网络-卷积神经网络案例详解

    2024-06-16 08:28:04       26 阅读
  3. AOSP : Android编译记录

    2024-06-16 08:28:04       29 阅读
  4. 面向对象设计模式准则

    2024-06-16 08:28:04       36 阅读
  5. 在 Swift 中,UILabel添加点击事件的方法

    2024-06-16 08:28:04       30 阅读
  6. leetcode71简化路径

    2024-06-16 08:28:04       32 阅读
  7. 【Vue】登录功能中对于错误提示信息的重构

    2024-06-16 08:28:04       30 阅读
  8. 动态规划01(leetcode509,70,746)

    2024-06-16 08:28:04       30 阅读
  9. iOS Category

    2024-06-16 08:28:04       24 阅读
  10. 如何在本地搭建OpenHarmony源码仓库

    2024-06-16 08:28:04       30 阅读
  11. 78、区间选点

    2024-06-16 08:28:04       39 阅读
  12. zerotier-one自建根服务器方法一

    2024-06-16 08:28:04       31 阅读