37Shader
这节用Shader制作Scout被射中后变白,一定间隔后恢复(他这里介绍的非常有限还是得啃godot的文档)
创建shader
- CavasItem -> Material -> Matreial -> New ShaderItemMaterial
- 点击展开下面出现
Shader
->New Shader -> 输入shader脚步名 - 编辑器中下方出现
Shader Editor
选择左边File
编辑 Shader脚步
一些规则
- uniform:暴露Shader脚本变量,GD中则可以通过
node.material.set_shader_parameter(uniform_var, value)
设置值
着色器类型:Canvas_Item
适用2D着色器,Spatial
适用3D着色器
处理器
内置类型
- vec4(R,G,B,A):分别代表三个向量红、绿、蓝、透明度
- vec3
内置属性/变量
- COLOR:来自顶点原语的颜色
- UV:当前像素的位置信息
COLOR = vec4(UV.x,1,1,UV.y) //R直接=UV.x,即是横轴值(越往右边越白),A=UV.y,即竖轴值(顶部透明,底部完全不透明)
- TEXTURE:访问纹理
1 2
vec4 color=texture(TEXTURE,UV);//访问纹理里某个位置的像素值 //可以通过color.r/g/b/a访问单独的RGBA
内置函数
- mix:混合两种颜色
1
2
vec4 cc=texture(TEXTURE, UV);
COLOR=mix(cc,vec4( vec3(1,1,1)/*RGB=1,white*/, cc.a)/*这个值所占的比例如第三个参数决定*/, progress);
虽然都是类型C语言但是Godot里的shader脚本并不是GLSL,godot最终才转译成GLSL
This post is licensed under CC BY 4.0 by the author.