计算机图形学入门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实现的一个例子。

相关推荐
17岁的勇气6 天前
Unity Shader unity文档学习笔记(十九):粘土效果,任意网格转化成一个球(顶点动画,曲面着色器)
笔记·学习·unity·图形渲染·顶点着色器·曲面着色器
郝学胜-神的一滴9 天前
Horse3D引擎研发笔记(四):在QtOpenGL下仿three.js,封装EBO绘制四边形
c++·3d·unity·游戏引擎·godot·图形渲染·虚幻
郝学胜-神的一滴10 天前
Horse3D引擎研发笔记(一):从使用Qt的OpenGL库绘制三角形开始
c++·qt·3d·unity·图形渲染·unreal engine
爱思德学术11 天前
中国计算机学会(CCF)推荐学术会议-A(计算机图形学与多媒体):VR 2026
计算机视觉·图形渲染·虚拟现实·用户界面
郝学胜-神的一滴15 天前
OpenGL状态机与对象管理:优化图形渲染的高效方法
开发语言·c++·程序人生·算法·图形渲染
张人大 Renda Zhang15 天前
如何用分布式架构视角理解宇宙稳定性?从精细调参到微服务的类比思考
前端·分布式·微服务·架构·图形渲染
郝学胜-神的一滴17 天前
能表示旋转的矩阵是一个流形吗?
线性代数·矩阵·图形渲染
赤水无泪19 天前
A 常见图形API和图形渲染引擎介绍
图形渲染
山楂树の19 天前
模型优化——在MacOS 上使用 Python 脚本批量大幅度精简 GLB 模型(通过 Blender 处理)
python·macos·3d·图形渲染·blender
D5Render22 天前
D5渲染器 2.11 上线丨AI 设计助手、AI PBR 材质生成与推荐、自定义路径、高级笔刷、完整支持平行投影
aigc·图形渲染·3d渲染·渲染器