-
Автор темы
- #1
Всем привет! Прочитая данный гайд вы узнаете как поставить лютый шейдер в MainMenu на базе (делал на базе Minced 1.7)
И так приступаем
Создаем в папке ui файл Shader.java и вставляем данный код:
(в строке 71 нужно указать путь к assets где будет наш шейдер)
После того как создали класс переходим в класс с нашим MainMenu и вставляем следующие строки:
У вас может быть ошибка в this.shaderH просто пишем private Shader shaderH;
дальше после public void drawScreen вставляем данный код:
После этого мы удаляем строку с фоном через картинку RenderUtils.drawImage
Дальше осталось зайди в ваши assets и закинуть по пути, который вы указали в Shader.java и закинуть ваш шейдер.fsh
В коде MainMenu меняем "ваше_название_шейдера.fsh" на название файла вашего шейдера
Если вы все сделали верно то ваш шейдер будет работать
По вопросам:
Discord: Scally.JohON0#5061
tg: @xxxjohono
взял от сюда:
И так приступаем
Создаем в папке ui файл Shader.java и вставляем данный код:
(в строке 71 нужно указать путь к assets где будет наш шейдер)
Java:
package ru.idel.Scally.ui;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Objects;
import java.util.stream.Collectors;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.ScaledResolution;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL20;
public class Shader {
Minecraft mc = Minecraft.getMinecraft();
private final int programId;
private final ScaledResolution sr = new ScaledResolution(this.mc);
public static final String VERTEX_SORUCE = getShaderSource("vertex.vsh");
private final long initTime;
public Shader(String fragmentShaderName) {
int programId = GL20.glCreateProgram();
try {
int vertexShader = GL20.glCreateShader(35633);
GL20.glShaderSource(vertexShader, VERTEX_SORUCE);
GL20.glCompileShader(vertexShader);
int isVertexCompiled = GL20.glGetShaderi(vertexShader, 35713);
if (isVertexCompiled == 0) {
GL20.glDeleteShader(vertexShader);
System.err.println("Vertex shader couldn't compile. It has been deleted.");
}
int fragmentShader = GL20.glCreateShader(35632);
GL20.glShaderSource(fragmentShader, getShaderSource(fragmentShaderName));
GL20.glCompileShader(fragmentShader);
int isFragmentCompiled = GL20.glGetShaderi(fragmentShader, 35713);
if (isFragmentCompiled == 0) {
GL20.glDeleteShader(fragmentShader);
System.err.println("Fragment shader couldn't compile. It has been deleted.");
}
GL20.glAttachShader(programId, vertexShader);
GL20.glAttachShader(programId, fragmentShader);
GL20.glLinkProgram(programId);
} catch (Exception e) {
e.printStackTrace();
}
this.programId = programId;
this.initTime = System.currentTimeMillis();
}
public void draw(float mouseX, float mouseY) {
GL20.glUseProgram(this.programId);
GL20.glUniform2f(GL20.glGetUniformLocation(this.programId, "resolution"), this.sr.getScaledWidth(), this.sr.getScaledHeight());
GL20.glUniform2f(GL20.glGetUniformLocation(this.programId, "mouse"), mouseX, mouseY);
GL20.glUniform1f(GL20.glGetUniformLocation(this.programId, "time"), (float) (System.currentTimeMillis() - this.initTime) / 1000.0F);
GL11.glBegin(7);
GL11.glVertex2d(0.0D, 0.0D);
GL11.glVertex2d(0.0D, this.sr.getScaledHeight());
GL11.glVertex2d(this.sr.getScaledWidth(), this.sr.getScaledHeight());
GL11.glVertex2d(this.sr.getScaledWidth(), 0.0D);
GL11.glEnd();
GL20.glUseProgram(0);
}
public static String getShaderSource(String fileName) {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(Objects.<InputStream>requireNonNull(Shader.class
/* сдесь указываем путь где хранится шейдер */ .getResourceAsStream("/assets/minecraft/idelclient/shaders/" + fileName))));
String source = bufferedReader.lines().filter(str -> !str.isEmpty()).map(str -> str = str.replace("\t", "")).collect(Collectors.joining("\n"));
try {
bufferedReader.close();
} catch (IOException iOException) {
}
return source;
}
}
Java:
this.shaderH = new Shader(" ");
ScaledResolution sr = new ScaledResolution(this.mc);
this.width = sr.getScaledWidth();
this.height = sr.getScaledHeight();
this.initAnimation = (Animation)new DecelerateAnimation(300, 1.0D);
дальше после public void drawScreen вставляем данный код:
Java:
ScaledResolution res = new ScaledResolution(this.mc);
Gui.drawRect(0.0D, 0.0D, res.getScaledWidth(), res.getScaledHeight(), -1);
this.shaderH.draw(mouseX / 300.0F, (res.getScaledHeight() - mouseY) / 300.0F);
ScaledResolution sr = new ScaledResolution(this.mc);
new ScaledResolution(this.mc);
new ScaledResolution(this.mc);
Дальше осталось зайди в ваши assets и закинуть по пути, который вы указали в Shader.java и закинуть ваш шейдер.fsh
В коде MainMenu меняем "ваше_название_шейдера.fsh" на название файла вашего шейдера

Если вы все сделали верно то ваш шейдер будет работать
По вопросам:
Discord: Scally.JohON0#5061
tg: @xxxjohono
взял от сюда:
Пожалуйста, авторизуйтесь для просмотра ссылки.
Последнее редактирование: