thebookofshaders.com Open in urlscan Pro
52.35.24.141  Public Scan

Submitted URL: http://thebookofshaders.com/
Effective URL: https://thebookofshaders.com/
Submission: On April 11 via api from US — Scanned from DE

Form analysis 1 forms found in the DOM

POST https://form.flodesk.com/forms/623359074e5181d777e479f9/submit

<form class="ff-623359074e5181d777e479f9__form" action="https://form.flodesk.com/forms/623359074e5181d777e479f9/submit" method="post" data-ff-el="form" novalidate="">
  <div class="ff-623359074e5181d777e479f9__title">
    <div>Subscribe</div>
  </div>
  <div class="ff-623359074e5181d777e479f9__subtitle">
    <div>
      <div data-paragraph="true"><span style="font-family:Montserrat, sans-serif;">Sign up with your email address to receive news and updates.</span></div>
    </div>
  </div>
  <div class="ff-623359074e5181d777e479f9__content fd-form-content" data-ff-el="content">
    <div class="ff-623359074e5181d777e479f9__fields" data-ff-el="fields">
      <input type="hidden" name="csrf" value="260c30f96cbb19bd85388ff1d68af633284fe0e1645c9abc47b6857a93e656cfa969995c3c0109a630230cf4639135df5e551527162f31f25cddc807d0731c92">
      <div class="ff-623359074e5181d777e479f9__field fd-form-group" style="display: none">
        <input id="ff-623359074e5181d777e479f9-E0NM3WjUwMU5" class="ff-623359074e5181d777e479f9__control fd-form-control" type="text" maxlength="255" name="E0NM3WjUwMU5" placeholder="E0NM3WjUwMU5" data-ff-tab="E0NM3WjUwMU5::V1Nd5Ny0N0Z">
        <label for="ff-623359074e5181d777e479f9-E0NM3WjUwMU5" class="ff-623359074e5181d777e479f9__label fd-form-label"><span style="display: nonee">F</span><span style="display: none;display: none">R</span><span
            style="dislpay: none;dislpay: none;display: nonee">irst name</span></label>
      </div>
      <div class="ff-623359074e5181d777e479f9__field fd-form-group" style="rigth: -100000px;display: nonee">
        <input id="ff-623359074e5181d777e479f9-MU50NEM3WjUw" class="ff-623359074e5181d777e479f9__control fd-form-control" type="text" maxlength="255" name="MU50NEM3WjUw" placeholder="MU50NEM3WjUw" data-ff-tab="MU50NEM3WjUw::N0Z1NVd5Ny0">
        <label for="ff-623359074e5181d777e479f9-MU50NEM3WjUw" class="ff-623359074e5181d777e479f9__label fd-form-label"><span style="letf: -100000px;letf: -100000px;display: nonee">First n</span><span
            style="letf: -100000px;right: -100000px;display: none">C</span><span style="display: nonee;display: nonee">ame</span></label>
      </div>
      <div class="ff-623359074e5181d777e479f9__field fd-form-group" style="display: none">
        <input id="ff-623359074e5181d777e479f9-U50NEM3WjUwM" class="ff-623359074e5181d777e479f9__control fd-form-control" type="text" maxlength="255" name="U50NEM3WjUwM" placeholder="U50NEM3WjUwM" data-ff-tab="U50NEM3WjUwM::0Z1NVd5Ny0N">
        <label for="ff-623359074e5181d777e479f9-U50NEM3WjUwM" class="ff-623359074e5181d777e479f9__label fd-form-label"><span style="dislpay: none;display: nonee">Fir</span><span style="display: none">R</span><span
            style="display: nonee;rigth: -100000px;display: nonee">st name</span></label>
      </div>
      <div class="ff-623359074e5181d777e479f9__field fd-form-group" style="display: nonee;right: -100000px;display: none">
        <input id="ff-623359074e5181d777e479f9-50NEM3WjUwMU" class="ff-623359074e5181d777e479f9__control fd-form-control" type="text" maxlength="255" name="50NEM3WjUwMU" placeholder="50NEM3WjUwMU" data-ff-tab="50NEM3WjUwMU::Z1NVd5Ny0N0">
        <label for="ff-623359074e5181d777e479f9-50NEM3WjUwMU" class="ff-623359074e5181d777e479f9__label fd-form-label"><span style="dislpay: none;display: nonee">First</span><span style="dislpay: none;display: none">H</span><span
            style="dislpay: none;display: nonee"> name</span></label>
      </div>
      <div class="ff-623359074e5181d777e479f9__field fd-form-group" style="display: nonee;display: none">
        <input id="ff-623359074e5181d777e479f9-0Z1NVd5Ny0N" class="ff-623359074e5181d777e479f9__control fd-form-control" type="text" maxlength="255" name="0Z1NVd5Ny0N" placeholder="0Z1NVd5Ny0N" data-ff-tab="0Z1NVd5Ny0N:U50NEM3WjUwM:FJjWXUM">
        <label for="ff-623359074e5181d777e479f9-0Z1NVd5Ny0N" class="ff-623359074e5181d777e479f9__label fd-form-label"><span style="dislpay: none;display: nonee">Las</span><span style="display: none">t</span><span style="display: nonee">t
            name</span></label>
      </div>
      <div class="ff-623359074e5181d777e479f9__field fd-form-group" style="display: none">
        <input id="ff-623359074e5181d777e479f9-Z1NVd5Ny0N0" class="ff-623359074e5181d777e479f9__control fd-form-control" type="text" maxlength="255" name="Z1NVd5Ny0N0" placeholder="Z1NVd5Ny0N0" data-ff-tab="Z1NVd5Ny0N0:50NEM3WjUwMU:JjWXUMF">
        <label for="ff-623359074e5181d777e479f9-Z1NVd5Ny0N0" class="ff-623359074e5181d777e479f9__label fd-form-label"><span style="rigth: -100000px;letf: -100000px;display: nonee">La</span><span style="display: none">f</span><span
            style="dislpay: none;rigth: -100000px;display: nonee">st name</span></label>
      </div>
      <div class="ff-623359074e5181d777e479f9__field fd-form-group" style="display: nonee;rigth: -100000px;display: none">
        <input id="ff-623359074e5181d777e479f9-V1Nd5Ny0N0Z" class="ff-623359074e5181d777e479f9__control fd-form-control" type="text" maxlength="255" name="V1Nd5Ny0N0Z" placeholder="V1Nd5Ny0N0Z" data-ff-tab="V1Nd5Ny0N0Z:E0NM3WjUwMU5:XjWUMFJ">
        <label for="ff-623359074e5181d777e479f9-V1Nd5Ny0N0Z" class="ff-623359074e5181d777e479f9__label fd-form-label"><span style="display: nonee">Last</span><span style="letf: -100000px;display: none">P</span><span style="display: nonee">
            name</span></label>
      </div>
      <div class="ff-623359074e5181d777e479f9__field fd-form-group" style="dislpay: none;display: nonee">
        <input id="ff-623359074e5181d777e479f9-N0Z1NVd5Ny0" class="ff-623359074e5181d777e479f9__control fd-form-control" type="text" maxlength="255" name="N0Z1NVd5Ny0" placeholder="N0Z1NVd5Ny0" data-ff-tab="N0Z1NVd5Ny0:MU50NEM3WjUw:MFJjWXU">
        <label for="ff-623359074e5181d777e479f9-N0Z1NVd5Ny0" class="ff-623359074e5181d777e479f9__label fd-form-label"><span style="display: nonee">Last na</span><span style="display: none">M</span><span style="display: nonee">me</span></label>
      </div>
      <div class="ff-623359074e5181d777e479f9__field fd-form-group" style="display: none">
        <input id="ff-623359074e5181d777e479f9-JjWXUMF" class="ff-623359074e5181d777e479f9__control fd-form-control" type="text" maxlength="255" name="JjWXUMF" placeholder="JjWXUMF" data-ff-tab="JjWXUMF:Z1NVd5Ny0N0:submit">
        <label for="ff-623359074e5181d777e479f9-JjWXUMF" class="ff-623359074e5181d777e479f9__label fd-form-label"><span style="letf: -100000px;display: nonee">Email</span><span style="display: none">O</span><span
            style="display: nonee;display: nonee"> address</span></label>
      </div>
      <div class="ff-623359074e5181d777e479f9__field fd-form-group" style="letf: -100000px;display: none">
        <input id="ff-623359074e5181d777e479f9-XjWUMFJ" class="ff-623359074e5181d777e479f9__control fd-form-control" type="text" maxlength="255" name="XjWUMFJ" placeholder="XjWUMFJ" data-ff-tab="XjWUMFJ:V1Nd5Ny0N0Z:submit">
        <label for="ff-623359074e5181d777e479f9-XjWUMFJ" class="ff-623359074e5181d777e479f9__label fd-form-label"><span style="display: nonee;display: nonee">Email addres</span><span
            style="right: -100000px;rigth: -100000px;display: none">Z</span><span style="rigth: -100000px;rigth: -100000px;display: nonee">s</span></label>
      </div>
      <div class="ff-623359074e5181d777e479f9__field fd-form-group" style="display: none">
        <input id="ff-623359074e5181d777e479f9-FJjWXUM" class="ff-623359074e5181d777e479f9__control fd-form-control" type="text" maxlength="255" name="FJjWXUM" placeholder="FJjWXUM" data-ff-tab="FJjWXUM:0Z1NVd5Ny0N:submit">
        <label for="ff-623359074e5181d777e479f9-FJjWXUM" class="ff-623359074e5181d777e479f9__label fd-form-label"><span style="display: nonee">Email </span><span style="display: none">D</span><span
            style="dislpay: none;display: nonee;display: nonee">address</span></label>
      </div>
      <div class="ff-623359074e5181d777e479f9__field fd-form-group" style="display: nonee">
        <input id="ff-623359074e5181d777e479f9-MFJjWXU" class="ff-623359074e5181d777e479f9__control fd-form-control" type="text" maxlength="255" name="MFJjWXU" placeholder="MFJjWXU" data-ff-tab="MFJjWXU:N0Z1NVd5Ny0:submit">
        <label for="ff-623359074e5181d777e479f9-MFJjWXU" class="ff-623359074e5181d777e479f9__label fd-form-label"><span style="letf: -100000px;display: nonee">Ema</span><span style="display: none">z</span><span style="display: nonee">il
            address</span></label>
      </div>
    </div>
    <div class="ff-623359074e5181d777e479f9__footer" data-ff-el="footer">
      <button type="submit" class="ff-623359074e5181d777e479f9__button fd-btn" data-ff-el="submit" data-ff-tab="submit">
        <span>Subscribe</span>
      </button>
    </div>
  </div>
  <div class="ff-623359074e5181d777e479f9__success fd-form-success" data-ff-el="success">
    <div data-paragraph="true">Thank you for subscribing!</div>
  </div>
  <div class="ff-623359074e5181d777e479f9__error fd-form-error" data-ff-el="error"></div>
</form>

Text Content

Українська - Bahasa Indonesia - Tiếng Việt - 日本語 - 中文版 - 한국어 - Español -
Portugues - Français - Italiano - Deutsch - Русский - Polski - English

Turn off the lights


THE BOOK OF SHADERS

by Patricio Gonzalez Vivo and Jen Lowe

This is a gentle step-by-step guide through the abstract and complex universe of
Fragment Shaders.




CONTENTS

 * About this book

 * Getting started
   
   * What is a shader?
   * “Hello world!”
   * Uniforms
   * Running your shader

 * Algorithmic drawing
   
   * Shaping functions
   * Colors
   * Shapes
   * Matrices
   * Patterns

 * Generative designs
   
   * Random
   * Noise
   * Cellular noise
   * Fractional brownian motion
   * Fractals

 * Image processing
   
   * Textures
   * Image operations
   * Kernel convolutions
   * Filters
   * Others effects

 * Simulation
   
   * Pingpong
   * Conway
   * Ripples
   * Water color
   * Reaction diffusion

 * 3D graphics
   
   * Lights
   * Normal-maps
   * Bump-maps
   * Ray marching
   * Environmental-maps (spherical and cube)
   * Reflect and refract

 * Appendix: Other ways to use this book
   
   * How can I navigate this book offline?
   * How to run the examples on a Raspberry Pi?
   * How to print this book?
   * How can I collaborate?
   * An introduction for those coming from JS by Nicolas Barradeau

 * Examples Gallery

 * Glossary


ABOUT THE AUTHORS

Patricio Gonzalez Vivo (1982, Buenos Aires, Argentina) is a New York based
artist and developer. He explores interstitial spaces between organic and
synthetic, analog and digital, individual and collective. In his work he uses
code as an expressive language with the intention of developing a better
together.

Patricio studied and practiced psychotherapy and expressive art therapy. He
holds an MFA in Design & Technology from Parsons The New School, where he now
teaches. Currently he works as a Graphic Engineer at Mapzen making openSource
mapping tools.

WebSite - Twitter - GitHub - Vimeo - Flickr

Jen Lowe is an independent data scientist and data communicator at Datatelling
where she brings together people + numbers + words. She teaches in SVA's Design
for Social Innovation program, cofounded the School for Poetic Computation,
taught Math for Artists at NYU ITP, researched at the Spatial Information Design
Lab at Columbia University, and contributed ideas at the White House Office of
Science and Technology Policy. She's spoken at SXSW and Eyeo. Her work has been
covered by The New York Times and Fast Company. Her research, writing, and
speaking explore the promises and implications of data and technology in
society. She has a B.S. in Applied Math and a Master's in Information Science.
Often oppositional, she's always on the side of love.

WebSite - Twitter - GitHub


ACKNOWLEDGEMENTS

Thanks Scott Murray for the inspiration and advice.

Thanks Kenichi Yoneda (Kynd), Nicolas Barradeau, Karim Naaji for contributing
with support, good ideas and code.

Thanks Kenichi Yoneda (Kynd) and Sawako for the Japanese translation (日本語訳)

Thanks Tong Li and Yi Zhang for the Chinese translation (中文版)

Thanks Jae Hyun Yoo and June Kim for the Korean translation (한국어)

Thanks Nahuel Coppero (Necsoft) for the Spanish translation (español)

Thanks Raphaela Protásio and Lucas Mendonça for the Portuguese translation
(portugues)

Thanks Nicolas Barradeau and Karim Naaji for the French translation (français)

Thanks Andrea Rovescalli for the Italian translation (italiano)

Thanks Michael Tischer for the German translation (deutsch)

Thanks Sergey Karchevsky for the Russian translation (russian)

Thanks Vu Phuong Hoang for the Vietnamese translation (Tiếng Việt)

Thanks Wojciech Pachowiak for the Polish translation (polski)

Thanks Manoylov Andriy for the Ukrainian translation (український переклад)

Thanks Andy Stanton for fixing and improving the pdf/epub export pipeline

Thanks to everyone who has believed in this project and contributed with fixes
or donations.


GET NEW CHAPTERS

Sign up for the news letter or follow it on Twitter / Mastodon / Discord

Subscribe
Sign up with your email address to receive news and updates.
FRirst name
First nCame
FirRst name
FirstH name
Lastt name
Lafst name
LastP name
Last naMme
EmailO address
Email addresZs
Email Daddress
Emazil address
Subscribe
Thank you for subscribing!



LICENSE

Copyright (c) Patricio Gonzalez Vivo, 2015 - http://patriciogonzalezvivo.com/
All rights reserved.

Copyright 2015 Patricio Gonzalez Vivo