Skip to content

Class: Viewport ​

Experimental

A scissored region of the canvas with its own scene and camera. Create via the render root.

Constructors ​

Constructor ​

ts
new Viewport(host, options?): Viewport;

Experimental

Parameters ​

ParameterType
hostViewportHost
optionsViewportOptions

Returns ​

Viewport

Properties ​

PropertyModifierTypeDefault valueDescription
backgroundpublicRGBA | nullundefinedExperimental
clearDepthpublicbooleanundefinedExperimental
fitreadonlybooleanundefinedExperimental
idreadonlynumberundefinedExperimental
kindreadonlyViewportKindundefinedExperimental
namereadonlystringundefinedExperimental
onOrderChangepublic(() => void) | nullnullExperimental Set by the root so it can re-sort when order changes.
projectorpublic| ViewportProjector | null | undefinedundefinedExperimental 2D only: the 2.5D view drawing this viewport (see ViewportProjector), if any.
scenereadonlyScene<Object3DEventMap>undefinedExperimental
sizereadonlyViewportSizeundefinedExperimental Size handed to primitives (render-area size in CSS px + DPR). Mutated in place.
visiblepublicbooleantrueExperimental Draw only when true.

Accessors ​

camera ​

Get Signature ​

ts
get camera(): OrthographicCamera | PerspectiveCamera;

Experimental

The camera: orthographic for 2D; perspective or orthographic for 3D (see setProjection).

Returns ​

OrthographicCamera | PerspectiveCamera


clip ​

Get Signature ​

ts
get clip(): boolean | Readonly<ViewportRect>;

Experimental

Returns ​

boolean | Readonly<ViewportRect>


disposed ​

Get Signature ​

ts
get disposed(): boolean;

Experimental

Returns ​

boolean


order ​

Get Signature ​

ts
get order(): number;

Experimental

Returns ​

number

Set Signature ​

ts
set order(value): void;

Experimental

Parameters ​
ParameterType
valuenumber
Returns ​

void


primitives ​

Get Signature ​

ts
get primitives(): ReadonlySet<Primitive<unknown>>;

Experimental

Registered primitives (read-only view).

Returns ​

ReadonlySet<Primitive<unknown>>


rect ​

Get Signature ​

ts
get rect(): Readonly<ViewportRect>;

Experimental

Rect in CSS px, top-left origin of the container. Treat as read-only; use setRect.

Returns ​

Readonly<ViewportRect>


renderArea ​

Get Signature ​

ts
get renderArea(): Readonly<ViewportRect>;

Experimental

Rect GL renders into (top-left origin).

Returns ​

Readonly<ViewportRect>


scissor ​

Get Signature ​

ts
get scissor(): Readonly<ViewportRect> | null;

Experimental

Scissor rect (top-left origin), or null when unclipped.

Returns ​

Readonly<ViewportRect> | null

Methods ​

add() ​

ts
add<T>(primitive): Primitive<T>;

Experimental

Add a primitive: its object joins the scene and its viewport uniforms are kept in sync.

Type Parameters ​

Type Parameter
T

Parameters ​

ParameterType
primitivePrimitive<T>

Returns ​

Primitive<T>


contains() ​

ts
contains(px, py): boolean;

Experimental

Whether a container-space point lies inside the rect.

Parameters ​

ParameterType
pxnumber
pynumber

Returns ​

boolean


dispose() ​

ts
dispose(): void;

Experimental

Dispose registered primitives, then any geometry/material still attached to the scene (objects added directly via scene access). Textures are owned by the resource manager or by the caller.

Returns ​

void


layout() ​

ts
layout(): void;

Experimental

Recompute render area, scissor, camera, and primitive viewport uniforms. Called by the root on canvas resize / DPR change and by setRect.

Returns ​

void


remove() ​

ts
remove<T>(primitive, options?): void;

Experimental

Remove a primitive from this viewport, optionally disposing it.

Type Parameters ​

Type Parameter
T

Parameters ​

ParameterType
primitivePrimitive<T>
options{ dispose?: boolean; }
options.dispose?boolean

Returns ​

void


setClip() ​

ts
setClip(clip): void;

Experimental

Parameters ​

ParameterType
clipboolean | ViewportRect

Returns ​

void


setOrthoHalfHeight() ​

ts
setOrthoHalfHeight(halfHeight): void;

Experimental

Set the orthographic half-height of a 3D orthographic viewport (zoom).

Parameters ​

ParameterType
halfHeightnumber

Returns ​

void


setProjection() ​

ts
setProjection(projection): void;

Experimental

3D only: switch between a perspective and an orthographic camera (M6: a scene's camera.projection.type). The camera object is replaced; its pose (position, orientation, up) carries over. No-op for 2D viewports or when the projection is unchanged.

Parameters ​

ParameterType
projection"perspective" | "orthographic"

Returns ​

void


setRect() ​

ts
setRect(rect): void;

Experimental

Parameters ​

ParameterType
rectReadonly<ViewportRect>

Returns ​

void


toWorld() ​

ts
toWorld(
   px,
   py,
   out?
): object;

Experimental

Convert container CSS px (top-left origin, e.g. from a pointer event) to 2D world coordinates (bottom-left origin of this viewport's rect).

Parameters ​

ParameterType
pxnumber
pynumber
out{ x: number; y: number; }
out.xnumber
out.ynumber

Returns ​

object

NameType
xnumber
ynumber

Released under the MIT License.