1. Выбираем нужный шейдер тута: GLSL Sandbox Gallery (noad) выбрали, нажимаем кнопку showcode слева сверху переходим к пункту 2 2. Изменяем шейдер: Заходим в код шейдера, ищем uniform vec2 resolution Меняем на: uniform float w uniform float h Ищем строку похожую на эту: Изменяем resolution.xy на vec2(w,h) Если в коде есть resolution.x то меняем его на w а ещё Если в коде есть resolution.y то меняем его на h 3. Создаём файл шейдера в экспенсиве идём по пути im/expensive/utils/shader/shaders/ и создаём там файл Mainmenu.java вставляем туда код: package im.expensive.utils.shader.shaders; import im.expensive.utils.shader.IShader; public class Mainmenu implements IShader { @Override public String glsl() { return """ шадер """; } } после, меняем на строке 10 текст шадер на код шейдера который вы изменили в пункте 2 4. Регистрируем шейдер в списке шейдеров: заходим в файл Shaders.java по пути im/expensive/utils/shader/ после 46 строки делаем новую строку и вставляем туда: @Getter private IShader mainmenu = new Mainmenu(); если возникает ошибка - Alt + Enter или импортируем шейдер через import im.expensive.utils.shader.shaders.Mainmenu; на 17 строку 5. Регистрируем шейдер в утилке: заходим в файл ShaderUtil.java по пути im/expensive/utils/shader/ на 37 строку втсавляем: public static ShaderUtil mainmenu = new ShaderUtil("Mainmenu"); 6. Рендерим шейдер заходим в файл MainScreen.java по пути im/expensive/ui/mainmenu/ и вместо 106 строки вставляем такой код: for(float i=0;i<1488;i++){ if(timer.isReached(10)){ o++; i=0; timer.reset(); } } GlStateManager.pushMatrix(); GlStateManager.enableBlend(); ShaderUtil.mainmenu.attach(); ShaderUtil.mainmenu.setUniform("time", o/4); ShaderUtil.mainmenu.setUniform("w", (float)windowWidth); ShaderUtil.mainmenu.setUniform("h", (float)windowHeight); drawQuads(0, 0, windowWidth, windowHeight, 7); ShaderUtil.mainmenu.detach(); GlStateManager.disableBlend(); GlStateManager.popMatrix(); на 39 строку вставляем: public final StopWatch timer = new StopWatch(); public float o = 0; гатово :seemsgood: