Skip to main content

Class: TiledRenderingEngine

A RenderingEngine takes care of the full pipeline of creating viewports and rendering them on a large offscreen canvas and transmitting this data back to the screen. This allows us to leverage the power of vtk.js whilst only using one WebGL context for the processing, and allowing us to share texture memory across on-screen viewports that show the same data.

Instantiating a rendering engine:

const renderingEngine = new RenderingEngine('pet-ct-rendering-engine');

There are various ways you can trigger a render on viewports. The simplest is to call render() on the rendering engine; however, it will trigger a render on all viewports. A more efficient way to do this is to call renderViewports([viewportId]) on the rendering engine to trigger a render on a specific viewport(s). Each viewport also has a .render method which can be used to trigger a render on that viewport.

RenderingEngine checks for WebGL context availability to determine if GPU rendering is possible. If a WebGL context is not available, RenderingEngine will fall back to CPU rendering for StackViewports. However, for volume rendering, GPU availability is required, and an error will be thrown if attempted without GPU support.

By default, RenderingEngine will use the vtk.js-enabled pipeline for rendering viewports. However, if a custom rendering pipeline is specified by a custom viewport, it will be used instead. We use this custom pipeline to render a StackViewport on CPU using the Cornerstone legacy CPU rendering pipeline.

Extends​

Constructors​

new TiledRenderingEngine()​

new TiledRenderingEngine(id?): TiledRenderingEngine

Parameters​

• id?: string

Returns​

TiledRenderingEngine

Overrides​

BaseRenderingEngine.constructor

Defined in​

packages/core/src/RenderingEngine/TiledRenderingEngine.ts:64

Properties​

_animationFrameHandle​

protected _animationFrameHandle: number = null

Inherited from​

BaseRenderingEngine._animationFrameHandle

Defined in​

packages/core/src/RenderingEngine/BaseRenderingEngine.ts:52


_animationFrameSet​

protected _animationFrameSet: boolean = false

Inherited from​

BaseRenderingEngine._animationFrameSet

Defined in​

packages/core/src/RenderingEngine/BaseRenderingEngine.ts:51


_needsRender​

protected _needsRender: Set<string>

Inherited from​

BaseRenderingEngine._needsRender

Defined in​

packages/core/src/RenderingEngine/BaseRenderingEngine.ts:50


_viewports​

protected _viewports: Map<string, Viewport>

Inherited from​

BaseRenderingEngine._viewports

Defined in​

packages/core/src/RenderingEngine/BaseRenderingEngine.ts:49


hasBeenDestroyed​

hasBeenDestroyed: boolean

A flag which tells if the renderingEngine has been destroyed or not

Inherited from​

BaseRenderingEngine.hasBeenDestroyed

Defined in​

packages/core/src/RenderingEngine/BaseRenderingEngine.ts:45


id​

readonly id: string

Unique identifier for renderingEngine

Inherited from​

BaseRenderingEngine.id

Defined in​

packages/core/src/RenderingEngine/BaseRenderingEngine.ts:43


offScreenCanvasContainer​

offScreenCanvasContainer: HTMLDivElement

Inherited from​

BaseRenderingEngine.offScreenCanvasContainer

Defined in​

packages/core/src/RenderingEngine/BaseRenderingEngine.ts:48


offscreenMultiRenderWindow​

offscreenMultiRenderWindow: VtkOffscreenMultiRenderWindow

Inherited from​

BaseRenderingEngine.offscreenMultiRenderWindow

Defined in​

packages/core/src/RenderingEngine/BaseRenderingEngine.ts:47


useCPURendering​

protected useCPURendering: boolean

Inherited from​

BaseRenderingEngine.useCPURendering

Defined in​

packages/core/src/RenderingEngine/BaseRenderingEngine.ts:53

Methods​

_getViewportsAsArray()​

protected _getViewportsAsArray(): Viewport[]

Returns​

Viewport[]

Array of viewports.

Method​

_getViewportsAsArray Returns an array of all viewports

Inherited from​

BaseRenderingEngine._getViewportsAsArray

Defined in​

packages/core/src/RenderingEngine/BaseRenderingEngine.ts:689


_renderFlaggedViewports()​

protected _renderFlaggedViewports(): void

Renders all viewports.

Returns​

void

Overrides​

BaseRenderingEngine._renderFlaggedViewports

Defined in​

packages/core/src/RenderingEngine/TiledRenderingEngine.ts:347


_renderViewportFromVtkCanvasToOnscreenCanvas()​

protected _renderViewportFromVtkCanvasToOnscreenCanvas(viewport, offScreenCanvas): ImageRenderedEventDetail

Renders a particular Viewport's on screen canvas.

Parameters​

• viewport: Viewport

The Viewport to render.

• offScreenCanvas: HTMLCanvasElement

The offscreen canvas to render from.

Returns​

ImageRenderedEventDetail

Overrides​

BaseRenderingEngine._renderViewportFromVtkCanvasToOnscreenCanvas

Defined in​

packages/core/src/RenderingEngine/TiledRenderingEngine.ts:473


_resizeVTKViewports()​

protected _resizeVTKViewports(vtkDrivenViewports, keepCamera, immediate): void

Resizes viewports that use VTK.js for rendering.

Parameters​

• vtkDrivenViewports: (IStackViewport | VolumeViewport)[]

• keepCamera: boolean = true

• immediate: boolean = true

Returns​

void

Overrides​

BaseRenderingEngine._resizeVTKViewports

Defined in​

packages/core/src/RenderingEngine/TiledRenderingEngine.ts:281


_throwIfDestroyed()​

protected _throwIfDestroyed(): void

Throws an error if trying to interact with the RenderingEngine instance after its destroy method has been called.

Returns​

void

Inherited from​

BaseRenderingEngine._throwIfDestroyed

Defined in​

packages/core/src/RenderingEngine/BaseRenderingEngine.ts:777


addVtkjsDrivenViewport()​

protected addVtkjsDrivenViewport(viewportInputEntry, offscreenCanvasProperties?): void

Adds a viewport driven by vtk.js to the RenderingEngine.

Parameters​

• viewportInputEntry: InternalViewportInput

Information object used to construct and enable the viewport.

• offscreenCanvasProperties?

• offscreenCanvasProperties.offScreenCanvasHeight?: number

• offscreenCanvasProperties.offScreenCanvasWidth?: number

• offscreenCanvasProperties.xOffset?: number

Returns​

void

Overrides​

BaseRenderingEngine.addVtkjsDrivenViewport

Defined in​

packages/core/src/RenderingEngine/TiledRenderingEngine.ts:126


destroy()​

destroy(): void

destroy the rendering engine. It will remove all the viewports and, if the rendering engine is using the GPU, it will also destroy the GPU resources.

Returns​

void

Inherited from​

BaseRenderingEngine.destroy

Defined in​

packages/core/src/RenderingEngine/BaseRenderingEngine.ts:444


disableElement()​

disableElement(viewportId): void

Disables the requested viewportId from the rendering engine:

  1. It removes the viewport from the the list of viewports
  2. remove the renderer from the offScreen render window if using vtk.js driven rendering pipeline
  3. resetting the viewport to remove the canvas attributes and canvas data
  4. resize the offScreen appropriately (if using vtk.js driven rendering pipeline)

fires Events.ELEMENT_ENABLED

Parameters​

• viewportId: string

viewport Id

Returns​

void

Inherited from​

BaseRenderingEngine.disableElement

Defined in​

packages/core/src/RenderingEngine/BaseRenderingEngine.ts:163


enableElement()​

enableElement(viewportInputEntry): void

Enables the requested viewport and add it to the viewports. It will properly create the Stack viewport or Volume viewport:

  1. Checks if the viewport is defined already, if yes, remove it first
  2. Checks if the viewport is using a custom rendering pipeline, if no, it calculates a new offscreen canvas with the new requested viewport
  3. Adds the viewport
renderingEngine.enableElement({
viewportId: viewportId,
type: ViewportType.ORTHOGRAPHIC,
element,
defaultOptions: {
orientation: Enums.OrientationAxis.AXIAL,
background: [1, 0, 1],
},
})

fires Events.ELEMENT_ENABLED

Parameters​

• viewportInputEntry: PublicViewportInput

viewport specifications

Returns​

void

Inherited from​

BaseRenderingEngine.enableElement

Defined in​

packages/core/src/RenderingEngine/BaseRenderingEngine.ts:106


enableVTKjsDrivenViewport()​

protected enableVTKjsDrivenViewport(viewportInputEntry): void

Enables a viewport to be driven by the offscreen vtk.js rendering engine.

Parameters​

• viewportInputEntry: NormalizedViewportInput

Information object used to construct and enable the viewport.

Returns​

void

Overrides​

BaseRenderingEngine.enableVTKjsDrivenViewport

Defined in​

packages/core/src/RenderingEngine/TiledRenderingEngine.ts:82


fillCanvasWithBackgroundColor()​

fillCanvasWithBackgroundColor(canvas, backgroundColor): void

Fill the canvas with the background color

Parameters​

• canvas: HTMLCanvasElement

The canvas element to draw on.

• backgroundColor: [number, number, number]

An array of three numbers between 0 and 1 that specify the red, green, and blue values of the background color.

Returns​

void

Inherited from​

BaseRenderingEngine.fillCanvasWithBackgroundColor

Defined in​

packages/core/src/RenderingEngine/BaseRenderingEngine.ts:481


getOffscreenMultiRenderWindow()​

getOffscreenMultiRenderWindow(viewportId?): VtkOffscreenMultiRenderWindow

Returns the offscreen multi-render window used for rendering.

Parameters​

• viewportId?: string

Returns​

VtkOffscreenMultiRenderWindow

Inherited from​

BaseRenderingEngine.getOffscreenMultiRenderWindow

Defined in​

packages/core/src/RenderingEngine/BaseRenderingEngine.ts:660


getRenderer()​

getRenderer(viewportId): vtkRenderer

Returns the renderer for a given viewportId.

Parameters​

• viewportId: any

The Id of the viewport.

Returns​

vtkRenderer

The renderer for the viewport.

Inherited from​

BaseRenderingEngine.getRenderer

Defined in​

packages/core/src/RenderingEngine/BaseRenderingEngine.ts:653


getStackViewport()​

getStackViewport(viewportId): IStackViewport

Retrieves a stack viewport by its ID. used just for type safety

Parameters​

• viewportId: string

The ID of the viewport to retrieve.

Returns​

IStackViewport

The stack viewport with the specified ID.

Throws​

Error if the viewport with the given ID does not exist or is not a StackViewport.

Inherited from​

BaseRenderingEngine.getStackViewport

Defined in​

packages/core/src/RenderingEngine/BaseRenderingEngine.ts:346


getStackViewports()​

getStackViewports(): IStackViewport[]

Filters all the available viewports and return the stack viewports

Returns​

IStackViewport[]

stack viewports registered on the rendering Engine

Inherited from​

BaseRenderingEngine.getStackViewports

Defined in​

packages/core/src/RenderingEngine/BaseRenderingEngine.ts:366


getViewport()​

getViewport(viewportId): Viewport

Returns the viewport by Id

Parameters​

• viewportId: string

Returns​

Viewport

viewport

Inherited from​

BaseRenderingEngine.getViewport

Defined in​

packages/core/src/RenderingEngine/BaseRenderingEngine.ts:324


getViewports()​

getViewports(): Viewport[]

getViewports Returns an array of all Viewports on the RenderingEngine instance.

Returns​

Viewport[]

Array of viewports

Inherited from​

BaseRenderingEngine.getViewports

Defined in​

packages/core/src/RenderingEngine/BaseRenderingEngine.ts:333


getVolumeViewports()​

getVolumeViewports(): VolumeViewport[]

Return all the viewports that are volume viewports

Returns​

VolumeViewport[]

An array of VolumeViewport objects.

Inherited from​

BaseRenderingEngine.getVolumeViewports

Defined in​

packages/core/src/RenderingEngine/BaseRenderingEngine.ts:379


render()​

render(): void

Renders all viewports on the next animation frame.

fires Events.IMAGE_RENDERED

Returns​

void

Inherited from​

BaseRenderingEngine.render

Defined in​

packages/core/src/RenderingEngine/BaseRenderingEngine.ts:398


renderFrameOfReference()​

renderFrameOfReference(FrameOfReferenceUID): void

Renders any viewports viewing the given Frame Of Reference.

Parameters​

• FrameOfReferenceUID: string

The unique identifier of the Frame Of Reference.

Returns​

void

Inherited from​

BaseRenderingEngine.renderFrameOfReference

Defined in​

packages/core/src/RenderingEngine/BaseRenderingEngine.ts:411


renderViewport()​

renderViewport(viewportId): void

Renders only a specific Viewport on the next animation frame.

Parameters​

• viewportId: string

The Id of the viewport.

Returns​

void

Inherited from​

BaseRenderingEngine.renderViewport

Defined in​

packages/core/src/RenderingEngine/BaseRenderingEngine.ts:435


renderViewports()​

renderViewports(viewportIds): void

Renders the provided Viewport IDs.

Parameters​

• viewportIds: string[]

Returns​

void

Inherited from​

BaseRenderingEngine.renderViewports

Defined in​

packages/core/src/RenderingEngine/BaseRenderingEngine.ts:426


renderViewportUsingCustomOrVtkPipeline()​

protected renderViewportUsingCustomOrVtkPipeline(viewport): ImageRenderedEventDetail

Renders the given viewport using its proffered method.

Parameters​

• viewport: Viewport

The viewport to render

Returns​

ImageRenderedEventDetail

Defined in​

packages/core/src/RenderingEngine/TiledRenderingEngine.ts:429


resize()​

resize(immediate, keepCamera): void

Resizes the offscreen viewport and recalculates translations to on screen canvases. It is up to the parent app to call the resize of the on-screen canvas changes. This is left as an app level concern as one might want to debounce the changes, or the like.

Parameters​

• immediate: boolean = true

Whether all of the viewports should be rendered immediately.

• keepCamera: boolean = true

Whether to keep the camera for other viewports while resizing the offscreen canvas

Returns​

void

Inherited from​

BaseRenderingEngine.resize

Defined in​

packages/core/src/RenderingEngine/BaseRenderingEngine.ts:290


setViewports()​

setViewports(publicViewportInputEntries): void

It takes an array of viewport input objects including element, viewportId, type and defaultOptions. It will add the viewport to the rendering engine and enables them.

renderingEngine.setViewports([
{
viewportId: axialViewportId,
type: ViewportType.ORTHOGRAPHIC,
element: document.getElementById('axialDiv'),
defaultOptions: {
orientation: Enums.OrientationAxis.AXIAL,
},
},
{
viewportId: sagittalViewportId,
type: ViewportType.ORTHOGRAPHIC,
element: document.getElementById('sagittalDiv'),
defaultOptions: {
orientation: Enums.OrientationAxis.SAGITTAL,
},
},
{
viewportId: customOrientationViewportId,
type: ViewportType.ORTHOGRAPHIC,
element: document.getElementById('customOrientationDiv'),
defaultOptions: {
orientation: { viewPlaneNormal: [0, 0, 1], viewUp: [0, 1, 0] },
},
},
])

fires Events.ELEMENT_ENABLED

Parameters​

• publicViewportInputEntries: PublicViewportInput[]

Returns​

void

Inherited from​

BaseRenderingEngine.setViewports

Defined in​

packages/core/src/RenderingEngine/BaseRenderingEngine.ts:247


setVtkjsDrivenViewports()​

protected setVtkjsDrivenViewports(viewportInputEntries): void

Sets multiple vtk.js driven viewports to the RenderingEngine.

Parameters​

• viewportInputEntries: NormalizedViewportInput[]

An array of information objects used to construct and enable the viewports.

Returns​

void

Overrides​

BaseRenderingEngine.setVtkjsDrivenViewports

Defined in​

packages/core/src/RenderingEngine/TiledRenderingEngine.ts:225