diff options
Diffstat (limited to 'source/blender/compositor/operations/COM_GlareFogGlowOperation.cpp')
-rw-r--r-- | source/blender/compositor/operations/COM_GlareFogGlowOperation.cpp | 31 |
1 files changed, 16 insertions, 15 deletions
diff --git a/source/blender/compositor/operations/COM_GlareFogGlowOperation.cpp b/source/blender/compositor/operations/COM_GlareFogGlowOperation.cpp index 04993b08ddf..fe2864461dc 100644 --- a/source/blender/compositor/operations/COM_GlareFogGlowOperation.cpp +++ b/source/blender/compositor/operations/COM_GlareFogGlowOperation.cpp @@ -126,7 +126,6 @@ static void FHT2D(fREAL *data, unsigned int Mx, unsigned int My, unsigned int nzp, unsigned int inverse) { unsigned int i, j, Nx, Ny, maxy; - fREAL t; Nx = 1 << Mx; Ny = 1 << My; @@ -141,7 +140,7 @@ static void FHT2D(fREAL *data, unsigned int Mx, unsigned int My, for (j = 0; j < Ny; ++j) for (i = j + 1; i < Nx; ++i) { unsigned int op = i + (j << Mx), np = j + (i << My); - t = data[op], data[op] = data[np], data[np] = t; + SWAP(fREAL, data[op], data[np]); } } else { // rectangular @@ -151,15 +150,15 @@ static void FHT2D(fREAL *data, unsigned int Mx, unsigned int My, for (j = PRED(i); j > i; j = PRED(j)) ; if (j < i) continue; for (k = i, j = PRED(i); j != i; k = j, j = PRED(j), stm--) { - t = data[j], data[j] = data[k], data[k] = t; + SWAP(fREAL, data[j], data[k]); } #undef PRED stm--; } } - // swap Mx/My & Nx/Ny - i = Nx, Nx = Ny, Ny = i; - i = Mx, Mx = My, My = i; + + SWAP(unsigned int, Nx, Ny); + SWAP(unsigned int, Mx, My); // now columns == transposed rows for (j = 0; j < Ny; ++j) @@ -274,15 +273,15 @@ static void convolve(float *dst, MemoryBuffer *in1, MemoryBuffer *in2) data2 = (fREAL *)MEM_callocN(w2 * h2 * sizeof(fREAL), "convolve_fast FHT data2"); // normalize convolutor - wt[0] = wt[1] = wt[2] = 0.f; + wt[0] = wt[1] = wt[2] = 0.0f; for (y = 0; y < kernelHeight; y++) { colp = (fRGB *)&kernelBuffer[y * kernelWidth * COM_NUM_CHANNELS_COLOR]; for (x = 0; x < kernelWidth; x++) add_v3_v3(wt, colp[x]); } - if (wt[0] != 0.f) wt[0] = 1.f / wt[0]; - if (wt[1] != 0.f) wt[1] = 1.f / wt[1]; - if (wt[2] != 0.f) wt[2] = 1.f / wt[2]; + if (wt[0] != 0.0f) wt[0] = 1.0f / wt[0]; + if (wt[1] != 0.0f) wt[1] = 1.0f / wt[1]; + if (wt[2] != 0.0f) wt[2] = 1.0f / wt[2]; for (y = 0; y < kernelHeight; y++) { colp = (fRGB *)&kernelBuffer[y * kernelWidth * COM_NUM_CHANNELS_COLOR]; for (x = 0; x < kernelWidth; x++) @@ -375,7 +374,7 @@ void GlareFogGlowOperation::generateGlare(float *data, MemoryBuffer *inputTile, fRGB fcol; MemoryBuffer *ckrn; unsigned int sz = 1 << settings->size; - const float cs_r = 1.f, cs_g = 1.f, cs_b = 1.f; + const float cs_r = 1.0f, cs_g = 1.0f, cs_b = 1.0f; // temp. src image // make the convolution kernel @@ -386,14 +385,16 @@ void GlareFogGlowOperation::generateGlare(float *data, MemoryBuffer *inputTile, scale = 0.25f * sqrtf((float)(sz * sz)); for (y = 0; y < sz; ++y) { - v = 2.f * (y / (float)sz) - 1.0f; + v = 2.0f * (y / (float)sz) - 1.0f; for (x = 0; x < sz; ++x) { - u = 2.f * (x / (float)sz) - 1.0f; + u = 2.0f * (x / (float)sz) - 1.0f; r = (u * u + v * v) * scale; d = -sqrtf(sqrtf(sqrtf(r))) * 9.0f; - fcol[0] = expf(d * cs_r), fcol[1] = expf(d * cs_g), fcol[2] = expf(d * cs_b); + fcol[0] = expf(d * cs_r); + fcol[1] = expf(d * cs_g); + fcol[2] = expf(d * cs_b); // linear window good enough here, visual result counts, not scientific analysis - //w = (1.f-fabs(u))*(1.f-fabs(v)); + //w = (1.0f-fabs(u))*(1.0f-fabs(v)); // actually, Hanning window is ok, cos^2 for some reason is slower w = (0.5f + 0.5f * cosf(u * (float)M_PI)) * (0.5f + 0.5f * cosf(v * (float)M_PI)); mul_v3_fl(fcol, w); |