Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Membre expert
    [ANN] BZScene bibliothèque multimédia 2D, 3D & audio pour Lazarus et FPC
    Bonjour à tous,

    cela fait un bon moment maintenant que j'en parle ici et là dans ce forum. J'ai le plaisir de vous faire part que je viens enfin de mettre en ligne les sources [Version Alpha] de cette bibliothèque spécialisée.

    Petite Histoire :
    L’accès aux bitmaps par GLscene est confus et il subsiste des bugs (conversion Delphi=>Lazarus)
    De plus la gestion des bitmaps avec FPC et la LCL est quelques peu "capricieuse".
    Mixer les possibilités de GLScene en lui rajoutant une gestion des bitmaps optimisée. Tout était bénef !
    Il m'a donc également semblé évident de rajouter les fonctionnalité de la librairie "GraphiEx"
    de Mike Lischke (http://www.soft-gems.net/) qui est le créateur initial de GLScene.

    La base de tout ce "beanz" en autres, a commencé, il y a bientôt plus de 3 ans


    Passionné par tout ce qui à un rapport avec le traitement d'image, les effets en temps réel, la 3D et l'audio, ce fût naturel pour moi de commencer cette aventure.

    C'est bizarre des fois de voir comment le temps passe et de se rendre compte que certaines choses ; même en informatique ne change pas.
    La méthode ici pour gérer et manipuler une image le plus rapidement possible est la même qu'il y a plus de 20 ans sous DOS avec les Modes X/Y. La méthode reste quasi identique
    De quoi se refaire des demoscenes, des jeux 2D à l'ancienne facilement... avec de très bonnes performances.
    Couplé à OpenGL/Vulkan voir même DirectX, ça peux faire mal.

    Description rapide :
    BZScene est divisé en neuf groupes principaux, afin de faciliter le débogage et le développement en général.

    • Core : Contient les unités communes à la bibliothèque
    • Dependencies : Contient les unités externes utilisée, comme par exemple Freetype, PasJpeg... )
    • Maths : Contient les unités découlant de mathématique vectorielles et de base. Ces unités sont optimisée et utilisent les instructions SIMD : SSE/AVX
    • Image : Contient les unités relatives à la gestion et la manipulation des bitmaps
    • Audio : Contient les unités relatives à la gestion du son
    • Utils : Contient des unités qui regroupent des méthodes utiles dans différents domaines)
    • Engine : Contient les unités des moteurs de rendu 2D et 3D. "encore en cours de dev"
    • Components : Contient les unités des composants pouvant être installés dans l'EDI
    • DevTools : Contient des unités utiles pour le développeur


    Les capacités générales de BZScene :
    2D

    • Manipulation des bitmaps uniquement en 32Bits au format de couleur RGBA ou BGRA (Linux / Windows) afin d'optimiser les performances d'affichage
    • Affichage avec ou sans transparence en fonction du Système et de l'interface (gtk, qt, carbon,...)
    • Convertion des couleurs dans plusieurs formats(de 1 à 128 bits par pixel) :
      - rgba, bgra, hsl, hsv, (_les modes cmyk, cie, yuv, lab, lch... seront supporté dans le futur_)
    • Formats d'image supportés en lecture :
      - BMP, JPEG, PNG, TGA, PCX, XPM, PGM, PBM, PGM, GIF, WEBP
      - Autres formats supportés dans le futur* : , APNG, MNG, ICO, CUR, DDS, KTX, TIFF, PCD, PSD, XCF,IFF/LBM, FLI/FLC, CUT..._
    • Formats d'image supportés en écriture (pour le moment) : BMP, TGA, JPEG
    • Formats d'image supportés en lecture et écriture :
      - BMP, TGA et JPEG
      - _Autres formats supportés dans le futur_ : PNG
    • Accès aux pixels optimisé
    • Capacité de dessiner des formes diverses :
      - lignes, rectangles, cercles, polygones, textes, avec ou sans adoucissement
    • Plusieurs méthodes de remplissage :
      - couleur unie, dégradé, ou par placage de texture
    • Nombreux filtres sur les couleurs (+ de 50) disponibles :
      - Luminosité, Saturation, Inversion, Niveaux de gris, ...
    • Filtres de segmentation, détection des contours :
      - par seuillage, Canny, Marr Hildreth, Gradient, Boolean...
    • Appliquer des effets spéciaux :
      - Twirl, Transformation polaire, sinuosidale...
    • Plusieurs modes de transformations :
      - Stretch, StretSmooth, wnSample, Resample, rotation, mirroir...
    • Mode de fusion :
      - Normal, Add, Sub, Mul, Difference, Average, Overlay, Screen...
    • filtres d'interpolations supportés :
      - Box, Hermit, Cubic, Lanscoz, Mitchell, Hamming, Kayser...
    • plus plein d'autres petites choses que je vous laisse découvrir


    3D
    Pour le moment pas de 3D, c'est en cours de développement

    Audio
    • Moteur audio supporté :
      - OpenAL
    • Formats audio supportés en lecture seulement :
      - Wav, mp3, ogg, module (mod, xm, s3m...)


    Afin que cette bibliothèque puisse être utilisée rapidement j'ai énormément commenté les interfaces (une aide sera donc disponible dans l'EDI lors de complémentation du code).
    De plus j'ai également généré un documentation à l'aide de "PASDOC" celle-ci est complète à plus de 80%.
    A titre d'information, les commentaires à eux seul représente environ 20% du total des lignes de code.

    A noter, je n'ai pas encore testé intensivement BZScene sous Linux et dans des environnements 32 bit, il se peut donc que des bugs mineurs peuvent apparaître.

    Quelques captures d'écran


    Pour ce qui est de l'installation et de comment commencer à utiliser BZScene je vous laisse vous référer en visionnant la documentation présente dans le dossier "Documentation" (original comme nom, non ?) de BZScene en ouvrant le fichier "Index.html"


    Merci d'avance de votre soutien et toutes vos suggestions et contributions future dans l'amélioration ce projet.
    N'hésitez pas à me poser toutes vos questions

    et hop pour finir la première partie de "Old School Is Back"



    Corialement et merci encore d'avance pour votre aide et de votre soutien.

    Jérôme (BeanzMaster)
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  2. #2
    Membre averti
    Merci pour cet ÉNORME travail.

    je vais tester tout cela par rapport à mes besoins très spécifique

    pour les questions et les remontés de bugs, on fait cela ici ?
    ----------------------------------------
    Site perso Dergen.fr
    Cartographe officiel du JDR Polaris

  3. #3
    Membre expert
    Salut Merci

    Par contre ce n'est pas encore compilable sous Linux, des erreurs m'ont échappé et je suis en train de préparer un correctif, d'ici la fin de semaine.

    N'hésite pas si tu as des questions ou si tu rencontres des problèmes.

    A+

    Jérôme
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  4. #4
    Membre averti
    Sous Delphi, je maîtrise parfaitement l'installation de packages, mais pas vraiment sous Lazarus, si tu avais un petit texte simple pour bien expliquer comment j'installe BZScene sous Lazarus sans faire de boulette, je t'en serait des plus reconnaissant.

    [EDIT] oups, je n'avais pas vu que tu avais bien fait les choses, et que l'installation était bien expliqué dans la documentation
    ----------------------------------------
    Site perso Dergen.fr
    Cartographe officiel du JDR Polaris

  5. #5
    Membre averti
    Ma config:
    Windows 10 pro uptodate.
    Lazarus 2.0.8 64 bits.
    32 Go de RAM
    .

    Erreur pendant la compilation de BZSENE_ENGINE_RT:


    Je n'ai pas été plus loin, ne voulant pas pourrir le reste de l'installation.
    ----------------------------------------
    Site perso Dergen.fr
    Cartographe officiel du JDR Polaris

  6. #6
    Membre expert
    Citation Envoyé par der§en Voir le message
    Sous Delphi, je maîtrise parfaitement l'installation de packages, mais pas vraiment sous Lazarus, si tu avais un petit texte simple pour bien expliquer comment j'installe BZScene sous Lazarus sans faire de boulette, je t'en serait des plus reconnaissant.

    [EDIT] oups, je n'avais pas vu que tu avais bien fait les choses, et que l'installation était bien expliqué dans la documentation
    Pas de soucis





    NOTE : Assures toi de bien copier la DLL freetype dans le dossier de sortie des executables ou le mieux de le mettre dans c:\windows\system32
    Les DLLs se trouvent dans le dossier Externals

    Citation Envoyé par der§en Voir le message
    Ma config:
    Windows 10 pro uptodate.
    Lazarus 2.0.8 64 bits.
    32 Go de RAM
    .

    Erreur pendant la compilation de BZSENE_ENGINE_RT:


    Je n'ai pas été plus loin, ne voulant pas pourrir le reste de l'installation.
    Ce paquet n'est pas vraiment obligatoire, Les methodes fournis dedans ne sont utilisées que dans 2 exemples (Graphic/SoftwareShader et Graphic/SpriteEngine)

    Pour corriger l'erreur commentes ou supprime simplement "Override;" qui se trouve à la ligne 115 de l'unité BZSprite.Pas dans le dossier Sources/Engine

    procedure Assign(const Value: TBZCustomBaseSprite); //override;



    Je suis entrain de préparer un premier correctif, (surtout pour que cela fonctionne sous Linux, Je suis entrain de tester tous les paquets et exemples un par un). J'uploaderais le tout d'ici la fin de semaine

    Si non la documentation comment la trouves tu ? c'est compréhensible ou est ce qu'il y a des zones sombre ?


    Merci d'avance de tes tests et retours

    A+

    Jérôme
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  7. #7
    Membre averti
    Après cette petite modif, j'ai continué a compiler les packages, jusqu'au fatidique BZScene_Controls_dt, qui a compilé sans problème, la ou cela c'est gâté c'est après la phase de recompilation de l'IDE, Lazarus, n'a jamais plus voulu se relancer !

    J'ai supprimé le "lazarus.exe" pour renommer son OLD mais a chaque tentatives de recompilation de l'IDE, il ne veux plus se lancer...

    Le fichier log, ne dis absolument rien sur le pb:

    --------------------------------------------------------------------------------
    [STATUS] : [ Start Logging ] - [ 12/05/2020 14:13:46 ] lazarus.exe
    --------------------------------[ Informations ]--------------------------------
    Compilé : à 14:13:18 le 2020/05/12
    FPC : 3.0.4
    LCL : 2.0.8.0
    OS Cible : Win64
    CPU Cible : x86_64
    Widget : win32/win64
    ------------------------[ Informations complémentaires ]------------------------
    OS Informations : Windows 10 ( Version : 10.0 Build : 18363 )
    Type CPU : Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz
    Dossier courrant : C:\lazarus
    --------------------------------------------------------------------------------


    --------------------------------------------------------------------------------
    [STATUS] : [ Conseils : 0 | Warnings : 0 | Erreurs : 0 | Exceptions : 0 ]
    --------------------------------------------------------------------------------
    [STATUS] : [ Stop Logging] - [ 12/05/2020 14:13:46 ] lazarus.exe
    ----------------------------------------
    Site perso Dergen.fr
    Cartographe officiel du JDR Polaris

  8. #8
    Membre expert
    Citation Envoyé par der§en Voir le message
    Après cette petite modif, j'ai continué a compiler les packages, jusqu'au fatidique BZScene_Controls_dt, qui a compilé sans problème, la ou cela c'est gâté c'est après la phase de recompilation de l'IDE, Lazarus, n'a jamais plus voulu se relancer !

    J'ai supprimé le "lazarus.exe" pour renommer son OLD mais a chaque tentatives de recompilation de l'IDE, il ne veux plus se lancer...

    Le fichier log, ne dis absolument rien sur le pb:
    Attention avec les DT "designtime" il faut faire utiliser --> installer et non compiler le paquet.

    C'est plutôt bizarre, car se paquet contient qu'un seul composant "TBZImageViewer". De plus si le fichier "resource" pour l'icone du composant cela t'aurai avertie. Je vais désinstaller les paquets chez moi et réinstaller pour vérifier, mais c'est surprenant
    Ce log tu l'as pris ou ? car normalement il est généré avec avec une application. Est-ce que tu as bien copié la DLL "libfreetype-6.dll" ? (met la dans c:\windows\system32)
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  9. #9
    Membre expert
    Vraiment, bizarre je viens de désinstaller complètement mes paquets de mon EDI effacer tous les fichiers avec le fichier batch "clean_source.bat" qui se trouve à la racine. Supprimé les références des paquets dans le fichier packagefiles.xml de Lazarus et tout remis sans problème.

    Donc je récapitule

    Assures toi de bien avoir copié la DLL "libfreetype-6.dll"
    du dossier externals/windows/x64 dans c:\windows\system32
    et celle du dossier externals/windows/x86 dans c:\windows\sysWOW64

    Dans Lazarus

    Etape 1 : Compilation des paquets "runtime"



    Etape 2 Installer les paquet "designtime" (composants dans l'EDI)

    Tu choisis ton paquet Controls_dt ou Tools_dt l'ordre n'est pas important



    Répondre Oui au deux dialogue qui s'affiche comme ci-dessous


    Refaire la même avec le 2eme paquet "dt"



    Normalement tu devrais avoir deux nouveaux onglets


    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  10. #10
    Membre expert
    Une autres chose avant decompresses les fichiers dans c:\lazarus\component\bzcene ou n'importe quel autre dossier pas à la racine de Lazarus (chez moi par exemple c'est dans c:\utilisateurs\beanzmaster\documents\projets\lazarus\composants\bzscene)
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  11. #11
    Membre averti
    J'ai lancé le Clean_source.bat puis refait l'installation, et tout c'est bien passé, cette fois-ci...

    Maintenant, je vais regarder les exemples
    ----------------------------------------
    Site perso Dergen.fr
    Cartographe officiel du JDR Polaris

  12. #12
    Membre averti
    Il manque le fichier "ball1.tga" dans le dossier media\images pour que l'exemple spriteEngineDemo puisse fonctionner.
    ----------------------------------------
    Site perso Dergen.fr
    Cartographe officiel du JDR Polaris

  13. #13
    Membre expert
    Citation Envoyé par der§en Voir le message
    J'ai lancé le Clean_source.bat puis refait l'installation, et tout c'est bien passé, cette fois-ci...

    Maintenant, je vais regarder les exemples
    Ok tant mieux, car j'ai testé hier soir sur un deuxième pc et tout a c'est installé sans problème

    Citation Envoyé par der§en Voir le message
    Il manque le fichier "ball1.tga" dans le dossier media\images pour que l'exemple spriteEngineDemo puisse fonctionner.
    Bizarre car il est bien présent dans le dépot
    Quel est le dossier de sortie de l'executable ? Normalement c'est bin/win64 + debug ou release ou default suivant le mode de compilation.

    Dans le code source de l'application le chemin devrait être

    BallSpriteImage.LoadFromFile('..\..\..\medias\ball1.tga');
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  14. #14
    Membre averti
    Dans la ligne de mon exemple, il y avait un "..\" en trop

    Par contre, je suis surpris du résultat de l'exemple NoiseGen:
    ----------------------------------------
    Site perso Dergen.fr
    Cartographe officiel du JDR Polaris

  15. #15
    Membre expert
    Citation Envoyé par der§en Voir le message
    Dans la ligne de mon exemple, il y avait un "..\" en trop

    Par contre, je suis surpris du résultat de l'exemple NoiseGen:
    Attention l'image ici représente qu'une seule octave , La texture n'est donc pas complète.
    Si tu vas regarder dans le code de l'unité BZNoiseGenerator à la fin de l'interface tu constateras qu'il y a des classes commentés que je n'ai pas encore codé notamment TBZCustomFractalNoiseGenerator qui fournira un rendu complet d'une texture de bruit.

    Dans le code source de l'application dans Button1Click tu as quelques lignes misent en commentaire qui permettent en switchant de l'un à l'autre de tester les autres générateurs.
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  16. #16
    Membre expert
    Première corrections - Fixe la compatibilité avec Linux
    Bonsoir à tous je viens de mettre à jour les 4 dépôts

    https://github.com/jdelauney/BZScene
    • Corrections majeures pour la comptabilité avec Linux
    • Corrections de quelques bugs mineurs
    • Mise à jour de la documentation


    https://github.com/jdelauney/BZScene-Samples


    https://github.com/jdelauney/BZScene-Samples
    • Correction de bugs, pour la compatibilité avec Linux


    https://github.com/jdelauney/LittleAlchemist
    • Correction de bugs mineurs et ajout de fonctions




    Quelques captures d'écran réalisées sous Linux (désolé pour la résolution)
    Des captures des exemples (Linux et Windows) sont disponibles dans les dossiers de chaque projet.
    Vous pouvez directement les voir dans les dépôts Github en taille réelle.



    A Bientôt

    Jérôme
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  17. #17
    Membre averti
    Je vais mettre à jour ma version demain, et je te fais mes retours.
    ----------------------------------------
    Site perso Dergen.fr
    Cartographe officiel du JDR Polaris

  18. #18
    Membre confirmé
    Roo du graphisme

    On va peut-être pouvoir se donner des astuces pour améliorer nos bibliothèques mutuelles.
    Par-delà nos conceptions du bien et du mal se trouve une prairie. Je te rencontrerai là-bas.

  19. #19
    Membre expert
    Citation Envoyé par circular17 Voir le message
    Roo du graphisme

    On va peut-être pouvoir se donner des astuces pour améliorer nos bibliothèques mutuelles.
    Salut Johan Pas soucis, ce serait avec plaisir.
    N'hésites pas, prends tous les bouts codes qui t'intéresse pour les intégrer à BGRABitmap et Lazpaint.
    Tu verras mon approche est un peu différente de la tienne, mais les bases restent les mêmes.

    A+

    Jérôme
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP