PDA

View Full Version : GeForce 6 Series OpenGL extensions posted



simongreen
05-17-2004, 06:59 PM
We just posted the specifications for some new OpenGL extensions. These allow access to the new functionality of the GeForce 6 series GPUs, including vertex texturing (NV_vertex_program3), fragment program branching (NV_fragment_program2) and floating point texture filtering and blending.

http://developer.nvidia.com/object/nvidia_opengl_specs.html

Thanks,

Simon Green
NVIDIA Developer Relations

jwatte
05-17-2004, 08:07 PM
Now if you'd only post some cards in stores, we'd all be set :-)

In actuality, I'm quite exceited that we're getting to the land of real-time procedural shading. I grew up on POV-ray version 1 and 2 shading language.

moichi
05-17-2004, 11:26 PM
>floating point texture filtering and blending

These functions correspond to any extension?

NitroGL
05-18-2004, 12:02 AM
I would assume that would apply to the ATI float extensions, since those don't restrict that functionality.

Jan
05-18-2004, 01:13 AM
No NV_conditional_render ? It´s such a promising extension.

Jan.

Christian Schüler
05-18-2004, 08:48 AM
Thanks!

simongreen
05-18-2004, 10:14 AM
Yes, the floating point features are exposed using the ATI float extensions. Eventually these will be replaced with the new ARB float extension.

http://www.nvidia.com/dev_content/nvopenglspecs/GL_ATI_texture_float.txt
http://www.nvidia.com/dev_content/nvopenglspecs/WGL_EXT_pixel_format.txt


Originally posted by NitroGL:
I would assume that would apply to the ATI float extensions, since those don't restrict that functionality.

DogDog
05-18-2004, 10:14 AM
Will vertex texturing be available in GLSL or Cg?

Korval
05-18-2004, 12:37 PM
Will vertex texturing be available in GLSL or Cg?Glslang already exposes it.

SirKnight
05-19-2004, 09:57 AM
Interesting extensions, but what I really need is NVEmulate that supports NV40 emulation. Why can't we download this on the dev site?

-SirKnight

Klaus
05-19-2004, 10:21 AM
The new NVEmulate tool supports NV40 emulation with the 60 series drivers.

- Klaus

SirKnight
05-19-2004, 02:31 PM
Yes, and I have the 60.72 drivers but I can't find where to download the NVEmulate program itself. There is a screenshot of it in one of the GDC04 presentations but no word on where to download it.

-SirKnight

moichi
05-19-2004, 04:17 PM
Originally posted by simongreen:
Yes, the floating point features are exposed using the ATI float extensions. Eventually these will be replaced with the new ARB float extension.

http://www.nvidia.com/dev_content/nvopenglspecs/GL_ATI_texture_float.txt
http://www.nvidia.com/dev_content/nvopenglspecs/WGL_EXT_pixel_format.txt

Thanks, NitroGL and Simon.

Klaus
05-19-2004, 06:06 PM
Yes, and I have the 60.72 drivers but I can't find where to download the NVEmulate program itself. There is a screenshot of it in one of the GDC04 presentations but no word on where to download it. I read that Rivatuner (http://www.guru3d.com/rivatuner/) allows to switch NV40 emulation on. I did not try it, but it should only be a registry key anyway ...

- Klaus

moichi
05-24-2004, 08:35 PM
Question about vertex texture numbering of NV_vertex_program3.
Below code is correct?

// C++ code
// (GL_TEXTURE0_ARB to GL_TEXTURE15_ARB reserved for fragment texture image unit of GeForce6)
glActiveTextureARB( GL_TEXTURE16_ARB ); // for vertex texture image unit 0
glActiveTextureARB( GL_TEXTURE17_ARB ); // for vertex texture image unit 1
glActiveTextureARB( GL_TEXTURE18_ARB ); // for vertex texture image unit 2
glActiveTextureARB( GL_TEXTURE19_ARB ); // for vertex texture image unit 3

// NV_vertex_program3 code
ATTRIB VertexTexCoord = vertex.texcoord; // vertex texture coordinate
TEMP VertexTexel; // dummy result
TEX VertexTexel, VertexTexCoord, texture[0], 2D; // vertex texture image unit 0
TEX VertexTexel, VertexTexCoord, texture[1], 2D; // vertex texture image unit 1
TEX VertexTexel, VertexTexCoord, texture[2], 2D; // vertex texture image unit 2
TEX VertexTexel, VertexTexCoord, texture[3], 2D; // vertex texture image unit 3

NV_vertex_program3 BNF says "<texTargetType> ::= "1D" | "2D" | "3D" | "CUBE" | "RECT"".
GeForce6 also supports "3D" and "CUBE" as vertex texture target?

simongreen
05-25-2004, 10:55 AM
moichi,

No, vertex textures share the same texture image units as normal textures.

The extension supports all texture types, but the GeForce 6 series hardware only supports 2D textures.

I've copied some example code below.

-Simon.

GLuint vertex_texture;
glGenTextures(1, &vertex_texture);
glActiveTextureARB(GL_TEXTURE0_ARB);
glBindTexture(GL_TEXTURE_2D, vertex_texture);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST);
glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE_FLOAT32_ATI, width, height, 0, GL_LUMINANCE, GL_FLOAT, data);

!!ARBvp1.0
OPTION NV_vertex_program3;
PARAM mvp[4] = { state.matrix.mvp };
PARAM texmat[4] = { state.matrix.texture };
PARAM scale = program.local[0];
TEMP pos, displace;
// vertex texture lookup
TEX displace, texcoord, vertex.texcoord, 2D;
// try and do as much work here as possible that isn't
// dependent on the texture lookup, to cover latency
MOV result.texcoord[0], texcoord;
MOV pos.w, 1.0;
// scale vertex along normal
MUL displace.x, displace.x, scale;
MAD pos.xyz, vertex.normal, displace.x, vertex.position;
// transform position to clip space
DP4 result.position.x, mvp[0], pos;
DP4 result.position.y, mvp[1], pos;
DP4 result.position.z, mvp[2], pos;
DP4 result.position.w, mvp[3], pos;
END;

moichi
05-25-2004, 01:07 PM
Thanks, Simon.

It seems that conflict will occur between vertex texture image unit setting and fragment texture image unit setting.
(At DirectX, pixel shader sampler number is from 0, vertex shader sampler number is from 257.)

>// vertex texture lookup
>TEX displace, texcoord, vertex.texcoord, 2D;

I think this line should be "TEX displace, vertex.texcoord, texture[0], 2D;".

I'm looking forward to see new samples includes vertex texturing and ForceWare 60.
(GeForce 6800 Ultra on sale yesterday in Japan though, very limited availability)

V-man
06-06-2004, 06:11 AM
The option method is pretty neat.

PS: I thought NV_evaluators was dead