26 lines
975 B
Plaintext
26 lines
975 B
Plaintext
//This shader defines two circles - everything inside the inner circle will be darkened, while everything outside the outer circle
|
|
//will be full black. Between the inner and outer circle it LERPs from the inner darkness to full black.
|
|
|
|
light_mode unshaded;
|
|
|
|
const highp float darknessAlphaInner = 0.6;
|
|
const highp float innerCircleRadius = 40.0; //Note: this is in pixels
|
|
const highp float outerCircleRadius = 80.0;
|
|
|
|
void fragment() {
|
|
highp vec2 pixelSize = vec2(1.0/SCREEN_PIXEL_SIZE.x, 1.0/SCREEN_PIXEL_SIZE.y);
|
|
highp vec2 pixelCenter = pixelSize*0.5;
|
|
highp float distance = length(FRAGCOORD.xy - pixelCenter);
|
|
if(distance > outerCircleRadius){
|
|
COLOR = vec4(0.0, 0.0, 0.0, 1.0);
|
|
}
|
|
else if(distance < innerCircleRadius){
|
|
COLOR = vec4(0.0, 0.0, 0.0, darknessAlphaInner);
|
|
}
|
|
else{
|
|
highp float intensity = (distance-innerCircleRadius)/(outerCircleRadius-innerCircleRadius);
|
|
COLOR = vec4(0.0, 0.0, 0.0, (1.0-intensity)*darknessAlphaInner + intensity);
|
|
}
|
|
}
|
|
|