日积月累Shader - 01 了解

提示

教程例子都可以到下面网址进行运行,不需要另外安装软件环境:
官方提供在线编写shader工具:https://thebookofshaders.com/edit.php
glslsandbox网站:http://glslsandbox.com/
shadertoy网站:https://www.shadertoy.com/

作者网站

https://thebookofshaders.com
源码托管:
https://github.com/patriciogonzalezvivo/thebookofshaders
教程只提及最基础的图形以前的基础教学,浅显易懂

运行方式

CPU绘制需要对每个像素进行单独处理,分辨率 800x600下,一共480000个像素,每秒30帧,一秒钟需要处理14400000次计算

GPU绘制是对所有的像素并行进行像素处理,所以是一次性完成任务。 并行的处理器越多,可以处理的数据流就越大。另一个 GPU 的特点是数学函数可通过硬件加速。

GLSL是openGL Shading Language简称,是opengl着色语言。

为什么shader不好学

GPU 的强大的架构设计也有其限制与不足。

优点 并行执行,数学运算硬件加速
缺点 每个线程的状态和结果不可能提供给其他线程,你也控制不了它到底在渲染的是按钮还是天空

为了能使许多管线并行运行,每一个线程必须与其他的相独立。我们称这些线程对于其他线程在进行的运算是“盲视”的。这个限制就会使得所有数据必须以相同的方向流动。所以就不可能检查其他线程的输出结果,修改输入的数据,或者把一个线程的输出结果输入给另一个线程。
并且 GPU 会让所有并行的微处理器(管道们)一直处在忙碌状态;只要它们一有空闲就会接到新的信息。一个线程不可能知道它前一刻在做什么。它可能是在画操作系统界面上的一个按钮,然后渲染了游戏中的一部分天空,然后显示了一封 email 中的一些文字。每个线程不仅是“盲视”的,而且还是“无记忆”的。同时,它要求编写一个通用的规则,依据像素的不同位置依次输出不同的结果。

关于shader开发

它不同于以往的顺序/线性逻辑,更多的考虑到对整体的控制能力,以及对数学/几何/矩阵的理解,这些都是不可或缺的,希望你会在接下来的学习能丰富你的知识。
在接下来的章节中,我们会一步一步地,由浅入深地学习着色语言。

你可能感兴趣的:(日积月累Shader - 01 了解)