OpenGL extensions for use in final year project

Hi,

I am approaching my final year of college now, and have been offered the option of doing my final years research on “Hardware optimisation using OpenGL extensions”.

From what I can gather, I would create a number of routines to check if various OpenGL extended libraries are available, and if possible, OpenGL code in a program should use these, and if not, revert back to the standard implementation.

So now my question:
Do people here think there is sufficient content in that to do a project which spans ~6 months? Is it too easy or is it too difficult? Is there a huge advantage to using OpenGL extensions?

Thanks in advance,

Steffen Higel

Sounds easy, but you would easily be able to fill up 6 months doing it. For example, you could write demos and show the differences when running on hardware that uses extensions as opposed to generic hardware. Sounds like a project a lot of us would like to do! If you wrote a nice library that determined the hardware extension support there’d probably be a lot of people here interested in it, too. Also, you get a lot of support for your questions (if they’re good ones) on these boards.

Have fun.

Is there a huge advantage to using OpenGL extensions?

of course there is! designers of graphics chips want cool gl extensions to put their product above the rest of the pack… :slight_smile:

(well, i guess, “huge” needs to be qualified at some point, hmm. but that sounds like what your proposed project is about)

cheers,
John

I find it hard to infer from the research title what it’s about. Read straight, it would mean “using OpenGL extensions to optimise the hardware”

What do you mean by “optimisation”? Making things run faster? Taking better advantage of hardware features?

Extensions can both help speed and allow you things that aren’t possible to do with straight OpenGL.

Here is the description:


  1. Hardware Optimisation using OpenGL extensions

Many OpenGL graphics card vendors support features that are not part of the Standard OpenGL implementation but can greatly improve performance. This project will look at ways of optimising 3D applications using available extensions whilst preserving portability by supporting slower (more standard) techniques when an extension is not available.

If that helps…

Talking to the supervisor, it involves developing software to determine which extensions are available, and then using those results to either use or not use the hardware functions.

I’m not sure, but I think you need to expand your project in some way…be it seeing if they help or making it take advantage of all the extensions not found on ‘normal’ video cards (Geforce/Radeon/Kyro/etc.) Or you could have it use and emulate Geforce3 extensions. Just my 2 cents.

Completing this project FOR REAL (with good mentors, and specific performance metrics) will prepare you well for working in the real world.

The problem is that some of the more exciting extensions (NV_v_a_r and NV_fence) often require (re-)architecting the application for making best use of them, unless you’re very lucky in how the app was put together. However, an app that’s architected for v_a_r will still work fine when the extension isn’t there, so it’s not useless work.

reading that i believe u have to do this eg for the GL_ADD tex environment extension

if ( GL_ADD_extension_supported )
// draw polygon with it
else
{
glEnable(GL_BLEND);
glBelndFunc( GL_ONE, GL_ONE );
// draw polygon
}

so you have one path for the cards that support the extension + a fallback for cards that don’t ( which will usually be slower )
eg with multitexture one pass is needed for cards that support it but 2 passes are needed for cards that don’t.

should be plenty to keep you going IIRC theres more than 200 extensions in the registry

I’m with HFAFiend. I think that the main advantage of extensions if providing new features, not just improving speed. You’ll be going over a lot of charted land here - mainly using multitexturing. That’s a subject that’s several years old. Yes, there’s a big advantage to using multitexturing over multi-pass algorithms, but it’s a given. I don’t think that there’s much research to do on the subject.

In fact, I’d say that most extensions actually slow down rendering, as they are used to create effects that would not be otherwise possible, or would be less accurate.

You could do some research about how to optimize for various cards (such as GeForce vs. Radeon), and that could actually be quite useful for people, but it won’t really be a programming project.

>>In fact, I’d say that most extensions actually slow down rendering, as they are used to create effects that would not be otherwise possible, or would be less accurate<<

i don’t know if this is true, apart from os specifc extensions eg swap buffer interval etc.
most extension can be emulated in software with the same quality as the driver extensions, yet the code will most likely not be as quick cause it won’t be utilising the card as fully

>>In fact, I’d say that most extensions actually slow down rendering, as they are used to create effects that would not be otherwise possible, or would be less accurate<<

true but theres a heap more extensions than multitexturing eg cass posted recently a link to his site showing cube environment rendering on non geforce class machines ive a demo on my site showing per pixel bumpmapping done in software ( no extensions envolved ).
i believe that is what the assignment is, show how u can do all these extension stuff on cards that don’t support the extension

Originally posted by jwatte:
[b]The problem is that some of the more exciting extensions (NV_v_a_r and NV_fence) often require (re-)architecting the application for making best use of them, unless you’re very lucky in how the app was put together. [b]

That is one of the things which worrys me. I’m hoping that when I get down into it, I can find out ways to abstract things a little.

I’d just like to thank you all for your replies. I feel really encouraged about getting stuck into this.

Originally posted by zed:

true but theres a heap more extensions than multitexturing eg cass posted recently a link to his site showing cube environment rendering on non geforce class machines ive a demo on my site showing per pixel bumpmapping done in software ( no extensions envolved ).
i believe that is what the assignment is, show how u can do all these extension stuff on cards that don’t support the extension

Can you give me the URLs to these? Thanks!

Sounds like a great project. Try to find an extension that can be simulated in hardware.

See how Cass did his OIM-project (multipass bumpmapping). I you try to do something in software most solutions will be slow because the lack memory bandwidth.

I this way you can compare how much boost new extensions really are giving us. And how cheap others can implement them in drivers.

Cube maps is another good case. It could be executed in a multitexture-multipass, in a total of 6 passes.

Another case could be the SGIS_generate_mipmap - vs. the glu software implementation. This is mostly a software driverhack to help developers. (And to use with pixel_buffers.)

Pixel buffers is a great case to evaluate. The preformance gain could be huge, since this eliminates traffic across AGP when rendering to textures. (I guess this could improve bumpmapping (OIM) a lot).

And check out w2k SP2, it seems to have the new OpenGL 1.2.2 openGL32.dll file. This is the new baseline for EXT vs. standard.

Good luck!!!

nice idea

if you need any help or have questions…
i’m sure a lot of us would be willing to help you and put you in the right directions/papers.

good luck,
-akbar A.

I just hope you can/will open source it when you’re done.

http://members.nbci.com/_XMCM/mybollux/demos/bumpmapping/bumpmapping.html

im not to sure about cass’s he posted a link very recently on these forums

also u might wanna check out http://www.sgi.com/software/shader/ http://graphics.stanford.edu/projects/shading/