Просмотр полной версии : Выборка пикселей
Решил все же глянуть на этого "зверя". Как я могу получить доступ к определенному количеству пикселей (сразу), заданному в качестве входного значения? Как получить значение одиночного пикселя по координатам знаю, нескольких - нет. Я правильно понимаю, что в ПБ отсутствуют циклы? Как правильно поступать в таких ситуациях?
Zebestov
27.06.2012, 12:53
Циклы да, отсутствуют ( из-за этого приходится копировать строки вручную. А как поступать — уже по месту решать надо, либо отступить, либо исхитриться )
Исхитриться? :) Изначально была идея написать простенький blur с указанием интенсивности и направления (горизонтально и вертикально). В сети как-то не очень оптимистично. Был бы рад подсказке.
Zebestov
27.06.2012, 13:04
Суть (http://www.gamerendering.com/2008/10/11/gaussian-blur-filter-shader/).
Вот, кстати говоря - блур это конечно хорошо. А вот фильтр резкости был бы ещё лучше. В фотошопе можно резкость увеличить ( прямого фильтра нет, но с помощью несложных манипуляций), а во флеше нет. Хорошая была бы вещица...
В фотошопе можно резкость увеличить ( прямого фильтра нет, но с помощью несложных манипуляций)
Сорри за офтоп, как же нет? А фильтры из набора группы Sharpen?
Сорри за офтоп, как же нет? А фильтры из набора группы Sharpen?
Да, действительно, сори. Просто результат их работы не очень хороший, применяют другой способ, где-то видел в нескольких уроках, очень хорошо работает.
Вот, кстати говоря - блур это конечно хорошо. А вот фильтр резкости был бы ещё лучше. В фотошопе можно резкость увеличить ( прямого фильтра нет, но с помощью несложных манипуляций), а во флеше нет. Хорошая была бы вещица...
Вам бы тему отдельную создать.
Вот фильтр:
<languageVersion : 1.0;>
kernel Sharpen
< namespace : "Your Namespace";
vendor : "i.o.";
version : 1;
description : "your description";
>
{
input image4 src;
output pixel4 dst;
void evaluatePixel()
{
float2 outCr = outCoord();
float4 matCore00 = sampleNearest(src, outCr - float2(-1.0, -1.0));
float4 matCore01 = sampleNearest(src, outCr - float2( 0.0, -1.0));
float4 matCore02 = sampleNearest(src, outCr - float2(+1.0, -1.0));
float4 matCore10 = sampleNearest(src, outCr - float2(-1.0, 0.0));
float4 matCore11 = sampleNearest(src, outCr - float2( 0.0, 0.0));
float4 matCore12 = sampleNearest(src, outCr - float2(+1.0, 0.0));
float4 matCore20 = sampleNearest(src, outCr - float2(-1.0, +1.0));
float4 matCore21 = sampleNearest(src, outCr - float2( 0.0, +1.0));
float4 matCore22 = sampleNearest(src, outCr - float2(+1.0, +1.0));
dst = -0.1*matCore00 - 0.1*matCore01 - 0.1*matCore02
- 0.1*matCore10 + 1.8*matCore11 - 0.1*matCore12
- 0.1*matCore20 - 0.1*matCore21 - 0.1*matCore22;
}
}
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.