Хайль всем.
Создаю маску для наложения тени, возникла проблема - все мои примитивы рисуются с четкой границей (just as planned). Чтобы не было такой границы света, делаю Blur для маски. Все работает. Но хочется ускорить blur раз в 10 (сейчас размытие картинки 800х600 на уровне размытия 2 занимает примерно секунду. Хочу ускорить процесс.
Как делаю размытие - Вначале создаю массив размером LEVEL * 2 + 1, который заполняю коэффициентами, потом используя данный массив заполняю копию текстуры, суммируя цвета по маске, затем деля на сумму ячеек. Потом замещаю исходное изображение измененной копией.
Есть что-то побыстрей? Снизить время надобно минимум раза в 4. Мой метод дает примерно (на изображение 800 * 600 и уровнем 2):
- 480 000 операций деления.
- ~ 4 320 000 операций сложения.
- 480 000 операций копирования ячейки.
- 9 эпических вычислений по особоизощренной негауссовой формуле.
Ответ для тех, кто спросит, зачем я работаю с копией, а потом её копирую: если работать все время с изображением, то при расчете Y+1,X ячейки она будет использовать не Y, X, а (Y,X)`, поскольку Y,X уже была изменена и перезаписана.
P.S. Если есть какой-нибудь интересный способ типа наложения битовой маски каким-нибудь изощрённым, но быстрым способом - welcome.