Дописал демку с блендингом плоскостей, которая использует различные методы: блендинг через ROP и используя atomic операции над различными UAV. Про результаты я уже писал, поэтому привожу только ссылку:
Интересно, конечно, было бы потестировать это на GF100. Если у кого-то руки дойдут до этого, дайте знать! Также, если хочется посмотреть на артефакты read/write contention, откройте файл "MEDIA/shaders/source/incr.psh" и закомментируйте строчку USE_ATOMICS.
пятница, 22 января 2010 г.
Подписаться на:
Комментарии к сообщению (Atom)
Можете объяснить почему в тесте нужны интерлоки, а в демке оит нет? Набросал свой вариант оит и вчера запустил на железке - вижу артефакты похожие на read/write contention. Если делать без интерлоков, то как избавиться? - что-то позвать между диспатчами?
ОтветитьУдалитьБез интерлоков можно попробовать обойтись, если кол-во read-write операций над одним участком памяти невелико. Если операций много, шанс, что произойдёт contention, увеличивается и нужно сериализовать с помощью атомических операций. Вообще в OIT конечно тоже надо было вставить InterlockedAdd().
ОтветитьУдалитьСпасибо за ответ.
ОтветитьУдалитьВсе равно как-то странно. Если что-то может произойти, то оно обязательно произойдет, и делать OIT без интерлоков - это, наверно, рисково. Но почему-то же они не добавили в сэмпл их - может, конечно, по той же причине что и тредблок 1x1x1. Странно еще то, что в февральском 2010 сдк примеры ничуть не изменились. Может все-таки как-то можно жить стабильно без интерлоков?
Кстати, мне кажется, что как раз из-за отсутствия атомарных операций в CS4 нету RW-буферов, т.к. толку от таких буферов без них ноль.