Files
starruler-linux/data/shaders/source/galaxy_plane_ps.txt
T
2018-07-17 14:15:37 +02:00

82 lines
2.1 KiB
Plaintext

#define pi 3.141592653589793238462643383279
const float gridWidth = 120.0;
const float gridSize = 25000.0;
const float gridFadeDist = 300000000.0;
const float subGridWidth = 0.0;
const float subGridSize = 50.0;
const float subGridFadeDist = 0.0;
const float subsubGridWidth = 0.0;
const float subsubGridSize = 50.0;
const float subsubGridFadeDist = 0.0;
uniform float radius;
uniform float planeDist;
varying vec2 uv;
varying vec2 rcoords;
vec4 grid(float distance, float bordMult) {
if(distance >= 1.0)
return vec4(0, 0, 0, 0);
vec4 res;
res.rgb = gl_Color.rgb;
float baseAlpha = smoothstep(100.0, 200.0, planeDist) * 0.08;
vec2 absCoords = rcoords * radius;
vec2 gridPos = abs(mod(absCoords, gridSize));
gridPos = min(gridPos, gridSize - gridPos);
// Main grid alpha
if(planeDist < gridFadeDist) {
if(gridPos.x <= gridWidth * bordMult || gridPos.y <= gridWidth * bordMult) {
res.a = baseAlpha * 2.0;
return res;
}
if(planeDist < subGridFadeDist) {
vec2 subGridPos = abs(mod(absCoords, subGridSize));
subGridPos = min(subGridPos, subGridSize - subGridPos);
if(subGridPos.x <= subGridWidth * bordMult || subGridPos.y <= subGridWidth * bordMult) {
res.a = baseAlpha * 1.8;
return res;
}
if(planeDist < subsubGridFadeDist) {
vec2 subsubGridPos = abs(mod(absCoords, subsubGridSize));
subsubGridPos = min(subsubGridPos, subsubGridSize - subsubGridPos);
if(subsubGridPos.x <= subsubGridWidth * bordMult || subsubGridPos.y <= subsubGridWidth * bordMult) {
res.a = baseAlpha * 1.5;
return res;
}
}
}
}
res.a = 0.0;
return res;
}
void main() {
float distance = length(rcoords);
float bordMult = 1.0;
if(distance > 0.9)
discard;
vec4 color;
if(uv.x > 0.5 && abs(uv.y - 0.5) < 0.002)
color = vec4(1.0, 0.0, 0.0, 1.0);
else
color = grid(distance, bordMult);
color.a *= clamp((planeDist - 32000.0) / 60000.0, 0.0, 1.0);
color.a *= clamp(1.0 - (planeDist - 300000.0) / 60000.0, 0.0, 1.0);
if (color.a == 0.0)
discard;
gl_FragColor = color;
}