News Examples Documentation Download Buy Forum Contact



XML Extensions


Third Party Software
for krpano

NOTE: This page is from an older version, see the latest version here.

Release Notes Version 1.20

krpano 1.20 (2019-09-02)

  • New version number 1.20, no 'pre-release' / 'pr' state anymore.
  • The previous krpano-license and the krpano-maps-plugin-license were merged into one new single license. Additionally the new license offers also new features. Upgrading is possible here. Old licenses still fully work, but only without the new features.
  • New support for Multi-Resolution spherical and cylindrical panos (with any field-of-view, 360-around or partial-panos). Optimized for image-quality and rendering-performance.
    Especially very suitable for very large panos (Gigapixel and up) to avoid the need to convert to cube and for partial-panos.
  • New support for Depthmaps for adding 3D-depth to panoramic images. Allows 3D-stereo-depth without the need for stereo-images, post-perspective changes / 3D-movements, 3D-transitions between panos. Easy to use tools for creating the depthmaps are also available.
  • Much improved VR-Support: 6DoF positional-tracking, VR-controllers, improved devices support, faster Cardboard rendering. All fully customizable.
  • Polygonal hotspots rendering via WebGL: stereo and VR-support, faster rendering.
  • Improved cross-browser / cross-device mouse-wheel and touch-pad support - get the same zoom-amount and zoom-speed on all systems.
  • HTTPS support for the krpano Testing Server.
  • Many device- and browser-support updates.
  • New and slightly updated and restructured web design.
  • The download packages include now also a full offline documentation.
  • Only 64-bit versions for Windows by default. Technically 32-bit versions would be still easily possible, but normally there should be no need for them anymore. But if there is a need, then on request it would be still possible to provide 32-bit versions.
  • On Mac OSX all applications are now also available as 64-bit version.
  • All Windows executables are now code-signed.

embedpano (docu)

  • Change: The mobilescale setting is 1.0 by default now.
  • Change: The WebGL stencil and depth settings are enabled by default now. They are requiered for correct depthmap- and polygonal-hotspot rendering support.
  • Change: The WebGL antialias setting is not-set/undefined by default now. In this case the viewer tries to automatically decides which setting would be the best for the best performance on the current system.
  • Change: Do the local-file-access tests on the given xml file (instead of on the html file) when there is one. When there is no xml file set at startup, check inside the viewer the first loaded xml file for local-file-access problems and report back to the embedding script.
  • Fix: When using localfallback=none skip the local-file-access test.

krpano Viewer

  • New: Support for multi-resolution spherical and cylindrical pano-images in HTML5 (requires WebGL support from the browser).
  • New: Dedicated flat-pano support (flat = rectilinear-projection pano-images). By using the new <flat> image declaration element. Supports any field-of-view coverage, also larger than 1.0. For single- and multi-resolution.
  • New: Short-xml-syntax for multi-resolution images (optional, enabled by default):
    • Just one multires attribute with all size information instead of several <level> elements.
    • Additionally also autodetect the image type also for multires panos, no need for setting the pano-type explicitly anymore.
  • New: Depthmap support:
  • New: 3D-Movement / 6DoF support:
  • New: Polygonal hotspots rendering via WebGL.
    • Allows stereo- and VR-support.
    • Allows zorder- or depth-sorting together with image hotspots.
    • Faster rendering performance.
    • New hotspot[].subdiv setting for performance control. Enabled allows distorted viewing projections, disabled provides faster startup (when using many large polygons).
  • New: iOS 13 support / Improved iOS support
  • New: Improved Android Chrome fullscreen mode support (depending on the actual Chrome version use the one or the other methods to get a real fullscreen view).
  • New: Improved cross-browser / cross-device mouse-wheel support - get the same zoom/scroll-amount and zoom-speed on all systems.
  • New: Support 2-finger gestures on touchpads (when the browser supports it).
  • New: Support dynamic changes of the image.hfov / vfov / voffset values in HTML5 (needs an updateobject() call for applying the updated values).
  • New: Multi-Frame multi-resolution support - use several frames and change the current frame by the image.frame setting. Only basic support at the moment, not optimized for preloading.
  • New: view.rx / ry settings for adding an additional viewing rotation. Can be used for a follow-mouse effect.
  • New: image.stereooffset setting for adjusting/aligning stereo images.
  • New: Improved debugging / logging:
    • Improved log console: faster, html-support, clearable, merge duplicates lines.
    • The tilde-key will be used now as log open/close key (instead of the 'O' key).
    • New debug/command input field in the log - activate by shift+tilde-key when the debugmode is enabled and the log is open. Can be used to show or change variables and to call actions.
    • New debugjsactions a and debugjsplugins settings to allow debugging Javascript actions and plugins in the browser (errors will be not captured by krpano).
    • New debugkeys setting for enabling/disabling the debugging-keys that are available when the log is opened.
    • The trace action support several tags for output control: [HTML] for output html code, [OW] for making the current line overwritable by the next trace, [CLEARLOG] for clearing the log, [MAXLINES=nn] for setting the maximum lines to keep in the log.
  • New: Provide several Inline Functions inside expressions.
    • They can make code easier and shorter to write.
    • Extendable by adding own Javascript functions to the new inlinefunctions object.
  • New: Support Data-Urls everywhere - with plain-text and base64 encoding.
  • New: Second inbetween Postprocessing shader step - allow postprocessing after the pano-rendering but before hotspot-rendering. E.g. for blurring only the pano in the background, but not the hotspots above. See krpano.webGL.ppShaderArray2 for more.
  • New: Several rendering performance improvements.
  • New: Faster viewer startup, compile the internal WebGL rendering shaders only on first use and cache already compiled shaders.
  • New: Improved pano loading state handing - never blend before having a full filled view.
  • New PRELOAD flag for loadpano/loadscene - load the full resolution of the next pano before blending to it.
  • New: Provide an .addevent attribute postfix and an addevent() function for adding additional/mulitple events. Can be used in styles to avoid conflicts when using the same events.
  • New: Type definitions for attributes in the xml.
  • New: Can merge styles: <style name="style2" ... style="style1" />
  • New: %VIEWER% and %ROOT% url-placeholders, same as %SWFPATH%.
  • New: Additional device detection:
  • New: The addlayer / addhotspot actions can use 'auto' as variable-name for an automatic-generated name.
    • Additionally the second parameter can be used to create a variable pointing to the new created layer or hotspot.
    • When called from Javascript the new created layer or hotspot object will be directly returned.
  • New: renderloop, stoprenderloop actions for running code every frame.
  • New: txtjoin action for joining several variables together as text, as direct opposite/reverse to the txtsplit action.
  • New: array.createItem / array.createarrayitem - support 'auto' for an automatic name.
  • New: array.insertItem / array.insertarrayitem - insert a new item at a given index.
  • New: Use '$' as prefix for variables in expressions to avoid any type-conversions.
  • New: uint (unsigned-integer) data-type support for def() and multi-set() actions.
  • New: spheretospace and spacetosphere actions for converting between spherical and 3D-positions.
  • New: scene[].autoload for automatically loading a scene on startup.
  • New: display.surfacesubdiv setting for adjusting rendering accuracy and performance.
  • New: layer[].hitx / hity - the 'hitting'-position on the layer when hovering or pressing it.
  • New: hotspot.hitx / hity / hitd - the 'hitting'-position on the hotspot when hovering or pressing it. With 3D-distance and VR-controller support.
  • New: hotspot[].oref - apply the ox/oy translation before or after the rx/ry/rz rotation.
  • New: hotspot[].prealign - apply image.prealign also to the hotspot.
  • New: hotspot[].rotationorder - define the order of the rx / ry / rz rotations.
  • New: hotspot[].torigin=view|world|image
  • New: hotspot[].point[].ath/atv is a getter/setter for tracking changes
  • New: Support hotspot[].depth also for polygonal hotspots.
  • New: hotspot[].borderzoom - for changing the border-line-width of polygonal-hotspots on zooming.
  • New: Support changing the bgcolor setting anytime (and not only on startup).
  • New: control.invert setting for inverting the control panning direction.
  • New: control.disablewheel setting for disabling the mouse-wheel support.
  • New: view.dir - the current viewing direction as 3D-vector.
  • New: display.hotspotworldscale setting for scaling all hotspots together.
  • New: linkeventscope() action for linking the current local scope to the scope used in the layer/hotspots events.
  • New: Support direct access to Javascript Array data structures.
  • New: jsget / jscall() - provide the 'caller' object inside the Javascript code.
  • New: asyncloop() support using Javascript functions as actions.
  • New: The getlooktodistance() can be directly called from Javascript when using null as result parameter.
  • New: krpano.customParsePath(path) - API for custom path parsing.
  • New: krpano.customParseTilePath(path) - API for custom tile-path parsing.
  • New: An optional name for shaders in the createPostProcessingShader.
  • New: krpano.spheretospace and krpano.spacetosphere functions for converting between spherical and 3D-positions.
  • New: Allow touch-position-tracking (mouse.x/y) also for out of area (e.g. parent=STAGE) elements.
  • New: Support the 'inverted' mouse-wheel scrolling on Mac OSX.
  • New: Render the demo logo by WebGL now, provides stereo/vr support.
  • New: Handle WebGL context loses - unload the viewer and show a fatal error message. Can be customized by using the onxmlerror event.
  • Change: The previously experimental view.tx / ty / tz settings are now fully supported and working everywhere, but their signs and order had changed (to use the same coordinate system everywhere).
  • Change: Remove the fixed 4096px maximum texture-size limitation for non-desktop devices. Now use the maximum texture-size reported by the browser. Larger single-images are automatically downscaled.
  • Change: Inside the jsget / jscall() Javascript code provide the full-access 'krpano interface' object instead of the limited 'js interface 'object.
  • Change: The moretweentypes plugin now integerated in the viewer.
  • Change: The contextmenu.item[].separator setting is now a string can be also 'below', 'above' or 'both' for better customizing.
  • Change: Don't set device.safari=true for the iOS Chrome browser, set instead.
  • Change: Blacklist the fullscreen-mode support for iOS12+ iPads. In the new iPad fullscreen-mode no swipe-down events are not possible.
  • Fix: Automatically disable WebGL antialias for Intel GPU when using HiDPI display for better performance.
  • Fix: Textfields - check the bgborder, bgshadow, txtshadow settings for valid data types.
  • Fix: hotspot.fillcolor=0, fillalpha=0, borderwidth=0, bordercolor=0, borderalpha=0 were not working as initial values.
  • Fix: Workaround for a Safari WebGL alpha-blending bug (the webpage background color is visible in alpha-blended elements).
  • Fix: When calling loadscene(0) the xml.scene variable hasn't been updated.
  • Fix: Updated touch-support for the latest Chrome, Edge and Firefox browser versions.
  • Fix: Avoid Firefox warnings when drawing pano wireframes.
  • Fix: Use display.autofullscreen only for full-page-websites.
  • Fix: Workaround for the display.autofullscreen fullscreen-exit bug where the browser leaves a black bar at the bottom.
  • Fix: When the preview-image gets loaded slower than the pano-image itself, it can wrongly overwrite the pano size information and wrongly limit the zoom this way.
  • Fix: Suppport touch control in Firefox mobile simulator.
  • Fix: Capture exit fullscreen promise errors.
  • Fix: Don't capture mousedown events in VR-Cursor control mode.
  • Fix: Add a workaround for the new iPhone 12.2 landscape-to-portrait rotation bug where the page would be wrongly scrolled after rotation.
  • Fix: A wrong scope in the onloaded event can happen when doing an updatepos() call in a scoped action.
  • Fix: Improved unloading - better free all WebGL resources.
  • Fix: Add several workarounds for Safari WebGL textfields bugs.
  • Fix: Ensure that the onnewpano event will be before onloadcomplete event.
  • Fix: area.mode=border wasn't working together with the iOS safe-area mode.
  • Fix: Ignore the iOS safe-area in makeScreenshot() calls when using a custom size.
  • Fix: Automatically disable the iOS safe-area support inside iframes.
  • Fix: Polygonal SVG hotspot were clipped inside the iOS safe-area.
  • Fix: The textfield autosizing wasn't working in Chrome when the viewer html element was hidden (display=none) or had zero size.
  • Fix: makeScreenshot() was rendering in the wrong size when using crop.
  • Fix: The fatalerror message box had the wrong height when using non-default stagescales.
  • Fix: Remove the low-res framebuffer rendering on low-fps during pano-blending (too much false-positives detections).
  • Fix: Avoid crashes when changing settings of destroyed textfields.
  • Fix: Logging - use original/unformated message (with tabs) for the browser-console.
  • Fix: Resolve get/calc attribtes inside styles / sub-styles after full parsing.
  • Fix: Remove the fullscreen-blacklisting for the old Android 4.0 browsers (because it wrongly affects the Duck-Duck-Go and many also other Android browsers).
  • Fix: Wrong onresize events every frame in the Oculus Go browser.
  • Fix: Check for delayed WebGL drawing-buffer-size changes (a workaround for a Oculus Browser bug).
  • Fix: Workaround for an iOS bug that causes slowdowns and even browser crashes when using videos and pano-blending.
  • Fix: Allow overwriting / redefining get: / calc: attributes with normal values again in the xml.
  • Fix: When using a get(var) in a tween or stoptween the var content was wrongly case-senstive when addressing the tween animation.
  • Fix: Using a Javascript function as donecall for a tween wasn't working.
  • Fix: The variable names in the <action> args parameter were not converted to lower-case.
  • Fix: loadscene/loadpano calls weren't working correctly in non-global scope actions.
  • Fix: txtsplit with 'null' for not required parameters.
  • Fix: changeorigin with 'null' as 'edge' parameter.
  • Fix: Avoid crashes when doing set(get(null), ...).
  • Fix: Use the mwheel and capturetouch embedding settings also when the external parameter protection is enabled.

krpano Tools (GUI)

  • New: Use a newer NWJS framework (based on Chrome 65 now). That should fix several system and WebGL compatibility issues.
  • New: Is now a 64-bit application.
  • New: Check for the 'app translocation' on Mac and show information about the problem. Additionally offer a 'FIX INSTALL OSX.command' script (just double-click) for fixing permission problems.
  • Change: Update tool - add the original file extension to the backup file.

krpano Tools (Command-Line)

  • filename
    • Changes: The filename of the tools on Windows is now just 'krpanotools.exe' instead of 'krpanotools64.exe' and 'krpanotools32.exe'. So now the same filename is used on all systems.
  • makepano tool
    • New: Support XMP infos for the pano-type and fov detection of the input images.
    • Change: Use profile=sRGB by default now.
    • Fix: Always embed a profile when using profile=sRGB, even when the input image is without a profile.
    • Fix: Skip the stereo-detection when all stereosupport settings are disabled.
    • Fix: Support the XMP syntax from the 'ALETA S2C' 360 camera for auto-leveling.
    • Fix: Don't write a prealign setting in the xml when all vales are 0.
    • Fix: Don't skip customimage generate when larger than the pano but therefore not tiled.
  • sphere2cube / transform tool
    • New: Support a tiled input for large images, faster processing and fewer memory need.
    • New: Faster for smaller panos.
    • Fix: The vertical scaling of cylinder-panos was slightly wrong.
  • cube2sphere tool
    • New: Support '*' as placeholder for the cube-side (l,f,r,b,u,d).
    • New: The -outsize= setting supports now also WIDTHxHEIGHT as custom size.
  • encrypt tool
    • New: Support for txt, json, depth, stl files.
    • Change: Add the original file extension to the backup file.
  • makepano config

Convert SPHERE CUBE Droplet (GUI)

  • New: Provide settings directly inside the droplet for changing the output file-format, the image-size and the jpeg-quality.

krpano Testing Server (GUI)

  • New: HTTPS support (by providing a .pem certificate file).
  • New: Minor redesign with better system support (system-font).
  • New: Is now a 64-bit application.
  • New: OSX-Retina compatible.
  • New: Uses a newer wxWidgets framework, better Unicode support.
  • New: Automatically restart the server on port changes, no restart button.
  • New: Option for no-cache for text-files only.
  • New: Option for automatic port selection.
  • New: Detect when the port is already in use.
  • Fix: Short paths like only 'c:' were causing a wrong memory access (one char before) and wrong outputs.

krpano Testing Server (Command-Line)

  • New: Use the same CSS-styled directory-listing like the GUI version.
  • New: Internally the GUI version and the Command-Line version are sharing the same codebase. All features are available the same in both applications.
  • New: More command-line parameters: custom root, custom port, cors, nocache, open, cert, q(uiet) and ?/help -adapter=list and -adapter=#.


  • New: iphone_fullscreen_swipe.xml
    • Automatically show information / instructions for the iPhone landscape fullscreen mode handling.
  • New: doubleclick_style.xml
    • Provide a style for double-click support for layers and hotspots.
  • New: contextmenu.xml
    • A default contextmenu with several different viewing projections.
  • New: ios_iframe_fullscreen.xml
    • iOS doesn't support the fullscreen-API, so there is no way to switch from inside a small iframe on a webpage to a full-page-view.
    • This script helps here by automatically redirecting to the inner frame page when switching to fullscreen mode.
  • New: depthmap_navigation.xml
    • Controls for navigation inside depth-mapped 3D panos.
    • Arrow-keys or WASD-keys navigation on desktop.
    • On-Screen-Touchpad for mobile devices.
    • VR controllers for WebVR usage.
  • Remove: The moretweensplugin plugin has been removed. It is directly integrated in the viewer now.

WebVR Plugin (docu)

  • New: Positional-tracking support:
  • New: VR-Controller support:
  • New: Completely new Cardboard-like mesh-based lens-distortion.
    • Uses the same lens-distortion parameters as Google Cardboard.
    • Better compatiblity with several rendering settings.
  • New: Updated internal Cardboard-device-database.
  • New: Automatically use higher oversampling settings for the Oculus Go and the Oculus Quest headsets for better image-quality, adjust with the auto_oversampling setting.
  • New: Support the new iOS 13 permission-dialog.
  • New: Automatically disable the stereo rendering in portrait mode on mobile devices.
  • New: Automatically disable the vr-cursor when detecting vr-controllers and having them assigned in the xml.
  • New: Automatically calculate a fake-pos for the vr-controllers when no positional-tracking is available.
  • New: Supports the usage inside iframes when the outer page forwards the sensor data.
  • New: mobilevr_desktop_support setting for optionally enabling gyro VR support also on desktop devices, e.g. for using the gyro of a Laptop.
  • New: resetSettings() - reset/clear stored MobileVR lens-settings.
  • New: mouse_pointerlock setting for using the mouse for looking horizontally around in VR mode.
  • New: hlookatoffset setting for a custom offset to the horizontal looking position.
  • New: headtracking_absolute setting for using an 'absolute' (real-world linked) head tracking when possible.
  • New: Support oversampling also for mobile-vr (not only WebVR).
  • New: Automatically add webvr plugin itself as global 'webvr' variable inside krpano.
  • Change: The isgearvr variable was renamed to isvrbrowser (but isgearvr also still works)
  • Fix: Don't assume that iOS always provide gyro support (due the iOS 12.2+ changes).
  • Fix: WebVR API updates.
  • Fix: Use the ESC key for exiting VR mode also for non-fullscreen fakemode.
  • Fix: Avoid orientation.lock promise errors.
  • Fix: Share the Chrome 65 gyro warning with the gyro2.js plugin.
  • Fix: The pointer-lock support was partially not working correctly.
  • Fix: Exiting pointer-lock by user (ESC-key) also exits the VR mode.
  • Fix: Pointer-lock support for touch MS Edge.
  • Fix: Add a workaround for a Chrome pointerlock-unlock bug - the browser reports a wrong mouse position after unlocking and that can lead to an unintended pano movement.
  • Remove: Global MobileVR settings storage.
  • Remove: WebVR APIs 0.6, 0.8, support, support only WebVR API 1.0 and 1.1 now.
  • Remove: auto-calibration support.


  • New: VR-Controller support with some predefined vr-controller types.
  • New: Completely new VR-Setup, one basic on-screen-setup and a detailed setup inside VR.
  • Change: The Fake Support is enabled by default now.
  • Change: Don't ask the user on unknown screen sizes.
  • Change: Add and load the vr-cursor and vr-controller hotspots only on need.

Gyro Plugin (docu)

  • New: Support the new iOS 13 permission-dialog.
  • New: Supports the usage inside iframes when the outer page forwards the sensor data.
  • New: desktopsupport setting for supporting desktop browsers (e.g. Windows Tablet-PCs).
  • New: Show a warning when using on non-HTTPS sites that the gyro might not work.

Postprocessing Plugins (docu)

  • New: pp_light - High-quality exposure and light/shadow control.
  • New: pp_blur.js - High-performance image blurring.
  • New: pp_sharpen.js - An Unsharp-Mask filter for sharpening or local contrast enhancement.

Soundinterface Plugin (docu)

  • New: A completely new Soundinterface plugin.
    • Based on howler.js.
    • Handles the sound playback unlocking automatically.
    • Uses the WebAudio API instead of HTML5-Audio by default (when available).
    • Backward compatible to older plugin versions.
  • New: Support for 3D Positional Audio.
  • New: Support for Sound Sprites - one file for multiple sounds.
  • New: Support for Sound Objects - control a sound during playing.
  • New: Automatically add the plugin itself as global 'soundinterface' variable inside krpano.

Videoplayer Plugin (docu)

Scrollarea Plugin (docu)

  • New: capturechildren setting for capturing mouse/touch-events also on the children elements for dragging the layer.
  • New: parentmaskchildren setting for automatically applying the maskchildren setting to the parent layer.
  • New: Support the 'inverted' mouse-wheel scrolling on Mac OSX.

Bingmaps Plugin (docu)

  • Fix: bingmaps radar inverted in some cases:
  • New: custom mousewheel support
  • New: Support the 'inverted' mouse-wheel scrolling on Mac OSX.

Googlemaps Plugins (docu)

  • New: apiversion setting for optionally defining the Google-Maps API Version to use. When not set, the latest api version will be used.
  • Fix: new wheel event support
  • New: Support the 'inverted' mouse-wheel scrolling on Mac OSX.

Showtext Plugin (docu)

  • Fix: Allow quote characters in the arguments.


  • Fix: Wrong arrow icon on iOS.


  • New: Load the maps-plugin first after opening the maps. This can speed-up the pano loading because the map tiles are getting loaded only later when the user opens the map. Adjustable by the new skin_settings.maps_loadonfirstus setting.
  • New: skin_settings.followmousecontrol setting to enable a follow-mouse control.
  • New: Add an UI for the new iPhone landscape-mode fullscreen mode.
  • New: Show the loading info only when the loading takes longer than 2.0 seconds.
  • New: The 'button glowing' is now implemented by addevent events, so that the layer itself can use the normal events.
  • Change: Use separate keeplookingdirection settings for for gyro and webvr usage.
  • Fix: The rotation of the little-planet-intro wasn't working.
  • Fix: The gyro-icon wasn't showing up when the the little-planet-intro was enabled.
  • Fix: The the show the 'title' in the special WebVR Enter-VR button only when a title is actually defined.

Examples (link)