<canvas id="custom" class="canvas" data-fragment-url="examples/moon.frag" data-textures="examples/images/moon-texture.jpg" width="350px" height="350px"></canvas>

# The Book of Shaders
*por [Patricio Gonzalez Vivo](http://patriciogonzalezvivo.com/)*

Esta es una guía paso a paso a través del abstracto y complejo universo de los Fragment Shaders.

<div class="header">
<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=B5FSVSHGEATCG" style="float: right;"><img src="https://www.paypalobjects.com/en_US/i/btn/btn_donate_SM.gif" alt=""></a>
</div>

## Contenidos

* [Acerca de este libro](00/?lan=es)

* Comenzando
    * [¿Qué es un shader?](01/?lan=es)
    * [“Hola Mundo!”](02/?lan=es)
    * [Uniforms](03/?lan=es)
	* [Ejecutando tu shader](04/?lan=es)

* Dibujando con algoritmos
    * [Funciones de forma](05/?lan=es)
    * [Colores](06/?lan=es)
    * [Formas](07/)
    * [Matrices](08/)
    * [Patrones](09/)

* Diseños generativos
    * [Random](10/)
    * [Noise](11/)
    * Movimiento browniano
    * Fractales

* Procesamiento de imágenes
    * Texturas
    * Operaciones de Imagen
    * Convoluciones de Kernel
    * Filtros
    * Otros efectos

* Simulación
    * Pingpong
    * Conway
    * Ripples
    * Water color
    * Reaction diffusion

* Gráficos 3D
    * Luces
    * Normal-maps
    * Bump-maps
    * Ray marching
    * Environmental-maps (esféricas y cúbicas)
    * Reflección y refracción

* [Apéndice:](appendix/) Otras formas de usar este libro
	* [¿Cómo puedo ver el libro offline?](appendix/)
	* [¿Cómo puedo correr los ejemplos en una Raspberry Pi?](appendix/)
	* [¿Cómo imprimir este libro?](appendix/)

* [Galería de ejemplos](examples/)

* [Glosario](glossary/)

## Acerca del autor

[Patricio Gonzalez Vivo](http://patriciogonzalezvivo.com/) (1982, Buenos Aires, Argentina) es un artista y desarrollador que actualmente reside en New York. Explora los espacios que convergen entre lo orgánico y lo sintético, lo analógico y lo digital, lo individual y lo colectivo. En su trabajo utiliza el código como un lenguaje expresivo con la intención de lograr algo superador.

Patricio estudió y ejerció psicoterapia y terapia de artes expresivas. Tiene un MFA en diseño y tecnología de la Parsons The New School, donde hoy da clases. Actualmente el trabaja como Graphic Engineer en Mapzen, creando herramientas open source para trabajar con mapas.

<div class="header"><a href="https://twitter.com/patriciogv" target="_blank">Twitter</a> - <a href="https://github.com/patriciogonzalezvivo" target="_blank">GitHub</a> - <a href="https://vimeo.com/patriciogv" target="_blank">Vimeo</a> - <a href="https://www.flickr.com/photos/106950246@N06/" target="_blank"> Flickr</a></div>

## Agradecimientos

Gracias a mi esposa [Jen Lowe](http://www.datatelling.com/), por su apoyo incondicional, su ayuda y el tiempo dedicado editando este libro.

Gracias a [Scott Murray](http://alignedleft.com/) por inspirarme y aconsejarme.

Gracias a [Kenichi Yoneda (Kynd)](https://twitter.com/kyndinfo) y a [Sawako](https://twitter.com/sawakohome) por la [Traducción al japonés (日本語訳).](?lan=jp)

Gracias a [Tong Li](https://www.facebook.com/tong.lee.9484) y a [Yi Zhang](https://www.facebook.com/archer.zetta?pnref=story)por la [Traducción al chino (中文版).](?lan=ch)

Gracias a [Jae Hyun Yoo](https://www.facebook.com/fkkcloud) por la [Traducción al coreano (한국어).](?lan=kr)

Gracias a [Manoylov Andriy](https://twitter.com/ManoylovAC) por la [traducción al ucraniano (українська)](?lan=ua)

Gracias a [Karim Naaji](http://karim.naaji.fr/) por su contribución, su apoyo, su código y sus buenas ideas.

Gracias a todos los que creyeron en este proyecto y [contribuyeron con sus aportes](https://github.com/patriciogonzalezvivo/thebookofshaders/graphs/contributors) o donaciones.

## ¿Cómo conseguir los nuevos capítulos?

Suscribirse al newsletter o seguirnos en [Twitter](https://twitter.com/bookofshaders) / <a rel="me" href="https://mastodon.gamedev.place/@bookofshaders">Mastodon</a> / [Discord](shader.zone) 

<div id="fd-form-623359074e5181d777e479f9"></div>
<script>
  window.fd('form', {
    formId: '623359074e5181d777e479f9',
    containerEl: '#fd-form-623359074e5181d777e479f9'
  });
</script>
