; ------------------------------------------------------------
;
; PureBasic - Compositor
;
; (c) Fantaisie Software
;
; ------------------------------------------------------------
;
#CameraSpeed =0.5
Define.f KeyX, KeyY, MouseX, MouseY
InitEngine3D()
InitSprite()
InitKeyboard()
InitMouse()
ExamineDesktops():dx=DesktopWidth(0)*0.8:dy=DesktopHeight(0)*0.8
OpenWindow(0, 0,0, DesktopUnscaledX(dx),DesktopUnscaledY(dy), "Compositor - [F1]Radial Blur - [F2] Bloom - [F3] Glass - [F4] Embossed - [F5] Sharpen Edges - [F6] Posterize - [F7] Laplace - [F8] Tiling - [Esc] quit",#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0), 0, 0, dx, dy, 0, 0, 0)
Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Textures", #PB_3DArchive_FileSystem)
Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Packs/desert.zip", #PB_3DArchive_Zip)
Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Compositors", #PB_3DArchive_FileSystem)
Parse3DScripts()
CreateTorus(0,10,0.8,64,64)
For i=0 To 100
CreateMaterial(i,(0),Random($ffffff))
MaterialShininess(i,64,$ffffff)
CreateEntity(i,MeshID(0),MaterialID(i),Random(100)-50,Random(100)-50,Random(100)-50):RotateEntity(i,Random(360),Random(360),Random(360))
Next
SkyBox("desert07.jpg")
CreateCamera(0, 0, 0, 100, 100)
MoveCamera(0,100,0,0)
CameraLookAt(0, 0, 0, 0)
CreateLight(0,$ffffff,20000,10000,10000)
CreateCompositorEffect(0,0,"Radial Blur")
Repeat
While WindowEvent():Wend
ExamineMouse()
ExamineKeyboard()
MouseX = -MouseDeltaX() * 0.05
MouseY = -MouseDeltaY() * 0.05
KeyX = (KeyboardPushed(#PB_Key_Right)-KeyboardPushed(#PB_Key_Left))*#CameraSpeed
Keyy = (KeyboardPushed(#PB_Key_Down)-KeyboardPushed(#PB_Key_Up)-MouseWheel()*10)*#CameraSpeed
If KeyboardReleased(#PB_Key_F1):CreateCompositorEffect(0,0,"Radial Blur"):EndIf
If KeyboardReleased(#PB_Key_F2):CreateCompositorEffect(0,0,"Bloom"):EndIf
If KeyboardReleased(#PB_Key_F3):CreateCompositorEffect(0,0,"Glass"):EndIf
If KeyboardReleased(#PB_Key_F4):CreateCompositorEffect(0,0,"Embossed"):EndIf
If KeyboardReleased(#PB_Key_F5):CreateCompositorEffect(0,0,"Sharpen Edges"):EndIf
If KeyboardReleased(#PB_Key_F6):CreateCompositorEffect(0,0,"Posterize"):EndIf
If KeyboardReleased(#PB_Key_F7):CreateCompositorEffect(0,0,"Laplace"):EndIf
If KeyboardReleased(#PB_Key_F8):CreateCompositorEffect(0,0,"Tiling"):EndIf
RotateCamera(0, MouseY, MouseX, 0, #PB_Relative)
MoveCamera (0, KeyX, 0, KeyY)
For i=0 To 100
RotateEntity(i,0.1,0.2,0.3,#PB_Relative)
Next
RenderWorld()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1