check gpu's support for specific features

for my renderer, i need a reliable way to detect (at startup) if a gpu can handle the following:

  • HDR
  • hardware shadow mapping for point lights via sampler2DShadow/shadow2D(Proj)
  • hardware shadow mapping for omnidirectional lights via samplerCubeShadow/shadowCube
  • Automatic bilinear filtering for 2d shadow maps
  • Automatic bilinear filtering for cubic shadow maps

any ideas? to check for hdr support i could try to setup such an fbo and check its status, ok… what about the shadow features? thanks :slight_smile:

there are two ways to go, both involves detecting specific extensions using the extension string

#1 directly detect the actual extension that support these features, you could search trough the extension registry to find those.

#2 find out which cards support which and then try to detect the individual cards by analyzing the specific extensions each generation add.

i find #1 works pretty well in most situations.

  • HDR
    Not a hardware effect. It is a rendering effect that can be implemented in a number of ways, many of them requiring certain hardware effects.
  • hardware shadow mapping for point lights via sampler2DShadow/shadow2D(Proj)
  • Automatic bilinear filtering for 2d shadow maps
    This is hidden beneath the abstraction layer.
  • hardware shadow mapping for omnidirectional lights via samplerCubeShadow/shadowCube
  • Automatic bilinear filtering for cubic shadow maps
    To access these features at all, you have to have a certain extension.

Originally posted by Vexator:
for my renderer, i need a reliable way to detect (at startup) if a gpu can handle…
If you want to find out if a feature is supported in hardware, there’s no easy way right now - it’ll silently go into software mode.

Once GL3 comes out, anything that isn’t hardware-accelerated just won’t be created - the object returned will be NULL, or some other indicator of failure. Until then, you just have to hope you don’t hit a software path.

Now, if you just want to find out if it can be rendered, whether it be in hardware or software, you just have to check for the right extensions, the the previous posters said.