*BSD News Article 71887


Return to BSD News archive

Path: euryale.cc.adfa.oz.au!newshost.anu.edu.au!harbinger.cc.monash.edu.au!news.mira.net.au!news.mel.connect.com.au!munnari.OZ.AU!news.ecn.uoknor.edu!news.cis.okstate.edu!newsfeed.ksu.ksu.edu!news.physics.uiowa.edu!math.ohio-state.edu!howland.reston.ans.net!newsfeed.internetmci.com!news.mathworks.com!nntp.primenet.com!uunet!inXS.uu.net!news.bb.net!news.blarg.net!blarg.net!vanevery
From: vanevery@blarg.net (Brandon J. Van Every)
Newsgroups: comp.graphics.api.misc,comp.graphics.algorithms,comp.windows.x.i386unix,gnu.misc.discuss,comp.unix.bsd.freebsd.misc,comp.os.linux.development.apps
Subject: Freeware community needs 3d library NOW
Date: 24 Jun 1996 07:09:56 GMT
Organization: Blarg! Online Services   206/441-9109
Lines: 165
Message-ID: <4qlf04$7pj@guysmiley.blarg.net>
NNTP-Posting-Host: animal.blarg.net
X-Newsreader: TIN [version 1.2 PL2]
Xref: euryale.cc.adfa.oz.au comp.graphics.api.misc:611 comp.graphics.algorithms:28857 comp.windows.x.i386unix:20329 gnu.misc.discuss:26666 comp.unix.bsd.freebsd.misc:22035 comp.os.linux.development.apps:17943


The freeware world is in desperate need of a freeware 3d rendering
library that's standard, has essential but not overly-bloated features
for 3d applications, and above all is high-performance.

Why "desperate?"  Because as of June 12th, Microsoft has released its
Direct3d API.  For more details check out:

http://198.105.232.4:80/gamesDEV/gGRAPHIC/g3dpress.HTM

There are 2 extremely important implications for this announcement:

1) Microsoft is moving very quickly in 3d, whereas the freeware world
is barely limping along.

2) Microsoft will very soon have all 3d hardware accelerator vendors
in its pocket.

Microsoft's umbrella allows 3d accelerator vendors to hide their board
specs behind the Direct3d API.  Because Direct3d will be popular,
there is no market incentive for 3d vendors to seek an alternative.
Put simply, the freeware community is about to be completely locked
out of any access to 3d accelerator technology.

If the freeware community does not act _fast_, then freeware platforms
such as Linux, FreeBSD, XFree86, GNU, etc. will be forever
crippled as 3d platforms.  They will simply never catch up.  For
high-performance 3d graphics, you will have to do your work either on
Windows, an SGI box, some other OpenGL workstation, or a PowerPC.

Sure, you can buy OpenGL from XInside for $200.  That's in addition to
$99 for the X server itself.  Probably you can get a similar deal from
Metrolink.  With enough money, you will be able to make Linux or
FreeBSD look like an OpenGL workstation.  But that's an expensive road
to travel, and 2 vendors is not exactly a healthy market.  Also, if
vendors such as XInside wish to charge $300 for an OpenGL solution, I
would like to see that solution positioned as a "very high end"
solution, as opposed to one of only a few available solutions.  In
general, lower-tier freeware products help to position higher-tier
commercial products accordingly.  Finally, I really think you need
something that's free, for 3d applications to have strong grassroots
support.

MesaGL is not going to be capable of doing 3d acceleration - I've
heard that the author Brian Paul himself has said so, and looking at
the MesaGL code, I agree with that sentiment.  People who remember me
from past posts, know that I'm very anti-OpenGL.  (Partly because I do
it for a living, and I know exactly what's under the hood in several
commercial versions.)  But all technical mumbo jumbo about OpenGL
aside, one irreducible fact exists: it's hard to implement a good
OpenGL.  Commercial OpenGL vendors know this for certainty.  It
becomes doubly difficult for freeware developers.  I honestly don't
think the freeware community is capable of sustaining a 3d hardware
accelerated OpenGL project.  I wouldn't mind being proven wrong on
this point.  But I'll point at the current level of MesaGL
performance, as an indicator of what can be realistically sustained in
practice.

The freeware world needs a 3d rendering library that does less, is
easier to implement, sits gracefully on top of 3d hardware
accelerators, and takes maximum advantage of them.

The freeware world also needs an OS platform that is "serious" about
3d graphics.  The various freeware UNIXen are serious about many
things, but I don't know of one that's serious about 3d graphics.
(Someone enlighten me if I'm wrong, I will switch immediately.)

I'll speak from my own experience with Linux.  A very large portion of
the Linux community prides itself on being "a bunch of hackers having
fun," and their outlook tends to condition the "branding" of the Linux
operating system.  Often they do not like to hear about commercial
imperatives, competition, vendor relations, or projects that are
outside the realm of their local interests.  Indeed, many Linux
developers are rather vocal about the fact that they do it "just for
fun."  Unfortunately, this doesn't sit well with commercial
developers, who expect serious OS partners if they are to spend
serious efforts on 3d drivers, applications, and such.  The slogan
comes full circle: commercial 3d developers look upon Linux as being
"just for fun," and thus have no incentive to lift a finger to do 3d
accelerator support for Linux.

Only via an immediate and massive outpouring of organizational energy,
can this situation be reversed.  Only if the freeware world can
produce a "serious" 3d platform, will 3d accelerator vendors see any
profit in releasing board specs to the freeware community.

I don't really care what "brand name" this work gets done under.
Ideally, it would get done for all operating systems, all CPU's, and
all combinations of 3d hardware accelerators.  However, I've come a
long way since the days when I thought Free3d would beat everyone's
pants off with platform-independent C++.  To actually be used by large
numbers of people and gain "Mindshare," a 3d library must be capable
of using a 3d accelerator.  Algorithmically speaking, each and every
different CPU requires a "slightly" different suite of assembly
subroutines to perform at maximum efficiency.  And unfortunately,
"slightly" different ASM code == totally reworked ASM code.

Who is prepared to step forwards and shoulder the burdens, in a time
frame that actually matters?  Basically, we have until January 1997 to
come up with something credible, or we're toast.  If we're not willing
to produce a result by then, we might as well save ourselves the
trouble and capitulate to Microsoft right now.  After all, their stuff
is out the door, and we could spend our energies on freeware Windows
compilers....

What do people already have?  I'm aware of a lot of other people's
work... the difficulty is always the time lost on communications
overhead.

Here's my own laundry list:

- 2d dumb framebuffer C++ classes, designed for maximum efficiency and
  platform independence
- "sorta working" C++ 3d code.  Good for what it is, but it is
  not assembly code.
- extensive designs for better algorithms
- experience with pipelined, superscalar design issues
- experience with Intel and Alpha assembly code
- experience with using C++ at the "right" junctures for efficiency
- experience with automating cross-platform configuration issues, with
  tools like GNU Autoconf and GNU Makefiles
- knowledge of some 3d hardware accelerator specs, which are
  unfortunately under NDA (my job doing OpenGL at DEC.)
- some experience with the do's and don'ts of organizing
  large-scale freeware projects (essentially, don't just
  "start a mailing list," don't turn the architecture over to a
  committee, try not to get mired in flame wars, etc.) 
- web page skills
- a fun little on-the-fly mailing list gizmo called "the Big Brother
  Database."  Great for sending info where it should be sent, instead
  of miring everyone down in crosstalk.
- a backlog of about 100 people who have expressed interest in
  assisting Free3d over the past 4 months, who would probably like to
  help, if only someone could organize them properly.  I can't do all
  the organizing.  I really dislike it, I'm much more of an
  "algorithms" person.
- drive and dedication


Also, I have to emphasize that in posting all of this, I'm asking for
experienced 3d people to come together and LEAD this effort.  I'm not
asking for endless technical debates on what the perfect 3d library
is, or why OpenGL will/won't work.  I'm looking for "doers."  Also, I
can't really organize other people right now.  People have to be
self-organizing and able to work without much of any communications
overhead, in order to contribute value to such an effort.  I wish it
were otherwise, but the past 4 months have taught me that reducing
communication is essential, and that experienced people must first lay
out an architecture for the inexperienced to slot themselves into.
Otherwise, you spend too much time talking, and/or trying to figure
out what the inexperienced people could/should be doing.

Let me know your thoughts.

And please, I'll say it in advance: don't have *.advocacy discussions
with me about OpenGL.  I'm not going to even respond to such posts.
Everything I have to say about OpenGL, is on my web pages.


Cheers,
-- 
Brandon J. Van Every   |  Check out Free3d, my 100% efficient, 100% portable
                       |  3d lib, at <http://www.blarg.net/~vanevery>.
3d Computer Graphics   |
C++  UNIX  X11  WinNT  |  E-mail: vanevery@blarg.net