ViewPort¶
In its most basic mode it takes a texture and displays it in its designated slice of the connected Window.
More advanced usage includes the use of custom meshes or the result of a MeshWarp node (also a mesh) and/or using a second texture and applying a shader

Final Render Stage
ViewPort is the last renderpass before content is sent to output devices like projectors, displays, or VR goggles. Since reducing render passes is important for performance, ViewPort combines multiple corrections in a single pass — including warping, color correction, and shader effects.
Reference¶
The following properties can be configured for this node:
| Property | Type | Description |
|---|---|---|
window |
- | select the Window-node |
slice |
- | select the slice inside the Window for output |
mesh |
- | choose the type of mesh. |
fx shader |
- | choose a shader to be applied to the viewport mesh |
transform |
- | the way the mesh is displayed inside the ViewPort's slice |
position |
- | move the mesh in x and y axis |
rotation |
- | rotate the mesh in z axis |
scale |
- | scale the mesh in x and y axis |
blend |
- | use the textures alphachannel for blending |
depth |
- | use depth layering |
show mesh |
- | show only the face-lines |
object color |
only available with 'show mesh' | choose the meshes color |
filewatch |
- | if using a loaded custom mesh, load the mesh once the file was changed. |
Reset |
- | Resets the node to ist default state |
| Inlet | Type | Description |
|---|---|---|
| properties | properties | properties | use message [set <propertyPath> <value(s)>] (without node/<nodeName> at the beginning) to set internal properties |
| main | texture | main texture |
| texture | texture | texture two |
| Outlet | Type | Description |
|---|---|---|
Window and Slice Configuration¶
Basic Setup
To display content through a ViewPort:
- Create a Window node and configure its columns and rows
- Create a ViewPort node for each output slice
- Set the
windowproperty to reference the Window node - Set the
sliceproperty to the appropriate column and row (e.g., column_1, row_1) - Connect a texture source (typically from a Beamer) to the main inlet
Mesh Types¶
Choosing the Right Mesh Mode
The mesh property determines how the texture is mapped to the output:
| Mode | Description | Use Case |
|---|---|---|
| default | Simple rectangular mesh | Basic output without geometric correction |
| warp | Links to a MeshWarp node | Complex surface warping with lattice control |
| file | Loads custom OBJ mesh | Pre-created warp meshes |
| none | No mesh rendered | Use with CornerPin for simple 4-corner mapping |
For projecting onto non-flat surfaces, use warp or file mode with a mesh that matches your projection surface geometry.
Combining with Mapping Tools¶
CornerPin Workflow
For simple 4-corner projection mapping:
- Set ViewPort
meshto none - Create a CornerPin node
- Set CornerPin's
viewportto reference this ViewPort - Use CornerPin's
edit...button to adjust corners visually
This is ideal for projecting onto rectangular surfaces that just need corner adjustment.
MeshWarp Workflow
For complex surface warping:
- Create a MeshWarp node
- Load or create a warp mesh
- Use MeshWarp's lattice editor to adjust control points
- In ViewPort, set
meshto warp and link to the MeshWarp node
This is ideal for curved surfaces, irregular shapes, or multi-projector edge blending.
Shader Effects¶
Post-Processing with FX Shaders
The fx shader property allows applying shader effects to the viewport output:
- Color correction
- Gamma adjustment
- Soft-edge blending
- Custom GLSL effects
Since ViewPort is the final render stage, these effects are applied after all other processing, making it ideal for final color grading and output correction.
Important Notes¶
Mesh Format
When using custom mesh files:
- Use Wavefront OBJ format only
- Place files in
~/_assets/_warps/or~/_assets/_models/_warps/ - Using
mesh: noneonly makes sense when working with CornerPin nodes
File Locations
-
Quick Start
Get started with ViewPort in minutes
-
Complementing ViewPort
-
Tutorials
-
Community
Need help or want to suggest improvements?
Last updated: 2025-12-01 | Edit this page on GitHub