Vous pouvez exécuter des shaders de fragments avec Processing, un outil avec lequel même les débutants peuvent facilement démarrer. Vous pouvez écrire en Java ou Python.
Code Java à gauche et code Python à droite.
Tout d'abord, placez le programme qui a écrit le contenu du shader dans le dossier de données.
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);
}
Écrivez ce qui suit dans le programme principal Traitement. Spécifiez simplement FragmentShader.glsl et le nom du fichier et il recherchera dans le dossier de données.
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);
}
Par défaut, seul Java peut être sélectionné comme paramètre de langue en haut à droite, Vous pouvez facilement ajouter le mode Python.
(Ce lien est facile à comprendre avec une image) https://pycarnival.com/processingpy1/
De la même manière, placez exactement le même fichier shader que Java dans le dossier data
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);
}
Écrivez ce qui suit dans le programme principal Traitement. En déclarant une variable dans global sd, le même objet shader peut être référencé à la fois par la fonction setup et la fonction draw.
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)
Maintenant, profitons de GLSL en Java et Python avec Processing!
Recommended Posts