LibGDX: Wie kann ich TextureRegion-Vertecies in den Shader (GPU) laden, um einen Effekt darauf anzuwenden?Java

Java-Forum
Guest
 LibGDX: Wie kann ich TextureRegion-Vertecies in den Shader (GPU) laden, um einen Effekt darauf anzuwenden?

Post by Guest »

Ich habe die Shader-Datei „crop.frag“ erstellt, um den Effekt in die Textur als Kreisform zuzuschneiden:

Code: Select all

#version 150

varying vec4 v_color;
varying vec2 v_texCoord0;

uniform sampler2D u_texture;

vec4 borderColor;
uniform vec3 outlineColor;
uniform float outlineAlpha;
uniform float offset;
uniform float outerRadius;
uniform float innerRadius;
uniform float intensity;
uniform float brightness;

void main() {
vec4 color = texture2D(u_texture, v_texCoord0) * v_color;

borderColor = vec4(outlineColor.rgb, outlineAlpha);

// circle crop
vec2 relativePosition = v_texCoord0.xy - 0.5;
float len = length(relativePosition);
float vignette = smoothstep(outerRadius, innerRadius, len);
color.rgba = mix(color.rgba, color.rgba * vignette, intensity);

// make outline over circle cropped
float vignetteOutline = smoothstep(outerRadius - offset / 100.0, innerRadius - offset / 100.0, len);
borderColor.rgba = mix(borderColor.rgba, color.rgba * vignetteOutline, color.a * vignetteOutline);

gl_FragColor = color * (borderColor + brightness + 0.20);
}
Das Anwenden dieses Shaders auf Textur funktioniert einwandfrei. Aber wenn ich es auf eine einzelne TextureRegion von Texture anwende, wird der Effekt nur auf region.getTexture(); angewendet.
Also, ich will um Region-Scheitelpunkte in der Shader-Datei zu ändern, denke ich.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post