着色器之书09 Patterns 图案因为着色器按一个个像素执行,那么无论你重复一个图形多少次,计算的数量仍然是个常数。 本章中我们将综合我们目前所学的并应用在画布上。和前几章一样,我们的策略依然基于乘以空间坐标(0到1之间),这样我们的画的在0到1之间的图形就会重复地形成网格。 “网格提供一种基于人的直觉发明事物的框架,并且可以颠覆。自然的混沌肌理提供一种对比和秩序的迹象。从早期罗马浴场里的陶瓷图案到几何 2020-09-02 未分类 #着色器之书
着色器之书08 2D Matrices 二维矩阵 平移之前的章节我们学习了如何制作一些图形 - 而如何移动它们的技巧则是借助移动它们自身的参考坐标系。我们只需要给 st 变量加上一个包含每个片段的位置的向量。这样就移动了整个坐标系。 还是画着比较更容易解释,如上图所示: 取消下面代码中第35行的注释,看下坐标空间是如何平移的。 现在尝试下下面的练习: 结合 u_ 2020-09-02 未分类 #着色器之书
着色器之书07 形状 终于!我们一直学习的技能就等着这一刻!你已经学习过GLSL的大部分基础,类型和函数。你一遍又一遍的练习你的造型方程。是时候把他们整合起来了。你就是为了这个挑战而来的!在这一章里,你会学习到如何以一种并行处理方式来画简单的图形。 长方形想象我们有张数学课上使用的方格纸,而我们的作业是画一个正方形。纸的大小是10 x 10而正方形应该是8 x 8。你会怎么做? 你是不是会涂满除了第一行第一列和 2020-09-02 未分类 #着色器之书
着色器之书06 颜色 我们目前为止还未涉及到GLSL的向量类型。在我们深入向量之前,学习更多关于变量和色彩主题是一个了解向量类型的好方法。 若你熟悉面向对象的编程范式(或者说编程思维模式),你一定注意到我们以一种类C的 struct的方式访问向量数据的内部分量。 1234vec3 red = vec3(1.0,0.0,0.0);red.x = 1.0;red.y = 0.0;red.z = 0.0; 以x,y,z 2020-09-02 未分类 #着色器之书
着色器之书05 算法绘画造型函数这一章应该叫做宫城先生的粉刷课(来自电影龙威小子的经典桥段)。之前我们把规范化后的 x,y 坐标映射(map)到了红色和绿色通道。本质上说我们是建造了这样一个函数:输入一个二维向量(x,y),然后返回一个四维向量(r,g,b,a)。但在我们跨维度转换数据之前,我们先从更加…更加简单的开始。我们来建一个只有一维变量的函数。你花越多的时间和精力在这上面,你的 shader 功夫就越厉害 2020-09-02 未分类 #着色器之书
着色器之书04 运行你的 shader现在你可能跃跃欲试,想在你熟悉的平台上小试牛刀了。接下来会有一些比较流行的平台的示例代码,展示如何在这些平台上配置 shader。(在这个 github 仓库 中有本章的三种平台的示例代码) 注释 1:如果你不想用这些平台来运行 shader,且你想在浏览器外使用 shader,你可以下载glslViewer。这个 MacOS+树莓派程序直接在终端运行,并且是为本书的例子量身 2020-08-28 未分类 #着色器之书
着色器之书03 Uniforms现在我们知道了 GPU 如何处理并行线程,每个线程负责给完整图像的一部分配置颜色。尽管每个线程和其他线程之间不能有数据交换,但我们能从 CPU 给每个线程输入数据。因为显卡的架构,所有线程的输入值必须统一(uniform),而且必须设为只读。也就是说,每条线程接收相同的数据,并且是不可改变的数据。 这些输入值叫做 uniform (统一值),它们的数据类型通常为:float, ve 2020-08-28 未分类 #着色器之书
着色器之书02 开始什么是 Fragment Shader(片段着色器)?在之前的章节我们把 shaders 和古腾堡印刷术相提并论。为什么这样类比呢?更重要的是,什么是 shader? 如果你曾经有用计算机绘图的经验,你就知道在这个过程中你需要画一个圆,然后一个长方形,一条线,一些三角形……直到画出你想要的图像。这个过程很像用手写一封信或一本书 —— 都是一系列的指令,需要你一件一件完成。 Shaders 也 2020-08-28 未分类 #着色器之书
着色器之书01 关于这本书引言 上面两幅图是由不同的方式制成的。第一张是梵高一层一层徒手画出来的,需要花费些时间。第二张则是用 4 个像素矩阵分秒钟生成的:一个青色,一个品红,一个黄色,和一个黑色矩阵。关键的区别在于第二张图是用非序列方式实现的(即不是一步一步实现,而是多个同时进行)。 这本书是关于这个革命性的计算机技术,片段着色器(fragment shaders),它将数字生成的图 2020-08-27 未分类 #着色器之书
着色器之书00 The Book of Shadersby Patricio Gonzalez Vivo 这是一本关于 Fragment Shaders(片段着色器)的入门指南,它将一步一步地带你领略其中的纷繁与抽象。 关于翻译这本书是 Patricio 的 the Book of Shaders 的中文翻译。我们希望借此将 Shader 这个有趣有益的工具介绍给更多国人。能力所限,不免 2020-08-27 未分类 #着色器之书