IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

Delphi Discussion :

[Video] Delphi 3D software, FMX, OpenGL et Raymarching


Sujet :

Delphi

  1. #1
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut [Video] Delphi 3D software, FMX, OpenGL et Raymarching
    Tout cela au programme de ma nouvelle video avec le code associé sur Github



    https://github.com/tothpaul/Delphi/tree/master/3D
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  2. #2
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 496
    Points : 2 762
    Points
    2 762
    Billets dans le blog
    10
    Par défaut
    SI tu veux j'ai a peu près la même chose avec des Objets TMesh
    Nom : Capture.PNG
Affichages : 332
Taille : 40,8 Ko

  3. #3
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Salut, ben c'est ce que je fais dans la démo FMX non ?
    https://github.com/tothpaul/Delphi/t...Torus/FMXDemo1
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  4. #4
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Bonjour Paul,

    tout simplement excellent. Je suis retombé dans ma jeunesse avec la 3d software en modeX et tp7.

    Ta classe de parallélisation est vraiment excellente et très simple d'utilisation. Je vais essayer de voir si c'est portable avec Lazarus: A priori je pense que oui

    Ton tuto est pile-poil dans le but que je me suis fixé pour un de mes "gros" projet avec Lazarus. J'adhère à fond.

    Pour la manipulation des vecteurs j'ai codé une bibliothèque en assembleur utilisant les SIMD (sse1 à 3, le sse4 n'apportant rien en terme de performances. Et un début avec AVX ). Elle contient également une unité optimisée pour la trigonométrie et un début d'unité sur le raymarching provenant d'un des gurus dans ce domaine Inigo Quilez. Cette bibliothèque est réalisé sous Lazarus et est disponible sur mon github. Pour l'instant je suis concentré sur le code pour 64bits (le 32 bits est pris en charge mais non synchronisé avec les procédures en 64bits). Crois-tu que ma bibliothèque pourrait-être portée sous Delphi avec la version CE, sans trop de difficultés ?

    Merci de ta réponse.

    En attendant voici 2 vidéos de mes démos que je suis content de partager avec vous tous.

    Le rendu est entièrement en software avec une solution personnelle de gestion des bitmaps (optimisée à l'ancienne comme pour le modeX). J'utilise bien sûr ma bibliothèque sur les vecteurs pour les calculs. Le moteur de rendu lui, est similaire à shadertoy ou GLSL Sandbox. Ce qui permet de recréer des shaders GLSL entièrement en pascal en moins rapide bien évidemment.

    Le 1er effet est du 100% raymarching : une simple sphère qui se déforme avec éclairage en phong + un plan à damier pour le sol
    Le 2eme effet, un simple ensemble de Mandelbrot
    Le 3eme effet un petit shader simplifié provenant de GLSL Sandox pour comparer
    Le 4eme effet une simple déformation planaire style "tunnel mapping"

    Désolé d'avance pour la qualité des vidéos qui n'est pas au top. (faudrait que je change d'outil de capture vidéo)



    La deuxième vidéo, un petit clin d’œil à une de tes démos sur le "voxel alla Commanche"



    PS : Mes sources ne sont pas encore disponibles, mais le seront dans un avenir proche. J'ai encore pas mal de petites choses à fignoler

    A bientôt
    • "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

  5. #5
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Salut, excellent

    je ne sais pas si FreePascal a finalement adopté les noms composés pour les unités (Execute.Parallelization), la dernière fois que j'ai tenté un portage je suis tombé directement sur ce point (c'est le cas de le dire).

    et j'utilise de plus en plus des Record avec méthodes, voir des type dans des types et de temps en temps des generic...

    je ne sais pas si tu as vu, mais il existe maintenant une version Community Edition de Delphi, c'est un version Pro gratuite qui est accessible à toute personne dont l'activité pour laquelle elle l'utilise ne lui rapporte pas plus de 5.000€ par an. C'est parfait pour faire des projets OpenSource sur son temps libre même si c'est plus éloigné du concept GPL que FreePascal je te l'accorde.

    Paul
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  6. #6
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Salut

    Merci, oui j'ai vu et j'ai installé cet version de Delphi Community Edition. Ce que je me demandais surtout par rapport a ma bibliothèque sur les vecteurs et matrices c'etait si le code assembleur au niveau des accès des registres est le même et surtout est ce que Delphi aligne les données, ou si non existe-t-il des commandes préprocesseurs code comme dans FPC genre {$CODEALIGN RECORDMIN=16}. L'alignement est primordiale pour obtenir les meilleurs performances.
    Dans freepascal il y a également une option qui permet d'obtenir un fichier .S. Ce fichier contient toutes les informations du code compilé c'est à dire les registres utilisés et permet de voir si les paramètres se trouvent dans la pile ou si ils "débordent"

    Exemple de fichier S sur un Vecteur 4D en single avec les opérations d'addition et de soustraction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    .section .text.n_glzvectormath$_$tglzvector4f_$__$$_plus$tglzvector4f$tglzvector4f$$tglzvector4f,"x"
    	.balign 16,0x90
    .globl	GLZVECTORMATH$_$TGLZVECTOR4F_$__$$_plus$TGLZVECTOR4F$TGLZVECTOR4F$$TGLZVECTOR4F
    GLZVECTORMATH$_$TGLZVECTOR4F_$__$$_plus$TGLZVECTOR4F$TGLZVECTOR4F$$TGLZVECTOR4F:
    # Var A located in register rdx
    # Var B located in register r8
    # Var $result located in register rcx
    # [vectormath_vector4f_win64_sse_imp.inc]
    # [4] asm
    	# Register rax,rcx,rdx,r8,r9,r10,r11 allocated
    # [5] movaps xmm0,[A]
    	movaps	(%rdx),%xmm0
    # [10] addps  xmm0, XMMWORD PTR [B] //xmm1
    	addps	(%r8),%xmm0
    # [12] movaps [RESULT], xmm0
    	movaps	%xmm0,(%rcx)
    	# Register rax,rcx,rdx,r8,r9,r10,r11 released
    # [13] end;
    	ret
     
    .section .text.n_glzvectormath$_$tglzvector4f_$__$$_minus$tglzvector4f$tglzvector4f$$tglzvector4f,"x"
    	.balign 16,0x90
    .globl	GLZVECTORMATH$_$TGLZVECTOR4F_$__$$_minus$TGLZVECTOR4F$TGLZVECTOR4F$$TGLZVECTOR4F
    GLZVECTORMATH$_$TGLZVECTOR4F_$__$$_minus$TGLZVECTOR4F$TGLZVECTOR4F$$TGLZVECTOR4F:
    # Var A located in register rdx
    # Var B located in register r8
    # Var $result located in register rcx
    # [16] asm
    	# Register rax,rcx,rdx,r8,r9,r10,r11 allocated
    # [17] movaps xmm0,[A]
    	movaps	(%rdx),%xmm0
    # [22] subps  xmm0, XMMWORD PTR [B] //xmm1
    	subps	(%r8),%xmm0
    # [24] movaps [RESULT], xmm0
    	movaps	%xmm0,(%rcx)
    	# Register rax,rcx,rdx,r8,r9,r10,r11 released
    # [25] end;
    	ret
    Si ce genre de fichier est généré avec Delphi cela serait d'une grande aide, pour connaitre les registres utilisés

    Je vais faire quelques tests pour voir.

    Merci d'avance

    A bientôt
    • "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 émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 496
    Points : 2 762
    Points
    2 762
    Billets dans le blog
    10
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    Salut, ben c'est ce que je fais dans la démo FMX non ?
    https://github.com/tothpaul/Delphi/t...Torus/FMXDemo1
    Effectivement - je n'avais pas vu !

  8. #8
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 387
    Points : 2 999
    Points
    2 999
    Par défaut
    BeanzMaster: J'aime bien celui-là qui est gratuit

  9. #9
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Merci Papy je vais testé
    • "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

Discussions similaires

  1. Nouvelle video Delphi VCL/FMX
    Par Paul TOTH dans le forum Contribuez
    Réponses: 3
    Dernier message: 03/03/2017, 17h52
  2. Capture vidéo d'une application OPENGL
    Par Mathieu.J dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 10/06/2004, 21h29
  3. Réponses: 7
    Dernier message: 04/06/2004, 15h20
  4. Delphi - Fenêtre OpenGL dans PaintBox.
    Par joseph74 dans le forum OpenGL
    Réponses: 7
    Dernier message: 26/05/2004, 13h49
  5. OpenGL et Delphi
    Par SebCBien dans le forum OpenGL
    Réponses: 2
    Dernier message: 15/01/2004, 19h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo