Godot Shader 03-2d 着色 canvas item

3d着色在这里(暂时学2d方面的,这里先忽略掉了, 有兴趣的可以去看一下):https://docs.godotengine.org/zh_CN/latest/tutorials/shading/shading_reference/spatial_shader.html

渲染模式

模式 说明
blend_mix 混合(默认)
blend_add 叠加
blend_sub 减去
blend_mul 乘法
blend_premul_alpha
blend_disabled 禁用blend
unshaded 只包含反射,不包含光照和阴影
skip_vertex_transform VERTEX / NORMAL等需要在vertex手动设置

vertex 内建函数

顶点数据,顶点坐标信息

shader_type canvas_item;
render_mode skip_vertex_transform;

void vertex() {

    VERTEX = (EXTRA_MATRIX * (WORLD_MATRIX * vec4(VERTEX, 0.0, 1.0))).xy;
}

默认不使用skip_vertex_transform,代码VERTEX = (EXTRA_MATRIX * (WORLD_MATRIX * vec4(VERTEX, 0.0, 1.0))).xy; 这个完全没有必要做

函数 说明
in mat WORLD_MATRIX 图像空间到视图空间的转换。
in mat4 EXTRA_MATRIX 额外的转变。
in mat4 PROJECTION_MATRIX 查看空间以剪切空间变换。
in float TIME 全球时间,以秒为单位。
in vec4 INSTANCE_CUSTOM 实例自定义数据。
in bool AT_LIGHT_PASS 如果光通过则为真。
inout vec2 VERTEX 顶点
in vec2 TEXTURE_PIXEL_SIZE 默认2D纹理的标准化像素大小。 对于纹理大小为64x32px的Sprite,TEXTURE_PIXEL_SIZE =vec2(1 / 64,1 / 32)
inout vec2 UV UV坐标
inout vec4 COLOR 顶点的颜色。
inout float POINT_SIZE 点绘图的点大小。

fragment 内建函数

//默认值
COLOR = texture(TEXTURE, UV); 
//法线贴图
NORMALMAP = texture(NORMAL_TEXTURE, UV).rgb;
函数 说明
in vec4 FRAGCOORD 片段坐标,像素调整。
inout vec3 NORMAL 通过NORMAL_TEXTURE得到的法线
out vec3 NORMALMAP 法线贴图
inout float NORMALMAP_DEPTH 用于缩放的法线贴图深度。
in vec2 UV 来自顶点功能的UV。
inout vec4 COLOR 色彩
in sampler2D TEXTURE 默认的2D纹理
in sampler2D NORMAL_TEXTURE 默认2D法线纹理。
in vec2 TEXTURE_PIXEL_SIZE 默认2D纹理的标准化像素大小。 对于纹理大小为64x32px的Sprite,TEXTURE_PIXEL_SIZE =vec2(1 / 64,1 / 32)
in vec2 SCREEN_UV 屏幕uv做吧, 与SCREEN_TEXTURE一起使用
in vec2 POINT_COORD 协调绘图点。
in float TIME 全球时间以秒为单位。
in bool AT_LIGHT_PASS 如果光通过则为真。
in sampler2D SCREEN_TEXTURE 屏幕纹理,mipmap包含高斯模糊版本。

light 内置函数

函数 说明
in vec4 FRAGCOORD 片段坐标,像素调整。
inout vec3 NORMAL 通过NORMAL_TEXTURE得到的法线
in vec2 UV 来自顶点功能的UV。
inout vec4 COLOR 色彩
in sampler2D TEXTURE 默认的2D纹理
in vec2 TEXTURE_PIXEL_SIZE 默认2D纹理的标准化像素大小。 对于纹理大小为64x32px的Sprite,TEXTURE_PIXEL_SIZE =vec2(1 / 64,1 / 32)
in vec2 SCREEN_UV 屏幕uv做吧, 与SCREEN_TEXTURE一起使用
in vec2 POINT_COORD 协调绘图点。
in float TIME 全球时间以秒为单位。
inout vec2 LIGHT_VEC 向量从光到片段,可以修改以改变阴影计算。
inout float LIGHT_HEIGHT 光高,只受法线影响
inout vec4 LIGHT_COLOR 光的颜色。
in vec2 LIGHT_UV 光线uv坐标。
out vec4 SHADOW_COLOR 阴影色
inout vec4 LIGHT 通过光贴图和输出色得到值

你可能感兴趣的:(Godot Shader 03-2d 着色 canvas item)