Welcome on MasterOf13FPS! MasterOf13FPS

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

GLSL Shader Hilfe

MasterOf13FPS

Administrator
Staff member
Administrator
MasterOf13FPS
Joined
Jul 11, 2020
Messages
0
Reaction score
25
Points
0
Hallo,

ich habe mithilfe von Cyberbricks Tutorial ein Shader ESP gebastelt. Statt auf dem Spieler nichts zu rendern habe ich eine Schicht (alpha = 0.2f) in der Farbe der Outline gerendert. Das sieht soweit sehr cool aus, allerdings würde ich das gerne nur rendern, wenn der Spieler hinter einer Wand ist. Ich könnte natürlich mit canEntityBeSeen() abfragen, ob er gesehen werden kann und dann eine uniform ändern, allerdings gibt canEntityBeSeen() auch false zurück, wenn nur kleine des Spielers gesehen werden können. Ich würde also gerne wissen, wie ich genau den Bereich, der von einem Block versteckt ist einfärben kann und den anderen nicht. Ich frage das ganze in Java Skidding, Code ist aber nicht benötigt. Ein paar Keywords, wie das umsetzbar wäre würden schon ausreichen.

Vielen Dank im Voraus,

Drais
 
Wie genau es geht kann ich nicht sagen.
Ich würde aber vermuten dass du von dir zum Spieler immer Vektoren berechnest, und wenn einer dieser Vektoren in einem Block ist....
Ich weiß nicht ob du verstehst was ich mein, und das ganze wäre auch extrem Performance lastig.
 
zeig mir mal den shader code, je nachdem wie dieser umgesetzt ist lässt sich das gut oder schlecht umsetzen ^-^
 
Hallo,

ich habe mithilfe von Cyberbricks Tutorial ein Shader ESP gebastelt. Statt auf dem Spieler nichts zu rendern habe ich eine Schicht (alpha = 0.2f) in der Farbe der Outline gerendert. Das sieht soweit sehr cool aus, allerdings würde ich das gerne nur rendern, wenn der Spieler hinter einer Wand ist. Ich könnte natürlich mit canEntityBeSeen() abfragen, ob er gesehen werden kann und dann eine uniform ändern, allerdings gibt canEntityBeSeen() auch false zurück, wenn nur kleine des Spielers gesehen werden können. Ich würde also gerne wissen, wie ich genau den Bereich, der von einem Block versteckt ist einfärben kann und den anderen nicht. Ich frage das ganze in Java Skidding, Code ist aber nicht benötigt. Ein paar Keywords, wie das umsetzbar wäre würden schon ausreichen.

Vielen Dank im Voraus,

Drais
Schick mal den Code des Shaders wo du was wie gemacht hast, kann dir dann vielleicht helfen habe es bei meinem ähnlich gemacht
 
zeig mir mal den shader code, je nachdem wie dieser umgesetzt ist lässt sich das gut oder schlecht umsetzen ^-^
Ist der fragment Shader von Cyberbrick, habe ihn nicht groß geändert.
Hier trotzdem nochmal der Code:

//OpenGL version used for this shader (1.2)
#version 120

//Sampler, contains the texture of the Entity FBO
uniform sampler2D DiffuseSamper;

//Contains the size of one texel
uniform vec2 TexelSize;

void main(){
//Color of the texel at this fragment
vec4 centerCol = texture2D(DiffuseSamper, gl_TexCoord[0].st);

//Holds the average color (for blur/glow)
vec4 colAvg = vec4(0, 0, 0, 0);
//Iterate through surrounding texels
for(int xo = -7; xo < 7; xo++) {
for(int yo = -7; yo < 7; yo++) {
//Get surrounding texel color
vec4 currCol = texture2D(DiffuseSamper, gl_TexCoord[0].st + vec2(xo * TexelSize.x, yo * TexelSize.y));

//If color has been changed (!= 0), add to average color. Alpha depends on distance to center texel
if(currCol.r != 0.0F || currCol.g != 0.0F || currCol.b != 0.0F) {
//Add to the average color. Currently uses an RGB of #FF0000.
//The alpha value is calculated by distance to the center texel
colAvg += vec4(1, 0, 0, max(0, (6.0f - sqrt(xo*xo*1.0f + yo*yo*1.0f)) / 2.0F));
}
}
}

//Divide alpha to calculate an average
colAvg.a /= 64.0F;

//Return calculated color at this fragment
gl_FragColor = colAvg;
}

Habe halt noch ein paar uniform Variablen dazu gepackt wegen Farbe und sample Radius.
Sonst aber größtenteils das gleiche.
 
failed er beim compilen? Wenn ja schick mal die error logs
 
Ist der fragment Shader von Cyberbrick, habe ihn nicht groß geändert.
Hier trotzdem nochmal der Code:

//OpenGL version used for this shader (1.2)
#version 120

//Sampler, contains the texture of the Entity FBO
uniform sampler2D DiffuseSamper;

//Contains the size of one texel
uniform vec2 TexelSize;

void main(){
//Color of the texel at this fragment
vec4 centerCol = texture2D(DiffuseSamper, gl_TexCoord[0].st);

//Holds the average color (for blur/glow)
vec4 colAvg = vec4(0, 0, 0, 0);
//Iterate through surrounding texels
for(int xo = -7; xo < 7; xo++) {
for(int yo = -7; yo < 7; yo++) {
//Get surrounding texel color
vec4 currCol = texture2D(DiffuseSamper, gl_TexCoord[0].st + vec2(xo * TexelSize.x, yo * TexelSize.y));

//If color has been changed (!= 0), add to average color. Alpha depends on distance to center texel
if(currCol.r != 0.0F || currCol.g != 0.0F || currCol.b != 0.0F) {
//Add to the average color. Currently uses an RGB of #FF0000.
//The alpha value is calculated by distance to the center texel
colAvg += vec4(1, 0, 0, max(0, (6.0f - sqrt(xo*xo*1.0f + yo*yo*1.0f)) / 2.0F));
}
}
}

//Divide alpha to calculate an average
colAvg.a /= 64.0F;

//Return calculated color at this fragment
gl_FragColor = colAvg;
}

Habe halt noch ein paar uniform Variablen dazu gepackt wegen Farbe und sample Radius.
Sonst aber größtenteils das gleiche.
in welcher Class renderst du ihn und wo,da könntest du ja mal gucken ob es da was gibt
 
shape1
shape2
shape3
shape4
shape5
shape6
Back
Top