monochromeeffect.monkey2 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. Namespace mojo3d
  2. #rem monkeydoc The MonochromeEffect class.
  3. #end
  4. Class MonochromeEffect Extends PostEffect
  5. #rem monkeydoc Creates a new monochrome effect shader.
  6. #end
  7. Method New( level:Float=1.0 )
  8. _shader=Shader.Open( "effects/monochrome" )
  9. _uniforms=New UniformBlock( 3 )
  10. Level=level
  11. End
  12. #rem monkeydoc The effect level.
  13. 0=no effect, 1=full effect.
  14. #end
  15. Property Level:Float()
  16. Return _uniforms.GetFloat( "Level" )
  17. Setter( level:Float )
  18. _uniforms.SetFloat( "Level",level )
  19. End
  20. Protected
  21. Method OnRender( target:RenderTarget,viewport:Recti ) Override
  22. Local size:=viewport.Size
  23. Local source:=target.GetColorTexture( 0 )
  24. If Not _target Or size.x>_target.Size.x Or size.y>_target.Size.y
  25. _target=CreateRenderTarget( size,source.Format,TextureFlags.Dynamic )
  26. End
  27. Super.SetRenderTarget( _target,New Recti( 0,0,size ) )
  28. Device.Shader=_shader
  29. Device.BindUniformBlock( _uniforms )
  30. RenderQuad()
  31. End
  32. Private
  33. Field _shader:Shader
  34. Field _uniforms:UniformBlock
  35. Field _target:RenderTarget
  36. End