Procedural Generator (C++)

Description

Il s'agit d'une application permettant de charger différents plugins de manipulation d'images.

Fonctionnalités

  • Possibilité d'enregistrer des vidéos, via OpenCV ou ffmpeg
  • Compatible avec OpenCL

Fonctionnement

L'application principale permet de charger les plugins, sélectionner le plugin courant, afficher le résultat des calculs d'image.

Les plugins fonctionnent en 2 étapes : calcul de l'image, puis affichage de l'image.
  • La partie affichage de l'image utilise OpenGL et permet l'utilisation de shaders GLSL.
  • La partie calcul de l'image est multithreadée afin d'améliorer les performances.
Certains plugins n'utilisent essentiellement que la partie calcul (Perlin Noise, Life Game, ...), d'autres utilisent essentiellement la partie affichage (Shader Effects, Text Effects).

Version 2.0.0

Date : 30/03/2015

Fonctionnalités

  • Nouveau plugin : OCLProgramming, pour le traitement d'image via des kernels OpenCL.
    Effet de gel via OpenCL
  • Generator est maintenant une bibliothèque dynamique.
  • Affichage du panneau de configuration via des incrustations.
    Exemple de panneau de configuration. Le panneau de configuration caché.
  • Suppression de la dépendance à wxWidgets pour Generator et les plug-ins
  • Révision complète de l'imbrication des étapes CPU et GPU.
  • Possibilité d'enregistrer des vidéos, via OpenCV ou ffmpeg.

Téléchargements



Version 1.3.2

Date : 30/07/2013

Fonctionnalités

  • Nouveau plugin : GPUProgrammation, proche de Shader Effects mais avec moins de llimitations : image optionnelle ainsi que le vertex shader
    Chocolux Mandelbulb You Massive Clod Leizex Slisesix To the road a ribbon
  • Ajout de la possibilité de passer en plein écran via un double clic sur la fenêtre
  • Ajout de résolutions

Téléchargements




Version 1.3.0

Date : 16/07/2012

Fonctionnalités

  • Révision du système de threads : Les générateurs sont maintenant threadés et étendent wxEvtHandler.
  • La communication entre les générateurs et les threads a été revue : elle s'effectue au travers d'évènements.
  • Les générateurs et threads de travail sont maintenant détachés (plus joignables).
  • La création des ConfigPanel a été déplacée : les générateurs contiennent la structure, le panel est créé par l'application principale (comme ça plus de problèmes de memory leaks sous MS-Windows)
  • Révision de la communication entre les générateurs et les ConfigPanel, elles se fait maintenant au travers d'évènements (comme il se doit).

Corrections de bugs

  • Correction de GaussianBlur dans le plugin Image Effects
  • Correction d'un crash de DiffusionLimitedAggregation en résolutions non carrées
  • Correction de ShaderWebcam suz GNU/Linux.

Téléchargements



Version 1.2.3.0

Date : 20/06/2012

Fonctionnalités

  • Nouveau plugin : ShaderWebcam, permettant l'application de shaders GLSL sur une vidéo de webcam
    Shader explosion appliqué à la webcam
  • Abandon de boost::thread, utilisation de wxThread à la place.
  • Amélioration des transferts de texture vers/à partir de la RAM en utilisant 2 Pixel Buffer Objects.
  • Modification du CMakeLists.txt afin d'avoir un dossier binaries à la mode GNU/Linux.
  • Ajout d'un FindOpenCV.cmake. J'ai repris celui donné sur le wiki d'OpenCV en le modifiant un peu afin de prendre en charge les versions les plus récentes.
  • Suppression des statiques BufferDeclaration et BufferDeclarationElements qui causaient un crash à la fermeture.

Corrections de bugs

  • Correction d'un manque de réactivité de l'interface, en augmentant le temps d'attente de la boucle de rendu.

Téléchargements



Version 1.2.2.0

Date : 08/09/2011

Fonctionnalités

  • Le jeu de la vie est implémenté de façon correcte.
    Jeu de la vie
  • Une version buggée du jeu de la vie me sert pour tenter de faire une texture procédurale proche de l'eau.
    Jeu de la vie buggé
  • Plugin de Diffusion Limited Aggregation
    Diffusion Limited Aggregation
  • Ajout d'un panel de configuration pour les générateurs configurables
    Panneau de configuration
  • Ajout du Perlin Noise
    Perlin Noise Turbulences Perlin Noise Marble Perlin Noise paramétrable
  • Mise en thread des fonctions de génération de façon a garder une IHM réactive
  • Implémentation du diagramme de Voronoï
    Diagramme de Voronoï (distance de Minkowski d'ordre 4) En prenant en compte plus d'une graine pour le calcul de la couleur (ici 32)
  • Plugin de post-traitement d'images en software
    Image chargée Application d'un effet Second effet appliqué
  • Plugin de post-traitement d'images en hardware (via GLSL)
    Application de shader sur une image Effet d'implosion identique à celui de la version software Plusieurs effets appliqués consécutivement
  • Plugin d'affichage de texte en utilisant OpenGL et en chargeant les polices avec FreeType
    Texture + texte coloré Image + texte texturé
  • Possibilité de redimensionner la fenêtre
  • Possibilité de faire des captures d'écran (pour sauvegarder une texture)
  • Version plus colorée du jeu de la vie (les cellules meurent progressivement)
    Jeu de la vie coloré
  • Gestion des Iterated Function Systems
    Iterated Function System

Téléchargements




Image Large