PureBasic

Forums PureBasic
Nous sommes le Mer 22/Mai/2013 9:20

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 15 messages ] 
Auteur Message
 Sujet du message: CreateCompositorEffect et sprite3D
MessagePosté: Lun 16/Avr/2012 18:16 
Hors ligne
Avatar de l’utilisateur

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

Je me demandais si on pouvait créer des effect avec les sprite3D.

Je pense que oui, mais il faudrait créer une caméra, etc..
Le problème est que je n'arrive pas à trouver un exemple pour créer un fx tout simplement.
Savez-vous comment on utilise les specialeffect ?

Merci :).

_________________
http://blendman.blogspot.com/


Haut
 Profil  
 
 Sujet du message: Re: CreateCompositorEffect et sprite3D
MessagePosté: Lun 16/Avr/2012 18:20 
Hors ligne

Inscription: Dim 10/Jan/2010 5:29
Messages: 2132
en théorie , non, c'est deux libs différentes.

@+


Haut
 Profil  
 
 Sujet du message: Re: CreateCompositorEffect et sprite3D
MessagePosté: Mar 17/Avr/2012 8:27 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 19/Fév/2011 12:46
Messages: 907
G-Rom a écrit:
en théorie , non, c'est deux libs différentes.
ah mince
Dommage, car pourtant, on sait mixer les 2 dans un jeu.

Sinon, il n'y a pas d'exemple d'utilisation d'un specialeffect dans les sources pb et je n'ai rien trouvé sur le net sur l'utilisation de ça.
Tu sais comment les utiliser ces effects ?

_________________
http://blendman.blogspot.com/


Haut
 Profil  
 
 Sujet du message: Re: CreateCompositorEffect et sprite3D
MessagePosté: Mar 17/Avr/2012 16:46 
Hors ligne

Inscription: Dim 10/Jan/2010 5:29
Messages: 2132
Je ne suis pas sur mon poste , mais pour les compositors , c'est ceux d'ogre , tu les trouves un peu partout sur leur forum
( ce que j'ai ne marche qu'avec OpenGL Linux oblige... ;) )


Haut
 Profil  
 
 Sujet du message: Re: CreateCompositorEffect et sprite3D
MessagePosté: Mar 17/Avr/2012 17:15 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 19/Fév/2011 12:46
Messages: 907
même en openGl ça me va, histoire de voir comment ça marche ^^;

PS : j'ai ubuntu en dualboot, mais faudrait que je l'update car il est un peu vieux, histoire de tester un peu pb sous linux :)

_________________
http://blendman.blogspot.com/


Haut
 Profil  
 
 Sujet du message: Re: CreateCompositorEffect et sprite3D
MessagePosté: Mer 18/Avr/2012 7:47 
Hors ligne
Avatar de l’utilisateur

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

J'ai trouvé quelques explications sur les compositor ici :
http://www.ogre3d.org/tikiwiki/Composit ... tive_bloom


Du coup, j'ai testé ça avec l'exemple 3D bridge, mais je ne sais pas comment ça marche en purebasic, il manque un exemple dans les exemples 3D :).
Il faut placer ce fichier dans le répertoire des exemples 3D de purebasic.

Code:
;
; ------------------------------------------------------------
;
;   PureBasic - PointJoint (Bridge)
;
;    (c) 2011 - Fantaisie Software
;
; ------------------------------------------------------------
;

IncludeFile "Screen3DRequester.pb"

#CameraSpeed = 1
#Nb = 30
Enumeration
#bloom
#motionblur
EndEnumeration

Define.f KeyX, KeyY, MouseX, MouseY
Global effect.a,keypressed.a
Dim Planche(#Nb)

If InitEngine3D()
 
  Add3DArchive("Data/Textures", #PB_3DArchive_FileSystem)
  Add3DArchive("Data/Scripts",#PB_3DArchive_FileSystem)
  Add3DArchive("Data/Packs/desert.zip", #PB_3DArchive_Zip)
  Parse3DScripts()
   
  InitSprite()
  InitKeyboard()
  InitMouse()
 
  If Screen3DRequester()
   
    KeyboardMode(#PB_Keyboard_International)
   
    WorldShadows(#PB_Shadow_Modulative)
       
    ;Materials
    ;
    CreateMaterial(0, LoadTexture(0, "Wood.jpg"))
    GetScriptMaterial(1, "SphereMap/SphereMappedRustySteel")
    CreateMaterial(2, LoadTexture(2, "Dirt.jpg"))
    GetScriptMaterial(3, "Scene/GroundBlend")
   

    ; Ground
    ;
    CreatePlane(3, 10000, 10000, 100, 100, 150, 150)
    CreateEntity(3,MeshID(3),MaterialID(3), 0, -50, 0)
    EntityRenderMode(3, 0)
    EntityPhysicBody(3, #PB_Entity_StaticBody)
   
    ; Bridge
    CreateCube(1, 1.0)
    For i = 1 To #Nb
      Planche(i)=CreateEntity(#PB_Any, MeshID(1), MaterialID(0))
      ScaleEntity(Planche(i), 2.8, 0.8, 20)
      EntityLocate(Planche(i), i * 3, 0, 0)
      EntityPhysicBody(Planche(i), #PB_Entity_BoxBody, 1.0)
    Next i
   
    Pas.f = 1.5
    PointJoint(Planche(1),  -Pas, 0, -5)
    For i= 1 To #Nb-2
      PointJoint(Planche(i+1),  -Pas, 0, -5, Planche(i), Pas, 0, -5)
    Next i
    PointJoint(Planche(#Nb),  Pas, 0, -5)
    PointJoint(Planche(#Nb-1),  Pas, 0, -5, Planche(#Nb), -Pas, 0, -5)
   
    PointJoint(Planche(1),  -Pas, 0, 5)
    For i= 1 To #Nb-2
      PointJoint(Planche(i+1),  -Pas, 0, 5, Planche(i), Pas, 0, 5)
    Next i
    PointJoint(Planche(#Nb),  Pas, 0, 5)
    PointJoint(Planche(#Nb-1),  Pas, 0, 5, Planche(#Nb), -Pas, 0, 5)
   
    ; Objects
    ;
    CreateSphere(2, 2, 30, 30)
   
    C = Planche(1)
    For i = 1 To #Nb/2
      Perso = CreateEntity(#PB_Any, MeshID(2), MaterialID(1), EntityX(C) +i * 5, EntityY(C)+ i * 2, EntityZ(C))
      EntityPhysicBody(Perso, #PB_Entity_SphereBody, 0.5)
    Next i
   
    For i = 1 To #Nb/2
      Perso = CreateEntity(#PB_Any, MeshID(1), MaterialID(2), EntityX(C) +i * 5, EntityY(C)+ i * 4, EntityZ(C))
      ScaleEntity(Perso, 3, 3, 3)
      EntityPhysicBody(Perso, #PB_Entity_BoxBody, 1.0)
    Next i
   
    ; Camera
    ;
    CreateCamera(0, 0, 0, 100, 100)
    CameraLocate(0, -20, 30, -40)
    CameraLookAt(0, EntityX(C) + 25, EntityY(C) + 10,  EntityZ(C))
   
    ; les effects
    If CreateCompositorEffect(#bloom,CameraID(0),GetCurrentDirectory()+"Data\Scripts\bw.compositor") = 0
      MessageRequester("error","unable to load or create the compositor effect")
    Else
      Debug GetCurrentDirectory()+"Data\Scripts\bw.compositor"     
    EndIf
   
    If CreateCompositorEffect(#motionblur,CameraID(0),GetCurrentDirectory()+"Data\Scripts\motionblur.compositor")=0
      MessageRequester("error","unable to load or create the compositor effect")
    EndIf

    ;SkyBox
    ;
    SkyBox("desert07.jpg")
   
    ; Light
    ;
    CreateLight(0, RGB(255, 255, 255), 100, 800, -500)
    AmbientColor(RGB(20, 20, 20))
   
    Repeat
      Screen3DEvents()
     
      If ExamineMouse()
        MouseX = -MouseDeltaX() * #CameraSpeed * 0.05
        MouseY = -MouseDeltaY() * #CameraSpeed * 0.05
      EndIf
     
      If ExamineKeyboard()
               
        If KeyboardPushed(#PB_Key_Space)
          ApplyEntityImpulse(Planche(#Nb/2), 0, 9, 0)
        EndIf
        If KeyboardPushed(#PB_Key_Return)
          FreeJoint(Planche(#Nb/2))
        EndIf     
       
        If KeyboardPushed(#PB_Key_Left)
          KeyX = -#CameraSpeed
        ElseIf KeyboardPushed(#PB_Key_Right)
          KeyX = #CameraSpeed
        Else
          KeyX = 0
        EndIf
       
        If KeyboardPushed(#PB_Key_Up)
          KeyY = -#CameraSpeed
        ElseIf KeyboardPushed(#PB_Key_Down)
          KeyY = #CameraSpeed
        Else
          KeyY = 0
        EndIf
               
        If KeyboardReleased(#PB_Key_F3) 
          Debug "effet"
          If IsEffect(#bloom)               
            HideEffect(#bloom,1)
          EndIf
        EndIf
       
        If KeyboardReleased(#PB_Key_F2) 
          Debug "pas d'effet"
          If IsEffect(#bloom)               
            HideEffect(#bloom,0)
          EndIf
        EndIf
       
      EndIf
           
      MoveCamera  (0, KeyX, 0, KeyY)
      RotateCamera(0,  MouseY, MouseX, 0, #PB_Relative)
     
      RenderWorld()
      Screen3DStats()
      FlipBuffers()     
    Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
   
  EndIf
 
Else
  MessageRequester("Error", "The 3D Engine can't be initialized",0)
EndIf

End



Les effets à placer dans le répertoire :
Data\Scripts

Effet bloom (bloom.compositor):
Code:
/// Manuel's bloom
/// Needs a scene-sized rtt, but does only one render of the scene
compositor Bloom
{
    technique
    {
        // Temporary textures
        texture scene target_width target_height PF_A8R8G8B8
        texture rt0 128 128 PF_A8R8G8B8
        texture rt1 128 128 PF_A8R8G8B8

        target scene
        {
            // Render output from previous compositor (or original scene)
            input previous
        }
        target rt0
        {
            // Start with clear texture
            input none
            // Vertical blur pass
            pass render_quad
            {
                // Renders a fullscreen quad with a material
                material PostFilters/Blur0
                input 0 scene
            }
        }
        target rt1
        {
            // Start with clear texture
            input none
            // Horizontal blur pass
            pass render_quad
            {
                // Renders a fullscreen quad with a material
                material PostFilters/Blur1
                input 0 rt0
            }
        }
        target_output
        {
            // Start with clear output
            input none
            // Draw a fullscreen quad
            pass render_quad
            {
                // Renders a fullscreen quad with a material
                material PostFilters/BloomBlend
                input 0 scene
                input 1 rt1
            }
        }
    }
}


Effet black & white (bw.compositor):
Code:
/// Black and white effect
compositor B&W
{
    technique
    {
        // Temporary textures
        texture scene target_width target_height PF_A8R8G8B8

        target scene
        {
            // Render output from previous compositor (or original scene)
            input previous
        }
        target_output
        {
            // Start with clear output
            input none
            // Draw a fullscreen quad with the blur
            pass render_quad
            {
                // Renders a fullscreen quad with a material
                material PostFilters/BlackAndWhite
                input 0 scene
            }
        }
    }
}


Effet motion blur (motionblur.compositor) :
Code:
/// Manuel's motion blur effect
compositor "Motion Blur"
{
    technique
    {
        // Temporary textures
        texture scene target_width target_height PF_A8R8G8B8
        texture sum target_width target_height PF_A8R8G8B8
        texture temp target_width target_height PF_A8R8G8B8

        target scene
        {
            // Render output from previous compositor (or original scene)
            input previous
        }
        target sum
        {
            // Render this target pass only initially, on the first frame that
            // this effect was enabled. This makes sure the sum texture
            // does not start with randomness.
            only_initial on

            input previous
        }
        target temp
        {
            // Start with clear texture
            input none
            // Combine scene and sum texture
            pass render_quad
            {
                // Renders a fullscreen quad with a material
                material Ogre/Compositors/Combine
                input 0 scene
                input 1 sum
            }
        }
        target sum
        {
            // Start with clear texture
            input none
            // Copy temporary back to sum
            pass render_quad
            {
                // Renders a fullscreen quad with a material
                material Ogre/Compositors/Copyback
                input 0 temp
            }
        }
        target_output
        {
            // Start with clear output
            input none
            // Draw a fullscreen quad with the blur
            pass render_quad
            {
                // Renders a fullscreen quad with a material
                material Ogre/Compositors/MotionBlur
                input 0 sum
            }
        }
    }
}


Voilà, si quelqu'un a une idée de leur utilisation, n'hésitez pas à poster.

_________________
http://blendman.blogspot.com/


Haut
 Profil  
 
 Sujet du message: Re: CreateCompositorEffect et sprite3D
MessagePosté: Mer 18/Avr/2012 9:45 
Hors ligne

Inscription: Dim 10/Jan/2010 5:29
Messages: 2132
Je verrais ca en rentrant ce soir.


Haut
 Profil  
 
 Sujet du message: Re: CreateCompositorEffect et sprite3D
MessagePosté: Dim 22/Avr/2012 10:19 
Hors ligne
Avatar de l’utilisateur

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

G-rom : tu as pu retrouver ton fichier d'exemple ? :)

_________________
http://blendman.blogspot.com/


Haut
 Profil  
 
 Sujet du message: Re: CreateCompositorEffect et sprite3D
MessagePosté: Dim 22/Avr/2012 11:18 
Hors ligne

Inscription: Dim 10/Jan/2010 5:29
Messages: 2132
oui , mais a prioris il y a eu de grosse modification de mon code, plus rien ne marche chez moi :/


Haut
 Profil  
 
 Sujet du message: Re: CreateCompositorEffect et sprite3D
MessagePosté: Dim 22/Avr/2012 12:18 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 19/Fév/2011 12:46
Messages: 907
Ah mince.

Bon, ben, on va attendre que ce soit corrigé dans la prochaine version ^^ .

_________________
http://blendman.blogspot.com/


Haut
 Profil  
 
 Sujet du message: Re: CreateCompositorEffect et sprite3D
MessagePosté: Dim 22/Avr/2012 14:37 
Hors ligne

Inscription: Mer 21/Jan/2004 17:48
Messages: 4494
G-Rom a écrit:
oui , mais a prioris il y a eu de grosse modification de mon code, plus rien ne marche chez moi :/


lequel ? J'ai un de tes exemples qui fonctionne bien : Gaussian_Blur, faut que je prenne le temps de faire un zip !

[BlendMan] sinon pour info, il te faut les fichiers suivants :

- xxx.compositor
- xxx.material (on retrouve le(s) nom(s) des materials utilisés dans le fichier compositor)
- les shaders (on retrouve le(s) nom(s) des shaders utilisés dans le fichier material)

Autre info, la plupart des exemples d'Ogre ne pourront pas fonctionner avec PureBasic car cg n'est pas supporté. Il faut créer ou utiliser des shaders GLSL (il faut choisir le sous système OpenGL), je crois que les shaders HLSL sont aussi supportés par PB ?

_________________
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: CreateCompositorEffect et sprite3D
MessagePosté: Dim 22/Avr/2012 14:44 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 19/Fév/2011 12:46
Messages: 907
comtois a écrit:
J'ai un de tes exemples qui fonctionne bien : Gaussian_Blur, faut que je prenne le temps de faire un zip !
J'ai hâte que tu fasses un zip pour voir ce que ça donne ;).

Penses-tu que ce sera utilisable en openGL avec les sprite3D (oui, je rêve un peu, mais bon :D) ?

_________________
http://blendman.blogspot.com/


Haut
 Profil  
 
 Sujet du message: Re: CreateCompositorEffect et sprite3D
MessagePosté: Dim 22/Avr/2012 15:16 
Hors ligne

Inscription: Mer 21/Jan/2004 17:48
Messages: 4494
blendman a écrit:
comtois a écrit:
J'ai un de tes exemples qui fonctionne bien : Gaussian_Blur, faut que je prenne le temps de faire un zip !


J'ai hâte que tu fasses un zip pour voir ce que ça donne ;).


Je crois que j'ai le même problème que G-Rom ! J'ai une erreur sur la fonction Parse3DScripts() quand je valide le sous système OpenGL, va falloir que j'analyse d'où vient le problème, donc patience, ça ne sera pas pour aujourd'hui.

ça fonctionne avec ma version de développement, pourtant je n'ai rien modifié là dessus ! Etrange !

_________________
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: CreateCompositorEffect et sprite3D
MessagePosté: Mer 25/Avr/2012 19:48 
Hors ligne

Inscription: Mer 21/Jan/2004 17:48
Messages: 4494
Une discussion fort intéressante au sujet de la conversion des shaders cg en HLSL pour windows. Je n'ai pas testé, je n'ai malheureusement pas trop le temps en ce moment.

http://www.purebasic.fr/french/viewtopic.php?f=13&t=10640

_________________
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: CreateCompositorEffect et sprite3D
MessagePosté: Mer 25/Avr/2012 21:10 
Hors ligne

Inscription: Dim 10/Jan/2010 5:29
Messages: 2132
le problème ne viens pas des shaders , la solution donné dans ton post pour la conversion fonctionne, le problème viens de la factorisation du code source.
j'ai peu de temps pour me penché dessus à fond pour le moment , si le problème n'est pas résolu , je me pencherais dessus quand j'aurais plus de temps. ;)


Haut
 Profil  
 
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 15 messages ] 

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