protected internal override void OnLoad() { base.OnLoad(); renderTexture = new RenderTexture(MMW.RenderResolution); renderTexture.ColorFormat0 = MMW.Configuration.DefaultPixelFormat; renderTexture.Load(); ssaoShader = (SSAOShader)MMW.GetAsset <Shader>("SSAO"); if (ssaoShader == null) { ssaoShader = new SSAOShader(); MMW.RegistAsset(ssaoShader); } if (GameObject != null) { Camera = GameObject.GetComponent <Camera>(); RenderTexture = Camera.TargetTexture; } orthoMatrix = Matrix4.CreateOrthographicOffCenter(-1, 1, -1, 1, -1, 1); }
public static void Initialize(Settings settings) { Running = false; Time = new Stopwatch(); Window = new NativeWindow(settings.ResolutionWidth, settings.ResolutionHeight, "Watchtower", GameWindowFlags.Default, GraphicsMode.Default, DisplayDevice.GetDisplay((DisplayIndex)settings.Display)); switch (settings.WindowMode) { case WindowMode.Window: Window.WindowBorder = WindowBorder.Fixed; Window.WindowState = WindowState.Normal; break; case WindowMode.BorderlessWindow: Window.WindowBorder = WindowBorder.Hidden; Window.WindowState = WindowState.Normal; break; case WindowMode.Fullscreen: Window.WindowBorder = WindowBorder.Hidden; Window.WindowState = WindowState.Fullscreen; break; default: Window.WindowBorder = WindowBorder.Fixed; // TODO: log Window.WindowState = WindowState.Normal; break; } GraphicsContext = new GraphicsContext(GraphicsMode.Default, Window.WindowInfo); GraphicsContext.LoadAll(); GraphicsContext.SwapInterval = 0; GL.Enable(EnableCap.DepthTest); GL.Enable(EnableCap.Blend); GL.BlendFunc(BlendingFactorSrc.SrcAlpha, BlendingFactorDest.OneMinusSrcAlpha); GL.ClearColor(15 / 255f, 15 / 255f, 15 / 255f, 1); fbshader = new FramebufferShader(); NormalBuffer = new Framebuffer(1280, 720); ColorBuffer = new Framebuffer(1280, 720); DepthBuffer = new Framebuffer(1280, 720); FinalBuffer = new Framebuffer(1280, 720); SSAOShader = new SSAOShader(); normalShader = new NormalShader(); ldshader = new LinearDepthShader(); FramebufferMesh = new Mesh(new VertexData { Vertices = new float[] { -1, -1, 0, 1, -1, 0, 1, 1, 0, -1, 1, 0 }, TextureCoordinates = new float[] { 0, 0, 1, 0, 1, 1, 0, 1 }, Indices = new uint[] { 0, 1, 2, 2, 3, 0 } }, new FramebufferShader()); Camera = new Camera(); Camera.Position = new Vector3(0, 128, 0); Camera.Yaw = 180; // TEMP TestShader = new BasicShader(); Console.WriteLine("TESTSHADER"); Console.WriteLine(TestShader.GetCompileStatus(ShaderType.VertexShader)); Console.WriteLine(TestShader.GetCompileStatus(ShaderType.FragmentShader)); Console.WriteLine(TestShader.GetCompileLog(ShaderType.VertexShader)); Console.WriteLine(TestShader.GetCompileLog(ShaderType.FragmentShader)); Console.WriteLine("NORMALSHADER"); Console.WriteLine(normalShader.GetCompileStatus(ShaderType.VertexShader)); Console.WriteLine(normalShader.GetCompileStatus(ShaderType.FragmentShader)); Console.WriteLine(normalShader.GetCompileLog(ShaderType.VertexShader)); Console.WriteLine(normalShader.GetCompileLog(ShaderType.FragmentShader)); Console.WriteLine("LINEARDEPTHSHADER"); Console.WriteLine(ldshader.GetCompileStatus(ShaderType.VertexShader)); Console.WriteLine(ldshader.GetCompileStatus(ShaderType.FragmentShader)); Console.WriteLine(ldshader.GetCompileLog(ShaderType.VertexShader)); Console.WriteLine(ldshader.GetCompileLog(ShaderType.FragmentShader)); Console.WriteLine("SSAOSHADER"); Console.WriteLine(SSAOShader.GetCompileStatus(ShaderType.VertexShader)); Console.WriteLine(SSAOShader.GetCompileStatus(ShaderType.FragmentShader)); Console.WriteLine(SSAOShader.GetCompileLog(ShaderType.VertexShader)); Console.WriteLine(SSAOShader.GetCompileLog(ShaderType.FragmentShader)); chunk = new Chunk(); for (int x = 0; x < 16; x += 2) { for (int y = 0; y < 128; y += 2) { for (int z = 0; z < 16; z += 2) { chunk.Blocks[x, y, z].Active = true; } } } for (int x = 0; x < 16; x++) { for (int y = 0; y < 128; y++) { for (int z = 0; z < 16; z++) { chunk.Blocks[x, y, z].Color = new Vector3((x / 15f), 40 / 255f, 94 / 255f); } } } chunk.Update(TestShader); GenerateChunksFromThatMapYouKnow(); // TestMesh = new Mesh(Block.BuildCube(true, true, false, true, false, true), TestShader); // TestMesh.Transform = Matrix4.CreateTranslation(22, 22, 22); Camera.Yaw = 90; // TEMP Vector3 posssssssss = new Vector3(141.4232f, 103.7891f, 35.3471f); Camera.Position = posssssssss; Window.Visible = true; Running = true; Time.Start(); double previous = Time.Elapsed.TotalMilliseconds; while (Running) { double current = Time.Elapsed.TotalMilliseconds; double elapsed = current - previous; // processInput? Update(elapsed); Render(); previous = current; } //int tickRate = 512; //double millisecondsPerUpdate = 1000.0 / tickRate; //double previous = Time.Elapsed.TotalMilliseconds; //double lag = 0; // Old loop //while (Running) //{ // double current = Time.Elapsed.TotalMilliseconds; // double elapsed = current - previous; // previous = current; // lag += elapsed; // // processinput // while (lag >= millisecondsPerUpdate) // temp // { // Update(lag / millisecondsPerUpdate); // lag -= millisecondsPerUpdate; // } // Render(); //} }