Files
GameJam2023/Scenes/Characters/P2Megami2.gdshader
2023-09-04 23:56:16 -07:00

43 lines
1.4 KiB
Plaintext

shader_type spatial;
// Simplified Godot spatial shader uniforms and settings:
render_mode blend_mix,depth_draw_opaque,cull_back,diffuse_burley,specular_schlick_ggx;
uniform vec4 albedo : source_color;
uniform float specular;
uniform float metallic;
uniform float roughness : hint_range(0,1);
uniform vec3 uv1_scale;
uniform vec3 uv1_offset;
// The texture to use as a color mask.
// For these examples, it will be the ColorMask viewport texture.
uniform sampler2D mask_texture : hint_default_black;
// Godot generated code:
// It scales and offsets the UV vector by the inputted uniforms.
void vertex() {
UV=UV*uv1_scale.xy+uv1_offset.xy;
}
void fragment() {
// Simplified Godot spatial shader code:
vec2 base_uv = UV;
METALLIC = metallic;
ROUGHNESS = roughness;
SPECULAR = specular;
// Everything below this line is the color masking code!
//
// First, get the pixel from the mask texture at the screen UV position. This will give the pixel at this fragment position
// relative to the screen, and since the ColorMask viewport is synced with the main screen/viewport, we can use this to get
// the pixel at the correct position in the ColorMask viewport.
vec4 mask_pixel = texture(mask_texture, SCREEN_UV);
// Because we know the ColorMask is going to be black/white, we can simply check if the pixel returned is over 0.9.
// If it is, then change the output ALBEDO color to red.
if (mask_pixel.r >= 0.9)
{
ALBEDO = vec3(1,0,0);
}
}