This topic contains 2 replies, has 2 voices, and was last updated by gg sato 7 years, 4 months ago.

- AuthorPosts
- October 21, 2010 at 11:07 am #30320
Hi,

In BlurVertShader.vsh of OGLES2Bloom project contained in Training folder of SDK, it says:

// Blur filter kernel shader

//

// 0 1 2 3 4

// x–x–X–x–x <- original filter kernel

// y—X—y <- filter kernel abusing the hardware texture filtering

// |

// texel center

//

//

// Using hardware texture filtering, the amount of samples can be

// reduced to three. To calculate the offset, use this formula:

// d = w1 / (w1 + w2), whereas w1 and w2 denote the filter kernel weights

What does the “filter kernel abusing the hardware texture filtering” mean?

Thanks,

Takenori

October 21, 2010 at 12:10 pm #34436Hi Takenori,

abusing might not be the best word to describe what we are actually doing

If you think of a common 3×3 Gaussian filter kernel:1 2 1

2 4 2

1 2 1The filter kernel is seperable, which means it can be split into a vector product:

1 1 2 1

2 x 1 2 1 = 2 4 2

1 1 2 1Now we have to process the image twice, applying the seperated filter kernel each time.

In the 3×3 filter kernel case this means we have to sample 3 texels in each pass per pixel.

This is how it is usually done for the horizontal pass:A B C (texels)

^ ^ ^ (sampling locations)

1 2 1 (weights)which means in order to get the filtered pixel value we have to linearly combine the

sampled texels with the according weights:result = (A * 1 + B * 2 + C * 1) * 0.25; // 0.25 is the normalization value

Now we can take advantage of the bilinear filtering by sampling inbetween the texels,

reducing the amount of required texture samples to two:A x B y C (texels)

^ ^ (sampling locations)

a b (weights)The final equation is reduced by one multiplication and addition:

result = (x*a + y*b) * norm; // norm is the normalization value for the weights

Please note that the exact values of the sampling locations and weights have to be

determined individually for each kernel.You can find more information about this topic in our “Post Processing Effects Development Recommendation” whitepaper,

which is included in the SDK download.Hope this helps,

Marco

marco 2010-10-21 12:12:58