Sie können Fragment-Shader mit Processing ausführen, einem Tool, mit dem selbst Anfänger problemlos beginnen können. Sie können in Java oder Python schreiben.
Links Java-Code und rechts Python-Code.
Legen Sie zunächst das Programm, das den Inhalt des Shaders geschrieben hat, in den Datenordner.
data/FragmentShader.glsl
uniform vec2 resolution;
uniform float time;
void main() {
vec2 uv = -1. + 2. * gl_FragCoord.xy / resolution.xy;
gl_FragColor = vec4(
abs( sin( cos( time + 3. * uv.y ) * 2. * uv.x + time)),
abs( cos( sin( time + 2. * uv.x ) * 3. * uv.y + time)),
1.0,
1.0);
}
Schreiben Sie Folgendes in das Hauptprogramm Verarbeitung. Geben Sie einfach FragmentShader.glsl und den Dateinamen an und es wird im Datenordner gesucht.
PShader sd;
void setup() {
size(600, 600, P2D);
sd = loadShader("FragmentShader.glsl");
}
void draw() {
sd.set("time", millis() / 1000.0);
sd.set("resolution", (float)width, (float)height);
shader(sd);
rect(0, 0, width, height);
}
Standardmäßig kann nur Java als Spracheinstellung oben rechts ausgewählt werden. Sie können den Python-Modus einfach hinzufügen.
(Dieser Link ist mit einem Bild leicht zu verstehen) https://pycarnival.com/processingpy1/
Fügen Sie auf die gleiche Weise genau dieselbe Shader-Datei wie in Java in den Datenordner ein
data/FragmentShader.glsl
uniform vec2 resolution;
uniform float time;
void main() {
vec2 uv = -1. + 2. * gl_FragCoord.xy / resolution.xy;
gl_FragColor = vec4(
abs( sin( cos( time + 3. * uv.y ) * 2. * uv.x + time)),
abs( cos( sin( time + 2. * uv.x ) * 3. * uv.y + time)),
1.0,
1.0);
}
Schreiben Sie Folgendes in das Hauptprogramm Verarbeitung. Durch Deklarieren einer Variablen in global sd kann auf dasselbe Shader-Objekt sowohl von der Setup-Funktion als auch von der Draw-Funktion verwiesen werden.
def setup():
global sd
size(600, 600, P2D)
sd = loadShader("FragmentShader.glsl")
def draw():
global sd
sd.set("time", millis() / 1000.0)
sd.set("resolution", float(width), float(height))
shader(sd)
rect(0, 0, width, height)
Lassen Sie uns nun GLSL in Java und Python mit Processing genießen!
Recommended Posts