Вопрос Блюренное стекло - 1.21.1 Fabric

  • Автор темы Автор темы kalcore
  • Дата начала Дата начала
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
15 Июн 2025
Сообщения
203
Реакции
1

Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:

  • бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
  • маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
  • приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
  • обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.

Спасибо!

как вы это ебучее стекло делаете :roflanPominki:
попытался хуйню написать но ниче не вышло
photo_2025-07-18_22-24-30.jpg

glass.json:
Expand Collapse Copy
{
  "blend": {
    "func": "add",
    "srcrgb": "srcalpha",
    "dstrgb": "1-srcalpha"
  },
  "vertex": "position",
  "fragment": "mytheria:glass",
  "attributes": [],
  "samplers": [
    { "name": "InputSampler" }
  ],
  "uniforms": [
    { "name": "ModelViewMat", "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": "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": "InputResolution", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] },
    { "name": "Quality",     "type": "float", "count": 1, "values": [ 20.0 ] },
    { "name": "Brightness",  "type": "float", "count": 1, "values": [ 1.0 ] },
    { "name": "color1",      "type": "float", "count": 4, "values": [ 0.9, 0.9, 1.0, 0.6 ] },
    { "name": "uSize",       "type": "float", "count": 2, "values": [ 100.0, 100.0 ] },
    { "name": "uLocation",   "type": "float", "count": 2, "values": [ 0.0, 0.0 ] },
    { "name": "radius",      "type": "float", "count": 1, "values": [ 10.0 ] }
  ]
}
glass.fsh:
Expand Collapse Copy
#version 150

uniform sampler2D InputSampler;
uniform vec2  InputResolution;
uniform vec2  uSize;
uniform vec2  uLocation;
uniform float radius;
uniform float Brightness;
uniform float Quality;
uniform vec4  color1;

in vec2 texCoord;
out vec4 fragColor;

float roundedBoxMask(vec2 fragPx) {
    vec2 p = fragPx - (uLocation + uSize * 0.5);
    vec2 halfSize = uSize * 0.5;
    float sdf = length(max(abs(p) - (halfSize - vec2(radius)), 0.0)) - radius;
    float aa = fwidth(sdf);
    return 1.0 - smoothstep(0.0, aa, sdf);
}

vec4 gaussianBlur(vec2 uv, float pxRadius) {
    vec2 texel = 1.0 / InputResolution;
    float r = clamp(pxRadius, 0.0, 30.0);
    int radiusI = int(r);

    float sigma = max(r * 1.2, 1.0);
    float twoSigma2 = 2.0 * sigma * sigma;

    vec4 acc = vec4(0.0);
    float weightSum = 0.0;

    float w0 = 1.0;
    acc += texture(InputSampler, uv) * w0;
    weightSum += w0;

    for (int i = 1; i <= 30; ++i) {
        if (i > radiusI) break;
        float x = float(i);
        float w = exp(-(x * x) / twoSigma2);

        acc += texture(InputSampler, uv + vec2(texel.x * x, 0.0)) * w;
        acc += texture(InputSampler, uv - vec2(texel.x * x, 0.0)) * w;
        acc += texture(InputSampler, uv + vec2(0.0, texel.y * x)) * w;
        acc += texture(InputSampler, uv - vec2(0.0, texel.y * x)) * w;

        weightSum += w * 4.0;
    }
    return acc / weightSum;
}

float hash(vec2 p) {
    return fract(sin(dot(p, vec2(12.9898, 78.233))) * 43758.5453);
}

void main() {
    vec2 uv = gl_FragCoord.xy / InputResolution;

    float mask = roundedBoxMask(gl_FragCoord.xy);
    if (mask <= 0.0) {
        discard;
    }

    vec4 blurred = gaussianBlur(uv, Quality * 3.0);

    float luma = dot(blurred.rgb, vec3(0.299, 0.587, 0.114));
    vec3 boosted = mix(vec3(luma), blurred.rgb, 1.5);

    vec3 tinted = mix(boosted, color1.rgb, clamp(color1.a * 1.5, 0.0, 1.0));

    const float EDGE_HALO_STRENGTH = 0.25;
    vec2 p = gl_FragCoord.xy - uLocation;
    vec2 edgeDist = min(p, uSize - p);
    float edge = min(edgeDist.x, edgeDist.y);
    float halo = smoothstep(0.0, 8.0, edge);
    tinted += (1.0 - halo) * EDGE_HALO_STRENGTH;

    float n = hash(gl_FragCoord.xy) * 0.02;
    tinted += n;

    vec4 finalColor = vec4(tinted, mask * Brightness * 1.2);
    fragColor = finalColor;
}
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Назад
Сверху Снизу