static void Frame()
{
Processor.Process();
Model ToLoad;
for (int i = 0; i < 2 - VSync && Model.ModelsToLoad.TryPop(out ToLoad); i++)
{
ToLoad.Load();
}
Sun.Main.Tick();
Renderer.PrepareShadow();
Chunks.RenderVisible();
Renderer.EndShadow();
using (Renderer.PrepareCamera(Constants.Background))
{
Chunks.RenderVisible();
((CameraShader)Renderer.ActiveShader).DisableLighting();
Skybox.Main.MoveWorld = Camera.Position;
Skybox.Main.Render();
Sun.Main.Render();
}
Overlay?.Start();
Overlay?.DrawCrosshair();
Overlay?.Draw($"Coords ({Camera.Position.X}, {Camera.Position.Y}, {Camera.Position.Z})", 10, 10, 600, 20);
Overlay?.Draw($"Rotation ({Camera.RotationX}, {Camera.RotationY})", 10, 30, 600, 20);
Overlay?.Draw($"Frames ({FPS}, VSync {VSync})", 10, 50, 600, 20);
Overlay?.Draw($"Moved Chunks ({ChunkLoader.MovedX}, {ChunkLoader.MovedZ}) - Size {ChunkLoader.ChunkCountSide}", 10, 70, 600, 20);
Overlay?.Draw($"F1/2/4 Anti Aliasing Count", 10, 90, 600, 20);
Overlay?.Draw($"F9/10 Chunks, F11 Fullscreen, ESC Exit", 10, 110, 600, 20);
Overlay?.Draw($"F8 WASD Space/Shift Movement", 10, 130, 600, 20);
Overlay?.End();
Frames++;
if (Watch.ElapsedMilliseconds >= 1000)
{
FPS = (float)Frames / Watch.ElapsedMilliseconds * 1000;
Watch.Restart();
Frames = 0;
}
Renderer.EndCamera(VSync);
}