Difference between revisions of "Sprite:setEffectStack"
From GiderosMobile
(Created page with "__NOTOC__ <languages /> '''<translate>Available since</translate>:''' Gideros 2021.1<br/> '''<translate>Class</translate>:''' Sprite<br/> === <tr...") |
m (Text replacement - "</source>" to "</syntaxhighlight>") |
||
(4 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
__NOTOC__ | __NOTOC__ | ||
− | + | '''Available since:''' Gideros 2021.1<br/> | |
− | ''' | + | '''Class:''' [[Sprite]]<br/> |
− | ''' | + | |
− | === | + | === Description === |
− | Sets or | + | Sets or removes post processing effects for this sprite. |
+ | <syntaxhighlight lang="lua"> | ||
+ | Sprite:setEffectStack(effectStack,mode) | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | |||
The effect stack is an array of tables, each one describing a post processing stage. Each table can have the following fields: | The effect stack is an array of tables, each one describing a post processing stage. Each table can have the following fields: | ||
− | * '''buffer''': | + | * '''buffer''': a [[RenderTarget]] that will hold the input of this post processing stage |
− | * '''shader''': | + | * '''shader''': a [[Shader]] that will be used to draw the buffer above onto the next stage, or on screen '''optional''' |
− | * '''transform''': | + | * '''transform''': a [[Matrix]] to transform the input buffer before processing '''optional''' |
− | * '''postTransform''': | + | * '''postTransform''': a [[Matrix]] to transform the final stage output before displaying '''optional''' |
− | * '''textures''': | + | * '''textures''': an array of [[TextureBase]] to be used by the shader. By default the buffer is used. '''optional''' |
+ | * '''clear''': a boolean indicating to clear the buffer before rendering. True by default for the first effect of the stack, false otherwise. '''optional''' | ||
+ | * '''autoBuffer''': a boolean to tell Gideros to resize the buffer to match the Sprite size automatically. False by default. '''optional''' | ||
+ | * '''autoTransform''': a [[Matrix]] used in computing the Sprite size when autoBuffer is enabled. '''optional''' | ||
+ | |||
+ | === Parameters === | ||
+ | '''effectStack''': (table) a table describing the post processing phases to be applied<br/> | ||
+ | '''mode''': (number) one of the Sprite.EFFECT_MODE_* constants '''optional'''<br/> | ||
+ | |||
+ | === Example === | ||
+ | <syntaxhighlight lang="lua"> | ||
+ | local blur = Shader.new("Vertex", "fBlur", 0, | ||
+ | { | ||
+ | {name="vMatrix", type=Shader.CMATRIX, sys=Shader.SYS_WVP, vertex=true}, | ||
+ | {name="fColor", type=Shader.CFLOAT4, sys=Shader.SYS_COLOR, vertex=false}, | ||
+ | {name="fTexture", type=Shader.CTEXTURE, vertex=false}, | ||
+ | {name="fDir", type=Shader.CFLOAT2, vertex=false}, | ||
+ | {name="fResolution", type=Shader.CFLOAT2, vertex=false}, | ||
+ | }, | ||
+ | { | ||
+ | {name="vVertex", type=Shader.DFLOAT, mult=3, slot=0, offset=0}, | ||
+ | {name="vColor", type=Shader.DUBYTE, mult=4, slot=1, offset=0}, | ||
+ | {name="vTexCoord", type=Shader.DFLOAT, mult=2, slot=2, offset=0}, | ||
+ | } | ||
+ | ) | ||
+ | local texture = Texture.new("image.png") | ||
+ | local tw = texture:getWidth() | ||
+ | local th = texture:getHeight() | ||
+ | stage:addChild(Pixel.new(0xff00ff, 1, tw, th)) -- bg image | ||
+ | |||
+ | local image = Bitmap.new(texture) | ||
+ | local rt = RenderTarget.new(tw, th) | ||
+ | rt:draw(image) | ||
+ | local render = Bitmap.new(rt) | ||
+ | |||
+ | -- set effect stack | ||
+ | render:setEffectStack{{buffer = rt, shader = blur, clear = false}} | ||
+ | render:setEffectConstant(1, "fDir", Shader.CFLOAT2, 1, 1,0) | ||
+ | render:setEffectConstant(1, "fResolution", Shader.CFLOAT2, 1, 512,512) | ||
− | + | stage:addChild(render) | |
− | + | </syntaxhighlight> | |
− | |||
− | |||
− | |||
− | |||
{{Sprite}} | {{Sprite}} |
Latest revision as of 14:33, 13 July 2023
Available since: Gideros 2021.1
Class: Sprite
Description
Sets or removes post processing effects for this sprite.
Sprite:setEffectStack(effectStack,mode)
The effect stack is an array of tables, each one describing a post processing stage. Each table can have the following fields:
- buffer: a RenderTarget that will hold the input of this post processing stage
- shader: a Shader that will be used to draw the buffer above onto the next stage, or on screen optional
- transform: a Matrix to transform the input buffer before processing optional
- postTransform: a Matrix to transform the final stage output before displaying optional
- textures: an array of TextureBase to be used by the shader. By default the buffer is used. optional
- clear: a boolean indicating to clear the buffer before rendering. True by default for the first effect of the stack, false otherwise. optional
- autoBuffer: a boolean to tell Gideros to resize the buffer to match the Sprite size automatically. False by default. optional
- autoTransform: a Matrix used in computing the Sprite size when autoBuffer is enabled. optional
Parameters
effectStack: (table) a table describing the post processing phases to be applied
mode: (number) one of the Sprite.EFFECT_MODE_* constants optional
Example
local blur = Shader.new("Vertex", "fBlur", 0,
{
{name="vMatrix", type=Shader.CMATRIX, sys=Shader.SYS_WVP, vertex=true},
{name="fColor", type=Shader.CFLOAT4, sys=Shader.SYS_COLOR, vertex=false},
{name="fTexture", type=Shader.CTEXTURE, vertex=false},
{name="fDir", type=Shader.CFLOAT2, vertex=false},
{name="fResolution", type=Shader.CFLOAT2, vertex=false},
},
{
{name="vVertex", type=Shader.DFLOAT, mult=3, slot=0, offset=0},
{name="vColor", type=Shader.DUBYTE, mult=4, slot=1, offset=0},
{name="vTexCoord", type=Shader.DFLOAT, mult=2, slot=2, offset=0},
}
)
local texture = Texture.new("image.png")
local tw = texture:getWidth()
local th = texture:getHeight()
stage:addChild(Pixel.new(0xff00ff, 1, tw, th)) -- bg image
local image = Bitmap.new(texture)
local rt = RenderTarget.new(tw, th)
rt:draw(image)
local render = Bitmap.new(rt)
-- set effect stack
render:setEffectStack{{buffer = rt, shader = blur, clear = false}}
render:setEffectConstant(1, "fDir", Shader.CFLOAT2, 1, 1,0)
render:setEffectConstant(1, "fResolution", Shader.CFLOAT2, 1, 512,512)
stage:addChild(render)
- Sprite:addChild
- Sprite:addChildAt
- Sprite:clearBlendMode
- Sprite:clone
- Sprite:contains
- Sprite:get
- Sprite:getAlpha
- Sprite:getAnchorPoint
- Sprite:getAnchorPosition
- Sprite:getBounds
- Sprite:getChildAt
- Sprite:getChildIndex
- Sprite:getChildrenAtPoint
- Sprite:getClip
- Sprite:getColorTransform
- Sprite:getDrawCount
- Sprite:getHeight
- Sprite:getLayoutConstraints
- Sprite:getLayoutInfo
- Sprite:getLayoutParameters
- Sprite:getMatrix
- Sprite:getNumChildren
- Sprite:getParent
- Sprite:getPosition
- Sprite:getRotation
- Sprite:getRotationX
- Sprite:getRotationY
- Sprite:getScale
- Sprite:getScaleX
- Sprite:getScaleY
- Sprite:getScaleZ
- Sprite:getSize
- Sprite:getSkew
- Sprite:getSkewX
- Sprite:getSkewY
- Sprite:getWidth
- Sprite:getX
- Sprite:getY
- Sprite:getZ
- Sprite:globalToLocal
- Sprite:hitTestPoint
- Sprite:isVisible
- Sprite:localToGlobal
- Sprite:redrawEffects
- Sprite:removeChild
- Sprite:removeChildAt
- Sprite:removeFromParent
- Sprite:set
- Sprite:setAlpha
- Sprite:setAnchorPoint
- Sprite:setAnchorPosition
- Sprite:setBlendMode
- Sprite:setClip
- Sprite:setColorTransform
- Sprite:setEffectConstant
- Sprite:setEffectStack
- Sprite:setGhosts
- Sprite:setLayoutConstraints
- Sprite:setLayoutParameters
- Sprite:setMatrix
- Sprite:setPosition
- Sprite:setRotation
- Sprite:setRotationX
- Sprite:setRotationY
- Sprite:setScale
- Sprite:setScaleX
- Sprite:setScaleY
- Sprite:setScaleZ
- Sprite:setShader
- Sprite:setShaderConstant
- Sprite:setSkew
- Sprite:setSkewX
- Sprite:setSkewY
- Sprite:setStencilOperation
- Sprite:setStopEventPropagation
- Sprite:setVisible
- Sprite:setX
- Sprite:setY
- Sprite:setZ
- Sprite:spriteToLocal
- Sprite:swapChildren
- Sprite:swapChildrenAt
- Sprite.ADD
- Sprite.ALPHA
- Sprite.EFFECT MODE AUTOMATIC
- Sprite.EFFECT MODE CONTINUOUS
- Sprite.EFFECT MODE TRIGGERED
- Sprite.LAYOUT ANCHOR CENTER
- Sprite.LAYOUT ANCHOR EAST
- Sprite.LAYOUT ANCHOR NORTH
- Sprite.LAYOUT ANCHOR NORTHEAST
- Sprite.LAYOUT ANCHOR NORTHWEST
- Sprite.LAYOUT ANCHOR SOUTH
- Sprite.LAYOUT ANCHOR SOUTHEAST
- Sprite.LAYOUT ANCHOR SOUTHWEST
- Sprite.LAYOUT ANCHOR WEST
- Sprite.LAYOUT FILL BOTH
- Sprite.LAYOUT FILL HORIZONTAL
- Sprite.LAYOUT FILL NONE
- Sprite.LAYOUT FILL VERTICAL
- Sprite.MULTIPLY
- Sprite.NO ALPHA
- Sprite.SCREEN
- Sprite.new
- Event.ADDED_TO_STAGE
- Event.ENTER_FRAME
- Event.KEY_CHAR
- Event.KEY_DOWN
- Event.KEY_UP
- Event.LAYOUT_RESIZED
- Event.MOUSE_DOWN
- Event.MOUSE_ENTER
- Event.MOUSE_HOVER
- Event.MOUSE_LEAVE
- Event.MOUSE_MOVE
- Event.MOUSE_UP
- Event.MOUSE_WHEEL
- Event.REMOVED_FROM_STAGE
- Event.TOUCHES_BEGIN
- Event.TOUCHES_CANCEL
- Event.TOUCHES_END
- Event.TOUCHES_MOVE