/*
====================================================================
  SXGG: Realis — Shader ultra-realistica per Minecraft
  Autore : Samax.GG
  File   : lib/settings.glsl
  Scopo  : Tutte le opzioni configurabili del pack (#define).
====================================================================
*/

#ifndef SETTINGS_GLSL
#define SETTINGS_GLSL

// ------------------------------------------------------------------
//  MODULO 1 — MATERIALI (PBR / POM)
// ------------------------------------------------------------------
#define NORMAL_MAPPING
#define SPECULAR_MAPPING

#define POM
#define POM_DEPTH 0.25            // [0.05 0.10 0.15 0.20 0.25 0.30 0.40 0.50]
#define POM_LAYERS 32             // [16 32 64 128]
#define POM_DISTANCE 32.0         // [16.0 24.0 32.0 48.0 64.0]
#define POM_SELF_SHADOW

// ------------------------------------------------------------------
//  MODULO 2 — ILLUMINAZIONE E OMBRE
// ------------------------------------------------------------------
#define SHADOW_SAMPLES 16         // [4 8 16 32] Campioni PCF
#define SHADOW_SOFTNESS 1.0       // [0.5 1.0 1.5 2.0 3.0] Morbidezza penombra
#define COLORED_SHADOWS           // Ombre colorate da vetro/acqua

#define SSGI                      // Global Illumination screen-space (color bleeding)
#define SSGI_STRENGTH 1.0         // [0.5 1.0 1.5 2.0]
#define SSGI_SAMPLES 8            // [4 8 12 16]

#define EMISSIVE_STRENGTH 2.0     // [1.0 1.5 2.0 3.0 4.0] Intensità blocchi emissivi
#define BLOCKLIGHT_R 1.00         // colore caldo torce
#define BLOCKLIGHT_G 0.58
#define BLOCKLIGHT_B 0.28

#define AMBIENT_MIN 0.02          // luce minima assoluta (notte in caverna)

// ------------------------------------------------------------------
//  MODULO 3 — ACQUA E FLUIDI
// ------------------------------------------------------------------
#define WATER_WAVES
#define WAVE_HEIGHT 1.0           // [0.25 0.50 1.00 1.50 2.00]
#define WAVE_SPEED 1.0            // [0.50 0.75 1.00 1.50 2.00]

#define WATER_SSR                 // Screen Space Reflections
#define SSR_STEPS 24              // [12 24 32 48]
#define WATER_REFRACTION
#define WATER_FOAM                // schiuma sulle rive
#define WATER_ABSORPTION 1.0      // [0.5 1.0 1.5 2.0] torbidità con la profondità

#define WET_SURFACES              // superfici bagnate/riflettenti con la pioggia
#define PUDDLES                   // pozzanghere procedurali

// ------------------------------------------------------------------
//  MODULO 4 — ATMOSFERA E CIELO
// ------------------------------------------------------------------
#define VOLUMETRIC_CLOUDS
#define CLOUD_COVERAGE 0.45       // [0.25 0.35 0.45 0.55 0.70]
#define CLOUD_STEPS 12            // [8 12 16 24]
#define CLOUD_SHADOWS             // ombre delle nuvole sul terreno

#define VOLUMETRIC_FOG
#define FOG_DENSITY 1.0           // [0.25 0.50 1.00 1.50 2.00]

#define GODRAYS
#define GODRAY_STRENGTH 1.0       // [0.5 1.0 1.5 2.0]
#define GODRAY_SAMPLES 16         // [8 16 24 32]

#define STARS
#define MILKY_WAY                 // Via Lattea procedurale
#define MOON_PHASES               // luna procedurale con fasi

// ------------------------------------------------------------------
//  MODULO 5 — FOTOCAMERA / POST-PROCESSING
// ------------------------------------------------------------------
#define BLOOM
#define BLOOM_STRENGTH 1.0        // [0.25 0.50 1.00 1.50 2.00]
#define BLOOM_THRESHOLD 0.85      // [0.60 0.75 0.85 1.00]

//#define DOF                     // Depth of Field (off di default: gameplay)
#define DOF_STRENGTH 1.0          // [0.5 1.0 1.5 2.0]

#define CHROMATIC_ABERRATION
#define CA_STRENGTH 0.5           // [0.25 0.50 1.00 1.50]

#define VIGNETTE
#define VIGNETTE_STRENGTH 0.7     // [0.3 0.5 0.7 1.0]

#define CAMERA_BREATHING          // micro-oscillazione "respiro"
#define HAND_SWAY                 // oscillazione mano in prima persona

#define EXPOSURE 1.0              // [0.6 0.8 1.0 1.2 1.5]

// ------------------------------------------------------------------
//  MODULO 6 — VEGETAZIONE E METEO
// ------------------------------------------------------------------
#define WAVING_PLANTS
#define WAVING_LEAVES
#define WAVING_AMPLITUDE 1.0      // [0.25 0.50 0.75 1.00 1.25 1.50 2.00]
#define WAVING_SPEED 1.0          // [0.50 0.75 1.00 1.25 1.50 2.00]

#define SNOW_ACCUMULATION         // accumulo neve sulle superfici (durante nevicate)
#define RAIN_MIST                 // foschia da impatto pioggia al suolo

// ------------------------------------------------------------------
//  ID BLOCCHI (combaciano con block.properties)
// ------------------------------------------------------------------
#define ID_PLANT_TOP     10004.0
#define ID_DOUBLE_LOWER  10008.0
#define ID_DOUBLE_UPPER  10009.0
#define ID_LEAVES        10012.0
#define ID_CROPS         10016.0
#define ID_VINES         10020.0
#define ID_LILYPAD       10024.0
#define ID_WATER         10300.0
#define ID_LAVA          10310.0
#define ID_EMISSIVE      10400.0

#endif // SETTINGS_GLSL
