/A\
> хардварное сжатие текстур, что сильно увеличивает пропускную способность
> памяти, но это только для рисования
интересно, это какое? есть чего почитать? ты же не про DXT/BC?
Mr F
если у тебя amd запусти RPG там показывается какие компрессии могут быть
Mr F
> интересно, это какое?
delta color compression, хардварное сжатие без потерь
/A\
> delta color compression
Ого, вот это кайф. Я помню лишь, что была некая лосслесс компрессия для MSAA текстур, чтобы не тупо каждый семпл на каждый пиксель хранить, но про вот это не слышал.
Mr F
> но про вот это не слышал.
нвидиа уже лет 5 этим хвастается, а мало кто из разработчиков знает...
столько усилий впустую.
/A\
> а мало кто из разработчиков знает...
> столько усилий впустую.
и как разрабы поимеют это явно ?
innuendo
> и как разрабы поимеют это явно ?
Иногда есть выбор делать алгоритм на компьют шейдерах или на фрагментных.
Какой-нибудь даунсэмплинг на фрагментном работает быстрее.
/A\
> Иногда есть выбор делать алгоритм на компьют шейдерах или на фрагментных.
прикольно - именно так и сделаны постпроцессы в UE
invis
> GL (фрагментный шейдер) быстрее до 1.5 раз.
Протестировал ещё на старой ноутбучной карте - GF-740m - разница ещё больше, аж 2 раза, и на маленькой картинке тоже. Память медленная, DDR3/64 бита. Есть ли там сжатие - точно нигде не сказано, но судя по тому, что в Паскале 4-е поколение сжатия, в Кеплере тоже должно быть.
Но может быть виноват старый компилятор OpenCL, драйвера там 2013-го года.
Ещё вспомнил про трюк, позволяющий сократить число выборок за счёт билинейки, где-то 1.5 раза он даёт:
http://rastergrid.com/blog/2010/09/efficient-gaussian-blur-with-l… ear-sampling/
Ну и на старых картах хорошо помогает захардкодить размер фильтра (компилятор полностью разворачивает цикл в шейдере), на 740m в 2 раза. На новых (1070) меньше, 10-15%.
А как правильно сделать свертку в сепарабельном пространстве , просто пройтись сначала по оси X , а потом оси Y "без всяких там разложений" . И всё ..!? или как это сделать верно ?
вот код без CUDA . просто на CPU
P.S: Если можно пример кода . можно и без CUDA .....
Помогите жебраку найти истину , и выйти из матрицы ....
Не пространство сепарабельное, а сам фильтр. Separable - разделяемый (на 2 прохода).
И смысл в том, что ты на вход второго прохода подсовываешь результат первого. Но для начала можно отдельно каждый проход тестировать.
По CPU-коду сложно понять, какой фильтр ты хотел изобразить - 3*3 (радиус = 1) или 7*7 (радиус = 3).
invis
3*3 (радиус = 1) ...!!!
werasaimon
курсовик ?
werasaimon
> 3*3 (радиус = 1) ...!!!
Тогда передаваемый в ф-ю радиус должен быть 1.
Ядро фильтра, которое у тебя kernel[9], нужно одномерное (3*1, а не 3*3).
invis
Правильно ли я понимаю что кофициенты для сапарабельной будут другими , нежели для обычной сверки .
А именно vx_3 * vy_3 = mat3×3
Где:
vx_3 - матрица столбец 1×3 для оси OX .
vy_3 - матрица строка 3×1 для оси OY .
mat3×3 - матрица ядра для обычной свертки .
Например у меня она такая
Матрица vx_3 будет ядром сверки по оси OX
Матрица vy_3 будет ядром сверки по оси OY
..
Вопрос как мне узнать значения векторов vx_3 и vy_3 , если мне известно только значения матрицы mat3x3 . Понятно что имеется виду узнать алгебраический , для любых заначений , для любого ранга матриц ...?
А не тупо подбирать ..!
Тема в архиве.