About Monkey 2 › Forums › Monkey 2 Projects › Motion Blur Test
This topic contains 1 reply, has 1 voice, and was last updated by
cocon 2 years, 4 months ago.
Viewing 2 posts - 1 through 2 (of 2 total)
-
AuthorPosts
-
November 20, 2016 at 7:08 am #5271
Just trying this one to see how it looks.
Monkey123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293#Import "<mojo>"Using mojo..Using std.geomUsing std.randomUsing std.graphicsClass BlurEffectField Image:ImageField Canvas:CanvasField ClearColor:ColorMethod New(width:Int, height:Int)Self.Image = New Image(width, height, TextureFlags.Dynamic)Self.Canvas = New Canvas(Self.Image)Self.ClearColor = New Color(0.1, 0.1, 0.1, 0.2)EndEndClass PositionLimitField Limit1:Float, Limit2:FloatField UpdatedLimit:ByteField NewValue:FloatMethod New(l1:Float, l2:Float)Limit1 = l1Limit2 = l2EndMethod Apply(value:Float)UpdatedLimit = 0If value < Limit1NewValue = Limit1UpdatedLimit = 1Elseif value > Limit2NewValue = Limit2UpdatedLimit = 2EndEndEndClass MyWindow Extends WindowField effect:BlurEffectField objectPosition:Vec2f, objectSpeed:Vec2fField limitX:PositionLimit, limitY:PositionLimitMethod New()objectPosition = New Vec2f(Width / 2, Height / 2)objectSpeed.X = Rnd(-5.0, 5.0)objectSpeed.Y = Rnd(-5.0, 5.0)limitX = New PositionLimit(50, Width - 50)limitY = New PositionLimit(50, Height - 50)effect = New BlurEffect(Width, Height)EndMethod OnRender(canvas:Canvas) OverridelimitX.Apply(objectPosition.X)limitY.Apply(objectPosition.Y)If limitX.UpdatedLimit <> 0objectPosition.X = limitX.NewValueIf limitX.UpdatedLimit = 1 Then objectSpeed.X = Rnd(1, 5)If limitX.UpdatedLimit = 2 Then objectSpeed.X = Rnd(-1, -5)EndIf limitY.UpdatedLimit <> 0If limitY.UpdatedLimit = 1 Then objectSpeed.Y = Rnd(1, 5)If limitY.UpdatedLimit = 2 Then objectSpeed.Y = Rnd(-1, -5)EndobjectPosition += objectSpeed' draw the object to imageeffect.Canvas.Color = effect.ClearColoreffect.Canvas.DrawRect(0, 0, Width, Height)effect.Canvas.Color = Color.Whiteeffect.Canvas.DrawRect(objectPosition.X - 50, objectPosition.Y - 50, 100, 100)effect.Canvas.Flush()' draw the image to screencanvas.DrawImage(effect.Image, 0, 0)App.RequestRender()EndEndFunction Main()New AppInstanceNew MyWindowApp.Run()EndNovember 21, 2016 at 7:24 am #5294Now trying some rain effect.
Virtually, any sort of cool effects can be created here.
Monkey123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475#Import "<mojo>"Using mojo..Using std.collectionsUsing std.geomUsing std.graphicsUsing std.randomClass RainEffectField rain:Vec2f[]Method Generate(width:Int, height:Int)rain = New Vec2f[100]For Local i := 0 Until rain.Lengthrain[i] = New Vec2f(Rnd(0, width), Rnd(0, height))NextEndMethod Update(width:Int, height:Int)For Local i := 0 Until rain.Lengthrain[i].Y += 10If rain[i].Y > height + 50rain[i].Y = -50rain[i].X = Rnd(0, width)EndNextEndMethod Draw(canvas:Canvas)For Local i := Eachin raincanvas.DrawRect(i.X, i.Y - 25, 2, 50)NextEndEndClass MyWindow Extends WindowField imgCanvas:CanvasField imgBuffer:ImageField rain:RainEffectMethod New()imgBuffer = New Image(Width, Height, TextureFlags.Dynamic)imgCanvas = New Canvas(imgBuffer)imgCanvas.Color = Color.BlackimgCanvas.DrawRect(0, 0, Width, Height)rain = New RainEffectrain.Generate(Width, Height)EndMethod OnRender(canvas:Canvas) OverrideimgCanvas.Color = New Color(0.1, 0.1, 0.1, 0.1)imgCanvas.DrawRect(0, 0, Width, Height)imgCanvas.Color = Color.Whiterain.Update(Width, Height)rain.Draw(imgCanvas)imgCanvas.Flush()canvas.DrawImage(imgBuffer, 0, 0)App.RequestRender()EndEndFunction Main()For Local i := 0 To 1000Rnd(1, 1000)NextNew AppInstanceNew MyWindowApp.Run()End -
AuthorPosts
Viewing 2 posts - 1 through 2 (of 2 total)
You must be logged in to reply to this topic.