Page 1 sur 1

Shader OpenGL

Publié : sam. 22/août/2020 16:26
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)

Re: Shader OpenGL

Publié : sam. 22/août/2020 20:15
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.






@++

Re: Shader OpenGL

Publié : sam. 22/août/2020 22:22
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)

Re: Shader OpenGL

Publié : sam. 22/août/2020 23:08
par venom
En effet c'est plus simple ainsi :D

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






@++

Re: Shader OpenGL

Publié : sam. 22/août/2020 23:38
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

Re: Shader OpenGL

Publié : sam. 22/août/2020 23:59
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

Re: Shader OpenGL

Publié : dim. 23/août/2020 0:01
par venom
8O wouah c'est hyper joli. Bravo en effet le résultat est top 8) Chapeau Guillot






@++

Re: Shader OpenGL

Publié : dim. 23/août/2020 0:07
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

Re: Shader OpenGL

Publié : dim. 23/août/2020 0:11
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.





@++

Re: Shader OpenGL

Publié : dim. 23/août/2020 7:30
par Micoute
Bon dimanche à tous,
voici ma contribution : https://www.dropbox.com/home

Re: Shader OpenGL

Publié : mar. 25/août/2020 8:53
par Patrick88