RE: bilinear filtering from a floating point texture, on Nvidia hardware?

"Matt Franklin" <[email protected]> Wed, 24 May 2006 12:54:23 -0800
Newsgroups gmane.games.devel.opengl
Organization Fat City Network Services, San Diego, California
Message-ID <[email protected]>
Thanks to both of you-that works.
 
AFAICT (although EXT_framebuffer_object makes some statements leaving
this open to future extension), there are not any color-renderable one
or two component formats, aside from the ones defined in
NV_float_buffer.  However, per Pat Brown's e-mail, the NV float formats
do not support filtering.  So, when working in one or two component
formats, filtering must be done in the shader.
 
My current task requires only a single component, so I've been working
in R32F and/or LUMINANCE32F.  I also require bilinear filtering.  Do
either of you know, roughly, what sort of performance hit I'll get by
doing this in the shader, as opposed to using the hardware support, on
newer (6800 and on) Nvidia cards?  Is there optimized hardware support
for it, or is the driver really just turning it into 4 samples and 3
lerps anyway?
 
-----Original Message-----
Michael I Gold
Sent: Tuesday, May 23, 2006 6:24 PM
To: Multiple recipients of list OPENGL-GAMEDEV-L
hardware?
 
No - if you use the internalformat hints from the ARB_texture_float
extension (e.g. RGBA16F_ARB) instead of NV_float_buffer's FLOAT_RGBA_NV,
you will get filtering.  (Make sure you test for the extension, as this
is only available on GeForce 6x00 and newer, driver versions 75 and
newer).

Matt Franklin wrote: 
Hi-- I'm just looking for a bit of clarification regarding bilinear
filtering support under OpenGL vs. DirectX.
 
 
The Nvidia GPU Programming Guide lists that it supports filtering from
G16R16F and A16B16G16R16F texture formats (and it does not support
filtering from other float formats, such as R32F).  However, the OpenGL
extension NV_float_buffer documentation specifies:
 
"Floating-point textures (those with a base internal format of
FLOAT_R_NV, FLOAT_RG_NV, FLOAT_RGB_NV, or FLOAT_RGBA_NV) do not support
texture filters other than NEAREST.  For such textures, NEAREST
filtering is applied regardless of the setting of TEXTURE_MIN_FILTER."
(A similar statement is supplied for TEXTURE_MAG_FILTER.)
 
Am I correct in deducing that this means the 6 series hardware is
capable of bilinear filtering from floating point textures, however,
this functionality is only available using DirectX?
 
----- 
FAQ and OpenGL Resources at:
  http://www.geocities.com/SiliconValley/Hills/9956/OpenGL