• Home
  • Knowledge Base
    • Licensing New (VIOSO 6, EXAPLAY)
    • Operation
    • Quality Improvement
    • References
    • Licensing Old (Anyblend, Player)
  • Documentation
    • VIOSO 6
    • VIOSO 6 Integration
    • EXAPLAY
    • VIOSO Core 5
    • VIOSO Anyblend 5
    • VIOSO Anyblend VR&SIM 5
    • VIOSO Integrate 5
    • VIOSO Player 2
  • FAQ
    • Error and other feedback
    • Licensing
    • System & Requirements
  • Videos
  • Home
  • Knowledge Base
    • Licensing New (VIOSO 6, EXAPLAY)
    • Operation
    • Quality Improvement
    • References
    • Licensing Old (Anyblend, Player)
  • Documentation
    • VIOSO 6
    • VIOSO 6 Integration
    • EXAPLAY
    • VIOSO Core 5
    • VIOSO Anyblend 5
    • VIOSO Anyblend VR&SIM 5
    • VIOSO Integrate 5
    • VIOSO Player 2
  • FAQ
    • Error and other feedback
    • Licensing
    • System & Requirements
  • Videos

VIOSO Integrate 5

home/Documentation/VIOSO Integrate 5
Expand All Collapse All
  • VIOSO Integrate Overview
  • VIOSO Integrate VS Integrate Plus
  • Media Playback Solutions
    • AV Stumpfl Pixera
      • Running Pixera Autocal standalone
      • UV-Mapping and 3D calibration
      • Multi-client setups
    • Vertex VIOSO & IOVERSAL Vertex
      • AutoCal Single Camera: Getting started
      • Modifying, Optimizing and Recalibration
      • Using Autocal Standalone
  • Dome- and Planetarium Solutions
  • 3D Engines
    • Unity Plugin
    • Unreal Engine Integration
      • Examples: UE4.24-.26
      • Examples: UE4.27 & UE5
    • MiddleVR Integration
  • Simulators
    • SILAB
    • Quantum 3D: Mantis
    • AVSimulation: SCANeR Studio
    • rFpro
    • Prepar3D
    • X-Plane 11
  • Projector Integration
  • VIOSO WarpBlend API
    • API usage on Windows
    • API usage on Linux
    • Implementation Remarks
    • VIOSOWarpBlend.ini Reference
    • API Examples
      • Example 1 - Simulator with moving platform
      • Example 2 - Another simulator with moving platform
      • Example 3 – Cave
      • Example 4 – Video player

Implementation Remarks

283 views 0

Emanuel
October 6, 2020

The warper uses a pixel shader to deform the input to the currently set render target.

By using the same view and projection matrices as the rendering process, we can map provided image using the 3D-coordinates of the actual screen for every projector pixel.

The sequence is always the same:

Set up your 3D environment. For each window call

VWB_Create( )

Providing a DirectXDevice or for DX12 a ID3D12CommandQueue. In case of OpenGL, set this to NULL but make sure the window’s context is current and in same thread.

In case you provided a path to some .ini-file, it is loaded and the warper’s attributes are set accordingly. You might now change the warper’s attributes or rely on .ini solely. Then call

VWB_init()

This will load all mappings to the GPU and computes life-time transformations and compiles the shader code.

Your render loop you call

VWB_getViewProj() or VWB_getViewClip()

To obtain the frustum to render your scene with.

In case you do only 2D rendering (wallpaper) make sure, you use a 2D mapping, then you can skip the above step.

After rendering is finished, and the image output is ready in a texture or the current backbuffer, set the backbuffer as render target (in D3D12, you provide it’s GPU-handle) then call

VWB_render()

to warp scene to screen. There is no multi-threading inside VIOSOWarpBlend module, make sure to use same thread or make your GL-context current before calling VWB_render.

 

This API can use all mappings. In case you export 3D, you can specify view parameter.

dir=[pitch, yaw, roll]
fov=[left,top,right,bottom]   ;all positive, so 90°x85° would be [45,42.5,45,42.5]
screen=distanceToViewPlane

OR set

bAutoView=1

to let the API calculate these values.

These values

near=minimumDistanceToRender
far=maximmDistanceToRender

need to be set to some sane value. It is not used for calculating the warped output. It makes sense to overwrite this with your values after the warper was created.

The eye point correction algorithm works implicitly. Imagine a rectangular “window” placed virtually near next to the screen. It must be situated the way that from every possible (dynamic) eye point the whole projection area of the regarded projector is seen through that window.

Was this helpful?

Yes  No
Related Articles
  • Examples: UE4.24-.26
  • SILAB
  • Quantum 3D: Mantis
  • VIOSO Integrate Overview
  • Examples: UE4.27 & UE5
  • AVSimulation: SCANeR Studio

Didn't find your answer? Contact Us

Previous
API usage on Linux
Next
VIOSOWarpBlend.ini Reference
  • Ticket System
  • VIOSO Home
  • Imprint
  • Forum
  • © 2020-now VIOSO GmbH. All Rights Reserved.

We use cookies on our website to give you the most relevant experience by remembering your preferences and repeat visits. By clicking “Accept”, you consent to the use of ALL the cookies.
Do not sell my personal information.
Cookie settingsACCEPT
Manage consent

Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary
Always Enabled
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Non-necessary
Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.
SAVE & ACCEPT