VIOSO NV Warp Tool
version 1.1.0 (c) VIOSO GmbH 2025

Workflow
========
Use VIOSONVWarp together with Nvidia configureMosaic.
1. Make a scan of a Mosaic display without Mosaic set. This assures, all warp sets have individual display ID set.
   It also works to have a whole Mosaic with zero overlap scanned, but the system stress of setting the overlap seems to be higher than building a Mosaic display with overlap set.
   It helps to have a test image indicating the corners of a CAVE or Power-Wall. Make sure these corners are aligned properly in preview.
2. Use configureMosaic to build your desktop. NOTE: it is possible to use individual overlaps per row or column.
   i.E. there is a Power-Wall using 8 1920x1200 Outputs: 1x2 landscape for the sides and 2x2 for the center. The sides got 1:1 ratio the center 16:10.
   The effective resolution would be 1920x1920 for the sides, leading to a vertical overlap of 480px. This must be set for the center as well, so we get
   1920 * 16 / 10 = 3072 leading to an overlap of 768.
   This leads to this configuration for configureMosaic
    configureMosaic set cols=4 rows=2 res=1920,1200,60 overlapcol=0 overlaprow=480 overlapcol=0,768,0
   NOTE: make sure to include all displays in the call. If there is a master monitor, put that first as 1x1 grid! Address the displays by adding out=G,O
   G(PU) and O(utput) are the smaller numbers in square brackets when identifying the screens in Nvidia control panel. The grid index is assigned by creation sequence. 
   You can also specify a gridPos=X,Y in desktop coordinates. Handle with care. The sequence must allow the position! Always create your main display
   first and work your way to the next budding grid.
   Easyest way is to set up everything as close as possible using Nvidia control panel. Then call
   configureMosaic listconfigcmd
   to get the command line of the current configuration and alter it. Make sure to adjust the gridPos of budding grids, in case you set a different overlap.
3. Call VIOSONVWarp -a vioso.vwf [options]
 options are
  --gamma g			a gamma value to be appiled to the blend map
  --loglevel l		0 only fatals, 1 standard, 2 verbous, 3 more verbous, 4 debug
  --roix x			the horizontel start of the region of interest relative to the Mosaic display in pixels
  --roiy y			the vertical start of the region of interest relative to the Mosaic display in pixels
  --roiw w			the horizontal width of the region of interest
  --roih h			the vertical height of the region of interest
  --gridw w			the number of gridpoints in mesh horizontally
  --gridh h			the number of gridpoints in mesh horizontally
  --flattengrid on  set if the mosaic grid config has changed, i.e. apply to a 4x1 but scanned as 2x2
  --assigngrid g    set the grid index to assign the mappings to
  --ignorepos on    set to ignore the original scanned position for grid assignment. The displays are assigned by sequence of maps in vwf
  --sequence 1,3,0  set a custom sequence
  --verify off      ignore ancestry. This is helpful if the scan was made from network client, as there is no displayID or valid display handle and all maps would overwrite each other
  --warpClone on    apply same warp on clone, if used as passive stereo output
  or just drop a .vwf-file on the exe.
4. To switch off warp for scan, call
    VIOSONVWarp -c
  or just double click

have fun!

