ShaderToy-00前言

大家好,老夫是呵呵king,今天我们来认识一下Shader学习和练习的一个利器——ShaderToy(https://www.shadertoy.com/)这是一个基于WebGL于网页端呈现的一个Shader试验场和交流平台。在这上有来自世界各地的Shader大神和爱好者公开自己编写的Shader源码和展示效果,喜欢图形编程和游戏编程的你一定不要错过啊。

老夫最初接触到ShaderToy是看了candycat写的教程,才开始慢慢了解和使用的。刚开始的时候被CG、HLSL、GLSL弄得投雾水,现在算是入门了,也和大家一起理理这些概念。

首先呢Shader并不是一种编程语言,Shader可以说是基于GPU编程的一类语言的统称。计算机最开始是被设计成执行弹道计算、密码破译等高强度、搞复杂性计算的自动化工具。这时的计算机的使用者多数为科学家,非常精通计算机,使用的界面也是命令行界面(CUI)。战争结束后,计算机普及开始普及,首要问题就是易用性,普通用户不可能有那么多的专业技能来操作命令行界面(CUI)因此图形界面(GUI)应运儿生。图形界面直观、方便一下子解决了易用性的难题,但是新的问题也随之产生,图形界面意味着大量并行的运算,而CPU擅长于复杂的流程控制与穿行计算。大量的数据经过相同或相似的算法得出计算结果,CPU经常因为无法同一时间得出结果,而出现画面撕裂等问题,GPU是(图形处理单元)便是擅长并行计算的运算单元,也同时发展起来。GPU刚开始流行起来的时候还不需要Shader编程,因为最初的GPU都是固定管道渲染,即可以理解为不可编程渲染,算法全都集成在硬件(显卡)或SDK(DirectX,OpenGL)中,随着技术的发展和图形渲染的需求不断升级,统一的集成算法已经无法满足用户的需求,Shader也走进了历史舞台。
OpenGLDirectX

CG、HLSL、GLSL这些也是老生常谈的标准之争(HLSL是DirectX的Shader语法,GLSL是OpenGLhader语法,CG是微软和英伟达共同开发的Shader语法,其实差别都不是很大。),还是基于量大图形库DirectX和OpenGL,由于DirectX和OpenGL很接近于底层,开发和学习起来很困难,建立于图形库之上的Shader一度被认为是神的领域,让凡人望而却步。而现在的许多工具如:Unity3D和本系列关注的ShaderToy都是很好的封装的图形库,仅留下关键的shader部分。而我们这些凡人也可以通过这些工具来学习Shader的技术。
WebGLnVIDIA

虽然说了这么多,吹了这么多老夫也不太懂得概念,但是用ShaderToy学习Shader真的是非常方便,学习了一段时间后,你就会发现,其实学的不是Shader语法或API,他妈的全是数学

呵呵

猜你喜欢

转载自blog.csdn.net/xdlmost/article/details/50425332
00