/*====================================================================
//  SUPER DUPER COLOR CORRECTION — ВСЁ В ОДНОМ ФАЙЛЕ
//  Настраивай прямо здесь! Просто меняй значения.
//====================================================================*/

// === ПРЕСЕТЫ (раскомментируй нужный) ===
// #define PRESET_DEFAULT
// #define PRESET_VIBRANT
// #define PRESET_CINEMATIC
#define PRESET_SUPER_DUPER   // ← SDV стиль

// === ГЛОБАЛЬНЫЕ НАСТРОЙКИ ===
const float WORLD_SATURATION   = 1.15;   // 0.8 — 1.5
const float WORLD_CONTRAST     = 1.08;   // 0.9 — 1.3
const float WORLD_BRIGHTNESS   = 0.05;   // -0.2 — 0.2
const float WORLD_TEMPERATURE  = 0.15;   // -1.0 (холод) — +1.0 (тёплый)

// === ЦВЕТА НЕБА ===
const vec3 SKY_DAY             = vec3(1.00, 1.00, 1.00);
const vec3 SKY_SUNRISE         = vec3(1.00, 0.75, 0.60);
const vec3 SKY_SUNSET          = vec3(1.00, 0.65, 0.50);
const vec3 SKY_NIGHT           = vec3(0.35, 0.45, 0.70);

// === ЦВЕТА СОЛНЦА / ЛУНЫ ===
const vec3 SUN_DAY             = vec3(1.00, 0.95, 0.88);
const vec3 SUN_SUNRISE         = vec3(1.00, 0.75, 0.55);
const vec3 SUN_SUNSET          = vec3(1.00, 0.65, 0.45);
const vec3 MOON_COLOR          = vec3(0.85, 0.90, 1.00);

// === ТИНТЫ БЛОКОВ ===
const vec3 GRASS_TINT          = vec3(0.75, 1.10, 0.70);  // Зелёная трава
const vec3 FOLIAGE_TINT        = vec3(0.70, 1.05, 0.65);  // Листья
const vec3 WATER_TINT          = vec3(0.35, 0.65, 1.00);  // Голубая вода

// === ПРЕСЕТЫ (не трогай, если не знаешь) ===
#if defined PRESET_VIBRANT
    #undef WORLD_SATURATION
    #undef WORLD_CONTRAST
    #undef WORLD_TEMPERATURE
    #define WORLD_SATURATION 1.35
    #define WORLD_CONTRAST   1.15
    #define WORLD_TEMPERATURE 0.25
#elif defined PRESET_CINEMATIC
    #undef WORLD_SATURATION
    #undef WORLD_CONTRAST
    #undef WORLD_TEMPERATURE
    #define WORLD_SATURATION 0.85
    #define WORLD_CONTRAST   1.40
    #define WORLD_TEMPERATURE -0.20
#elif defined PRESET_SUPER_DUPER
    #undef WORLD_SATURATION
    #undef WORLD_CONTRAST
    #undef WORLD_TEMPERATURE
    #define WORLD_SATURATION 1.20
    #define WORLD_CONTRAST   1.10
    #define WORLD_TEMPERATURE 0.20
    #undef GRASS_TINT
    #undef FOLIAGE_TINT
    #define GRASS_TINT   vec3(0.70, 1.15, 0.65)
    #define FOLIAGE_TINT vec3(0.68, 1.10, 0.62)
#endif

// === ФУНКЦИИ ===

vec3 GetSkyTint() {
    float t = GetTimeOfDay();
    if (t < 0.25)      return mix(SKY_NIGHT,    SKY_SUNRISE, t * 4.0);
    else if (t < 0.45) return mix(SKY_SUNRISE, SKY_DAY,    (t - 0.25) * 5.0);
    else if (t < 0.52) return mix(SKY_DAY,     SKY_SUNSET, (t - 0.45) * 14.0);
    else               return mix(SKY_SUNSET,  SKY_NIGHT,  (t - 0.52) * 2.08);
}

vec3 GetSunTint() {
    float t = GetTimeOfDay();
    if (t < 0.25)      return mix(MOON_COLOR,  SUN_SUNRISE, t * 4.0);
    else if (t < 0.45) return mix(SUN_SUNRISE, SUN_DAY,    (t - 0.25) * 5.0);
    else if (t < 0.52) return mix(SUN_DAY,     SUN_SUNSET, (t - 0.45) * 14.0);
    else               return mix(SUN_SUNSET,  MOON_COLOR, (t - 0.52) * 2.08);
}

vec3 ApplyColorCorrection(vec3 color) {
    // Температура
    vec3 warm = color * vec3(1.0, 0.9, 0.7);
    vec3 cold = color * vec3(0.8, 0.9, 1.1);
    color = mix(cold, warm, WORLD_TEMPERATURE * 0.5 + 0.5);

    // Насыщенность
    float luma = dot(color, vec3(0.2126, 0.7152, 0.0722));
    color = mix(vec3(luma), color, WORLD_SATURATION);

    // Контраст
    color = (color - 0.5) * WORLD_CONTRAST + 0.5;

    // Яркость
    color += WORLD_BRIGHTNESS;

    return max(color, 0.0);
}