devIL supports dds, we should too.
as for the auto-facet code, it should look something like this
for(each polygon (A) ){
for(each vertex (V) in the polygon){
V.norm = A.norm
for(every other poly(B) the vertex (position component) is used in){
if( dot(A.norm,B.norm) < A.facet_angle )
V.norm += B.norm
}
normalize(V.norm)
}
}
there realy arent a lot of short cuts you can make, you can not for example, set the normal of two polygon verts at the same time if they are within each other's angle, because there may be another norm that is one normal's angle that is not in the other.
as long as load times for models are less than 30 seconds I don't think anyone is going to complain.
alternatively, you could attempt to figure out a way of supporting smooth groups, however this would likely require writing a custom shader for TS.