** FRAFS Test Pattern **
- A Simple DirectX test pattern generator
- Version 0.5.5.7 10-Apr-2014 by raffriff (Lindsay Bigelow)
- Copyright (c) 2014 (GNU General Public License)
http://www.gnu.org/licenses/gpl-2.0.html
- Updates & discussion at frapsforum.com
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
PURPOSE:
Simple DirectX test pattern generator.
Do you worry if Fraps (or other computer video capture tool)
is giving you accurate colors? Do you wish you had some kind
of standard, recordable source with known colors?
Well, that's what this is supposed to do, so you're in luck.
My desire for this tool came up while thinking about the
"Fraps dark" problem. http://frapsforum.com/tags/dark/
Without knowing what the colors are *supposed* to be, how can
we say we are capturing correctly? We can't. I didn't want
to write my own program for this, but I didn't see any
alternatives out there. I wanted it to be stable, accurate,
easy to install, easy to use, and free.
FEATURES:
* source of consistent color for testing and calibration.
* high frame rate for benchmark testing and possibly for
microstutter research.
INSTALLATION:
Installation is very simple -- run the setup program. If
you get DirectX error messages on startup, you need to
update your installation of DirectX 9. Go to the following
web site:
* DirectX End-User Runtime Web Installer *
http://www.microsoft.com/en-us/download/details.aspx?id=35
USAGE:
FrafsTestPattern is used to calibrate your color accuracy from
the source, through video capture, editing, upload and viewing
online. Include a short segment of this test pattern through
every stage to verify color accuracy.
Get a screen shot with Fraps or otherwise, open in a paint
program, and the pixel values should match the numbers on the
test pattern. You may see a variation, usually due to the
video driver doing "color correction" or "calibration."
By the way, if you run monitor color correction or color
management, turn it OFF before doing video capture.
Once you know how accurate the screen shots are, which are more
straightforward to display than video, you can capture movies
and check your encoder chain for color accuracy.
If this test pattern is recorded and played with no color
changes, but your games looks too dark, adjust the gamma in
the game before recording.
For more help & discussion, I am available on frapsforum.com
DEFAULT BACKGROUND IMAGE:
FrafsTestPattern starts with a random background image, from
those found in the \imgs\ folder under the installation folder.
To avoid a long loading time, it stops looking for files after
it has found about 128, or after a few seconds have elapsed.
If you want a specific background image, you can either:
* make that image the only one in the \imgs\ subfolder;
* use the "file name or path" command line option.
For a plain black BG, move all files out of the \imgs\ subfolder,
or put a nonexisting file name in the command line.
Note the background image is just to have something to look at;
it is not part of the calibrated test pattern.
COMMAND LINE OPTIONS:
When you run it, it starts up in window mode; for full screen
mode you launch it with " /fullscreen" in the command line.
The setup program creates shortcuts for both modes.
The most common command options are:
/fullscreen
* start in full screen mode. Without this switch,
default action is to show a 640x360 window.
/window <width>x<height>
* if set window size (overridden by /fullscreen);
Example: FrafsTestPattern.exe /window 1280x720
If command is not correct, size will be the default 640x360
/vsync
* enable vertical sync. A way to throttle CPU and
GPU usage. Overridden by /framerate or GPU setting.
"file name or path"
* set a background file by name. Must be the *last*
option. Must be surrounded with quote marks. If only
a name+extension is given, the file is assumed to be
in the \imgs\ folder under the installation folder.
Examples:
FrafsTestPattern.exe "car.jpg" (in \imgs\)
FrafsTestPattern.exe ".\other\the cat.jpg"
FrafsTestPattern.exe "w:\x\y\z.jpg"
The other command options are mostly for testing or just
fooling around:
/rainbow
* show a color coded series of bars on the left side,
like PC Perspective's / NVidia's frametime overlay.
/travelbar
* show a traveling vertical black line.
(another way to show runt or dropped frames)
/micromode <number> {where <number> = 1 to 4 }
* add a short delay every 17 frames. For
microstutter research.
"/micromode 1" gives the shortest delay;
"/micromode 4" gives the longest.
/framerate <number> {where <number> = 1 to 1000}
* The program tries to run at the given framerate.
Examples:
FrafsTestPattern.exe /framerate 33.3
/aalevel <level> {where <level> = 0, 2, 4 or 8 }
* set full screen multisample antialiasing level;
default = 0. Only affects the edges of the spinning
pyramid, nothing else. Slows the frame rate.
For > 8xAA antialiasing (if it matters) force it
through your GPU control panel.
Examples:
FrafsTestPattern.exe /aalevel 0
FrafsTestPattern.exe /aalevel 8
/nospin
* don't show the spinning pyramid.
/noframeinfo
* hide frame number and running time.
/nostripes
* hide resolution test bitmap overlay.
/nocircle
* hide aspect ratio test circle overlay.
/clocksync
* nudge the timer to keep it in sync with 'real' time.
Normally the high resolution timer can drift over time,
relative to time-of-day or 'system' time. This option
uses a trick to keep the high resolution timer in sync.
The amount of nudging is normally very small, 0.01%.
/logframetimes
* save render times to a "...frametimes.csv" file.
The file format is compatible with Fraps - and with
Frafs Bench Viewer, another project of mine. My
times are very close to Fraps' but not exact.
The best way to use these options is to make a shortcut or
batch file. Batch files are easier to edit. Here's a sample:
[[[[ start .BAT file
@echo off
::** USAGE: list all your favorite BG images.
:: Uncomment the one you want to show today.
::** default
start FrafsTestPattern /fullscreen
::** alternate
::start FrafsTestPattern /fullscreen "another one.jpg"
:: ** others
::start FrafsTestPattern /fullscreen "%temp%\example.jpg"
exit
]]]] end .BAT file
TROUBLESHOOTING:
The first thing to do if you need to trouble shoot is:
check the log file. The file, named "FrafsTestPattern-log.txt",
should appear in the folder FrafsTestPattern was installed to,
or the current working directory during the program's run.
It is erased and re-written every time the program is run.
If anything goes wrong there *should* be a log entry on it.
APPRECIATION:
Spinning pyramid adapted from "Drunken Hyena 3D Objects Tutorial"
http://www.drunkenhyena.com
/cgi-bin/view_net_article.pl?chapter=2;article=29
see http://www.drunkenhyena.com/docs/DHLicense.txt
Background image code adapted from gameengineer.net
http://www.gameengineer.net/samples-graphics.html
Basis of my pre-rendering code
http://www.codesampler.com/dx9src/dx9src_7.htm
128 bit math class based on qofmath128.h
Copyright (C) 2004 Linas Vepstas <linas@linas.org>
GNU General Public License
http://svn.gnucash.org/docs/HEAD/group__Math128.html
...with additional code from
http://www.codef00.com/code/uint128.h
Copyright (c) 2008 Evan Teran
Free use is permitted with attribution
Background image is by Luc Viatour / www.Lucnix.be
http://en.wikipedia.org/wiki/File:Ara_ararauna_Luc_Viatour.jpg
licensed under the Creative Commons Attribution 2.0 Generic license
Alternate backgrounds:
by Eric Rolph:
http://en.wikipedia.org/wiki/File:Double-alaskan-rainbow.jpg
by Alchemist-hp:
http://en.wikipedia.org/wiki/
File:Crepuscular_rays_at_Sunset_near_Waterberg_Plateau_edit.jpg
by Jebulon:
https://en.wikipedia.org/wiki/File:Paonroue.JPG (cropped detail)
I hope this project proves useful to the user community!
- raffriff
History
@version 0.4.0 07-Apr-2013 - rewrote DH 3D Objects tutorial in VB.NET
@version 0.5.0 10-Apr-2013 - rewrote again in C++ due to .NET troubles
@version 0.5.2 13-Apr-2013 - added background image and other refinements
@version 0.5.3 14-Apr-2013 - seem to have an acceptable release candidate
@version 0.5.3.2 16-Apr-2013 - bug fixes; add frame time display & logging
@version 0.5.3.3 18-Apr-2013 - pre-render to a static surface for speed
@version 0.5.3.4 18-Apr-2013 - try to get BG image sizing right
@version 0.5.4.0 22-Apr-2013 - nailed image sizing; new features & images
@version 0.5.4.1 23-Apr-2013 - better random image loading
@version 0.5.4.2 24-Apr-2013 - minor bugfix
@version 0.5.4.3 25-Apr-2013 - random img by default; add res test img
@version 0.5.4.4 27-Apr-2013 - create res test without bitmap
@version 0.5.4.5 28-Apr-2013 - /rainbow and /travelbar options
@version 0.5.5.0 12-May-2013 - /vsync, /framerate and /clocksync options
@version 0.5.5.1 14-May-2013 - bugfixes
@version 0.5.5.2 15-May-2013 - /micromode
@version 0.5.5.3 18-May-2013 - setup changes
@version 0.5.5.4 19-May-2013 - bugfixes
@version 0.5.5.5 16-Jun-2013 - aspect ratio test circle overlay
@version 0.5.5.6 02-Jul-2013 - better black level pattern
@version 0.5.5.7 10-Apr-2014 - /window