Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Java libGDX] Szum na obrazie

Ostatnio zmodyfikowano 2026-01-02 13:45
Autor Wiadomość
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:
P-183736
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);
}


P-183737
« 1 »
  Strona 1 z 1