Tuesday, January 26, 2010

Random Stuff

  • I've done some work on making occlusion queries behave themselves better in certain scenarios. Now, if an entity was outside the view frustum or not updated from the server in the last frame, it will be automatically considered "not occluded", even if the previous occlusion query result indicated that it was occluded. This code change is currently out for testing, but hopefully it should resolve some edge cases where an entity that shouldn't have been occluded got a false positive. It means dropping a handful of frames, but I've upped the cutoff point at which queries are run from 24 triangles to 96, which gains back and more.
  • The new water shader is quite nice; moving calculations from the pixel shader back to the vertex shader where possible gives quite significant speedups, and - in cases where the op is addition or multiplication - linear texture interpolation means no appreciable visual deterioration. I also reduced it from two sin instructions per pixel to one, but at a tradeoff of more instructions per vertex, which I figure is fair. I might convert this sin to a texture lookup at some point, but right now there doesn't seem to be a need to.
  • DirectQ currently doesn't use 32-byte-aligned vertexes; I have tested this a number of times in the past, and most recently today, but it's always turned out to be the case that the extra vertex submission load makes things an even balance.
  • I've just put in quite a cheesy hack to use a Shader Model 3 profile on hardware that supports it. There's no difference in the shaders used or in the visual output, but performance improves slightly.
  • While I remain fond of Intel graphics hardware (cheap, cheerful, predictable, good enough, common) the wildcard in this pack is still the 965. On paper it should be better than the 910 and the 945; in practice it falls quite far behind. The 945 is king of the Intel hill for DirectQ, and is capable of turning in some quite astonishing framerates (300+, despite no hardware T&L). The 910 is a little fighter, slower of course but still very capable. The 965 seems to be little more than a Vista desktop accelerator, having the bare minimum feature set required to render Aero but being borderline rubbish for anything beyond that. More recent models (4 series) are catching up to 945 perf, but still not quite there. DirectQ will still perform and behave better on any of these than any comparable OpenGL engine would.
  • It should go without saying, but if you encounter a DirectQ crash or rendering glitch your first action should be to update your drivers and your DirectX. Always. Likewise if you're overclocking or using any form of "tuned" or "optimized" driver - stop doing it and see if the problem goes away.

0 comments: