What are you searching for?

Adaptive Outline

Adaptive Outline

the outline lightens and darkens

download 542 Downloads · favorite 2 Followers · Updated 1 month ago
Cartoon Iris Optifine Potato Vanilla-like 1.16 1.16.1 1.16.2 1.16.3 1.16.4 +30 more

Versions

inventory_2
1

1 · 1 month ago · 7.99 KB

Release download
Iris Optifine 1.16 1.16.1 1.16.2

Gallery

About

This is a vanilla shader with a stroke.

The stroke brightens the light areas and darkens the dark areas. outline шейдер изменём только в final.fsh

#version 330 compatibility

uniform sampler2D colortex0; 
uniform sampler2D depthtex0; 

in vec2 texcoord;
layout(location = 0) out vec4 color;

void main() {
    vec2 texel = 1.0 / vec2(textureSize(colortex0, 0));
    vec4 scene = texture(colortex0, texcoord);
    
    float d_center = 1.0 - textureLod(depthtex0, texcoord, 0.0).r;
    
    vec2 offsets[2] = vec2[](
        vec2(texel.x, 0),
        vec2(texel.x * 3.0, 0)
    );
    
    float gradients[4];
    
    for(int i = 0; i < 2; i++) {
        float d_right = 1.0 - textureLod(depthtex0, texcoord + offsets[i], 0.0).r;
        float d_left  = 1.0 - textureLod(depthtex0, texcoord - offsets[i], 0.0).r;
        
        gradients[i] = abs(d_right - d_left) / (offsets[i].x * 2.0);
        
        vec2 vertical_offset = vec2(0, offsets[i].x);
        float d_up    = 1.0 - textureLod(depthtex0, texcoord + vertical_offset, 0.0).r;
        float d_down  = 1.0 - textureLod(depthtex0, texcoord - vertical_offset, 0.0).r;
        
        gradients[i + 2] = abs(d_up - d_down) / (vertical_offset.y * 2.0);
    }
    
    float gradient_ratio_h = gradients[0] / (gradients[1] + 0.0001);
    float gradient_ratio_v = gradients[2] / (gradients[3] + 0.0001);
    
    bool is_real_edge_h = gradient_ratio_h > 2.0;
    bool is_real_edge_v = gradient_ratio_v > 2.0;
    
    float edge = 0.0;
    
    if(is_real_edge_h || is_real_edge_v) {
        float max_gradient = max(gradients[0], gradients[2]);
        edge = max_gradient * 500.0;
    }
    
    float depth_precision = 0.001 + d_center * 0.01;
    if(edge < depth_precision * 100.0) {
        edge = 0.0;
    }
    
    float threshold = 0.15;
    
    if(edge > threshold && (is_real_edge_h || is_real_edge_v)) {
        float edge_strength = clamp((edge - threshold) * 2.0, 0.0, 1.0);
        
        vec4 color_up = texture(colortex0, texcoord + vec2(0, texel.y));
        vec4 color_down = texture(colortex0, texcoord - vec2(0, texel.y));
        vec4 color_left = texture(colortex0, texcoord - vec2(texel.x, 0));
        vec4 color_right = texture(colortex0, texcoord + vec2(texel.x, 0));

        vec4 avg_color = (color_up + color_down + color_left + color_right) * 0.25;

        float neighbor_brightness = dot(avg_color.rgb, vec3(0.299, 0.587, 0.114));

        float brightness_factor;
        
        if(neighbor_brightness > 0.35) { // here we change the change threshold
            brightness_factor = 1.0 + edge_strength * 0.2; // we're changing it here brightens
        } else {
            brightness_factor = 1.0 - edge_strength * 0.2; // we're changing it here darkens
        }
        
        color.rgb = scene.rgb * brightness_factor;
        color.a = scene.a;
        
    } else {
        color = scene;
    }
}
open_in_new View on Modrinth
Compatibility
Client: Required Server: Unsupported
gavel MIT

Conversation

What are your thoughts?

Related projects

Atmosphere Bloom Cartoon
Complementary Shaders - Reimagined
Complementary Shaders - Reimagined icon
Complementary Shaders - Reimagined

by EminGT

Preserving the elements of Minecraft with exceptional quality, detail, and performance.

download 37.6M
favorite 8,333
Atmosphere Bloom Cartoon
Complementary Shaders - Unbound
Complementary Shaders - Unbound icon
Complementary Shaders - Unbound

by EminGT

Transforming the visuals of Minecraft with exceptional quality, detail, and performance.

download 23.6M
favorite 4,503
Atmosphere Bloom Cartoon
BSL Shaders
BSL Shaders icon
BSL Shaders

by CaptTatsu

Shaderpack for Minecraft: Java Edition. It's bright, colorful, and distinct.

download 17.9M
favorite 5,032
Atmosphere Bloom Cartoon
Solas Shader
Solas Shader icon
Solas Shader

by Septonious

A good performing fantasy stylized shaderpack with colored lighting and stunning visuals

download 8.1M
favorite 2,305
lock Cookie consent

SkinMC uses cookies to provide functionality and features.