Code: Select all
If InitEngine3D(#PB_Engine3D_EnableCG | #PB_Engine3D_DebugLog) = 0
End
EndIf
If InitSprite() = 0
End
EndIf
If InitKeyboard() = 0
End
EndIf
If InitMouse() = 0
End
EndIf
Enumeration
#Font
#Main
#Help
#Camera
#Light
#Texture
#Material
#Node
#SinbadMesh
#Sinbad
#PlaneMesh
#Plane
#Effect
EndEnumeration
Structure Color
r.f
g.f
b.f
a.f
EndStructure
Declare DisplayHelp()
ExamineDesktops()
DesktopW = DesktopWidth(0)
DesktopH = DesktopHeight(0)
Global CPU$ = CPUName()
Global FirstFrame = 0
LoadFont(#Font, "Courier New", 10, #PB_Font_Bold)
If OpenWindow(#Main, 0, 0, DesktopW, DesktopH, "Compositor Effect")
;AntialiasingMode(#PB_AntialiasingMode_x6)
If OpenWindowedScreen(WindowID(#Main), 0, 0, DesktopW, DesktopH, 0, 0, 0)
Add3DArchive("/", #PB_3DArchive_FileSystem)
Add3DArchive(#PB_Compiler_Home+"Examples/3D/Data/Packs/Sinbad", #PB_3DArchive_Zip)
Parse3DScripts()
CreateSprite(#Help, 300, 140)
CreateTexture(#Texture, 256, 256)
StartDrawing(TextureOutput(#Texture))
Box(0, 0, 128, 128, RGB(0,0,0))
Box(0, 128, 128, 128, RGB(255,255,255))
Box(128, 0, 128, 128, RGB(255,255,255))
Box(128, 128, 128, 128, RGB(0,0,0))
StopDrawing()
CreateMaterial(#Material, TextureID(#Texture))
CreateNode(#Node, 0, 0, 0)
CreatePlane(#PlaneMesh, 60, 60, 60, 60, 1, 1)
LoadMesh(#SinbadMesh, "Sinbad.mesh")
CreateEntity(#Sinbad, MeshID(#SinbadMesh), #PB_Material_None)
CreateEntity(#Plane, MeshID(#PlaneMesh), MaterialID(#Material), 0, -5, 0)
CreateCamera(#Camera, 0, 0, 100, 100)
MoveCamera(#Camera, 0, 0, 20)
CameraLookAt(#Camera, 0, 0, 0)
CameraBackColor(#Camera, RGB(100, 100, 100))
AttachNodeObject(#Node, CameraID(#Camera))
CreateLight(#Light, RGB( 0, 0, 0), -5, 5, 5)
SetLightColor(#Light, #PB_Light_DiffuseColor, RGB(200,200,200))
SetLightColor(#Light, #PB_Light_SpecularColor, RGB(250,250,250))
StartEntityAnimation(#Sinbad, "IdleTop", #PB_EntityAnimation_Manual)
StartEntityAnimation(#Sinbad, "IdleBase", #PB_EntityAnimation_Manual)
CreateCompositorEffect(#Effect, CameraID(#Camera), "Brightness")
Define MyColor.Color
MyColor\r = 1.0
MyColor\g = 1.0
MyColor\b = 1.0
MyColor\a = 1.0
CompositorEffectParameter(#Effect, 0, 0, "ColorValue", 7, @MyColor)
Repeat
Event=WindowEvent()
If ExamineKeyboard()
If KeyboardPushed(#PB_Key_F5)
MyColor\r + 0.01
MyColor\g + 0.01
MyColor\b + 0.01
ElseIf KeyboardPushed(#PB_Key_F6)
MyColor\r - 0.01
MyColor\g - 0.01
MyColor\b - 0.01
EndIf
If KeyboardPushed(#PB_Key_Up)
MoveCamera(#Camera, 0, 0, -0.2)
ElseIf KeyboardPushed(#PB_Key_Down)
MoveCamera(#Camera, 0, 0, 0.2)
EndIf
If KeyboardPushed(#PB_Key_Left)
RotateNode(#Node, 0, -1, 0, #PB_Relative)
CameraLookAt(#Camera, 0, 0, 0)
ElseIf KeyboardPushed(#PB_Key_Right)
RotateNode(#Node, 0, 1, 0, #PB_Relative)
CameraLookAt(#Camera, 0, 0, 0)
EndIf
If KeyboardReleased(#PB_Key_H)
If Help = 0
Help = 1
Else
Help = 0
EndIf
EndIf
EndIf
AddEntityAnimationTime(#Sinbad, "IdleTop", LastFrame * 2)
AddEntityAnimationTime(#Sinbad, "IdleBase", LastFrame * 2)
LastFrame = RenderWorld()
If Help = 0
DisplayHelp()
EndIf
FlipBuffers()
Until Event = #PB_Event_CloseWindow Or KeyboardPushed(#PB_Key_Escape)
EndIf
EndIf
End
Procedure DisplayHelp()
CurrentFPS = Engine3DFrameRate(#PB_Engine3D_Current)
AverageFPS = Engine3DFrameRate(#PB_Engine3D_Average)
MaximumFPS = Engine3DFrameRate(#PB_Engine3D_Maximum)
MinimumFPS = Engine3DFrameRate(#PB_Engine3D_Minimum)
CountTris=CountRenderedTriangles()
StartDrawing(SpriteOutput(#Help))
Box(0, 0, 300, 140, RGB(40,40,40))
DrawingFont(FontID(#Font))
DrawText(2, 2, CPU$, RGB(255,0,0), RGB(40,40,40))
DrawText(2, 22, "Current FPS : "+Str(CurrentFPS), RGB(0,255,255), RGB(40,40,40))
DrawText(2, 42, "Average FPS : "+Str(AverageFPS), RGB(0,255,255), RGB(40,40,40))
DrawText(2, 62, "Maximum FPS : "+Str(MaximumFPS), RGB(0,255,255), RGB(40,40,40))
DrawText(2, 82, "Minimum FPS : "+Str(MinimumFPS), RGB(0,255,255), RGB(40,40,40))
DrawText(2, 102, "Rendered Triangles : "+Str(CountTris), RGB(0,255,0), RGB(40,40,40))
DrawText(2, 122, "Press H to Hide/Show Help", RGB(255,155,255), RGB(40,40,40))
StopDrawing()
DisplayTransparentSprite(#Help,20,20)
If FirstFrame=0
Engine3DFrameRate(#PB_Engine3D_Reset)
FirstFrame=1
EndIf
EndProcedure