[Java libGDX] Szum na obrazie
Ostatnio zmodyfikowano 2026-01-02 13:45
tBane Temat założony przez niniejszego użytkownika |
[Java libGDX] Szum na obrazie » 2026-01-02 11:22:11 Cześć. Szukam sposobu jak nałożyć szum na obraz jak na załączonych grafikach orginal:  with noise:  |
|
tBane Temat założony przez niniejszego użytkownika |
» 2026-01-02 12:25:11 Wygenerować szum i nakładać shaderem Sprite sprite = new Sprite(tex.texture); sprite.setPosition(_rect.x, _rect.y); sprite.setSize(_rect.width, _rect.height); Texture mask = TexturesManager.getTexture("tex/cards/noise.png").texture;
Renderer.batch.setShader(NoiseShader.shader); NoiseShader.shader.bind(); NoiseShader.shader.setUniformi("u_mask", 1); mask.bind(1); prite.getTexture().bind(0);
sprite.draw(Renderer.batch); Renderer.batch.setShader(null);
Shader import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.glutils.ShaderProgram;
public class NoiseShader {
static ShaderProgram shader;
static { shader = new ShaderProgram( Gdx.files.internal("shs/vertex.glsl"), Gdx.files.internal("shs/mask.glsl") );
if (!shader.isCompiled()) System.out.println(shader.getLog()); }
}
shs/vertex.glsl attribute vec4 a_position; attribute vec4 a_color; attribute vec2 a_texCoord0;
uniform mat4 u_projTrans;
varying vec4 v_color; varying vec2 v_texCoords;
void main() { v_color = a_color; v_texCoords = a_texCoord0; gl_Position = u_projTrans * a_position; }
shs/mask.glsl #ifdef GL_ES precision mediump float; #endif
varying vec2 v_texCoords;
uniform sampler2D u_texture; // sprite uniform sampler2D u_mask; // noise
void main() { vec4 color = texture2D(u_texture, v_texCoords); vec4 noise = texture2D(u_mask, v_texCoords);
float strength = 0.4;
vec3 finalColor = mix(color.rgb, color.rgb - noise.rgb, strength);
gl_FragColor = vec4(finalColor, color.a); }
|
|
| « 1 » |