home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 505b.lha / DKBTrace_v2.11 / doc / whats.new < prev    next >
Text File  |  1991-04-30  |  21KB  |  397 lines

  1. This file outlines the changes from DKB 2.0 through DKB 2.11.
  2.  
  3.  
  4. Version 2.01:
  5.  
  6. 1. Bug in smooth triangles fixed (caused problems with TILES.DAT).
  7.  
  8. 2. Degenerate Triangles (some of which are in the data file SLANTBOX.DAT)
  9.    are ones with two of three points the same.  This is a "line" entity,
  10.    and as such it is a nonsensical 3-D object and makes the program choke.
  11.    Code added to detect and report line numbers that contain such objects.
  12.  
  13. 3. Supersampling is made to be nonrandom on a run-by-run basis.  There is
  14.    still a random jittering of the supersamples, but it happens based on
  15.    the x-y coordinates of the object (similar to the way textures are
  16.    "randomly" spread on object surfaces).  This makes for very consistent
  17.    jittering of the samples and almost no "flying dots" or randomly scattered
  18.    pixels as consecutive frames of an animation are rendered.
  19.  
  20. 4. Misspelling of "Paraboloid" in the file PARABOLO.DAT corrected.
  21.  
  22. 5. Removed usage message for an unimplemented option, -n.
  23.  
  24.  
  25. Version 2.02:
  26.  
  27. 1. Some functions were broken up into smaller parts to ease compilation memory
  28.    requirements, and so nearly all functions can be globally optimized with
  29.    MSC 6.0.  A couple of functions in parse.c and iff.c are still too large
  30.    to globally optimize, but these are in the overlaid modules (see below)
  31.    and the program only spends a fraction of its time in these functions once
  32.    at the beginning of the trace, so I didn't feel it was worth breaking them
  33.    into smaller routines.  Everything related to the actual scene tracing
  34.    IS fully optimized, however.
  35.  
  36. 2. ALL returns of malloc() (system memory allocation request) are checked for
  37.    consistency, so no more silent crashes should occur from lack of memory.
  38.    If any such thing does happen, it is probably related to stack usage.
  39.    Stack size is reduced from 32K to about 12K.  The tracer's actual stack
  40.    usage is quite moderate, since most things are malloc'ed.  Should be ok,
  41.    but if not, read the READ.ME file for more on what to do...
  42.  
  43. 3. RAW, IFF, and GIF Images are checked for a maximum size.  In the IBM/MS-DOS
  44.    version, this limit is 64K pixels.  This translates into just a tad over
  45.    320 x 200, but could be interpreted as 256 x 256 or 200 x 320, so long as
  46.    the total of (rows * colums) is less than or equal to the maximum size.
  47.    For the Amiga and Unix versions this can be unlimited, but is currently
  48.    set at 640x480 and 800x600, respectively.  In actual use you probably will
  49.    want to reduce the input image size, in order to have enough memory to
  50.    allocate more than one image per scene.
  51.  
  52. 4. Various minor things in many functions fixed to keep "LINT" and the pickier
  53.    "C" compilers happy (added typecasts, etc...).
  54.  
  55. 5. This version is compiled under MSC 6.0 rather than Turbo-C 2.0.  I had
  56.    a friend who has this compiler crunch it down for me, and I was amazed!
  57.    It runs 20% or so faster than the Turbo-C version (both using a math
  58.    coprocessor) by my time trials.  MAKEFILE's are included for each, the
  59.    MAKEFILE is for MSC and the MAKEFILE.TC file is for Turbo-C.  Also I
  60.    am using the MS-LINK overlay feature now to share memory on the tokenizer,
  61.    the parser, and the raw/iff/gif image readers.  This should give a bit more
  62.    memory to the tracer to run in.  In theory the overlaying process should
  63.    work for Turbo-C 2.0 as well because it seems to be just the linker that
  64.    performs this, but I haven't tried it yet.  Look at the DKBMSC.LNK file to
  65.    see how to do this.
  66.  
  67. 6. Not a change, but note the utilities are compiled in 8086/No 8087 mode to
  68.    be universal.  If you have an 80286 and/or 80x87 you may want to recompile
  69.    them with the /G...2 and /FPi87 options (286 opcodes, 80x87 inline) for
  70.    MSC (done by selecting the alternate CFLAGS in the MAKEFILE).  For Turbo-C,
  71.    use the -1 -a options (286 opcodes, word alignment) by also selecting the
  72.    alternate CFLAGS.  You will also have to select the alternate (floating
  73.    point library) form of LINKFLAGS in the MAKEFILE if you have an 80x87 and
  74.    are using Turbo-C.
  75.  
  76.  
  77. Version 2.03:
  78.  
  79. 1. IBM Version utility DUMP2RAW adjusted its output file extension based on
  80.    Amiga or IBM being defined.  The wrong one (Amiga) was left uncommented.
  81.    This caused the output files to be named .red, .grn, and .blu.  It was
  82.    intended for the IBM the extensions be .r8, .g8, and .b8, for compatibility
  83.    with PICLAB's "RAW" format.
  84.  
  85. 2. MAX_CONSTANTS raised from 100 to 250.  This should now allow more lengthy
  86.    color definition files to be included regularly in BASICSHA.DAT without
  87.    giving the dreaded "Too many constants" error during parsing.
  88.  
  89. 3. The good 'ol Microsoft Overlay Linker (NEVER buy a M-S product that has
  90.    a version number ending in .00!!) turns out to be what caused a wierd
  91.    problem writing TARGA files at 800x600 resolution.  The problem appeared
  92.    as though horizontal chunks of 20-30 lines were randomly skewed to the
  93.    left and right, and the problem somehow did not affect the DKB/QRT "RAW"
  94.    file output format.  Strange.  Well, anyway the program is no longer
  95.    overlaid, so it will take SLIGHTLY more memory to run.  However, the output
  96.    will be correct.  I have not had any problems running with 550K free RAM.
  97.  
  98.    (Note: Version 2.03 was not generally available for distribution, so don't
  99.    feel bad if you missed it...)
  100.  
  101. Version 2.04:
  102.  
  103. 1. The Microsoft compiler uses signed characters by default.  The Turbo-C
  104.    compiler and the Amiga Lattice compiler both used unsigned chars.  This
  105.    is corrected by using the /J option of MSC which changes the default to
  106.    unsigned chars.  This was causing color shades to be all but ignored when
  107.    using the display (-v +d) options (caused dull looking colors on screen)
  108.    but the trace data output files (.TGA, etc.) were correct.
  109.  
  110. 2. An astute user, Albert Waltner, caught an error in the original FRACTINT
  111.    GIF reader, GIF.C, at line 188, and reported it to me.  It caused the
  112.    'conditional expression is constant' compiler diagnostic.  This was caused
  113.    by comparing an unsigned char to < 0, which you really can't do.  The "C"
  114.    compiler was then converting this impossible condition to "FALSE".  I
  115.    believe I have figured out what the authors were trying to do originally
  116.    (looking for EOF or -1 returned) and have corrected it.
  117.  
  118. 3. The noise() functions we use evaluate the way the compiler deals with float
  119.    numbers, and has differing results based on the type of "C" compiler used.
  120.    This can sometimes cause the noise() functions to generate slightly dif-
  121.    ferent results that prior versions did.  More specifically, sparse clouds
  122.    in BOZO mode, and either uninteresting or crowded marble textures.  You may
  123.    need to play around with the COLOUR_MAP thresholds or TURBULENCE values to
  124.    obtain the best results.  This is neither a compiler nor program bug per
  125.    se, but it explains why some scenes may look different now, and I felt that
  126.    it should be mentioned.
  127.  
  128.  
  129. Version 2.05 (executable-only Beta test for version 2.10):
  130.  
  131. 1. Bug fixes:
  132.    a) Triangle normals were not normalized.  This problem made small triangles
  133.       very dark.  Thanks go to John Swenson for his help.
  134.    b) Composite objects sometimes caused the renderer to crash.
  135.    c) Sequential INCLUDE statements deleted previously-defined values.
  136.    d) The words COLOR and COLOUR are now treated identically as are
  137.       COLORMAP and COLOURMAP.
  138.    e) Several files weren't properly closed when the renderer was finished
  139.       with them.
  140.    f) Removed unnecessary parameter from do_blocking() in lighting.c.
  141.  
  142. 2. Memory allocation for bitmaps to be used for image mapping is now done
  143.    on a line-by-line basis.  On some systems, this makes it easier to allocate
  144.    memory for pictures.
  145.  
  146.    The IBM will now do 640x480x256 GIF file for image-mapping!  HOWEVER, this
  147.    will take a bit more than 640K of RAM to do it in.  A program called VIDRAM
  148.    that comes with QRAM or QEMM will make your video memory mapped as useable
  149.    by DOS.  With normal memory usage on the IBM (no video thievery), about
  150.    three (3) 320x200x256 GIF image maps is the new limit.
  151.  
  152. 3. Some command-line options were changed to allow easier extensions.
  153.  
  154.   ****************************************************************************
  155.   * IMPORTANT NOTE: - You will probably need to modify your trace.def(aults) *
  156.   *                   file to reflect the following program option changes.  *
  157.   ****************************************************************************
  158.  
  159.    Changed Options:
  160.  
  161.       +f     Output in default format for machine type, either +fr or +ft.
  162.       +fr    Output DKB/QRT dump format (default for Amiga/Unix is +fr)
  163.       +ft    Output in Uncompressed Targa-24 format (default for IBM is +ft)
  164.       -f     No file output to disk.
  165.  
  166.       +t     Option has been removed.  Use new +ft instead.
  167.  
  168.       +dx    Allows a character afterwards to determine the display mode
  169.              to be used.  The display modes are system-dependent.
  170.  
  171.      For IBM's, the currently supported VGA Adapter types are:
  172.  
  173.      0 - (default) Autodetect (S)VGA Adapter of types below:
  174.      1 - Basic, Plain Vanilla VGA 320x200x256 Tested: AAC
  175.      2 - MVGA (Mode 13X) Tweaked VGA 360x480x256 (if > 320x200) Tested: AAC
  176.      3 - Tseng Labs 3000 SVGA Orchid, STB 640x480x256 Tested: William Minus
  177.      4 - Tseng Labs 4000 SVGA Orchid PD+ 640x480x256 Tested: William Minus
  178.      5 - AT&T VDC600 SVGA 640x400x256 (no autodetect) Tested: John Gooding
  179.      6 - Oak Technologies OTI-067 SVGA 640x480x256 Untested
  180.      7 - Video 7 SVGA, VRAM FastRAM 640x480x256 Untested
  181.      8 - Video 7 Vega VGA, Cirrus Chip (uses Mode 1 or 2) Tested: AAC
  182.      9 - Paradise SVGA 640x480x256 Untested
  183.      A - Ahead Systems Version A SVGA 640x480x256 Untested
  184.      B - Ahead Systems Version B SVGA 640x480x256 Untested
  185.      C - Chips And Technologies SVGA 640x480x256 Untested
  186.      D - ATI VGA Wonder 640x480x256 Untested
  187.      E - Everex SVGA 640x480x256 Untested
  188.      F - Trident SVGA 640x480x256 Untested
  189.      G - VESA Standard SVGA 640x480x256 Untested
  190.  
  191.    Try just +d first and check out the VGA auto-detect.  If it doesn't seem
  192.    to correctly recognize your type of (S)VGA adapter, try forcing it with
  193.    +dx where x is one of the above types.  If you have any such difficulties,
  194.    or if it doesn't draw the image on-screen properly, then PLEASE leave a
  195.    message for Aaron Collins on the "You Can Call Me RAY BBS" at (708)358-5611
  196.    anytime, no cover charge ;-).  Try to be specific about your type of (S)VGA
  197.    adapter (and it's chip-set if you know which it is), and whether the auto-
  198.    detect or the screen drawing failed, or both.
  199.  
  200. 4. The tokenizing pass has been removed.  The tokenizing has been incorporated
  201.    as part of the parsing and no longer creates the files Tokens.data and
  202.    Symbols.data.  The result is a faster parsing phase that doesn't eat up
  203.    any disk space.
  204.  
  205. 5. When images are read in for image mapping, images that use colour lookup
  206.    tables retain those tables during rendering.  This saves on memory space
  207.    for bitmapped images.  Previously, all images were converted into a full
  208.    24 bits.  Raw and HAM IFF images will still require 24 bits/pixel, but
  209.    GIF and IFF images will use only 8 bits/pixel.
  210.  
  211. 6. The renderer now supports the environment variable DKBOPT to set the
  212.    default options.  This variable is read after trace.def(aults) (if it
  213.    exists), but before any command line options given.  This provides a quick
  214.    way to set your session parameters, such as for a quick test rendering at
  215.    lower resolution without having to re-edit the trace.def(aults) file each
  216.    time.  For the IBM, an example would be:  "SET DKBOPT=-h160 -w100 -q3".
  217.  
  218. 7. For IBM's the display routines also provide auto-scaling of the trace frame
  219.    to the size of the display you have.  For example, you will be able to view
  220.    an 800x600 trace on an el-cheapo video system at 320x200 by dropping pixels
  221.    here and there as necessary to fit.  This provides a close approximation of
  222.    what your final output will look like, but note that screen aspect ratio is
  223.    not preserved; it's just squeezed to fit in the x and/or y dimensions.
  224.  
  225.  
  226. Version 2.05a (IBM only):
  227.  
  228. 1. The only modification is a test fix of the Paradise Auto-Detection and
  229.    Bank-Switching logic.  These should work correctly, now.
  230.  
  231.  
  232. Version 2.05b (IBM only):
  233.  
  234. 1. The only modification is a test fix of the Everex Auto-Detection and
  235.    Bank-Switching logic.  The Paradise Auto-Detection and Bank-Switching
  236.    logic fixes of 2.05a are confirmed as working correctly, now.
  237.  
  238.  
  239. Version 2.06 (Amiga Only, but fixes propagated to 2.10 for all):
  240.  
  241. 1. The input language now accepts scientific notation for numbers.
  242.    Eg. 5.043e-4.
  243.  
  244. 2. Numeric constants now work.  Previously, they were accepted syntacticly
  245.    but didn't produce the proper value.  It helps when 64 bit numbers are
  246.    stored with all 64 bits instead of truncating them to 32 bits :-).
  247.  
  248. 3. A bug in SMOOTH TRIANGLES would sometimes result in the normals for the
  249.    vertices being re-arranged - i.e., the normal for point 1 becomes the
  250.    normal for point 2 and vice versa.  Don't ask - it's fixed.
  251.  
  252. 4. The +z undocumented command-line option was added.
  253.  
  254.  
  255. Version 2.10:  (Beta Release - got passed around, though.)
  256.  
  257. 1. +c option - continue a rendering from an aborted trace.
  258.  
  259. 2. +fr - raw output format (three files).
  260.    +fd - dump output format (one file - QRT format) - default
  261.  
  262.    (Note: this is a slightly different terminology of the terms "raw" and
  263.     "dump" from 2.06.  This version is more consistent.)
  264.  
  265.    (note 2:  +ft - Targa format is still supported)
  266.  
  267. 3. +dE - (Amiga only) - Display image for the HAM-E card.
  268.  
  269. 4. You can now color and texture the parts of a CSG object separately.
  270.    Previously, the colour and texture applied to the entire object.
  271.  
  272. 5. Layered textures implemented.  Basically, you can specify several
  273.    textures for any shape or object.  The renderer assumes that the
  274.    textures are overlayed one on top of the other (from bottom to
  275.    top).  Wherever the top texture is transparent, you can see through
  276.    to the next texture, and so on all the way down the line.
  277.  
  278. 6. The keyword ALPHA is now accepted immediately after an image-map
  279.    declaration (before the "ONCE" if present) to allow you to specify
  280.    that certain color registers in GIF and IFF pictures are to be
  281.    treated as transparent (or partially transparent).
  282.  
  283.       example:
  284.           IMAGE_MAP <1.0 -1.0 0.0> GIF "mypic.gif"
  285.              ALPHA 0 0.3
  286.              ALPHA 1 1.0
  287.           ...
  288.  
  289.    The keyword ALL is also accepted in place of a register number.
  290.  
  291.  
  292. 7. Textures attached to objects or shapes are now transformed whenever
  293.    the object or shape is transformed.  This should allow you to define
  294.    useful objects with fixed textures and move them around without
  295.    any prolems.
  296.  
  297. 8. A new texture called CHECKER_TEXTURE has been added to provide checker-
  298.    board patterns using two different textures instead of two colours.
  299.  
  300. 9. All keywords relating to the appearance of the surface have been made
  301.    illegal in an object definition unless they are inside a TEXTURE block.
  302.  
  303. 10.A bug was fixed in Composite Objects allowing the objects within the
  304.    composites to act as light sources.
  305.  
  306. 11.The manual has been considerably expanded.
  307.  
  308. 12.The BasicShapes.data file has been split up into "shapes.dat", "colors.dat"
  309.    and "textures.dat".  Also, the scaling of the textures in textures.dat
  310.    have been removed - it should be up to the user to scale the texture
  311.    as required.  Marbles, Sky Textures and Woods will most likely need to
  312.    be rescaled.
  313.  
  314. 13.The "-l" option has been added to allow you to specify a "library" search
  315.    path for data files or image files.  Several "-l" paths may be given, and
  316.    INCLUDE or IMAGEMAP will search in the current directory and then in the
  317.    directories given in the "-l" options.  There is a system-specific char
  318.    to separate pathnames from filenames, on the IBM it is "\" (backslash)
  319.    and for Amiga and Unix systems it defaults to "/" (slash).  This char is
  320.    automatically put between any "-l" path(s) given and the filenames in the
  321.    DAT file for IMAGEMAP or INCLUDE.
  322.  
  323. 14.IBM version recompiled under new Microsoft C 6.00A.  Some bugs fixed, so
  324.    they say.  IBM.C still makes the compiler emit buggy code that crashes
  325.    at runtime when maximum optimization is done on it...  *SIGH*
  326.  
  327. 15.The max string length for the tokenizer is upped from 20 to 40 chars.
  328.    This will allow for longer filenames of imagemaps, color names, etc.
  329.    as the Amiga folks are wont to do.  For the IBM gang, this means you can
  330.    embed a pathspec in the imagemap name, like "C:\DKB\TEXTURES\DARKWOOD.GIF".
  331.  
  332. 16.The maximum "containing" objects for refraction or transmittance has been
  333.    upped from 5 to 10.  This should help to prevent the "Too many nested
  334.    refracting objects" error from cropping up when lots of refracting objects
  335.    are included in a scene.
  336.  
  337. 17.This and future versions no longer include any of the DKB utilities with
  338.    the main raytracer.  There is getting to be so many of them we are going
  339.    to issue a separate distribution file just for the utilities.  This will
  340.    include TGA2DUMP, a new utility to convert Targa 16, 24, and 32 bit files
  341.    into DKB/QRT raw "Dump" format.  This is intended primarily for importing
  342.    "true color" (usu. 24 bit) imagemaps into DKB, until the program reads and
  343.    writes all popular image file types internally.  24-bit imagemaps should
  344.    be far superior to the color-mapped GIF or IFF filetypes, but at the cost
  345.    of about three times more memory required to store them during rendering.
  346.  
  347. Version 2.11:
  348.  
  349. 1. Upon careful examination of the rotation routines, it became apparent that
  350.    they were backwards for a proper left-handed coordinate system!  This is
  351.    now fixed, however, existing data files will need to have the rotations
  352.    reversed, by changing the sign of ROTATE terms that are neither 0 nor 180
  353.    in existing data files.  Pre-2.11 data files require significant changes
  354.    to run under 2.10 properly, anyway.  See the file 25to210.doc for more
  355.    detailed information on the required data file conversions that are needed
  356.    for updating them to DKB 2.11.
  357.  
  358. 2. At long last - DKB supports QUARTIC surfaces!  Quartics are 4th order
  359.    shapes that include the elusive torus, piriforms (hershey's kisses) and
  360.    lemniscates, among others.  This code was provided by Alexander Enzmann,
  361.    many thanks go out to him.
  362.  
  363. 3. Another fix for compatability is the variable "Point" capitalized as such,
  364.    is a reserved word for some "C" compilers.  This has been changed to
  365.    "Test_Point" in all instances (except as a struct/union member, which is
  366.    okay).  This fix was suggested by Alexander Enzmann.
  367.  
  368. 4. A minor but long standing problem was addressed in that the parser now will
  369.    take the ^Z character (IBM P.C. ASCII end-of-file mark) as plain old white
  370.    space now.  This is was a minor annoyance when dealing with non-IBM PC
  371.    systems rendering data files created by dumb IBM editors that add the
  372.    ^Z automatically.  Ironically enough NOTHING in the IBM needs that char
  373.    to recognize end-of-file, but Microsoft thought that DOS needed to emulate
  374.    Unix and have an EOF character for ASCII files anyway.  The terminator is
  375.    a 0 byte in real Unix systems, so they didn't even get it right.  The BIOS
  376.    routines that read a file in text mode (the way we read in .DAT files) will
  377.    stop reading the file at the ^Z mark on the IBM.  So, if there are any such
  378.    embedded characters in the file the IBM systems will treat that as an EOF
  379.    character correctly and stop processing input, while other systems will now
  380.    ignore the ^Z whitespace character and fall off the end of file normally.
  381.  
  382. 5. All "enum" types in the header files are now #define'd constants.  They're
  383.    ugly, but compatible will all cranky "C" compilers.
  384.  
  385. 6. For consistency, you can now use the keyword END_SMOOTH_TRIANGLE to mark
  386.    the end of a smooth triangle.  The previous technique (END_TRIANGLE) is
  387.    also supported for compatability.
  388.  
  389. 7. The parser incorrectly supplied an "END_QUADRIC expected" error message
  390.    when it did not get an "end of CSG" token (i.e. an END_INTERSECTION,
  391.    END_UNION or END_DIFFERENCE).  This now gives the correct error message,
  392.    which will depend on the type of CSG being parsed.
  393.  
  394. 8. Amiga executables renamed from trace881 to dkb881 and from traceffp to
  395.    dkbieee.  The IEEE version is slower than the FFP version, but we need the
  396.    additional precision.
  397.