Souci #PB_Shadow_TextureModulative -> #PB_Shadow_Modulative

Généralités sur la programmation 3D
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Souci #PB_Shadow_TextureModulative -> #PB_Shadow_Modulative

Message par falsam »

Suivant les scenes extérieur et intérieur de mon application, j'alterne entre le mode #PB_Shadow_TextureModulative et #PB_Shadow_Modulative.

Je rencontre deux soucis :
- L'eau part de travers,
- J'observe un lag plus important avec le mode #PB_Shadow_TextureModulative

Pouvez vous tester ce code et me dire si vous observez ces soucis.

Touche F2 et F3 pour alterner entre le mode #PB_Shadow_Modulative et #PB_Shadow_TextureModulative

Code : Tout sélectionner

EnableExplicit

Define angle.f

InitEngine3D() 
InitSprite() 
InitKeyboard()

OpenWindow(0, 0, 0, 1024, 768, "Shadow", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0), 0, 0, 1024, 768, 0, 0, 0)

; Assets directory
Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Textures", #PB_3DArchive_FileSystem)
Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Water", #PB_3DArchive_FileSystem)
Add3DArchive(#PB_Compiler_Home + "Examples/3D/Data/Packs/desert.zip", #PB_3DArchive_Zip)

; Camera
Define Camera = CreateCamera(#PB_Any, 0, 0, 100, 100)

; Sky
SkyBox("desert07.jpg")

; Water
CreateWater(Camera, 0, -17.5, 0, 0, #PB_World_WaterLowQuality | #PB_World_WaterSmooth | #PB_World_WaterSun)
WaterColor(Camera, RGB(72, 209, 204))

; Light
CreateLight(#PB_Any, RGB(255, 255, 255), 1000, 1000, -500); , #PB_Light_Point)

; System Shadow
WorldShadows(#PB_Shadow_TextureModulative, 1000, RGB(105, 105, 105), 2048) 
Debug "Mode #PB_Shadow_TextureModulative"

; Materials
Define Ground_Mat = CreateMaterial(#PB_Any, TextureID(LoadTexture(#PB_Any, "soil_wall.jpg")))
ScaleMaterial(Ground_Mat, 0.5, 0.5)

Define Crate_Mat = CreateMaterial(#PB_Any, TextureID(LoadTexture(#PB_Any, "caisse.png")))

; Meshes
Define Box_Mesh = CreateCube(#PB_Any, 1)

; Entities
Define Ground = CreateEntity(#PB_Any, MeshID(Box_Mesh), MaterialID(Ground_Mat), 0, -15, 0)
ScaleEntity(Ground, 500, 20, 500) 
EntityRenderMode(Ground, #PB_Shadow_None)

Define Crate0= CreateEntity(#PB_Any, MeshID(Box_Mesh), MaterialID(Crate_Mat), 0, 45, 0)
ScaleEntity(Crate0, 100, 100, 100) 
EntityRenderMode(crate0, #PB_Entity_None)

Define Crate1= CreateEntity(#PB_Any, MeshID(Box_mesh), MaterialID(Crate_Mat), 30, 145, -30)
ScaleEntity(Crate1, 100, 100, 100) 
RotateEntity(Crate1, 0, 45, 0)
EntityRenderMode(crate1, #PB_Entity_CastShadow)

; Loop
Repeat
  ExamineKeyboard()
  
  If KeyboardReleased(#PB_Key_F2)
    WorldShadows(#PB_Shadow_Modulative, 1000, RGB(105, 105, 105), 2048)
    Debug "#PB_Shadow_Modulative"
  EndIf
  
  If KeyboardReleased(#PB_Key_F3)
    WorldShadows(#PB_Shadow_TextureModulative, 1000, RGB(105, 105, 105), 2048) 
    Debug "Mode #PB_Shadow_TextureModulative"  
  EndIf
  angle + 1
  
  CameraFollow(camera, EntityID(Ground), angle, 600, 1000, 1, 1, #True)
  CameraLookAt(Camera, 0, 0, 0)
  
  RenderWorld()
  FlipBuffers()
Until WindowEvent() = #PB_Event_CloseWindow Or KeyboardReleased(#PB_Key_Escape)
Possible aussi que la méthode est à proscrire :wink:
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Souci #PB_Shadow_TextureModulative -> #PB_Shadow_Modulat

Message par Micoute »

Moi, je ne sais pas pourquoi, mais mon système n'accepte pas l'instruction RenderWorld(), Accès mémoire invalide. (erreur de lecture à l'adresse 0)
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 !
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Souci #PB_Shadow_TextureModulative -> #PB_Shadow_Modulat

Message par falsam »

Micoute a écrit :Moi, je ne sais pas pourquoi, mais mon système n'accepte pas l'instruction RenderWorld(),
Tu compiles peut être avec l'option sub-system OpenGL ?
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Souci #PB_Shadow_TextureModulative -> #PB_Shadow_Modulat

Message par Micoute »

Oui, c'est vrai, mais j'ai d'autres programmes qui contiennent cette commandes et qui fonctionnent.
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 !
Avatar de l’utilisateur
venom
Messages : 3071
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Souci #PB_Shadow_TextureModulative -> #PB_Shadow_Modulat

Message par venom »

Chez moi aussi, certains exemples contenants RenderWorld() plantes. Même les exemples de l'aide PB
L’exécutable de débogage se ferme de façon inattendu.





@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Souci #PB_Shadow_TextureModulative -> #PB_Shadow_Modulat

Message par falsam »

Tssss !! que ça plante sur vos PC est hors context. Si vous avez un souci permanent sur les codes 3D, alors ouvrez un topic :wink:

Pour moi le sujet est résolu : On ne peut pas alterner les systems d'ombrage et la création de l'eau ne fonctionne pas avec le système d'ombrage activé avec l'option #PB_Shadow_Modulative.

Code : Tout sélectionner

EnableExplicit

Define Camera

EnableExplicit

InitEngine3D() 
InitSprite() 
InitKeyboard()

OpenWindow(0, 0, 0, 1024, 768, "Where is my water", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0), 0, 0, 1024, 768, 0, 0, 0)

; Assets directory
Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Water", #PB_3DArchive_FileSystem)
Add3DArchive(#PB_Compiler_Home + "Examples/3D/Data/Packs/desert.zip", #PB_3DArchive_Zip)

; System Shadow
WorldShadows(#PB_Shadow_Modulative, 1000, RGB(105, 105, 105), 2048) 

; Camera
Camera = CreateCamera(#PB_Any, 0, 0, 100, 100)
MoveCamera(Camera, 0, 100, 200)

; Sky
SkyBox("desert07.jpg")

; Water
CreateWater(Camera, 0, -17.5, 0, 0, #PB_World_WaterLowQuality | #PB_World_WaterSmooth | #PB_World_WaterSun)
WaterColor(Camera, RGB(72, 209, 204))

; Loop
Repeat
  ExamineKeyboard()
  
  RenderWorld(60)
  FlipBuffers()
Until WindowEvent() = #PB_Event_CloseWindow Or KeyboardReleased(#PB_Key_Escape)
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Répondre