home *** CD-ROM | disk | FTP | other *** search
/ C!T ROM 2 / ctrom_ii_b.zip / ctrom_ii_b / DOS / GRAFISCH / RAYTRACE / CRENDER / CRENDER.DOC < prev    next >
Text File  |  1992-02-01  |  22KB  |  528 lines

  1.                                       [ 1 ]
  2.  
  3. ----------------------------------------------------------------------------
  4. -     Welcome to ColorRender V1.5 [Still Beta, but better<g>]              -
  5. ----------------------------------------------------------------------------
  6.                                               Munich, 29th Jan 1992,  21:00
  7.  
  8.   This is a reasonably tested version, but it might not be bug-free. I
  9.   haven't come across any for some time, but you never know.
  10.  
  11.   CRNDR features a GUI interface and requires:
  12.   - a VGA or S-VGA Graphics Card and
  13.   - a Microsoft-compatible mouse.
  14.   - at least 512K free RAM (maybe less will do too...)
  15.  
  16.  
  17.   New users should read this whole doc, although it won't do any harm to
  18.   jump straight into the program.
  19.  
  20.   Users of CRNDR V1.0 can skip to the 'Changes ...' section.
  21.  
  22.  
  23. ***************************************************************************
  24.  NOTE for Impatient Power Users !
  25. ***************************************************************************
  26.   Call CRNDR from DOS. Move Sliders about with mouse by pressing left mouse
  27.   button.  Press right mouse button to re-render. Press F8 or click on
  28.   Print to output texture block, enter filename, texture name, return.
  29.   Press F10 or click on Quit to leave program. Then come back and read the
  30.   rest of this documentation !<g>
  31. ***************************************************************************
  32.  
  33. Index
  34. -----
  35.  
  36.     Basics . . . . . . . . . . . . . . . . . 2
  37.     Getting Started  . . . . . . . . . . . . 2
  38.     Screen layout  . . . . . . . . . . . . . 2
  39.     Changing Parameters  . . . . . . . . . . 3
  40.     Slider Links . . . . . . . . . . . . . . 3
  41.     Seeing is believing  . . . . . . . . . . 3
  42.     Output . . . . . . . . . . . . . . . . . 4
  43.     Quitting . . . . . . . . . . . . . . . . 4
  44.     Changes from CRNDR V1.0  . . . . . . . . 4
  45.     Official Stuff . . . . . . . . . . . . . 7
  46.     Credits  . . . . . . . . . . . . . . . . 7
  47.     Support  . . . . . . . . . . . . . . . . 8
  48.     Technical Stuff  . . . . . . . . . . . . 8
  49.     Precalc'd data . . . . . . . . . . . . . 8
  50.     Menu system  . . . . . . . . . . . . . . 8
  51.     CRNDR.CFG Sections . . . . . . . . . . . 10
  52.     Future features and enhancements . . . . 10
  53.  
  54.                                       [ 2 ]
  55.  
  56. Basics
  57. ------
  58.  
  59.   CRNDR is an interactive utility that lets you change (nearly) all the
  60.   parameters in the Texture block that PoV understands.
  61.  
  62.  
  63.   The image that results by changing these parameters, becomes visible a
  64.   lot quicker than it would if you were to start a raytracer, a post-
  65.   processor and a displayer, as you would normally have to do. CRNDR has a
  66.   preview window which displays what a sphere will look like with the
  67.   settings you have defined. This preview window can be updated within 1 or
  68.   2 seconds (depending on machine and settings).
  69.  
  70.  
  71. Getting Started
  72. ---------------
  73.  
  74.  
  75.   CRNDR takes up to two command line parameters.
  76.  
  77.       CRNDR [ -Tdatafile[.PRE] ] [ -Cmenu[.CFG] ]
  78.  
  79.     -T   This specifies the scene file, created with CPRE.EXE. Default is
  80.     ---  TRACE.PRE. You can use differect .PRE files for different scenes
  81.          by specifying this parameter.
  82.          For example you could use CPRE.EXE to generate a scene file with a
  83.          refraction index of 1.0 and 1.5 named TRACE10.PRE and TRACE15.PRE.
  84.          Do this like this :
  85.            C:\>CPRE TRACE10.PRE
  86.          and answer with 1.0 when prompted for the Index of Refraction. Then
  87.          repeat the procedure :
  88.            C:\>CPRE TRACE15.PRE
  89.          and answer with 1.5.
  90.          Now if you want to make a glass texture call CRNDR like this :
  91.            C:\>CRNDR -TTRACE15
  92.          If you always want to use TRACE15.PRE as your preview image, you can
  93.          rename it to TRACE.PRE and forget about the commandline parameter.
  94.  
  95.     -C   This specifies the menu definition and options file. The default is
  96.     ---  CRNDR.CFG. You can use differect .CFG files for different modes by
  97.          specifying this parameter.
  98.  
  99.  
  100. Screen layout
  101. -------------
  102.  
  103.   After you've started CRNDR, you'll see the following screen layout:
  104.    - In the top left corner a preview window.
  105.    - Underneath this are 2 selection windows (more later).
  106.    - On the right half of the screen a ton of slider buttons.
  107.    - At the bottom 2 rows of menu buttons (some of which are not implemented
  108.      yet).
  109.  
  110.   The program will load a few things, like options and the precomputed data.
  111.   After this the mouse cursor is arrow shaped and the first sphere has been
  112.   rendered.
  113.                                       [ 3 ]
  114.  
  115.  
  116. Changing Parameters
  117. -------------------
  118.  
  119.   The sliders contain the settings for the last selected object. The 2
  120.   buttons under the Preview window can be used to load the sliders with the
  121.   corresponding object parameters. You can change the plane and the sphere
  122.   parameters. Some parameters of the plane (e.g. Alpha) cannot be changed.
  123.  
  124.   You change parameters by moving the mouse cursor over the slider that
  125.   corresponds to the parameter you wish to change.
  126.   Press the left mouse button and drag the slider to the position you want
  127.   it in and release the button.
  128.  
  129.   If you change one of the color sliders the color that results will
  130.   immediately be displayed in one of the two buttons under the preview
  131.   window.
  132.  
  133.   You can change either RGB values, in which case the HSL values will
  134.   automatically adjust themselves to reflect the setting that you've defined
  135.   with the RGB sliders.
  136.  
  137.   Or you can move one of the HSL sliders, in which case the RGB sliders will
  138.   adjust themselves.
  139.  
  140.  
  141. Slider Links
  142. ------------
  143.  
  144.   I've built a 'Link' into the sliders. You select two parameters to hook up
  145.   and when you move one slider the other will be set so that the sum of the
  146.   two gives the link value. (If you didn't understand a word, don't worry I
  147.   didn't either, this is difficult to explain. The best thing you can do is
  148.   select Link from the menu and then select 'Amb+Diff' from the popup and set
  149.   the value to 1.0. Then move the ambient slider and watch the diffuse
  150.   slider.)
  151.  
  152.  
  153. Seeing is believing
  154. -------------------
  155.  
  156.   Want to see what the sphere looks like ? Press the right mouse button to
  157.   update the preview window. The cursor becomes a timer and the scene is
  158.   re-rendered.
  159.  
  160.   Times for re-rendering can vary. If the re-render time with the
  161.   Optimal Colormap is too slow, you may want to do the rough work with
  162.   Dithering and then re-render with the Optimal Map when you think that's it.
  163.  
  164.                                       [ 4 ]
  165.  
  166. Output
  167. ------
  168.  
  169.   When you want to output the parameters for use in a PoV scene, you first
  170.   need to set the output format (only once, the setting is stored). Do this
  171.   by pressing 'O' or clicking on the OPTIONS menuitem. The Output format can
  172.   now be changed in the Options Popup that appears. Press on the button to
  173.   cycle through the choices.
  174.   When you have selected the correct format, press the right button to return
  175.   to the main screen.
  176.  
  177.   Now press F8 or click on the PRINT menuitem. You will be asked to enter a
  178.   filename. Type the name of the file you want to print the texture to.
  179.   You may enter the name of an exisiting file or a new file. If the file
  180.   you specify exists, the texture definition will be appended to the file.
  181.  
  182.   Now you need to give the texture a name. Type a name and press return. Any
  183.   spaces you type are converted to underscores.
  184.  
  185.   The program will now write a texture block of the parameters of the sphere
  186.   into the text file.
  187.  
  188.  
  189. Quitting
  190. --------
  191.  
  192.   To leave CRNDR, press F10 or click on the Quit menuitem.
  193.   All parameter settings are recorded in CMAP.OPT when you exit, so that next
  194.   time you start CRNDR it'll look just like you left it.
  195.  
  196.  
  197.  
  198.  
  199.  
  200. Changes from CRNDR V1.0
  201. -------------------------
  202.  
  203.   Basically it's a more rounded program now, more things are changeable.
  204.  
  205.   - MENU.SMF has been renamed to CRNDR.CFG and is used for a lot of other
  206.     things too (see below). You might like to look into it after reading
  207.     this description.
  208.  
  209.   - CRNDR now also lets you play with refraction, transmission and alpha
  210.     sliders. The resulting image is not 100% correct, since the shadow cannot
  211.     (yet) be calculated accurately. Since Alpha works like a filter, but only
  212.     when refraction is off, the shadow should be the color of the light,
  213.     filtered by the sphere, mixed with the plane color (phew). CRNDR cannot
  214.     do this (I haven't managed to figure it out completely, and all has not
  215.     been said about the transmission issue).
  216.  
  217.   - CRNDR now has a small Help System, that you can change to your hearts
  218.     content, as long as you don't remove my name or the names of people I
  219.     give credit to. The complete Help system is in CRNDR.CFG. You can extend
  220.     it, translate it, shrink it, you name it, you can (probably) do it!
  221.                                       [ 5 ]
  222.  
  223.   - CRNDR now shows you what you are currently editing. The rectangle of the
  224.     selected object now appears to be depressed and an 'ACTIVE' label is
  225.     attached.
  226.  
  227.   - You can zero every slider by pressing '0' while the cursor is over it,
  228.     and you can set it to full by pressing '1' while over it.
  229.  
  230.   - The Options Popup now has a 'Default setting' button which sets the
  231.     sphere and plane parameters to a good looking yellow and a striking
  232.     blue<g>.
  233.  
  234.   - The sliders are 'logically' linked. Sliders that don't have any effect
  235.     are blanked. For example, if you have set DIFFUSE to 0 then the
  236.     BRILLIANCE slider will be disabled.
  237.  
  238.   - The color of the light source is now no longer interactively changeable.
  239.     It can be defined in CRNDR.CFG, section [LIGHT].
  240.  
  241.   - CRNDR now always outputs the texture block of the sphere. The plane can
  242.     only be edited in a limited way. Alpha, refraction etc. of the plane
  243.     cannot be changed.
  244.  
  245.   - CRNDR now supports other Video modes too, see CRNDR.CFG, in the
  246.     section [SCREEN] for a list.
  247.     NOTE : Unfortunately the tweaked modes (320x240 etc) don't work yet,
  248.     because the BGI driver I'm using doesn't support PutImage() and
  249.     GetImage() and it's needed in the program. CRNDR will run in these modes,
  250.     but the mouse cursor will leave a trail behind.
  251.     The BGI Driver will soon support this, so that I expect the next version
  252.     to be able to handle it.
  253.  
  254.   - The font for 320x200 mode has been made smaller so that more information
  255.     can be cramped into the display :-). It's still very readable, though.
  256.  
  257.   - A number of other fonts are also contained in CRNDR so that you don't
  258.     need a magnifying glass to read the labels in 800x600 mode.
  259.  
  260.   - CRNDR now comes with CPRE, the precalculator. You can move the light
  261.     source and the camera around. CRNDR.CFG contains all settings in the
  262.     section [PRECALC] neccessary for CPRE to calculate the *.PRE data file.
  263.     Only the Index of Refraction is prompted for before calculation takes
  264.     place.
  265.     The resolution of the preview is still locked at 100x66 but I think the
  266.     next version should support dynamic sizes. (100x66 looks really small on
  267.     a 640x480 or 800x600 display, and those with enough horsepower [486/33]
  268.     can then make the preview bigger.)
  269.     NOTE : The coordinate system may seem a bit strange for PoV users: the
  270.     Z axis points up.
  271.  
  272.   - I've dropped DKB output completely and Vivid output for the moment. After
  273.     looking at the Vivid V2.0 docs, it appears that Vivid uses a lighting
  274.     model completely different to that from PoV. Thus a conversion of the
  275.     settings to reasonably reflect what you are seeing in the preview is not
  276.     possible.
  277.     If I ever find out how the lighting works in Vivid, it'd be real easy to
  278.     change to lighting model in CRNDR and just use a different CRNDR.CFG for
  279.     the menu system.
  280.                                       [ 6 ]
  281.  
  282.   - There are only two output modes, PoV 0.5 and PoV 1.0.
  283.  
  284.   - The transmission problem has not been solved yet, so that I've made a
  285.     provision for treating the TRANSMIT parameter as a flag (as it was
  286.     implemented in PoV 0.5) and as a float (which is how it should be).
  287.     This is done (how else?) in CRNDR.CFG under the section [SETTINGS].
  288.  
  289.     If you use the flost setting you'll need to change the code in PoV 0.5
  290.     (I don't know about V1.0, it wasn't out at this time).
  291.  
  292.     Procedure :
  293.      + Find the routine Refract(...) in lighting.c.
  294.      + In the first block, where it says 'if (Surface_Normal==NULL)', change
  295.        the last three statements to
  296.            Colour.Red += Temp_Colour.Red*Texture->Object_Transmit;
  297.        etc, the same with Green and Blue.
  298.  
  299.   - You can specify the decimal precision of floats written to the output
  300.     file by changing this setting in CRNDR.CFG under the section [SETTINGS].
  301.  
  302.  
  303.  
  304.  
  305.  
  306.  
  307. --------------
  308. Have fun!
  309. --------------
  310.  
  311.                                       [ 7 ]
  312.  
  313.  
  314. ---------------------------------------------------------------------------
  315. Official Stuff
  316. ---------------------------------------------------------------------------
  317.  
  318.  
  319. This copyrighted software is freely distributable. The author retains the
  320. copyright to the program, but authorizes free distribution by BBS's,
  321. networks, magnetic media, etc. so long as this document remains unaltered
  322. and attached to the program (in a ZIP).
  323.  
  324. This software may not be included in whole or in part into any commercial
  325. package without the explicit written consent of the author. It may,
  326. however, be included in other freely distributed software so long as proper
  327. credit for the software is given. No more than five dollars U.S. ($5) can
  328. be charged for the copying of this software and the media it is provided on,
  329. i.e. a shareware distribution company may only charge five U.S dollars or
  330. less for providing this software.
  331.  
  332. This software is provided as is without any guarantees or warranty.
  333. Although the author has attempted to find and correct any bugs in the
  334. software, he is not responsible for any damage caused by the use of the
  335. software. The author is under no obligation to provide service, corrections,
  336. or upgrades to this package.
  337.  
  338.  
  339. However, if you find a bug I'd be grateful if you could let me know.
  340. ---------------------------------------------------------------------------
  341.  
  342.  
  343.  
  344. Credits:
  345. --------
  346.  
  347.  o  Thanks to Jordan Hargrave [72510,1143] for writing the BGI SVGA Driver
  348.     and thus making it really simple to use the SVGA cards.
  349.  
  350.  o  Thanks to Dave Mason [76546,1321] for making his implementation of the
  351.     algorithm in Andrew S. Glassners book "Graphic Gems I" called
  352.     "A Simple Method for Color Quantization : Octree Quantization",
  353.     written by Michael Gervautz and Werner Purgathofer, available for
  354.     incorporating into CRNDR, it really made a vast quality improvement.
  355.     Although it's a bit slower, the quality makes up manifold!
  356.  
  357.  o  The RGB to HLS and vice versa conversion code is from
  358.     "Fundamentals of three-dimensional computer graphics" by Alan Watt.
  359.  
  360.  o  Markus Lutz, who's been raytracing with me for the last few years and
  361.     always makes good suggestions.
  362.  
  363.                                       [ 8 ]
  364.  
  365. Support:
  366. --------
  367.  
  368.   I can be reached in the following ways :
  369.  
  370.     CIS  : 100023,2006   (preferred.)
  371.  
  372.     BIX  : lkretzschmar
  373.     Fax  : +49 89 8204270
  374.     Tel  : +49 89 8204250
  375.     Mail : Name     :  SoftTronics                 // Pop by if you're ever
  376.            Street   :  Fritz-Reuter-Str. 20B       // in Europe !
  377.            City     :  8000 Munich 60
  378.            Country  :  Germany
  379.  
  380. ------------------------------------------------------------------------------
  381.  
  382.  
  383. Technical Stuff:
  384. ----------------
  385.   CRNDR was written in Turbo Pascal V6.0 and makes heavy use of the
  386.   object-oriented extensions. All source code, except the color reduction
  387.   algorithm, is self-written.
  388.  
  389.  
  390.  
  391. Precalc'd data
  392. --------------
  393.   
  394.   The precalculated data in the TRACE.PRE file contains the cosI, cosS and 
  395.   objnum parameters for all pixels. The cosI and cosS factors are integers, 
  396.   i.e. the real values multiplied by 32767.
  397.  
  398.  
  399. Menu system
  400. -----------
  401.  
  402.   I've implemented a display-size independent menu system, which, as a nice
  403.   side effect also let's you customize it to suit your needs.
  404.  
  405.   The CRNDR.CFG file should be modified with care. Some things can be
  406.   changed, e.g. you can re-arrange the sliders, re-order them, give
  407.   them different labels or resize and move them, but beware! I cannot
  408.   guarantee that it will still work. Especially, don't change the first
  409.   number on the line, since CRNDR.EXE expects these numbers and no others!.
  410.   If you remove, or comment out lines you will not be able to change the
  411.   value of the corresponding parameter, although the program will still
  412.   run OK. Before commenting out a slider though, make sure you've set it to
  413.   the value you want it to have.
  414.                                       [ 9 ]
  415.  
  416.   To help you modify the menu system, I'll explain the format of the
  417.   button lines :
  418.  
  419.      SLIDER   key  (x1,y1,x2,y2)  min   max      prw     prd     lbl
  420.      TEXT     key  (x1,y1,x2,y2)  jst [ [ hotkey ]   txtCol ]  lbl
  421.      SWITCH   key  (x1,y1,x2,y2)  jst [ [ hotkey ]   txtCol ]  lbl
  422.      LABEL    key  (x1,y1,x2,y2)  jst [ style ]  lbl
  423.  
  424.   where :
  425.  
  426.    - SLIDER, TEXT, SWITCH or LABEL specifies the type of button.
  427.  
  428.    - key     is the result that's passed to the program to see what button
  429.              was pressed. DON'T CHANGE THE KEY VALUE OF ANY BUTTON !
  430.  
  431.    - (x1,y1,x2,y2) specifies the rectangle in 1000ths units. These are then
  432.         or     scaled by the menu size. An entry of the format
  433.      +(dx,dy)  specifies that the last rectangle used should be offset
  434.                by (dx,dy) and the result used.
  435.  
  436.    - min     is the minimum value the slider can take on. (Don't set the
  437.              minimum of the Brilliance or PhongSize sliders to 0 !!!!
  438.  
  439.    - max     is the maximum value the slider may take on.
  440.  
  441.    - prw     is the width of the value display in the slider button.
  442.  
  443.    - prd     is the number of decimal places of the value display of the
  444.              slider.
  445.  
  446.    - lbl     is a string to display { slider: after the number} .
  447.  
  448.    - jst     is the horizontal and vertical justification of the label in the
  449.              button. At most two letters, at least 1. Possible values are :
  450.                B for Bottom-aligned  (vertical),
  451.                M for Middle-aligned  (vertical),
  452.                T for Top-aligned     (vertical),
  453.                L for Left-aligned    (horizontal),
  454.                C for Center-aligned  (horizontal),
  455.                R for Right-aligned   (horizontal).
  456.    - style   indicates what sort of label button:
  457.                0 means no frame,
  458.                1 means a normal button and
  459.                2 means a depressed button.
  460.    - hotkey  is a character to assign as a hotkey. If the first letter is a
  461.              'F' then it's a function key and the number follows.
  462.    - txtCol  is 0 if the text should be black.
  463.  
  464.   Don't make big changes unless you're sure you know what you're doing,
  465.   especially not without first making a backup of CRNDR.CFG.
  466.                                       [ 10 ]
  467.  
  468. CRNDR.CFG Sections
  469. ------------------
  470.  
  471. Section Variable  Format             Description
  472. ------------------------------------------------------------------------------
  473. [SCREEN]                             Define the screen mode.
  474.         MODE      320x200,320x240,   S-VGA or VGA mode to use for CRNDR. This
  475.                   320x400,320x480,   version only supports 320x200, 640x480
  476.                   360x480,           and 800x600. The other modes will be
  477.                   640x480, 800x600   supported in the next version (I hope!).
  478.  
  479. [LIGHT]                              Defines the Light Source.
  480.         COLOR     r g b              RGB Color of Light source. R,G and B
  481.                                      must be in the range 0..255.
  482.  
  483. [SETTINGS]                           Various settings that affect CRNDR.
  484.         TRANSMIT  FLOAT | FLAG       Determines how CRNDR treats the transmit
  485.                                      Slider. If FLOAT is specified it's a
  486.                                      normal slider. If FLAG is specified it
  487.                                      can only be 0.0 or 1.0.
  488.         PRECISION n                  Specifies how many decimal places should
  489.                                      be written to the output file when
  490.                                      writing floats.
  491.         STRDIALOG (rect)             Specifies the size of the input box for
  492.                                      file- and texture-names.
  493.  
  494. [RENDER]                             This section defines the main menu.
  495.  
  496. [OPTIONS]                            This section defines the options popup.
  497.  
  498. [LINK]                               This section defines the link popup.
  499.  
  500. [HELP0]                              This section defines Help Index screen.
  501.  
  502. [HELPn]           n is a number      This section defines Help screen number
  503.                                      n.
  504.  
  505. [PRECALC]                            This section defines the scene for
  506.                                      CPRE.EXE to use.
  507.         LIGHTPOS  x y z              Defines the position of light source.
  508.         CAMERAPOS x y z              Defines the position of camera.
  509.         CAMERAAT  x y z              Defines the point that the camera is
  510.                                      looking at.
  511.         CAMERADIR dx dy dz           Alternate to CAMERAAT, a vector specify-
  512.                                      ing the direction can be given.
  513.         APERTURE  n                  The aperture of the camera in degrees.
  514.         ASPECT    n                  The aspect ratio of the image.
  515.  
  516.  
  517. Future features and enhancements
  518. --------------------------------
  519.  
  520.   - Support for Tweaked VGA modes.
  521.   - I still intend incorporating CMAP into this program.
  522.   - Vivid rendering equation.
  523.   - I'm still thinking about a Material Library .....
  524.   etc. etc.
  525.  
  526.   Anyone else have ideas ?   Speak up on CIS:COMART section Raytracing !
  527.  
  528.