Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 41bd3508 authored by Jason Sams's avatar Jason Sams
Browse files

save 2ms replace div with mul.

Change-Id: I13d80b074b70cd2edd71f33e2881aa367b7652c7
parent c3e4f0a7
Loading
Loading
Loading
Loading
+7 −5
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
static float2 scale;
static float2 center, dimensions;
static float range, inv_max_dist, shade, slope;
static float2 overDimensions;

void init_vignette(uint32_t dim_x, uint32_t dim_y, float center_x, float center_y,
        float desired_scale, float desired_shade, float desired_slope) {
@@ -43,20 +44,21 @@ void init_vignette(uint32_t dim_x, uint32_t dim_y, float center_x, float center_
    range = 1.3 - 0.7*sqrt(desired_scale);
    shade = desired_shade;
    slope = desired_slope;

    overDimensions = ((float2)1.f) / dimensions;
}

void root(const uchar4 *in, uchar4 *out, uint32_t x, uint32_t y) {
    // Convert x and y to floating point coordinates with center as origin
    const float4 fin = rsUnpackColor8888(*in);
    float2 coord;
    coord.x = (float)x / dimensions.x;
    coord.y = (float)y / dimensions.y;
    const float4 fin = convert_float4(*in);
    float2 coord = {(float)x, (float)y};
    coord *= overDimensions;
    coord -= center;
    const float dist = length(scale * coord);
    const float lumen = shade / (1.0 + exp((dist * inv_max_dist - range) * slope)) + (1.0 - shade);
    float4 fout;
    fout.rgb = fin.rgb * lumen;
    fout.w = fin.w;
    *out = rsPackColorTo8888(fout);
    *out = convert_uchar4(fout);
}