mirror of
https://git.kittycat.homes/zoe/codename-routes.git
synced 2024-08-15 03:18:26 +00:00
steal shader hehe (i still need to see if this actually works)
This commit is contained in:
parent
8b29b54567
commit
797aab3443
1 changed files with 68 additions and 1 deletions
|
@ -1,10 +1,77 @@
|
|||
[gd_scene load_steps=3 format=2]
|
||||
[gd_scene load_steps=5 format=2]
|
||||
|
||||
[ext_resource path="res://world/terrain/terrain.tres" type="TileSet" id=1]
|
||||
[ext_resource path="res://world/Tilemap.gd" type="Script" id=2]
|
||||
|
||||
[sub_resource type="Shader" id=1]
|
||||
code = "// My custom shader for implementing dithered alpha
|
||||
shader_type spatial;
|
||||
render_mode blend_mix,depth_draw_opaque,cull_disabled,diffuse_burley,specular_schlick_ggx;
|
||||
|
||||
// Texture maps
|
||||
uniform sampler2D texture_albedo : hint_albedo;
|
||||
uniform sampler2D texture_masks : hint_white;
|
||||
uniform sampler2D texture_normal : hint_normal;
|
||||
|
||||
// Parameters
|
||||
uniform vec4 albedo : hint_color;
|
||||
uniform float specular = 0.5;
|
||||
uniform float metallic = 0.0;
|
||||
uniform float roughness : hint_range(0,1) = 0.5;
|
||||
uniform float normal_strength : hint_range(0,2) = 1.0;
|
||||
|
||||
void fragment() {
|
||||
vec4 albedo_tex = texture(texture_albedo, UV);
|
||||
vec4 masks_tex = texture(texture_masks, UV);
|
||||
float alpha = albedo_tex.a;
|
||||
|
||||
ALBEDO = albedo.rgb * albedo_tex.rgb;
|
||||
METALLIC = metallic * masks_tex.r;
|
||||
ROUGHNESS = roughness * masks_tex.g;
|
||||
NORMALMAP = texture(texture_normal, UV).rgb;
|
||||
NORMALMAP_DEPTH = normal_strength;
|
||||
|
||||
// Fancy dithered alpha stuff
|
||||
float opacity = albedo_tex.a;
|
||||
int x = int(FRAGCOORD.x) % 4;
|
||||
int y = int(FRAGCOORD.y) % 4;
|
||||
int index = x + y * 4;
|
||||
float limit = 0.0;
|
||||
|
||||
if (x < 8) {
|
||||
if (index == 0) limit = 0.0625;
|
||||
if (index == 1) limit = 0.5625;
|
||||
if (index == 2) limit = 0.1875;
|
||||
if (index == 3) limit = 0.6875;
|
||||
if (index == 4) limit = 0.8125;
|
||||
if (index == 5) limit = 0.3125;
|
||||
if (index == 6) limit = 0.9375;
|
||||
if (index == 7) limit = 0.4375;
|
||||
if (index == 8) limit = 0.25;
|
||||
if (index == 9) limit = 0.75;
|
||||
if (index == 10) limit = 0.125;
|
||||
if (index == 11) limit = 0.625;
|
||||
if (index == 12) limit = 1.0;
|
||||
if (index == 13) limit = 0.5;
|
||||
if (index == 14) limit = 0.875;
|
||||
if (index == 15) limit = 0.375;
|
||||
}
|
||||
// Is this pixel below the opacity limit? Skip drawing it
|
||||
if (opacity < limit)
|
||||
discard;
|
||||
}"
|
||||
|
||||
[sub_resource type="ShaderMaterial" id=2]
|
||||
shader = SubResource( 1 )
|
||||
shader_param/albedo = null
|
||||
shader_param/specular = 0.5
|
||||
shader_param/metallic = 0.0
|
||||
shader_param/roughness = 0.5
|
||||
shader_param/normal_strength = 1.0
|
||||
|
||||
[node name="Tilemap" type="TileMap"]
|
||||
process_priority = 124
|
||||
material = SubResource( 2 )
|
||||
position = Vector2( -2, 0 )
|
||||
mode = 1
|
||||
tile_set = ExtResource( 1 )
|
||||
|
|
Loading…
Reference in a new issue