Bienvenue sur le profil Malt de Sylvain !

Malt vous permet d'accéder aux meilleurs consultants freelances pour vos projets. Contactez Sylvain pour échanger sur votre besoin ou recherchez d'autres profils sur Malt.

Sylvain Doremus

développeur c++, opengl et vulkan

En télétravail depuis Estrées-sur-Noye

  • 49.7867
  • 2.3302
  • Tarif indicatif 600€ / jour
  • Expérience 7 ans et +
  • Taux de réponse 75%
  • Temps de réponse 24h
Proposer un projet La mission ne démarrera que si vous acceptez le devis de Sylvain.

Disponibilité non-confirmée

À temps partiel, Soirs & week-ends

Proposer un projet La mission ne démarrera que si vous acceptez le devis de Sylvain.

Localisation et déplacement

Localisation
Estrées-sur-Noye, France
Télétravail
Effectue ses missions majoritairement à distance

Préférences

Durée de mission
  • ≤ 1 semaine
  • ≤ 1 mois
  • entre 1 et 3 mois
  • entre 3 et 6 mois
  • ≥ 6 mois

Vérifications

Influence

Langues

  • Anglais

    Bilingue ou natif

  • Français

    Bilingue ou natif

Catégories

Compétences (7)

Sylvain en quelques mots

Développeur d'applications, ayant envie de travailler dans l'imagerie numérique 2D et/ou 3D.
Connaissance étendue de DirectShow et d'OpenGL (2.x, 3.x et 4.x), connaissance de Vulkan.
Connaissance étendue du développement multiplateforme (GNU/Linux et Windows).

Portfolio

Expériences

Projet personnel

Jeux vidéo & animation

Procedural Generator

janvier 2008 - Aujourd'hui

Procedural Generator est une application permettant de charger divers plugins de génération / traitement d'image (générateur).
L'application principale charge les générateurs, permet la sélection du générateur actif et affiche le résultat de son travail.
Le travail des générateurs est découpé en 2 étapes :
1. CPU step : génération d'image en utilisant le CPU.
2. GPU step : traitement d'image via le GPU.


La GPU step utilise OpenGL et permet l'utilisation des shaders GLSL.
La CPU step est multithreadée afin d'accélérer les calculs.
Certains générateurs peuvent n'utiliser que la CPU step, tels Perlin Noise, Life Game ou Diffusion Limited Aggregation.
D'autres peuvent n'utiliser que la GPU step, tels Shader Effects ou Text Effects.
Certains enfin peuvent utiliser les 2, tel Shader Webcam.

Fonctionnalités :
  • Calculs CPU multithreadés
  • Les générateurs sont des plug-ins pour plus de flexibilité
  • Jeu de la vie (Life Game) : classique, buggé , coloré
  • Perlin Noise (marbre, turbulences, parametré)
  • Diagrammes de Voronoï (distances euclidienne, euclidienne au carré, manhattan, minkowski, chebychev)
  • Iterated Function Systems (Sierpinski carpet et gasket, Koch curve, ...)
  • Limited Diffusion Aggregation
  • Post-traitement d'image sur le CPU (flou gaussien, réduction de bruit anisotropique et lineaire, accentuation des contours ...)
  • Post-traitement d'image sur le GPU (via GLSL)
  • Webcam + post-traitement d'image sur le GPU (via GLSL)
  • Programmation GLSL pour faire des démos
  • Traitement d'image via OpenCL (Version 2.0.0)
  • Enregistrement du résultat en image
  • Enregistrement du résultat en vidéo (Version 2.0.0)

Procedural Generator regroupe plusieurs projets à générer avec CMake :
  • Generator : libraire dynamique regroupant les fonctions et classes communes aux générateurs
  • Les générateurs : plug-ins, 1 par générateur
  • ProceduralGenerator : exécutable de l'application principale
OpenGL wxWidgets C++ Traitement d'image

Projet personnel

Jeux vidéo & animation

Castor3D

août 2006 - Aujourd'hui

Moteur 3D multi-plateformes utilisant OpenGL.
Il fonctionne sur les plateformes Linux (GTK) et Windows.
Pour l'instant seul OpenGL est supporté, et un renderer Vulkan est prévu.
Ce moteur propose comme fonctionnalités :

  • Normal Mapping.
  • Parallax Occlusion Mapping.
  • Rendu HDR avec application de divers algorithmes de Tone Mapping.
  • Rendu PBR (Metallic ou Specular) et Legacy (diffuse/specular/shininess).
  • Deferred rendering.
  • Screen Space Ambient Occlusion.
  • Shadow Mapping (directional, point et spot lights)
  • Architecture modulaire, à base de plug-ins.
  • Shaders (GLSL), avec écriture du code du shader directement depuis le code C++.
  • Génération automatique de shaders, en fonction de la configuration de la passe.
  • Scènes décrites dans un format texte facilement compréhensible et extensible.

Les différents types de plug-ins supportés sont: Importer, Divider, Renderer, PostEffect, Generic.

Les plug-ins de type Importer permettent l'ajout de l'importation de nouveaux formats de fichiers de maillages.
Sont actuellement implémentés :
  • AssimpImporter, utilisant la bibliothèque assimp pour l'import d'une grande variété de formats.
  • PlyImporter, permettant l'import de gros maillage PLY (pour lesquels assimp éprouve des difficultés).
  • ObjImporter, permettant l'import de maillages au format obj.
  • FbxImporter, basé sur FbxSDK et permettant l'import de maillages au format fbx.
  • D'autres importeurs sont implémentés, et disponibles si assimp n'est pas installé: ASE, MD2, MD3, 3DS, LWO.

Les plug-ins de type Divider permettent d'implémenter des algorithmes de subdivision de maillage.
J'ai pour l'instant implémenté les algorithmes suivants :
  • PN-Triangles ;
  • Phong ;
  • Loop.

Les plug-ins de type Renderer sont le support des API de rendu.
Sont actuellement implémentés :
  • GlRenderSystem, pour utiliser OpenGL.
  • TestRenderSystem, un renderer de test, ne faisant à peu près rien, mais permettant l'implémentation de tests.

Les plug-ins PostEffect permettent l'application d'effets post-rendu.
Sont implémentés pour l'instant :
  • HDRBloom ;
  • FXAA ;
  • GrayScale.

Enfin, les plug-ins de type Generic ont pour but d'étendre les fonctionnalités globales du moteur.
Pour l'instant un seul plug-in de ce type est implémenté :
  • CastorGui, étendant les fichiers de scène pour ajouter et dessiner des IHM (boutons, zones de texte, ...) via les incrustations 2D.

En plus du moteur et des divers plug-ins, le projet est accompagné de diverses applications :
  • CastorViewer, visualiseur de scènes utilisant Castor3D.
  • ImgConverter, projet de conversion de tout type d'images vers XPM ou ICO.
  • CastorDvpTD : petit jeu de type Tower Defense créé lors du Week End Jeux Vidéo du site Develeoppez.com.

La documentation du projet (en français et en anglais) est contenue dans les headers et peut être générée via Doxygen.
Le projet en lui-même est compilable sur les plateformes supportées en utilisant CMake.

Programming Research

Edition de logiciels

Software Developer

Thames Ditton, UK

mars 2015 - Aujourd'hui

Maintenance corrective et évolutive sur QAC, application d'analyse statique de code C. Ce composant est compilé en C++, en suivant la norme C++11.

Maintenance corrective et évolutive sur le composant dataflow, utilisé pour faire de l'analyse de flux de données, en utilisant le moteur de résolution Satisfiability Modulo Theory (SMT). Ce composant est compilé en C++, en suivant la norme C++11.

Uniformisation du système de génération, en utilisant CMake.

Les développements sont faits en utilisant VisualStudio 2015 Update 2 et/ou GCC 4.7.2, sur les plateformes Windows et Linux.
C++11 CMake Linux Windows

Alpes Ingénierie Informatique

Edition de logiciels

Développeur / Chef de projet

04700 Oraison, France

février 2010 - mars 2015

Développement d'une application de gestion de documents et de livrables :
  • SGBD SQLite afin de ne pas avoir à installer l'application.
  • MFC/GDI/GDI+ pour personnaliser l'IHM (effets web).
  • Module de statistiques, avec divers modes d'affichage : histogramme, camembert, tableaux.
  • C++, sous Visual Studio 2010.

Création d'un décodeur de notices UNIMARC (format d'échange utilisé en bibliographie)
  • Multithreadé.
  • Base de données MSSQL, utilisation d'ODBC.
  • Lit des fichiers UNIMARC (de 1 à 100 000 notices), récupère les notices, insère les données décodées en BDD.
  • Création d'un UDT, A2iDate, pour gérer les dates avant JC, en C#.
  • C++, sous Visual Studio 2010.

Améliorations d'une application d'acquisition vidéo s'appuyant sur DirectShow :
  • Support des sources Full HD.
  • Enregistrement en MKV, encodage en x264.
  • Encodeur: nVIDIA NVENC.
  • Décodeur: nVIDIA CUVID.
  • Fonctions de conversion de domaines de couleur, en CUDA et SSE2 (RGB, ARGB, YUY2, UYVY, YUV).
  • Support de 16 flux, dont 8 en Full HD.
  • C++, sous Visual Studio 2010.

Développement d'un flowsheet pour une application de supervision de nettoyage chimique de générateur de vapeur :
  • Affiché sur 2 écrans LCD de 42 pouces.
  • Utilisation de Direct2D pour dessiner le flowsheet.
  • C++ sous Visual Studio 2010.

Développement d'une application de supervision du contrôle d'un générateur de vapeur pour Areva :
  • Application modulaire au possible, pour pouvoir ajouter des équipements avec le minimum de code à écrire.
  • C++ sous VisualStudio 2012, CMake et Boost.

FDS SoftMedia

Jeux vidéo & animation

Développeur

92000 Nanterre, France

octobre 2006 - décembre 2009

Développement d'un ActiveX/plugin Gecko, Elypse Player:
  • Utilisation du moteur 3D open source Ogre3D.
  • Utilisation du moteur physique open source ODE.
  • Permet la création de scènes 2D/3D scriptables.
  • Capable de lire un fichier de scène, de l'initialiser, puis d'exécuter les scripts, permettant des interactions avec l'utilisateur, des animations, la gestion de physique, gestion du son.
  • C++, sous VisualStudio 2005 puis 2008, et utilisation de Boost.

Développement d'un éditeur de scènes pour Elypse Player, Troll Editor :
  • Utilisation de wxWidgets pour la portabilité de l'interface graphique.
  • Permet la création de scènes en positionnant les objets dans le monde 3D
  • Permet la création de scripts et leur compilation.
  • Test des scènes ainsi créées.
  • Ligne de temps permettant à l'utilisateur d'insérer des évènements à des instants spécifiques et pour une durée spécifique.
  • C++, sous VisualStudio 2005 puis 2008, et utilisation de Boost.

Création d'un chat et d'un serveur de jeux, en C++, sous GNU/Linux en utilisant Boost.Asio et Boost.Thread. Ce serveur a été développé en utilisant Anjuta.

Création de mini jeux et d'un chat 3D pour le site www.kazugame.com, en utilisant Troll Editor. Installation d'un serveur web, email et DNS, sur un GNU/Linux, Debian Etch.
C++ Boost Ogre3D wxWidgets

Formations