DMDX Help.
NVIDIA 3D Vision notes.
Version 5.1 of DMDX introduces supports
for NVIDIA's 3D Vision shutter glasses technology using the NVAPI API.
It is invoked with the nvidia3D option to the
<videomode>
parameter and is active for the whole job's run. You must use the
Direct3D rendering path. Pairs of frames are used
to present left and right eye images separated by the new colon (:) frame
separator. Like the comma frame separator the first frame's duration is
zero and is a more or less just a set of drawing commands that the following
right eye frame will actually present. For instance a frame that presents a plus
sign at ten pixels disparity would be something like this:
+1 <xyjustification
CENTER> x505 "+" : x495 "+" *;
There are a number of "interesting" (read quirky) aspects to this
as obviously DMDX wasn't designed with stereo displays in mind.
First is that the frame duration
remains whatever the video mode sets it as, in the setup tested that would be
8.3 milliseconds as it's a 120 Hz display, however each eye is getting that
duration so a 1 tick display isn't going to be seen by one of the eyes so some
care needs to be taken to make sure frame durations are always an even number of
ticks. Except that this would not appear to be the case, see below.
Second a number of keywords such as
<ProgressiveX>
and
<Instruction> and
<Prose> don't really lend themselves to the idea of pairs
of frames so I've just left them alone. Whenever they're used with stereo
pairs of frames their counters will advance from the left to right frames making
them essentially useless. Till I figure out what should happen I'm leaving
them alone. Can't even begin to predict what
<DigtialVideo> is going to do...
Third, comma frame separators work with the
following sort of syntax:
0
<xyjustification CENTER> x850 "+" :
x750 "+", @3 "Continue" x825 : @3 "Continue" x775;
Fourth, mono frames can be interspersed with stereo frames, if we didn't want
"Continue" with disparity the following could be used:
0 <xyjustification CENTER> x850 "+" : x750 "+"
/ @3 "Continue";
But note that that last example shows "Continue" after the cross, if we had the
following disparity would be lost as the last frame in the sequence is a mono
frame and it would loose the right eye display:
0 <xyjustification CENTER> x850 "+" : x750 "+", @3 "Continue";
Another "interesting"
feature is the "This application is not rated
by NVIDIA...Press Ctrl-Alt-Insert to hide." message in the
bottom right corner of the screen. First off, pressing Alt is perilous
unless you have -auto or -soldieron active
(which is pretty much always the case these
days but you can change the keystrokes in the
NVIDIA control panel) but secondly and of most concern the NVIDIA code that's
looking for that key sequence is assuming the application is continually
generating new displays. What that means is that if you have a static
instruction on the screen and you're expecting that message to go away when you
hit control-alt-insert it won't, so you need to have some DMDX display that's
looping back on itself till a key is hit. Only then will you have a chance
as the NVIDIA code doesn't appear to catch all control-alt-insert key presses.
Fortunately once the display is dismissed it appears to stay dismissed for
future runs of DMDX but it's probably going to pop up for every new user running
DMDX.
+1 <delay 0>
<mpr +B>
<nfb>
<t 50> "Hit B to Continue after ctrl-alt-INS dismissed"
<cco>
<biw -1>
<continue>;
And
yet another "interesting" feature is that the retrace rate is spoofed by the
drivers. I was running a specially adapted version of the TACHTEST item
file that displays 19 numbers across the screen (with inverse disparity but
that's not the point of the test) and could see the left and right eye numbers
as they ripped across the screen and all looked good. Except for the fact
that I'd left the default frame duration at 1 tick so DMDX should have been
running so fast that only one eye would see each number. Looking at the
diagnostics there are a good number of display errors being thrown indicating
something's up. Curious I set the frame duration to 2 (not the the one
it's set to below) but could perceive no difference in the display, the numbers
still ripped across the screen at the same pace. So I fire up TimeDX and
sure enough when you ask for a 120 Hz video mode the retrace rate that TimeDX
tracks is indeed 60 Hz. Curiouser still during the retrace rate
determination display I noticed the green LED emitter for the shutter glasses
fire up even though TimeDX is completely unaware of the NVIDIA API. So it
would appear using auto mode is a not a
good idea when using the shutter glasses. Or the NVIDIA ones at any rate,
should someone else ever make a competing set of them.
<ep> f25 <!testmode 11> <bgc 254254254> <id keyboard>
<VideoMode desktop nvidia3d> <eop>
0 <ln -1> "This is the stereo
tachistoscopic acid test for DMDX.",
"Nineteen frames displayed for a tick
across the screen,",
<ln 1> "after the third time it will repeat until you
abort.";
0 "Ready..." <dfd 1>;
1 p100 "1" : "1" / "2" : "2" / "3" : "3" / "4" :
"4" / "5" : "5" / "6" : "6" /
"7" : "7" / "8" : "8" / "9" : "9" /
"10" :
"10" / "11" : "11" / "12" : "12" /
"13" : "13" / "14" : "14" / "15" : "15" / "16" :
"16" / "17" : "17" / "18" :
"18" / "19" : "19" / "1done";
2 p100 "1" :
"1" / "2" : "2" / "3" : "3" /
"4" : "4" / "5" : "5" / "6" : "6" / "7" :
"7" / "8" : "8" / "9" : "9" /
"10"
: "10" / "11" : "11" / "12" : "12" / "13" : "13" / "14" :
"14" / "15" : "15" /
"16" : "16" / "17" : "17" / "18" : "18" / "19" :
"19" / "2done";
3 p100
"1" : "1" / "2" : "2" / "3" : "3" / "4" :
"4" / "5" : "5" / "6" : "6" / "7" :
"7" / "8" : "8" / "9" : "9" /
"10" : "10" / "11" :
"11" / "12" : "12" / "13"
: "13" / "14" : "14" / "15" : "15" / "16" : "16" / "17" :
"17" / "18" : "18" /
"19" : "19" / "3done" <bu -1> <continuousrun>;
0 "end";
DMDX Index.