qué son los shaders

3
¿Qué son los shaders? Shader: “Un procedimiento de sombreado e iluminación que permite al artista/programador especificar el renderizado de un vertex o de un pixel”. Esta es la definición dada por el programa RenderMan de Pixar en 1989, que sería usado para la realización de la película Toy Story (1995). Por estas mismas fechas comenzó una revolución en el mundo de las tarjetas gráficas de PC que fue dotando a las mismas de más y más potencia. En 1999 se produce un importante salto cualitativo en el terreno de las tarjetas gráficas al presentar nVidia la GeForce 256 que supuso el inicio de las GPUs (Graphics Processing Units) programables. A grandes rasgos, los shaders son simples programas que transforman un vértice (denominado vertex) o bien un pixel (denominado fragment por OpenGL de forma más correcta como veremos más adelante, aunque probablemente esté mas extendida la propia denominación de pixel). Para cada vertex, se llama a un vertex shader en una primitiva. Una vez que el vertex es procesado por el shader, la primitiva es ensamblada y procesada, siendo renderizada como una serie de pixelsque pueden a su vez ser procesados por un pixel shader para ser luego pintados. Así, los shaders reemplazan una sección del hardware de vídeo que típicamente se denomina pipeline de función fija (Fixed-Function Pipeline o FFP). Esto es porque reemplazan tanto la transformación de vértices como la iluminación y mapeado de textura “fijos” del hardware (es decir, no

Upload: ysusmp

Post on 21-Nov-2015

23 views

Category:

Documents


0 download

DESCRIPTION

qefqef qwefqwe rqwerqwer qewrqwe fqsdfasd fasadf asdfasd fsdf

TRANSCRIPT

Qu son losshaders?Shader: Un procedimiento de sombreado e iluminacin que permite al artista/programador especificar elrenderizadode unvertexo de unpixel.Esta es la definicin dada por el programaRenderMandePixaren 1989, que sera usado para la realizacin de la pelculaToyStory(1995).Por estas mismas fechas comenz una revolucin en el mundo de las tarjetas grficas de PC que fue dotando a las mismas de ms y ms potencia. En 1999 se produce un importante salto cualitativo en el terreno de las tarjetas grficas al presentarnVidialaGeForce256que supuso el inicio de lasGPUs(GraphicsProcessingUnits)programables.A grandes rasgos, losshadersson simples programas que transforman un vrtice (denominadovertex) o bien unpixel(denominadofragmentporOpenGLde forma ms correcta como veremos ms adelante, aunque probablemente est mas extendida la propia denominacin depixel).Para cadavertex, se llama a unvertexshaderen una primitiva. Una vez que elvertexes procesado por elshader,la primitiva es ensamblada y procesada, siendorenderizadacomo una serie depixelsque pueden a su vez ser procesados por unpixelshaderpara ser luego pintados.As, losshadersreemplazan una seccin delhardwarede vdeo que tpicamente se denominapipelinede funcin fija (Fixed-FunctionPipelineo FFP). Esto es porque reemplazan tanto la transformacin de vrtices como la iluminacin ymapeadode textura fijos delhardware(es decir, no programable) por una forma programable. Con la introduccin de losshadersdisponemos de la opcin de tomar el control para conseguir cualquier efecto que queramos, o dejar que el FFP decida por nosotros.Actualmente, losshadersno slo sirven para iluminacin y sombreado, como indica su nombre, sino que adems sirven para crear efectos grficos ms ricos, como animaciones, efectos de partculas, etc.Veamos de forma un poco ms rigurosa las definiciones deVertexShader,PixelShaderyFragmentShader.UnVertexShader(VS) es una funcin de procesado grfico que manipula los valores de unvertexen un plano 3D mediante operaciones matemticas sobre un objeto. Estas variaciones pueden ser diferencias en el color, en las coordenadas de la textura, en la orientacin en el espacio o en el tamao del punto.Cuando el VS est activado, reemplaza alpipelinede funcin fija para la transformacin de vrtices. Elshaderno opera sobre una primitiva (un tringulo, por ejemplo), sino sobre un solovertexcada vez; adems no puede crearlos ni destruirlos sino solamente manipularlos. El programashaderse ejecuta para cadavertexque deba ser procesado.De forma anloga alvertexshader,se define unPixelShader(PS) como un pequeo programa que procesafragments(algo as comopixelscon ms datos) y que se ejecuta en la GPU. Al crear un PS, se crea una funcin de procesado de fragmentos que manipula datos de fragmentos.Frecuentemente necesitan datos del VS, llegando incluso a veces a ser conducidos por ste. Por ejemplo, para calcular una iluminacin porpixel, el PS necesita la orientacin del tringulo, la orientacin del vector de luz y en algunos casos la orientacin del vector de vista.UnFragmentShader(FS) es lo mismo que un PS. El nombre defragmentviene de que una escena 3D es proyectada en el plano x-y (2D) donde los puntos son llamados fragmentos. Un fragmento contiene no slo informacin de color del punto sino tambin otra informacin tal como la posicin y las coordenadas de la textura por ejemplo. Diversos fragmentos pueden ser unidos para mostrar finalmente unpixelen la pantalla.