Index:
[thread]
[date]
[subject]
[author]
From: Jon M. Taylor <taylorj@ecs.csus.edu>
To : Paul Sargent <Paul.Sargent@3dlabs.com>
Date: Thu, 20 Aug 1998 19:57:00 -0700 (PDT)
RE: LibGGI3D RFC
On Thu, 20 Aug 1998, Paul Sargent wrote:
> Jon,
>
> It looks like we are talking at cross-purposes on some things.
>
> > It appears from what people have been saying that I am a bit
> > under-informed about OpenGL and geometry acceleration. Mea Culpa. But
> > you still have to use OpenGL extensions, though, right? Pluggable
> > geometry acceleration isn't part of the base OpenGL spec?
>
> No Extensions are needed to accelerate Geometry and Lighting.
>
> Don't worry about not being up on all the finer points of GL (As we've
> already said, it's a beast).
Yeah. It is more than a bit intimidating, to be honest. I like
simple, clean, modular APIs that build on each other. I have put off
digging into OpenGL (and X too |->) because of this. But I really need
to. I'll probably do that after I have gotten my hands dirty with
LibGGI3D.
> Basically the way geometry acceleration
> goes is that because geometry is behind the API it can be accelerated.
> Anything behind the API can be accelerated. And with chips like Gamma (I
> use 3Dlabs stuff as an example because I know it), everything is.
>
> Extensions would only be used if your hardware was able to do something
> which GL couldn't. A Topical example would be Multi-texturing. There
> exists a Multi-texture extension so that driver writers can expose that
> part of the hardware through the API. In fact Mesa has this to allow
> software Multi-Texturing
OK. I had read that OpenGL "didn't expose the geometry pipeline"
and took that to mean that geometry couldn't be accelerated.
> > You have a dump truck tire. I want a racing slick. Although they
> > are both "wheels", the one cannot be used in place of the other (very
> > well, anyway).
>
> I feel that 3D (in totality) is a dump truck sized problem though.
_In totality_, yes. Where is it written that you have to swallow
the whole thing in one bite? Even OpenGL doesn't handle *everything*.
> The
> problem is if you design a F1 car, your going to have difficulty
> supporting something the size of a dump truck with it.
I'm not trying to. Maybe I can learn some useful stuff about
automotive design, internal compustion engines, etc. from designing the
race car, but ultimately a dump truck is a whole other design and should
be looked at on its own terms - good for some stuff, overkill for other
stuff, and even worse at a few things. Same with LibGGI3D and OpenGL.
> (Ever think
> synonyms are more trouble than they are worth. :-)
Yeah |->. But that wasn't a bad one, actually.
> > But I don't even want rasterization! All I want from LibGGI3D is
> > a standard triangle representation system, abstract triangle drawing
> > functions, and the concept of pluggable shaders. I don't want a graphics
> > pipeline, I want a set of hooks into any hardware or software pipelines or
> > pipeline subsections. LibGGI3D *targets* may (will, really) do all kinds
> > of representational transforms, coordinate transforms, geometry
> > manipulation, rasterization, vectorization, clipping, shading, and
> > whatever else you can think of. But LibGGI3D *itself* will just draw
> > shaded triangles.
>
> If you want do draw a triangle, you have a rasteriser.
Somewhere. It may be in the hardware.
> That's what
> rasterisation is.
If I want to target LibGGI3D to a vector display, I won't be doing
any rasterizing.
> Walking along the edges of a 2D triangle and filling
> in the raster spans from one edge to the other. You can't get any
> simpler.
>
> We would be talking about implementing a handful of commands: glBegin /
> glEnd, glColor, glVertex2. That is what you need for rasterisation only.
> Simple. Can be optimised to death
Of course this kind of code will be present. But it will be in
the display targets.
> > Shading and texture mapping is included with the pluggable
> > shaders.
>
> I like this pluggable shaders thing. Although I've still got to get my
> head around it completly. Sound like it will be a software only thing.
> Is that right? (I 'spose apart from the standard ones like flat, gourad,
> gourad + Z, gourad + Texture, etc)
The shader functions themselves will be software-only, because a
"shader function" for hardware shading is a meaningless concept. What the
pluggable shaders concept gives you is a way to separate shading from
rendering. If I call DrawTriangle() and tell it to use a phong shader, it
can transparently use hardware color ramps if available, or fall back to
the software phong shader I passed it. And I don't need a separate
DrawPhongShadedTriangle() function either.
Jon
---
'Cloning and the reprogramming of DNA is the first serious step in
becoming one with God.'
- Scientist G. Richard Seed
Index:
[thread]
[date]
[subject]
[author]