diff options
author | clayjohn <claynjohn@gmail.com> | 2022-12-12 14:10:06 -0800 |
---|---|---|
committer | clayjohn <claynjohn@gmail.com> | 2022-12-13 10:22:18 -0800 |
commit | bdd4001ef012c9e7a95b501225c3f6540a0299f3 (patch) | |
tree | ffd6b82a1eb19c0f322c8898e52962e1f6f8682e /doc/classes | |
parent | ba4bd7f00971a94c20d90e7d2c665d5eb0ae1b90 (diff) |
Various fixes and documentation for CanvasGroup
Properly apply custom materials with CanvasGroups in the GLES3 backend
Properly blur backbuffer when using a partial rect in forward_plus and
gl_compatibility renderers
Properly set fit_margin when clear_margin is set
Fix shader error during backbuffer clear in mobile renderer
Diffstat (limited to 'doc/classes')
-rw-r--r-- | doc/classes/CanvasGroup.xml | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/doc/classes/CanvasGroup.xml b/doc/classes/CanvasGroup.xml index d2bcf3c7ac..37827defec 100644 --- a/doc/classes/CanvasGroup.xml +++ b/doc/classes/CanvasGroup.xml @@ -5,16 +5,33 @@ </brief_description> <description> Child [CanvasItem] nodes of a [CanvasGroup] are drawn as a single object. It allows to e.g. draw overlapping translucent 2D nodes without blending (set [member CanvasItem.self_modulate] property of [CanvasGroup] to achieve this effect). + [b]Note:[/b] The [CanvasGroup] uses a custom shader to read from the backbuffer to draw its children. Assigning a [Material] to the [CanvasGroup] overrides the builtin shader. To duplicate the behavior of the builtin shader in a custom [Shader] use the following: + [codeblock] + shader_type canvas_item; + + void fragment() { + vec4 c = textureLod(SCREEN_TEXTURE, SCREEN_UV, 0.0); + + if (c.a > 0.0001) { + c.rgb /= c.a; + } + + COLOR *= c; + } + [/codeblock] [b]Note:[/b] Since [CanvasGroup] and [member CanvasItem.clip_children] both utilize the backbuffer, children of a [CanvasGroup] who have their [member CanvasItem.clip_children] set to anything other than [constant CanvasItem.CLIP_CHILDREN_DISABLED] will not function correctly. </description> <tutorials> </tutorials> <members> <member name="clear_margin" type="float" setter="set_clear_margin" getter="get_clear_margin" default="10.0"> + Sets the size of the margin used to expand the clearing rect of this [CanvasGroup]. This expands the area of the backbuffer that will be used by the [CanvasGroup]. A smaller margin will reduce the area of the backbuffer used which can increase performance, however if [member use_mipmaps] is enabled, a small margin may result in mipmap errors at the edge of the [CanvasGroup]. Accordingly, this should be left as small as possible, but should be increased if artifacts appear along the edges of the canvas group. </member> <member name="fit_margin" type="float" setter="set_fit_margin" getter="get_fit_margin" default="10.0"> + Sets the size of a margin used to expand the drawable rect of this [CanvasGroup]. The size of the [CanvasGroup] is determined by fitting a rect around its children then expanding that rect by [member fit_margin]. This increases both the backbuffer area used and the area covered by the [CanvasGroup] both of which can reduce performance. This should be kept as small as possible and should only be expanded when an increased size is needed (e.g. for custom shader effects). </member> <member name="use_mipmaps" type="bool" setter="set_use_mipmaps" getter="is_using_mipmaps" default="false"> + If [code]true[/code], calculates mipmaps for the backbuffer before drawing the [CanvasGroup] so that mipmaps can be used in a custom [ShaderMaterial] attached to the [CanvasGroup]. Generating mipmaps has a performance cost so this should not be enabled unless required. </member> </members> </class> |