Files
Decked-Out-Defense/Shaders/wireframe.gdshader

43 lines
904 B
Plaintext

shader_type spatial;
render_mode unshaded;
uniform vec4 modelColor : source_color;
uniform vec4 wireframeColor : source_color;
uniform float width : hint_range(0.0, 15.) = 1.;
uniform float modelOpacity : hint_range(0.0, 1.0) = 1.;
uniform bool filtered = false;
const vec3 vectors[3] = {
vec3(1.0, 0.0 ,0.0),
vec3(0.0, 1.0 ,0.0),
vec3(0.0, 0.0 ,1.0)
};
varying vec3 baryCoord;
void vertex()
{
baryCoord = vectors[VERTEX_ID % 3];
}
void fragment() {
vec3 dBaryCoordX = dFdx(baryCoord);
vec3 dBaryCoordY = dFdy(baryCoord);
vec3 dBaryCoord = sqrt(dBaryCoordX*dBaryCoordX + dBaryCoordY*dBaryCoordY);
vec3 remap = smoothstep(
vec3(0.0),
dBaryCoord * width,
baryCoord
);
remap = filtered ? remap : step(.5, remap);
float closestEdge = min(min(remap.x, remap.y), remap.z);
ALBEDO = mix(wireframeColor, modelColor, closestEdge).xyz;
ALPHA = mix(1., modelOpacity, closestEdge);
}