GenSurf
Quake2 map surface generator

1.3      3/20/99
So much for my plans to leave this alone!
- Now adds Phong shading ID for the surface plane only. Previous versions
  added this value for all planes - which was kinda stupid. Thanks to Mad Dog
  for straightening me out.
- Added a second texture input for faces other than the surface. (Owen Coughlan)
- Added a "rate of change" for fixed values. This is a pretty cool effect, I 
  think. See the GenSurf web page (www.magnolia.net/~rascal/gensurf/gensurf.htm)
  for an example. Another Mad Dog suggestion.
- Divided things up into tabbed dialogs, 'cause it was getting a bit too crowded.
  I can now add infinite input parameters, so keep the suggestions coming - that's
  a joke. :-)
- Fixed a stupid mistake with fractal surfaces with grid sizes that were not 
  powers of 2.

1.2      3/18/99
Bah! Bug fixes:
- A previous ummm... "optimization" prevented the "roughness" value from 
  working correctly in some circumstances. 
- "Free all" on the "Fix Points" dialog didn't... fixed points in the last 
  row or last column remained fixed. 

- Changed _sun_light value for skybox from 450 to 280 and _sun_ambient from 
  30 to 20... looks better to me. You're welcome to your wrong opinion :-) 

1.1      3/17/99
- Detail brushes are now given skip faces at either end, and are also made 
  the same length. This change won't affect the GenSurf-generated surface 
  at all, but should lessen the probability of splitting other brushes that 
  are added to the map. Thanks to compiler-guru Geoffrey DeWan for this 
  suggestion.

1.0      3/16/99
- Changed "add hint brushes" to "detail hint brushes". After much 
  hair-pulling and teeth-gnashing, I've given up on a general-purpose, 
  one-size-fits-all hint brush solution to improving visibility in these 
  maps. However, Alexander Malmberg's suggestion to use hint brushes with 
  the detail property is a very good (in my opinion) way to eliminate all 
  brush cuts in these surfaces, which will often provide better r_speeds 
  than any "normal" hint brush solution. For this method to be effective, 
  you will also need to check "Use detail brushes", which will use the 
  detail content property on the generated surface. The only trouble with 
  detail hint brushes is that qbsp3 automatically turns off the detail 
  property for hint brushes. I've changed the source code to allow these 
  brushes, though. This version of qbsp3 is now distributed with GenSurf. 
  If you plan to use the "detail hint brushes" feature of GenSurf, replace 
  your original copy of qbsp3 with the attached version. Please note that 
  detail hint brushes are not a cure-all for brush splits. They work very 
  well for terrain surfaces because 1) the terrain surface consists of 
  brushes placed in a very orderly rectangular array, and 2) the hint 
  brushes bound the surface brushes - there is no gap between the hint 
  brushes and the surface brushes.
- Added ability to read an 8-bit (256 color) bitmap, and interpret the 
  color indices as values for each vertex. The aspect ratio of the bitmap 
  is ignored - GenSurf maps the corners of the bitmap to the corners you've 
  specified in GenSurf's input. You supply a value for color 0 and a value 
  for color 255; all other values are linearly interpolated. Although this 
  feature will work with any 256 color bitmap, it generally makes more sense 
  to use gray scale images.
- Added "Save" and "Open" buttons to save/read GenSurf settings. This feature 
  might be useful if you are using many "fixed points"... the fixity and value 
  of these points are saved to the settings file, so you won't have to re-enter 
  them every time you want to produce the same surface.
- Added a visual representation of an info_player_start's bounding box to the 
  preview window. This should help give a sense of scale.
- Added a random number seed for the fractal form. This allows you to produce 
  an infinite (well... ok, very big) variety of surfaces with the same input, 
  while maintaining reproducible results.
- Fixed several nagging visual/interface problems, including 1) the "view angle" 
  window was left open when the preview window was closed. 2) the "range affected" 
  value for fixed points is not used for the fractal form, but this text box was 
  enabled, which was misleading. 3) "Fix Points" didn't allow you to alter points 
  along the border of your surface if "Linear Border" was selected, even if a 
  waveform for which "Linear Border" isn't in effect was used.

0.5      3/11/99
- Added "Fractal" waveform. Thanks to Bakersman (kindred Rust visitor) 
  for this suggestion. This option is very good at creating rough outdoor
  areas. Used in conjunction with "Fix Points" you can come up with a 
  pretty nifty outdoor surface. The old "roughness" value is still used 
  with the other waveforms.
- Another Bakersman suggestion: the orientation of the triangles used 
  for the surface is alternated. The previous version (with triangles 
  all having the same orientation) was prone to producing artificial 
  ridges and valleys where you didn't necessarily intend. This version 
  is, um..., half as likely to produce that sort of thing. 
- Added ability to spin the preview around the 3 coordinate axes. This 
  didn't turn out quite like I had hoped - the method used has the effect 
  of spinning the surface while keeping the viewpoint fixed. A more intuitive 
  (and easier to operate) method would be to fix the surface in place and 
  move the viewpoint... maybe next time.
- Added "Browse" button for textures. Thanks to Owen Coughlan for shaming 
  me into providing this feature :-)

0.4.1    3/10/99
- Minor changes to "Fix Points"

0.4.0    3/10/99
- Added "Fix Points" feature that allows you to specify the amplitude 
  for one or more selected vertices, along with a range from the 
  selected vertex that other vertices are effected. This works 
  better than I had hoped - suggestions are welcome.
- Added "add hint brushes" feature. This feature requires a bit of 
  explanation: GenSurf currently doesn't strain itself figuring out 
  good hint brush placement. It stacks 64 unit tall hint brushes 
  with the same footprint as a grid square at each grid square location.
  IF your surface undulates so much that portions of the surface aren't 
  visible from other parts of the surface, the use of this option will 
  almost certainly result in improved in-game performance. However, that 
  improvement SOMETIMES comes at a cost - increased vis time. I'm 
  continuing to work on this. Hopefully I'll be able to come up with 
  a scheme that improves r_speeds significantly without a substantial 
  increase in vis time.
- Improved graphics - preview window is updated without the annoying 
  screen-flashing.

0.3.0
- Added ArghRad 2 "value" field for Phong shading.
- Added texture scale and offset fields.

Known problems:
- Qoole 2.5 is known to foul up GenSurf-created maps and produce orphan 
  planes in the game that the player can walk through. Qoole 99 does not 
  have this problem. You can get around Qoole 2.5's butchery by using the 
  -noopt command line option with qbsp3. Thanks to Geoffrey DeWan for this 
  tip, and to Rust-regulars Beelzabub and Owen Coughlan for pointing out 
  the problem.

- GenSurf maps often produce "leaf portal saw into leaf" warnings, even 
  when using Geoffrey DeWan's qbsp3 (which eliminates many of these 
  warnings). However, it's my belief that these warnings (IF you use 
  GD's compiler) are only due to small roundoff errors and do not cause 
  any of the problems normally associated with these warnings (long vis 
  time, visual errors in the game). If you encounter any of these problems 
  when using GenSurf-generated surfaces, please let me know.

As with so much of what I do, many thanks go to Mad Dog for providing a 
wealth of suggestions. Please let me know if you have any problems/
suggestions/comments with this or any other version of GenSurf.

David Hyde    rascal@magnolia.net


 ************************ DISCLAIMER ***************************
 *                                                             *
 *   David Hyde makes no warranties regarding the computer     *
 *   program GENSURF.EXE. Users assume responsibility for the  *
 *   results achieved for computer program use and should      *
 *   verify applicability and accuracy.                        *
 *                                                             *
 ***************************************************************
