顶点着色器和片段着色器执行次数_(搬砖)什么是着色器Shader

本文介绍了GPU上的Shader及其作用,重点讲解了顶点着色器和片段着色器的功能。顶点着色器处理网格的顶点信息,而片段着色器负责定义像素的最终颜色。此外,还提到了几何着色器、曲面细分着色器和计算着色器在图形处理中的角色,以及GPU与CPU在处理图形任务上的区别。
摘要由CSDN通过智能技术生成

92d0e3d915d46edc818c08218655dbca.png

当我们要求计算机执行任何操作时,我们给计算机一组称为程序的指令。这些能在屏幕上着色或绘制某些东西的程序我们称之为Shader。Shader是运行在GUP上的一组指令,而GPU为Graphic Processing Unit图形处理单元。

d9bd409ec65212c9e952ec430957a0fe.png

GPU是专门为更快更高效得处理计算机图形图像操作而设计的处理单元或电路。我们来简单比较GPU和CPU的区别。下图左边是一个专门为串行运算设计的4核CPU,右边是一个专门为并行运算设计的具有上千核的GPU。GPU比CPU计算更快。

513672c234e0b8a4c4fdb79d1e552210.png

Shaders以不同功能进行分类。第一种是顶点着色器Vertex shader,第二种是像素着色器Pixel shader,第三种是几何着色器Geometry shader,第四种是计算着色器Compute shader,第五种为细分曲面着色器Tessellation or hull shader。

为什么我们需要Shader?当我们在屏幕上绘制或显示一些物体时,这些物体的显示形式是图元Primitives或者网格Mesh。比如游戏中一个几何模型角色或一个贴在网格上的纹理角色,比如我们做阴影效果时先绘制网格再计算阴影,比如一个发射物体发射前需要先绘制该物体外形网格。这些物体都可归结为网格Mesh,它可被分解为图元Privitive,即图元是网格的基本单位。图元有三角形、直线或点。

371c4a2f92fd4f5ed232f290538a3019.png

当我们在屏幕上画一个三角形时,我们首先要绘制顶点,因为网格由顶点组成,此时就要用到Vertex shader顶点着色器。我们将需要到顶点信息给顶点着色器,以显示顶点信息。其次是在这些顶点组成的区域之间填充颜色,此时用到像素着色器Pixel shader或Fragment shader。fragment(片段)有助于定义像素的最终颜色。

a37803b6bd34f6e0adde06abd23e2ee7.png

曲面细分着色器Tessellation shader或Hull shader是较后加入到OpenGL4.0和DirectX 3d 11的。Tessellation shader主要用于细分网格。在2016年的WWDC(Apple开发者大会)中,苹果发布会中讲到Metal(苹果的图形API)上新的曲面细分管线Tessellation pipeline,这个细分管线是fixed function shader,固定渲染管线是嵌入硬件中不可外界编程的。

a74ddce03bf7389369e0756fb4fee53f.png

几何着色器Geometry shader可以操作几何上的图元。几何着色器以图元作为输入,就像顶点着色器以顶点作为输入。在渲染管线顺序中,几何着色器就夹在顶点着色器和像素着色器中间。接下来是Compute shader。Compute shader是一个通用的着色器,它使用在渲染管线之外,即它不是用来绘制一个图元或渲染像素的。那它是用与什么的呢?Compute shader利用GPUs的并行计算处理能力来做通用计算任务。

1def0d37b17a813a66a239eaa67ef6a5.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值