Programmable GPU

From what I’ve heard of the XBox (more specifically: the NVIdia GPU), is that it’s programmable: the program can upload instruction to the card that will be applied to pixels, vertex, etc.
This feature, I think, will be in DX8. How about something similar in GL ? Or is this too platform specific? Maybe just as an extenstion?

Hmm… Is I see, the “programmability” feature of DX8 ( vertex/pixel shader assembly ) is just another way of describing the texture effects combiners, which is aleady available as extension for OpenGL. Seems that MS just tries to make shader description easier … and add some really nice per-pixel features … which are still not supported in available consumer-class hardware.

OpenGL has the texture combine functionality but not vertex operations.
I haven’t see some glNV_register_vertex_combiners or something like this.

Vertex shading is not a problem … There is no need for extensions, because vertex both colors and normals can be controlled manually for virtually anything you need, and it seems that there is no need for per-vertex indifferent lighting.

To OnyXMaster:
So we can drop out glTexGen functionality, GL_TEXTURE matrices and so on?
According to you we can drop ALL of matrices either, because we can use glVertex, glNormal etc to set up vertices!

A good example of vertex operators is

No, Ruslan - we can, but we should not. Tell me, what per-vertex operations cannot be concluded using currently existing stuff ?
Vertex weighting ? It is really goods only for hardware-transforming accelerators - using it on others is slower than performing this operation yourself. BTW, what vertex operations you really need ? Vertex weighting with 4 matrices ( Radeon ? ) is sufficient for any compex vertex deformation. You need colors ? What for ? Per-pixel effects are better … though theoretically somewhat slower, but still better. Also, hardware manufacturers choosed to use per-pixel shading, not per-vertex ones - do you think you’re smarter than nVidia, ATI, Hewlett-Packard, SGI and 3dfx engineers ?

There’s a method of giving everything a black outline (seen in Jet Set Radio) that would be a great application of vertex-shaders. It requires that each mesh be rendered twice - the second time, you flip the face culling direction, push the verts out along their normals by a small distance and render the mesh as solid black. The result is that the black mesh pokes out at the edges giving everything a cartoony black silhouette.

You can generate the silhouette mesh in software but that precludes the use of (eg) hardware skinning, since you need the skinned vert positions and normals to calculate the silhouette mesh.

As more and more geometry stuff goes into hardware (skinning, vert-morphing), you’re paying an ever larger cost for inserting your own wacky ops in the geometry pipeline, especially if they live at the end of the pipeline like this example.

Mike F

Hi, Does anybody know whether or not
the Fragment lighting(No. 102) in the gl extension has benn implemented on some platform?

Or there are some software implementation?

Octane2 graphics implements this.