You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.5 KiB
47 lines
1.5 KiB
#if SENSOR_ID == 2
|
|
|
|
#define VIGNETTE_PROFILE_8DT0MM
|
|
|
|
#define BIT_DEPTH 12
|
|
#define BLACK_LVL 64
|
|
|
|
float ox_lut_func(int x) {
|
|
if (x < 512) {
|
|
return x * 5.94873e-8;
|
|
} else if (512 <= x && x < 768) {
|
|
return 3.0458e-05 + (x-512) * 1.19913e-7;
|
|
} else if (768 <= x && x < 1536) {
|
|
return 6.1154e-05 + (x-768) * 2.38493e-7;
|
|
} else if (1536 <= x && x < 1792) {
|
|
return 0.0002448 + (x-1536) * 9.56930e-7;
|
|
} else if (1792 <= x && x < 2048) {
|
|
return 0.00048977 + (x-1792) * 1.91441e-6;
|
|
} else if (2048 <= x && x < 2304) {
|
|
return 0.00097984 + (x-2048) * 3.82937e-6;
|
|
} else if (2304 <= x && x < 2560) {
|
|
return 0.0019601 + (x-2304) * 7.659055e-6;
|
|
} else if (2560 <= x && x < 2816) {
|
|
return 0.0039207 + (x-2560) * 1.525e-5;
|
|
} else {
|
|
return 0.0078421 + (exp((x-2816)/273.0) - 1) * 0.0092421;
|
|
}
|
|
}
|
|
|
|
float4 normalize_pv(int4 parsed, float vignette_factor) {
|
|
// PWL
|
|
float4 pv = {ox_lut_func(parsed.s0), ox_lut_func(parsed.s1), ox_lut_func(parsed.s2), ox_lut_func(parsed.s3)};
|
|
return clamp(pv*vignette_factor*256.0, 0.0, 1.0);
|
|
}
|
|
|
|
float3 color_correct(float3 rgb) {
|
|
float3 corrected = rgb.x * (float3)(1.5664815, -0.29808738, -0.03973474);
|
|
corrected += rgb.y * (float3)(-0.48672447, 1.41914433, -0.40295248);
|
|
corrected += rgb.z * (float3)(-0.07975703, -0.12105695, 1.44268722);
|
|
return corrected;
|
|
}
|
|
|
|
float3 apply_gamma(float3 rgb, int expo_time) {
|
|
return -0.507089*exp(-12.54124638*rgb) + 0.9655*powr(rgb, 0.5) - 0.472597*rgb + 0.507089;
|
|
}
|
|
|
|
#endif
|
|
|