TextureProjectory¶
Projects textures outwards from the location of the Camera
This is a shader and can be applied to Canvas nodes.

TextureProjectory vs Beamer
Both project content, but serve different purposes:
| TextureProjectory | Beamer |
|---|---|
| Virtual projection — projects textures onto 3D surfaces within SPARCK | Physical projection — represents real-world projector output |
| Used for texture mapping, pre-visualization, baking | Used for actual projection mapping installations |
| Works with SceneCamera, BoxMapCamera | Requires calibration to physical projector |
| No physical output | Outputs to display/projector hardware |
TextureProjectory lets you virtually project textures onto a virtual canvas, then capture the result with a Beamer to project onto the physical world.
Reference¶
The following properties can be configured for this node:
TODO: Add images of projection types
| Property | Type | Description |
|---|---|---|
shader |
- | choose between the different projection types. |
project to |
- | |
projectionA-F |
- | select the Beamer, SceneCapture or BoxMapCapture |
3d viewer |
- | display mode of the model on which this shader is applied onto. |
project on |
- | Onto which face of the model this texture is projected: |
blend bg |
- | benables blending with the background |
use bgcolor |
- | use this color if no specific background texture is used |
bgcolor |
- | color if no projected texture reaches the surface |
angle mode |
- | angle differentiation: |
spread |
- | spread factor will increase the differentiation between overlapping projections (1 = full spread) |
distance |
- | use distance as an additional differentiator. It will show its influence when the spread is increased. (0 = no influence) |
angle limit |
- | angle limit, how much of the visible surface area is considered (0 = no limit) |
angle falloff |
- | size of falloff gradient at the angle limit |
bevel size |
- | bevel size. it creates a gradient falloff defined by the frustum cone of the camera |
bevel curve |
- | bevel gradient shape |
bevel rounded |
- | use rounded bevel |
interpolation |
- | interpolation correction. if strange artefacts start to appear, raise the value until the artefacts disappear. the artefacts are a result of interpolation errors between the vertex and fragment shader and occur close to the local x-y plane of the camera. increasing the subdivisions of the model can help, too |
| Inlet | Type | Description |
|---|---|---|
| properties | properties | properties | use message [set <propertyPath> <value(s)>] (without node/<nodeName> at the beginning) to set internal properties |
| boxmap | boxmap | boxmap (list) |
| camera | texture | camera A - texture one (mono, if stereo -> left texture) |
| camera | texture | camera A - texture two (if stereo -> right texture) |
| camera | texture | camera B - texture one (mono, if stereo -> left texture) |
| camera | texture | camera B - texture two (if stereo -> right texture) |
| camera | texture | camera C - texture one (mono, if stereo -> left texture) |
| camera | texture | camera C - texture two (if stereo -> right texture) |
| camera | texture | camera D - texture one (mono, if stereo -> left texture) |
| camera | texture | camera D - texture two (if stereo -> right texture) |
| camera | texture | camera E - texture one (mono, if stereo -> left texture) |
| camera | texture | camera E - texture two (if stereo -> right texture) |
| camera | texture | camera F - texture one (mono, if stereo -> left texture) |
| camera | texture | camera F - texture two (if stereo -> right texture) |
| Background | texture | Background texture |
| Outlet | Type | Description |
|---|---|---|
Shader Modes¶
Choosing the Right Shader Mode
TextureProjectory offers five shader modes for different projection scenarios:
| Mode | Description | Camera Type |
|---|---|---|
| single | Project one texture from one camera | SceneCamera / LookAtCamera |
| multiblend | Blend multiple textures from multiple cameras | SceneCamera / LookAtCamera |
| 360VR.single | Project equirectangular (360°) texture | BoxMapCamera required |
| 360VR.multiblend | Blend equirectangular with standard textures | BoxMapCamera required |
| boxmap | Project BoxMap textures (6-face cubemap) | BoxMapCamera required |
For 360° content from external engines (Unreal, Unity, TouchDesigner), use 360VR.single mode with equirectangular content received via Spout/Syphon.
Debugging Visualization¶
3D Viewer Display Modes
Use the 3d viewer property to debug and visualize your projection setup:
- Textured: Shows the actual projected texture(s) — use for final output
- Colored: Shows each projection source in a unique color — useful for identifying coverage
- Overlap: Visualizes where projections overlap — helps optimize blending
- Map: Shows the differentiation between projections
- BeamX: Shows individual projection X only — isolate specific sources
Common Workflows¶
Single Texture Projection
For projecting a single texture onto a 3D surface:
- Create a SceneCamera or LookAtCamera positioned as your virtual projector
- Add a SceneCapture linked to the camera
- Apply TextureProjectory shader to your Canvas
- Set shader mode to single
- Set
projectionAto your SceneCapture - Connect your texture to the camera A inlet
360° BoxMap Projection
For seamless 360° content from external render engines:
- Create a BoxMapCamera at your desired viewpoint
- Add a BoxMapCapture linked to the camera
- Receive 360° content via SpoutReceiver or SyphonReceiver
- Apply TextureProjectory shader to your Canvas
- Set shader mode to boxmap
- Connect the BoxMapCapture's boxmap outlet to the boxmap inlet
Troubleshooting¶
Interpolation Artifacts
If strange visual artifacts appear (especially near the camera's local X-Y plane):
- Increase the
interpolationvalue until artifacts disappear - Alternatively, increase the subdivisions of your target model
These artifacts result from interpolation errors between vertex and fragment shaders.
IMPORTANT: Projection Selection
This shader is usually applied to a Canvas which in turn is rendered (or captured) by a capture node (be it a Beamer, SceneCapture or BoxMapCapture). It is of utmost importance that the 'projection' selection points to the capture node that renders the canvas this shader is applied to, otherwise this shader will not work as intended.
-
Quick Start
Get started with TextureProjectory in minutes
-
Complementing TextureProjectory
-
Tutorials
-
Community
Need help or want to suggest improvements?
Last updated: 2025-12-01 | Edit this page on GitHub