adding subnails
@ -0,0 +1 @@
|
||||
# Introduction
|
Before Width: | Height: | Size: 344 KiB After Width: | Height: | Size: 338 KiB |
After Width: | Height: | Size: 40 KiB |
@ -0,0 +1,2 @@
|
||||
# Getting started
|
||||
## What is a fragment shader?
|
@ -1,5 +1 @@
|
||||
## "Hello World!"
|
||||
|
||||
Usually the "Hello world!" example is the first step to learning a new language. In GPU-land rendering text is an overcomplicated task for a first step, instead we'll choose a bright welcoming color to shout our enthusiasm!
|
||||
|
||||
Read ["Hello World!"](/02/) to learn more.
|
||||
Usually the "Hello world!" example is the first step to learning a new language. In GPU-land rendering text is an overcomplicated task for a first step, instead we'll choose a bright welcoming color to shout our enthusiasm!
|
@ -0,0 +1 @@
|
||||
## Hello World
|
@ -1,9 +1,5 @@
|
||||
## Uniforms
|
||||
|
||||
Learn how to use Uniform variables. Uniform variables, or simply *uniforms* are the variables that carry information equally accessible from all of the threads of your shader. The [GSLS editor](http://editor.thebookofshaders.com/) has three uniforms set up for you.
|
||||
|
||||
Read [Uniforms](/03/) to learn more.
|
||||
|
||||
```glsl
|
||||
uniform vec2 u_resolution; // Canvas size (width,height)
|
||||
uniform vec2 u_mouse; // mouse position in screen pixels
|
@ -0,0 +1 @@
|
||||
## Uniforms
|
@ -0,0 +1 @@
|
||||
<div class="glslGallery" data="160319050916"></div>
|
@ -0,0 +1 @@
|
||||
## Running your shader
|
@ -1,5 +1 @@
|
||||
## Shaping functions
|
||||
|
||||
Shaping functions is fundamental technique that is recursively used throughout this book that let you control the variation of the value at will. Study how different functions of x are used to create different shapes and try making your own function.
|
||||
|
||||
Read [Shaping functions](/05/) to learn more.
|
@ -0,0 +1,2 @@
|
||||
# Algorithmic drawing
|
||||
## Shaping functions
|
After Width: | Height: | Size: 77 KiB |
After Width: | Height: | Size: 82 KiB |
After Width: | Height: | Size: 76 KiB |
@ -0,0 +1 @@
|
||||
<div class="glslGallery" data="160414041542,160414041933,160414041756"></div>
|
After Width: | Height: | Size: 92 KiB |
After Width: | Height: | Size: 111 KiB |
After Width: | Height: | Size: 110 KiB |
@ -1,6 +1,2 @@
|
||||
## Colors
|
||||
|
||||
Familiarize yourself with how to express colors in shaders. The examples cover how to mix colors and beautifully animate them over time as well as conversion between two different models(RGB and HSB).
|
||||
In GLSL, colors are simply just vectors, which means you can easily apply the concepts and techniques you learn here to other
|
||||
|
||||
Read [Colors](/06/) to learn more.
|
@ -0,0 +1 @@
|
||||
## Colors
|
After Width: | Height: | Size: 40 KiB |
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
@ -1,5 +1 @@
|
||||
## Shapes
|
||||
|
||||
Let's look at how to draw simple shapes in a parallel procedural way. In a nutshell, all you need to do is to determine if each pixel belongs to the shape you want to draw or not, and apply different colors accordingly. You can use coordinate system like a grid paper to draw rectangles and squares. We'll look at more advanced concept called distance field to draw more complex shapes.
|
||||
|
||||
Read [Shapes](/07/) to learn more.
|
@ -0,0 +1 @@
|
||||
## Shapes
|
After Width: | Height: | Size: 41 KiB |
After Width: | Height: | Size: 240 KiB |
After Width: | Height: | Size: 40 KiB |
@ -0,0 +1 @@
|
||||
<div class="glslGallery" data="160414041142,160414040957,160414040804"></div>
|
After Width: | Height: | Size: 43 KiB |
After Width: | Height: | Size: 40 KiB |
After Width: | Height: | Size: 139 KiB |
After Width: | Height: | Size: 54 KiB |
@ -1,6 +1,2 @@
|
||||
## Matrix
|
||||
|
||||
Matrix is a very powerful tool for manipulating vectors. By mastering how to use matrices, you can freely translate, scale and rotate shapes. Since the technique can be equally applied to anything expressed by vectors, we will look at many more advanced use of matrices later in this book.
|
||||
Matrices may look complex at a first glance, but you'll find it very handy and useful as you get used to the concept. Let's practice here and learn basics with simple examples.
|
||||
|
||||
Read [Matrix](/08/) to learn more.
|
@ -0,0 +1 @@
|
||||
## 2D Matrices
|
After Width: | Height: | Size: 47 KiB |
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 46 KiB |
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
After Width: | Height: | Size: 40 KiB |
After Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 581 KiB After Width: | Height: | Size: 581 KiB |
@ -1,5 +1 @@
|
||||
## Patterns
|
||||
|
||||
Repetitive patterns are perfect theme for computational sketching. Different from conventional way of drawing, shaders lets you draw everything parallelly at once. Instead of repeating the same procedure many times, you will wrap and repeat the "space". Sounds like Sci-Fi? Let's find out what it really means.
|
||||
|
||||
Read [Patterns](/09/) to learn more.
|
@ -0,0 +1 @@
|
||||
## Patterns
|
After Width: | Height: | Size: 40 KiB |
After Width: | Height: | Size: 64 KiB |
After Width: | Height: | Size: 56 KiB |
After Width: | Height: | Size: 86 KiB |
After Width: | Height: | Size: 44 KiB |
After Width: | Height: | Size: 42 KiB |
After Width: | Height: | Size: 42 KiB |
After Width: | Height: | Size: 282 KiB |
After Width: | Height: | Size: 58 KiB |
After Width: | Height: | Size: 40 KiB |
After Width: | Height: | Size: 66 KiB |
After Width: | Height: | Size: 54 KiB |
After Width: | Height: | Size: 67 KiB |
After Width: | Height: | Size: 72 KiB |
After Width: | Height: | Size: 199 KiB |
After Width: | Height: | Size: 147 KiB |
After Width: | Height: | Size: 52 KiB |
After Width: | Height: | Size: 75 KiB |
After Width: | Height: | Size: 86 KiB |
@ -1,5 +1 @@
|
||||
## Random
|
||||
|
||||
Life is boring if everything was predictable. Though nothing is truly random in computers, we can create pseudo-randomness that looks totally unpredictable using simple tricks to create more interesting patterns and behaviors.
|
||||
|
||||
Read [Random](/10/) to learn more.
|
@ -0,0 +1 @@
|
||||
# Generative designs
|
After Width: | Height: | Size: 40 KiB |
After Width: | Height: | Size: 42 KiB |
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
After Width: | Height: | Size: 41 KiB |
After Width: | Height: | Size: 42 KiB |
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 42 KiB |
After Width: | Height: | Size: 50 KiB |
After Width: | Height: | Size: 44 KiB |
After Width: | Height: | Size: 43 KiB |
After Width: | Height: | Size: 40 KiB |
After Width: | Height: | Size: 82 KiB |
After Width: | Height: | Size: 394 KiB |
After Width: | Height: | Size: 332 KiB |
After Width: | Height: | Size: 654 KiB |
After Width: | Height: | Size: 654 KiB |
After Width: | Height: | Size: 254 KiB |
After Width: | Height: | Size: 225 KiB |
After Width: | Height: | Size: 338 KiB |
@ -1,6 +1,2 @@
|
||||
## Noise
|
||||
|
||||
How can we create more natural looking textures like surface of the roads, rocks, trees and clouds? Noise function is the answer.
|
||||
Since Ken Perlin invented his first noise algorithm in 80s, the technique has been extensively used throughout computer graphics and simulations. Even if you have never heard of the name, it's not possible you have never seen it. Let's look step by step at how the function is built and works. We also cover more efficient version of the algorithm called simplex noise.
|
||||
|
||||
Read [Noise](/11/) to learn more.
|
@ -0,0 +1 @@
|
||||
## Noise
|
Before Width: | Height: | Size: 108 KiB After Width: | Height: | Size: 108 KiB |
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 46 KiB |
Before Width: | Height: | Size: 104 KiB After Width: | Height: | Size: 105 KiB |
After Width: | Height: | Size: 190 KiB |
After Width: | Height: | Size: 640 KiB |
After Width: | Height: | Size: 86 KiB |
Before Width: | Height: | Size: 280 KiB After Width: | Height: | Size: 370 KiB |