2
0

posteffect.monkey2 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. Namespace mojo3d
  2. #rem monkeydoc The PostEffect class.
  3. #end
  4. Class PostEffect
  5. #rem monkeydoc Enabled state.
  6. Set to true to enable this effect and false to disable.
  7. #end
  8. Property Enabled:Bool()
  9. Return _enabled
  10. Setter( enabled:Bool )
  11. _enabled=enabled
  12. End
  13. #rem monkeydoc @hidden
  14. #end
  15. Method Render()
  16. OnRender( _gdevice.RenderTarget,_gdevice.Viewport )
  17. End
  18. Function BeginRendering( gdevice:GraphicsDevice,runiforms:UniformBlock )
  19. _gdevice=gdevice
  20. _runiforms=runiforms
  21. End
  22. Function EndRendering()
  23. _gdevice=Null
  24. _runiforms=Null
  25. End
  26. Protected
  27. #rem monkeydoc @hidden
  28. #end
  29. Method OnRender( target:RenderTarget,viewport:Recti ) Abstract
  30. Property Device:GraphicsDevice()
  31. Return _gdevice
  32. End
  33. Method CreateRenderTarget:RenderTarget( size:Vec2i,format:PixelFormat,flags:TextureFlags )
  34. Local texture:=New Texture( size.x,size.y,format,flags )
  35. Local target:=New RenderTarget( New Texture[]( texture ),Null )
  36. Return target
  37. End
  38. Method SetRenderTarget( target:RenderTarget,viewport:Recti )
  39. Local rsize:=_gdevice.Viewport.Size
  40. Local rtarget:=_gdevice.RenderTarget
  41. Local rtexture:=rtarget.GetColorTexture( 0 )
  42. _runiforms.SetTexture( "SourceBuffer",rtexture )
  43. _runiforms.SetVec2f( "SourceBufferSize",Cast<Vec2f>( rsize ) )
  44. _runiforms.SetVec2f( "SourceBufferScale",Cast<Vec2f>( rsize )/Cast<Vec2f>( rtexture.Size ) )
  45. _gdevice.RenderTarget=target
  46. _gdevice.Viewport=viewport
  47. End
  48. Method RenderQuad()
  49. Global _vertices:VertexBuffer
  50. If Not _vertices
  51. _vertices=New VertexBuffer( New Vertex3f[](
  52. New Vertex3f( 0,1,0 ),
  53. New Vertex3f( 1,1,0 ),
  54. New Vertex3f( 1,0,0 ),
  55. New Vertex3f( 0,0,0 ) ) )
  56. Endif
  57. _gdevice.VertexBuffer=_vertices
  58. _gdevice.Render( 4,1 )
  59. End
  60. #rem monkeydoc @hidden
  61. #end
  62. Private
  63. Global _gdevice:GraphicsDevice
  64. Global _runiforms:UniformBlock
  65. Field _enabled:Bool=True
  66. End