public void ApplyEffects(RenderImage image) { foreach (PostProcessingEffect e in _effects) { e.ProcessImage(image); } }
private void SetupGorgon() { Gorgon.Initialize(true, false); Gorgon.SetMode(this); //Gorgon.AllowBackgroundRendering = true; //Gorgon.Screen.BackgroundColor = Color.FromArgb(50, 50, 50); //Gorgon.CurrentClippingViewport = new Viewport(0, 20, Gorgon.Screen.Width, Gorgon.Screen.Height - 20); //PreciseTimer preciseTimer = new PreciseTimer(); //Gorgon.MinimumFrameTime = PreciseTimer.FpsToMilliseconds(66); Gorgon.Idle += new FrameEventHandler(Gorgon_Idle); Gorgon.FrameStatsVisible = true; Gorgon.DeviceReset += MainWindowResizeEnd; bouncesprite = new Sprite("flyingball", GorgonLibrary.Graphics.Image.FromFile(mediadir + @"flyingball.png")); //bouncesprite.SetScale(3, 3); baseTarget = new RenderImage("baseTarget", 32, 32, ImageBufferFormats.BufferRGB888A8); baseTargetSprite = new Sprite("baseTargetSprite", baseTarget); screenTarget = new RenderImage("screenTarget", Gorgon.CurrentClippingViewport.Width, Gorgon.CurrentClippingViewport.Height, ImageBufferFormats.BufferRGB888A8); bounceysprites = new BounceySprite[10]; for (int i = 0; i < 10; i++) { bounceysprites[i] = new BounceySprite(bouncesprite, new Vector2D(random.Next(0, Gorgon.CurrentClippingViewport.Width), random.Next(0, Gorgon.CurrentClippingViewport.Height)), new Vector2D((float)random.Next(-100000,100000) / 100000, (float)random.Next(-100000,100000) / 100000) , this); } }
public void GaussianBlurRadius11_ShouldBlur() { preblur = new RenderImage("testGaussianBlur", 1280, 768); _gaussianBlur = new GaussianBlur(_resourceManager); _gaussianBlur.SetRadius(11); _gaussianBlur.SetAmount(2); _gaussianBlur.SetSize(new Vector2f(preblur.Width, preblur.Height)); while (CluwneLib.IsRunning) { var lastFrameTime = clock.ElapsedTime.AsSeconds(); clock.Restart(); _frameEvent = new FrameEventArgs(lastFrameTime); CluwneLib.ClearCurrentRendertarget(Color.Black); CluwneLib.Screen.DispatchEvents(); preblur.BeginDrawing(); // set temp as CRT (Current Render Target) //preblur.Clear(); //Clear sprite = _resourceManager.GetSprite("flashlight_mask"); sprite.Position = new Vector2f(); sprite.Draw(); preblur.EndDrawing(); // set previous rendertarget as CRT (screen in this case) //_gaussianBlur.PerformGaussianBlur(preblur); // blur rendertarget preblur.Blit(0,0, preblur.Width, preblur.Height,Color.White, BlitterSizeMode.Crop ); // draw blurred nosprite logo CluwneLib.Screen.Display(); } }
public ScrollableContainer(string uniqueName, Vector2i size, IResourceManager resourceManager) { _resourceManager = resourceManager; Size = size; //if (RenderTargetCache.Targets.Contains(uniqueName)) // //Now this is an ugly hack to work around duplicate RenderImages. Have to fix this later. // uniqueName = uniqueName + Guid.NewGuid(); clippingRI = new RenderImage(uniqueName,(uint)Size.X,(uint) Size.Y); //clippingRI.SourceBlend = AlphaBlendOperation.SourceAlpha; //clippingRI.DestinationBlend = AlphaBlendOperation.InverseSourceAlpha; //clippingRI.SourceBlendAlpha = AlphaBlendOperation.SourceAlpha; //clippingRI.DestinationBlendAlpha = AlphaBlendOperation.InverseSourceAlpha; clippingRI.BlendSettings.ColorSrcFactor = BlendMode.Factor.SrcAlpha; clippingRI.BlendSettings.ColorDstFactor = BlendMode.Factor.OneMinusSrcAlpha; clippingRI.BlendSettings.AlphaSrcFactor = BlendMode.Factor.SrcAlpha; clippingRI.BlendSettings.AlphaDstFactor = BlendMode.Factor.OneMinusSrcAlpha; scrollbarH = new Scrollbar(true, _resourceManager); scrollbarV = new Scrollbar(false, _resourceManager); scrollbarV.size = Size.Y; scrollbarH.Update(0); scrollbarV.Update(0); Update(0); }
public ScrollableContainer(string uniqueName, Size size, IResourceManager resourceManager) { _resourceManager = resourceManager; Size = size; if (RenderTargetCache.Targets.Contains(uniqueName)) //Now this is an ugly hack to work around duplicate RenderImages. Have to fix this later. uniqueName = uniqueName + Guid.NewGuid(); clippingRI = new RenderImage(uniqueName, Size.Width, Size.Height, ImageBufferFormats.BufferRGB888A8); scrollbarH = new Scrollbar(true, _resourceManager); scrollbarV = new Scrollbar(false, _resourceManager); scrollbarV.size = Size.Height; scrollbarH.Update(0); scrollbarV.Update(0); clippingRI.SourceBlend = AlphaBlendOperation.SourceAlpha; clippingRI.DestinationBlend = AlphaBlendOperation.InverseSourceAlpha; clippingRI.SourceBlendAlpha = AlphaBlendOperation.SourceAlpha; clippingRI.DestinationBlendAlpha = AlphaBlendOperation.InverseSourceAlpha; Update(0); }
/// <summary> /// Creates a new CluwneSprite with a key and a specific renderTarget /// </summary> /// <param name="key"> key </param> /// <param name="_renderImage"> RenderTarget to use </param> public CluwneSprite(string key, RenderImage target) { Key = key; renderTarget = target; Position = new Vector2(X,Y); Size = new Vector2(Width, Height); }
public LightArea(ShadowmapSize size) { int baseSize = 2 << (int) size; LightAreaSize = new Vector2D(baseSize, baseSize); renderTarget = new RenderImage("lightTest" + baseSize + IoCManager.Resolve<IRand>().Next(100000, 999999), baseSize, baseSize, ImageBufferFormats.BufferRGB888A8); Mask = IoCManager.Resolve<IResourceManager>().GetSprite("whitemask"); }
public AcidPostProcessingEffect(float duration) : base(duration) { _shader = IoCManager.Resolve<IResourceManager>().GetShader("acid2").Techniques["PerlinNoise"]; copyImage = new RenderImage("perlinnoiseimage" + RandomString.Generate(10), Gorgon.CurrentClippingViewport.Width, Gorgon.CurrentClippingViewport.Height, ImageBufferFormats.BufferRGB888A8); }
public LightArea(ShadowmapSize shadowmapSize) { int baseSize = 2 << (int)shadowmapSize; LightAreaSize = new Vector2f(baseSize, baseSize); RenderTarget = new RenderImage("LightArea"+ shadowmapSize,(uint)baseSize, (uint)baseSize); Mask = IoCManager.Resolve<IResourceManager>().GetSprite("whitemask"); }
/// <summary> /// 调用工具类生成图片 /// </summary> /// <returns></returns> private async Task RefreshImage() { RenderImage randerImage = new RenderImage(); foreach (var item in gridNameDict) { await randerImage.RenderImageToFileAsync(item.Value, item.Key.Key + this.title??"" + ".png"); } }
public LightArea(ShadowmapSize size) { int baseSize = 2 << (int)size; LightAreaSize = new Vector2D(baseSize, baseSize); renderTarget = new RenderImage("lightTest" + baseSize + IoCManager.Resolve <IRand>().Next(100000, 999999), baseSize, baseSize, ImageBufferFormats.BufferRGB888A8); Mask = IoCManager.Resolve <IResourceManager>().GetSprite("whitemask"); }
public TestShader_Test() { base.InitializeCluwneLib(); clock = new Clock(); resources = base.GetResourceManager; testRenderImage = new RenderImage("TestShaders",1000,1000); testsprite = resources.GetSprite("ChatBubble"); }
public void Dispose() { contentPane.Dispose(); if (_renderImage != null) { _renderImage.Dispose(); _renderImage = null; } }
public void RenderSkipsDeathMagenta() { IRenderImage src = new BufferImage(16, 16, CreatePixels(16, 16, MAGENTA)); IRenderImage dest = RenderImage.Create(16, 16); dest.Clear(BLACK); Render.render(dest, 0, 0, src, false); Assert.AreEqual(dest.GetArray(), CreatePixels(16, 16, BLACK)); }
public LightArea(int size) { int baseSize = 2 << (int)size; LightAreaSize = new Vector2(baseSize, baseSize); renderTarget = new RenderImage((uint)baseSize, (uint)baseSize); Mask = IoCManager.Resolve <IResourceManager>().GetSprite("whitemask"); }
private void SetUpIntermediateTarget(uint width, uint height) { if (_intermediateTarget == null || width != lastWidth || height != lastHeight) { _intermediateTarget = new RenderImage("intermediateTarget", width, height); _intermediateTarget.Key = targetName; lastWidth = width; lastHeight = height; } }
public CluwneSprite_Test() { resources = base.GetResourceManager; base.InitializeCluwneLib(); SS14UnitTest.InjectedMethod += DefaultDrawMethod_ShouldDrawToScreen; test = new RenderImage("testtst", 1280, 720); base.StartCluwneLibLoop(); }
public void LoadModelItem(string modelUrl) { RenderImage _renderImage = RenderImage; _renderImage.LoadModel(modelUrl); _renderImage.SetCamLockModel(); _renderImage.SetShader("Unlit/Texture"); _renderImage.StartRotate(-1); _model.visible = true; }
public LightArea(ShadowmapSize shadowmapSize) { int baseSize = 2 << (int)shadowmapSize; LightAreaSize = new Vector2f(baseSize, baseSize); RenderTarget = new RenderImage("LightArea" + shadowmapSize, (uint)baseSize, (uint)baseSize); Mask = IoCManager.Resolve <IResourceCache>().GetSprite("whitemask"); }
public override void Dispose() { if (disposing) return; disposing = true; components.ForEach(c => c.Dispose()); components.Clear(); clippingRI.Dispose(); clippingRI = null; base.Dispose(); GC.SuppressFinalize(this); }
/// <summary> /// Makes render object representing a check mark. /// </summary> /// <param name="chk">The check status (must not be None).</param> /// <param name="name">The name for the created render object (may be null).</param> /// <returns>The render object representing the check mark.</returns> private RenderObject MakeCheckboxRO(CheckEnum chk, string name) { Debug.Assert(chk != CheckEnum.None); RenderImage rimg = MakeGlyphRO(s_CheckToGlyph[chk]); if (!string.IsNullOrEmpty(name)) { rimg.Name = name; } return(rimg); }
public bool Initialize(GameMain gameMain, out string reason) { _gameMain = gameMain; _energyX = (_gameMain.ScreenSize.X / 2) - 190; _shipStatsBackground = new BBStretchableImage(); _miniMapBackground = new BBStretchableImage(); if (!_shipStatsBackground.Initialize((_gameMain.ScreenSize.X / 2) - 200, -20, 400, 90, StretchableImageType.ThinBorderBG, _gameMain.Random, out reason)) { return false; } if (!_miniMapBackground.Initialize(_gameMain.ScreenSize.X - 250, _gameMain.ScreenSize.Y - 250, 300, 300, StretchableImageType.ThinBorderBG, _gameMain.Random, out reason)) { return false; } _bankAmount = new BBLabel(); _energyAmount = new BBLabel(); if (!_bankAmount.Initialize(_energyX, 40, string.Empty, Color.White, out reason)) { return false; } if (!_energyAmount.Initialize(_energyX + 380, 40, string.Empty, Color.White, out reason)) { return false; } _energyAmount.SetAlignment(true); _horizontalEnergyBar = SpriteManager.GetSprite("ScrollHorizontalBar", gameMain.Random); if (_horizontalEnergyBar == null) { reason = "ScrollHorizontalBar sprite not found"; return false; } /*_debuggingText = new BBTextBox(); if (!_debuggingText.Initialize(0, 0, 300, 300, true, false, "DebugText", gameMain.Random, out reason)) { return false; }*/ _miniMapTarget = new RenderImage("MiniMapRender", 230, 230, ImageBufferFormats.BufferRGB888A8); _miniMapTarget.BlendingMode = BlendingModes.Modulated; _dot = SpriteManager.GetSprite("BackgroundStar", _gameMain.Random); if (_dot == null) { reason = "Star sprite doesn't exist."; return false; } _delay = 0; return true; }
protected override void OnInit() { this.contentPane = UIPackage.CreateObject("RenderTexture", "TestWin").asCom; this.SetXY(200, 50); _renderImage = new RenderImage(contentPane.GetChild("holder").asGraph); //RenderImage是不透明的,可以设置最多两张图片作为背景图 _renderImage.SetBackground(contentPane.GetChild("frame").asCom.GetChild("n0"), contentPane.GetChild("n20")); contentPane.GetChild("btnLeft").onTouchBegin.Add(__clickLeft); contentPane.GetChild("btnRight").onTouchBegin.Add(__clickRight); }
public TestShader_Test() { base.InitializeCluwneLib(1280,720,false,60); resources = base.GetResourceManager; testRenderImage = new RenderImage("TestShaders",1280,720); testsprite = resources.GetSprite("flashlight_mask"); SS14UnitTest.InjectedMethod += LoadTestShader_ShouldDrawAllRed; base.StartCluwneLibLoop(); }
public void Setup() { base.InitializeCluwneLib(1280, 720, false, 60); resources = base.GetResourceCache; testRenderImage = new RenderImage("TestShaders", 1280, 720); testsprite = resources.GetSprite("flashlight_mask"); SS14UnitTest.InjectedMethod += LoadTestShader_ShouldDrawAllRed; base.StartCluwneLibLoop(); }
public override void Destroy() { if (Disposing) { return; } Disposing = true; _clippingRi.Dispose(); _clippingRi = null; base.Destroy(); GC.SuppressFinalize(this); }
private async void Image_MouseUp(object sender, MouseButtonEventArgs e) { if (!DrawSelectionBox) { return; } // Release the mouse capture and stop tracking it. DrawSelectionBox = false; OuterGrid.ReleaseMouseCapture(); // Hide the drag selection box. SelectionBox.Visibility = Visibility.Collapsed; var l = RenderImage.TranslatePoint(new Point(0, 0), OuterGrid); var mouseUpPos = e.GetPosition(OuterGrid); if (mouseUpPos.X < l.X || mouseUpPos.X > l.X + RenderImage.ActualWidth) { return; } if (!(DataContext is MandelbrotViewModel dc) || !dc.CanRender()) { return; } var topLeft = SelectionBox.TranslatePoint(new Point(0, 0), RenderImage); var downRight = topLeft; downRight.X += SelectionBox.Width; downRight.Y += SelectionBox.Height; var oldL = dc.LeftEdge; var oldR = dc.RightEdge; var oldD = dc.BottomEdge; var oldU = dc.UpperEdge; var newL = oldL + (oldR - oldL) * topLeft.X / dc.CurrentBitmap.PixelWidth * MandelbrotViewModel.DpiScale; var newR = oldL + (oldR - oldL) * downRight.X / dc.CurrentBitmap.PixelWidth * MandelbrotViewModel.DpiScale; var newU = oldU - (oldU - oldD) * topLeft.Y / dc.CurrentBitmap.PixelHeight * MandelbrotViewModel.DpiScale; var newD = oldU - (oldU - oldD) * downRight.Y / dc.CurrentBitmap.PixelHeight * MandelbrotViewModel.DpiScale; dc.LeftEdge = newL; dc.RightEdge = newR; dc.UpperEdge = newU; dc.BottomEdge = newD; await dc.ExecuteRender(); }
public override void ProcessImage(RenderImage image) { if (_duration < 3) _gaussianBlur.SetRadius(3); else if (_duration < 10) _gaussianBlur.SetRadius(5); else _gaussianBlur.SetRadius(7); _gaussianBlur.SetSize(new SizeF(image.Width, image.Height)); _gaussianBlur.SetAmount(Math.Min(_duration/2, 3f)); _gaussianBlur.PerformGaussianBlur(image); }
protected override void OnLoad(System.EventArgs e) { Player = new Player() { transform = new RectPosition(new Vector2(300, 540), new Vector2(50, 50)), image = new RenderImage(Renderer.LoadImage("./images/player.png"), false) }; FloorImage = new RenderImage(Renderer.LoadImage("./images/chao.png"), false); CactoImage = new RenderImage(Renderer.LoadImage("./images/cacto.png"), false); VSync = VSyncMode.On; StartGame(); }
public void SetBrightnessLevel(float level) { RenderImage renderi = GetComponent <RenderImage>(); if (renderi) { renderi.brightnessAmount = level; } else { brightness = level; } }
public override void Initialize() { RenderGroup group = new RenderGroup("PressStart"); parentManager.renderCore.renderGroups.Add(group); background = new RenderImage(parentManager.renderCore, parentManager.game.Content.Load<Texture2D>("Graphic/PressStartScreen/BG"), group, 0,false, Vector2.Zero); pressStart = new RenderImage(parentManager.renderCore, parentManager.game.Content.Load<Texture2D>("Graphic/PressStartScreen/Message"), group, 1, false, new Vector2(500, 500)); parentManager.renderCore.objects.Add(background); parentManager.renderCore.objects.Add(pressStart); parentManager.inputManager.registerHandler("PressStartHandler", new PressStartHandler(parentManager), true); }
public void RenderStipple() { IRenderImage dest = RenderImage.Create(16, 16); Render.renderColoredStippleTile(dest, 0, 0, GREEN, WHITE); Assert.AreEqual(WHITE, dest.GetPixel(0, 0)); Assert.AreEqual(GREEN, dest.GetPixel(1, 0)); Assert.AreEqual(WHITE, dest.GetPixel(2, 0)); Assert.AreEqual(GREEN, dest.GetPixel(3, 0)); Assert.AreEqual(GREEN, dest.GetPixel(0, 1)); Assert.AreEqual(WHITE, dest.GetPixel(1, 1)); }
public SpeechBubble(string mobname) { _resourceCache = IoCManager.Resolve <IResourceCache>(); _mobName = mobname; _buildTime = DateTime.Now; _textSprite = new Text(String.Empty, _resourceCache.GetResource <FontResource>("Fonts/CALIBRI.TTF").Font); _textSprite.FillColor = Color.Black; // TODO Word wrap! _textSprite.Position = new Vector2f(5, 3); _stringBuilder = new StringBuilder(); _bubbleRender = new RenderImage("bubble ", 1, 1); _bubbleSprite = new Sprite(_bubbleRender.Texture); }
public SpeechBubble(string mobname) { _resourceManager = IoCManager.Resolve<IResourceManager>(); _mobName = mobname; _buildTime = DateTime.Now; _textSprite = new Text(String.Empty, _resourceManager.GetFont("CALIBRI")); _textSprite.Color = Color.Black; // TODO Word wrap! _textSprite.Position = new Vector2f(5, 3); _stringBuilder = new StringBuilder(); _bubbleRender = new RenderImage("bubble ",1, 1); _bubbleSprite = new Sprite(_bubbleRender.Texture); }
public SpeechBubble(string mobname) { _resourceManager = IoCManager.Resolve <IResourceManager>(); _mobName = mobname; _buildTime = DateTime.Now; _textSprite = new Text(String.Empty, _resourceManager.GetFont("CALIBRI")); _textSprite.Color = SFML.Graphics.Color.Black; // TODO Word wrap! _textSprite.Position = new Vector2(5, 3); _stringBuilder = new StringBuilder(); _bubbleRender = new RenderImage(1, 1); _bubbleSprite = new Sprite(_bubbleRender); }
public override void Dispose() { if (disposing) { return; } disposing = true; components.ForEach(c => c.Dispose()); components.Clear(); clippingRI.Dispose(); clippingRI = null; base.Dispose(); GC.SuppressFinalize(this); }
private void CustomEditors_Load(object sender, EventArgs e) { //Create business-card sized page settings C1.C1Preview.PageLayout pl = new C1.C1Preview.PageLayout(); pl.PageSettings = new C1.C1Preview.C1PageSettings(); pl.PageSettings.PaperKind = System.Drawing.Printing.PaperKind.Custom; pl.PageSettings.Width = new Unit(3.5, UnitTypeEnum.Inch); pl.PageSettings.Height = new Unit(2, UnitTypeEnum.Inch); pl.PageSettings.TopMargin = new Unit(3, UnitTypeEnum.Mm); pl.PageSettings.RightMargin = new Unit(3, UnitTypeEnum.Mm); pl.PageSettings.LeftMargin = new Unit(3, UnitTypeEnum.Mm); pl.PageSettings.BottomMargin = new Unit(3, UnitTypeEnum.Mm); c1PrintDocument1.PageLayouts.Default = pl; //Create watermark RenderImage ri = new RenderImage(); ri.Image = Properties.Resources.Referesh; c1PrintDocument1.PageLayout.Watermark = ri; c1PrintDocument1.PageLayout.Watermark.X = new Unit(1.75, UnitTypeEnum.Inch); //Create data table with border rtMain = new RenderTable(3, 2); rtSub = new RenderTable(3, 1); rtBorder = new RenderTable(1, 1); rtBorder.Width = 3.26; rtBorder.Height = 1.76; rtBorder.Style.Borders.All = new C1.C1Preview.LineDef("2pt", Color.Gray); rtBorder.Style.Padding.Left = new Unit(1, UnitTypeEnum.Mm); rtMain.Style.Padding.Top = new Unit(1, UnitTypeEnum.Mm); rtMain.Cells[1, 1].Area.Children.Add(rtSub); rtBorder.Cells[0, 0].Area.Children.Add(rtMain); rtMain.Cols[0].Width = 1; rtMain.Cells[0, 0].Text = "ComponentOne Dev-Tools License"; rtMain.Cells[0, 0].Style.TextAlignHorz = AlignHorzEnum.Center; rtMain.Rows[0].Style.FontBold = true; rtMain.Cells[0, 0].SpanCols = 2; rtSub.Cells[0, 0].Text = "Name: "; rtSub.Cells[1, 0].Text = "Age: "; rtSub.Cells[2, 0].Text = "Gender: "; rtMain.Cells[2, 0].Text = "Expertise: "; rtMain.Cells[2, 0].SpanCols = 2; c1PrintDocument1.Body.Children.Add(rtBorder); c1PrintDocument1.Style.Borders.All = new C1.C1Preview.LineDef("2pt", Color.Red); loadImage(); c1PreviewPane1.Document = c1PrintDocument1; textBoxHost1.TextBox.BorderStyle = BorderStyle.None; }
protected override void OnInit() { this.contentPane = UIPackage.CreateObject("Demo", "TestWin").asCom; this.Center(); _renderImage = new RenderImage(contentPane.GetChild("holder").asGraph); //RenderImage是不透明的,可以设置最多两张图片作为背景图 _renderImage.SetBackground(contentPane.GetChild("frame").asCom.GetChild("n0"), contentPane.GetChild("n20")); contentPane.GetChild("btnLeft").onMouseDown.Add(__clickLeft); contentPane.GetChild("btnRight").onMouseDown.Add(__clickRight); //弹出窗口的动效已中心为轴心 this.SetPivot(this.width / 2, this.height / 2); }
public void ResolveShadows(Image shadowCastersTexture, RenderImage result, Vector2D lightPosition, bool attenuateShadows, Image mask, Vector4D maskProps, Vector4D diffuseColor) { resolveShadowsEffect.Parameters["AttenuateShadows"].SetValue(attenuateShadows ? 0 : 1); resolveShadowsEffect.Parameters["MaskProps"].SetValue(maskProps); resolveShadowsEffect.Parameters["DiffuseColor"].SetValue(diffuseColor); //Gorgon.CurrentRenderTarget.BlendingMode = BlendingModes.None; ExecuteTechnique(shadowCastersTexture, distancesRT, "ComputeDistances"); ExecuteTechnique(distancesRT.Image, distortRT, "Distort"); ApplyHorizontalReduction(distortRT, shadowMap); ExecuteTechnique(mask, result, "DrawShadows", shadowMap); //ExecuteTechnique(shadowsRT.Image, processedShadowsRT, "BlurHorizontally"); //ExecuteTechnique(processedShadowsRT.Image, result, "BlurVerticallyAndAttenuate"); Gorgon.CurrentShader = null; }
public void ResolveShadows(Image shadowCastersTexture, RenderImage result, Vector2 lightPosition, bool attenuateShadows, Image mask, Vector4 maskProps, Vector4 diffuseColor) { //resolveShadowsEffect.Parameters["AttenuateShadows"].SetValue(attenuateShadows ? 0 : 1); //resolveShadowsEffect.Parameters["MaskProps"].SetValue(maskProps); //resolveShadowsEffect.Parameters["DiffuseColor"].SetValue(diffuseColor); // CluwneLib.CurrentRenderTarget.BlendingMode = BlendingModes.None; ExecuteTechnique(shadowCastersTexture, distancesRT, "ComputeDistances"); // ExecuteTechnique(distancesRT.Image, distortRT, "Distort"); ApplyHorizontalReduction(distortRT, shadowMap); ExecuteTechnique(mask, result, "DrawShadows", shadowMap); //ExecuteTechnique(shadowsRT.Image, processedShadowsRT, "BlurHorizontally"); //ExecuteTechnique(processedShadowsRT.Image, result, "BlurVerticallyAndAttenuate"); CluwneLib.CurrentShader = null; }
public void DrawImage() { int[] pixels = new int[16 * 16]; for (int i = 0; i < pixels.Length; i++) { pixels[i] = 1; } IRenderImage img = new BufferImage(16, 16, pixels); IRenderImage destImage = RenderImage.Create(16, 16); Render.render(destImage, 0, 0, img, true); int[] resultPixels = destImage.GetArray(); Assert.AreEqual(pixels, resultPixels); }
public override void ProcessImage(RenderImage image) { var OstafLikesTheCock = new RenderImage("OstafLikesTheCock", image.Width, image.Height, ImageBufferFormats.BufferRGB888A8); Gorgon.CurrentRenderTarget = OstafLikesTheCock; image.Image.Blit(0, 0, image.Width, image.Height, Color.White, BlitterSizeMode.Crop); Gorgon.CurrentRenderTarget = image; Gorgon.CurrentShader = _shader.Techniques["DeathShader"]; _shader.Parameters["SceneTexture"].SetValue(OstafLikesTheCock); _shader.Parameters["duration"].SetValue(Math.Abs(_duration)); OstafLikesTheCock.Image.Blit(0, 0, image.Width, image.Height, Color.White, BlitterSizeMode.Crop); Gorgon.CurrentRenderTarget = null; Gorgon.CurrentShader = null; OstafLikesTheCock.Dispose(); }
private void SetupGorgon() { Gorgon.Initialize(true, false); Gorgon.SetMode(this); //Gorgon.AllowBackgroundRendering = true; //Gorgon.Screen.BackgroundColor = Color.FromArgb(50, 50, 50); //Gorgon.CurrentClippingViewport = new Viewport(0, 20, Gorgon.Screen.Width, Gorgon.Screen.Height - 20); //PreciseTimer preciseTimer = new PreciseTimer(); //Gorgon.MinimumFrameTime = PreciseTimer.FpsToMilliseconds(66); Gorgon.Idle += new FrameEventHandler(Gorgon_Idle); Gorgon.FrameStatsVisible = true; bouncesprite = new Sprite("bouncey", GorgonLibrary.Graphics.Image.FromFile(mediadir + @"\textures\0_Items.png"), new Vector2D(0, 0), new Vector2D(22, 20)); bouncesprite.SetScale(3, 3); decalsprite = new Sprite("decal", GorgonLibrary.Graphics.Image.FromFile(mediadir + @"\textures\0_Decals.png"), new Vector2D(56, 0), new Vector2D(103, 29)); decalsprite.SetScale(1, 1); decalShader = FXShader.FromFile(mediadir + @"\shaders\decalshader.fx", ShaderCompileOptions.Debug); decalShader.Parameters["tex1"].SetValue(decalsprite.Image); baseTarget = new RenderImage("baseTarget", 32, 32, ImageBufferFormats.BufferRGB888A8); baseTargetSprite = new Sprite("baseTargetSprite", baseTarget); bounceysprites = new BounceySprite[10]; for (int i = 0; i < 10; i++) { bounceysprites[i] = new BounceySprite(bouncesprite, new Vector2D(random.Next(0, Gorgon.Screen.Width), random.Next(0, Gorgon.Screen.Height)), new Vector2D((float)random.Next(-100000, 100000) / 100000, (float)random.Next(-100000, 100000) / 100000), decalsprite, new Vector2D(random.Next(-10, 15), random.Next(-10, 15)), decalShader, this); } //Calculate decal texcoord offsets /*Vector2D decalBToffset = new Vector2D(10,5); * float BTXDTL_x = decalBToffset.X / bouncesprite.Image.Width; * float BTXDTL_y = decalBToffset.Y / bouncesprite.Image.Height; * float BTXDBR_x = (decalBToffset.X + decalsprite.Width)/bouncesprite.Image.Width; * float BTXDBR_y = (decalBToffset.Y + decalsprite.Height)/bouncesprite.Image.Height; * float CFx = (float)decalsprite.Image.Width/(float)bouncesprite.Image.Width; * float CFy = (float)decalsprite.Image.Height / (float)bouncesprite.Image.Height; * float DOtc_xtl = (float)decalsprite.ImageOffset.X / (float)decalsprite.Image.Width; * float DOtc_ytl = (float)decalsprite.ImageOffset.Y / (float)decalsprite.Image.Height; * * Vector4D decalParms1 = new Vector4D(BTXDTL_x, BTXDTL_y, BTXDBR_x, BTXDBR_y); * Vector4D decalParms2 = new Vector4D(CFx, CFy, DOtc_xtl, DOtc_ytl);*/ }
public override void ProcessImage(RenderImage image) { var OstafLikesTheCock = new RenderImage(image.Height, image.Height); CluwneLib.CurrentRenderTarget = OstafLikesTheCock; image.Blit(0, 0, image.Height, image.Height, Color.White, BlitterSizeMode.Crop); CluwneLib.CurrentRenderTarget = image; CluwneLib.CurrentShader = _shader; _shader.SetParameter("SceneTexture", OstafLikesTheCock); _shader.setDuration((Math.Abs(_duration))); OstafLikesTheCock.Blit(0, 0, image.Height, image.Height, Color.White, BlitterSizeMode.Crop); CluwneLib.CurrentRenderTarget = null; CluwneLib.CurrentShader = null; OstafLikesTheCock.Dispose(); }
internal void Start(Parametter para) { //Parametter para = new Parametter(); //para.DEserialize(); if (para.Type.Equals("china")) { RenderChina.Start(para.To, para.From); } if (para.Type.Equals("span")) { RenderSpan.Start(para.To, para.From); } if (para.Type.Equals("arabic")) { RenderImage.Start(para.To, para.From, para.Type); } }
private void SetupGorgon() { Gorgon.Initialize(true, false); Gorgon.SetMode(this); //Gorgon.AllowBackgroundRendering = true; //Gorgon.Screen.BackgroundColor = Color.FromArgb(50, 50, 50); //Gorgon.CurrentClippingViewport = new Viewport(0, 20, Gorgon.Screen.Width, Gorgon.Screen.Height - 20); //PreciseTimer preciseTimer = new PreciseTimer(); //Gorgon.MinimumFrameTime = PreciseTimer.FpsToMilliseconds(66); Gorgon.Idle += new FrameEventHandler(Gorgon_Idle); Gorgon.FrameStatsVisible = true; bouncesprite = new Sprite("bouncey", GorgonLibrary.Graphics.Image.FromFile(mediadir + @"\textures\0_Items.png"), new Vector2D(0,0), new Vector2D(22,20)); bouncesprite.SetScale(3, 3); decalsprite = new Sprite("decal", GorgonLibrary.Graphics.Image.FromFile(mediadir + @"\textures\0_Decals.png"), new Vector2D(56,0), new Vector2D(103,29)); decalsprite.SetScale(1, 1); decalShader = FXShader.FromFile(mediadir + @"\shaders\decalshader.fx", ShaderCompileOptions.Debug); decalShader.Parameters["tex1"].SetValue(decalsprite.Image); baseTarget = new RenderImage("baseTarget", 32, 32, ImageBufferFormats.BufferRGB888A8); baseTargetSprite = new Sprite("baseTargetSprite", baseTarget); bounceysprites = new BounceySprite[10]; for (int i = 0; i < 10; i++) { bounceysprites[i] = new BounceySprite(bouncesprite, new Vector2D(random.Next(0, Gorgon.Screen.Width), random.Next(0, Gorgon.Screen.Height)), new Vector2D((float)random.Next(-100000,100000) / 100000, (float)random.Next(-100000,100000) / 100000), decalsprite, new Vector2D(random.Next(-10,15), random.Next(-10,15)), decalShader, this); } //Calculate decal texcoord offsets /*Vector2D decalBToffset = new Vector2D(10,5); float BTXDTL_x = decalBToffset.X / bouncesprite.Image.Width; float BTXDTL_y = decalBToffset.Y / bouncesprite.Image.Height; float BTXDBR_x = (decalBToffset.X + decalsprite.Width)/bouncesprite.Image.Width; float BTXDBR_y = (decalBToffset.Y + decalsprite.Height)/bouncesprite.Image.Height; float CFx = (float)decalsprite.Image.Width/(float)bouncesprite.Image.Width; float CFy = (float)decalsprite.Image.Height / (float)bouncesprite.Image.Height; float DOtc_xtl = (float)decalsprite.ImageOffset.X / (float)decalsprite.Image.Width; float DOtc_ytl = (float)decalsprite.ImageOffset.Y / (float)decalsprite.Image.Height; Vector4D decalParms1 = new Vector4D(BTXDTL_x, BTXDTL_y, BTXDBR_x, BTXDBR_y); Vector4D decalParms2 = new Vector4D(CFx, CFy, DOtc_xtl, DOtc_ytl);*/ }
private void ApplyHorizontalReduction(RenderImage source, RenderImage destination) { int step = reductionChainCount - 1; RenderImage src = source; RenderImage HorizontalReduction = reductionRT[step]; reductionEffectTechnique["HorizontalReduction"].setAsCurrentShader(); // Disabled GLTexture stuff for now just to get the pipeline working. // The only side effect is that floating point precision will be low, // making light borders and shit have jaggy edges. //GLTexture GLHorizontalReduction = new GLTexture("desto", (int)source.Width, (int)source.Height, ImageBufferFormats.BufferGR1616F); //Debug.DebugRendertarget(source); while (step >= 0) { HorizontalReduction = reductionRT[step]; // next step HorizontalReduction.BeginDrawing(); HorizontalReduction.Clear(Color.White); //reductionEffectTechnique["HorizontalReduction"].SetParameter("secondTexture", src); reductionEffectTechnique["HorizontalReduction"].SetParameter("TextureDimensions", 1.0f / src.Width); // Sourcetexture not needed... just blit! src.Blit(0, 0, HorizontalReduction.Width, HorizontalReduction.Height, BlitterSizeMode.Scale); // draw SRC to HR //fix //GLHorizontalReduction.Blit(src.Texture, CluwneLib.CurrentShader); HorizontalReduction.EndDrawing(); src = HorizontalReduction; // hr becomes new src //Debug.DebugRendertarget(HorizontalReduction); step--; } CluwneLib.ResetShader(); //copy to destination destination.BeginDrawing(); destination.Clear(Color.White); HorizontalReduction.Blit(0, 0, destination.Height, destination.Width); //GLHorizontalReduction.Blit(HorizontalReduction.Texture, CluwneLib.CurrentShader); destination.EndDrawing(); //Debug.DebugRendertarget(destination); CluwneLib.ResetRenderTarget(); }
/// <summary> /// Makes sure the internal buffer is ready then returns a <see cref="RenderImage"/> to draw to it. /// </summary> /// <returns>The <see cref="RenderImage"/> to use, or null if the buffer could not be prepared.</returns> RenderImage GetRenderImage() { var oldRI = _ri; _ri = _window.CreateBufferRenderImage(_ri); if (_ri == null) { return(null); } if (!BypassClear || _ri != oldRI) { _ri.Clear(BufferClearColor); } return(_ri); }
public override void ProcessImage(RenderImage image) { var OstafLikesTheCock = new RenderImage("CockLoverOstaf", image.Height, image.Height); OstafLikesTheCock.BeginDrawing(); image.Blit(0, 0, image.Height, image.Height, SFML.Graphics.Color.White, BlitterSizeMode.Crop); OstafLikesTheCock.EndDrawing(); image.BeginDrawing(); _shader.setAsCurrentShader(); _shader.SetParameter("SceneTexture", OstafLikesTheCock); _shader.setDuration((Math.Abs(_duration))); OstafLikesTheCock.Blit(0, 0, image.Height, image.Height, SFML.Graphics.Color.White, BlitterSizeMode.Crop); image.EndDrawing(); _shader.ResetCurrentShader(); OstafLikesTheCock.Dispose(); }
public void LoadContent() { reductionEffectTechnique = _resourceManager.GetTechnique("reductionEffect"); resolveShadowsEffectTechnique = _resourceManager.GetTechnique("resolveShadowsEffect"); //// BUFFER TYPES ARE VERY IMPORTANT HERE AND IT WILL BREAK IF YOU CHANGE THEM!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! HONK HONK distortRT = new RenderImage("distortRT" + baseSize, baseSize, baseSize, ImageBufferFormats.BufferGR1616F); distancesRT = new RenderImage("distancesRT" + baseSize, baseSize, baseSize, ImageBufferFormats.BufferGR1616F); shadowMap = new RenderImage("shadowMap" + baseSize, 2, baseSize, ImageBufferFormats.BufferGR1616F); reductionRT = new RenderImage[reductionChainCount]; for (int i = 0; i < reductionChainCount; i++) { reductionRT[i] = new RenderImage("reductionRT" + i + baseSize, 2 << i, baseSize, ImageBufferFormats.BufferGR1616F); } shadowsRT = new RenderImage("shadowsRT" + baseSize, baseSize, baseSize, ImageBufferFormats.BufferRGB888A8); processedShadowsRT = new RenderImage("processedShadowsRT" + baseSize, baseSize, baseSize, ImageBufferFormats.BufferRGB888A8); }
public SpeechBubble(string mobname) { _resourceManager = IoCManager.Resolve<IResourceManager>(); _mobName = mobname; _buildTime = DateTime.Now; _textSprite = new TextSprite ( "chatBubbleTextSprite_" + _mobName, String.Empty, _resourceManager.GetFont("CALIBRI") ) { Color = Color.Black, WordWrap = true }; _textSprite.SetPosition(5, 3); _stringBuilder = new StringBuilder(); _bubbleRender = new RenderImage("ChatBubbleRenderImage_" + _mobName, 1, 1, ImageBufferFormats.BufferRGB888A8); _bubbleSprite = new Sprite("ChatBubbleRenderSprite_" + _mobName, _bubbleRender); }
public override void ProcessImage(RenderImage image) { if (_noiseBase == null) GenerateNoise(32); var shadowColor = new Vector4D(1, 0, 0, 1); var midtoneColor = new Vector4D(0, 0, 1, 1); var highlightColor = new Vector4D(0, 1, 0, 1); Gorgon.CurrentRenderTarget = copyImage; Gorgon.CurrentShader = _shader; _shader.Parameters["xTime"].SetValue(_duration/20); _shader.Parameters["xOvercast"].SetValue(1.0f); _shader.Parameters["NoiseTexture"].SetValue(_noiseBase); _shader.Parameters["SceneTexture"].SetValue(image); //_shader.Parameters["shadowColor"].SetValue(shadowColor); //_shader.Parameters["midtoneColor"].SetValue(midtoneColor); //_shader.Parameters["highlightColor"].SetValue(highlightColor); _noiseBase.Blit(0, 0, image.Width, image.Height); Gorgon.CurrentShader = null; Gorgon.CurrentRenderTarget = null; image.CopyFromImage(copyImage.Image); }
private void ExecuteTechnique(Texture source, RenderImage destination, string techniqueName) { ExecuteTechnique(source, destination, techniqueName, null); }
private void ExecuteTechnique(Texture source, RenderImage destination, string techniqueName, RenderImage shadowMap) { Vector2 renderTargetSize; renderTargetSize = new Vector2(baseSize, baseSize); CluwneLib.CurrentRenderTarget = destination; CluwneLib.CurrentRenderTarget.Clear(Color.White); CluwneLib.CurrentShader = resolveShadowsEffectTechnique[techniqueName]; resolveShadowsEffectTechnique[techniqueName].SetParameter("renderTargetSize", renderTargetSize); if (source != null) resolveShadowsEffectTechnique[techniqueName].SetParameter("InputTexture", source); if (shadowMap != null) resolveShadowsEffectTechnique[techniqueName].SetParameter("ShadowMapTexture", shadowMap); quadRender.Render(new Vector2(1, 1)*-1, new Vector2(1, 1)); CluwneLib.CurrentRenderTarget = null; }
private void ApplyHorizontalReduction(RenderImage source, RenderImage destination) { int step = reductionChainCount - 1; RenderImage s = source; RenderImage d = reductionRT[step]; CluwneLib.CurrentShader = reductionEffectTechnique["HorizontalReduction"]; while (step >= 0) { d = reductionRT[step]; CluwneLib.CurrentRenderTarget = d; d.Clear(Color.White); var textureDim = new Vector2(1.0f/s.Width, 1.0f/s.Height); reductionEffectTechnique["HorizontalReduction"].SetParameter("SourceTexture", s); reductionEffectTechnique["HorizontalReduction"].SetParameter("TextureDimensions",textureDim); quadRender.Render(new Vector2(1, 1)*-1, new Vector2(1, 1)); s = d; step--; } //copy to destination CluwneLib.CurrentRenderTarget = destination; reductionEffectTechnique["Copy"].SetParameter("SourceTexture",d); reductionEffectTechnique["Copy"].SetParameter("SourceTexture", reductionRT[reductionChainCount - 1]); CluwneLib.CurrentShader = reductionEffectTechnique["Copy"]; CluwneLib.CurrentRenderTarget.Clear(Color.White); quadRender.Render(new Vector2(1, 1)*-1, new Vector2(1, 1)); CluwneLib.CurrentRenderTarget = null; }
public void ResolveShadows(Texture shadowCastersTexture, RenderImage result, Vector2 lightPosition, bool attenuateShadows, Texture mask, Vector4 maskProps, Vector4 diffuseColor) { //only DrawShadows needs these vars resolveShadowsEffectTechnique["DrawShadows"].SetParameter("AttenuateShadows", attenuateShadows ? 0 : 1); resolveShadowsEffectTechnique["DrawShadows"].SetParameter("MaskProps", maskProps); resolveShadowsEffectTechnique["DrawShadows"].SetParameter("DiffuseColor", diffuseColor); // CluwneLib.CurrentRenderTarget.BlendingMode = BlendingModes.None; ExecuteTechnique(shadowCastersTexture, distancesRT, "ComputeDistances"); ExecuteTechnique(distancesRT.Texture, distortRT, "Distort"); ApplyHorizontalReduction(distortRT, shadowMap); ExecuteTechnique(mask, result, "DrawShadows", shadowMap); ExecuteTechnique(shadowsRT.Texture, processedShadowsRT, "BlurHorizontally"); ExecuteTechnique(processedShadowsRT.Texture, result, "BlurVerticallyAndAttenuate"); CluwneLib.CurrentShader = null; }