stringtranslate.com

Lenguaje de sombreado

Un lenguaje de sombreado es un lenguaje de programación de gráficos adaptado a la programación de efectos de sombreado . Los lenguajes de sombreado suelen constar de tipos de datos especiales como "vector", " matriz ", "color" y " normal ".

Representación sin conexión

Los lenguajes de sombreado utilizados en la renderización sin conexión tienden a ser similares al lenguaje natural , por lo que no se requieren conocimientos especiales de programación. La renderización sin conexión tiene como objetivo producir imágenes de máxima calidad, a costa de un mayor tiempo y procesamiento que la renderización en tiempo real.

Lenguaje de sombreado RenderMan

El lenguaje de sombreado RenderMan [1] (RSL o SL, para abreviar), definido en la Especificación de interfaz RenderMan , es un lenguaje de sombreado común para renderizado de calidad de producción. También es uno de los primeros lenguajes de sombreado implementados.

Define seis tipos principales de sombreadores:

Lenguaje de sombreado VEX de Houdini

El lenguaje de sombreado Houdini VEX (Vector Expressions) (a menudo abreviado como "VEX") está basado en RenderMan. Sin embargo, su integración en un paquete 3D completo significa que el escritor del sombreador puede acceder a la información dentro del sombreador, una característica que no suele estar disponible en un contexto de renderizado. Las diferencias de lenguaje entre RSL y VEX son principalmente sintácticas, además de las diferencias en cuanto a los nombres de varios shadeops . [2]

Lenguaje de sombreado de helado

El lenguaje de sombreado de Gelato [3] , al igual que el VEX de Houdini, está basado en RenderMan. Las diferencias entre el lenguaje de sombreado de Gelato y RSL son principalmente sintácticas: Gelato usa punto y coma en lugar de comas para separar argumentos en las definiciones de funciones y algunas shadeops tienen nombres y parámetros diferentes.

Lenguaje de sombreado abierto

El lenguaje de sombreado abierto (OSL) fue desarrollado por Sony Pictures Imageworks para su uso en su renderizador Autodesk Arnold . También lo utiliza el motor de renderizado Cycles de Blender . Los sombreadores de superficie y volumen de OSL definen cómo las superficies o los volúmenes dispersan la luz de una manera que permite el muestreo de importancia; por lo tanto, es ideal para renderizadores basados ​​en la física que admiten el trazado de rayos y la iluminación global .

Representación en tiempo real

Los lenguajes de sombreado para renderizado en tiempo real están muy extendidos en la actualidad. Ofrecen una mayor abstracción de hardware y un modelo de programación más flexible que los paradigmas anteriores, que codificaban ecuaciones de transformación y sombreado. Ofrecen más control y contenido más rico con menos sobrecarga.

Los sombreadores que están diseñados para ejecutarse directamente en la GPU se volvieron útiles para el procesamiento general de alto rendimiento debido a su modelo de programación de flujo ; esto condujo al desarrollo de sombreadores de cómputo que se ejecutan en hardware similar (ver también: GPGPU ).

Históricamente, unos pocos de estos lenguajes dominaban el mercado; se describen a continuación.

Lenguaje ensamblador ARB

La Junta de Revisión de Arquitectura OpenGL estableció el lenguaje ensamblador ARB en 2002 como un conjunto de instrucciones de bajo nivel estándar para procesadores gráficos programables.

Los lenguajes de sombreado OpenGL de alto nivel suelen compilarse en un ensamblado ARB para su carga y ejecución. A diferencia de los lenguajes de sombreado de alto nivel, el ensamblado ARB no admite el flujo de control ni la ramificación. Sin embargo, se sigue utilizando cuando se requiere portabilidad entre GPU.

Lenguaje de sombreado OpenGL

También conocido como GLSL o glslang , este lenguaje de sombreado estandarizado [4] está diseñado para usarse con OpenGL .

El lenguaje unifica el procesamiento de vértices y fragmentos en un único conjunto de instrucciones, lo que permite bucles y ramificaciones condicionales . GLSL fue precedido por el lenguaje ensamblador ARB .

Lenguaje de programación cg

El lenguaje Cg , desarrollado por Nvidia , [5] fue diseñado para una integración fácil y eficiente en el flujo de trabajo de producción. Cuenta con independencia de API y viene con muchas herramientas gratuitas [1] para mejorar la gestión de activos. El desarrollo de Cg se detuvo en 2012 y el lenguaje ahora está obsoleto.

Lenguaje ensamblador de sombreadores DirectX

El lenguaje ensamblador de sombreadores de Direct3D 8 y 9 es el lenguaje de programación principal para sombreadores de vértices y píxeles en Shader Model 1.0/1.1, 2.0 y 3.0. Es una representación directa del bytecode del sombreador intermedio que se pasa al controlador gráfico para su ejecución.

El lenguaje ensamblador de sombreadores no se puede utilizar directamente para programar el modelo de sombreador unificado 4.0, 4.1, 5.0 y 5.1, aunque conserva su función como representación del código de bytes intermedio para fines de depuración. [6]

Lenguaje de sombreado de alto nivel DirectX

El lenguaje de sombreado de alto nivel (HLSL) es un lenguaje de sombreado de estilo C para DirectX 9 y versiones posteriores y consolas de juegos Xbox. Está relacionado con Cg de Nvidia, pero solo es compatible con DirectX y Xbox. Los programas HLSL se compilan en un código de bytes equivalente al lenguaje ensamblador de sombreadores de DirectX.

HLSL se introdujo como una alternativa opcional al lenguaje ensamblador de sombreadores en Direct3D 9, pero se convirtió en un requisito en Direct3D 10 y versiones posteriores, donde el lenguaje ensamblador de sombreadores está obsoleto.

Adobe Pixel Bender y lenguaje ensamblador de gráficos de Adobe

Adobe Systems agregó Pixel Bender como parte de la API de Adobe Flash 10. Pixel Bender solo podía procesar píxeles, pero no datos de vértices 3D. Flash 11 introdujo una API 3D completamente nueva llamada Stage3D , que utiliza su propio lenguaje de sombreado llamado Adobe Graphics Assembly Language (AGAL), que ofrece soporte completo para aceleración 3D. [7] [8] La aceleración de GPU para Pixel Bender se eliminó en Flash 11.8. [9] [10]

AGAL es un lenguaje de sombreado de bajo nivel pero independiente de la plataforma, que se puede compilar, por ejemplo, en lenguaje ensamblador ARB [ cita requerida ] o GLSL .

Lenguaje de sombreado de PlayStation

Sony anunció PlayStation Shader Language (PSSL) como un lenguaje de sombreado similar a Cg/HLSL, pero específico para PlayStation 4. Se dice que PSSL es en gran medida compatible con los sombreadores HLSL en PC, pero con características adicionales para la plataforma PS4. [11]

Lenguaje de sombreado de metal

Apple ha creado una API de gráficos de bajo nivel , llamada Metal , que se ejecuta en la mayoría de los Mac fabricados desde 2012, iPhones desde el 5S y iPads desde el iPad Air . Metal tiene su propio lenguaje de sombreado llamado Metal Shading Language (MSL), que se basa en C++14 y se implementa utilizando clang y LLVM . MSL unifica el procesamiento de vértices, fragmentos y cómputo. [12]

Lenguaje de sombreado WebGPU

WebGPU Shading Language (WGSL) es el lenguaje de sombreado para WebGPU . Es decir, una aplicación que utiliza la API WebGPU utiliza WGSL para expresar los programas, conocidos como sombreadores, que se ejecutan en la GPU. [13]

Traducción

Para trasladar sombreadores de un lenguaje de sombreado a otro, se utilizan algunos enfoques: [14]

Referencias

  1. ^ Staff (1986–2012). «The RISpec». Pixar . Archivado desde el original el 25 de julio de 2011. Consultado el 9 de junio de 2012 .
  2. ^ Personal. "Houdini". Side FX . Side Effects Software Inc. Archivado desde el original el 22 de julio de 2008. Consultado el 9 de junio de 2012 .
  3. ^ NVIDIA Corporation (2003–2008). «Inicio». NVIDIA Gelato Zone . NVIDIA Corporation. Archivado desde el original el 26 de abril de 2006 . Consultado el 9 de junio de 2012 .
  4. ^ Staff (1997–2012). «OpenGL Shading Language». OpenGL . The Khronos Group . Consultado el 9 de junio de 2012 .
  5. ^ Staff (2012). "Cg Toolkit". NVIDIA Developer Zone . NVIDIA Corporation . Consultado el 9 de junio de 2012 .
  6. ^ "Referencia de Asm Shader: aplicaciones Win32". learn.microsoft.com . 10 de diciembre de 2019.
  7. ^ Joseph Labrecque (2011). Novedades de Adobe AIR 3. O'Reilly Media, Inc., págs. 17-26. ISBN 978-1-4493-1108-7.
  8. ^ Remi Arnaud (2011). "3D en un navegador web". En Eric Lengyel (ed.). Game Engine Gems 2. CRC Press. págs. 207–212. ISBN 978-1-56881-437-7.
  9. ^ "Stage3D". scratch.mit.edu . Consultado el 5 de agosto de 2014 .
  10. ^ "Adobe Flash Player 11.8 - Error 3591185: el rendimiento del sombreador Pixel Bender se degradó drásticamente en FP11.8. Cerrado como "NeverFix"". Archivado desde el original el 22 de abril de 2014.
  11. ^ Stenson, Richard; Ho, Chris. "Lenguaje de sombreado de PlayStation para PS4". GDC Europa 2013 .
  12. ^ Guía del lenguaje de sombreado de metales
  13. ^ "Lenguaje de sombreado WebGPU".
  14. ^ Pranckevičius, Aras (28 de marzo de 2014). "Cross Platform Shaders en 2014 · Sitio web de Aras".
  15. ^ "Cadena de herramientas SPIR-V". LunarXchange .

Notas

  1. ^ Los lenguajes de sombreado de vértices anteriores (sin ningún orden en particular) para OpenGL incluyen EXT_vertex_shader, NV_vertex_program, el mencionado ARB_vertex_program, NV_vertex_program2 y NV_vertex_program3.
  2. ^ Para el sombreado de fragmentos, nvparse es posiblemente el primer lenguaje de sombreado que presenta una abstracción de alto nivel basada en NV_register_combiners, NV_register_combiners2 para el cálculo de píxeles y NV_texture_shader, NV_texture_shader2 y NV_texture_shader3 para las búsquedas de texturas. ATI_fragment_shader ni siquiera proporcionaba una función de análisis "orientada a cadenas" (aunque más tarde la añadió ATI_text_fragment_shader). ARB_fragment_program ha tenido mucho éxito. NV_fragment_program y NV_fragment_program2 son en realidad similares, aunque el último proporciona una funcionalidad mucho más avanzada con respecto a otros.
  3. ^ Compositor de efectos desde la página de inicio de NVIDIA, http://developer.nvidia.com/object/fx_composer_home.html
  4. Rudy Cortes y Saty Raghavachary: Guía del lenguaje de sombreado RenderMan , Course Technology PTR, 1.ª edición (27 de diciembre de 2007), ISBN 1-59863-286-8