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