Shader中的一些专业用语的解释

Posted Z_hongli

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shader中的一些专业用语的解释相关的知识,希望对你有一定的参考价值。

Shader中的一些专业用语的解释

此文章收录于我主页顶置的:Unity Shader入门精要文章目录,点击即可跳转。

一、什么是OPenGL/DirectX?
简单的来说,就是图像应用编程的接口,这些接口用语渲染二维和三维的图形,架起了上层应用程序和底层GPU之间的桥梁。

二、什么是HLSL、GLSL、Cg?
简单的来说,就是编写Shader的一些高级着色语言

三、什么是Draw Call?
本身的含义就是CPU调用图像编程接口,命令GPU进行渲染操作,Draw Call中造成性能问题的元凶是CPU,因为GPU的渲染速度往往快于CPU提交命令的速度
(1)CPU与GPU是如何实现并行工作的?
使用命令缓冲区,由CPU添加命令,GPU读取命令,两个过程相互独立。

(2)为什么Draw Call多了会影响帧率?
我们先来做一一 个实验:请创建10 000个小文件,每个文件的大小为1KB,然后把它们从一个文件夹复制到另一个文件夹。你会发现,尽管这些文件的空间总和不超过10MB,但要花费很长时间。现在,我们再来创建一个单独的文件,它的大小是10MB, 然后也把它从一个文件夹复制到另一个文件夹。而这次复制的时间却少很多!这是为什么呢?明明它们所包含的内容大小是一样的。原因在于,每一个复制动作需要很多额外的操作,例如分配内存、创建各种元数据等。如你所见,这些操作将造成很多额外的性能开销,如果我们复制了很多小文件,那么这个开销将会很大。

四、如何减少Draw Call?
使用批处理的方法,吧很多小的Draw Call合并成一个大的Draw Call进行处理。

游戏开发过程中,为了减少Draw Call的开销,有两点需要注意。
(1)避免使用大量很小的网格。当不可避免地需要使用很小的网格结构时,考虑是否可以合并它们。
(2)避免使用过多的材质。尽量在不同的网格之间共用同一个材质。

五、什么是固定管线渲染?
固定函数的流水线(Fixed-Function Pipeline),也简称为固定管线,通常是指在较旧的GPU上实现的渲染流水线。这种流水线只给开发者提供一些配置操作, 但开发者没有对流水线阶段的完全控制权。

固定管线通常提供了一系列接口,这些接口包含了一个函数入口点(Function Entry Points)集合,这些函数入口点会匹配GPU上的一个特定的逻辑功能。开发者们通过这些接口来控制渲染流水线。换句话说,固定渲染管线是只可配置的管线。一 个形象的比喻是, 我们在使用固定管线进行渲染时,就好像在控制电路上的多个开关,我们可以选择打开或者关闭一个开关,但永远无法控制整个电路的排布。

以上是关于Shader中的一些专业用语的解释的主要内容,如果未能解决你的问题,请参考以下文章

Vertex and FragmentShader顶点与片段着色器

shader一些语义或术语的解释

如何系统的学习 Unity 3D 中的 shader 编写

shader是啥意思

Cg入门20:Fragment shader - 片段级模型动态变色(实现汽车动态换漆)

Cg入门19:Fragment shader - 片段级模型动态变色