3D图形编程中的片段是什么?


37

片段着色器中的片段是什么?维基百科说:

通常,可以将片段视为遮蔽像素所需的数据,再加上测试片段是否能够存活成为像素所需的数据(深度,alpha,模板,剪刀,窗口ID等)。

那么它是纹理,顶点还是其他东西?

Answers:


31

在计算机图形学中,片段是在帧缓冲区中生成单个像素的绘图图元所必需的数据。

此数据可能包括但不限于:

  • 栅格位置
  • 深度
  • 插值属性(颜色,纹理坐标等)
  • 模版
  • α
  • 视窗编号

绘制场景时,将绘制图元栅格化为片段,然后对其进行纹理处理并与现有的帧缓冲区合并。片段与帧缓冲区中已有数据的组合方式取决于各种设置。在典型情况下,如果片段比已经在该位置的像素(根据深度缓冲区)更远,则可以将其丢弃。如果它比现有像素更近,则可以替换现有像素,或者,如果正在使用alpha混合,则可以用片段颜色和像素现有颜色的混合来替换像素颜色,例如绘制半透明的对象。

通常,可以将片段视为遮蔽像素所需的数据,再加上测试片段是否能够存活成为像素所需的数据(深度,alpha,模板,剪刀,窗口ID等)。

来自维基百科


6

片段就是从您要着色的像素周围的3个顶点贡献而来的数据。

在“顶点着色器”中,每个顶点输出一些数据(颜色,纹理坐标,...)。然后在“片段着色器”中,对于每个像素,您将获得这些值的加权平均值,然后将其用于构建像素的最终颜色。


如上所述,像素和不可见缓冲区上的所有其他数据。
StarWeaver


4

片段着色器中的片段是什么

唯一可以说的就是定义片段着色器的输入和输出。

既然已经完成了/太广泛了,我将集中在它直观的视觉方面。

片段是栅格输出

OpenGL Wiki说:

片段是光栅化器产生的值的集合。

这很有意义,因为片段着色器位于产生其输入的光栅化之后

这是光栅化器输出的直观表示:

图片来源

光栅化器的输入是一个3D三角形和一个视点,输出是一组可能出现在屏幕上的像素(如果它们不会被其他物体阻挡)。

这些小正方形(被编码为单个像素)中的每个正方形都是一个三角形,而fragment只是该三角形的另一个名称。


不赞成投票的人,请解释一下,这样我就可以学习和改进内容;-)
Ciro Santilli新疆改造中心法轮功六四事件

最佳答案中的信息最好与您的视觉理解相结合。
StarWeaver
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.