PureBasic

Forums PureBasic
Nous sommes le Ven 24/Mai/2013 13:33

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 25 messages ]  Aller à la page 1, 2  Suivante
Auteur Message
 Sujet du message: Editeur de material & shaders
MessagePosté: Mer 16/Mai/2012 21:28 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 11/Mai/2007 15:21
Messages: 488
Bonjour,

Comme vous l'avez peut-être vu dans ce post de Blendman http://www.purebasic.fr/french/viewtopic.php?f=1&t=12763, j'ai créé un petit éditeur de material/shaders pour PB.
Blendman s'était heurté au problème suivant: on ne peut faire Parse3dScripts qu'une seule fois par programme, donc on ne peut pas créer ou modifier un material puis afficher dynamiquement le résultat.

Quoique si, peut-être... L'idée (venue en pleine nuit alors que je pensais à autre chose; des fois, on se demande...), c'est de lancer un second programme chargé de l'affichage 3D dans une window fille de la fenêtre de l'éditeur => quand on modifie le material, on kill et on relance ce programme, qui affiche alors le material modifié.
Et voilà le travail! 8)
Image

Voilà donc tout le bazar: http://keleb.free.fr/codecorner/download/purebasic/materialEditor.zip
ça contient les sources de l'éditeur (materialEditor.pb) et du programme de preview (materialPreview.pb), le fichier du Visual Editor de PB, les icônes, etc..
Plein de choses sont embarquées dans l'exe par des "includeBinary": l'exe de preview, un material par défaut avec ses textures, des images... Tout cela se trouve dans le répertoire "included".

Et pour ceux qui veulent essayer tout de suite, voici le programme compilé (win 32 bits): http://keleb.free.fr/codecorner/download/purebasic/materialEditorExe.zip
Engine3D.dll est inclus: dézippez ça dans un répertoire, et ça marche (normalement).

Mode d'emploi résumé:
Touches:
- curseur + pageup pagedown pour manipuler la preview;
- F5 pour rafraîchir la preview en fonction des modifs apportées dans les éditeurs.

- Le menu sert à charger/sauvegarder. Les sauvegardes embarquent meshes, textures, material et shaders, qui "packés" dans la sauvegarde, et "unpackés" quand on ré-ouvre le projet.
- On peut aussi exporter un material avec ses dépendances, et tous les fichiers sont alors enregistrés dans le répertoire choisi, de même qu'un petit source PB montrant comment charger le tout.

Pour importer un material existant, pas d'automatisme: on passe par les petits boutons "importer" présents sur chaque onglet.
Exemple avec le material "SphereMap" dans purebasic/examples/3d/data/scripts:
- Sur l'onglet "material", clique sur le bouton "importer" et choisis "spheremap.material" => le contenu du fichier apparaît dans l'éditeur;
- Sur l'onglet "Shader", tu peux tout supprimer (ce material n'utilise pas de shader. S'il y en avait, ils seraient référencés derrière le mot-clef "source" dans le material);
- Sur l'onglet "Textures - meshes", supprime les textures et importe les deux référencées dans les "textures units" du material: "rustySteel.jpg" et "spheremap.png" (elles sont dans purebasic/examples/3d/data/textures);
- Appuie sur F5 pour forcer le rafraîchissement => ça devrait marcher.

Limitation:
- L'éditeur ne gère qu'un seul material par fichier ".material", et un seul fichier ".material" par projet; donc un projet = un material (par contre, pas de limite sur le nombre de fichiers de mesh, de shaders ou de textures).
- Quand on active l'affichage du sol, cela active aussi les ombres en mode "modulative", ce qui est parfois génant; il faut que j'ajoute un paramétrage pour choisir le type d'ombrage utilisé...
- C'est en anglais, désolé... Je n'ai pas encore pris le temps de traduire; mais je le ferai très bientôt, promis.

Bon, voilà. Il y a encore des bugs et des trucs pas pratique, mais c'est déjà assez utilisable et ça simplifie un peu l'écriture des materials. J'espère que ça vous sera utile! :wink:

[EDIT] Le Zip avec exe + engine3D.dll a été mis à jour pour PB v5.00b2 .

_________________
Les idées sont le souvenir de choses qui ne se sont pas encore produites.


Dernière édition par kelebrindae le Mar 18/Sep/2012 9:22, édité 2 fois.

Haut
 Profil  
 
 Sujet du message: Re: Editeur de material & shaders
MessagePosté: Mer 16/Mai/2012 21:30 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 11/Mai/2007 15:21
Messages: 488
Et voici deux materials à charger avec cet éditeur:
http://keleb.free.fr/codecorner/download/purebasic/normalMap_multiLight.pbm
http://keleb.free.fr/codecorner/download/purebasic/volcano.pbm

[EDIT]
Et encore deux autres, fraîchement convertis de Cg vers hlsl grâce au Cg toolkit de nVidia:
http://keleb.free.fr/codecorner/download/purebasic/perPixel_1light_textured.pbm
http://keleb.free.fr/codecorner/download/purebasic/perPixel_3lights_untextured.pbm

[EDIT]
Deux de plus, (convertis en hlsl avec le Cg toolkit de nVidia):
http://keleb.free.fr/codecorner/download/purebasic/glass.pbm
http://keleb.free.fr/codecorner/download/purebasic/glass_refrac.pbm

_________________
Les idées sont le souvenir de choses qui ne se sont pas encore produites.


Dernière édition par kelebrindae le Ven 25/Mai/2012 13:00, édité 2 fois.

Haut
 Profil  
 
 Sujet du message: Re: Editeur de material & shaders
MessagePosté: Jeu 17/Mai/2012 8:35 
Hors ligne

Inscription: Mer 21/Jan/2004 17:48
Messages: 4494
Nickel tout fonctionne bien. Merci pour le partage et les exemples de shaders. Il faudrait que je m'y mette un jour, quand j'aurai le temps, et ce n'est pas demain la veille :)

_________________
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.


Haut
 Profil  
 
 Sujet du message: Re: Editeur de material & shaders
MessagePosté: Jeu 17/Mai/2012 8:45 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 19/Fév/2011 12:46
Messages: 907
super !

Je vais regarder ça rapidement, dis-moi, si j'y arrive puis-je ajouter des modifications et poster celles-ci sur ce sujet (si je juge que c'est intéressant, bien sûr ;)).

En tout cas, un grand merci pour ce partage. Tu as posté ça sur le forum Anglais ?
Il faudrait intégrer ce genre d'outil à Purebasic, car c'est je pense le genre d'utilitaire indispensable pour favoriser l'utilisation de Purebasic et la 3D.

Encore merci :D

EDIT :
j'ai testé et c'est intéressant. Je pense qu'il y a moyen d'ajouter un système encore plus simple pour la création de shaders (je vais essayer d'ajouter quelques paramètres). Ensuite, on modifierait en temps réel le shader en utilisant les boutons, trackbar et autre checkbox.

Si j'ai bien compris ton système, tu créés une fenêtre fille, tu affiches cette fenêtre dans l'imagegadget preview dans la fenêtre principale ?
Grâce à ça :
Code:
hdlPreview = RunProgram(#WORK_DIR + "\materialPreview.exe",Str(GadgetID(#IM_preview)),"",#PB_Program_Open)

Notamment le paramètre :
Code:
Str(GadgetID(#IM_preview))


ça fonctionne comment ? En passant en paramètre ça actualise le gadget image ?
En faisant comme ça, ça permet d'inclure la fenêtre de preview dans le programme principal ?
En tout cas c'est intéressant :).

Sinon, effectivement, il y a un soucis avec certains shaders et les lights/shadowworld()...
Par exemple si on active le ground avec le normalmap3lights, ça "bug". De plus, ça ne prend pas compte de la position des lights pour ce shader, c'est dommage.
L'autre material, le lava ne prend pas en compte l'éclairage non plus des lights.
Cet éditeur est donc 'est une super initiative, mais pour le moment, les 2 exemples proposés (lava et normalmap3light) ne sont pas vraiment utilisable ingame si on a des lights dynamiques.
On a aussi ça avec le shader par defaut, ce qui est aussi étrange c'est que si on fait une rotation, on dirait que la lumière bouge en même temps que l'objet, alors que non.
Il n'y a pas moyen de définir le système de lighting en fonction des lights de la scène ? Car là, j'ai l'impression que c'est défini dans le shader directement.

En tout cas, bravo car c'est vraiment le genre d'outil intéressant pour créer des material ;).

_________________
http://blendman.blogspot.com/


Haut
 Profil  
 
 Sujet du message: Re: Editeur de material & shaders
MessagePosté: Jeu 17/Mai/2012 19:25 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 11/Mai/2007 15:21
Messages: 488
@Blendman:
Le paramètre que je passe dans le runProgram est le handle de la fenêtre de l'éditeur. Ensuite, dans le programme de preview, je crée la window avec #WM_CHILD et je la lie à la window de l'éditeur. Il y a également un CallBack pour fermer la fille en même temps que la mère. Jette un coup d'oeil au code de materialPreview, tu verras, c'est assez simple.

_________________
Les idées sont le souvenir de choses qui ne se sont pas encore produites.


Haut
 Profil  
 
 Sujet du message: Re: Editeur de material & shaders
MessagePosté: Jeu 17/Mai/2012 19:35 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 19/Fév/2011 12:46
Messages: 907
kelebrindae a écrit:
@Blendman:
Le paramètre que je passe dans le runProgram est le handle de la fenêtre de l'éditeur. Ensuite, dans le programme de preview, je crée la window avec #WM_CHILD et je la lie à la window de l'éditeur. Il y a également un CallBack pour fermer la fille en même temps que la mère. Jette un coup d'oeil au code de materialPreview, tu verras, c'est assez simple.
yep, j'ai bien regardé, mais disons que je ne connais pas le lien entre la fenêtre fille et le fait que cette fenêtre apparaisse dans la fenêtre mère à l'emplacement du gadget image.
Je ne savais pas qu'on pouvait faire ça en fait ^^.

Et je ne comprends pas trop comment ça marche (à moins que ce soit "automatique" si on met ça comme paramètre dans Runprogram).

_________________
http://blendman.blogspot.com/


Haut
 Profil  
 
 Sujet du message: Re: Editeur de material & shaders
MessagePosté: Ven 18/Mai/2012 14:03 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 21/Déc/2008 18:39
Messages: 76
Très sympa comme outil, merci du partage ! :D


Haut
 Profil  
 
 Sujet du message: Re: Editeur de material & shaders
MessagePosté: Lun 21/Mai/2012 10:57 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 11/Mai/2007 15:21
Messages: 488
@Comtois et Stombretrooper: Merci! :D

@Blendman:
(Ouais désolé, j'ai pas trop bien expliqué dans le précédent message, car je n'étaispas chez moi et je n'avais pas le code sous les yeux...)
Regarde l'aide de openWindow: le dernier paramètre est le handle de la fenêtre parent. C'est précisément la valeur de ce handle que je passe sous forme de chaîne de caractères dans la ligne de commande, par le RunProgram. Dans le programme lancé, je le récupère dans les paramètres de lancement (programParameters), je le re-transforme en int, et je le passe à OpenWindow.
Code:
OpenWindow(0,0,0,PSize\right,PSize\bottom,"",#WS_CHILD|#WS_EX_NOACTIVATE, DisplayHwnd)

Le même "truc" est utilisé pour afficher la preview des économiseurs d'écran, dans Windows; c'est par-là que je l'ai appris => http://www.purebasic.fr/french/viewtopic.php?f=3&t=7945

_________________
Les idées sont le souvenir de choses qui ne se sont pas encore produites.


Haut
 Profil  
 
 Sujet du message: Re: Editeur de material & shaders
MessagePosté: Jeu 24/Mai/2012 14:26 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 11/Mai/2007 15:21
Messages: 488
J'ai ajouté deux shaders dans le second post ci-dessus:
http://keleb.free.fr/codecorner/download/purebasic/perPixel_1light_textured.pbm
http://keleb.free.fr/codecorner/download/purebasic/perPixel_3lights_untextured.pbm

Je les ai trouvé à cette adresse: http://www.ogre3d.org/tikiwiki/Shaders&structure=Cookbook et convertis de Cg vers hlsl grâce au Cg toolkit de nVidia.
Une fois convertis en hlsl, il y a encore 2-3 modifs à apporter au material et au shader pour que ça marche, mais mon petit éditeur rend la chose beaucoup plus facile et rapide, je trouve... (fier!)

Dès que je trouverai le temps, je posterai un petit tuto pour expliquer la marche à suivre.

A+

_________________
Les idées sont le souvenir de choses qui ne se sont pas encore produites.


Haut
 Profil  
 
 Sujet du message: Re: Editeur de material & shaders
MessagePosté: Ven 25/Mai/2012 13:08 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 11/Mai/2007 15:21
Messages: 488
Deux de plus, (convertis en hlsl avec le Cg toolkit de nVidia):
http://keleb.free.fr/codecorner/download/purebasic/glass.pbm
http://keleb.free.fr/codecorner/download/purebasic/glass_refrac.pbm

- Le premier est un material transparent reflétant une cubemap, avec opacité réglable grâce à un paramètre passé depuis le ".material".
- Le second simule la transparence avec un effet de refraction (ce que l'on voit à travers est déformé par la courbure de l'objet) et une légère irisation (présence de reflets arc-en-ciel sur le bord des courbes). La transparence est simulée: on ne voit pas la scène réelle à travers l'objet, mais une cubemap => ce shader n'est adapté qu'aux scènes statiques...
(exemple ici: http://www.purebasic.fr/english/viewtopic.php?f=16&t=41426)

_________________
Les idées sont le souvenir de choses qui ne se sont pas encore produites.


Haut
 Profil  
 
 Sujet du message: Re: Editeur de material & shaders
MessagePosté: Ven 25/Mai/2012 13:13 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 19/Fév/2011 12:46
Messages: 907
merci pour les nouveaux shaders ;)

Un truc sympa, ce serait le même qu'en refraction, mais avec une scène dynamique (et donc j'imagine un "render from camera to shader" (camera mapping ?) ou un truc du genre :D.

_________________
http://blendman.blogspot.com/


Haut
 Profil  
 
 Sujet du message: Re: Editeur de material & shaders
MessagePosté: Ven 25/Mai/2012 13:15 
Hors ligne

Inscription: Dim 10/Jan/2010 5:29
Messages: 2135
Pense à fournir la dll avec ( engine3D.dll ) la mienne n'est pas pareil (x64) , donc sa plante :/


Haut
 Profil  
 
 Sujet du message: Re: Editeur de material & shaders
MessagePosté: Ven 25/Mai/2012 16:22 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 11/Mai/2007 15:21
Messages: 488
Tu as raison. L'erreur est réparée:
http://keleb.free.fr/codecorner/download/purebasic/materialEditorExe.zip (avec Engine3D.dll incluse)

_________________
Les idées sont le souvenir de choses qui ne se sont pas encore produites.


Haut
 Profil  
 
 Sujet du message: Re: Editeur de material & shaders
MessagePosté: Ven 25/Mai/2012 16:31 
Hors ligne

Inscription: Dim 10/Jan/2010 5:29
Messages: 2135
tu saurais faire la même chose en glsl ?


Haut
 Profil  
 
 Sujet du message: Re: Editeur de material & shaders
MessagePosté: Ven 25/Mai/2012 21:33 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 11/Mai/2007 15:21
Messages: 488
"Faire", non: je ne saurais pas créer un shader, parce que globalement, je n'y comprends presque rien. :?

Par contre, si tu as un shader CG à convertir en GLSL, c'est peut-être possible de la même façon que pour le HLSL: le Cg Toolkit est capable de sortir du GLSL, il me semble.
En recompilant le programme de preview de l'éditeur avec le subsystem OpenGL, et en procédant par essai/erreur, ça doit être faisable.
(mais là, je m'avance un peu; il faudrait que j'essaie d'abord avec un cas simple, comme ceux ci-dessus)

_________________
Les idées sont le souvenir de choses qui ne se sont pas encore produites.


Haut
 Profil  
 
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 25 messages ]  Aller à la page 1, 2  Suivante

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye