The biggest issue though, is that the actual hardware support for VTF is rather limited. OpenGL doesn't provide any restrictions on what formats and/or types of textures can used for vertex textures, or if filtering can be enabled, whereas D3D9 does. Exactly what is supported is hardware dependent. In the worst case when VTF _is_ supported on D3D9, only 2D 32-bit floating-point textures are required and only with point filtering.
-- Alan Chaney CTO and Founder, Mechnicality, Inc. www.mechnicality.com
So this means that effectively it will only work on Vista and Windows 7? AFAIR XP doesn't support anything later than DX9. And, Daniel, how does Angle handle DX10+. I assume that at the moment you only query for the DX9 COM ifc? Its awhile since I looked at the code.
// In theory, vertex texturing is texture format dependent. However, in practice the caps lie,
// especially on NVIDIA hardware.
//
// ATI cards: all DX10+ GPUs report all texture formats as vertex texture capable (good!)
// Intel cards: all SM3.0+ GPUs report all texture formats as vertex texture capable (good!)
// NV cards: all DX10+ GPUs report only floating point formats as capable, but all others actually work as well.
// GeForce 6&7 only report R32F and A32R32G32B32F, and only those work.
//
// So we check for R16F support; this will return true on all GPUs that can handle ALL
// texture formats.
hasVertexTextures =
((LOWORD(d3d.d3dcaps.VertexShaderVersion) >= (3<<8)+0)) &&
So this means that effectively it will only work on Vista and Windows 7? AFAIR XP doesn't support anything later than DX9. And, Daniel, how does Angle handle DX10+. I assume that at the moment you only query for the DX9 COM ifc? Its awhile since I looked at the code.
No, what I said is that all DX10 capable GPUs do seem to support vertex texture sampling from all texture formats. You're not required to use DX10, this works under DX9 as well.
Hi guys,
Speaking as a user, I have a couple upcoming projects that would be
greatly helped by vertex textures. Having you look into this feature
is greatly appreciated!
Do you think that it would be possible to just determine if regular,
2D, float textures are supported at all (regardless of # of units)?
Some method that would return 'hasVertexTextures' from Aras's message?
I don't believe that any NV card that supports it has fewer than 4
units. Maybe just provide an artificially low cap of 4 until a better
or simpler approach can be found.
Having a vertex shader throw a compiler error on texture2D (which is
currently the case) is frustrating, as it's a very useful feature that