¿Qué es un fragmento en la programación de gráficos 3D?

37

¿Qué es un fragmento en un sombreador de fragmentos? Wikipedia dice que:

En general, un fragmento puede considerarse como los datos necesarios para sombrear el píxel, más los datos necesarios para probar si el fragmento sobrevive para convertirse en un píxel (profundidad, alfa, plantilla, tijera, ID de ventana, etc.)

Entonces, ¿son texturas, vértices u otra cosa?

Albus Dumbledore
fuente

Respuestas:

31

En gráficos de computadora, un fragmento es la información necesaria para generar un solo píxel de una primitiva de dibujo en el búfer de cuadros.

Estos datos pueden incluir, entre otros:

  • posición de trama
  • profundidad
  • atributos interpolados (color, coordenadas de textura, etc.)
  • plantilla
  • alfa
  • ID de ventana

A medida que se dibuja una escena, las primitivas de dibujo se rasterizan en fragmentos que se texturizan y se combinan con el búfer de cuadro existente. La forma en que se combina un fragmento con los datos que ya están en el búfer de trama depende de varias configuraciones. En un caso típico, un fragmento puede descartarse si está más lejos que el píxel que ya está en esa ubicación (de acuerdo con el búfer de profundidad). Si está más cerca que el píxel existente, puede reemplazar lo que ya está allí o, si se usa la mezcla alfa, el color del píxel puede reemplazarse con una mezcla del color del fragmento y el color existente del píxel, como en el caso de dibujando un objeto translúcido.

En general, un fragmento puede considerarse como los datos necesarios para sombrear el píxel, más los datos necesarios para probar si el fragmento sobrevive para convertirse en un píxel (profundidad, alfa, plantilla, tijera, ID de ventana, etc.)

De wikipedia

concepto3d
fuente
6

Un fragmento es simplemente los datos que se obtienen de la contribución de los 3 vértices alrededor del píxel que está sombreando.

En el sombreador de vértices, genera algunos datos por vértice (color, coordenadas de textura, ...). Luego, en el Fragment Shader, para cada píxel obtienes un promedio ponderado de esos valores, que luego usas para construir los colores finales del píxel.

XGouchet
fuente
El píxel y todos los demás datos en búferes invisibles como se mencionó anteriormente.
StarWeaver
4

De la misma manera que un sombreador de vértices actúa sobre los vértices, un sombreador de fragmentos (o píxeles) solo actuará sobre los píxeles.

El pato comunista
fuente
Lo sentimos, pero esto no es correcto sin mencionar la palabra "rastarisation" e interpolaciones.
Notabene
Peor aún, dice píxeles, que son distintos de los fragmentos, especialmente cuando están involucrados objetivos de renderizado AA de
muestreo múltiple
4

¿Qué es un fragmento en un sombreador de fragmentos?

Lo único que se puede decir con precisión es definir las entradas y salidas del sombreador de fragmentos.

Como se ha hecho / es demasiado amplio, me centraré en el lado visual intuitivo.

Un fragmento es la salida ráster

El wiki de OpenGL dice:

Un Fragmento es una colección de valores producidos por el Rasterizador.

Lo cual tiene sentido ya que el sombreador de fragmentos viene después del rasterizador que produce su entrada.

Y esta es la representación visual de la salida del rasterizador:

Fuente de la imagen .

La entrada del rasterizador es un triángulo 3D y un punto de vista, y la salida, es un conjunto de píxeles que pueden aparecer en la pantalla (si otros no los bloquean).

Cada uno de esos pequeños cuadrados (que están codificados como un solo plixel), es una pieza del triángulo, y el fragmento es solo otro nombre para la pieza.

Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
fuente
Votantes, por favor explique para que pueda aprender y mejorar el contenido ;-)
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
La información en la respuesta superior mezclada con tus explicaciones visuales sería la mejor.
StarWeaver