Welcome on MasterOf13FPS! MasterOf13FPS

Register today or sign up if you are already a member and never miss any cool content again :)

ShaderESP

MasterOf13FPS

Administrator
Staff member
Administrator
MasterOf13FPS
Joined
Jul 11, 2020
Messages
0
Reaction score
25
Points
0
Ersteinmal sei gesagt, dass dieses Tutorial in kurzer Zeit entstand und daher Fehler möglich sind.

Da das Tutorial von Cyberbrick nichtmehr aktuell ist, gebe ich dir hier einfach mal eine kurze anleitung.

Du erstellst dir ersteinmal eine ShaderUtil.
Den Shader loaded mal so:

Code:
int vertexType = glCreateShader(GL_VERTEX_SHADER);
int fragmentType = glCreateShader(GL_FRAGMENT_SHADER);

glShaderSource(vertexType, FileUtil.getShaderCode(new InputStreamReader(getClass().getResourceAsStream("fragment/vertex.vert"))));
glShaderSource(fragmentType, FileUtil.getShaderCode(new InputStreamReader(getClass().getResourceAsStream("fragment/" + fragmentShader))));

glCompileShader(vertexType);
glCompileShader(fragmentType);

glAttachShader(program, vertexType);
glAttachShader(program, fragmentType);

glLinkProgram(program);

in deiner ESP Class erstellst du dir anschließend einen Framebuffer, den du jedoch noch nicht initialized.
In meiner RenderMethod initialized du diesen direkt am Anfang mit dieser Methode:


Code:
public static Framebuffer setupFB(Framebuffer frameBuffer) {
if (frameBuffer == null)
return new Framebuffer(mc.displayWidth, mc.displayHeight, true);
if (frameBuffer.framebufferWidth != mc.displayWidth || frameBuffer.framebufferHeight != mc.displayHeight) {
frameBuffer.deleteFramebuffer();
frameBuffer = new Framebuffer(mc.displayWidth, mc.displayHeight, true);
}
return frameBuffer;
}

Diesen Framebuffer bindest du dir.
Daraufhin rufst du folgende Methode auf:

Code:
mc.entityRenderer.setupCameraTransform(mc.timer.renderPartialTicks, 0);

anschließend renderst du deine Entitys.
Daraufhin rufst du folgende methode auf:

Code:
mc.entityRenderer.setupOverlayRendering();

dann unbindest den Framebuffer wieder.
Nun bindest du den Framebuffer von Minecraft und beginnst mit dem Rendering deines OutlineShaders.
Code:
(glUseProgram(bind ? program : 0))

Nun setzt du die Uniforms für deinen OutlineShader.

anschließend musst du deinen Framebuffer Rendern:

Code:
ScaledResolution sr = new ScaledResolution(mc);
glBindTexture(GL_TEXTURE_2D, frameBuffer.framebufferTexture);
glBegin(GL_QUADS);
glTexCoord2d(0, 1);
glVertex2d(0, 0);
glTexCoord2d(0, 0);
glVertex2d(0, sr.getScaledHeight());
glTexCoord2d(1, 0);
glVertex2d(sr.getScaledWidth(), sr.getScaledHeight());
glTexCoord2d(1, 1);
glVertex2d(sr.getScaledWidth(), 0);
glEnd();

nun werden noch diese methoden aufgerufen:


Code:
RenderHelper.disableStandardItemLighting();
mc.entityRenderer.disableLightmap();

Nun kannst du deinen Shader unbinden

-----------------

Ich hoffe, dass ich nichts vergessen habe.
➥ Doch, die Code-Tags ... (by FantaCoke)

20.12.2018 - by FantaCoke
» Code-Tags hinzugefügt
» Beitrag korrekt formatiert
 
Last edited by a moderator:
Ersteinmal sei gesagt, dass dieses Tutorial in kurzer Zeit entstand und daher Fehler möglich sind.

Da das Tutorial von Cyberbrick nichtmehr aktuell ist, gebe ich dir hier einfach mal eine kurze anleitung.

Du erstellst dir ersteinmal eine ShaderUtil.
Den Shader loaded mal so:

Code:
int vertexType = glCreateShader(GL_VERTEX_SHADER);
int fragmentType = glCreateShader(GL_FRAGMENT_SHADER);

glShaderSource(vertexType, FileUtil.getShaderCode(new InputStreamReader(getClass().getResourceAsStream("fragment/vertex.vert"))));
glShaderSource(fragmentType, FileUtil.getShaderCode(new InputStreamReader(getClass().getResourceAsStream("fragment/" + fragmentShader))));

glCompileShader(vertexType);
glCompileShader(fragmentType);

glAttachShader(program, vertexType);
glAttachShader(program, fragmentType);

glLinkProgram(program);

in deiner ESP Class erstellst du dir anschließend einen Framebuffer, den du jedoch noch nicht initialized.
In meiner RenderMethod initialized du diesen direkt am Anfang mit dieser Methode:


Code:
public static Framebuffer setupFB(Framebuffer frameBuffer) {
if (frameBuffer == null)
return new Framebuffer(mc.displayWidth, mc.displayHeight, true);
if (frameBuffer.framebufferWidth != mc.displayWidth || frameBuffer.framebufferHeight != mc.displayHeight) {
frameBuffer.deleteFramebuffer();
frameBuffer = new Framebuffer(mc.displayWidth, mc.displayHeight, true);
}
return frameBuffer;
}

Diesen Framebuffer bindest du dir.
Daraufhin rufst du folgende Methode auf:

Code:
mc.entityRenderer.setupCameraTransform(mc.timer.renderPartialTicks, 0);

anschließend renderst du deine Entitys.
Daraufhin rufst du folgende methode auf:

Code:
mc.entityRenderer.setupOverlayRendering();

dann unbindest den Shader wieder.
Nun bindest du den Framebuffer von Minecraft und beginnst mit dem Rendering deines OutlineShaders.
Code:
(glUseProgram(bind ? 1 : 0))

Nun setzt du die Uniforms für deinen OutlineShader.

anschließend musst du deinen Framebuffer Rendern:

Code:
ScaledResolution sr = new ScaledResolution(mc);
glBindTexture(GL_TEXTURE_2D, frameBuffer.framebufferTexture);
glBegin(GL_QUADS);
glTexCoord2d(0, 1);
glVertex2d(0, 0);
glTexCoord2d(0, 0);
glVertex2d(0, sr.getScaledHeight());
glTexCoord2d(1, 0);
glVertex2d(sr.getScaledWidth(), sr.getScaledHeight());
glTexCoord2d(1, 1);
glVertex2d(sr.getScaledWidth(), 0);
glEnd();

nun werden noch diese methoden aufgerufen:


Code:
RenderHelper.disableStandardItemLighting();
mc.entityRenderer.disableLightmap();

Nun kannst du deinen Shader unbinden

-----------------

Ich hoffe, dass ich nichts vergessen habe.
➥ Doch, die Code-Tags ... (by FantaCoke)

20.12.2018 - by FantaCoke
» Code-Tags hinzugefügt
» Beitrag korrekt formatiert
Könntest du bitte eine fertige Class davon rausgeben, habe das binden/unbinden noch nicht so verstanden :/
 
Könntest du bitte eine fertige Class davon rausgeben, habe das binden/unbinden noch nicht so verstanden :/
framebuffer.bindFramebuffer(true)
oder was verstehst du nicht
 
Könntest du bitte eine fertige Class davon rausgeben, habe das binden/unbinden noch nicht so verstanden :/
Beziehst du dich auf den Shader oder auf den Framebuffer?
bei dem Framebuffer wäre es
framebuffer.bindFramebuffer(true);
beim Shader wäre es
glUseProgram(program)
oder zum unbinden
glUseProgram(0)
 
Beziehst du dich auf den Shader oder auf den Framebuffer?
bei dem Framebuffer wäre es
framebuffer.bindFramebuffer(true);
beim Shader wäre es
glUseProgram(program)
oder zum unbinden
glUseProgram(0)
ich glaube er findet das komisch
ly277i
http://prntscr.com/ly277i
 
Last edited by a moderator:
Ersteinmal sei gesagt, dass dieses Tutorial in kurzer Zeit entstand und daher Fehler möglich sind.

Da das Tutorial von Cyberbrick nichtmehr aktuell ist, gebe ich dir hier einfach mal eine kurze anleitung.

Du erstellst dir ersteinmal eine ShaderUtil.
Den Shader loaded mal so:

Code:
int vertexType = glCreateShader(GL_VERTEX_SHADER);
int fragmentType = glCreateShader(GL_FRAGMENT_SHADER);

glShaderSource(vertexType, FileUtil.getShaderCode(new InputStreamReader(getClass().getResourceAsStream("fragment/vertex.vert"))));
glShaderSource(fragmentType, FileUtil.getShaderCode(new InputStreamReader(getClass().getResourceAsStream("fragment/" + fragmentShader))));

glCompileShader(vertexType);
glCompileShader(fragmentType);

glAttachShader(program, vertexType);
glAttachShader(program, fragmentType);

glLinkProgram(program);

in deiner ESP Class erstellst du dir anschließend einen Framebuffer, den du jedoch noch nicht initialized.
In meiner RenderMethod initialized du diesen direkt am Anfang mit dieser Methode:


Code:
public static Framebuffer setupFB(Framebuffer frameBuffer) {
if (frameBuffer == null)
return new Framebuffer(mc.displayWidth, mc.displayHeight, true);
if (frameBuffer.framebufferWidth != mc.displayWidth || frameBuffer.framebufferHeight != mc.displayHeight) {
frameBuffer.deleteFramebuffer();
frameBuffer = new Framebuffer(mc.displayWidth, mc.displayHeight, true);
}
return frameBuffer;
}

Diesen Framebuffer bindest du dir.
Daraufhin rufst du folgende Methode auf:

Code:
mc.entityRenderer.setupCameraTransform(mc.timer.renderPartialTicks, 0);

anschließend renderst du deine Entitys.
Daraufhin rufst du folgende methode auf:

Code:
mc.entityRenderer.setupOverlayRendering();

dann unbindest den Shader wieder.
Nun bindest du den Framebuffer von Minecraft und beginnst mit dem Rendering deines OutlineShaders.
Code:
(glUseProgram(bind ? 1 : 0))

Nun setzt du die Uniforms für deinen OutlineShader.

anschließend musst du deinen Framebuffer Rendern:

Code:
ScaledResolution sr = new ScaledResolution(mc);
glBindTexture(GL_TEXTURE_2D, frameBuffer.framebufferTexture);
glBegin(GL_QUADS);
glTexCoord2d(0, 1);
glVertex2d(0, 0);
glTexCoord2d(0, 0);
glVertex2d(0, sr.getScaledHeight());
glTexCoord2d(1, 0);
glVertex2d(sr.getScaledWidth(), sr.getScaledHeight());
glTexCoord2d(1, 1);
glVertex2d(sr.getScaledWidth(), 0);
glEnd();

nun werden noch diese methoden aufgerufen:


Code:
RenderHelper.disableStandardItemLighting();
mc.entityRenderer.disableLightmap();

Nun kannst du deinen Shader unbinden

-----------------

Ich hoffe, dass ich nichts vergessen habe.
➥ Doch, die Code-Tags ... (by FantaCoke)

20.12.2018 - by FantaCoke
» Code-Tags hinzugefügt
» Beitrag korrekt formatiert
unter welchen Event sollte man alles aufrufen?
 
Das ist der von Minecraft, bei dem man nur eine zeile ändern muss. Auf diesen beziehe ich mich nicht
kannst du mir helfen das ganze funktioniert bei mir nicht richtig ich bekomme gl errors

Code:
[16:13:25] [Client thread/ERROR]: ########## GL ERROR ##########
[16:13:25] [Client thread/ERROR]: @ Post render
[16:13:25] [Client thread/ERROR]: 1282: Invalid operation

und es werden keine spieler + eis mehr gerendert

22.12.2018 - by FantaCoke
» Code-Tags hinzugefügt
 
Last edited by a moderator:
kannst du mir helfen das ganze funktioniert bei mir nicht richtig ich bekomme gl errors

[16:13:25] [Client thread/ERROR]: ########## GL ERROR ##########
[16:13:25] [Client thread/ERROR]: @ Post render
[16:13:25] [Client thread/ERROR]: 1282: Invalid operation

und es werden keine spieler + eis mehr gerendert
am besten klammerst du die Zeilen aus, die es verursachen könnten und behebst den Fehler wenn du ihn gefunden hast
 
am besten klammerst du die Zeilen aus, die es verursachen könnten und behebst den Fehler wenn du ihn gefunden hast
Das habe ich schon versucht aber ich habe den Fehler nicht gefudeng
 
Das habe ich schon versucht aber ich habe den Fehler nicht gefudeng
Geht es ebenfalls nicht, wenn du den Shader nicht aufrufst? sprich nur den Framebuffer benutzen und den Shader erst garnicht binden?
 
shape1
shape2
shape3
shape4
shape5
shape6
Back
Top