Сейчас приведу свой ошмёток уровня в порядок и покажу, что у меня вышло при помощи множества func_dustcloud, которые пусть и не позволяют выбрать спрайт дыма, но зато имеют жоский контроль количества спрайтов и их дистанцию видимости. Кажись, я нашёл то, что искал.
Кстати, "родные" смокволумы и дастклоуды имеют более адекватное поведение своих полупрозрачных спрайтов, чем, скажем, те же партиклы или модели. Не то, чтобы там был тест глубины, но как-то иначе они рендерятся.