PDA

View Full Version : NV_explicit_multisample specification



Cubitus
10-20-2008, 07:51 AM
Does anyone know where I can find this specification?

It is part of the 180.10 leaked drivers...

From EXT_direct_state_access:


<NV_explicit_multisample: New texture renderbuffer object command
replaces "Tex" in name with "Texture" and add initial "uint texture"
parameter>

void TextureRenderbufferEXT(uint texture, enum target,
uint renderbuffer);

<NV_explicit_multisample: New multitexture texture renderbuffer command
prefixes "Multi" before "Tex" and add an initial "enum texunit"
parameter (to identify the texture unit)>

void MultiTexRenderbufferEXT(enum texunit, enum target,
uint renderbuffer);

thanks,

Cub

Brolingstanz
10-20-2008, 03:50 PM
Intriguing!

Brolingstanz
10-31-2008, 11:01 AM
http://www.opengl.org/registry/specs/NV/explicit_multisample.txt

Korval
10-31-2008, 01:47 PM
Well, I can't say that I like that extension. The entire point of a RenderBuffer was that the driver knew that you could not use it as a texture. NV_explicit_multisample allows that.

It would have made far more sense to allow multisample as part of the internal format of a texture.

ScottManDeath
10-31-2008, 01:56 PM
Eeek, this looks ugly. It does not support 2D multisample texture arrays,as DX10.0 does. But it contains access to the sample position, which is a DX10.1 feature. Strange blend.

Korval
10-31-2008, 06:08 PM
It does not support 2D multisample texture arrays

That's because it doesn't support multisample textures. It merely allows you to bind a buffer object to a sampler.

Brolingstanz
11-01-2008, 08:14 AM
Don't have the 180 drivers to tinker with it, but the basic usage pattern seems to be something like...

// Create texture for sampling
uint rt;
GenTextures(1, &rt);

// Create MSAA renderbuffer with desired size, format, samples, etc ...
uint rb;
GenRenderbuffers(1, &rb);

// Render to rb normally ...

// Now just attach texture to renderbuffer for sampling
ActiveTexture(...);
BindTexture(TEXTURE_RENDERBUFFER_NV, rt);
TexRenderbufferNV(TEXTURE_RENDERBUFFER_NV, rb);

// Sample in GLSL using texelFetchRenderbuffer((i|u)samplerRenderbuffer sampler, ivec2 coord, int sample)
// GetActiveUniform returns type of (INT_|UNSIGNED_INT_)SAMPLER_RENDERBUFFER_NV

Seems to me it's just a temporary binding of a texture and a renderbuffer - temporary mapping of the buffer object
for the purpose of sampling only (as Korval pointed out).

For arrays it looks like we'd need something like samplerRenderbufferArray... (I smell an extension here)

Korval
11-01-2008, 02:18 PM
I smell an extension here

I hope not. This is a crappy way to expose this functionality, and I would hope that the ARB abandons it in favor of something more reasonable.