Вопрос Шеееейдер теней

ППХУДЕР
Начинающий
Статус
Оффлайн
Регистрация
10 Фев 2020
Сообщения
390
Реакции[?]
23
Поинты[?]
6K

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

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

Спасибо!

хочу сделать шейдер, типо как в экспе под менюшкой тень выглядит

что с этим кодом не так

если что рендерится просто фигура, не размытая

Код:
#version 120

uniform vec2 location;
uniform vec2 rectSize;
uniform vec4 color1, color2, color3, color4;
uniform float radius;

void main() {
    vec2 st = gl_TexCoord[0].st;
    vec2 halfSize = rectSize * 0.5;
 
    float totalAlpha = 0;
    vec3 totalColor = vec3(0);
 
    float passes = 10;
    float maxBlurRadius = radius * 1.5;
   
    for (float pass = 0; pass < passes; pass += 1) {
        float blurFactor = 1 + pass * 0.05;
       
        for (float i = -maxBlurRadius; i <= maxBlurRadius; i += 1.0) {
            float offset = i / maxBlurRadius;
            float weight = exp(-offset * offset * 0.5);
         
            vec2 coords = st + vec2(offset, 0);
            float distanceToEdge = length(max(abs(coords) - halfSize, 0)) - radius;
           
            float shadowAlpha = smoothstep(0, 1, abs(distanceToEdge));
            float smoothedAlpha = shadowAlpha;
           
            totalAlpha += smoothedAlpha * weight;
            totalColor += smoothedAlpha * mix(mix(color1.rgb, color2.rgb, st.y), mix(color3.rgb, color4.rgb, st.y), st.x) * weight;
        }
    }
 
    gl_FragColor = vec4(totalColor / totalAlpha, totalAlpha);
}
 
Последнее редактирование:
Сверху Снизу