Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private void getSampleOffsetsBlur(int width, int height, float[] offsets, int numOffsets, boolean bHorizontal, float fDeviation, float fMultiplier) {
- float tu = 1.0f / (bHorizontal ? width : height);
- float halfTexel = tu * 0.5f;
- // center
- offsets[0 * numOffsets + 0] = 0.0f;
- offsets[0 * numOffsets + 1] = 0.0f;
- offsets[0 * numOffsets + 2] = fMultiplier * gaussianDistribution(0, 0, fDeviation);
- // offsets to the right, these are all in-between texels samples (bilinear filtering must be enabled)
- int numMiddleTaps = (numOffsets - 1) / 2;
- for (int i = 1; i <= numMiddleTaps; i++) {
- offsets[i * numOffsets + 2] = fMultiplier * gaussianDistribution((float) i, 0, fDeviation);
- if (bHorizontal) {
- offsets[i * numOffsets + 0] = (float) (i * 2 - 1) * tu + halfTexel;
- offsets[i * numOffsets + 1] = offsets[0 * numOffsets + 1];
- } else {
- offsets[i * numOffsets + 0] = offsets[0 * numOffsets + 0];
- offsets[i * numOffsets + 1] = -((float) (i * 2 - 1) * tu + halfTexel);
- }
- }
- // mirror the other half
- for (int i = numMiddleTaps + 1; i <= (numMiddleTaps * 2); i++) {
- offsets[i * numOffsets + 2] = offsets[(i - numMiddleTaps) * numOffsets + 2];
- if (bHorizontal) {
- offsets[i * numOffsets + 0] = -((float) ((i - numMiddleTaps) * 2) * tu - halfTexel);
- offsets[i * numOffsets + 1] = offsets[0 * numOffsets + 1];
- } else {
- offsets[i * numOffsets + 0] = offsets[0 * numOffsets + 0];
- offsets[i * numOffsets + 1] = ((float) ((i - numMiddleTaps) * 2) * tu - halfTexel);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement