123456789101112131415161718192021222324252627282930 |
- shader_type canvas_item;
- void fragment() {
- float vrs = texture(TEXTURE, UV).r * 255.0;
- // Map valid entries to human-visible colors.
- // This is only used if using the red channel colors between 0.0/255 and 10.0/255,
- // rather than relying on Godot to aliases the output colors below to variable shading rates.
- //
- // `vrs_texture.png` in this project already uses the aliased colors for convenience,
- // but `vrs_texture_original.png` does not.
- // The output shading rate from those two textures is identical.
- if (vrs == 0.0) { // 1x1
- COLOR = vec4(0.0, 0.0, 0.0, 1.0);
- } else if (vrs == 1.0) { // 1x2
- COLOR = vec4(0.0, 0.5, 0.0, 1.0);
- } else if (vrs == 4.0) { // 2x1
- COLOR = vec4(0.5, 0.0, 0.0, 1.0);
- } else if (vrs == 5.0) { // 2x2
- COLOR = vec4(0.5, 0.5, 0.0, 1.0);
- } else if (vrs == 6.0) { // 2x4
- COLOR = vec4(0.5, 1.0, 0.0, 1.0);
- } else if (vrs == 9.0) { // 4x2
- COLOR = vec4(1.0, 0.5, 0.0, 1.0);
- } else if (vrs == 10.0) { // 4x4
- COLOR = vec4(1.0, 1.0, 0.0, 1.0);
- } else {
- COLOR = vec4(1.0, 0.5, 1.0, 1.0);
- }
- }
|