Shader OpenGL

Généralités sur la programmation 3D
Avatar de l’utilisateur
Guillot
Messages : 522
Inscription : jeu. 25/juin/2015 16:18

Shader OpenGL

Message par Guillot »

salut les gars,

j'ai fais un petit code pour trouver le probleme avec les shader opengl

- dans les options de compilation : mettez 'opengl' dans le champ "Bibliotheque sous systeme"
- ligne 99 : mettez le chemin du dossier MaterialScriptsGeneric-2 de la démo paysage-v6

et postez moi le fichier Ogre.log

merci d'avance

Code : Tout sélectionner

Structure f3
  x.f
  y.f
  z.f
EndStructure

Procedure.f lng3D(*v.f3)
  ProcedureReturn Sqr(*V\x * *V\x + *V\y * *V\y + *V\z * *V\z)
EndProcedure

Procedure Norme3D(*V.f3,l.f=1)
  Protected.f lm = l / lng3d(*v)
  *V\x * lm
  *V\y * lm
  *V\z * lm
EndProcedure

Procedure.i textureArray2NM(texture,Array hm.l(2),amplitude.f)
  Protected i,j,n,dx,dy,h00,h10,h01
  Protected.f x,y,z,l, max=255/amplitude,max2=max*max
  Protected.f3 p

  dx=ArraySize(hm(),2)+1
  dy=ArraySize(hm(),1)+1
  Dim bmp.l(dy-1,dx-1)
  For j=0 To dy-1
    For i=0 To dx-1
      h00=hm(j,i)
      h10=hm(j,(i+1) % dx)
      h01=hm((j+1) % dy,i)
      p\x=h00-h10
      p\y=h00-h01
      l=p\x*p\x+p\y*p\y:If l>max2:l=max2:EndIf
      p\z=Sqr(max2-l)
      Norme3D(p,127)
      bmp(j,i)=RGBA(p\z+128,p\y+128,p\x+128,255)
    Next
  Next
  n=CreateTexture(texture,dx,dy):If texture=-1:texture=n:EndIf
  StartDrawing(TextureOutput(texture)):CopyMemory(@bmp(0,0),DrawingBuffer(),dx*dy*4):StopDrawing()
  ProcedureReturn texture
EndProcedure

Procedure.i textureHM2NM(imgNM,imgHM,amplitude.f)
  Protected i,j,dx,dy,c

  StartDrawing(TextureOutput(imgHM))
  dx=OutputWidth()
  dy=OutputHeight()
  Dim hm.l(dy-1,dx-1)
  Dim bmp.l(dy-1,dx-1)
  CopyMemory(DrawingBuffer(),@bmp(0,0),dx*dy*4)
  StopDrawing()
  For j=0 To dy-1
    For i=0 To dx-1
      c=bmp(j,i)
      hm(j,i)=Red(c)+Green(c)+Blue(c)
    Next
  Next
  ProcedureReturn textureArray2NM(imgNM,hm(),amplitude/3)
EndProcedure

Procedure mesh_samples(num)
  Protected i,j,n=32
  Protected.f ai,aj,r
  Dim t.PB_MeshVertex(n,n)
 
  For j=0 To n
    For i=0 To n
      With t(i,j) 
        ai=i/n*2*#PI
        aj=j/n*#PI
        r=Sin(aj)
        \x=-Cos(ai)*r
        \z=Sin(ai)*r
        \y=Cos(aj)
        \u=i/32
        \v=j/32
        \color=$ffffffff        ;<---  !!!   required To use these shaders !!!
      EndWith
    Next
  Next
  CreateDataMesh(num,t())
  NormalizeMesh(num)
EndProcedure


Define i, a.f

InitEngine3D(#PB_Engine3D_DebugLog):InitSprite():InitKeyboard():InitMouse()
ExamineDesktops()
ex=DesktopWidth (0)
ey=DesktopHeight(0)
OpenWindow(0, 0,0, ex,ey, "Test shader OpenGL -  [Esc] quit",#PB_Window_Maximize)
OpenWindowedScreen(WindowID(0), 0, 0, ex, ey, 0, 0, 0)


; >>>>>>>>>>> mettre ici le chemin du dossier MaterialScriptsGeneric-2 <<<<<<<<<<<
Add3DArchive(...\MaterialScriptsGeneric-2", #PB_3DArchive_FileSystem )
Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Textures", #PB_3DArchive_FileSystem)
Parse3DScripts()

;--------------------------------------- scene ---------------------------------------

CreateCamera(0, 0, 0, 100, 100):MoveCamera(0,0,4,-2):CameraLookAt(0,0,0,0)

CreateLight(0, $ffffff, 0, 4, 0):SetLightColor(0,#PB_Light_SpecularColor, $ffffff)
AmbientColor($222222)
Fog($ffffff,1,10000,10001);     <---  !!!   required to use these shaders !!!

mesh_samples(0)
BuildMeshTangents(0)
LoadTexture(0,"MRAMOR6X6.jpg")
textureHM2NM(1,0,8)
GetScriptMaterial(0,"bump")
MaterialTextureAliases(0,TextureID(0),TextureID(1),0,0)
SetMaterialColor(0,#PB_Material_SpecularColor,$ffffff)
SetMaterialColor(0,#PB_Material_DiffuseColor,$ff)
MaterialShininess(0,64)
MaterialFilteringMode(i,#PB_Material_Anisotropic,4)
CreateEntity(0,MeshID(0),MaterialID(0))

Repeat
    While WindowEvent():Wend
    ExamineMouse()
    ExamineKeyboard()
    a+0.005
    RotateEntity(0,0.2,0.3,0.5,#PB_Relative)
    RenderWorld()
    FlipBuffers()   
Until MouseButton(#PB_MouseButton_Left) Or KeyboardReleased(#PB_Key_Escape)
Avatar de l’utilisateur
venom
Messages : 3071
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Shader OpenGL

Message par venom »

:oops: Question bête mais on le trouve ou ce fichier Ogre.log ? Car j'ai lancer ton code je vois une sphere rouge a damier qui tourne, mais aucun fichier nulle part une fois echap.






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
Guillot
Messages : 522
Inscription : jeu. 25/juin/2015 16:18

Re: Shader OpenGL

Message par Guillot »

chez moi il le met dans le dossier contenant le code source
donc je te conseil d'enregistrer le code (sinon c'est dans le dossier temporaire, plus merdique à trouvé)
sinon tu peux mettre #PB_Engine3D_DebugOutput
Activez au préalable l'option Console du compilateur dans menu Compilateur \ Options du compilateur... \ Options de compilation \ Format de l'exécutable
(Alt-tab pour mettre au 1er plan la fenetre de debug)
Avatar de l’utilisateur
venom
Messages : 3071
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Shader OpenGL

Message par venom »

En effet c'est plus simple ainsi :D

Voilà pour ma part Bon courage, il y a de la ligne :D






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
Guillot
Messages : 522
Inscription : jeu. 25/juin/2015 16:18

Re: Shader OpenGL

Message par Guillot »

merci venom
d'apres ce qu'il me dit c'est une histoire de version de GLSL
curieux que ça marche que chez moi...

je mets à jour dans 5 mn paysage v6
Avatar de l’utilisateur
Guillot
Messages : 522
Inscription : jeu. 25/juin/2015 16:18

Re: Shader OpenGL

Message par Guillot »

ça y'est j'ai fait la mise à jour de paysage-v6.zip
tu peux tester ?
(et si ça foire toujours, me ré-envoyer le log)

saint clou very much
Avatar de l’utilisateur
venom
Messages : 3071
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Shader OpenGL

Message par venom »

8O wouah c'est hyper joli. Bravo en effet le résultat est top 8) Chapeau Guillot






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
Guillot
Messages : 522
Inscription : jeu. 25/juin/2015 16:18

Re: Shader OpenGL

Message par Guillot »

merci de ta contribution
si tout les shaders fonctionnent tu dois avoir
- l'effet de relief sur le sol et les troncs
- les vagues avec reflet
- le feuillage qui bouge avec vent
Avatar de l’utilisateur
venom
Messages : 3071
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Shader OpenGL

Message par venom »

Oui, tout y est. C'est plaisant de s'y promener :D
A force des exemples, tu va nous pondre "LE jeu de la mort qui tue en 3D" :lol: Tes exemples sont toujours aux top.
aller sur ceux, je vais me coucher.





@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Shader OpenGL

Message par Micoute »

Bon dimanche à tous,
voici ma contribution : https://www.dropbox.com/home
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Patrick88
Messages : 1564
Inscription : mer. 21/janv./2004 18:24

Re: Shader OpenGL

Message par Patrick88 »

Répondre