Блюр по краям экрана

Версия Minecraft
1.7.10
1,187
31
181
В моих планах сделать размытие экрана, если у меня там чота рендерится на нем.
Можно ли это сделать способами майнкрафта или онли шейдерами?
 

Endless

Любитель OpenGL
270
11
82
А я так понял посмотреть нельзя как это делается?
Код:
{
    "blend": {
        "func": "add",
        "srcrgb": "one",
        "dstrgb": "zero"
    },
    "vertex": "sobel",
    "fragment": "fade_in_blur",
    "attributes": [ "Position" ],
    "samplers": [
        { "name": "DiffuseSampler" }
    ],
    "uniforms": [
        { "name": "ProjMat",     "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] },
        { "name": "InSize",      "type": "float",     "count": 2,  "values": [ 1.0, 1.0 ] },
        { "name": "OutSize",     "type": "float",     "count": 2,  "values": [ 1.0, 1.0 ] },
        { "name": "BlurDir",     "type": "float",     "count": 2,  "values": [ 1.0, 1.0 ] },
        { "name": "Radius",      "type": "float",     "count": 1,  "values": [ 5.0 ] },
        { "name": "Progress",    "type": "float",     "count": 1,  "values": [ 0.0 ] }
    ]
}
Код:
{
    "targets": [
        "swap"
    ],
    "passes": [
        {
            "name": "fade_in_blur",
            "intarget": "minecraft:main",
            "outtarget": "swap",
            "uniforms": [
                {
                    "name": "BlurDir",
                    "values": [ 1.0, 0.0 ]
                },
                {
                    "name": "Radius",
                    "values": [ @[email protected] ]
                }
            ]
        },
        {
            "name": "fade_in_blur",
            "intarget": "swap",
            "outtarget": "minecraft:main",
            "uniforms": [
                {
                    "name": "BlurDir",
                    "values": [ 0.0, 1.0 ]
                },
                {
                    "name": "Radius",
                    "values": [ @[email protected] ]
                }
            ]
        },
        {
            "name": "fade_in_blur",
            "intarget": "minecraft:main",
            "outtarget": "swap",
            "uniforms": [
                {
                    "name": "BlurDir",
                    "values": [ 1.0, 0.0 ]
                },
                {
                    "name": "Radius",
                    "values": [ @[email protected] ]
                }
            ]
        },
        {
            "name": "fade_in_blur",
            "intarget": "swap",
            "outtarget": "minecraft:main",
            "uniforms": [
                {
                    "name": "BlurDir",
                    "values": [ 0.0, 1.0 ]
                },
                {
                    "name": "Radius",
                    "values": [ @[email protected] ]
                }
            ]
        }
    ]
}
Код:
#version 120

uniform sampler2D DiffuseSampler;

varying vec2 texCoord;
varying vec2 oneTexel;

uniform vec2 InSize;

uniform vec2 BlurDir;
uniform float Radius;
uniform float Progress;

void main() {
    vec4 blurred = vec4(0.0);
    float totalStrength = 0.0;
    float totalAlpha = 0.0;
    float totalSamples = 0.0;
    float progRadius = floor(Radius * Progress);
    for(float r = -progRadius; r <= progRadius; r += 1.0) {
        vec4 sample = texture2D(DiffuseSampler, texCoord + oneTexel * r * BlurDir);

        // Accumulate average alpha
        totalAlpha = totalAlpha + sample.a;
        totalSamples = totalSamples + 1.0;

        // Accumulate smoothed blur
        float strength = 1.0 - abs(r / progRadius);
        totalStrength = totalStrength + strength;
        blurred = blurred + sample;
    }
    gl_FragColor = vec4(blurred.rgb / (progRadius * 2.0 + 1.0), totalAlpha);
}
если чо это не java файл это тип из разряда opengl, это fragment shader file (.fsh), помойму я это уже и забыл исправьте меня, если не так :/
и дальше сам вызывай как тебе надо :/
 
Сверху