Page 1 sur 1

Souci #PB_Shadow_TextureModulative -> #PB_Shadow_Modulative

Publié : mar. 04/juin/2019 17:53
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:

Re: Souci #PB_Shadow_TextureModulative -> #PB_Shadow_Modulat

Publié : mer. 05/juin/2019 8:21
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)

Re: Souci #PB_Shadow_TextureModulative -> #PB_Shadow_Modulat

Publié : mer. 05/juin/2019 9:38
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 ?

Re: Souci #PB_Shadow_TextureModulative -> #PB_Shadow_Modulat

Publié : mer. 05/juin/2019 16:45
par Micoute
Oui, c'est vrai, mais j'ai d'autres programmes qui contiennent cette commandes et qui fonctionnent.

Re: Souci #PB_Shadow_TextureModulative -> #PB_Shadow_Modulat

Publié : jeu. 06/juin/2019 8:37
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.





@++

Re: Souci #PB_Shadow_TextureModulative -> #PB_Shadow_Modulat

Publié : jeu. 06/juin/2019 12:49
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)