Avec cet exemple nous avons bien de l'eau mais le cube ne génère pas son ombre sur le sol.
Code : Tout sélectionner
EnableExplicit
InitEngine3D()
InitSprite()
OpenWindow(0, 0, 0, 800, 600, "Shadow", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0), 0, 0, 800, 600, 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)
; Light
CreateLight(#PB_Any, RGB(255, 255, 255), 1000, 1000, -500); , #PB_Light_Point)
; Camera
Define Camera = CreateCamera(#PB_Any, 0, 0, 100, 100)
MoveCamera(Camera, -400, 200, 600)
CameraLookAt(Camera, 0, 0, 0)
; Shadow Yes - Water No
;WorldShadows(#PB_Shadow_Modulative, 1000, RGB(105, 105, 105), 2048)
;WorldShadows(#PB_Shadow_Additive, 1000, RGB(105, 105, 105), 2048)
; Shadow No - Water Yes
WorldShadows(#PB_Shadow_TextureModulative, 1000, RGB(105, 105, 105), 2048) ; Shadow No - Water Yes
;WorldShadows(#PB_Shadow_TextureAdditive, 1000, RGB(105, 105, 105), 2048)
; 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 Crate = CreateEntity(#PB_Any, MeshID(Box_mesh), MaterialID(Crate_Mat), 0, 45, 0)
ScaleEntity(Crate, 100, 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))
; Loop
Repeat
RenderWorld()
FlipBuffers()
Until WindowEvent() = #PB_Event_CloseWindow
Décommenter la ligne
Code : Tout sélectionner
EntityRenderMode(Ground, #PB_Entity_None)
■ Souci avec l'eau si on utilise le flag #PB_Shadow_Modulative ou #PB_Shadow_Additive avec la fonction WorldShadows()
Commentez la ligne
Code : Tout sélectionner
WorldShadows(#PB_Shadow_TextureModulative, 1000, RGB(105, 105, 105), 2048) ; Shadow No - Water Yes
Code : Tout sélectionner
WorldShadows(#PB_Shadow_Modulative, 1000, RGB(105, 105, 105), 2048)