void DrawGL(int renderWidth, int renderHeight) { //Set state renderTarget.BindFramebuffer(); rstate.Cull = true; var cc = rstate.ClearColor; rstate.DepthEnabled = true; rstate.ClearColor = Color4.CornflowerBlue * new Color4(0.3f, 0.3f, 0.3f, 1f); rstate.ClearAll(); vps.Push(0, 0, renderWidth, renderHeight); var cam = new LookAtCamera(); cam.Update(renderWidth, renderHeight, new Vector3(zoom, 0, 0), Vector3.Zero); buffer.StartFrame(rstate); polyline.SetCamera(cam); billboards.Begin(cam, buffer); debug.StartFrame(cam, rstate); instance.Draw(polyline, billboards, debug, transform, sparam); polyline.FrameEnd(); billboards.End(); buffer.DrawOpaque(rstate); rstate.DepthWrite = false; buffer.DrawTransparent(rstate); rstate.DepthWrite = true; debug.Render(); //Restore state rstate.Cull = false; rstate.BlendMode = BlendMode.Normal; rstate.DepthEnabled = false; rstate.ClearColor = cc; RenderTarget2D.ClearBinding(); vps.Pop(); }
public void End(bool view = true) { vps.Pop(); RenderTarget2D.ClearBinding(); if (mw.Config.MSAA != 0) { msaa.BlitToRenderTarget(RenderTarget); } rstate.ClearColor = cc; rstate.DepthEnabled = false; rstate.BlendMode = BlendMode.Normal; rstate.Cull = false; //Viewport Control if (view) { ImGui.ImageButton((IntPtr)rid, new Vector2(rw, rh), new Vector2(0, 1), new Vector2(1, 0), 0, Vector4.One, Vector4.One); if (ImGui.IsItemHovered(ImGuiHoveredFlags.None)) { switch (mw.Config.CameraMode) { case CameraModes.Default: DefaultControls(); break; case CameraModes.Orbit: OrbitControls(); break; } } } }
int RenderGradientInternal(ViewportManager vps, Color4 top, Color4 bottom) { var target = new RenderTarget2D(128, 128); var r2d = game.GetService <Renderer2D>(); game.RenderState.RenderTarget = target; vps.Push(0, 0, 128, 128); r2d.Start(128, 128); r2d.DrawVerticalGradient(new Rectangle(0, 0, 128, 128), top, bottom); r2d.Finish(); vps.Pop(); game.RenderState.RenderTarget = null; toFree.Add(target); return(RegisterTexture(target.Texture)); }
int RenderGradientInternal(ViewportManager vps, Color4 top, Color4 bottom) { var target = new RenderTarget2D(128, 128); var r2d = game.GetService <Renderer2D>(); target.BindFramebuffer(); vps.Push(0, 0, 128, 128); r2d.Start(128, 128); r2d.DrawVerticalGradient(new Rectangle(0, 0, 128, 128), top, bottom); r2d.Finish(); vps.Pop(); RenderTarget2D.ClearBinding(); toFree.Add(target); return(RegisterTexture(target)); }
public void End(bool view = true) { vps.Pop(); rstate.RenderTarget = null; if (mw.Config.MSAA != 0) { msaa.BlitToRenderTarget(RenderTarget); } rstate.ClearColor = cc; rstate.DepthEnabled = false; rstate.BlendMode = BlendMode.Normal; rstate.Cull = false; //Viewport Control if (view) { ImGuiHelper.DisableAlpha(); ImGui.ImageButton((IntPtr)rid, new Vector2(rw, rh), new Vector2(0, 1), new Vector2(1, 0), 0, Color4.Black, Color4.White); ImGuiHelper.EnableAlpha(); if (Mode == CameraModes.Cockpit) { ModelRotation = Vector2.Zero; } if (Mode == CameraModes.Arcball) { ArcballUpdate(); } if (ImGui.IsItemHovered(ImGuiHoveredFlags.None)) { switch (Mode) { case CameraModes.Walkthrough: WalkthroughControls(); break; case CameraModes.Starsphere: StarsphereControls(); break; case CameraModes.Arcball: ArcballControls(); break; } } } }
void DrawGL(int renderWidth, int renderHeight) { //Set state renderTarget.BindFramebuffer(); rstate.Cull = true; var cc = rstate.ClearColor; rstate.DepthEnabled = true; rstate.ClearColor = Color4.CornflowerBlue * new Color4(0.3f, 0.3f, 0.3f, 1f); rstate.ClearAll(); vps.Push(0, 0, renderWidth, renderHeight); //Draw Model var cam = new ChaseCamera(new Viewport(0, 0, renderWidth, renderHeight)); cam.ChasePosition = Vector3.Zero; cam.ChaseOrientation = Matrix4.CreateRotationX(MathHelper.Pi); cam.DesiredPositionOffset = new Vector3(zoom, 0, 0); //cam.OffsetDirection = Vector3.UnitX; cam.Reset(); cam.Update(TimeSpan.FromSeconds(500)); buffer.StartFrame(rstate); polyline.SetCamera(cam); billboards.Begin(cam, buffer); debug.StartFrame(cam, rstate); instance.Draw(polyline, billboards, debug, transform, sparam); polyline.FrameEnd(); billboards.End(); buffer.DrawOpaque(rstate); rstate.DepthWrite = false; buffer.DrawTransparent(rstate); rstate.DepthWrite = true; debug.Render(); //Restore state rstate.Cull = false; rstate.BlendMode = BlendMode.Normal; rstate.DepthEnabled = false; rstate.ClearColor = cc; RenderTarget2D.ClearBinding(); vps.Pop(); }
void DrawGL(int renderWidth, int renderHeight) { //Set state renderTarget.BindFramebuffer(); rstate.Cull = true; var cc = rstate.ClearColor; rstate.DepthEnabled = true; rstate.ClearColor = Color4.CornflowerBlue; rstate.ClearAll(); vps.Push(0, 0, renderWidth, renderHeight); //Draw Model var cam = new ChaseCamera(new Viewport(0, 0, renderWidth, renderHeight)); cam.ChasePosition = Vector3.Zero; cam.ChaseOrientation = Matrix4.CreateRotationX(MathHelper.Pi); cam.DesiredPositionOffset = new Vector3(drawable.GetRadius() * 2, 0, 0); cam.OffsetDirection = Vector3.UnitX; cam.Reset(); cam.Update(TimeSpan.FromSeconds(500)); buffer.StartFrame(); drawable.Update(cam, TimeSpan.Zero, TimeSpan.Zero); drawable.Update(cam, TimeSpan.FromSeconds(0), TimeSpan.FromSeconds(0)); drawable.DrawBuffer(buffer, Matrix4.Identity, Lighting.Empty); buffer.DrawOpaque(rstate); rstate.DepthWrite = false; buffer.DrawTransparent(rstate); rstate.DepthWrite = true; //Restore state rstate.Cull = false; rstate.BlendMode = BlendMode.Normal; rstate.DepthEnabled = false; rstate.ClearColor = cc; RenderTarget2D.ClearBinding(); vps.Pop(); }
public void End() { vps.Pop(); RenderTarget2D.ClearBinding(); rstate.ClearColor = cc; rstate.DepthEnabled = false; rstate.BlendMode = BlendMode.Normal; rstate.Cull = false; //Viewport Control ImGui.ImageButton((IntPtr)rid, new Vector2(rw, rh), Vector2.Zero, Vector2.One, 0, Vector4.One, Vector4.One); if (ImGui.IsItemHovered(HoveredFlags.Default)) { if (ImGui.IsMouseDragging(0, 1f)) { var delta = (Vector2)ImGui.GetMouseDragDelta(0, 1f); Rotation -= (delta / 64); ImGui.ResetMouseDragDelta(0); } float wheel = ImGui.GetIO().MouseWheel; if (ImGui.GetIO().ShiftPressed) { Zoom -= wheel * (2 * ZoomStep); } else { Zoom -= wheel * ZoomStep; } if (Zoom < 0) { Zoom = 0; } } }
void DrawGL(int renderWidth, int renderHeight) { //Set state renderTarget.BindFramebuffer(); rstate.Cull = true; var cc = rstate.ClearColor; rstate.DepthEnabled = true; rstate.ClearColor = Color4.CornflowerBlue * new Color4(0.3f, 0.3f, 0.3f, 1f); rstate.ClearAll(); vps.Push(0, 0, renderWidth, renderHeight); //Draw Model var cam = new ChaseCamera(new Viewport(0, 0, renderWidth, renderHeight)); cam.ChasePosition = Vector3.Zero; cam.ChaseOrientation = Matrix4.CreateRotationX(MathHelper.Pi); cam.DesiredPositionOffset = new Vector3(drawable.GetRadius() * 2, 0, 0); //cam.OffsetDirection = Vector3.UnitX; cam.Reset(); cam.Update(TimeSpan.FromSeconds(500)); cam.UpdateFrameNumber(rand.Next()); //Stop bad matrix caching drawable.Update(cam, TimeSpan.Zero, TimeSpan.Zero); if (viewMode != M_NONE) { buffer.StartFrame(rstate); if (drawable is CmpFile) { DrawCmp(cam, false); } else { DrawSimple(cam, false); } buffer.DrawOpaque(rstate); rstate.DepthWrite = false; buffer.DrawTransparent(rstate); rstate.DepthWrite = true; } if (doWireframe) { buffer.StartFrame(rstate); GL.PolygonOffset(1, 1); rstate.Wireframe = true; if (drawable is CmpFile) { DrawCmp(cam, true); } else { DrawSimple(cam, false); } GL.PolygonOffset(0, 0); buffer.DrawOpaque(rstate); rstate.Wireframe = false; } //Draw hardpoints DrawHardpoints(cam); //Restore state rstate.Cull = false; rstate.BlendMode = BlendMode.Normal; rstate.DepthEnabled = false; rstate.ClearColor = cc; RenderTarget2D.ClearBinding(); vps.Pop(); }
public void End(bool view = true) { vps.Pop(); RenderTarget2D.ClearBinding(); rstate.ClearColor = cc; rstate.DepthEnabled = false; rstate.BlendMode = BlendMode.Normal; rstate.Cull = false; //Viewport Control if (view) { ImGui.ImageButton((IntPtr)rid, new Vector2(rw, rh), new Vector2(0, 1), new Vector2(1, 0), 0, Vector4.One, Vector4.One); if (ImGui.IsItemHovered(ImGuiHoveredFlags.None)) { var io = ImGui.GetIO(); if (ImGui.IsMouseDragging(0, 1f)) { var delta = (Vector2)ImGui.GetMouseDragDelta(0, 1f); ImGui.ResetMouseDragDelta(0); var rotmat = Matrix4.CreateRotationX(CameraRotation.Y) * Matrix4.CreateRotationY(CameraRotation.X); if (ImGui.IsMouseDown(1)) { //LMB + RMB - Move up and down ImGui.ResetMouseDragDelta(1); var y = rotmat.Transform(Vector3.UnitY); CameraOffset += y * (delta.Y * ModelScale / 52f); } else { var z = rotmat.Transform(Vector3.UnitZ); var x = rotmat.Transform(Vector3.UnitX); CameraOffset += x * (delta.X * ModelScale / 52f); CameraOffset -= z * (delta.Y * ModelScale / 44f); } } else if (ImGui.IsMouseDragging(1, 1f)) { var delta = (Vector2)ImGui.GetMouseDragDelta(1, 1f); ImGui.ResetMouseDragDelta(1); if (io.KeyCtrl) { //CTRL + RMB - Rotate Model Rotation += (delta / 100) * new Vector2(1, -1); } else { //RMB - Rotate viewport camera CameraRotation -= (delta / 100); KeyboardControls(); } } else if (io.MouseDown[1]) { KeyboardControls(); } } } }