Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Lua FBO and RBO: Difference between revisions

From FIGHTORDER
imported>Argh
m Font colors, 2 (used #55ee99)
imported>Ivand
 
(11 intermediate revisions by 4 users not shown)
Line 1: Line 1:
[[Engine_Development|Development]] < [[Lua_Scripting|Lua Scripting]] < {{FULLPAGENAME}}
== FBO ==
== FBO ==
'''gl.CreateFBO'''
'''gl.CreateFBO'''
   ( [ table initialization ] ) -> userdata [[Lua_FBO_and_RBO#Userdata_FBO|fbo]]
   ( [ table initialization ] ) -> userdata [[Lua_FBO#Userdata_FBO|fbo]]
<font color=#55ee99>
<font color=darkgreen>
   initialization table can contain:
   initialization table can contain:


Line 19: Line 20:
</font>
</font>


'''gl.DeleteFBO''' <font color=#55ee99>(This doesn't delete the attached objects!)</font>
'''gl.DeleteFBO''' <font color=darkgreen>(This doesn't delete the attached objects!)</font>
   ( fbo ) -> nil
   ( fbo ) -> nil


Line 28: Line 29:
   ( fbo [, number [[Lua_ConstGL#FBO_Targets|target]] ] [, boolean identities ] , lua_function, arg1, arg2, ... ) -> nil
   ( fbo [, number [[Lua_ConstGL#FBO_Targets|target]] ] [, boolean identities ] , lua_function, arg1, arg2, ... ) -> nil


'''gl.UnsafeSetFBO''' <font color=#55ee99>(Binds a FBO like gl.ActiveFBO() does, but you have to unbind it yourself!)</font>
'''gl.UnsafeSetFBO''' <font color=darkgreen>(Binds a FBO like gl.ActiveFBO() does, but you have to unbind it yourself!)</font>
   ( nil [, number [[Lua_ConstGL#FBO_Targets|target]] = GL_FRAMEBUFFER_EXT ] ) -> nil <font color=#55ee99>(Bind default screenbuffer)</font>
   ( nil [, number [[Lua_ConstGL#FBO_Targets|target]] = GL_FRAMEBUFFER_EXT ] ) -> nil <font color=darkgreen>(Bind default screenbuffer)</font>
   ( fbo [, number [[Lua_ConstGL#FBO_Targets|target]] = fbo.target ] ) -> nil
   ( fbo [, number [[Lua_ConstGL#FBO_Targets|target]] = fbo.target ] ) -> nil
'''gl.RawBindFBO''' <font color=darkblue> (Replaces UnsafeSetFBO starting from 104.0.1-1003-gb3e02a6 maintenance)</font>
  ( nil [, number [[Lua_ConstGL#FBO_Targets|target]] = GL_FRAMEBUFFER_EXT ] [, number rawFboId = 0] ) -> nil <font color=darkgreen>(Bind default or specified via rawFboId numeric id of FBO)</font>
  ( fbo [, number [[Lua_ConstGL#FBO_Targets|target]] = fbo.target ] ) -> number previouslyBoundRawFboId


'''gl.BlitFBO''' <font color=red>needs GLEW_EXT_framebuffer_blit</font>
'''gl.BlitFBO''' <font color=red>needs GLEW_EXT_framebuffer_blit</font>
Line 43: Line 48:


===Userdata FBO===
===Userdata FBO===
   <font color=#55ee99>attachment ::= luaTex or RBO or nil or { luaTex or RBO [, num [[Lua_ConstGL#FBO_Targets|target]] [, num level ]] }</font>
   <font color=darkgreen>attachment ::= luaTex or RBO or nil or { luaTex or RBO [, num [[Lua_ConstGL#FBO_Targets|target]] [, num level ]] }</font>


   write-only methods are:
   write-only methods are:
Line 53: Line 58:
     '''fbo.drawbuffers''' = { GL_COLOR_ATTACHMENT0_EXT, GL_COLOR_ATTACHMENT3_EXT, ..}
     '''fbo.drawbuffers''' = { GL_COLOR_ATTACHMENT0_EXT, GL_COLOR_ATTACHMENT3_EXT, ..}
     '''fbo.readbuffer'''  = GL_COLOR_ATTACHMENT0_EXT
     '''fbo.readbuffer'''  = GL_COLOR_ATTACHMENT0_EXT


==RBO==
==RBO==
Line 61: Line 65:
       target = GL_RENDERBUFFER_EXT,
       target = GL_RENDERBUFFER_EXT,
       format = [[Lua_ConstGL#RBO_Formats|GL_RGBA]],
       format = [[Lua_ConstGL#RBO_Formats|GL_RGBA]],
     } ]) -> userdata [[Lua_FBO_and_RBO#Userdata_RBO|rbo]]
      [samples = number], <font color=darkblue> any number here will result in creation of multisampled RBO (Added in 104.0.1-1015-g8e36ef2 maintenance)</font>
     } ]) -> userdata [[Lua_FBO#Userdata_RBO|rbo]]


'''gl.DeleteRBO'''
'''gl.DeleteRBO'''
Line 68: Line 73:
===Userdata RBO===
===Userdata RBO===
   read-only methods are:
   read-only methods are:
     '''rbo.target''' = number
     '''rbo.target''' = number
     '''rbo.format''' = [[Lua_ConstGL#RBO_Formats|number]]
     '''rbo.format''' = [[Lua_ConstGL#RBO_Formats|number]]
     '''rbo.xsize''' = number
     '''rbo.xsize'''   = number
     '''rbo.ysize''' = number
     '''rbo.ysize'''   = number
     '''rbo.valid''' = boolean
     '''rbo.valid'''   = boolean
    '''rbo.samples''' = number <font color=darkblue> will return globalRendering->msaaLevel for multisampled RBO or 0 otherwise (Added in 104.0.1-1015-g8e36ef2 maintenance)</font>
[[Category: Lua]]

Latest revision as of 19:30, 17 February 2019

Development < Lua Scripting < Lua FBO and RBO

FBO

gl.CreateFBO

 ( [ table initialization ] ) -> userdata fbo

 initialization table can contain:
   attachment ::= luaTex or RBO or nil or { luaTex [, num target [, num level ] ] }
   {
     depth   = attachment,
     stencil = attachment,
     color0  = attachment,
     color1  = attachment,
     color2  = attachment,
     ..
     color15 = attachment,
     drawbuffers = { GL_COLOR_ATTACHMENT0_EXT, GL_COLOR_ATTACHMENT3_EXT, ..}
   }

gl.DeleteFBO (This doesn't delete the attached objects!)

 ( fbo ) -> nil

gl.IsValidFBO

 ( fbo [, number target ] ) -> boolean valid [, number status ]

gl.ActiveFBO

 ( fbo [, number target ] [, boolean identities ] , lua_function, arg1, arg2, ... ) -> nil

gl.UnsafeSetFBO (Binds a FBO like gl.ActiveFBO() does, but you have to unbind it yourself!)

 ( nil [, number target = GL_FRAMEBUFFER_EXT ] ) -> nil (Bind default screenbuffer)
 ( fbo [, number target = fbo.target ] ) -> nil

gl.RawBindFBO (Replaces UnsafeSetFBO starting from 104.0.1-1003-gb3e02a6 maintenance)

 ( nil [, number target = GL_FRAMEBUFFER_EXT ] [, number rawFboId = 0] ) -> nil (Bind default or specified via rawFboId numeric id of FBO)
 ( fbo [, number target = fbo.target ] ) -> number previouslyBoundRawFboId

gl.BlitFBO needs GLEW_EXT_framebuffer_blit

 ( int x0Src,y0Src,x1Src,y1Src,
   int x0Dst,y0Dst,x1Dst,y1Dst
   [, number mask = GL_COLOR_BUFFER_BIT [, number filter = GL_NEAREST ] ] ) -> nil
 ( fboSrc , int x0Src,y0Src,x1Src,y1Src,
   fboDst , int x0Dst,y0Dst,x1Dst,y1Dst
   [, number mask = GL_COLOR_BUFFER_BIT [, number filter = GL_NEAREST ] ] ) -> nil


Userdata FBO

  attachment ::= luaTex or RBO or nil or { luaTex or RBO [, num target [, num level ]] }
 write-only methods are:
   fbo.depth   = attachment
   fbo.stencil = attachment
   fbo.color0  = attachment
    ..
   fbo.color15 = attachment
   fbo.drawbuffers = { GL_COLOR_ATTACHMENT0_EXT, GL_COLOR_ATTACHMENT3_EXT, ..}
   fbo.readbuffer  = GL_COLOR_ATTACHMENT0_EXT

RBO

gl.CreateRBO

 ( int xsize, int ysize,
   [ {
     target = GL_RENDERBUFFER_EXT,
     format = GL_RGBA,
     [samples = number],  any number here will result in creation of multisampled RBO (Added in 104.0.1-1015-g8e36ef2 maintenance)
   } ]) -> userdata rbo

gl.DeleteRBO

 ( rbo ) -> nil

Userdata RBO

 read-only methods are:
   rbo.target  = number
   rbo.format  = number
   rbo.xsize   = number
   rbo.ysize   = number
   rbo.valid   = boolean
   rbo.samples = number  will return globalRendering->msaaLevel for multisampled RBO or 0 otherwise (Added in 104.0.1-1015-g8e36ef2 maintenance)
Contents