Re[17]: Silverligth + cross-platform CLR
От: McSeem2 США http://www.antigrain.com
Дата: 08.05.07 20:14
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>>Это все сказки, не подкрепленные какими либо цифрами. Ты возьми, посчитай, сколько потребуется времени на пересылку по PCI-E текстур для самой навороченной двухмерной сцены.


Кстати, легко — это примерно вчетверо быстрее, чем BitBlt полноцветной 32-bpp картинки. Это очень медленно.

AVK>>Не забудь про сжатие текстур, кстати.

MS>>Предполагаю, что сравнимо с временем растеризации. Возможно, даже существенно дольше.
AVK>Вряд ли. Алгоритм там сверхпримитивный.

Кстати говоря, забыл спросить — какое такое сжатие? S3TC (sometimes also called DXTn or DXTC) — это действительно примитивная компрессия с потерей качества. Причем, нет никакой возможности управлять уровнем качества. И доступна она только для цветных текстур. То есть, для передачи растеризованного альфа-канала категорически непригодна. А других типов компрессии, понимаемых видео-железом пока не существует.

Складывается впечатление, что апологеты Микрософт живут в какой-то иллюзорной стране чудес, где, например, и шрифты с кривыми Безье могут рендериться с аппаратным ускорением.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[18]: Silverligth + cross-platform CLR
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 09.05.07 13:50
Оценка:
Здравствуйте, McSeem2, Вы писали:

MS>Это распространенный миф. FSAA очень и очень небесплатен. Как только задействуются пиксельные шейдеры


А если не задействуют, то бесплатен. Это пример, понимаешь.

AVK>>Важно. Потому что Z-буфер реализован аппаратно. И аппаратный блендинг реализован с его помощью. Любой другой способ в лучшем случае удастся реализовать на шейдерах, а в худшем придется вобще отказаться от железной поддержки.


MS>Ты ошибаешься. Z-буфер работает не так.


Я нигде и не говорил, как работает Z-буфер. Я сказал другое — WPF использует аппаратный Z-буфер.

MS>Короче, я выяснил, что в SL никакой Direct3D не используется.


На данном этапе вполне возможно. Он еще в очень сыром состоянии, даже GoLive беты нет. WPF тоже довольно долгое время рендерил через GDI.
... << RSDN@Home 1.2.0 alpha rev. 675 on Windows Vista 6.0.6000.0>>
AVK Blog
Re[18]: Silverligth + cross-platform CLR
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 09.05.07 13:50
Оценка:
Здравствуйте, McSeem2, Вы писали:

MS>Складывается впечатление, что апологеты Микрософт живут в какой-то иллюзорной стране чудес, где, например, и шрифты с кривыми Безье могут рендериться с аппаратным ускорением.


Я такое когда нибудь говорил?
... << RSDN@Home 1.2.0 alpha rev. 675 on Windows Vista 6.0.6000.0>>
AVK Blog
Re[19]: Silverligth + cross-platform CLR
От: McSeem2 США http://www.antigrain.com
Дата: 09.05.07 14:59
Оценка:
Здравствуйте, AndrewVK, Вы писали:

MS>>Это распространенный миф. FSAA очень и очень небесплатен. Как только задействуются пиксельные шейдеры


AVK>А если не задействуют, то бесплатен. Это пример, понимаешь.


Тоже небесплатен. Его можно считать условно бесплатным до тех пор, пока софт не успевает загружать конвейеры видеокарты по самые уши. А когда удается утилизировать 100% ресурсов видеокарты, то разница даже с 6x FSAA составляет 2-4 раза. Но как мы выяснили по наличию швов, WPF использует софтварную растеризацию с Edge AA. Соответственно, FSAA там будет только мешаться.

AVK>Я нигде и не говорил, как работает Z-буфер. Я сказал другое — WPF использует аппаратный Z-буфер.


А я объяснил как он работает и привел доводы в пользу того, что WPF не может использовать аппаратный Z-буфер. Еще раз: Z-буфер работает с Z-координатой, линейно интерполируемой по плоскости треугольника, но он никак не может задействовать значения пикселов из текстуры.

В общем, так и не понятно, что же именно в WPF рисуется аппаратно ускоренно. Нигде не нашел четкой информации — все какие-то обрывки и слухи. Подозреваю, что просто-напросто софтварно рендерится битмап целиком (от начала и до конца), который потом можно "натянуть" на произвольную 3D поверхность. А сомнения есть еще и потому, что спецификация векторной графики в XAML фактически содрана с SVG. И там и там есть много деталей, входящих в противоречие с устройством конвейеров в апрпаратных ускорителях.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[20]: Silverligth + cross-platform CLR
От: VladD2 Российская Империя www.nemerle.org
Дата: 09.05.07 15:33
Оценка:
Здравствуйте, McSeem2, Вы писали:

MS>А я объяснил как он работает и привел доводы в пользу того, что WPF не может использовать аппаратный Z-буфер. Еще раз: Z-буфер работает с Z-координатой, линейно интерполируемой по плоскости треугольника, но он никак не может задействовать значения пикселов из текстуры.


А зачем ему знать что там за пискель? Текстуры сдят на мешах. Меши z-буфером отскаются. Далее остается только сгенерить изображение из того что получилось.

В общем, что ты ты загибаешь.

Мои эксперементы с WPF показали, что как раз все что связано с отображением текстур там акселерируется. Проблемы с созданием самих текстур. Вот эта задача не решена никак. WPF это в первую очередь средство создания ГУИ. А ГУИ, как это не прискорбно, в 90% случаев выводит на экран динамический текст. Это полностью нивелирует весь выигрышь в некоторых (весьма распространенных) задачах. От того WPF интерфейсы частенько при всей своей красивости не шибко информативные.

В прочем, к вопросу отсечения геометрических фигур это никак не относится.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[20]: Silverligth + cross-platform CLR
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 09.05.07 17:02
Оценка:
Здравствуйте, McSeem2, Вы писали:

MS>Соответственно, FSAA там будет только мешаться.


Блин, такое ощущение что ты читаешь по диагонали. Это пример, понимаешь, ПРИМЕР. Пример того, что далеко не всегда с амые быстрые алгоритмы в итоге позволят получить самый быстрый результат.

AVK>>Я нигде и не говорил, как работает Z-буфер. Я сказал другое — WPF использует аппаратный Z-буфер.


MS>А я объяснил как он работает и привел доводы в пользу того, что WPF не может использовать аппаратный Z-буфер.


Твои доводы ничего не стоят, потому что не соответствуют действительности.

MS>В общем, так и не понятно, что же именно в WPF рисуется аппаратно ускоренно. Нигде не нашел четкой информации — все какие-то обрывки и слухи.


Задай вопрос в соотв. форуме на MSDN, тебе скажут где поглядеть. Мне в свое время кое что в MSDN попадалось.
... << RSDN@Home 1.2.0 alpha rev. 675 on Windows Vista 6.0.6000.0>>
AVK Blog
Re[21]: Silverligth + cross-platform CLR
От: McSeem2 США http://www.antigrain.com
Дата: 09.05.07 18:06
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>А зачем ему знать что там за пискель? Текстуры сдят на мешах. Меши z-буфером отскаются. Далее остается только сгенерить изображение из того что получилось.


Объясняю популярно. Текстура растеризуется софтварно, так? Возьмем для примера круг. Теперь, чтобы его отобразить, надо выполнить два действия. Во-первых, загрузить текстуру в видеопамять — это просто. Во-вторых, надо сделать сетку. Для простой плоскости сетка представляеь собой два смежных треугольника, покрывающих текстуру. Z-буфер будет работать с этой сеткой, ничего не зная о содержимом текстуры. В результате, в случае с плоскостью, операция с Z-буфером "выкусит" целый прямоугольник, покрывающий текстуру, в то время, как нам требуется модифицировать только те пикселы в Z-буфере, которые имеют ненулевую альфу в нашей текстуре. А Z-буфер про текстуру ничего не знает. И даже не знает, что там у нас — текстура или сплошной цвет. Ну так вот он устроен.

Но это все фигня. Как только среди полигонов встречается хотя бы один полупрозрачный, то все — про Z-буфер можно забыть. Даже если один полу-прозрачный пиксел. А в растеризованных текстурах этих полупролзрачнгых пикселов много, даже если сам полигон непрозрачный (догадайся, почему).
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[21]: Silverligth + cross-platform CLR
От: McSeem2 США http://www.antigrain.com
Дата: 09.05.07 18:40
Оценка:
Здравствуйте, AndrewVK, Вы писали:

MS>>А я объяснил как он работает и привел доводы в пользу того, что WPF не может использовать аппаратный Z-буфер.


AVK>Твои доводы ничего не стоят, потому что не соответствуют действительности.


Ну тогда тебе придется подкрепить свои слова чем нибудь более надежным, чем голословные утверждения. Итак, откуда дровишки?
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[22]: Silverligth + cross-platform CLR
От: Слоноежик  
Дата: 10.05.07 07:47
Оценка:
Здравствуйте, McSeem2, Вы писали:
MS>Z-буфер будет работать с этой сеткой, ничего не зная о содержимом текстуры. В результате, в случае с плоскостью, операция с Z-буфером "выкусит" целый прямоугольник, покрывающий текстуру, в то время, как нам требуется модифицировать только те пикселы в Z-буфере, которые имеют ненулевую альфу в нашей текстуре. А Z-буфер про текстуру ничего не знает. И даже не знает, что там у нас — текстура или сплошной цвет. Ну так вот он устроен.
MS>Но это все фигня. Как только среди полигонов встречается хотя бы один полупрозрачный, то все — про Z-буфер можно забыть. Даже если один полу-прозрачный пиксел. А в растеризованных текстурах этих полупролзрачнгых пикселов много, даже если сам полигон непрозрачный (догадайся, почему).

Если мне не изменяет память, игрался с 8-м директ3D довольно давно, то Z-буфер вообще работает с экранными пикселями, и там еще есть логика когда обновлять содержимое Z буфера, и как раз про полигоны то он ничего и не знает. Да и насколько помню выкусыванием полигонов занимаются немного другие алгоритмы, там тоже используется Z но только это Z составляющая вектора нормали.
для забивания гвоздя надо выбирать правильный микроскоп.
Re[22]: Silverligth + cross-platform CLR
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 10.05.07 08:11
Оценка:
Здравствуйте, McSeem2, Вы писали:

MS>В результате, в случае с плоскостью, операция с Z-буфером "выкусит" целый прямоугольник


С чего бы это? Z-буфер хранит глубину каждого пикселя результирующего изображения. Так что ничего он выкусывать не будет. Выкидывание целых полигонов это совсем другие алгоритмы.

MS> А Z-буфер про текстуру ничего не знает. И даже не знает, что там у нас — текстура или сплошной цвет.


MS>Но это все фигня. Как только среди полигонов встречается хотя бы один полупрозрачный, то все — про Z-буфер можно забыть. Даже если один полу-прозрачный пиксел.


Все это здорово. Непонятно только одно — как современные ускорители справляются с альфа-блендингом.
... << RSDN@Home 1.2.0 alpha rev. 675>>
AVK Blog
Re[22]: Silverligth + cross-platform CLR
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 10.05.07 08:52
Оценка:
Здравствуйте, McSeem2, Вы писали:

MS>Ну тогда тебе придется подкрепить свои слова чем нибудь более надежным, чем голословные утверждения. Итак, откуда дровишки?


Извини, но точных ссылок у меня нет. Базовые сведения по аппаратной акселерации WFP — http://msdn2.microsoft.com/en-us/library/ms742196.aspx . Дальше, если интерсны детали, скачиваешь SDK, там есть утилитка XAMLPad, которая позволяет поиграться с геометрией, и утилитка WpfPerf, которая позволит посмотреть, что и где там происходит в плане рендеринга.
... << RSDN@Home 1.2.0 alpha rev. 675>>
AVK Blog
Re[23]: Silverligth + cross-platform CLR
От: WolfHound  
Дата: 10.05.07 09:15
Оценка: +1
Здравствуйте, AndrewVK, Вы писали:

AVK>С чего бы это? Z-буфер хранит глубину каждого пикселя результирующего изображения. Так что ничего он выкусывать не будет. Выкидывание целых полигонов это совсем другие алгоритмы.

Максим говорит о том что если ты вывел некоторую текстуру натянутую на пару треугольников то в Z-buffer'е будет прямоугольних заполнений Z'ом этих треугольников. И ты больше ничего не сможешь вывести под этим прямоугольником даже если он полупрозрачный.

AVK>Все это здорово. Непонятно только одно — как современные ускорители справляются с альфа-блендингом.

Полигоны сортируют перед выводом.
Вобще умные игрушки сначала выводят все полностью не прозрачние полигоны. Причем сначала выводят ближайшие. Это позволяет ускорителю не заморачиваться с расчетом цвета пикселя ибо происходит отсечка по Z-buffer'у. А потом прозрачные. Но прозрачные нужно сначала выводить самые дальние. Это нужно чтобы несколько перекрывающихся полупрозрачных поверхностей наложились правильно.
... << RSDN@Home 1.2.0 alpha rev. 673>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[22]: Silverligth + cross-platform CLR
От: VladD2 Российская Империя www.nemerle.org
Дата: 10.05.07 09:34
Оценка:
Здравствуйте, McSeem2, Вы писали:

MS>Здравствуйте, VladD2, Вы писали:


VD>>А зачем ему знать что там за пискель? Текстуры сдят на мешах. Меши z-буфером отскаются. Далее остается только сгенерить изображение из того что получилось.


MS>Объясняю популярно. Текстура растеризуется софтварно, так?

MS> Возьмем для примера круг.

Ага. Но если ты рисуешь скажем текстурированный круг, то как я понимаю сам круг будет мешью. И стало быть z-бужер будет пахать по полной программе.

Куча ошибочных предположений поскипана.

MS> А Z-буфер про текстуру ничего не знает.


Как это не знает? Z-буфер берет пиксель из меши и переносит его в свою памтять давая ему признак глубины.

MS>Но это все фигня. Как только среди полигонов встречается хотя бы один полупрозрачный, то все — про Z-буфер можно забыть.


То же не верное предположение. Альфаблэндинг тоже выполняется аппоратно современными видюхами. И в WPF море примеров использования этого факта. В них полупрозрачные фишки крутятся в риалтайме как тебе захочется.

MS> Даже если один полу-прозрачный пиксел. А в растеризованных текстурах этих полупролзрачнгых пикселов много, даже если сам полигон непрозрачный (догадайся, почему).


Немогу дагадаться. Особенно сбивает то, что я сам видел отличню работу этого всего.

Еще раз повторюсь. Единственная проблема — это формирование самой текстуры. Особая проблема — это текст. Вот он тормозит безбожно. Даже хуже чем в ГДИ. В прочем современные процессоры работают довольно шустро и на них это не так заметно.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[23]: Silverligth + cross-platform CLR
От: Cyberax Марс  
Дата: 10.05.07 10:12
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Ага. Но если ты рисуешь скажем текстурированный круг, то как я понимаю сам круг будет мешью. И стало быть z-бужер будет пахать по полной программе.

Z-буффер тебе не поможет даже для полупрозрачных кругов в виде сеток. Так как в Z-буффер при выводе полупрозрачной геометрии писать нельзя.

VD>Как это не знает? Z-буфер берет пиксель из меши и переносит его в свою памтять давая ему признак глубины.

Не знает. Он работает с треугольниками, то есть просто делает интерполяцию по двум координатам. С шейдерами что-нибудь можно было бы сочинить, но с полупрозрачными треугольниками все равно и они не помогут.
Sapienti sat!
Re[24]: Silverligth + cross-platform CLR
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 10.05.07 11:01
Оценка: +1
Здравствуйте, Cyberax, Вы писали:

C>Z-буффер тебе не поможет даже для полупрозрачных кругов в виде сеток.


А никто нигде и не писал, что альфа-блендингом занимается z-буфер. Тут конечно очень насточиво меняли тему, но исходный вопрос был об оверхеде на перекрытие элементов. Так вот — если они непрозрачны, то z-буфер прекрасно работает, а если полупрозрачны, то тут любой алгоритм должен отрисовать все такие полигоны по честному. Но, при этом, этот самый блендинг современные видюшки тоже выполняют аппаратно.
... << RSDN@Home 1.2.0 alpha rev. 675>>
AVK Blog
Re[23]: Silverligth + cross-platform CLR
От: McSeem2 США http://www.antigrain.com
Дата: 10.05.07 12:44
Оценка: 1 (1)
Здравствуйте, VladD2, Вы писали:

VD>Ага. Но если ты рисуешь скажем текстурированный круг, то как я понимаю сам круг будет мешью. И стало быть z-бужер будет пахать по полной программе.


Для того, чтобы круг был треугольной сеткой, его надо триангулировать. Для произвольного полигона эта задача является весьма нетривиальной. В нашем же случае весь меш — это описанный квадрат, порубанный на два треугольника и все.

VD>Как это не знает? Z-буфер берет пиксель из меши и переносит его в свою памтять давая ему признак глубины.


А признак глубины — это Z-координата, линейно интерполируемая по треугольникам. В частном случае чистого 2D она является банальной константой.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[25]: Silverligth + cross-platform CLR
От: McSeem2 США http://www.antigrain.com
Дата: 10.05.07 12:54
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>А никто нигде и не писал, что альфа-блендингом занимается z-буфер. Тут конечно очень насточиво меняли тему, но исходный вопрос был об оверхеде на перекрытие элементов. Так вот — если они непрозрачны, то z-буфер прекрасно работает,


Он "прекрасно работает" только с честной сеткой. Для чего надо триангулировать полигоны в векторном виде.

AVK>а если полупрозрачны, то тут любой алгоритм должен отрисовать все такие полигоны по честному.


А теперь смотри, что получается. Текстура натянута на прямоугольник, порубанный на два треугольника. При этом часть квадрата (внутренность полигона) у нас непрозначна, другая часть — полностью прозрачна, пикселы на границе — полупрозрачны. Теперь думаем, где здесь место для Z-буфера.

AVK>Но, при этом, этот самый блендинг современные видюшки тоже выполняют аппаратно.


Безусловно, но Z-буфер здесь ни при чем.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[26]: Silverligth + cross-platform CLR
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 10.05.07 13:04
Оценка:
Здравствуйте, McSeem2, Вы писали:

MS>Безусловно, но Z-буфер здесь ни при чем.


А я обратного и не говорил.
... << RSDN@Home 1.2.0 alpha rev. 675>>
AVK Blog
Re[24]: Silverligth + cross-platform CLR
От: VladD2 Российская Империя www.nemerle.org
Дата: 10.05.07 15:25
Оценка:
Здравствуйте, McSeem2, Вы писали:

MS>Для того, чтобы круг был треугольной сеткой, его надо триангулировать. Для произвольного полигона эта задача является весьма нетривиальной. В нашем же случае весь меш — это описанный квадрат, порубанный на два треугольника и все.


Что обсуждать уже работающую технологию?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[23]: Silverligth + cross-platform CLR
От: VladD2 Российская Империя www.nemerle.org
Дата: 10.05.07 15:25
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, McSeem2, Вы писали:


MS>>Ну тогда тебе придется подкрепить свои слова чем нибудь более надежным, чем голословные утверждения. Итак, откуда дровишки?


AVK>Извини, но точных ссылок у меня нет. Базовые сведения по аппаратной акселерации WFP — http://msdn2.microsoft.com/en-us/library/ms742196.aspx . Дальше, если интерсны детали, скачиваешь SDK, там есть утилитка XAMLPad, которая позволяет поиграться с геометрией, и утилитка WpfPerf, которая позволит посмотреть, что и где там происходит в плане рендеринга.


Хм. Забавно "Sub-pixel font rendering uses available pixel shaders on the graphics hardware." что-то я не заметил ускорения рендеринга фортов.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.