void BokehImageOperation::executePixel(float *color, float x, float y, PixelSampler sampler) { float shift = this->m_data->lensshift; float shift2 = shift / 2.0f; float distance = this->m_circularDistance; float insideBokehMax = isInsideBokeh(distance, x, y); float insideBokehMed = isInsideBokeh(distance - fabsf(shift2 * distance), x, y); float insideBokehMin = isInsideBokeh(distance - fabsf(shift * distance), x, y); if (shift < 0) { color[0] = insideBokehMax; color[1] = insideBokehMed; color[2] = insideBokehMin; } else { color[0] = insideBokehMin; color[1] = insideBokehMed; color[2] = insideBokehMax; } color[3] = (insideBokehMax + insideBokehMed + insideBokehMin) / 3.0f; }
void BokehImageOperation::executePixelSampled(float output[4], float x, float y, PixelSampler /*sampler*/) { float shift = this->m_data->lensshift; float shift2 = shift / 2.0f; float distance = this->m_circularDistance; float insideBokehMax = isInsideBokeh(distance, x, y); float insideBokehMed = isInsideBokeh(distance - fabsf(shift2 * distance), x, y); float insideBokehMin = isInsideBokeh(distance - fabsf(shift * distance), x, y); if (shift < 0) { output[0] = insideBokehMax; output[1] = insideBokehMed; output[2] = insideBokehMin; } else { output[0] = insideBokehMin; output[1] = insideBokehMed; output[2] = insideBokehMax; } output[3] = (insideBokehMax + insideBokehMed + insideBokehMin) / 3.0f; }