D2X-XL Worklog
Notes on features and problems from the development of D2X-XL, newest first.
Performance Boost On Low-End Hardware! |
|
I have finally had a chance to debug D2X-XL on some low end graphics hardware (Intel IGP) and look into why it was so unbearably slow there even with shader usage turned off or pureD2 mode enabled. It turned out that using a single graphics driver function was the culprit. Copying the depth buffer to a texture on weak graphics hardware can take about a quarter of a second. Now D2X-XL uses this feature extensively for improving transparency rendering by applying some soft blending with opaque geometry. This means that you are down to less than 4 fps whenever D2X-XL needs to read the depth buffer for a couple of frames (or longer). Fixing this was very easy. D2X-XL will now do some performance measurements when using this function for the first couple of times, and if it proves to be too slow, all functions relying on it are turned off (apart from corona rendering these are mainly used for soft blending smoke particles, explosions and energy sparks - something that only works fast enough on high end hardware anyway). Another optimization I have done as a side effect of my research was to make sure that D2X-XL will only read the depth buffer when it has determined that it actually needs it - until now the transparency renderer just assumed it would need it without verifying this, which could result in lowered performance on hardware you wouldn't have expected from to suffer so much when rendering D2X-XL. Now this is already good news. What makes it even better though is that you can now keep shader usage enabled on low end graphics hardware and enjoy
all the other benefits of it, like lightmap based lighting and other prettifications D2X-XL applies. |



