В чистом AS3 у меня есть pixelbender и большой точечный рисунок. Пиксель можно настроить с помощью параметра расстояния, который влияет только на небольшую область растрового изображения. Проблема в том, что pixelbender выполняется по всему растровому изображению. Каков наилучший способ обновить только обработанную область растрового изображения?
С учетом этой конфигурации:
shader.data.image.input = referenceBitmap.bitmapData; // 300x200
shader.data.position = [150,100];
shader.data.distance = [20];
Не работает следующее:
new ShaderJob(shader,
bitmap.bitmapData.getPixels(
new Rectangle(particle.x -10,
particle.y -10,
20,
20))).start();
Я мог бы создать временный массив для хранения вычисленных значений, а затем скопировать их обратно в массив bitmapData. Хотя я бы хотел, чтобы шейдер обновлял пиксели bitmapData напрямую и только в уязвимой области.
Следующее работает, но шейдер работает на всем растровом изображении 300x200:
new ShaderJob(shader, bitmap.bitmapData).start();
Есть предложения?
РЕДАКТИРОВАТЬ: фильтр не будет работать, поскольку есть 3 входных изображения