private void DrawPlanes(Canvas3D Canvas) { Canvas.Polygon(new Vector4[] { new Vector4(-200, 100, 100, 1), new Vector4(-200, 100, 300, 1), new Vector4(200, 100, 300, 1), new Vector4(200, 100, 100, 1) }, SKColors.Red); Canvas.Polygon(new Vector4[] { new Vector4(100, -200, 100, 1), new Vector4(100, -200, 300, 1), new Vector4(100, 200, 300, 1), new Vector4(100, 200, 100, 1) }, SKColors.Green); Canvas.Polygon(new Vector4[] { new Vector4(-200, -200, 200, 1), new Vector4(200, -200, 200, 1), new Vector4(200, 200, 200, 1), new Vector4(-200, 200, 200, 1), }, new SKColor(0, 0, 255, 64)); }
public void Canvas3D_Test_02_Line() { Canvas3D Canvas = new Canvas3D(640, 480, 1, SKColors.White); this.DrawCurve(Canvas); this.Save(Canvas, "02.png"); }
private void DrawPlanes(Canvas3D Canvas) { Canvas.Polygon(new Vector4[] { new Vector4(-500, 100, 1000, 1), new Vector4(-500, 100, 2000, 1), new Vector4(500, 100, 2000, 1), new Vector4(500, 100, 1000, 1) }, SKColors.Red, true); Canvas.Polygon(new Vector4[] { new Vector4(100, -500, 1000, 1), new Vector4(100, -500, 2000, 1), new Vector4(100, 500, 2000, 1), new Vector4(100, 500, 1000, 1) }, SKColors.Green, true); Canvas.Polygon(new Vector4[] { new Vector4(-500, -500, 1500, 1), new Vector4(500, -500, 1500, 1), new Vector4(500, 500, 1500, 1), new Vector4(-500, 500, 1500, 1), }, new SKColor(0, 0, 255, 64), true); }
public void Canvas3D_Test_03_Oversampling() { Canvas3D Canvas = new Canvas3D(640, 480, 3, SKColors.White); this.DrawCurve(Canvas); this.Save(Canvas, "03.png"); }
private void DrawThreePlanes(Canvas3D Canvas, I3DShader Shader, float x, float y, float z) { Canvas.Polygon(new Vector4[] { new Vector4(-500, 500, z, 1), new Vector4(500, 500, z, 1), new Vector4(500, -500, z, 1), new Vector4(-500, -500, z, 1) }, Shader, true); Canvas.Polygon(new Vector4[] { new Vector4(x, 500, 1000, 1), new Vector4(x, 500, 2000, 1), new Vector4(x, -500, 2000, 1), new Vector4(x, -500, 1000, 1) }, Shader, true); Canvas.Polygon(new Vector4[] { new Vector4(-500, y, 2000, 1), new Vector4(500, y, 2000, 1), new Vector4(500, y, 1000, 1), new Vector4(-500, y, 1000, 1) }, Shader, true); }
public static void Init(Window window, Canvas3D mainCanvas) { //Initialize Graphics API Service.Set <GraphicDeviceFactory>(new IgneelD3D10.GraphicManager10()); //Initialize Input API Service.Set <Igneel.Input.InputManager>(new IgneelDirectInput.DInputManager()); //Initialize shader respository ShaderRepository.SetupD3D10_SM40(_shaderRepositoryDir); var gfactory = Service.Require <GraphicDeviceFactory>(); var iFactory = Service.Get <Igneel.Input.InputManager>(); //Helper to get the HWND Handle var interopHelper = new WindowInteropHelper(window); //The canvas size var size = mainCanvas.RenderSize; EngineState.Shading.FillMode = FillMode.Wireframe; //Initialize the Canvas. The Canvas3D is used to render to the screen in a WPF context //this is achived by creating a GraphicPresenter mainCanvas.Init(); //Initialize the Engine and creating the IGraphicContext by setting the BackBuffer and DepthStencil descriptions Engine.Initialize(new InputContext(interopHelper.Handle), new GraphicDeviceDesc { Adapter = 0, DriverType = GraphicDeviceType.Hardware, Context = new WindowContext(mainCanvas.Handle) { BackBufferWidth = (int)size.Width, BackBufferHeight = (int)size.Height, BackBufferFormat = Format.R8G8B8A8_UNORM_SRGB, DepthStencilFormat = Format.D24_UNORM_S8_UINT, FullScreen = false, Sampling = new Multisampling(1, 0), Presentation = PresentionInterval.Default } }); //Set the Engine presenter to the Canvas3D presenter //this instruct the Engine to render the content using the Canvas3D GraphicPresenter Engine.Presenter = mainCanvas.CreateDafultPresenter(); //Set default Lighting and Shading properties EngineState.Lighting.HemisphericalAmbient = true; EngineState.Lighting.Reflection.Enable = true; EngineState.Lighting.TransparencyEnable = true; EngineState.Shading.BumpMappingEnable = true; //Initialize the Hight Level rendering System //This will register the renders fo each components for each supported shading techniques InitializeRendering(); //InitializeServices(); }
public void Canvas3D_Test_10_PhongShading_Oversampling_3() { Canvas3D Canvas = new Canvas3D(640, 480, 3, SKColors.White); Canvas.ProjectZ(500); this.DrawThreePlanes(Canvas); this.Save(Canvas, "10.png"); }
public void Canvas3D_Test_06_ZBuffer() { Canvas3D Canvas = new Canvas3D(640, 480, 3, SKColors.White); Canvas.ProjectZ(500); this.DrawPlanes(Canvas); this.Save(Canvas, "06.png"); }
public void Canvas3D_Test_04_Perspective() { Canvas3D Canvas = new Canvas3D(1200, 800, 1, SKColors.White); Canvas.Perspective(200, 2000); this.DrawWireframeCube(Canvas); this.Save(Canvas, "04.png"); }
public void Canvas3D_Test_04_Perspective() { Canvas3D Canvas = new Canvas3D(640, 480, 3, SKColors.White); Canvas.ProjectZ(500); this.DrawWireframeCube(Canvas); this.Save(Canvas, "04.png"); }
protected override void OnStartup(StartupEventArgs e) { VixWorld = new SharedWorld(); Canvas3D.UsePhysics = true; Canvas3D.StartVixen(VixWorld); base.OnStartup(e); }
public void Canvas3D_Test_06_ZBuffer() { Canvas3D Canvas = new Canvas3D(1200, 800, 1, SKColors.White); Canvas.Perspective(200, 2000); this.DrawPlanes(Canvas); this.Save(Canvas, "06.png"); }
public void Canvas3D_Test_05_Polygon() { Canvas3D Canvas = new Canvas3D(1200, 800, 1, SKColors.White); Canvas.Perspective(200, 2000); this.DrawCube(Canvas); this.Save(Canvas, "05.png"); }
public void Canvas3D_Test_05_Polygon() { Canvas3D Canvas = new Canvas3D(640, 480, 3, SKColors.White); Canvas.ProjectZ(500); this.DrawCube(Canvas); this.Save(Canvas, "05.png"); }
public static void DrawGBuffers <T>() where T : Effect { var technique = RenderManager.ActiveTechnique as DefferedLigthing <T>; if (technique != null) { Form form = new Form(); form.BackColor = Color.Blue; form.StartPosition = FormStartPosition.CenterScreen; form.Size = new System.Drawing.Size(800, 600); form.SuspendLayout(); Canvas3D canvas = new Canvas3D() { Width = form.Width, Height = form.Height }; canvas.Dock = DockStyle.Fill; var presenter = canvas.CreateSwapChainPresenter(); form.Controls.Add(canvas); form.ResumeLayout(); Engine.RenderFrame += () => { presenter.Begin(new Color4(Color.Aqua.ToArgb())); var device = GraphicDeviceFactory.Device; var untranformed = Service.Require <RenderQuadEffect>(); var sprite = Service.Require <Sprite>(); sprite.Begin(); var width = device.GetRenderTarget(0).Width / 2; var height = device.GetRenderTarget(0).Height / 2; device.Ps.SamplerStacks[0].Push(SamplerState.Point); device.Blend = SceneTechnique.NoBlend; var textures = technique.Textures; for (int i = 0; i < 2; i++) { for (int j = 0; j < 2; j++) { device.Ps.SetResource(0, textures[i * 2 + j]); sprite.SetTrasform(untranformed, new Igneel.Rectangle(width * j, height * i, width, height), Matrix.Identity); sprite.DrawQuad(untranformed); } } sprite.End(); device.Ps.SamplerStacks[0].Pop(); presenter.End(); }; form.Show(); } }
public void Canvas3D_Test_10_PhongShading_Oversampling_3() { I3DShader Shader = this.GetPhongShader(SKColors.Red); Canvas3D Canvas = new Canvas3D(1200, 800, 3, SKColors.White); Canvas.Perspective(200, 2000); this.DrawThreePlanes(Canvas, Shader); this.Save(Canvas, "10.png"); }
public void Canvas3D_Test_07_Text() { Canvas3D Canvas = new Canvas3D(1200, 800, 1, SKColors.White); Canvas.Perspective(200, 2000); this.DrawPlanes(Canvas); Canvas.Text("Hello World!", new Vector4(-400, 50, 1150, 1), "Tahoma", 150, SKColors.BlueViolet); this.Save(Canvas, "07.png"); }
public void Canvas3D_Test_07_Text() { Canvas3D Canvas = new Canvas3D(640, 480, 3, SKColors.White); Canvas.ProjectZ(500); this.DrawPlanes(Canvas); //Canvas.Text("d", new Vector4(-100, -100, 150, 1), "Tahoma", 100, SKColors.BlueViolet); Canvas.Text("Hello World!", new Vector4(-200, -100, 150, 1), "Tahoma", 100, SKColors.BlueViolet); this.Save(Canvas, "07.png"); }
private void Save(Canvas3D Canvas, string FileName) { if (!Directory.Exists("Canvas3D")) { Directory.CreateDirectory("Canvas3D"); } using (SKImage Image = Canvas.GetBitmap()) { using (SKData Data = Image.Encode(SKEncodedImageFormat.Png, 100)) { File.WriteAllBytes(Path.Combine("Canvas3D", FileName), Data.ToArray()); } } }
public void Canvas3D_Test_01_Plot() { Canvas3D Canvas = new Canvas3D(640, 480, 1, SKColors.White); int t; for (t = 0; t < 1000000; t++) { double x = t * Math.Sin(t / 10000.0) / 5000.0; double y = t * Math.Cos(t / 20000.0) / 5000.0; double z = t / 10000.0; Vector4 P = new Vector4((float)x, (float)y, (float)z, 1); Canvas.Plot(P, SKColors.Red); } this.Save(Canvas, "01.png"); }
public static void Init(MainWindow window, Canvas3D mainCanvas) { Service.Set <GraphicDeviceFactory>(new IgneelD3D10.GraphicManager10()); // Service.Set<PhysicManager>(new Igneel.PhysX.PXPhysicManager()); Service.Set <Igneel.Input.InputManager>(new IgneelDirectInput.DInputManager()); ShaderRepository.SetupD3D10_SM40(_shaderRepositoryDir); var gfactory = Service.Require <GraphicDeviceFactory>(); var pFactory = Service.Get <PhysicManager>(); var iFactory = Service.Get <Igneel.Input.InputManager>(); var interopHelper = new WindowInteropHelper(window); var size = mainCanvas.RenderSize; EngineState.Shadow.ShadowMapping.Size = 3; mainCanvas.Init(); Engine.Initialize(new InputContext(interopHelper.Handle), new GraphicDeviceDesc { Adapter = 0, DriverType = GraphicDeviceType.Hardware, Context = new WindowContext(mainCanvas.Handle) { BackBufferWidth = (int)size.Width, BackBufferHeight = (int)size.Height, BackBufferFormat = Format.R8G8B8A8_UNORM_SRGB, DepthStencilFormat = Format.D24_UNORM_S8_UINT, FullScreen = false, Sampling = new Multisampling(1, 0), Presentation = PresentionInterval.Default } }); Engine.Presenter = mainCanvas.CreateDafultPresenter(); EngineState.Lighting.HemisphericalAmbient = true; EngineState.Lighting.Reflection.Enable = true; EngineState.Lighting.TransparencyEnable = true; EngineState.Shading.BumpMappingEnable = true; InitializeRendering(); InitializeServices(); }
private void DrawWireframeCube(Canvas3D Canvas) { Vector4 P0 = new Vector4(-200, -200, 100, 1); Vector4 P1 = new Vector4(-200, -200, 300, 1); Vector4 P2 = new Vector4(200, -200, 300, 1); Vector4 P3 = new Vector4(200, -200, 100, 1); Vector4 P4 = new Vector4(-200, 200, 100, 1); Vector4 P5 = new Vector4(-200, 200, 300, 1); Vector4 P6 = new Vector4(200, 200, 300, 1); Vector4 P7 = new Vector4(200, 200, 100, 1); Canvas.PolyLine(new Vector4[] { P0, P1, P2, P3, P0 }, SKColors.Red); Canvas.PolyLine(new Vector4[] { P4, P5, P6, P7, P4 }, SKColors.Red); Canvas.Line(P0, P4, SKColors.Red); Canvas.Line(P1, P5, SKColors.Red); Canvas.Line(P2, P6, SKColors.Red); Canvas.Line(P3, P7, SKColors.Red); }
private void DrawCube(Canvas3D Canvas) { Vector4 P0 = new Vector4(-200, -200, 100, 1); Vector4 P1 = new Vector4(-200, -200, 300, 1); Vector4 P2 = new Vector4(200, -200, 300, 1); Vector4 P3 = new Vector4(200, -200, 100, 1); Vector4 P4 = new Vector4(-200, 200, 100, 1); Vector4 P5 = new Vector4(-200, 200, 300, 1); Vector4 P6 = new Vector4(200, 200, 300, 1); Vector4 P7 = new Vector4(200, 200, 100, 1); Canvas.Polygon(new Vector4[] { P0, P1, P2, P3 }, new SKColor(255, 0, 0, 128)); Canvas.Polygon(new Vector4[] { P4, P5, P6, P7 }, new SKColor(255, 0, 0, 128)); Canvas.Polygon(new Vector4[] { P1, P2, P6, P5 }, new SKColor(0, 255, 0, 128)); Canvas.Polygon(new Vector4[] { P0, P1, P5, P4 }, new SKColor(0, 0, 255, 128)); Canvas.Polygon(new Vector4[] { P2, P3, P7, P6 }, new SKColor(0, 0, 255, 128)); Canvas.Polygon(new Vector4[] { P0, P3, P7, P4 }, new SKColor(0, 255, 0, 128)); }
public void Canvas3D_Test_14_Ellipsoid() { Canvas3D Canvas = new Canvas3D(1200, 800, 1, SKColors.White); Canvas.Perspective(200, 2000); //Canvas.LookAt(-200, 500, 0, 0, 0, 1500, 0, 1, 0); Canvas.RotateX(30, new Vector3(0, 0, 1500)); Canvas.RotateY(45, new Vector3(0, 0, 1500)); Canvas.RotateZ(60, new Vector3(0, 0, 1500)); I3DShader Shader = this.GetPhongShader(SKColors.Orange); Canvas.Ellipsoid(0, 0, 1500, 400, 400, 400, 1000, Shader); Shader = this.GetPhongShader(new SKColor(0, 0, 255, 64)); this.DrawThreePlanes(Canvas, Shader, 0, 0, 1500); this.Save(Canvas, "14.png"); }
private void DrawCurve(Canvas3D Canvas) { int t; for (t = 0; t < 10000; t++) { double x = t * Math.Sin(t / 100.0) / 50.0; double y = t * Math.Cos(t / 200.0) / 50.0; double z = t / 100.0; Vector4 P = new Vector4((float)x, (float)y, (float)z, 1); if (t == 0) { Canvas.MoveTo(P); } else { Canvas.LineTo(P, SKColors.Red); } } }
public void Reset() { GameObject gameObject = new GameObject("Camera_UI3D"); MonoSingleton <SceneMgr> .GetInstance().AddToRoot(gameObject, SceneObjType.Temp); this.m_camera = gameObject.AddComponent <Camera>(); this.m_camera.CopyFrom(Moba_Camera.currentMobaCamera); this.m_camera.orthographic = true; this.m_camera.orthographicSize = 8f; this.m_camera.cullingMask = LayerMask.GetMask(new string[] { "3DUI" }); this.m_camera.depth = this.m_camera.depth + 1f; this.m_camera.clearFlags = CameraClearFlags.Nothing; gameObject.tag = "Untagged"; this.m_canvas = gameObject.AddComponent <Canvas3D>(); gameObject.transform.position = new Vector3(1000f, -1000f, 1000f); gameObject.transform.localScale = Vector3.one; gameObject.transform.localRotation = Quaternion.identity; }
public void Canvas3D_Test_13_Rotate_Z() { I3DShader Shader = this.GetPhongShader(SKColors.Red); Canvas3D Canvas = new Canvas3D(1200, 800, 1, SKColors.White); Canvas.Perspective(200, 2000); this.DrawThreePlanes(Canvas, Shader); Shader = this.GetPhongShader(SKColors.Blue); Matrix4x4 Bak = Canvas.Translate(-250, 250, 0); Canvas.Scale(0.25f, new Vector3(0, 0, 1500)); Canvas.RotateZ(30, new Vector3(0, 0, 1500)); Canvas.Box(-500, -500, 1000, 500, 500, 2000, Shader); Canvas.ModelTransformation = Bak; Canvas.Translate(250, 250, 0); Canvas.Scale(0.25f, new Vector3(0, 0, 1500)); Canvas.RotateZ(120, new Vector3(0, 0, 1500)); Canvas.Box(-500, -500, 1000, 500, 500, 2000, Shader); Canvas.ModelTransformation = Bak; Canvas.Translate(-250, -250, 0); Canvas.Scale(0.25f, new Vector3(0, 0, 1500)); Canvas.RotateZ(210, new Vector3(0, 0, 1500)); Canvas.Box(-500, -500, 1000, 500, 500, 2000, Shader); Canvas.ModelTransformation = Bak; Canvas.Translate(250, -250, 0); Canvas.Scale(0.25f, new Vector3(0, 0, 1500)); Canvas.RotateZ(500, new Vector3(0, 0, 1500)); Canvas.Box(-500, -500, 1000, 500, 500, 2000, Shader); this.Save(Canvas, "13.png"); }
private void DrawThreePlanes(Canvas3D Canvas) { PhongShader Shader = new PhongShader( new PhongMaterial(1, 2, 0, 10), new PhongIntensity(64, 64, 64, 255), new PhongLightSource( new PhongIntensity(255, 0, 0, 255), new PhongIntensity(255, 255, 255, 255), new Vector3(200, 200, 100))); //new Vector3(400, 400, 50))); Canvas.Polygon(new Vector4[] { new Vector4(-200, 200, 300, 1), new Vector4(200, 200, 300, 1), new Vector4(200, -200, 300, 1), new Vector4(-200, -200, 300, 1) }, Shader); Canvas.Polygon(new Vector4[] { new Vector4(-200, 200, 100, 1), new Vector4(-200, 200, 300, 1), new Vector4(-200, -200, 300, 1), new Vector4(-200, -200, 100, 1) }, Shader); Canvas.Polygon(new Vector4[] { new Vector4(-200, -200, 300, 1), new Vector4(200, -200, 300, 1), new Vector4(200, -200, 100, 1), new Vector4(-200, -200, 100, 1) }, Shader); }
/* * Reads a DAZ Studio DSF file with a pose in it and produces * a Vixen Pose object for this avatar's skeleton. * @param posename name of pose */ public Pose ReadPose(System.String posename) { System.String filename = "pose/" + posename + "pose.dsf"; Hashtable poseinfo = new Hashtable(); try { /* * Parse the DAZ Studio pose file and extract the rotations * for each bone into a hash table */ using (StreamReader posefile = new StreamReader(filename)) { System.String line; Regex pattern = new Regex("([a-zA-Z0-9]+)" + Regex.Escape(":?") + "rotation/([xyz])"); while ((line = posefile.ReadLine()) != null) { Match match = pattern.Match(line); System.String name; System.String axis; if (!match.Success) { continue; } name = match.Groups[1].ToString(); axis = match.Groups[2].ToString(); line = posefile.ReadLine(); int p = line.IndexOf("[ 0, "); if (p > 0) { System.String s = line.Substring(p + 5); float angle; Quat rot; Quat q = null; s = s.Substring(0, s.IndexOf("]")); angle = float.Parse(s); if (angle == 0) { continue; } angle *= (float)Math.PI / 180.0f; if (axis == "x") { q = new Quat(Model.XAXIS, angle); } else if (axis == "y") { q = new Quat(Model.YAXIS, angle); } else if (axis == "z") { q = new Quat(Model.ZAXIS, angle); } if (q == null) { continue; } if (poseinfo.Contains(name)) { rot = poseinfo[name] as Quat; rot.Mul(rot, q); } else { poseinfo.Add(name, q); } } } } /* * Convert hash table with rotations into a Pose. * Map DAZ bone names into Vixen bone names. */ Pose pose = new Pose(BodyPoser); foreach (DictionaryEntry entry in poseinfo) { System.String key = entry.Key.ToString(); System.String bonename = key; Quat q = entry.Value as Quat; int boneindex; if (key == "abdomen") { bonename = "Torso"; } else if (key == "rHand") { bonename = "RightWrist"; } else if (key == "lHand") { bonename = "LeftWrist"; } else if (key == "rShldr") { bonename = "RightShoulder"; } else if (key == "lShldr") { bonename = "LeftShoulder"; } else if (key == "rForeArm") { bonename = "RightElbow"; } else if (key == "lForeArm") { bonename = "LeftElbow"; } else if (key == "rShin") { bonename = "RightKnee"; } else if (key == "lShin") { bonename = "LeftShin"; } else if (key == "rThigh") { bonename = "RightHip"; } else if (key == "lThigh") { bonename = "LeftHip"; } else if (key == "lFoot") { bonename = "LeftAnkle"; } else if (key == "rFoot") { bonename = "RightAnkle"; } boneindex = BodyPoser.GetBoneIndex(bonename); if (boneindex >= 0) { pose.SetLocalRotation(boneindex, q); SharedWorld.Trace(bonename + " " + q.x + " " + q.y + " " + q.z + " " + q.w + "\n"); } } return(pose); } catch (Exception ex) { Canvas3D.LogError(ex.Message + " Cannot read pose file " + filename); return(null); } }
public void EdgeFiltering() { SceneTests.InitializeScene(); //var content = ImportContent(); var content = ContentImporter.Import(SceneManager.Scene, @"C:\Users\ansel\Documents\3dsmax\export\shadowScene.DAE"); EngineState.Shadow.ShadowMapping.PcfBlurSize = 5; content.OnSceneAttach(SceneManager.Scene); //ContentImporter.Import(SceneManager.Scene, @"C:\Users\ansel\Documents\3dsmax\export\nissan2.DAE"); //ContentImporter.Import(SceneManager.Scene, @"C:\Users\ansel\Documents\3dsmax\export\talia.DAE"); if (SceneManager.Scene.Physics != null) { SceneManager.Scene.Physics.Enable = true; } //if (SceneManager.Scene.Lights.Count == 0) //{ // var light = new Light() // { // Diffuse = new Vector3(1, 1, 1), // Specular = new Vector3(1, 1, 1), // Type = LightType.Directional, // Enable = true // }; // SceneManager.Scene.Create("DirectionalLight0", new LightInstance(light), // localRotationEuler: new Euler(0, Numerics.ToRadians(70), 0)); //} FrameLight.CreateShadowMapForAllLights(SceneManager.Scene); _technique = SceneManager.Scene.Lights.Where(x => x.Node.Technique is ShadowMapTechnique).Select(x => (ShadowMapTechnique)x.Node.Technique).FirstOrDefault(); _targetCamera = _technique.Camera; _technique.Bias = 0.9e-2f; SceneManager.Scene.AmbientLight.GroundColor = new Vector3(0, 0, 0); SceneManager.Scene.AmbientLight.SkyColor = new Vector3(0.2f, 0.2f, 0.2f); EngineState.Shadow.ShadowMapping.PcfBlurSize = 3; var edgeTechnique = new EdgeShadowFilteringTechnique(); RenderManager.PushTechnique(edgeTechnique); bool debug = true; if (debug) { Form form = new Form(); form.BackColor = Color.Blue; form.StartPosition = FormStartPosition.CenterScreen; form.Size = new System.Drawing.Size(edgeTechnique.ShadowFactorTex.Width, edgeTechnique.ShadowFactorTex.Height); form.SuspendLayout(); Canvas3D canvas = new Canvas3D() { Width = form.Width, Height = form.Height }; canvas.Dock = DockStyle.Fill; var presenter = canvas.CreateSwapChainPresenter(); form.Controls.Add(canvas); form.ResumeLayout(); Engine.RenderFrame += () => { presenter.Begin(new Color4(Color.Aqua.ToArgb())); var device = GraphicDeviceFactory.Device; device.Ps.SamplerStacks[0].Push(SamplerState.Linear); device.Blend = SceneTechnique.NoBlend; var texture = edgeTechnique.EdgeSrcTexture; RenderTexture(device, texture, width: texture.Width, height: texture.Height); device.Ps.SamplerStacks[0].Pop(); presenter.End(); }; form.Show(); } }