PTB BETA 3.0.14 "Beamtenmikado"

PTB BETA release "Beamtenmikado"


Mostly boring little stuff and fixes, only the new VR driver for Linux is marginally interesting, while i mostly work on improvements to Linux: general testing and small improvements, prep work for high color depth support on more gpu's, ... things to hopefully make it for Ubuntu 18.04 LTS next year...


The new NetStation() EGI event time sync code by Andreas Widmann, Urte Roeber and Justin Ales almost made it, but not quite, because i found a bit too many small style issues to let it pass, too close to the release. The implementation is ready for merge in the next cycle though, once those trivial issues are fixed.


New feature, for Linux only:

* PsychOpenHMDVR driver for virtual reality headsets (HMDs) supported by OpenHMD. See "help PsychOpenHMDVR" for help and setup instructions. OpenHMD currently supports the Oculus Rift DK1/DK2/CV1, the HTC Vive, the Sony PSVR, and some more exotic devices. No controller input is supported so far. Only head orientation/rotation tracking supported, no absolute position tracking, as that is wip in OpenHMD. Also less sophisticated latency/blur compensation. The driver is so far only tested with the Rift DK2 on standard PC and the RaspberryPi-2. Test with a CV1 was unsuccessful - the display didn't light up - although no such problems were reported by other users of OpenHMD, so may be a local problem. No other HMDs available for testing - HTC Vive or Sony PSVR results would be interesting.


This driver has to be considered workable, but experimental, due to only minimal testing with a minimal subset of HMD hardware. May need backwards incompatible changes if new test results with other HMDs suggest need for changes.


General improvements for all OS'es:

* ConfirmInfo/TwoStateQuery: Remove brain-dead, broken GUI mode on current Matlab R2014b+, use sane text mode instead.


* Helptext updates for KbName and DrawTextPlugin.


* Make glShaderSource() command more robust against awkward/funky formatted GLSL shader code.


* Fix ClockRandSeed() for compatibility with Octave, and with current Matlab. Or break it - if somebody was relying on its broken behavior, especially for Octave. Now the default is to select the Mersenne Twister rng, as recommended by Matlab and Octave, and a dedicated builtin seed selection instead of clock() if supported by the given Matlab or Octave version. Anyway, check if you get what you want if you rely on this function to protect you from Mathworks indifference when it comes to backwards compatibility across Matlab versions.


* Some improvements to ComputeCIEConeFundamentals.m by David Brainard.

Linux fixes and small improvements:

* Clear screen in multi-x-screen config properly to black in stereomode 4/5 at window close.


* Support transparent windows on 10 bpc / 30 bit color depth setups.


* Handle use of software renderer wrt. to stimulus timing a bit more intelligently - avoid false warning wrt. timing on llvmpipe and similar fallback renderers.

Windows fixes:

* Handle backwards compatibility bugs in AMD's proprietary display drivers for Windows, which cause failure to load identity lut's in LoadIdentityClut() or failure to disable digital display dithering when requested to do so. Investigated and fixes contributed by Mark Repnow.

* Some build system improvements and code formatting cleanups by Diederick. Also removal of dead tests for ancient Matlab 4/5 bugs on ancient MacOS 8/9.


-mario