Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.


Inherits: Container < Control < CanvasItem < Node < Object

A container used for displaying the contents of a SubViewport.


A container that displays the contents of underlying SubViewport child nodes. It uses the combined size of the SubViewports as minimum size, unless stretch is enabled.

Note: Changing a SubViewportContainer's Control.scale will cause its contents to appear distorted. To change its visual size without causing distortion, adjust the node's margins instead (if it's not already in a container).

Note: The SubViewportContainer forwards mouse-enter and mouse-exit notifications to its sub-viewports.




1 (overrides Control)









_propagate_input_event ( InputEvent event ) virtual const

Property Descriptions

bool stretch = false

  • void set_stretch ( bool value )

  • bool is_stretch_enabled ( )

If true, the sub-viewport will be automatically resized to the control's size.

Note: If true, this will prohibit changing SubViewport.size of its children manually.

int stretch_shrink = 1

  • void set_stretch_shrink ( int value )

  • int get_stretch_shrink ( )

Divides the sub-viewport's effective resolution by this value while preserving its scale. This can be used to speed up rendering.

For example, a 1280×720 sub-viewport with stretch_shrink set to 2 will be rendered at 640×360 while occupying the same size in the container.

Note: stretch must be true for this property to work.

Method Descriptions

bool _propagate_input_event ( InputEvent event ) virtual const

Virtual method to be implemented by the user. If it returns true, the event is propagated to SubViewport children. Propagation doesn't happen if it returns false. If the function is not implemented, all events are propagated to SubViewports.