Recorte

En computación gráfica, **Recorte**, (en inglés **clipping**) es un método de habilitar o deshabilitar selectivamente operaciones de renderización dentro de una región de interés definida. Matemáticamente, el recorte puede ser descrito utilizando la terminología de geometría constructiva. Un algoritmo de renderización solo dibuja píxeles en la intersección entre la región de recorte y el modelo de la escena. Las líneas y superficies ubicadas fuera del área de visualización son eliminadas.

Por extensión, en el campo de videojuegos, el *recorte* es un problema gráfico que consiste hacer aparecer, desaparecer o modificar objetos de una escena en la pantalla, dando como resultado una reducción del tiempo de cálculo.

Otro aspecto de *recorte* se presenta en el cálculo de escenas tridimensionales. De hecho una escena en 3D se visualiza en 2D a través de una transformación de proyección geométrica con la que se define un plano de corte en el que se realiza la proyección (plano cercano), y un plano de corte a partir del cual los objetos ya no se representan (plano lejano). Como consecuencia, si el plan es demasiado cercano, se ve claramente aparecer los objetos al desplazarse hacia adelante, y desaparecer al moverse hacia atrás. Una técnica para superar este problema es el uso de niebla (ampliamente utilizado en los antiguos juegos en 3D para compensar la baja potencia de cálculo de las máquinas de la época).

## Recortes en 2D

En gráficos bidimensionales, se puede definir una región de clip para que los píxeles solo se dibujen dentro de los límites de una ventana o marco. Las regiones de clip también se pueden usar para controlar selectivamente la representación de píxeles con fines estéticos o artísticos. En muchas implementaciones, la región del clip final es el compuesto (o intersección) de una o más formas definidas por la aplicación, así como también cualquier restricción de hardware del sistema

En una aplicación de ejemplo, considere un programa de edición de imágenes. Una aplicación de usuario puede convertir la imagen en una ventana gráfica. A medida que el usuario se acerca y se desplaza para ver una parte más pequeña de la imagen, la aplicación puede establecer un límite de clip para que los píxeles fuera de la ventana gráfica no se representen. Además, los widgets GUI, las superposiciones y otras ventanas o marcos pueden ocultar algunos píxeles de la imagen original. En este sentido, la región del clip es el compuesto del "clip de usuario" definido por la aplicación y el "clip de dispositivo" impuesto por la implementación del software y hardware del sistema. El software de la aplicación puede aprovechar esta información del clip para ahorrar tiempo de cálculo, energía y memoria, evitando el trabajo relacionado con píxeles que no son visibles.

## Recortes en 3D

En los gráficos tridimensionales, la terminología de recorte se puede usar para describir muchas características relacionadas. Por lo general, "recorte" se refiere a operaciones en el plano que funcionan con formas rectangulares, y "recorte" se refiere a métodos más generales para procesar selectivamente elementos del modelo de escena. Esta terminología no es rígida y el uso exacto varía entre muchas fuentes.

Los elementos del modelo de escena incluyen primitivas geométricas: puntos o vértices; segmentos de línea o bordes; polígonos o caras; y objetos de modelos más abstractos como curvas, splines, superficies e incluso texto. En modelos de escenas complicadas, los elementos individuales pueden inhabilitarse selectivamente (recortarse) por razones que incluyen la visibilidad dentro de la ventana gráfica (eliminación de fondos); Orientación (selección de la cara posterior), oscurecimiento por otra escena o elementos del modelo (selección de oclusión, recorte de profundidad o "z"). Existen algoritmos sofisticados para detectar y realizar de manera eficiente dicho recorte. Muchos métodos de recorte optimizados se basan en la lógica de aceleración de hardware específica proporcionada por una unidad de procesamiento de gráficos (GPU).

El concepto de recorte se puede extender a una mayor dimensionalidad utilizando métodos de geometría algebraica abstracta.

## Importancia en videojuegos

Una buena estrategia de recorte es importante en el desarrollo de videojuegos para maximizar la velocidad de cuadros y la calidad visual del juego. A pesar de que los chips de GPU son más rápidos cada año, sigue siendo computacionalmente costoso transformar, texturizar y sombrear polígonos, especialmente con los múltiples pases de textura y sombreado comunes en la actualidad. Por lo tanto, los desarrolladores de juegos deben vivir dentro de un cierto "presupuesto" de polígonos que se pueden dibujar en cada fotograma de video.

Para maximizar la calidad visual del juego, los desarrolladores prefieren dejar que las elecciones estéticas, en lugar de las limitaciones de hardware, determinen el presupuesto de polígonos. Por lo tanto, las optimizaciones que ahorran rendimiento o aprovechan la aceleración del flujo de gráficos mejoran la experiencia del jugador.

La optimización del recorte puede acelerar la representación de la escena actual, economizando el uso del tiempo del renderizador y la memoria dentro de la capacidad del hardware. Los programadores a menudo diseñan heurísticas inteligentes para acelerar el recortador, ya que a veces es computacionalmente prohibitivo utilizar el trazado de líneas o el trazado de rayos para determinar con 100% de precisión qué polígonos no están dentro del campo de visión de la cámara. Las estructuras de datos espacialmente conscientes, como los octetos, los árboles R \* y las jerarquías de volumen delimitador se pueden usar para particionar las escenas en áreas representadas y no representadas (lo que permite que el procesador rechace o acepte nodos de árbol completos cuando sea apropiado).

Las optimizaciones de oclusión basadas en la geometría del punto de vista pueden introducir artefactos si la escena contiene superficies reflectantes. Una técnica común, el mapeo de reflexión, puede usar opcionalmente las estimaciones de oclusión existentes desde el punto de vista del frustum vista principal; o, si el rendimiento lo permite, se puede calcular un nuevo mapa de oclusión desde una posición de cámara separada.

Por razones históricas, algunos videojuegos utilizaron optimizaciones de detección de colisiones con lógica y aceleración de hardware idénticas a las de la prueba de oclusión. Como resultado, los no especialistas han utilizado incorrectamente el término "clip" (y su antónimo "sin clipping") para referirse a la detección de colisiones.

## Algoritmos

### Algoritmos de recorte

* Cohen–Sutherland
* Liang–Barsky
* Recorte–rápido
* Cyrus–Beck
* Nicholl–Lee–Nicholl
* Skala
* Algoritmo O(lg N)

### Algoritmos de recorte de polígonos

* Greiner-Hormann
* Sutherland–Hodgman
* Weiler–Atherton
* Vatti