¿Cuál es el propósito del búfer de plantilla? Más precisamente, ¿qué es una plantilla en gráficos por computadora?


41

Leí mucho la palabra de la plantilla y no tengo idea de cuál es su verdadero propósito en los gráficos por computadora.

Al ver la imagen en blanco y negro en wikipedia, todavía tengo problemas con ella.

¿Por qué utilizamos una plantilla o un búfer de plantilla, y cuál es la diferencia con un búfer Z? ¿Por qué usar esta palabra que parece tener algún significado en el diseño gráfico?


Buena pregunta, todo lo que sé es que se usa para representar sombras ... ¡Pero me interesará escuchar una explicación completa!
Ricket

Respuestas:


40

En su encarnación original, un búfer de plantilla era un búfer de cuadro de un bit por píxel (es decir, blanco o negro, pero sin grises). Podrías renderizar lo que quisieras como cualquier otro framebuffer. Luego, más tarde, podría usar el contenido de ese búfer para "modelar" o enmascarar al dibujar en su búfer normal.

Un ejemplo: Digamos que estás haciendo un juego de conducción. Desea tener un pequeño espejo retrovisor en pantalla que le muestre lo que hay detrás del automóvil. Deberá renderizar una vista apuntando detrás del automóvil, pero solo desea renderizarla dentro del pequeño rectángulo redondeado del espejo retrovisor. La solución típica es:

  1. Representa la forma del rectángulo redondeado en el búfer de la plantilla.
  2. Habilitar stencilling.
  3. Renderice la vista hacia atrás en el búfer normal.

La plantilla lo enmascarará para que solo dibujes la forma del espejo.

Ahora que las canalizaciones de renderizado son mucho más flexibles y programables, los buffers de galería de símbolos se usan solo como un framebuffer genérico de 1 bit con el que puedes hacer lo que quieras. Las sombras son un caso de uso común.


10
En otras palabras, básicamente tiene la misma función que una plantilla de la vida real, enmascarando partes al aplicar tinta.
Kaj

44
En la actualidad, casi todos los dispositivos admiten un búfer de galería de símbolos de 8 bits.
Chris Howe

Realmente no entiendo tu ejemplo, ¿es como si hubiera un segundo frustrum? ¿rasteriza otra parte de la escena? ¿Puedes dar un ejemplo con las sombras?
jokoon

Es solo un segundo búfer de cuadros. Siempre puedes cambiar el tronco antes de renderizarlo (que es lo que creo que hacen los sistemas de sombra), pero eso no es parte del concepto central.
munificent

9

Además del uso funcional de los buffers de plantilla que la gente ya ha discutido, los buffers de plantilla también se pueden usar para la optimización.

Debido a la posición de la prueba de galería de símbolos en la tubería de gráficos (que es antes del sombreado de píxeles), la prueba de galería de símbolos se puede usar para eliminar los píxeles que hacen un trabajo de sombreado pesado cuando no son necesarios. A menudo esto se puede hacer con una granularidad más gruesa que un solo píxel, por ejemplo. un mosaico de píxeles, por lo que el trabajo a menudo se puede eliminar durante las etapas de rasterización gruesa también.


4

Es solo un búfer que controla qué píxeles se pueden modificar cuando se representan los polígonos. Para cada píxel, hay un valor de plantilla correspondiente, y los píxeles se pueden modificar / ignorar condicionalmente dependiendo de estos valores

En su forma más simple, se puede usar como una plantilla física: una máscara que permite el paso de algunos píxeles y detiene la modificación de otros píxeles.

Es muy similar en comportamiento a una prueba de profundidad similar al búfer z, la prueba de plantilla es una prueba de verdadero / falso, y hay configuraciones similares para controlar la prueba de plantilla (pasar si es mayor / menor / igual). Pero en lugar de escribirle una profundidad, generalmente tendrá valores predefinidos escritos en ella, o se incrementará / disminuirá cuando se dibujen píxeles, como se usa en los algoritmos de sombra de plantilla.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.