A little something I used in SpaceJunk (WIP)
Before =

And with the filter =
; *********************************************************************************** ; MOD_DreamFilter DebugLog "MOD_Dreamfilter.bb" ;Include "LIB_Render2Tex.bb" ;InitialiseR2T() ; *********************************************************************************** ; NO GLOBALS ALLOWED! Type DreamFilter Field TextureSize Field MotionZoom# Field FeedbackRed,FeedbackGreen,FeedbackBlue Field Strength# Field Position# Field Offset# Field BlurMesh Field BlurSurface Field BlurTexture Field Show ;Field R2THolder End Type Type DreamEntity Field Entity Field Show End Type ; ********************************************************************************* Function DreamEntity_Add(entity,show=True) ; EXCLUDE FROM DREAM RENDER Local e.DreamEntity = New DreamEntity e\Entity = Entity e\Show = Show Return Handle(e) End Function ; ********************************************************************************* Function DreamEntity_Remove(ent) Local e.DreamEntity = Object.DreamEntity(ent) Delete e End Function ; ********************************************************************************* Function DreamEntity_State(ent,state) Local e.DreamEntity = Object.DreamEntity(ent) e\Show = State End Function ; ********************************************************************************* Function DreamFilter_Create(cam,TexSize = 256,MotionZoom#=1.022,FeedBackRed=220,FeedBackGreen=220,FeedBackBlue=220,Strength#=100,Position#=1.1,Offset#=0.001) Local d.DreamFilter = New DreamFilter d\Show = True d\TextureSize = TexSize d\MotionZoom# = MotionZoom# d\FeedbackRed = FeedbackRed d\FeedbackGreen = FeedbackGreen d\FeedbackBlue = FeedbackBlue d\Strength# = Strength# d\Position# = Position# d\Offset# = Offset# d\BlurMesh = CreateMesh(cam) d\BlurSurface = CreateSurface(d\BlurMesh) d\BlurTexture = CreateTexture(d\TextureSize,d\TextureSize,256+1+16+32) EntityTexture d\blurMesh, d\BlurTexture ; d\R2THolder = NewRenderTexture(TexSize,TexSize) ; rt.RenderTexture = Object.RenderTexture(d\R2THolder) ; MakeRenderTexture(d\BlurTexture,rt) AddVertex d\BlurSurface, -1, 1, 0, 0, 0 AddVertex d\BlurSurface, 1, 1, 0, 1, 0 AddVertex d\BlurSurface, -1,-1, 0, 0, 1 AddVertex d\BlurSurface, 1,-1, 0, 1, 1 AddTriangle d\BlurSurface, 0, 1, 2 AddTriangle d\BlurSurface, 3, 2, 1 PositionEntity d\BlurMesh,-d\Offset#,d\Offset#, d\Position# ScaleEntity d\BlurMesh,d\MotionZoom# * d\Position#,d\MotionZoom# * d\Position#,1.0 EntityOrder d\BlurMesh, -10000 EntityFX d\BlurMesh, 1 EntityBlend d\BlurMesh, 3 Return Handle(d) End Function ; ********************************************************************************* Function DreamFilterShow(filter,show=1) d.DreamFilter = Object.DreamFilter(Filter) d\Show = show If show Then ShowEntity d\BlurMesh Else HideEntity d\BlurMesh EndIf End Function ; ********************************************************************************* Function DreamFilter_Destroy(filter) d.DreamFilter = Object.DreamFilter(Filter) FreeTexture d\BlurTexture FreeEntity d\BlurMesh Delete d End Function ; ********************************************************************************* Function DreamFilter_Update(cam,filter) d.DreamFilter = Object.DreamFilter(Filter) If Not d\Show Then Return CameraViewport Cam, 0, 0, d\TextureSize, d\TextureSize EntityColor d\BlurMesh, d\FeedbackRed,d\FeedbackGreen,d\FeedbackBlue For e.DreamEntity = Each DreamEntity If Not e\show Then HideEntity e\Entity Next ; CameraRange cam,1,10 RenderWorld ; CameraRange cam,1,1000 CopyRect 0,0,d\TextureSize,d\TextureSize, 0, 0, BackBuffer(), TextureBuffer(d\BlurTexture) CameraViewport Cam,0,0,GraphicsWidth(),GraphicsHeight() EntityColor d\BlurMesh, d\Strength# ,d\Strength# ,d\Strength# For e.DreamEntity = Each DreamEntity ShowEntity e\Entity Next End Function
Before =

And with the filter =