Exemple de code pour démarrer avec le shader GLSL en traitement (Java ou Python)

introduction

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.

Écran d'exécution

Code Java à gauche et code Python à droite. processing_shader2.jpg

Lorsque vous souhaitez écrire en Java

la mise en oeuvre

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);
}

Quand vous voulez écrire en Python

Installation en mode Python

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/

la mise en oeuvre

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

Exemple de code pour démarrer avec le shader GLSL en traitement (Java ou Python)
Comment démarrer avec Python
Démarrez avec Python avec Blender
Commençons avec TopCoder en Python (version 2020)
Exemple de code pour obtenir oauth_token et oauth_token_secret de l'API Twitter en Python 2.7
Zubu amateur veut démarrer Python
5 raisons pour lesquelles le traitement est utile pour ceux qui veulent se lancer avec Python
J'ai essayé de démarrer avec le script python de blender_Part 01
J'ai essayé de démarrer avec le script python de blender_Partie 02
Super Primer to python - Premiers pas avec python3.5 en 3 minutes
Entrez en contact avec la programmation fonctionnelle en JavaScript ou Python 3
Obtenez le code du pays avec python
Commencez avec Python! ~ ② Grammaire ~
Connaissances minimales pour démarrer avec le module de journalisation Python
Envoyer des notifications push aux applications iOS avec Python2 (avec un exemple de code)
Commencez avec Python! ~ ① Construction de l'environnement ~
[Python] Un mémo que j'ai essayé de démarrer avec asyncio
Comment démarrer avec Scrapy
Comment démarrer avec Django
Résumé de l'exemple de code de traitement parallèle / parallèle Python
[Python] Pour démarrer avec Python, vous devez d'abord vous assurer que vous pouvez utiliser Python correctement.
Comment obtenir la différence de date et d'heure en secondes avec Python
Commencez avec Python en 30 minutes! Créer un environnement de développement et apprendre la grammaire de base
Obtenez des données supplémentaires vers LDAP avec python
Notes d'étape pour démarrer avec django
Essayez de vous connecter à qiita avec Python
Rendement Python express en JavaScript ou Java
J'ai essayé de commencer avec Hy
Exemple de script pour piéger les signaux en Python
Comment utiliser BigQuery en Python
Comment obtenir stacktrace en python
Traitez facilement des images en Python avec Pillow
Pour faire fonctionner la station d'horodatage en Python
Obtenir la liste de codes EDINET en Python
Comment les débutants en Python commencent avec Progete
Exemple de conversion en ondelettes d'images en Python
[Blender x Python] Commençons avec Blender Python !!
Comment générer un code QR et un code à barres en Python et le lire normalement ou en temps réel avec OpenCV
Comment démarrer le projet Python en 2020 (Windows WSL et Mac commun)
Pour ceux qui veulent apprendre Excel VBA et se lancer avec Python
Comment obtenir une liste de fichiers dans le même répertoire avec python
Démarrer avec Python avec 100 coups sur le traitement du langage
Jeu à la main en Python (commençons avec AtCoder?)
MessagePack-Try pour lier Java et Python avec RPC
Le moyen le plus simple de démarrer avec Django
Comment faire un traitement parallèle multicœur avec python
Stratégie sur la façon de monétiser avec Python Java
Principes de base de MongoDB: Premiers pas avec CRUD avec JAVA
Introduction à Tornado (1): Framework Web Python démarré avec Tornado
Notes personnelles sur le code doc Python dans Sphinx
J'ai essayé d'obtenir des données CloudWatch avec Python
Une manière intelligente de chronométrer le traitement avec Python
Obtenir des pointeurs vers des membres de structure dans les ctypes Python
Exemple de notification Slack avec python lambda
Comment obtenir les fichiers dans le dossier [Python]
Comment utiliser tkinter avec python dans pyenv
Utiliser Python dans un environnement Anaconda avec VS Code
Premiers pas avec AWS IoT facilement en Python
Traitement parallèle sans signification profonde en Python