home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #27 / NN_1992_27.iso / spool / sci / virtual / 3692 < prev    next >
Encoding:
Internet Message Format  |  1992-11-15  |  27.5 KB

  1. Path: sparky!uunet!ogicse!news.u.washington.edu!stein.u.washington.edu!hlab
  2. From: jpc@tauon.ph.unimelb.edu.au (John Costella)
  3. Newsgroups: sci.virtual-worlds
  4. Subject: SOFTWARE: Galcube--galilean antialiased cube
  5. Message-ID: <1992Nov16.030624.21708@u.washington.edu>
  6. Date: 15 Nov 92 04:43:23 GMT
  7. Article-I.D.: u.1992Nov16.030624.21708
  8. Sender: news@u.washington.edu (USENET News System)
  9. Organization: University of Washington
  10. Lines: 505
  11. Approved: cyberoid@milton.u.washington.edu
  12. Originator: hlab@stein.u.washington.edu
  13.  
  14.  
  15.  
  16. /------------------------------------------------------------------------\
  17. |                                                                        |
  18. |                       Announcing the release of                        |
  19. |              / \                                     / \               |
  20. |             |\ /|           G A L C U B E           |\ /|              |
  21. |              \|/                                     \|/               |
  22. |                                                                        |
  23. |    a proof-of-concept software simulation of Galilean antialiasing     |
  24. |                                                                        |
  25. |                                                                        |
  26. |                  Copyright (C) 1992 John P. Costella                   |
  27. |             School of Physics, The University of Melbourne             |
  28. |                                                                        |
  29. \------------------------------------------------------------------------/
  30.  
  31. Overview
  32. ======== 
  33.    GALCUBE is a program written by the author, for IBM PCs and compat-
  34. ibles, that simulates in detail the methods propounded in the recent 
  35. paper "Galilean Antialiasing for Virtual Reality Displays".
  36.  
  37.  
  38. Description
  39. ===========  
  40.    To verify that the technique of Galilean antialiasing, as outlined 
  41. in the abovementioned paper, is indeed practically feasible, the author 
  42. has written a simple program, GALCUBE, that simulates in detail all of
  43. the operations that would be carried out by display hardware equipped 
  44. with minimal G^(2) antialiasing.
  45.  
  46.    GALCUBE pre-computes a number of frames of view of a 3-D cube, ro-
  47. tating at a rate of one-quarter of a revolution per second, against a
  48. stark black background, that would be shown by a minimal G^(2) display 
  49. device, for a given shading model and frames-per-update speed. These 
  50. pre-computed images are stored in RAM and blitted onto the screen at a 
  51. rate of 25 frames per second, using the standard MS C blitter, to show 
  52. what would actually be seen by a viewer of a 25 frame-per-second G^(2) 
  53. display device showing such a scene; the equivalent display for a 
  54. conventional G^(0) device, for the same update rate, can be toggled in 
  55. or out, for a direct comparison. Unfortunately, however, the use of 
  56. Galilean antialiasing for the gross *translational* motion of the cube
  57. ---which is the most effective aspect of the technique---could not be 
  58. implemented, due to the hardware limitations of the IBM PC, which was 
  59. used as a lowest common denominator platform.
  60.  
  61.    The GALCUBE program itself has not been optimised for speed; it is 
  62. simply a proof-of-concept tool. The size of the cube is, on fast 
  63. machines, about 80 by 80 pixels on the VGA 640x480 16-colour display 
  64. mode; this is reduced on machines that are not fast enough to blt such 
  65. images (using the MS C blitter) at a rate of 25 frames per second. The 
  66. cube is rendered in one of several simple shading models, selectable 
  67. from the command line; the frames-per-update speed is also selectable. 
  68.  
  69.    GALCUBE computes update frames using an unoptimised and simplistic 
  70. scan-converter written for this purpose, the output of which would
  71. resemble closely the output of a practical (but highly optimised) poly-
  72. gonal G^(2) scan-converter. Between update frames, GALCUBE propagates 
  73. the Galilean image from frame to frame using the methods outlined in 
  74. sections 2 and 3 of the abovementioned paper. The propagation compu-
  75. tations simulate (in software) *EXACTLY* the computations that would 
  76. be carried out in the hardware devices, including the full effects of: 
  77. finite arithmetic; truncation of fractional bits, for storage purposes; 
  78. finite evaluation of the Poisson test; 1-, 2- or 4-way averaging in 
  79. the expansion algorithm when dictated by the results of the Poisson 
  80. test; propagation of both debris and galpixels from frame to frame. 
  81. Each galpixel in the image is rated for N_{prop} = 16 frames propagation 
  82. time; the x- and y-components of motional and fractional positional 
  83. information are stored in 32 bits each; the z-buffer is 8 bits wide; 
  84. the motional and fractional positional information of the z-component 
  85. is stored in 16 bits; and the grey-scale value, fractional value and 
  86. derivative is stored in 8 bits; totalling 96 bits, or twelve bytes, 
  87. for each pixel.
  88.  
  89.    It should be noted that the author has improved on the "G^(2), then
  90. G^(0) fallback" debris-generation algorithm outlined in the above-
  91. mentioned paper; the new algorithm is---unlike the old---invariant 
  92. under Galilean transformations (as well as under accelerative trans-
  93. formations); it works by simply retarding galpixels by a single frame, 
  94. marking them as debris, and then overdrawing the propagated galpixmap; 
  95. debris is now capable of being propagated from frame to frame. This 
  96. removes the last remnants of the G^(0) display philosophy (which is, 
  97. of course, non-invariant under Galilean transformations); it means that 
  98. the treatment of unobscuration depends *only* on the *relative* vel-
  99. ocities and accelerations of the obscurer and obscuree, and not the 
  100. apparent "absolute" motion of these objects with respect to the display 
  101. device. This new algorithm, which may be described in more detail in
  102. Sci.Virtual-Worlds shortly, is both implemented and documented in the 
  103. GALCUBE source code (yet to be released).
  104.  
  105.    On the other hand, the further enhancements outlined in section 4 
  106. of the abovementioned paper are *not* implemented in GALCUBE; these 
  107. would be more amenable to testing once actual hardware implementations
  108. of the minimal system described in sections 2 and 3 become available.
  109. Thus, the simulation provided by GALCUBE represents only a very
  110. *simplistic* demonstration of the minimal capabilities of G^(2) anti-
  111. aliasing. The use of a rotating object, without translational motion, 
  112. further stresses the algorithm maximally, since successive views of 
  113. faces are continually being presented; more realistic practical 
  114. scenarios, where motion of the displayed scene is due primarily to 
  115. the motion of the participant (rather than the objects themselves), 
  116. would look much better than the results shown by GALCUBE.
  117.  
  118.    In all this, it must be borne in mind that GALCUBE is only a very
  119. primitive attempt by the author to demonstrate proof-of-concept of
  120. Galilean antialiasing by software simulation. It was not originally 
  121. intended that GALCUBE be released for public scrutiny; the rather sim-
  122. plistic and unsophisticated programming behind it reveals these original 
  123. intentions; but nevertheless it may be useful to VR G^(2) display de-
  124. signers as a first crude step---who, it is hoped, will overlook the 
  125. sloppiness of the programming itself.
  126.  
  127.  
  128. System Requirements
  129. ===================
  130. GALCUBE has the following system requirements:
  131.    - an IBM PC, PS/1, PS/2, or compatible machine
  132.    - a version of the MS-DOS or PC-DOS operating system; or, failing that,
  133.        MS-OS/2 or IBM-OS/2 version 1.1 or later, or Windows NT or later
  134.    - a VGA or higher graphics adapter
  135.    - a monochrome or colour VGA-compatible monitor (GALCUBE only runs
  136.        in 16-grey-shade mode, regardless of monitor type)
  137.    - 640 kB of conventional RAM
  138.  
  139. The following specifications are not required, but ARE desirable:
  140.    - "real" MS-DOS or PC-DOS, rather than a DOS box under Windows 3.x,
  141.        Windows NT, or OS/2
  142.    - MS-DOS 5.0, loaded high, with device drivers also loaded high
  143.    - a machine clock speed of at least 16 MHz
  144.    - at least an 80386SX processor          
  145.    - an 80x87 maths coprocessor, for 8088, 80286 or 80386 machines
  146.                
  147. The following hardware and software is NOT used by GALCUBE:
  148.    - a mouse
  149.    - extended or expanded memory
  150.    - Microsoft Windows
  151.    - Super-VGA or XGA capabilities
  152.  
  153.  
  154. Instructions for Use
  155. ====================
  156.    GALCUBE is supplied in the following posting, in UUENCODEd and PKZIPped
  157. format. The following procedure should be used to extract GALCUBE:
  158.  
  159.    (1) Save the following posting to a file.
  160.  
  161.    (2) Strip any mail- or Usenet-header from the start of the file, with
  162.        a text editor.
  163.  
  164.    (3) UUDECODE the text file; the binary file galcube.zip should result.
  165.  
  166.    (4) PKUNZIP the binary file; this should yield GALCUBE.EXE. A suitable
  167.        version of PKUNZIP is available from the Sci.Virtual-Worlds
  168.        anonymous-ftp archive site, and which at the time of this document
  169.        was located in the cheap-vr directory.
  170.  
  171.    (5) Transfer GALCUBE.EXE to a machine satisfying the requirements
  172.        listed above.
  173.  
  174.    (6) Ensure that the machine is completely BACKED UP to secure 
  175.        media. While GALCUBE has been tested extensively on the author's
  176.        and a few other machines, Murphy's Law says that it must fail on 
  177.        someone's machine, somewhere, some time; while such a failure is 
  178.        unlikely to corrupt files, such a possibility can never be ruled 
  179.        out.
  180.  
  181.    (7) Boot DOS. For best results, do NOT run GALCUBE from a multitasked 
  182.        DOS session under Microsoft Windows or under OS/2; the program is
  183.        timing-dependent; its unoptimised form makes it a cycle hog. 
  184.  
  185.        If, however, due to factors beyond your control, it is NOT 
  186.        possible to run pure DOS, then do the following:
  187.  
  188.           - Under Microsoft Windows 3.0 or 3.1, in Standard Mode: 
  189.               (i) Only use a full-screen DOS session to run GALCUBE.
  190.  
  191.           - Under Microsoft Windows 3.0 or 3.1, in 386 Enhanced Mode:    
  192.               (i) Close as many background programs as possible.
  193.              (ii) Only use a full-screen DOS session to run GALCUBE.
  194.             (iii) Set the Exclusive check box in the Settings for the
  195.                     DOS session that is used.
  196.                     
  197.           - Under Microsoft Windows NT (still currently in beta):
  198.               (i) Optimise the DOS session following the general
  199.                     guidelines listed for OS/2 versions 1.x and 2.x
  200.  
  201.           - Under MS-OS/2 or IBM-OS/2 versions 1.1, 1.2 or 1.3:
  202.               (i) Close as many background programs as possible. 
  203.              (ii) Run GALCUBE from the DOS box.
  204.  
  205.           - Under IBM-OS/2 version 2.0 or higher:
  206.               (i) Close as many background programs as possible.  
  207.              (ii) Only use a full-screen DOS session to run GALCUBE. 
  208.             (iii) Edit the DOS Settings for the program object to
  209.                     maximise the speed of the session (in the same way
  210.                     as is done for DOS-based games).
  211.  
  212.        Note that processor focus should NOT be switched away from
  213.        GALCUBE while the message "Testing machine animation speed..."
  214.        is being displayed; however, focus CAN be switched away while
  215.        frames are being computed, or while the rotating cube is being
  216.        shown, if necessary.
  217.  
  218.    (8) Run the program GALCUBE.EXE, with the command line arguments 
  219.        listed below. NOTE: No other files are required for GALCUBE to 
  220.        run; therefore, it is *not* necessary to first CD to the directory 
  221.        that GALCUBE.EXE resides in, nor to include that directory in 
  222.        the PATH environment variable.
  223.  
  224.    (9) To quit the program during the pre-computation of frames, press
  225.        CTRL-Q; this may take up to one frame's worth of computation to
  226.        be recognised.
  227.  
  228.   (10) To toggle between the normal G^(0) (sample-and-hold) simulated
  229.        display mode, and the Galilean G^(2) antialiased mode, while the
  230.        rotating cube is being shown, press the spacebar.
  231.  
  232.   (11) To quit the program while the rotating cube is being shown, press
  233.        the ESC key.
  234.  
  235.  
  236. Command-Line Arguments
  237. ======================
  238. GALCUBE.EXE should be invoked from the command line as follows:
  239.  
  240. galcube <frames-per-update> <shading-model>
  241.  
  242. The arguments are described below; examples will follow:
  243.  
  244. <frames-per-update>: An integral number between 1 and 25, specifying
  245.                      how many frames it takes for the (simulated)
  246.                      display processor to generate a new update.
  247.                      In between these exactly-computed frames, GALCUBE 
  248.                      emulates exactly the G^(2) Galilean propagation 
  249.                      algorithm that would be applied by a minimal
  250.                      hardware G^(2) video controller, to compute 
  251.                      intermediate frames. (When showing the "normal" 
  252.                      simulated display, only the exactly-computed 
  253.                      updates are displayed, for <frames-per-update> 
  254.                      successive frame periods each.)
  255.  
  256. <shading-model>:     The shading model used by GALCUBE. The following 
  257.                      shading models are currently supported:
  258.  
  259.                  w   Wireframe: The cube is drawn in wireframe only, with
  260.                        rear edges removed.
  261.  
  262.                  a   Ambient: Each face of the cube is shaded with the
  263.                        same constant shade of grey. To delineate edges, 
  264.                        the wireframe rendering of model w above has 
  265.                        also been added, in a slightly brighter shade 
  266.                        of grey. This mix-and-match of shading models 
  267.                        is for illustrative purposes only, and intro-
  268.                        duces artifacts; the diffuse model below should 
  269.                        be used as a better guide.
  270.  
  271.                  d   Diffuse: Each face of the cube is shaded with a 
  272.                        shade of grey which is flat, but which depends 
  273.                        on the orientation of the face with respect 
  274.                        to a light source at infinity. The light source 
  275.                        direction passes through a point to the right 
  276.                        of the viewer; a small amount of ambient light
  277.                        is added to reduce the starkness of receding
  278.                        faces that are facing away from the light 
  279.                        source. GALCUBE assumes that one bit of frac-
  280.                        tional grey scale is added to the four bits 
  281.                        displayable, and that two integral bits plus 
  282.                        one fractional bit are allocated to storing 
  283.                        the first derivative of the grey level; this 
  284.                        is used for temporal convective antialiasing 
  285.                        of the grey level. Second derivatives are not 
  286.                        computed in the current version of GALCUBE.
  287.  
  288.  
  289. Sample Invokations of GALCUBE
  290. =============================
  291. The following examples illustrate how to run GALCUBE from the command
  292. line, as well as providing a rough "guide" to the features of the
  293. demonstrations that are of note. 
  294.  
  295. Command line      Effect
  296. ------------      ------
  297. galcube 4 w       Runs GALCUBE, in wireframe mode, computing every
  298.                   fourth frame as an update (exactly), and then
  299.                   Galileanly propagating for the next three frames. 
  300.                   The "normal" mode display shows the cube with an
  301.                   inter-update time of 160 milliseconds (i.e. 4/25
  302.                   of a second). Note that it is difficult, with this
  303.                   "non-immersive" demo, to get an idea for the
  304.                   *latency* in the "normal" display; i.e., it is up
  305.                   to 160 ms "behind the play" at any one time. 
  306.                   However, sometimes, when one toggles (via the
  307.                   spacebar) between the two displays, the "normal"
  308.                   display actually jumps *backwards*. This is *not*
  309.                   a program error: it reflects the fact that the
  310.                   sample-and-hold display can have bad latency 
  311.                   problems. The Galilean-antialiased display, on the
  312.                   other hand, *extrapolates* the motion (*not* inter-
  313.                   polation) using velocity and acceleration infor-
  314.                   mation, and is thus not delayed.
  315.  
  316. GalCube 6 Wire    As above, but with an inter-update time of 6/25 of 
  317.                   a second, or 240 milliseconds; only one frame in
  318.                   every six is actually computed, the other five being
  319.                   derived by the (simulated) video controller using
  320.                   Galilean antialiasing. Note that capitalisation of
  321.                   the command line is irrelevant, and shading-model
  322.                   parameters are checked for their first letter only.
  323.  
  324. galcube 12 w      As above, but now the inter-update time is 480 ms,
  325.                   or one-eighth of a revolution (one revolution occurs
  326.                   roughly every four seconds; here it is rounded off
  327.                   to 8 x 480 ms = 3.84 s to allow a continuous-play of
  328.                   the pre-computed frames). Note that, at this low an
  329.                   update rate, the "normal" display is completely
  330.                   ambiguous: it is not possible to tell whether the 
  331.                   cube is rotating clockwise or counterclockwise; it
  332.                   is also delayed by up to half a second, although this
  333.                   is not obvious from this non-immersive demo. The
  334.                   antialiased display is still holding up well.
  335.  
  336. galcube 24 w      As above, but now propagating over a 90 degree
  337.                   rotation of the cube. The "normal" display doesn't
  338.                   rotate at all, since the symmetry of the cube means
  339.                   it is always "seen" in an equivalent orientation.
  340.                   The antialiased display is still moving; but it is, 
  341.                   however, "falling apart", as described in the above-
  342.                   mentioned paper; this is an inherent property of 
  343.                   rotating objects: their "use-by date" is about 45 
  344.                   degrees of rotation (i.e. the example above). The
  345.                   one-second inter-update time is, of course, much
  346.                   longer than is praticable for a minimal global-update
  347.                   system in any case.
  348.  
  349. galcube 1 a       Ambient shading model used, as described earlier,
  350.                   with every frame computed exactly. Note that when 
  351.                   <frames-per-update> equals 1, the two toggleable 
  352.                   modes of view are identical; no Galilean anti-
  353.                   aliasing is performed. The edges are equivalent to
  354.                   the above wireframe display, added to make the faces
  355.                   delineable. A better shading model is given below.
  356.  
  357. galcube 4 a       As above, but now using an inter-update time of 
  358.                   160 ms. Note that the added wireframe edges of 
  359.                   this shading model cause some "smudging" on the 
  360.                   emerging ("critical") face; the methods of section
  361.                   4 would remove this problem. The "Enterprise effect"
  362.                   of the corners are the result of unobscuration of
  363.                   the background; with unobscuration caching (section
  364.                   4), this effect would also be removed. In this 
  365.                   simplistic demo, the rotating nature of the cube 
  366.                   lays a lot more of this "debris" than would be 
  367.                   encountered, most of the time, in most real-life 
  368.                   situations. 
  369.  
  370. galcube 8 a       As above, but now increasing the inter-update time
  371.                   to 320 ms. Note that build-up of debris, for this
  372.                   rotating case, is quite noticeable on a black 
  373.                   background; apart from this, however, the cube 
  374.                   itself is propagating well. In practice, the effects 
  375.                   of (i) non-stark backgrounds, and (ii) less critical 
  376.                   motion of objects (i.e. due mainly to viewer motion,
  377.                   rather than rapid intrinsic rotation) will reduce 
  378.                   the amount of noticeable debris. To properly deal 
  379.                   with an inter-update time of 320 ms, however, the
  380.                   methods of section 4 should really be employed.
  381.  
  382. galcube 1 d       Diffuse shading model used, as described earlier,
  383.                   with every frame computed; this is the *BEST* that
  384.                   GALCUBE can do with this model, even without in-
  385.                   voking Galilean antialiasing at all. Note that there
  386.                   are two sources of "flickering": Firstly, the low
  387.                   number of grey-shades (16) means that some colour 
  388.                   "jumps" are visible. Secondly, the lack of syn-
  389.                   chronisation between the blitter and the video
  390.                   adapter leads to occasional visible horizontal 
  391.                   lines appearing out of nowhere, on most displays.
  392.                   Note that these are artifacts of GALCUBE; ignore
  393.                   their presence in the following.
  394.  
  395. galcube 6 d       Diffuse model, as above, but now with an inter-
  396.                   update time of 240 ms. The "normal" display is
  397.                   almost ambiguous, and is (in reality) delayed.
  398.                   The antialiased displayed cube's *motion* is quite
  399.                   clear, and it is not delayed; however, the quality 
  400.                   of the image cannot, of course, be perfect. The 
  401.                   debris comments of the above also hold true here; 
  402.                   with unobscuration caching, the edges would not 
  403.                   "smudge". There are, however, further causes of
  404.                   image degradation. Note that the "critical" emerging 
  405.                   face is shaded more-or-less reasonably, but with 
  406.                   some blotchiness due to the low information content 
  407.                   of the original rendered update for this face. 
  408.                   However, these "blotches" increase in brightness
  409.                   along with the rest of the face, and are gradually
  410.                   averaged out during the propagation procedure.
  411.                   Likewise, all faces of the cube have "shading 
  412.                   inertia": they continue to change shade between
  413.                   updates; this smoothness is a marked improvement 
  414.                   over the "normal" display, which jumps and flashes
  415.                   quite badly. The G^(2) display would be much smoother 
  416.                   again if it were not for the very limiting 16-colour 
  417.                   VGA mode being used, and if correspondingly more bits 
  418.                   were allocated to storing colour derivatives. This
  419.                   "quantisation error" is, in fact, responsible for the
  420.                   occasional vertical lines in faces that have a slightly
  421.                   different shade to the face; this would not occur
  422.                   if greater colour resolution were used.
  423.  
  424. galcube 12 d      As above, but now lengthening the inter-update time 
  425.                   to 480 ms. The antialiased display is still holding 
  426.                   up reasonably well; the "normal" display is again 
  427.                   ambiguous. The "Enterprise effect" for debris is
  428.                   now the most noticeable effect; unobscuration caching
  429.                   would remove it.
  430.  
  431. galcube 24 d      Ditto, with an inter-update time of 960 ms. Again, 
  432.                   the cube falls apart; it is past its use-by date.
  433.                   The "normal" display is useless (fully ambiguous).
  434.  
  435. galcube 3 d       We have returned to an inter-update time of 120 ms.
  436.                   This corresponds to an update rate of 8.3 hertz.
  437.                   If this were hardware-implemented on a system with
  438.                   a frame rate of 83 Hz (and better shading capabil-
  439.                   ities), then an order of magnitude improvement will
  440.                   have been achieved, even for this small propagation
  441.                   time. It should be noted that the "normal" display
  442.                   at 8.3 updates per second would look much worse were
  443.                   it to be linked to a head-position device (as would
  444.                   be obvious to anyone with experience with a 8.3 Hz
  445.                   VR system), since the gross motion of the cube as a
  446.                   whole would also be jumpy, and would be delayed by
  447.                   an average of 60 ms.
  448.  
  449. The reader is invited to play further with the command-line arguments
  450. and see the effect that they have on the simulation; and to develop
  451. more sophisticated software simulations that are closer to the real
  452. requirements of a VR system. Due to the nature of Galilean antialiasing,
  453. it is, in practice, essentially ephemeral; for this reason, software 
  454. simulations, and frame-by-frame "browsing" capabilities, will remain a 
  455. feature of development in this area, *even after* hardware implement-
  456. ations come into general use. A much more sophisticated set of utilities
  457. is therefore clearly required. The author, however, must leave the
  458. development of these utilities to the designers of hardware implemen-
  459. tations, who will tune the software to their own needs and goals.
  460.                  
  461.  
  462. Acknowledgments, Disclaimer and Copyright Requirements
  463. ======================================================
  464. Helpful discussions with D. Stampe, R. E. Behrend and A. R. Petty 
  465. are gratefully acknowledged. This work was supported in part by an
  466. Australian Postgraduate Research Allowance, provided by the 
  467. Australian Commonwealth Government.
  468.  
  469. IBM, PS/1, PS/2 and OS/2 are registered trademarks of International 
  470. Business Machines Corporation.                   
  471.  
  472. Windows and NT are trademarks, and Microsoft and MS-DOS are registered 
  473. trademarks, of Microsoft Corporation.
  474.  
  475. 386 and 387 are trademarks of Intel Corporation.
  476.  
  477. DISCLAIMER: This software is provided AS IS; no responsibility 
  478.             is taken by the author for any damage, either direct 
  479.             or consequential, caused by its use. Use of the 
  480.             software on any computer is undertaken at the risk 
  481.             of the user; if this is unacceptable, all copies of 
  482.             the software should be erased. While every attempt 
  483.             has been made to ensure the accuracy of this document, 
  484.             no legal responsibility is taken by the author for 
  485.             any errors, typographical or otherwise, contained 
  486.             herein.
  487.  
  488. Copyright (C) 1992 John P. Costella. Copyright to both this document,
  489. and the accompanying software, is retained by the author. However,
  490. permission is hereby given for the unlimited duplication of both
  491. this document and the accompanying software ONLY for the purposes of
  492. research or development, provided that both are copied in their
  493. entirety, and unmodified in any way. Neither this document, nor the 
  494. accompanying software, may be included in any commercial package; nor 
  495. can they be sold for commercial profit. 
  496.  
  497. The document "Galilean Antialiasing for Virtual Reality Displays"
  498. was e-published in LaTeX form in Usenet Sci.Virtual-Worlds on 
  499. 4 November 1992, and may be retrieved, in LaTeX, DVI or PostScript 
  500. format, from the archives of the newsgroup. The document was also 
  501. issued, in paper form, as a University of Melbourne School of Physics 
  502. preprint, number UM-P-92/105, on 28 October 1992; as a last resort, 
  503. a paper copy of the preprint may be requested by post, either from 
  504. the author, at the address listed below, or from the Physics Branch 
  505. Library of the University of Melbourne.
  506.  
  507. Queries and suggestions are welcome, and should be directed to the
  508. author; preferably to the e-mail address jpc@tauon.ph.unimelb.edu.au;
  509. or, failing that, via post, to the following street address:
  510.  
  511. John Costella, 
  512. Particle Theory Group,
  513. School of Physics,
  514. The University of Melbourne,
  515. Parkville, Victoria 3052,
  516. AUSTRALIA.
  517.  
  518. Printed in Australia on acid-free unbleached recycled virtual paper.
  519.