[Bf-funboard] Highend graphics cards

Landis Fields bf-funboard@blender.org
Wed, 1 Oct 2003 20:59:44 -0000


Hello all! Eversince I purchased my 3dlabs oxygen gvx420 card I have been 
worried that Blender was not utilizing its full potential. I understood that 
the OPENGL factor was fine, although there was alot of other features 
regarding texture memeory and such that I was mostly worried about. Well, 
about two months ago I was really getting down and dirty...I was hoping to 
get to the bottom of this. I sent a few P.M.'s out at elysiun and over at the 
Blender.org site. Two days ago I recieved a message from a guy that gave me 
some great answers....ad it sounds as though he really knows what is going on 
witht he higher end cards (he also owns a 3dlabs card himself). Anyways, I 
asked him if it was ok to send this out to you guys in hope that it would 
benefit some of you in this area of Blender developement....he ofcourse aid 
that it was cool and he is willing to help out in the matter as well. Here is 
the latest message he sent me:


"Landis,

I did some reading on the 3Dlabs website.  Here's the result:

Your card has 128 MB onboard memory, used for such things as framebuffers,
texture memory, geometry memory, etc.  It is also able to use up to 256 MB
of system RAM as virtual memory to hold textures.  The card's OpenGL driver
does this automatically -- the application does not have to make any
specific calls.  Thus, if you have lots of UV textures and view your scene
in textured mode (ALT+Zkey), all Blender has to do is show the textures.
The card and the driver do the rest.  In this case, Blender can fully
utilize the card's capabilities.

There is one problem that could interfere with Blender utilizing all of your
card's capabilities: Portability.  Certain cards, namely the GeForce 2 and
GeForce 3 series, cannot be used in Maya because they lack hardware overlay
planes.  Your card has a hardware overlay plane, and Maya makes such
extensive use of it that it is indispensable.  Here, there are two options:

1) Code Blender to make use of resources only found on high-end cards -- and
abandon support for conventional systems, thereby abandoning most of
Blender's user base, or
2) Code support for high-end features, but disable them on computers with
normal video cards.  I'm all for this one, but it has a number of problems.
This could potentially bloat Blender's code size, and make it harder to
maintain or add new features.  It could also introduce a lot of bugs.

OpenGL is designed to be standard, so calls to library functions are the
same for all systems and all video cards.  Most of the optimization comes
from OpenGL drivers that implement functions in hardware -- for example,
your card does "Single pass bump-mapping, per-pixel lighting" (from the
3Dlabs website).  Other optimization comes from extensions to the OpenGL
standard -- these differ from company to company.  Right now, Blender has
the same capabilities on pretty much every card out there because it doesn't
really use extensions.  I'm sure some of the OpenGL calls could be arranged
so they produce faster output, but I'm not very up on that kind of thing.

I'm all for increasing Blender's credibility -- making it more appealing to
the "high end" user.  Open source tools have the potential to make the jump
to industry standard; just look at CinePaint, which spawned from the GIMP.
That is the biggest problem that Blender faces right now.

Right now this email has degraded into a series of tangents and is probably
neither cohesive nor clear.  I'll stop writing before it gets worse.

Good luck with your card; let me know if you need any further help.  I'm
happy to provide it.

Cheers,
Matt"