Post

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着色器

处理器

  • fragment:决定每个像素的颜色和透明度
  • vertex:可以更新每个像素的位置

内置类型

  • 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.