2011-05-12 3 views
2

Я использую WriteableBitmap в Silverlight как инструмент для временного хранения и, в конце концов, рисую результат моего алгоритма, чтобы нарисовать кажущуюся плоскую двумерную равномерно распределенную вселенную с конечным количеством дело.Гауссовское размытие на Silverlight WriteableBitmap

Для определения seee «вселенных» (Рисунок 3): http://alienryderflex.com/homogeneity/

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

Проблема в том, что мне нужно будет сделать гауссовское размытие изображения, чтобы уменьшить пикселизацию после масштабирования и масштабирования, что, если отсутствует, добавляет к частоте ошибок алгоритма.

Вы можете увидеть мою тестовую реализацию Here.

Если вы нажмете «Создать», затем «Рисовать», и подождите 20 секунд, вы увидите, что даже при пикселизации изображения видна.

Но мне нужна эта растровая карта вывода как «карта плотности материи» на втором этапе алгоритма.

Так как я могу сделать гауссовское размытие на этих перезаписываемых растровых изображениях? Я действительно хотел бы найти подходящую реализацию вместо того, чтобы писать свои собственные, что было бы очень трудоемким в массиве ints -> Holy christ no byte pointer на данных изображения?

Спасибо!

Edit:

Для уточнения: мне нужно гауссовые размытых данные обратно работать на нем: не только визуальное размытие на изображение.

ответ

1

Наилучший способ сделать это в серебристом письме, создавая собственный графический эффект. В silverlight 3 вы можете записать их как файлы DirectX .fx. Они будут аппаратными и будут избегать медленного копирования между различными изображениями.

Here - введение. Вероятно, есть лучшие, но вам это поможет. Замечательная вещь о пиксельных шейдерах заключается в том, что они настолько быстры, что вам не нужно беспокоиться об оптимизации.

+0

Я знаю, как закодировать гауссовское размытие HLSL, хотя это должно быть сделано за два прохода, и это чертовски больно сделать это в HLSL. Я сделал это уже здесь: http://marino.boletus.hr/3dpee.zip - НО! Мой единственный вопрос в этом отношении: можно ли получить данные растрового изображения после того, как пиксельный шейдер применил эффект? Мне нужны данные не только визуально. –

Смежные вопросы