+void R_HDR_UpdateIrisAdaptation(const vec3_t point)
+{
+ if (r_hdr_irisadaptation.integer)
+ {
+ vec3_t ambient;
+ vec3_t diffuse;
+ vec3_t diffusenormal;
+ vec_t brightness;
+ vec_t goal;
+ vec_t adjust;
+ vec_t current;
+ R_CompleteLightPoint(ambient, diffuse, diffusenormal, point, LP_LIGHTMAP | LP_RTWORLD | LP_DYNLIGHT);
+ brightness = (ambient[0] + ambient[1] + ambient[2] + diffuse[0] + diffuse[1] + diffuse[2]) * (1.0f / 3.0f);
+ brightness = max(0.0000001f, brightness);
+ goal = r_hdr_irisadaptation_multiplier.value / brightness;
+ goal = bound(r_hdr_irisadaptation_minvalue.value, goal, r_hdr_irisadaptation_maxvalue.value);
+ adjust = r_hdr_irisadaptation_fade.value * cl.realframetime;
+ current = r_hdr_irisadaptation_value.value;
+ if (current < goal)
+ current = min(current + adjust, goal);
+ else if (current > goal)
+ current = max(current - adjust, goal);
+ if (fabs(r_hdr_irisadaptation_value.value - current) > 0.0001f)
+ Cvar_SetValueQuick(&r_hdr_irisadaptation_value, current);
+ }
+ else if (r_hdr_irisadaptation_value.value != 1.0f)
+ Cvar_SetValueQuick(&r_hdr_irisadaptation_value, 1.0f);
+}
+