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.


Top Related