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

ППХУДЕР
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
10 Фев 2020
Сообщения
428
Реакции
24

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

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

Спасибо!

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

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

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

Код:
Expand Collapse Copy
#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);
}
 
Последнее редактирование:
Назад
Сверху Снизу