Picasso v. 1.0 Alpha Release (3D Engine)

new topic     » topic index » view thread      » older message » newer message

Hi all!

It's been a while I know, but I finally got it finished. As
soon as Rob posts it to the Euphoria site, or as soon as you
download it from
   http://www.geocities.com/~rodjackson/picasso.zip
you'll be able to evaluate and use the alpha release of
version 1.0 of Picasso!

What is Picasso? Short answer: a simple, yet complete 3D
engine/library for Euphoria.

The long answer, of course, is a bit more complex. I'll
start off by nipping any misconceptions in the bud. No one
will be building a Quake knockoff with this library. In fact,
this initial version might very well disappoint some of you.
Picasso currently lacks a number of features, including:

   - shading
   - light sources
   - perspective-correct texture mapping
   - alpha blending, i.e. color transparency
   - any other kind of transparency except complete
      invisibility
   - tremendous speed (a Pentium II is *strongly*
      recommended)
   - Windows or Linux support--it's DOS-only

Oh, and it doesn't work in higher resolution modes. It's a
mode-19-only engine, for now: 320 x 200 pixels, with a
256-color palette from Euphoria's potential 262144 colors.

Okay, for those of you still interested, here's what Picasso
*does* have:

   - ambient lighting (which can be turned off for manual
      shading)
   - z-buffering (which can also be turned off)
   - non-perspective-correct texture mapping
   - background images
   - greater speed than my original Quartz-based 3D classes
   - a simple and (hopefully) easy-to-use design
   - currently-in-progress documentation
   - complete, free, Euphoria v.2.0-compatible source code
   - a few extra touches, like
      - collision detection between any two polygonal
         objects
      - automatic conversion of bitmap files to textures
         using the current palette
      - loading of multiple bitmap files, w/ automatic
         altering of the current palette to match the
         bitmaps
      - a function to scale a 16-color palette to 16
         shades (for a full 256 colors)
      - virtual screens (allows paging)
      - image manipulation (aids in scrolling large
         backgrounds)

The included .zip file contains the main library file
(PICASSO.E), the secondary include files (3DBASICS.E,
RENDER.E, BACKGNDS.E, LIGHTING.E, POLYGONS.E, POLYOBJS.E,
and TEXTURES.E), rough documentation (PICASSO.TXT), and an
introduction file (README.TXT.) There's also a main demo
program (MAINDEMO.EX), which again I suggest only those
using Pentium IIs actually run. Some of you bolder folks
with somewhat slower machines might want to try QUIKDEMO.EX.
Three standard Euphoria include files, MACHINE.E, GRAPHICS.E,
and IMAGE.E, are required to use the library.

Those with fast computers, or who wish to use the library to
write programs for fast computers, might find the speed
adequate--as long as the polygon count is kept *very* low.
Turning on the z-buffering and/or using a lot of textures could
slow things down enough that you'd only want to use it for
still scenes.

Version 1.0 is being released as alpha, so I can get feedback
on a few things before finalizing the release (and so I can
take more time to work on documentation.) I'd like feedback on
whether to keep in certain routines that I don't think will
have much use (such as move_vertex), and on if I should make
any changes in the routine parameters. Also, whether or not
the Eu community prefers one huge library file or several
smaller ones. I'm going to try to keep the main structure and
routines from this version unchanged throughout the life of
Picasso, so I want to make sure it starts off right.

Obviously, I don't intend to just leave things at version 1.0.
I've left a few "hooks" in to simplify the future addition of
backface culling (which should almost double the speed) and
source lighting with flat shading (which could easily halve it.)
And of course, I'll make some optimizations. There are still a
few that I can implement without sacrificing readability.
However, part of the reason Picasso was written was to help
others learn about 3D programming, so it'll be awhile before I
release a version that is all speed and zero readability, or
that uses any machine code. (If someone else wishes to do so,
however, go right ahead.)

I've a few people to thank for their help, even though they
may not have realized it. Mark, for his intial 3D screenshot
and code which originally motivated me; Jiri, for his immensely
helpful code (the concept behind his spread() function was just
what I was looking for.) There's also Jeffery Fielding, for
writing his fuzzy logic routines; I haven't actually used the
library, but rather borrowed a concept behind one of his
functions. Robert, of course, for making all of this possible
by creating and releasing Euphoria in the first place. Tapu for
his motivation and encouragement. And I'd like to thank God for
keeping me sane long enough to finish this!

Before I forget, there is at least one known bug in the code.
You'll probably never notice it since it's been "fixed", and
so technically you might not even consider it a bug. It's a
little anamoly which I just slapped a patch on to get the
code working; I don't doubt that it'll cause problems later.
I'm working on *really* getting it fixed though, so if you
do happen to run into it (it'll probably manifest as undrawn
portions of partially-offscreen polygons), don't fret, it's
already being addressed.

Well, that's about it. I hope Picasso finds a place in the
Euphoria community, especially as it continues to grow and
develop. If anyone has any questions, comments, suggestions,
or other feedback (especially bug reports) PLEASE let me know!

Happy coding! smile


Rod Jackson
rodjackson at bigfoot.com

new topic     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu