ФОРУМ

Список разделов форума => Статьи => : Robot 21 Apr 2010 - 21:10:40



: Порядко-независимая прозрачность на GPU с использованием динамических списков
: Robot 21 Apr 2010 - 21:10:40
Порядко-независимая прозрачность на GPU с использованием динамических списков

Евгений Коростелев "kore3d"

В статье рассматриваются существующие технологии визуализации полупрозрачных
объектов с использованием графических процессоров и предлагается модифицированный метод
порядко-независимой прозрачности с использованием динамических списков слоев прозрачности.


http://www.uraldev.ru/articles/id/36 (http://www.uraldev.ru/articles/id/36)


: Порядко-независимая прозрачность на GPU с использованием динамических списков
: Mikle 26 Apr 2010 - 13:29:27
Я так понял, на GF9600GT пытаться запустить демку бесполезно? А хотя бы на карте, которую тут дают за 1 место, она пойдёт?


: Порядко-независимая прозрачность на GPU с использованием динамических списков
: Romanek 26 Apr 2010 - 13:59:53
Нет не пойдет. NVidia поддерживает DX 11 только на самой последней серии карт 4xx, что кстати в статье указано
Прочел статью. По существу все довольно доступно и понятно (хотя, возможно, мне так показалось, потому что сам ковырял OIT). Единственный минус на мой взгляд она очень "научная" чтоли, но это наверное тоже чисто субъективно.


: Порядко-независимая прозрачность на GPU с использованием динамических списков
: keYMax 27 Apr 2010 - 21:47:47
А запуск демо в софтваре режиме возможен?


: Порядко-независимая прозрачность на GPU с использованием динамических списков
: kore3d 27 Apr 2010 - 22:28:03
да, если HAL не удается создать, то должен REF создаваться, но только тогда еще лучше указать в параметрах командной строки маленькое разрешение экрана. "OIT_DX11_64.exe 128 128" дает 0.1 fps


: Порядко-независимая прозрачность на GPU с использованием динамических списков
: kore3d 27 Apr 2010 - 22:36:37
и еще, рекомендуется создать папку media\shader\cache, тогда будет кэширование шейдеров и не придется каждый раз при запуске ждать компиляцию. Для OIT_DX11_64.exe время компиляции шейдеров - более 10 секунд.


: Порядко-независимая прозрачность на GPU с использованием динамических списков
: keYMax 08 May 2010 - 23:34:05
Не удается запустить exe с вашими рекомендациями на win 7. Может что то можно в сорцах подправить?


: Порядко-независимая прозрачность на GPU с использованием динамических списков
: kore3d 09 May 2010 - 12:46:32
: keYmax
Не удается запустить exe с вашими рекомендациями на win 7. Может что то можно в сорцах подправить?
Можно и подправить, но в этом, вероятно, нет необходимости. Если есть возможность собраться с сорсов, то в OutputDebug будет указано, что не сработало.
Каталог media рядом есть? - exe берет оттуда шейдеры, модели и текстуры

Предыдущие посты проверены на архиве kore_oit11_dlists_x86_win7.zip


: Порядко-независимая прозрачность на GPU с использованием динамических списков
: kore3d 22 May 2010 - 16:08:12
обнаружил опечатку в коде
у сэмплера текстуры патиклов неверная фильтрация указана D3D11_FILTER_MIN_MAG_POINT_MIP_LINEAR - должно быть D3D11_FILTER_MIN_MAG_LINEAR_MIP_POINT (k3d_oit11_d3d.h:774)


: Порядко-независимая прозрачность на GPU с использованием динамических списков
: kore3d 30 Jun 2010 - 00:32:59
если кому интересно, на GTX 480 от 80 до 160 fps при 64 слоях (в зависимости от ракурса)


: Порядко-независимая прозрачность на GPU с использованием динамических списков
: kore3d 03 Sep 2010 - 15:46:27
MSI GTX 470, 800x600
8 - 97 fps, 16 - 90 fps, 32 - 73 fps, 64 - 58 fps

* в draw.vs есть опечатка, должно быть oNormal = mul(cMatrW, float4(iNormal, 0.0f)).xyz;
с учетом того, что нормали не используются - это не существенно)


: Порядко-независимая прозрачность на GPU с использованием динамических списков
: keYMax 06 Sep 2010 - 01:00:02
не сказать чтобы шустро конечно
интересно на радике 5870 сколько будет


: Порядко-независимая прозрачность на GPU с использованием динамических списков
: kore3d 06 Sep 2010 - 17:30:59
: keYmax
не сказать чтобы шустро конечно
интересно на радике 5870 сколько будет
слоев много, на реальной сцене обычно поменьше
плюс NVIDIA рекомендует делать описанный OIT через append-буфер, а не через скрытый счетчик structured-буфера. В статье используется счетчик, поскольку для карт AMD этот вариант эффективнее. Кроме этого, на момент написания, эти детали были не известны.

если в двух словах о производительности, то при включенном OIT (для 64 слоев) она падает на порядок - многова-то, конечно


: Порядко-независимая прозрачность на GPU с использованием динамических списков
: kore3d 12 Sep 2011 - 16:40:14
Вот здесь представлено 2 идеи по улучшению техники: http://software.intel.com/en-us/articles/a...e-transparency/ (http://software.intel.com/en-us/articles/adaptive-transparency/)
как убрать сортировку - ввести апроксимирующую функцию видимости (от глубины) и хранить ее значения в фиксированном числе точек; при блендинге домножать цвет на альфу и значение этой функции