Исходник Шейдер в мейн меню (main menu shader) | exp 3.1

Начинающий
Статус
Оффлайн
Регистрация
27 Ноя 2020
Сообщения
37
Реакции[?]
2
Поинты[?]
2K
1. Выбираем нужный шейдер
тута:
Пожалуйста, авторизуйтесь для просмотра ссылки.
(noad)
выбрали, нажимаем кнопку showcode слева сверху
переходим к пункту 2

2. Изменяем шейдер:
Заходим в код шейдера, ищем
uniform vec2 resolution
Меняем на:
uniform float w
uniform float h

Ищем строку похожую на эту:Посмотреть вложение 272616
Изменяем resolution.xy на vec2(w,h)
Если в коде есть resolution.x то меняем его на w
а ещё
Если в коде есть resolution.y то меняем его на h

3. Создаём файл шейдера в экспенсиве
идём по пути im/expensive/utils/shader/shaders/ и создаём там файл Mainmenu.java
вставляем туда код:

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 строки делаем новую строку и вставляем туда:
Java:
    @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 строки вставляем такой код:
Java:
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 строку вставляем:
Java:
    public final StopWatch timer = new StopWatch();
    public float o = 0;
гатово :seemsgood: Посмотреть вложение 272622
белый экран(
 
Начинающий
Статус
Оффлайн
Регистрация
13 Янв 2021
Сообщения
230
Реакции[?]
17
Поинты[?]
1K
Начинающий
Статус
Оффлайн
Регистрация
13 Июн 2023
Сообщения
161
Реакции[?]
19
Поинты[?]
1K
Я хз ну белый экран
Пожалуйста, авторизуйтесь для просмотра ссылки.
! А ещё ошибка в GLSL Sandbox:


Пожалуйста, авторизуйтесь для просмотра ссылки.

исправил тему!

сделайте всё заново
 
Начинающий
Статус
Оффлайн
Регистрация
8 Фев 2024
Сообщения
126
Реакции[?]
0
Поинты[?]
0
исправил тему!

сделайте всё заново
до сих пор белый экран
мб в самом шейдере проблема?


#ifdef GL_ES
precision highp float;
#endif

#extension GL_OES_standard_derivatives : enable

#define NUM_OCTAVES 6

uniform float time;
uniform float w;
uniform float h;

mat3 rotX(float a) {
float c = cos(a);
float s = sin(a);
return mat3(
1, 0, 0,
0, c, -s,
0, s, c
);
}

mat3 rotY(float a) {
float c = cos(a);
float s = sin(a);
return mat3(
c, 0, -s,
0, 1, 0,
s, 0, c
);
}

float random(vec2 pos) {
return fract(sin(dot(pos.xy, vec2(13.9898, 78.233))) * 43758.5453123);
}

float noise(vec2 pos) {
vec2 i = floor(pos);
vec2 f = fract(pos);
float a = random(i + vec2(0.0, 0.0));
float b = random(i + vec2(1.0, 0.0));
float c = random(i + vec2(0.0, 1.0));
float d = random(i + vec2(1.0, 1.0));
vec2 u = f * f * (3.0 - 2.0 * f);
return mix(a, b, u.x) + (c - a) * u.y * (1.0 - u.x) + (d - b) * u.x * u.y;
}

float fbm(vec2 pos) {
float v = 0.0;
float a = 0.5;
vec2 shift = vec2(100.0);
mat2 rot = mat2(cos(0.5), sin(0.5), -sin(0.5), cos(0.5));
for (int i = 0; i < NUM_OCTAVES; i++) {
float dir = mod(float(i), 2.0) > 0.5 ? 1.0 : -1.0;
v += a * noise(pos - 0.05 * dir * time);

pos = rot * pos * 2.0 + shift;
a *= 0.5;
}
return v;
}

void main(void) {
vec2 p = (gl_FragCoord.xy * 3.0 - vec2(w,h)) / min(w, h);
p -= vec2(12.0, 0.0);

float t = 0.0, d;

float time2 = 1.0;

vec2 q = vec2(0.0);
q.x = fbm(p + 0.00 * time2);
q.y = fbm(p + vec2(1.0));
vec2 r = vec2(0.0);
r.x = fbm(p + 1.0 * q + vec2(1.7, 1.2) + 0.15 * time2);
r.y = fbm(p + 1.0 * q + vec2(8.3, 2.8) + 0.126 * time2);
float f = fbm(p + r);

// DS: hornidev
vec3 color = mix(
vec3(1.0, 1.0, 2.0),
vec3(1.0, 1.0, 1.0),
clamp((f * f) * 5.5, 1.2, 15.5)
);

color = mix(
color,
vec3(1.0, 1.0, 1.0),
clamp(length(q), 2.0, 2.0)
);

color = mix(
color,
vec3(0.3, 0.2, 1.0),
clamp(length(r.x), 0.0, 5.0)
);

color = (f * f * f * 1.0 + 0.5 * 1.7 * 0.0 + 0.9 * f) * color;

vec2 uv = gl_FragCoord.xy / vec2(w,h);
float alpha = 50.0 - max(pow(100.0 * distance(uv.x, -1.0), 0.0), pow(2.0 * distance(uv.y, 0.5), 5.0));
gl_FragColor = vec4(color * 100.0, color.r);
gl_FragColor = vec4(color, alpha * color.r);
}
 
Начинающий
Статус
Оффлайн
Регистрация
18 Июл 2022
Сообщения
265
Реакции[?]
2
Поинты[?]
1K
глупый способ пытаться выделиться
я не пытаюсь я просто сказал что зделал на много проще и чтоб работало я не долбоеб ебаный чтоб пытатся выделется я че сказал что я селфкодер зделал лучше чем это дерьмо или че
 
how to доказать всем что не еблан
Пользователь
Статус
Оффлайн
Регистрация
14 Авг 2019
Сообщения
386
Реакции[?]
108
Поинты[?]
17K
Начинающий
Статус
Оффлайн
Регистрация
10 Фев 2023
Сообщения
373
Реакции[?]
0
Поинты[?]
1K
1. Выбираем нужный шейдер
тута:
Пожалуйста, авторизуйтесь для просмотра ссылки.
(noad)
выбрали, нажимаем кнопку showcode слева сверху
переходим к пункту 2

2. Изменяем шейдер:
Заходим в код шейдера, ищем
uniform vec2 resolution
Меняем на:
uniform float w
uniform float h

Ищем строку похожую на эту:Посмотреть вложение 272616
Изменяем resolution.xy на vec2(w,h)
Если в коде есть resolution.x то меняем его на w
а ещё
Если в коде есть resolution.y то меняем его на h

3. Создаём файл шейдера в экспенсиве
идём по пути im/expensive/utils/shader/shaders/ и создаём там файл Mainmenu.java
вставляем туда код:

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 строки делаем новую строку и вставляем туда:
Java:
    @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 строки вставляем такой код:
Java:
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 строку вставляем:
Java:
    public final StopWatch timer = new StopWatch();
    public float o = 0;
гатово :seemsgood: Посмотреть вложение 272622
еще бы нахуй худ с шейдером сделал)😂🤣
 
Сверху Снизу