The attributes file looks something like this:
"Cloud02_scatterMap" backlightRange="64" />
"Tree2_scatterMap" backlightRange="6" />
"Tree3_scatterMap" backlightRange="6" />
Each file node gets parsed and passed down to the image filter, so it doesn't have to deal with xml or parsing at all, which is nice.
And the end result:
As you can see the bigger range used on the clouds gives them a much softer, glowing appearence. Tails remains as before with the default range of 10 pixels, and the trees have had their edge highlights sharpened up by dropping the range to 6.
I'm not really too happy with the preprocessing code in general. It started out as someone else's code and it's quite crude in places. I've been slowly refactoring it over the last couple of months when it's needed extending, but it's very difficult to get certain bits of it under unit tests. It's largely one big monolithic class in some places which doesn't help much.
Still, it works well enough and I've got enough tests under it now that any breakages get spotted right away. I'm also adding more output and error messages to make it more user friendly when something goes wrong instead of just random exceptions and stack traces.