godot 随机地图3-shader language简介
godot shader是一个简化的glsl,完全依赖glsl,当然从头开始glsl难度不高,但是画时间。
直接从重点开始:
一、glsl是高度并行化的
它自带
for x{
for y {
func
}
}
的循环。
二、主要分两部分
顶点计算+顶点构成的几何图形里面把颜色填进去
所以glsl分为 vertex shader(顶点)和fragment shader(着色) ,两个文本文件。这两个文本需要传递的数据,需要声明。
vertex shader固定输出处理好的顶点,fragment shader会固定输出梳理好的色彩。
如果需要还可以设置特殊的几何shader,但是搞渲染得,基本上不会用。
三、数据传入
uniform 定义的参数可以和cpu互通
vbo:Vertex Buffer Object,阵列数据,顶点啊,角度啊,看你像怎么传输,他的传输类似虽然是一次传入一排,但是会通过分割,把数据分成几部分,一般情况使用struct的捆绑模式。
ebo:Element Buffer Object = ibo :index buffer object
上传的顶点如何排序,排成三角网
vao:Vertex Arrays Object,在cpu上留下一个分割好了的vbo的指针,因为上传到显存的vbo可以多种分割方式,分割后的数据就是要得留一个明信片,执行的时候找vao
一个vbo(顶点阵列),可以通过不同的ebo(排序),不同的分割方式(vao),玩出不同花样。
如果想快速入门shader language,就直接去取shadertoy模仿案例,因为他只是换了种方式的c语言。
在godot shader language,进行了很多简化,不需要魔法召唤gpu,也不需要在复杂的数据传入。如果有勇敢glsl就会发现,godot shader language做了很多简化。非常不推荐直接上godot shader language,不理解glsl的情况下学godot shader language,真的很难。