-
Автор темы
- #1
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
Видел шейдеры которые просто оставляют белый экран
Но тут в 2 класса и все
1.
2.
del
В классе Expensive вставляем это
ShaderUtil2.init();
/del
Но тут в 2 класса и все
1.
Сам шадер:
package im.expensive.utils.shader.shaders;
import im.expensive.utils.client.IMinecraft;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.util.Util;
import org.lwjgl.opengl.ARBShaderObjects;
import org.lwjgl.opengl.GL20;
import java.io.ByteArrayInputStream;
public class ShaderUtil2 extends Util implements IMinecraft {
public static ShaderUtil2 MAIN_MENU;
private final int shaderID = GL20.glCreateProgram();
public ShaderUtil2(String string) {
GL20.glAttachShader(this.shaderID, this.createShader(string));
GL20.glLinkProgram(this.shaderID);
}
public static void drawQuads(float x, float y, float width, float height) {
buffer.begin(9, DefaultVertexFormats.POSITION_TEX);
double z = 0.0; // ПАСТИМ РЕБЯТКИ ПАСТИМ
buffer.pos(x, y, z).tex(0.0f, 0.0f).endVertex();
buffer.pos(x, y + height, z).tex(0.0f, 1.0f).endVertex();
buffer.pos(x + width, y + height, z).tex(1.0f, 1.0f).endVertex();
buffer.pos(x + width, y,z).tex(1.0f, 0.0f).endVertex();
tessellator.draw();
}
public static void init() {
MAIN_MENU = new ShaderUtil2("#ifdef GL_ES\n" +
"\n" +
"precision mediump float;\n" +
"\n" +
"#endif\n" +
"\n" +
"// mods by dist\n" +
"\n" +
" \n" +
"\n" +
"uniform float time;\n" +
"\n" +
"uniform vec2 mouse;\n" +
"\n" +
"uniform vec2 resolution;\n" +
"\n" +
" \n" +
"\n" +
" \n" +
"\n" +
"void main( void )\n" +
"\n" +
"{\n" +
"\n" +
" \n" +
"\n" +
"\tvec2 uPos = ( gl_FragCoord.xy / resolution.xy );//normalize wrt y axis\n" +
"\n" +
"\t//suPos -= vec2((resolution.x/resolution.y)/2.0, 0.0);//shift origin to center\n" +
"\n" +
"\t\n" +
"\n" +
"\tuPos.x -= 0.5;\n" +
"\n" +
"\tuPos.y -= 0.5;\n" +
"\n" +
"\t\n" +
"\n" +
"\tvec3 color = vec3(0.0);\n" +
"\n" +
"\tfloat vertColor = 0.0;\n" +
"\n" +
"\tfor( float i = 0.0; i < 10.; ++i )\n" +
"\n" +
"\t{\n" +
"\n" +
"\t\tfloat t = time * (2);\n" +
"\n" +
"\t\n" +
"\n" +
"\t\tuPos.y += sin( uPos.x*(i+1.0) + t+i/2.0 ) * 0.1;\n" +
"\n" +
"\t\tfloat fTemp = abs(1.0 / uPos.y / 100.0);\n" +
"\n" +
"\t\tvertColor += fTemp; \n" +
"\n" +
"\t\tcolor += vec3( fTemp*(10.0-i)/6.0, fTemp*i/10.0, pow(fTemp,2)*1.5 ); \n" +
"\n" +
"\t} \n" +
"\n" +
"\t \n" +
"\n" +
"\tvec4 color_final = vec4(color, 1.0); \n" +
"\n" +
"\tgl_FragColor = color_final; \n" +
"\n" +
"}");
}
public void begin() {
GL20.glUseProgram(this.shaderID);
}
public static void end() {
GL20.glUseProgram(0);
}
public void setUniform(String string, float... fArray) {
int n = GL20.glGetUniformLocation(this.shaderID, string);
switch (fArray.length) {
case 1: {
ARBShaderObjects.glUniform1fARB(n, fArray[0]);
break;
}
case 2: {
ARBShaderObjects.glUniform2fARB(n, fArray[0], fArray[1]);
break;
}
case 3: {
ARBShaderObjects.glUniform3fARB(n, fArray[0], fArray[1], fArray[2]);
break;
}
case 4: {
ARBShaderObjects.glUniform4fARB(n, fArray[0], fArray[1], fArray[2], fArray[3]);
}
}
}
private int createShader(String string) {
int gled = GL20.glCreateShader(35632);
GL20.glShaderSource(gled, (CharSequence) XYETA.readInputStream(new ByteArrayInputStream(string.getBytes())));
GL20.glCompileShader(gled);
return gled;
}
}
Класс без которого работать не будет:
package im.expensive.utils.shader.shaders;
import java.io.*;
/**
* [USER=35246]@Author[/USER] Jefferson
* [USER=30931]@since[/USER] 30/11/2022
*/
public class XYETA {
/**
* Метод создает новый объект StringBuilder для хранения содержимого входного потока.
* Затем метод создает объект BufferedReader, который читает данные из входного потока построчно,
* используя InputStreamReader для преобразования потока байтов в символы.
* [USER=804731]@param[/USER] inputStream
* [USER=46448]@ReturN[/USER]
*/
public static String readInputStream(InputStream inputStream) {
// Создание объекта StringBuilder для хранения результата чтения
StringBuilder stringBuilder = new StringBuilder();
try {
// Создание объекта BufferedReader для чтения входного потока
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
// Чтение входного потока построчно и добавление каждой строки в объект StringBuilder
String line;
while ((line = bufferedReader.readLine()) != null) {
stringBuilder.append(line).append('\n');
}
} catch (Exception e) {
// Обработка исключений при чтении входного потока
e.printStackTrace();
}
// Преобразование объекта StringBuilder в строку и возврат результата
return stringBuilder.toString();
}
}
Меняем в бекменю на это:
ShaderUtil2.MAIN_MENU.begin();
ShaderUtil2.MAIN_MENU.setUniform("time", mc.timer.getPartialTicks(1) / 20.0F);
ShaderUtil2.MAIN_MENU.setUniform("resolution", mc.getMainWindow().getScaledWidth(), mc.getMainWindow().getScaledHeight());
ShaderUtil2.MAIN_MENU.drawQuads(0,0, mc.getMainWindow().getScaledWidth(), mc.getMainWindow().getScaledHeight());
ShaderUtil2.MAIN_MENU.end();
В классе Expensive вставляем это
ShaderUtil2.init();
Пожалуйста, авторизуйтесь для просмотра ссылки.
/del