From f82426c609661fd627e04edb531431b91c9c33e9 Mon Sep 17 00:00:00 2001 From: Xonk Date: Thu, 12 Jan 2023 15:00:14 -0500 Subject: [PATCH] Add the whole ass shader it has begun --- shaders/block.properties | 68 ++ shaders/composite.fsh | 276 +++++ shaders/composite.vsh | 35 + shaders/composite10.fsh | 43 + shaders/composite10.vsh | 17 + shaders/composite11.fsh | 61 + shaders/composite11.vsh | 20 + shaders/composite12.fsh | 61 + shaders/composite12.vsh | 21 + shaders/composite14.fsh | 103 ++ shaders/composite14.vsh | 17 + shaders/composite15.fsh | 497 ++++++++ shaders/composite15.vsh | 26 + shaders/composite2.fsh | 1090 ++++++++++++++++++ shaders/composite2.vsh | 75 ++ shaders/composite3.fsh | 89 ++ shaders/composite3.vsh | 29 + shaders/composite5.fsh | 414 +++++++ shaders/composite5.vsh | 116 ++ shaders/composite6.fsh | 325 ++++++ shaders/composite6.vsh | 53 + shaders/composite7.fsh | 44 + shaders/composite7.vsh | 17 + shaders/composite8.fsh | 458 ++++++++ shaders/composite8.vsh | 17 + shaders/composite9.fsh | 49 + shaders/composite9.vsh | 17 + shaders/deferred.fsh | 196 ++++ shaders/deferred.vsh | 261 +++++ shaders/deferred1.fsh | 101 ++ shaders/deferred1.vsh | 46 + shaders/deferred2.fsh | 27 + shaders/deferred2.vsh | 9 + shaders/entity.properties | 13 + shaders/final.fsh | 101 ++ shaders/final.vsh | 23 + shaders/gbuffers_all_particles.fsh | 149 +++ shaders/gbuffers_all_particles.vsh | 74 ++ shaders/gbuffers_all_solid.fsh | 465 ++++++++ shaders/gbuffers_all_solid.vsh | 271 +++++ shaders/gbuffers_all_translucent.fsh | 610 ++++++++++ shaders/gbuffers_all_translucent.vsh | 116 ++ shaders/gbuffers_armor_glint.fsh | 81 ++ shaders/gbuffers_armor_glint.vsh | 63 + shaders/gbuffers_basic.fsh | 6 + shaders/gbuffers_basic.vsh | 7 + shaders/gbuffers_beaconbeam.fsh | 90 ++ shaders/gbuffers_beaconbeam.vsh | 57 + shaders/gbuffers_block.fsh | 5 + shaders/gbuffers_block.vsh | 5 + shaders/gbuffers_damagedblock.fsh | 553 +++++++++ shaders/gbuffers_damagedblock.vsh | 111 ++ shaders/gbuffers_entities.fsh | 5 + shaders/gbuffers_entities.vsh | 6 + shaders/gbuffers_hand.fsh | 4 + shaders/gbuffers_hand.vsh | 5 + shaders/gbuffers_hand_water.fsh | 271 +++++ shaders/gbuffers_hand_water.vsh | 107 ++ shaders/gbuffers_skybasic.fsh | 9 + shaders/gbuffers_skybasic.vsh | 14 + shaders/gbuffers_skytextured.fsh | 24 + shaders/gbuffers_skytextured.vsh | 38 + shaders/gbuffers_spidereyes.fsh | 32 + shaders/gbuffers_spidereyes.vsh | 37 + shaders/gbuffers_terrain.fsh | 4 + shaders/gbuffers_terrain.vsh | 4 + shaders/gbuffers_textured.fsh | 352 ++++++ shaders/gbuffers_textured.vsh | 165 +++ shaders/gbuffers_textured_lit.fsh | 5 + shaders/gbuffers_textured_lit.vsh | 5 + shaders/gbuffers_water.fsh | 4 + shaders/gbuffers_water.vsh | 4 + shaders/gbuffers_weather.fsh | 5 + shaders/gbuffers_weather.vsh | 5 + shaders/lang/en_us.lang | 9 + shaders/lib/ROBOBO_sky.glsl | 182 +++ shaders/lib/Shadow_Params.glsl | 44 + shaders/lib/biome_specifics.glsl | 100 ++ shaders/lib/climate_settings.glsl | 273 +++++ shaders/lib/clouds.glsl | 16 + shaders/lib/color_dither.glsl | 46 + shaders/lib/color_transforms.glsl | 157 +++ shaders/lib/projections.glsl | 55 + shaders/lib/res_params.glsl | 20 + shaders/lib/settings.glsl | 45 + shaders/lib/sky_gradient.glsl | 84 ++ shaders/lib/specular.glsl | 349 ++++++ shaders/lib/stars.glsl | 48 + shaders/lib/texFiltering.glsl | 19 + shaders/lib/util.glsl | 196 ++++ shaders/lib/volumetricClouds.glsl | 436 +++++++ shaders/lib/volumetricFog.glsl | 184 +++ shaders/lib/waterBump.glsl | 60 + shaders/lib/waterOptions.glsl | 21 + shaders/shaders.properties | 329 ++++++ shaders/shadow.fsh | 30 + shaders/shadow.vsh | 138 +++ shaders/texture/blueNoise.png | Bin 0 -> 705573 bytes shaders/texture/blueNoise.png.mcmeta | 7 + shaders/texture/noises.png | Bin 0 -> 695035 bytes shaders/texture/noises.png.mcmeta | 7 + shaders/world-1/block.properties | 20 + shaders/world-1/composite10.fsh | 45 + shaders/world-1/composite10.vsh | 17 + shaders/world-1/composite11.fsh | 61 + shaders/world-1/composite11.vsh | 20 + shaders/world-1/composite12.fsh | 61 + shaders/world-1/composite12.vsh | 21 + shaders/world-1/composite14.fsh | 103 ++ shaders/world-1/composite14.vsh | 17 + shaders/world-1/composite15.fsh | 512 ++++++++ shaders/world-1/composite15.vsh | 25 + shaders/world-1/composite2.fsh | 433 +++++++ shaders/world-1/composite2.vsh | 68 ++ shaders/world-1/composite5.fsh | 271 +++++ shaders/world-1/composite5.vsh | 51 + shaders/world-1/composite6.fsh | 205 ++++ shaders/world-1/composite6.vsh | 19 + shaders/world-1/composite8.fsh | 320 +++++ shaders/world-1/composite8.vsh | 17 + shaders/world-1/composite9.fsh | 53 + shaders/world-1/composite9.vsh | 17 + shaders/world-1/deferred.fsh | 141 +++ shaders/world-1/deferred.vsh | 206 ++++ shaders/world-1/final.fsh | 100 ++ shaders/world-1/final.vsh | 23 + shaders/world-1/gbuffers_all_solid.fsh | 411 +++++++ shaders/world-1/gbuffers_all_solid.vsh | 213 ++++ shaders/world-1/gbuffers_all_translucent.fsh | 624 ++++++++++ shaders/world-1/gbuffers_all_translucent.vsh | 112 ++ shaders/world-1/gbuffers_armor_glint.fsh | 100 ++ shaders/world-1/gbuffers_armor_glint.vsh | 53 + shaders/world-1/gbuffers_basic.fsh | 4 + shaders/world-1/gbuffers_basic.vsh | 4 + shaders/world-1/gbuffers_beaconbeam.fsh | 90 ++ shaders/world-1/gbuffers_beaconbeam.vsh | 54 + shaders/world-1/gbuffers_block.fsh | 5 + shaders/world-1/gbuffers_block.vsh | 5 + shaders/world-1/gbuffers_clouds.fsh | 9 + shaders/world-1/gbuffers_clouds.vsh | 14 + shaders/world-1/gbuffers_damagedblock.fsh | 116 ++ shaders/world-1/gbuffers_damagedblock.vsh | 54 + shaders/world-1/gbuffers_entities.fsh | 5 + shaders/world-1/gbuffers_entities.vsh | 6 + shaders/world-1/gbuffers_hand.fsh | 4 + shaders/world-1/gbuffers_hand.vsh | 5 + shaders/world-1/gbuffers_hand_water.fsh | 116 ++ shaders/world-1/gbuffers_hand_water.vsh | 56 + shaders/world-1/gbuffers_skybasic.fsh | 9 + shaders/world-1/gbuffers_skybasic.vsh | 14 + shaders/world-1/gbuffers_skytextured.fsh | 24 + shaders/world-1/gbuffers_skytextured.vsh | 36 + shaders/world-1/gbuffers_spidereyes.fsh | 32 + shaders/world-1/gbuffers_spidereyes.vsh | 36 + shaders/world-1/gbuffers_terrain.fsh | 4 + shaders/world-1/gbuffers_terrain.vsh | 4 + shaders/world-1/gbuffers_textured.fsh | 116 ++ shaders/world-1/gbuffers_textured.vsh | 74 ++ shaders/world-1/gbuffers_textured_lit.fsh | 116 ++ shaders/world-1/gbuffers_textured_lit.vsh | 56 + shaders/world-1/gbuffers_water.fsh | 334 ++++++ shaders/world-1/gbuffers_water.vsh | 89 ++ shaders/world-1/gbuffers_weather.fsh | 49 + shaders/world-1/gbuffers_weather.vsh | 44 + shaders/world-1/lib/ACES.glsl | 382 ++++++ shaders/world-1/lib/ACESSPL.glsl | 115 ++ shaders/world-1/lib/ACEST.glsl | 63 + shaders/world-1/lib/ROBOBO_sky.glsl | 157 +++ shaders/world-1/lib/Shadow_Params.glsl | 22 + shaders/world-1/lib/clouds.glsl | 16 + shaders/world-1/lib/color_dither.glsl | 46 + shaders/world-1/lib/color_transforms.glsl | 131 +++ shaders/world-1/lib/composite3.fsh | 78 ++ shaders/world-1/lib/composite3.vsh | 19 + shaders/world-1/lib/projections.glsl | 55 + shaders/world-1/lib/sky_gradient.glsl | 84 ++ shaders/world-1/lib/specular.glsl | 410 +++++++ shaders/world-1/lib/stars.glsl | 48 + shaders/world-1/lib/texFiltering.glsl | 19 + shaders/world-1/lib/util.glsl | 196 ++++ shaders/world-1/lib/volumetricClouds.glsl | 282 +++++ shaders/world-1/lib/volumetricFog.glsl | 118 ++ shaders/world-1/lib/waterBump.glsl | 38 + shaders/world-1/lib/waterOptions.glsl | 21 + shaders/world-1/shaders.properties | 121 ++ shaders/world-1/texture/composite4.fsh | 37 + shaders/world-1/texture/composite4.vsh | 19 + shaders/world-1/texture/noises.png | Bin 0 -> 695035 bytes shaders/world-1/texture/noises.png.mcmeta | 7 + shaders/world1/block.properties | 20 + shaders/world1/composite10.fsh | 45 + shaders/world1/composite10.vsh | 17 + shaders/world1/composite11.fsh | 61 + shaders/world1/composite11.vsh | 20 + shaders/world1/composite12.fsh | 61 + shaders/world1/composite12.vsh | 21 + shaders/world1/composite14.fsh | 103 ++ shaders/world1/composite14.vsh | 17 + shaders/world1/composite15.fsh | 512 ++++++++ shaders/world1/composite15.vsh | 25 + shaders/world1/composite2.fsh | 592 ++++++++++ shaders/world1/composite2.vsh | 68 ++ shaders/world1/composite5.fsh | 259 +++++ shaders/world1/composite5.vsh | 49 + shaders/world1/composite6.fsh | 210 ++++ shaders/world1/composite6.vsh | 19 + shaders/world1/composite8.fsh | 320 +++++ shaders/world1/composite8.vsh | 17 + shaders/world1/composite9.fsh | 53 + shaders/world1/composite9.vsh | 17 + shaders/world1/deferred.fsh | 136 +++ shaders/world1/deferred.vsh | 201 ++++ shaders/world1/deferred1.fsh | 87 ++ shaders/world1/deferred1.vsh | 21 + shaders/world1/final.fsh | 100 ++ shaders/world1/final.vsh | 23 + shaders/world1/gbuffers_all_solid.fsh | 411 +++++++ shaders/world1/gbuffers_all_solid.vsh | 213 ++++ shaders/world1/gbuffers_all_translucent.fsh | 624 ++++++++++ shaders/world1/gbuffers_all_translucent.vsh | 112 ++ shaders/world1/gbuffers_armor_glint.fsh | 100 ++ shaders/world1/gbuffers_armor_glint.vsh | 53 + shaders/world1/gbuffers_basic.fsh | 4 + shaders/world1/gbuffers_basic.vsh | 4 + shaders/world1/gbuffers_beaconbeam.fsh | 90 ++ shaders/world1/gbuffers_beaconbeam.vsh | 54 + shaders/world1/gbuffers_block.fsh | 5 + shaders/world1/gbuffers_block.vsh | 5 + shaders/world1/gbuffers_clouds.fsh | 9 + shaders/world1/gbuffers_clouds.vsh | 14 + shaders/world1/gbuffers_damagedblock.fsh | 116 ++ shaders/world1/gbuffers_damagedblock.vsh | 54 + shaders/world1/gbuffers_entities.fsh | 5 + shaders/world1/gbuffers_entities.vsh | 6 + shaders/world1/gbuffers_hand.fsh | 4 + shaders/world1/gbuffers_hand.vsh | 5 + shaders/world1/gbuffers_hand_water.fsh | 116 ++ shaders/world1/gbuffers_hand_water.vsh | 56 + shaders/world1/gbuffers_skybasic.fsh | 9 + shaders/world1/gbuffers_skybasic.vsh | 14 + shaders/world1/gbuffers_skytextured.fsh | 24 + shaders/world1/gbuffers_skytextured.vsh | 36 + shaders/world1/gbuffers_spidereyes.fsh | 32 + shaders/world1/gbuffers_spidereyes.vsh | 36 + shaders/world1/gbuffers_terrain.fsh | 4 + shaders/world1/gbuffers_terrain.vsh | 4 + shaders/world1/gbuffers_textured.fsh | 116 ++ shaders/world1/gbuffers_textured.vsh | 74 ++ shaders/world1/gbuffers_textured_lit.fsh | 116 ++ shaders/world1/gbuffers_textured_lit.vsh | 56 + shaders/world1/gbuffers_water.fsh | 334 ++++++ shaders/world1/gbuffers_water.vsh | 89 ++ shaders/world1/gbuffers_weather.fsh | 49 + shaders/world1/gbuffers_weather.vsh | 44 + shaders/world1/lib/ACES.glsl | 382 ++++++ shaders/world1/lib/ACESSPL.glsl | 115 ++ shaders/world1/lib/ACEST.glsl | 63 + shaders/world1/lib/ROBOBO_sky.glsl | 157 +++ shaders/world1/lib/Shadow_Params.glsl | 22 + shaders/world1/lib/clouds.glsl | 16 + shaders/world1/lib/color_dither.glsl | 46 + shaders/world1/lib/color_transforms.glsl | 131 +++ shaders/world1/lib/composite3.fsh | 78 ++ shaders/world1/lib/composite3.vsh | 19 + shaders/world1/lib/projections.glsl | 55 + shaders/world1/lib/sky_gradient.glsl | 84 ++ shaders/world1/lib/specular.glsl | 334 ++++++ shaders/world1/lib/stars.glsl | 48 + shaders/world1/lib/texFiltering.glsl | 19 + shaders/world1/lib/util.glsl | 196 ++++ shaders/world1/lib/volumetricClouds.glsl | 342 ++++++ shaders/world1/lib/volumetricFog.glsl | 118 ++ shaders/world1/lib/waterBump.glsl | 38 + shaders/world1/lib/waterOptions.glsl | 21 + shaders/world1/shaders.properties | 121 ++ shaders/world1/texture/composite4.fsh | 37 + shaders/world1/texture/composite4.vsh | 19 + shaders/world1/texture/noises.png | Bin 0 -> 695035 bytes shaders/world1/texture/noises.png.mcmeta | 7 + 279 files changed, 28484 insertions(+) create mode 100644 shaders/block.properties create mode 100644 shaders/composite.fsh create mode 100644 shaders/composite.vsh create mode 100644 shaders/composite10.fsh create mode 100644 shaders/composite10.vsh create mode 100644 shaders/composite11.fsh create mode 100644 shaders/composite11.vsh create mode 100644 shaders/composite12.fsh create mode 100644 shaders/composite12.vsh create mode 100644 shaders/composite14.fsh create mode 100644 shaders/composite14.vsh create mode 100644 shaders/composite15.fsh create mode 100644 shaders/composite15.vsh create mode 100644 shaders/composite2.fsh create mode 100644 shaders/composite2.vsh create mode 100644 shaders/composite3.fsh create mode 100644 shaders/composite3.vsh create mode 100644 shaders/composite5.fsh create mode 100644 shaders/composite5.vsh create mode 100644 shaders/composite6.fsh create mode 100644 shaders/composite6.vsh create mode 100644 shaders/composite7.fsh create mode 100644 shaders/composite7.vsh create mode 100644 shaders/composite8.fsh create mode 100644 shaders/composite8.vsh create mode 100644 shaders/composite9.fsh create mode 100644 shaders/composite9.vsh create mode 100644 shaders/deferred.fsh create mode 100644 shaders/deferred.vsh create mode 100644 shaders/deferred1.fsh create mode 100644 shaders/deferred1.vsh create mode 100644 shaders/deferred2.fsh create mode 100644 shaders/deferred2.vsh create mode 100644 shaders/entity.properties create mode 100644 shaders/final.fsh create mode 100644 shaders/final.vsh create mode 100644 shaders/gbuffers_all_particles.fsh create mode 100644 shaders/gbuffers_all_particles.vsh create mode 100644 shaders/gbuffers_all_solid.fsh create mode 100644 shaders/gbuffers_all_solid.vsh create mode 100644 shaders/gbuffers_all_translucent.fsh create mode 100644 shaders/gbuffers_all_translucent.vsh create mode 100644 shaders/gbuffers_armor_glint.fsh create mode 100644 shaders/gbuffers_armor_glint.vsh create mode 100644 shaders/gbuffers_basic.fsh create mode 100644 shaders/gbuffers_basic.vsh create mode 100644 shaders/gbuffers_beaconbeam.fsh create mode 100644 shaders/gbuffers_beaconbeam.vsh create mode 100644 shaders/gbuffers_block.fsh create mode 100644 shaders/gbuffers_block.vsh create mode 100644 shaders/gbuffers_damagedblock.fsh create mode 100644 shaders/gbuffers_damagedblock.vsh create mode 100644 shaders/gbuffers_entities.fsh create mode 100644 shaders/gbuffers_entities.vsh create mode 100644 shaders/gbuffers_hand.fsh create mode 100644 shaders/gbuffers_hand.vsh create mode 100644 shaders/gbuffers_hand_water.fsh create mode 100644 shaders/gbuffers_hand_water.vsh create mode 100644 shaders/gbuffers_skybasic.fsh create mode 100644 shaders/gbuffers_skybasic.vsh create mode 100644 shaders/gbuffers_skytextured.fsh create mode 100644 shaders/gbuffers_skytextured.vsh create mode 100644 shaders/gbuffers_spidereyes.fsh create mode 100644 shaders/gbuffers_spidereyes.vsh create mode 100644 shaders/gbuffers_terrain.fsh create mode 100644 shaders/gbuffers_terrain.vsh create mode 100644 shaders/gbuffers_textured.fsh create mode 100644 shaders/gbuffers_textured.vsh create mode 100644 shaders/gbuffers_textured_lit.fsh create mode 100644 shaders/gbuffers_textured_lit.vsh create mode 100644 shaders/gbuffers_water.fsh create mode 100644 shaders/gbuffers_water.vsh create mode 100644 shaders/gbuffers_weather.fsh create mode 100644 shaders/gbuffers_weather.vsh create mode 100644 shaders/lang/en_us.lang create mode 100644 shaders/lib/ROBOBO_sky.glsl create mode 100644 shaders/lib/Shadow_Params.glsl create mode 100644 shaders/lib/biome_specifics.glsl create mode 100644 shaders/lib/climate_settings.glsl create mode 100644 shaders/lib/clouds.glsl create mode 100644 shaders/lib/color_dither.glsl create mode 100644 shaders/lib/color_transforms.glsl create mode 100644 shaders/lib/projections.glsl create mode 100644 shaders/lib/res_params.glsl create mode 100644 shaders/lib/settings.glsl create mode 100644 shaders/lib/sky_gradient.glsl create mode 100644 shaders/lib/specular.glsl create mode 100644 shaders/lib/stars.glsl create mode 100644 shaders/lib/texFiltering.glsl create mode 100644 shaders/lib/util.glsl create mode 100644 shaders/lib/volumetricClouds.glsl create mode 100644 shaders/lib/volumetricFog.glsl create mode 100644 shaders/lib/waterBump.glsl create mode 100644 shaders/lib/waterOptions.glsl create mode 100644 shaders/shaders.properties create mode 100644 shaders/shadow.fsh create mode 100644 shaders/shadow.vsh create mode 100644 shaders/texture/blueNoise.png create mode 100644 shaders/texture/blueNoise.png.mcmeta create mode 100644 shaders/texture/noises.png create mode 100644 shaders/texture/noises.png.mcmeta create mode 100644 shaders/world-1/block.properties create mode 100644 shaders/world-1/composite10.fsh create mode 100644 shaders/world-1/composite10.vsh create mode 100644 shaders/world-1/composite11.fsh create mode 100644 shaders/world-1/composite11.vsh create mode 100644 shaders/world-1/composite12.fsh create mode 100644 shaders/world-1/composite12.vsh create mode 100644 shaders/world-1/composite14.fsh create mode 100644 shaders/world-1/composite14.vsh create mode 100644 shaders/world-1/composite15.fsh create mode 100644 shaders/world-1/composite15.vsh create mode 100644 shaders/world-1/composite2.fsh create mode 100644 shaders/world-1/composite2.vsh create mode 100644 shaders/world-1/composite5.fsh create mode 100644 shaders/world-1/composite5.vsh create mode 100644 shaders/world-1/composite6.fsh create mode 100644 shaders/world-1/composite6.vsh create mode 100644 shaders/world-1/composite8.fsh create mode 100644 shaders/world-1/composite8.vsh create mode 100644 shaders/world-1/composite9.fsh create mode 100644 shaders/world-1/composite9.vsh create mode 100644 shaders/world-1/deferred.fsh create mode 100644 shaders/world-1/deferred.vsh create mode 100644 shaders/world-1/final.fsh create mode 100644 shaders/world-1/final.vsh create mode 100644 shaders/world-1/gbuffers_all_solid.fsh create mode 100644 shaders/world-1/gbuffers_all_solid.vsh create mode 100644 shaders/world-1/gbuffers_all_translucent.fsh create mode 100644 shaders/world-1/gbuffers_all_translucent.vsh create mode 100644 shaders/world-1/gbuffers_armor_glint.fsh create mode 100644 shaders/world-1/gbuffers_armor_glint.vsh create mode 100644 shaders/world-1/gbuffers_basic.fsh create mode 100644 shaders/world-1/gbuffers_basic.vsh create mode 100644 shaders/world-1/gbuffers_beaconbeam.fsh create mode 100644 shaders/world-1/gbuffers_beaconbeam.vsh create mode 100644 shaders/world-1/gbuffers_block.fsh create mode 100644 shaders/world-1/gbuffers_block.vsh create mode 100644 shaders/world-1/gbuffers_clouds.fsh create mode 100644 shaders/world-1/gbuffers_clouds.vsh create mode 100644 shaders/world-1/gbuffers_damagedblock.fsh create mode 100644 shaders/world-1/gbuffers_damagedblock.vsh create mode 100644 shaders/world-1/gbuffers_entities.fsh create mode 100644 shaders/world-1/gbuffers_entities.vsh create mode 100644 shaders/world-1/gbuffers_hand.fsh create mode 100644 shaders/world-1/gbuffers_hand.vsh create mode 100644 shaders/world-1/gbuffers_hand_water.fsh create mode 100644 shaders/world-1/gbuffers_hand_water.vsh create mode 100644 shaders/world-1/gbuffers_skybasic.fsh create mode 100644 shaders/world-1/gbuffers_skybasic.vsh create mode 100644 shaders/world-1/gbuffers_skytextured.fsh create mode 100644 shaders/world-1/gbuffers_skytextured.vsh create mode 100644 shaders/world-1/gbuffers_spidereyes.fsh create mode 100644 shaders/world-1/gbuffers_spidereyes.vsh create mode 100644 shaders/world-1/gbuffers_terrain.fsh create mode 100644 shaders/world-1/gbuffers_terrain.vsh create mode 100644 shaders/world-1/gbuffers_textured.fsh create mode 100644 shaders/world-1/gbuffers_textured.vsh create mode 100644 shaders/world-1/gbuffers_textured_lit.fsh create mode 100644 shaders/world-1/gbuffers_textured_lit.vsh create mode 100644 shaders/world-1/gbuffers_water.fsh create mode 100644 shaders/world-1/gbuffers_water.vsh create mode 100644 shaders/world-1/gbuffers_weather.fsh create mode 100644 shaders/world-1/gbuffers_weather.vsh create mode 100644 shaders/world-1/lib/ACES.glsl create mode 100644 shaders/world-1/lib/ACESSPL.glsl create mode 100644 shaders/world-1/lib/ACEST.glsl create mode 100644 shaders/world-1/lib/ROBOBO_sky.glsl create mode 100644 shaders/world-1/lib/Shadow_Params.glsl create mode 100644 shaders/world-1/lib/clouds.glsl create mode 100644 shaders/world-1/lib/color_dither.glsl create mode 100644 shaders/world-1/lib/color_transforms.glsl create mode 100644 shaders/world-1/lib/composite3.fsh create mode 100644 shaders/world-1/lib/composite3.vsh create mode 100644 shaders/world-1/lib/projections.glsl create mode 100644 shaders/world-1/lib/sky_gradient.glsl create mode 100644 shaders/world-1/lib/specular.glsl create mode 100644 shaders/world-1/lib/stars.glsl create mode 100644 shaders/world-1/lib/texFiltering.glsl create mode 100644 shaders/world-1/lib/util.glsl create mode 100644 shaders/world-1/lib/volumetricClouds.glsl create mode 100644 shaders/world-1/lib/volumetricFog.glsl create mode 100644 shaders/world-1/lib/waterBump.glsl create mode 100644 shaders/world-1/lib/waterOptions.glsl create mode 100644 shaders/world-1/shaders.properties create mode 100644 shaders/world-1/texture/composite4.fsh create mode 100644 shaders/world-1/texture/composite4.vsh create mode 100644 shaders/world-1/texture/noises.png create mode 100644 shaders/world-1/texture/noises.png.mcmeta create mode 100644 shaders/world1/block.properties create mode 100644 shaders/world1/composite10.fsh create mode 100644 shaders/world1/composite10.vsh create mode 100644 shaders/world1/composite11.fsh create mode 100644 shaders/world1/composite11.vsh create mode 100644 shaders/world1/composite12.fsh create mode 100644 shaders/world1/composite12.vsh create mode 100644 shaders/world1/composite14.fsh create mode 100644 shaders/world1/composite14.vsh create mode 100644 shaders/world1/composite15.fsh create mode 100644 shaders/world1/composite15.vsh create mode 100644 shaders/world1/composite2.fsh create mode 100644 shaders/world1/composite2.vsh create mode 100644 shaders/world1/composite5.fsh create mode 100644 shaders/world1/composite5.vsh create mode 100644 shaders/world1/composite6.fsh create mode 100644 shaders/world1/composite6.vsh create mode 100644 shaders/world1/composite8.fsh create mode 100644 shaders/world1/composite8.vsh create mode 100644 shaders/world1/composite9.fsh create mode 100644 shaders/world1/composite9.vsh create mode 100644 shaders/world1/deferred.fsh create mode 100644 shaders/world1/deferred.vsh create mode 100644 shaders/world1/deferred1.fsh create mode 100644 shaders/world1/deferred1.vsh create mode 100644 shaders/world1/final.fsh create mode 100644 shaders/world1/final.vsh create mode 100644 shaders/world1/gbuffers_all_solid.fsh create mode 100644 shaders/world1/gbuffers_all_solid.vsh create mode 100644 shaders/world1/gbuffers_all_translucent.fsh create mode 100644 shaders/world1/gbuffers_all_translucent.vsh create mode 100644 shaders/world1/gbuffers_armor_glint.fsh create mode 100644 shaders/world1/gbuffers_armor_glint.vsh create mode 100644 shaders/world1/gbuffers_basic.fsh create mode 100644 shaders/world1/gbuffers_basic.vsh create mode 100644 shaders/world1/gbuffers_beaconbeam.fsh create mode 100644 shaders/world1/gbuffers_beaconbeam.vsh create mode 100644 shaders/world1/gbuffers_block.fsh create mode 100644 shaders/world1/gbuffers_block.vsh create mode 100644 shaders/world1/gbuffers_clouds.fsh create mode 100644 shaders/world1/gbuffers_clouds.vsh create mode 100644 shaders/world1/gbuffers_damagedblock.fsh create mode 100644 shaders/world1/gbuffers_damagedblock.vsh create mode 100644 shaders/world1/gbuffers_entities.fsh create mode 100644 shaders/world1/gbuffers_entities.vsh create mode 100644 shaders/world1/gbuffers_hand.fsh create mode 100644 shaders/world1/gbuffers_hand.vsh create mode 100644 shaders/world1/gbuffers_hand_water.fsh create mode 100644 shaders/world1/gbuffers_hand_water.vsh create mode 100644 shaders/world1/gbuffers_skybasic.fsh create mode 100644 shaders/world1/gbuffers_skybasic.vsh create mode 100644 shaders/world1/gbuffers_skytextured.fsh create mode 100644 shaders/world1/gbuffers_skytextured.vsh create mode 100644 shaders/world1/gbuffers_spidereyes.fsh create mode 100644 shaders/world1/gbuffers_spidereyes.vsh create mode 100644 shaders/world1/gbuffers_terrain.fsh create mode 100644 shaders/world1/gbuffers_terrain.vsh create mode 100644 shaders/world1/gbuffers_textured.fsh create mode 100644 shaders/world1/gbuffers_textured.vsh create mode 100644 shaders/world1/gbuffers_textured_lit.fsh create mode 100644 shaders/world1/gbuffers_textured_lit.vsh create mode 100644 shaders/world1/gbuffers_water.fsh create mode 100644 shaders/world1/gbuffers_water.vsh create mode 100644 shaders/world1/gbuffers_weather.fsh create mode 100644 shaders/world1/gbuffers_weather.vsh create mode 100644 shaders/world1/lib/ACES.glsl create mode 100644 shaders/world1/lib/ACESSPL.glsl create mode 100644 shaders/world1/lib/ACEST.glsl create mode 100644 shaders/world1/lib/ROBOBO_sky.glsl create mode 100644 shaders/world1/lib/Shadow_Params.glsl create mode 100644 shaders/world1/lib/clouds.glsl create mode 100644 shaders/world1/lib/color_dither.glsl create mode 100644 shaders/world1/lib/color_transforms.glsl create mode 100644 shaders/world1/lib/composite3.fsh create mode 100644 shaders/world1/lib/composite3.vsh create mode 100644 shaders/world1/lib/projections.glsl create mode 100644 shaders/world1/lib/sky_gradient.glsl create mode 100644 shaders/world1/lib/specular.glsl create mode 100644 shaders/world1/lib/stars.glsl create mode 100644 shaders/world1/lib/texFiltering.glsl create mode 100644 shaders/world1/lib/util.glsl create mode 100644 shaders/world1/lib/volumetricClouds.glsl create mode 100644 shaders/world1/lib/volumetricFog.glsl create mode 100644 shaders/world1/lib/waterBump.glsl create mode 100644 shaders/world1/lib/waterOptions.glsl create mode 100644 shaders/world1/shaders.properties create mode 100644 shaders/world1/texture/composite4.fsh create mode 100644 shaders/world1/texture/composite4.vsh create mode 100644 shaders/world1/texture/noises.png create mode 100644 shaders/world1/texture/noises.png.mcmeta diff --git a/shaders/block.properties b/shaders/block.properties new file mode 100644 index 0000000..72c8ec7 --- /dev/null +++ b/shaders/block.properties @@ -0,0 +1,68 @@ + +#if MC_VERSION >= 11300 + + ####### ----- SSS and waving ----- ####### + + ##ground waving + block.10001 = minecraft:beetroots minecraft:potatoes minecraft:carrots minecraft:wheat minecraft:nether_wart minecraft:kelp minecraft:large_fern:half=upper minecraft:peony:half=upper minecraft:rose_bush:half=upper minecraft:lilac:half=upper minecraft:crimson_roots minecraft:nether_sprouts minecraft:warped_roots minecraft:seagrass minecraft:tall_seagrass:half=upper minecraft:sunflower:half=upper minecraft:tall_grass:half=upper minecraft:wither_rose minecraft:lily_of_the_valley minecraft:cornflower minecraft:sweet_berry_bush minecraft:oxeye_daisy minecraft:pink_tulip minecraft:white_tulip minecraft:orange_tulip minecraft:red_tulip minecraft:azure_bluet minecraft:allium minecraft:blue_orchid minecraft:poppy minecraft:dandelion minecraft:grass minecraft:dead_bush minecraft:oak_sapling minecraft:spruce_sapling minecraft:birch_sapling minecraft:jungle_sapling minecraft:acacia_sapling minecraft:dark_oak_sapling minecraft:fern + + ##air waving + block.10003 = minecraft:mangrove_leaves minecraft:vine minecraft:oak_leaves minecraft:spruce_leaves minecraft:birch_leaves minecraft:jungle_leaves minecraft:acacia_leaves minecraft:dark_oak_leaves + + ####### ----- SSS ----- ####### + + ## strong + block.10004 = minecraft:fern minecraft:packed_ice minecraft:blue_ice minecraft:melon_stem minecraft:pumpkin_stem minecraft:attached_melon_stem minecraft:attached_pumpkin_stem minecraft:lily_pad minecraft:azalea_leaves minecraft:flowering_azalea_leaves minecraft:azalea minecraft:flowering_azalea + + ## weak + block.10006 = weeping_vines weeping_vines_plant twisting_vines twisting_vines_plant vine tube_coral tube_coral_block tube_coral_fan tube_coral_wall_fan horn_coral horn_coral_block horn_coral_fan horn_coral_wall_fan fire_coral fire_coral_block fire_coral_fan fire_coral_wall_fan dead_brain_coral dead_brain_coral_block dead_brain_coral_fan dead_brain_coral_wall_fan dead_bubble_coral dead_bubble_coral_block dead_bubble_coral_fan dead_bubble_coral_wall_fan dead_bush dead_fire_coral dead_fire_coral_block dead_fire_coral_fan dead_fire_coral_wall_fan dead_horn_coral dead_horn_coral_block dead_horn_coral_fan dead_horn_coral_wall_fan dead_tube_coral dead_tube_coral_block dead_tube_coral_fan dead_tube_coral_wall_fan bubble_coral bubble_coral_block bubble_coral_fan bubble_coral_wall_fan brain_coral brain_coral_block brain_coral_fan brain_coral_wall_fan bamboo bamboo_sapling minecraft:tall_seagrass minecraft:seagrass minecraft:kelp minecraft:large_fern minecraft:tall_grass minecraft:tall_seagrass minecraft:kelp_plant minecraft:peony minecraft:rose_bush minecraft:lilac minecraft:sunflower minecraft:spore_blossom minecraft:cave_vines minecraft:cave_vines_plant minecraft:glow_lichen minecraft:melon minecraft:pumpkin minecraft:big_dripleaf minecraft:big_dripleaf_stem minecraft:cactus minecraft:hay_block minecraft:brown_mushroom minecraft:mushroom_stem minecraft:sugar_cane minecraft:crimson_fungus minecraft:warped_fungus minecraft:sea_pickle minecraft:cobweb minecraft:honeycomb_block + + block.200 = minecraft:white_wool minecraft:orange_wool minecraft:magenta_wool minecraft:light_blue_wool minecraft:yellow_wool minecraft:lime_wool minecraft:pink_wool minecraft:gray_wool minecraft:light_gray_wool minecraft:cyan_wool minecraft:purple_wool minecraft:blue_wool minecraft:brown_wool minecraft:green_wool minecraft:red_wool minecraft:black_wool minecraft:orange_carpet minecraft:magenta_carpet minecraft:light_blue_carpet minecraft:yellow_carpet minecraft:lime_carpet minecraft:pink_carpet minecraft:gray_carpet minecraft:light_gray_carpet minecraft:cyan_carpet minecraft:purple_carpet minecraft:blue_carpet minecraft:brown_carpet minecraft:green_carpet minecraft:red_carpet minecraft:black_carpet + + # block.201 = + + + + block.10010 = minecraft:white_wall_banner minecraft:orange_wall_banner minecraft:magenta_wall_banner minecraft:light_blue_wall_banner minecraft:yellow_wall_banner minecraft:lime_wall_banner minecraft:pink_wall_banner minecraft:gray_wall_banner minecraft:light_gray_wall_banner minecraft:cyan_wall_banner minecraft:purple_wall_banner minecraft:blue_wall_banner minecraft:brown_wall_banner minecraft:green_wall_banner minecraft:red_wall_banner minecraft:black_wall_banner minecraft:white_banner minecraft:orange_banner minecraft:magenta_banner minecraft:light_blue_banner minecraft:yellow_banner minecraft:lime_banner minecraft:pink_banner minecraft:gray_banner minecraft:light_gray_banner minecraft:cyan_banner minecraft:purple_banner minecraft:blue_banner minecraft:brown_banner minecraft:green_banner minecraft:red_banner minecraft:black_banner + + + ## weird blocks + block.10007 = minecraft:grass_block:snowy=false minecraft:sand minecraft:red_sand minecraft:snow_block minecraft:snow powder_snow minecraft:grass_block:snowy=true + + ####### ----- lightsources ----- ####### + + block.10005 = minecraft:sculk_sensor minecraft:soul_fire minecraft:soul_campfire:lit=true minecraft:cave_vines_plant:berries=true minecraft:soul_lantern minecraft:soul_torch minecraft:soul_wall_torch minecraft:conduit minecraft:beacon minecraft:sea_pickle minecraft:respawn_anchor:charges=4 minecraft:smoker:lit=true minecraft:blast_furnace:lit=true minecraft:furnace:lit=true minecraft:lava_cauldron minecraft:sea_lantern minecraft:cave_vines:berries=true minecraft:glowstone minecraft:torch minecraft:wall_torch minecraft:lava minecraft:fire minecraft:redstone_torch minecraft:redstone_wall_torch minecraft:jack_o_lantern minecraft:magma_block minecraft:redstone_lamp:lit=true minecraft:lantern minecraft:campfire:lit=true minecraft:shroomlight minecraft:end_rod minecraft:end_gateway minecraft:lava minecraft:fire + + ####### ----- reflective translucents / glass ----- ####### + + block.10002 = minecraft:slime_block minecraft:nether_portal minecraft:honey_block ice minecraft:frosted_ice minecraft:black_stained_glass minecraft:black_stained_glass_pane minecraft:blue_stained_glass minecraft:blue_stained_glass_pane minecraft:brown_stained_glass minecraft:brown_stained_glass_pane minecraft:cyan_stained_glass minecraft:cyan_stained_glass_pane minecraft:gray_stained_glass minecraft:gray_stained_glass_pane minecraft:green_stained_glass minecraft:green_stained_glass_pane minecraft:light_blue_stained_glass minecraft:light_blue_stained_glass_pane minecraft:light_gray_stained_glass minecraft:light_gray_stained_glass_pane minecraft:lime_stained_glass minecraft:lime_stained_glass_pane minecraft:magenta_stained_glass minecraft:magenta_stained_glass_pane minecraft:orange_stained_glass minecraft:orange_stained_glass_pane minecraft:pink_stained_glass minecraft:pink_stained_glass_pane minecraft:purple_stained_glass minecraft:purple_stained_glass_pane minecraft:red_stained_glass minecraft:red_stained_glass_pane minecraft:white_stained_glass minecraft:white_stained_glass_pane minecraft:yellow_stained_glass minecraft:yellow_stained_glass_pane minecraft:glass_pane minecraft:glass + + ####### ----- misc ----- ####### + + block.222 = end_portal end_gateway end_portal_frame + + block.8 = minecraft:water minecraft:flowing_water + + #else + + #wavy plants, translucent, bottom vertices not moving + + block.10001= 6 31 32 37 38 39 40 59 115 141 142 207 + + #wavy plants (blocks) + + block.10003 = 18 106 161 + + #translucent + + block.10004 = 30 83 104 105 111 175 176 177 + + #reflective surfaces (not including water and ice) + + block.10002=95 160 + +#endif + +layer.translucent=minecraft:glass_pane minecraft:glass + +# layer.solid = minecraft:tripwire minecraft:slime_block minecraft:nether_portal minecraft:honey_block minecraft:ice minecraft:black_stained_glass minecraft:black_stained_glass_pane minecraft:blue_stained_glass minecraft:blue_stained_glass_pane minecraft:brown_stained_glass minecraft:brown_stained_glass_pane minecraft:cyan_stained_glass minecraft:cyan_stained_glass_pane minecraft:gray_stained_glass minecraft:gray_stained_glass_pane minecraft:green_stained_glass minecraft:green_stained_glass_pane minecraft:light_blue_stained_glass minecraft:light_blue_stained_glass_pane minecraft:light_gray_stained_glass minecraft:light_gray_stained_glass_pane minecraft:lime_stained_glass minecraft:lime_stained_glass_pane minecraft:magenta_stained_glass minecraft:magenta_stained_glass_pane minecraft:orange_stained_glass minecraft:orange_stained_glass_pane minecraft:pink_stained_glass minecraft:pink_stained_glass_pane minecraft:purple_stained_glass minecraft:purple_stained_glass_pane minecraft:red_stained_glass minecraft:red_stained_glass_pane minecraft:white_stained_glass minecraft:white_stained_glass_pane minecraft:yellow_stained_glass minecraft:yellow_stained_glass_pane minecraft:glass_pane minecraft:glass \ No newline at end of file diff --git a/shaders/composite.fsh b/shaders/composite.fsh new file mode 100644 index 0000000..3b5166d --- /dev/null +++ b/shaders/composite.fsh @@ -0,0 +1,276 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + +#define TAA + +// #define LabPBR_subsurface_scattering +flat varying vec3 WsunVec; +flat varying vec2 TAA_Offset; +#include "/lib/res_params.glsl" +#include "lib/Shadow_Params.glsl" +uniform sampler2D depthtex1; +uniform sampler2D colortex1; +uniform sampler2D colortex6; // Noise +uniform sampler2D colortex8; // Noise +uniform sampler2D colortex15; // Noise +uniform sampler2D shadow; +uniform sampler2D noisetex; +uniform vec3 sunVec; +uniform vec2 texelSize; +uniform float frameTimeCounter; +uniform float rainStrength; +uniform int frameCounter; +uniform mat4 gbufferProjection; +uniform mat4 gbufferProjectionInverse; +uniform mat4 gbufferModelViewInverse; +uniform mat4 gbufferModelView; + +uniform mat4 shadowModelView; +uniform mat4 shadowProjection; +uniform vec3 cameraPosition; +uniform float viewWidth; +uniform float aspectRatio; +uniform float viewHeight; +uniform float far; +uniform float near; + +#define ffstep(x,y) clamp((y - x) * 1e35,0.0,1.0) +#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) +#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) +vec3 toScreenSpace(vec3 p) { + vec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); + vec3 p3 = p * 2. - 1.; + vec4 fragposition = iProjDiag * p3.xyzz + gbufferProjectionInverse[3]; + return fragposition.xyz / fragposition.w; +} +vec3 worldToView(vec3 worldPos) { + vec4 pos = vec4(worldPos, 0.0); + pos = gbufferModelView * pos; + return pos.xyz; +} + +vec2 tapLocation(int sampleNumber,int nb, float nbRot,float jitter,float distort) +{ + float alpha = (sampleNumber+jitter)/nb; + float angle = jitter*6.28+alpha * nbRot * 6.28; + float sin_v, cos_v; + + sin_v = sin(angle); + cos_v = cos(angle); + + return vec2(cos_v, sin_v)*alpha; +} +// float interleaved_gradientNoise(){ +// vec2 coord = gl_FragCoord.xy; +// float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)+ 1.0/1.6180339887 * frameCounter) ; +// return noise; +// } +// float interleaved_gradientNoise2(){ +// vec2 alpha = vec2(0.75487765, 0.56984026); +// vec2 coord = vec2(alpha.x * gl_FragCoord.x,alpha.y * gl_FragCoord.y)+ 1.0/1.6180339887 * frameCounter; +// float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)); +// return noise; +// } +float interleaved_gradientNoise(){ + vec2 coord = gl_FragCoord.xy + (frameCounter%40000); + // vec2 coord = gl_FragCoord.xy + frameTimeCounter; + // vec2 coord = gl_FragCoord.xy; + float noise = fract( 52.9829189 * fract( (coord.x * 0.06711056) + (coord.y * 0.00583715)) ); + return noise ; +} +vec3 decode (vec2 encn){ + vec3 n = vec3(0.0); + encn = encn * 2.0 - 1.0; + n.xy = abs(encn); + n.z = 1.0 - n.x - n.y; + n.xy = n.z <= 0.0 ? (1.0 - n.yx) * sign(encn) : encn; + return clamp(normalize(n.xyz),-1.0,1.0); +} +vec2 decodeVec2(float a){ + const vec2 constant1 = 65535. / vec2( 256., 65536.); + const float constant2 = 256. / 255.; + return fract( a * constant1 ) * constant2 ; +} +float R2_dither(){ + vec2 alpha = vec2(0.75487765, 0.56984026); + return fract(alpha.x * gl_FragCoord.x + alpha.y * gl_FragCoord.y + 1.0/1.6180339887 * frameCounter); +} +float blueNoise(){ + return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); +} +vec4 blueNoise(vec2 coord){ + return texelFetch2D(colortex6, ivec2(coord )%512 , 0); +} + +vec2 R2_samples(int n){ + vec2 alpha = vec2(0.75487765, 0.56984026); + return fract(alpha * n); +} +vec2 tapLocation_alternate( + int sampleNumber, + float spinAngle, + int nb, + float nbRot, + float r0 +){ + float alpha = (float(sampleNumber*1.0f + r0) * (1.0 / (nb))); + float angle = alpha * (nbRot * 3.14) ; + + float ssR = alpha + spinAngle*3.14; + float sin_v, cos_v; + + sin_v = sin(angle); + cos_v = cos(angle); + return vec2(cos_v, sin_v)*ssR; +} +vec3 viewToWorld(vec3 viewPosition) { + vec4 pos; + pos.xyz = viewPosition; + pos.w = 0.0; + pos = gbufferModelViewInverse * pos; + return pos.xyz; +} + + +// Emin's and Gri's combined ideas to stop peter panning and light leaking, also has little shadowacne so thats nice +// https://www.complementary.dev/reimagined +// https://github.com/gri573 +void GriAndEminShadowFix( + inout vec3 WorldPos, + vec3 FlatNormal, + float VanillaAO, + float SkyLightmap, + bool Entities +){ + float DistanceOffset = clamp(0.1 + length(WorldPos) / (shadowMapResolution*0.20), 0.0,1.0) ; + vec3 Bias = FlatNormal * DistanceOffset; // adjust the bias thingy's strength as it gets farther away. + + // stop lightleaking + if(SkyLightmap < 0.1 && !Entities) { + WorldPos += mix(Bias, 0.5 * (0.5 - fract(WorldPos + cameraPosition + FlatNormal*0.01 ) ), VanillaAO) ; + }else{ + WorldPos += Bias; + } +} + +void main() { +/* DRAWBUFFERS:3 */ + vec2 texcoord = gl_FragCoord.xy*texelSize; + + + float z = texture2D(depthtex1,texcoord).x; + + vec2 tempOffset=TAA_Offset; + + vec4 data = texture2D(colortex1,texcoord); + vec4 dataUnpacked0 = vec4(decodeVec2(data.x),decodeVec2(data.y)); + vec4 dataUnpacked1 = vec4(decodeVec2(data.z),decodeVec2(data.w)); + vec3 normal = mat3(gbufferModelViewInverse) * clamp(worldToView( decode(dataUnpacked0.yw) ),-1.,1.); + vec2 lightmap = dataUnpacked1.yz; + + + bool translucent = abs(dataUnpacked1.w-0.5) <0.01; + bool translucent2 = abs(dataUnpacked1.w-0.6) <0.01; // Weak translucency + bool translucent3 = abs(dataUnpacked1.w-0.55) <0.01; // Weak translucency + bool translucent4 = abs(dataUnpacked1.w-0.65) <0.01; // Weak translucency + bool entities = abs(dataUnpacked1.w-0.45) <0.01; // Weak translucency + bool hand = abs(dataUnpacked1.w-0.75) <0.01; + + float minshadowfilt = Min_Shadow_Filter_Radius; + float maxshadowfilt = Max_Shadow_Filter_Radius; + + float vanillAO = clamp(pow(1-texture2D(colortex15,texcoord).a*2,4),0,1) ; + + if(lightmap.y < 0.1 && !entities){ + // minshadowfilt *= vanillAO; + maxshadowfilt = mix(minshadowfilt ,maxshadowfilt, vanillAO); + } + + + #ifdef LabPBR_subsurface_scattering + float SpecularTex = texture2D(colortex8,texcoord).z; + float LabSSS = clamp((-65.0 + SpecularTex * 255.0) / 190.0 ,0.0,1.0); + #else + float LabSSS = 0.0; + #endif + + + #ifndef Variable_Penumbra_Shadows + if (translucent && !hand) minshadowfilt += 25; + #endif + + + gl_FragData[0] = vec4(minshadowfilt, 0.1, 0.0, 0.0); + + + + if (z < 1.0){ + + // if( translucent || translucent2) + + if (!hand){ + + float NdotL = clamp(dot(normal,WsunVec),0.0,1.0); + + vec3 fragpos = toScreenSpace(vec3(texcoord/RENDER_SCALE-vec2(tempOffset)*texelSize*0.5,z)); + + #ifdef Variable_Penumbra_Shadows + + if (NdotL > 0.000 || LabSSS > 0.0 || translucent || translucent2 || translucent3 || translucent4) { + + vec3 p3 = mat3(gbufferModelViewInverse) * fragpos + gbufferModelViewInverse[3].xyz; + + vec3 projectedShadowPosition = mat3(shadowModelView) * p3 + shadowModelView[3].xyz; + projectedShadowPosition = diagonal3(shadowProjection) * projectedShadowPosition + shadowProjection[3].xyz; + + //apply distortion + float distortFactor = calcDistort(projectedShadowPosition.xy); + projectedShadowPosition.xy *= distortFactor; + //do shadows only if on shadow map + if (abs(projectedShadowPosition.x) < 1.0-1.5/shadowMapResolution && abs(projectedShadowPosition.y) < 1.0-1.5/shadowMapResolution && abs(projectedShadowPosition.z) < 6.0){ + const float threshMul = max(2048.0/shadowMapResolution*shadowDistance/128.0,0.95); + float distortThresh = (sqrt(1.0-NdotL*NdotL)/NdotL+0.7)/distortFactor; + float diffthresh = distortThresh/6000.0*threshMul; + projectedShadowPosition = projectedShadowPosition * vec3(0.5,0.5,0.5/6.0) + vec3(0.5,0.5,0.5); + + float mult = maxshadowfilt; + float avgBlockerDepth = 0.0; + vec2 scales = vec2(0.0,Max_Filter_Depth); + float blockerCount = 0.0; + float rdMul = distortFactor*(1.0+mult)*d0*k/shadowMapResolution; + float diffthreshM = diffthresh*mult*d0*k/20.; + float avgDepth = 0.0; + + int seed = (frameCounter%40000) + (1+frameCounter); + float randomDir = fract(R2_samples(seed).y + blueNoise(gl_FragCoord.xy).g) * 1.61803398874 ; + + for(int i = 0; i < VPS_Search_Samples; i++){ + + // vec2 offsetS = tapLocation(i,VPS_Search_Samples,1.61803398874 , blueNoise(),0.0); + + vec2 offsetS = tapLocation_alternate(i, 0.0, 7, 20, randomDir); + + float weight = 3.0 + (i+blueNoise() ) *rdMul/SHADOW_FILTER_SAMPLE_COUNT*shadowMapResolution*distortFactor/2.7; + float d = texelFetch2D( shadow, ivec2((projectedShadowPosition.xy+offsetS*rdMul)*shadowMapResolution),0).x; + float b = smoothstep(weight*diffthresh/2.0, weight*diffthresh, projectedShadowPosition.z - d); + + blockerCount += b; + avgDepth += max(projectedShadowPosition.z - d, 0.0)*1000.; + avgBlockerDepth += d * b; + } + + gl_FragData[0].g = avgDepth / VPS_Search_Samples; + gl_FragData[0].b = blockerCount / VPS_Search_Samples; + if (blockerCount >= 0.9){ + avgBlockerDepth /= blockerCount; + float ssample = max(projectedShadowPosition.z - avgBlockerDepth,0.0)*1500.0; + gl_FragData[0].r = clamp(ssample, scales.x, scales.y)/(scales.y)*(mult-minshadowfilt)+minshadowfilt; + } + } + } + #endif + } + +} + +} diff --git a/shaders/composite.vsh b/shaders/composite.vsh new file mode 100644 index 0000000..934a139 --- /dev/null +++ b/shaders/composite.vsh @@ -0,0 +1,35 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable +#define TAA +flat varying vec2 TAA_Offset; +flat varying vec3 WsunVec; + +uniform sampler2D colortex4; + +uniform int frameCounter; +uniform float sunElevation; +uniform vec3 sunPosition; +uniform mat4 gbufferModelViewInverse; +#include "/lib/util.glsl" +#include "/lib/res_params.glsl" +const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); +void main() { + TAA_Offset = offsets[frameCounter%8]; + #ifndef TAA + TAA_Offset = vec2(0.0); + #endif + gl_Position = ftransform(); + #ifdef TAA_UPSCALING + gl_Position.xy = (gl_Position.xy*0.5+0.5)*RENDER_SCALE*2.0-1.0; + #endif + + WsunVec = (float(sunElevation > 1e-5)*2-1.)*normalize(mat3(gbufferModelViewInverse) * sunPosition); + +} diff --git a/shaders/composite10.fsh b/shaders/composite10.fsh new file mode 100644 index 0000000..139ceb4 --- /dev/null +++ b/shaders/composite10.fsh @@ -0,0 +1,43 @@ +#version 120 +//downsample 1st pass (half res) for bloom +#include "lib/res_params.glsl" +uniform sampler2D colortex3; +uniform sampler2D colortex8; +uniform vec2 texelSize; +uniform float viewWidth; +uniform float viewHeight; +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + +/* DRAWBUFFERS:6 */ +vec2 resScale = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.))/vec2(1920.,1080.); +vec2 quarterResTC = gl_FragCoord.xy*texelSize*2.; + + //0.5 + gl_FragData[0] = texture2D(colortex3,quarterResTC-1.0*vec2(texelSize.x,texelSize.y))/4.*0.5; + gl_FragData[0] += texture2D(colortex3,quarterResTC+1.0*vec2(texelSize.x,texelSize.y))/4.*0.5; + gl_FragData[0] += texture2D(colortex3,quarterResTC+vec2(-1.0*texelSize.x,1.0*texelSize.y))/4.*0.5; + gl_FragData[0] += texture2D(colortex3,quarterResTC+vec2(1.0*texelSize.x,-1.0*texelSize.y))/4.*0.5; + + //0.25 + gl_FragData[0] += texture2D(colortex3,quarterResTC-2.0*vec2(texelSize.x,0.0))/2.*0.125; + gl_FragData[0] += texture2D(colortex3,quarterResTC+2.0*vec2(0.0,texelSize.y))/2.*0.125; + gl_FragData[0] += texture2D(colortex3,quarterResTC+2.0*vec2(0,-texelSize.y))/2*0.125; + gl_FragData[0] += texture2D(colortex3,quarterResTC+2.0*vec2(-texelSize.x,0.0))/2*0.125; + + //0.125 + gl_FragData[0] += texture2D(colortex3,quarterResTC-2.0*vec2(texelSize.x,texelSize.y))/4.*0.125; + gl_FragData[0] += texture2D(colortex3,quarterResTC+2.0*vec2(texelSize.x,texelSize.y))/4.*0.125; + gl_FragData[0] += texture2D(colortex3,quarterResTC+vec2(-2.0*texelSize.x,2.0*texelSize.y))/4.*0.125; + gl_FragData[0] += texture2D(colortex3,quarterResTC+vec2(2.0*texelSize.x,-2.0*texelSize.y))/4.*0.125; + + //0.125 + gl_FragData[0] += texture2D(colortex3,quarterResTC)*0.125; + + gl_FragData[0].rgb = clamp(gl_FragData[0].rgb,0.0,65000.); +} diff --git a/shaders/composite10.vsh b/shaders/composite10.vsh new file mode 100644 index 0000000..0bb9b19 --- /dev/null +++ b/shaders/composite10.vsh @@ -0,0 +1,17 @@ +#version 120 +#include "lib/res_params.glsl" +uniform float viewWidth; +uniform float viewHeight; +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + //Improves performances and makes sure bloom radius stays the same at high resolution (>1080p) + vec2 clampedRes = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.)); + gl_Position = ftransform(); + //*0.51 to avoid errors when sampling outside since clearing is disabled + gl_Position.xy = (gl_Position.xy*0.5+0.5)*0.26*BLOOM_QUALITY/clampedRes*vec2(1920.0,1080.)*2-1.0; +} diff --git a/shaders/composite11.fsh b/shaders/composite11.fsh new file mode 100644 index 0000000..63d77d7 --- /dev/null +++ b/shaders/composite11.fsh @@ -0,0 +1,61 @@ +#version 120 +//6 Horizontal gaussian blurs and horizontal downsampling +#include "lib/res_params.glsl" + +uniform sampler2D colortex6; +uniform vec2 texelSize; +varying vec2 texcoord; +uniform float viewWidth; +uniform float viewHeight; +vec2 resScale = vec2(1920.,1080.)/max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.))*BLOOM_QUALITY; +vec3 gauss1D(vec2 coord,vec2 dir,float alpha,int maxIT){ + vec4 tot = vec4(0.); + float maxTC = 0.25*resScale.x; + float minTC = 0.; + for (int i = -maxIT;i minTC && spCoord.x < maxTC); + } + return tot.rgb/max(1.0,tot.a); +} + +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { +/* DRAWBUFFERS:6 */ + +vec2 texcoord = (gl_FragCoord.xy*vec2(2.0,4.0))*texelSize; +vec2 gaussDir = vec2(1.0,0.0); +gl_FragData[0].rgb = vec3(0.0); +vec2 tc2 = texcoord*vec2(2.0,1.)/2.; +if (tc2.x < 1.0*resScale.x && tc2.y <1.0*resScale.y) +gl_FragData[0].xyz = gauss1D(tc2/2,gaussDir,0.16,0); + +vec2 tc4 = texcoord*vec2(4.0,1.)/2.-vec2(0.5*resScale.x+4.0*texelSize.x,0.)*2.0; +if (tc4.x > 0.0 && tc4.y > 0.0 && tc4.x < 1.0*resScale.x && tc4.y <1.0*resScale.y) +gl_FragData[0].xyz = gauss1D(tc4/2,gaussDir,0.16,3); + +vec2 tc8 = texcoord*vec2(8.0,1.)/2.-vec2(0.75*resScale.x+8.*texelSize.x,0.)*4.0; +if (tc8.x > 0.0 && tc8.y > 0.0 && tc8.x < 1.0*resScale.x && tc8.y <1.0*resScale.y) +gl_FragData[0].xyz = gauss1D(tc8/2,gaussDir,0.035,6); + +vec2 tc16 = texcoord*vec2(8.0,1./2.)-vec2(0.875*resScale.x+12.*texelSize.x,0.)*8.0; +if (tc16.x > 0.0 && tc16.y > 0.0 && tc16.x < 1.0*resScale.x && tc16.y <1.0*resScale.y) +gl_FragData[0].xyz = gauss1D(tc16/2,gaussDir,0.0085,12); + +vec2 tc32 = texcoord*vec2(16.0,1./2.)-vec2(0.9375*resScale.x+16.*texelSize.x,0.)*16.0; +if (tc32.x > 0.0 && tc32.y > 0.0 && tc32.x < 1.0*resScale.x && tc32.y <1.0*resScale.y) +gl_FragData[0].xyz = gauss1D(tc32/2,gaussDir,0.002,28); + +vec2 tc64 = texcoord*vec2(32.0,1./2.)-vec2(0.96875*resScale.x+20.*texelSize.x,0.)*32.0; +if (tc64.x > 0.0 && tc64.y > 0.0 && tc64.x < 1.0*resScale.x && tc64.y <1.0*resScale.y) +gl_FragData[0].xyz = gauss1D(tc64/2,gaussDir,0.0005,60); + +gl_FragData[0].rgb = clamp(gl_FragData[0].rgb,0.0,65000.); +} diff --git a/shaders/composite11.vsh b/shaders/composite11.vsh new file mode 100644 index 0000000..ceede8d --- /dev/null +++ b/shaders/composite11.vsh @@ -0,0 +1,20 @@ +#version 120 +#include "lib/res_params.glsl" +uniform float viewWidth; +uniform float viewHeight; +varying vec2 texcoord; +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + vec2 clampedRes = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.0))/BLOOM_QUALITY; + gl_Position = ftransform(); + //0-0.25 + gl_Position.y = (gl_Position.y*0.5+0.5)*0.25/clampedRes.y*1080.0*2.0-1.0; + //0-0.5 + gl_Position.x = (gl_Position.x*0.5+0.5)*0.5/clampedRes.x*1920.0*2.0-1.0; + texcoord = gl_MultiTexCoord0.xy/clampedRes*vec2(1920.,1080.); +} diff --git a/shaders/composite12.fsh b/shaders/composite12.fsh new file mode 100644 index 0000000..46c64db --- /dev/null +++ b/shaders/composite12.fsh @@ -0,0 +1,61 @@ +#version 120 +//6 Vertical gaussian blurs and vertical downsampling +#include "lib/res_params.glsl" + + +uniform sampler2D colortex6; +uniform vec2 texelSize; +varying vec2 texcoord; +uniform float viewWidth; +uniform float viewHeight; +vec2 resScale = vec2(1920.,1080.)/max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.))*BLOOM_QUALITY; +vec3 gauss1D(vec2 coord,vec2 dir,float alpha,int maxIT){ + vec4 tot = vec4(0.); + float maxTC = 0.25*resScale.y; + float minTC = 0.; + for (int i = -maxIT;i minTC && spCoord.y < maxTC); + } + return tot.rgb/max(1.0,tot.a); +} + +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { +/* DRAWBUFFERS:6 */ +vec2 texcoord = (gl_FragCoord.xy*vec2(2.0,4.0))*texelSize; + +vec2 gaussDir = vec2(0.0,1.0); +gl_FragData[0].rgb = vec3(0.0); +vec2 tc2 = texcoord*vec2(2.0,1.); +if (tc2.x < 1.0*resScale.x && tc2.y <1.0*resScale.y) +gl_FragData[0].xyz = gauss1D(texcoord/vec2(2.0,4.0),gaussDir,0.16,0); + +vec2 tc4 = texcoord*vec2(4.0,2.)-vec2(0.5*resScale.x+4.0*texelSize.x,0.)*4.0; +if (tc4.x > 0.0 && tc4.y > 0.0 && tc4.x < 1.0*resScale.x && tc4.y <1.0*resScale.y) +gl_FragData[0].xyz = gauss1D(texcoord/vec2(2.0,2.0),gaussDir,0.16,3); + +vec2 tc8 = texcoord*vec2(8.0,4.)-vec2(0.75*resScale.x+8.*texelSize.x,0.)*8.0; +if (tc8.x > 0.0 && tc8.y > 0.0 && tc8.x < 1.0*resScale.x && tc8.y <1.0*resScale.y) +gl_FragData[0].xyz = gauss1D(texcoord*vec2(1.0,2.0)/vec2(2.0,2.0),gaussDir,0.035,6); + +vec2 tc16 = texcoord*vec2(16.0,8.)-vec2(0.875*resScale.x+12.*texelSize.x,0.)*16.0; +if (tc16.x > 0.0 && tc16.y > 0.0 && tc16.x < 1.0*resScale.x && tc16.y <1.0*resScale.y) +gl_FragData[0].xyz = gauss1D(texcoord*vec2(1.0,4.0)/vec2(2.0,2.0),gaussDir,0.0085,12); + +vec2 tc32 = texcoord*vec2(32.0,16.)-vec2(0.9375*resScale.x+16.*texelSize.x,0.)*32.0; +if (tc32.x > 0.0 && tc32.y > 0.0 && tc32.x < 1.0*resScale.x && tc32.y <1.0*resScale.y) +gl_FragData[0].xyz = gauss1D(texcoord*vec2(1.0,8.0)/vec2(2.0,2.0),gaussDir,0.002,30); + +vec2 tc64 = texcoord*vec2(64.0,32.)-vec2(0.96875*resScale.x+20.*texelSize.x,0.)*64.0; +if (tc64.x > 0.0 && tc64.y > 0.0 && tc64.x < 1.0*resScale.x && tc64.y <1.0*resScale.y) +gl_FragData[0].xyz = gauss1D(texcoord*vec2(1.0,16.0)/vec2(2.0,2.0),gaussDir,0.0005,60); + +gl_FragData[0].rgb = clamp(gl_FragData[0].rgb,0.0,65000.); +} diff --git a/shaders/composite12.vsh b/shaders/composite12.vsh new file mode 100644 index 0000000..7a82ef6 --- /dev/null +++ b/shaders/composite12.vsh @@ -0,0 +1,21 @@ +#version 120 +#include "lib/res_params.glsl" +uniform float viewWidth; +uniform float viewHeight; +varying vec2 texcoord; +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + vec2 clampedRes = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.0))/BLOOM_QUALITY; + gl_Position = ftransform(); + //0-0.25 + gl_Position.y = (gl_Position.y*0.5+0.5)*0.25/clampedRes.y*1080.0*2.0-1.0; + //0-0.5 + gl_Position.x = (gl_Position.x*0.5+0.5)*0.5/clampedRes.x*1920.0*2.0-1.0; + texcoord = gl_MultiTexCoord0.xy/clampedRes*vec2(1920.,1080.); + +} diff --git a/shaders/composite14.fsh b/shaders/composite14.fsh new file mode 100644 index 0000000..bea104b --- /dev/null +++ b/shaders/composite14.fsh @@ -0,0 +1,103 @@ +#version 120 +//Merge and upsample the blurs into a 1/4 res bloom buffer +#include "lib/res_params.glsl" +uniform sampler2D colortex3; +uniform sampler2D colortex6; + +uniform vec2 texelSize; +uniform float viewWidth; +uniform float viewHeight; + +float w0(float a) +{ + return (1.0/6.0)*(a*(a*(-a + 3.0) - 3.0) + 1.0); +} + +float w1(float a) +{ + return (1.0/6.0)*(a*a*(3.0*a - 6.0) + 4.0); +} + +float w2(float a) +{ + return (1.0/6.0)*(a*(a*(-3.0*a + 3.0) + 3.0) + 1.0); +} + +float w3(float a) +{ + return (1.0/6.0)*(a*a*a); +} + +float g0(float a) +{ + return w0(a) + w1(a); +} + +float g1(float a) +{ + return w2(a) + w3(a); +} + +float h0(float a) +{ + return -1.0 + w1(a) / (w0(a) + w1(a)); +} + +float h1(float a) +{ + return 1.0 + w3(a) / (w2(a) + w3(a)); +} + +vec4 texture2D_bicubic(sampler2D tex, vec2 uv) +{ + vec4 texelSize = vec4(texelSize,1.0/texelSize); + uv = uv*texelSize.zw; + vec2 iuv = floor( uv ); + vec2 fuv = fract( uv ); + + float g0x = g0(fuv.x); + float g1x = g1(fuv.x); + float h0x = h0(fuv.x); + float h1x = h1(fuv.x); + float h0y = h0(fuv.y); + float h1y = h1(fuv.y); + + vec2 p0 = (vec2(iuv.x + h0x, iuv.y + h0y) - 0.5) * texelSize.xy; + vec2 p1 = (vec2(iuv.x + h1x, iuv.y + h0y) - 0.5) * texelSize.xy; + vec2 p2 = (vec2(iuv.x + h0x, iuv.y + h1y) - 0.5) * texelSize.xy; + vec2 p3 = (vec2(iuv.x + h1x, iuv.y + h1y) - 0.5) * texelSize.xy; + + return g0(fuv.y) * (g0x * texture2D(tex, p0) + + g1x * texture2D(tex, p1)) + + g1(fuv.y) * (g0x * texture2D(tex, p2) + + g1x * texture2D(tex, p3)); +} + +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { +/* DRAWBUFFERS:3 */ +vec2 resScale = vec2(1920.,1080.)/(max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.))/BLOOM_QUALITY); +vec2 texcoord = ((gl_FragCoord.xy)*2.+0.5)*texelSize; +vec3 bloom = texture2D_bicubic(colortex3,texcoord/2.0).rgb; //1/4 res + +bloom += texture2D_bicubic(colortex6,texcoord/4.).rgb; //1/8 res + +bloom += texture2D_bicubic(colortex6,texcoord/8.+vec2(0.25*resScale.x+2.5*texelSize.x,.0)).rgb; //1/16 res + +bloom += texture2D_bicubic(colortex6,texcoord/16.+vec2(0.375*resScale.x+4.5*texelSize.x,.0)).rgb; //1/32 res + +bloom += texture2D_bicubic(colortex6,texcoord/32.+vec2(0.4375*resScale.x+6.5*texelSize.x,.0)).rgb*1.0; //1/64 res +bloom += texture2D_bicubic(colortex6,texcoord/64.+vec2(0.46875*resScale.x+8.5*texelSize.x,.0)).rgb*1.0; //1/128 res +bloom += texture2D_bicubic(colortex6,texcoord/128.+vec2(0.484375*resScale.x+10.5*texelSize.x,.0)).rgb*1.0; //1/256 res + +//bloom = texture2D_bicubic(colortex6,texcoord).rgb*6.; //1/8 res + +gl_FragData[0].rgb = bloom*2.; + +gl_FragData[0].rgb = clamp(gl_FragData[0].rgb,0.0,65000.); +} diff --git a/shaders/composite14.vsh b/shaders/composite14.vsh new file mode 100644 index 0000000..f98ccfe --- /dev/null +++ b/shaders/composite14.vsh @@ -0,0 +1,17 @@ +#version 120 +#include "lib/res_params.glsl" +uniform float viewWidth; +uniform float viewHeight; +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + //Improves performances and makes sure bloom radius stays the same at high resolution (>1080p) + vec2 clampedRes = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.)); + gl_Position = ftransform(); + //*0.51 to avoid errors when sampling outside since clearing is disabled + gl_Position.xy = (gl_Position.xy*0.5+0.5)*0.51*BLOOM_QUALITY/clampedRes*vec2(1920.0,1080.)*2.0-1.0; +} diff --git a/shaders/composite15.fsh b/shaders/composite15.fsh new file mode 100644 index 0000000..777118b --- /dev/null +++ b/shaders/composite15.fsh @@ -0,0 +1,497 @@ +#version 120 +//Vignetting, applies bloom, applies exposure and tonemaps the final image +#extension GL_EXT_gpu_shader4 : enable +#define Fake_purkinje +#define BLOOMY_FOG 2.0 //[0.0 0.25 0.5 0.75 1.0 1.25 1.5 1.75 2.0 3.0 4.0 6.0 10.0 15.0 20.0] +#define BLOOM_STRENGTH 4.0 //[0.0 0.25 0.5 0.75 1.0 1.25 1.5 1.75 2.0 3.0 4.0] +#define TONEMAP ToneMap_Hejl2015 // Tonemapping operator [Tonemap_Uchimura HableTonemap reinhard Tonemap_Lottes ACESFilm] +//#define USE_ACES_COLORSPACE_APPROXIMATION // Do the tonemap in another colorspace + +#define Purkinje_strength 1.0 // Simulates how the eye is unable to see colors at low light intensities. 0 = No purkinje effect at low exposures [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +#define Purkinje_R 0.4 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +#define Purkinje_G 0.7 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +#define Purkinje_B 1.0 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +#define Purkinje_Multiplier 5.0 // How much the purkinje effect increases brightness [0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.05 1.1 1.15 1.2 1.25 1.3 1.35 1.4 1.45 1.5 1.55 1.6 1.65 1.7 1.75 1.8 1.85 1.9 1.95 2.0 2.05 2.1 2.15 2.2 2.25 2.3 2.35 2.4 2.45 2.5 2.55 2.6 2.65 2.7 2.75 2.8 2.85 2.9 2.95 3.0 3.05 3.1 3.15 3.2 3.25 3.3 3.35 3.4 3.45 3.5 3.55 3.6 3.65 3.7 3.75 3.8 3.85 3.9 3.95 4.0 4.05 4.1 4.15 4.2 4.25 4.3 4.35 4.4 4.45 4.5 4.55 4.6 4.65 4.7 4.75 4.8 4.85 4.9 4.95 5.0 5.05 5.1 5.15 5.2 5.25 5.3 5.35 5.4 5.45 5.5 5.55 5.6 5.65 5.7 5.75 5.8 5.85 5.9 5.95 6.0 6.05 6.1 6.15 6.2 6.25 6.3 6.35 6.4 6.45 6.5 6.55 6.6 6.65 6.7 6.75 6.8 6.85 6.9 6.95 7.0 7.05 7.1 7.15 7.2 7.25 7.3 7.35 7.4 7.45 7.5 7.55 7.6 7.65 7.7 7.75 7.8 7.85 7.9 7.95 8.0 8.05 8.1 8.15 8.2 8.25 8.3 8.35 8.4 8.45 8.5 8.55 8.6 8.65 8.7 8.75 8.8 8.85 8.9 8.95 9.0 9.05 9.1 9.15 9.2 9.25 9.3 9.35 9.4 9.45 9.5 9.55 9.6 9.65 9.7 9.75 9.8 9.85 9.9 9.95 ] + + +//#define DOF //enable depth of field (blur on non-focused objects) +//#define HQ_DOF //Slow! Forces circular bokeh! Uses 4 times more samples with noise in order to remove sampling artifacts at great blur sizes. +//#define HEXAGONAL_BOKEH //disabled : circular blur shape - enabled : hexagonal blur shape +#define AUTOFOCUS // THE BRIGHTNESS SLIDER CAN CONTROL THE MANUAL FOCUS DISTANCE +//#define FAR_BLUR_ONLY // Removes DoF on objects closer to the camera than the focus point + +//lens properties +#define focal 2.4 // Centimeters [0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.05 1.1 1.15 1.2 1.25 1.3 1.35 1.4 1.45 1.5 1.55 1.6 1.65 1.7 1.75 1.8 1.85 1.9 1.95 2.0 2.05 2.1 2.15 2.2 2.25 2.3 2.35 2.4 2.45 2.5 2.55 2.6 2.65 2.7 2.75 2.8 2.85 2.9 2.95 3.0 3.05 3.1 3.15 3.2 3.25 3.3 3.35 3.4 3.45 3.5 3.55 3.6 3.65 3.7 3.75 3.8 3.85 3.9 3.95 4.0 4.05 4.1 4.15 4.2 4.25 4.3 4.35 4.4 4.45 4.5 4.55 4.6 4.65 4.7 4.75 4.8 4.85 4.9 4.95 5.0 5.05 5.1 5.15 5.2 5.25 5.3 5.35 5.4 5.45 5.5 5.55 5.6 5.65 5.7 5.75 5.8 5.85 5.9 5.95 6.0 6.05 6.1 6.15 6.2 6.25 6.3 6.35 6.4 6.45 6.5 6.55 6.6 6.65 6.7 6.75 6.8 6.85 6.9 6.95 7.0 7.05 7.1 7.15 7.2 7.25 7.3 7.35 7.4 7.45 7.5 7.55 7.6 7.65 7.7 7.75 7.8 7.85 7.9 7.95 8.0 8.05 8.1 8.15 8.2 8.25 8.3 8.35 8.4 8.45 8.5 8.55 8.6 8.65 8.7 8.75 8.8 8.85 8.9 8.95 9.0 9.05 9.1 9.15 9.2 9.25 9.3 9.35 9.4 9.45 9.5 9.55 9.6 9.65 9.7 9.75 9.8 9.85 9.9 9.95 ] +#define aperture 0.8 // Centimeters [0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.05 1.1 1.15 1.2 1.25 1.3 1.35 1.4 1.45 1.5 1.55 1.6 1.65 1.7 1.75 1.8 1.85 1.9 1.95 2.0 2.05 2.1 2.15 2.2 2.25 2.3 2.35 2.4 2.45 2.5 2.55 2.6 2.65 2.7 2.75 2.8 2.85 2.9 2.95 3.0 3.05 3.1 3.15 3.2 3.25 3.3 3.35 3.4 3.45 3.5 3.55 3.6 3.65 3.7 3.75 3.8 3.85 3.9 3.95 4.0 4.05 4.1 4.15 4.2 4.25 4.3 4.35 4.4 4.45 4.5 4.55 4.6 4.65 4.7 4.75 4.8 4.85 4.9 4.95 5.0 5.05 5.1 5.15 5.2 5.25 5.3 5.35 5.4 5.45 5.5 5.55 5.6 5.65 5.7 5.75 5.8 5.85 5.9 5.95 6.0 6.05 6.1 6.15 6.2 6.25 6.3 6.35 6.4 6.45 6.5 6.55 6.6 6.65 6.7 6.75 6.8 6.85 6.9 6.95 7.0 7.05 7.1 7.15 7.2 7.25 7.3 7.35 7.4 7.45 7.5 7.55 7.6 7.65 7.7 7.75 7.8 7.85 7.9 7.95 8.0 8.05 8.1 8.15 8.2 8.25 8.3 8.35 8.4 8.45 8.5 8.55 8.6 8.65 8.7 8.75 8.8 8.85 8.9 8.95 9.0 9.05 9.1 9.15 9.2 9.25 9.3 9.35 9.4 9.45 9.5 9.55 9.6 9.65 9.7 9.75 9.8 9.85 9.9 9.95 ] +#define MANUAL_FOCUS 48.0 // If autofocus is turned off, sets the focus point (meters) [0.06948345122280154 0.07243975703425146 0.07552184450877376 0.07873506526686186 0.0820849986238988 0.08557746127787037 0.08921851740926011 0.09301448921066349 0.09697196786440505 0.10109782498721881 0.10539922456186433 0.10988363537639657 0.11455884399268773 0.11943296826671962 0.12451447144412296 0.129812176855438 0.1353352832366127 0.1410933807013415 0.1470964673929768 0.15335496684492847 0.1598797460796939 0.16668213447794653 0.17377394345044514 0.18116748694692214 0.18887560283756183 0.19691167520419406 0.20528965757990927 0.21402409717744744 0.22313016014842982 0.2326236579172927 0.2425210746356487 0.25283959580474646 0.26359713811572677 0.27481238055948964 0.2865047968601901 0.29869468928867837 0.3114032239145977 0.32465246735834974 0.3384654251067422 0.3528660814588489 0.36787944117144233 0.3835315728763107 0.39984965434484737 0.4168620196785084 0.4345982085070782 0.453089017280169 0.4723665527410147 0.49246428767540973 0.513417119032592 0.5352614285189903 0.5580351457700471 0.5817778142098083 0.6065306597126334 0.6323366621862497 0.6592406302004438 0.6872892787909722 0.7165313105737893 0.7470175003104326 0.7788007830714049 0.8119363461506349 0.8464817248906141 0.8824969025845955 0.9200444146293233 0.9591894571091382 1.0 1.0425469051899914 1.086904049521229 1.1331484530668263 1.1813604128656459 1.2316236423470497 1.2840254166877414 1.338656724353094 1.3956124250860895 1.4549914146182013 1.5168967963882134 1.5814360605671443 1.6487212707001282 1.7188692582893286 1.7920018256557555 1.8682459574322223 1.9477340410546757 2.030604096634748 2.117000016612675 2.2070718156067044 2.300975890892825 2.398875293967098 2.5009400136621287 2.6073472713092674 2.718281828459045 2.833936307694169 2.9545115270921065 3.080216848918031 3.211270543153561 3.347900166492527 3.4903429574618414 3.638846248353525 3.7936678946831774 3.955076722920577 4.123352997269821 4.298788906309526 4.4816890703380645 4.672371070304759 4.871165999245474 5.0784190371800815 5.29449005047003 5.51975421667673 5.754602676005731 5.999443210467818 6.254700951936329 6.5208191203301125 6.798259793203881 7.087504708082256 7.38905609893065 7.703437568215379 8.031194996067258 8.372897488127265 8.72913836372013 9.10053618607165 9.487735836358526 9.891409633455755 10.312258501325767 10.751013186076355 11.208435524800691 11.685319768402522 12.182493960703473 12.700821376227164 13.241202019156521 13.804574186067095 14.391916095149892 15.00424758475255 15.642631884188171 16.30817745988666 17.00203994009402 17.725424121461643 18.479586061009854 19.265835257097933 20.085536923187668 20.940114358348602 21.831051418620845 22.75989509352673 23.728258192205157 24.737822143832553 25.790339917193062 26.88763906446752 28.03162489452614 29.22428378123494 30.46768661252054 31.763992386181833 33.11545195869231 34.52441195350251 35.99331883562839 37.524723159600995 39.12128399815321 40.78577355933337 42.52108200006278 44.3302224444953 46.21633621589248 48.182698291098816 50.23272298708815 52.36996988945491 54.598150033144236 56.92113234615337 59.34295036739207 61.867809250367884 64.50009306485578 67.24437240923179 70.10541234668786 73.08818067910767 76.19785657297057 79.43983955226133 82.81975887399955 86.3434833026695 90.01713130052181 93.84708165144015 97.83998453682129 102.00277308269969 106.34267539816554 110.86722712598126 115.58428452718766 120.50203812241894 125.62902691361414 130.9741532108186 136.54669808981876 142.35633750745257 148.4131591025766 154.72767971186107 161.3108636308289 168.17414165184545 175.32943091211476 182.78915558614753 190.56626845863 198.67427341514983 ] + +#include "/lib/res_params.glsl" + +#ifdef DOF + //hexagon pattern + const vec2 hex_offsets[60] = vec2[60] ( vec2( 0.2165, 0.1250 ), + vec2( 0.0000, 0.2500 ), + vec2( -0.2165, 0.1250 ), + vec2( -0.2165, -0.1250 ), + vec2( -0.0000, -0.2500 ), + vec2( 0.2165, -0.1250 ), + vec2( 0.4330, 0.2500 ), + vec2( 0.0000, 0.5000 ), + vec2( -0.4330, 0.2500 ), + vec2( -0.4330, -0.2500 ), + vec2( -0.0000, -0.5000 ), + vec2( 0.4330, -0.2500 ), + vec2( 0.6495, 0.3750 ), + vec2( 0.0000, 0.7500 ), + vec2( -0.6495, 0.3750 ), + vec2( -0.6495, -0.3750 ), + vec2( -0.0000, -0.7500 ), + vec2( 0.6495, -0.3750 ), + vec2( 0.8660, 0.5000 ), + vec2( 0.0000, 1.0000 ), + vec2( -0.8660, 0.5000 ), + vec2( -0.8660, -0.5000 ), + vec2( -0.0000, -1.0000 ), + vec2( 0.8660, -0.5000 ), + vec2( 0.2163, 0.3754 ), + vec2( -0.2170, 0.3750 ), + vec2( -0.4333, -0.0004 ), + vec2( -0.2163, -0.3754 ), + vec2( 0.2170, -0.3750 ), + vec2( 0.4333, 0.0004 ), + vec2( 0.4328, 0.5004 ), + vec2( -0.2170, 0.6250 ), + vec2( -0.6498, 0.1246 ), + vec2( -0.4328, -0.5004 ), + vec2( 0.2170, -0.6250 ), + vec2( 0.6498, -0.1246 ), + vec2( 0.6493, 0.6254 ), + vec2( -0.2170, 0.8750 ), + vec2( -0.8663, 0.2496 ), + vec2( -0.6493, -0.6254 ), + vec2( 0.2170, -0.8750 ), + vec2( 0.8663, -0.2496 ), + vec2( 0.2160, 0.6259 ), + vec2( -0.4340, 0.5000 ), + vec2( -0.6500, -0.1259 ), + vec2( -0.2160, -0.6259 ), + vec2( 0.4340, -0.5000 ), + vec2( 0.6500, 0.1259 ), + vec2( 0.4325, 0.7509 ), + vec2( -0.4340, 0.7500 ), + vec2( -0.8665, -0.0009 ), + vec2( -0.4325, -0.7509 ), + vec2( 0.4340, -0.7500 ), + vec2( 0.8665, 0.0009 ), + vec2( 0.2158, 0.8763 ), + vec2( -0.6510, 0.6250 ), + vec2( -0.8668, -0.2513 ), + vec2( -0.2158, -0.8763 ), + vec2( 0.6510, -0.6250 ), + vec2( 0.8668, 0.2513 )); + + const vec2 offsets[60] = vec2[60] ( vec2( 0.0000, 0.2500 ), + vec2( -0.2165, 0.1250 ), + vec2( -0.2165, -0.1250 ), + vec2( -0.0000, -0.2500 ), + vec2( 0.2165, -0.1250 ), + vec2( 0.2165, 0.1250 ), + vec2( 0.0000, 0.5000 ), + vec2( -0.2500, 0.4330 ), + vec2( -0.4330, 0.2500 ), + vec2( -0.5000, 0.0000 ), + vec2( -0.4330, -0.2500 ), + vec2( -0.2500, -0.4330 ), + vec2( -0.0000, -0.5000 ), + vec2( 0.2500, -0.4330 ), + vec2( 0.4330, -0.2500 ), + vec2( 0.5000, -0.0000 ), + vec2( 0.4330, 0.2500 ), + vec2( 0.2500, 0.4330 ), + vec2( 0.0000, 0.7500 ), + vec2( -0.2565, 0.7048 ), + vec2( -0.4821, 0.5745 ), + vec2( -0.6495, 0.3750 ), + vec2( -0.7386, 0.1302 ), + vec2( -0.7386, -0.1302 ), + vec2( -0.6495, -0.3750 ), + vec2( -0.4821, -0.5745 ), + vec2( -0.2565, -0.7048 ), + vec2( -0.0000, -0.7500 ), + vec2( 0.2565, -0.7048 ), + vec2( 0.4821, -0.5745 ), + vec2( 0.6495, -0.3750 ), + vec2( 0.7386, -0.1302 ), + vec2( 0.7386, 0.1302 ), + vec2( 0.6495, 0.3750 ), + vec2( 0.4821, 0.5745 ), + vec2( 0.2565, 0.7048 ), + vec2( 0.0000, 1.0000 ), + vec2( -0.2588, 0.9659 ), + vec2( -0.5000, 0.8660 ), + vec2( -0.7071, 0.7071 ), + vec2( -0.8660, 0.5000 ), + vec2( -0.9659, 0.2588 ), + vec2( -1.0000, 0.0000 ), + vec2( -0.9659, -0.2588 ), + vec2( -0.8660, -0.5000 ), + vec2( -0.7071, -0.7071 ), + vec2( -0.5000, -0.8660 ), + vec2( -0.2588, -0.9659 ), + vec2( -0.0000, -1.0000 ), + vec2( 0.2588, -0.9659 ), + vec2( 0.5000, -0.8660 ), + vec2( 0.7071, -0.7071 ), + vec2( 0.8660, -0.5000 ), + vec2( 0.9659, -0.2588 ), + vec2( 1.0000, -0.0000 ), + vec2( 0.9659, 0.2588 ), + vec2( 0.8660, 0.5000 ), + vec2( 0.7071, 0.7071 ), + vec2( 0.5000, 0.8660 ), + vec2( 0.2588, 0.9659 )); + +const vec2 shadow_offsets[209] = vec2[209](vec2(0.8886414f , 0.07936136f), +vec2(0.8190064f , 0.1900164f), +vec2(0.8614115f , -0.06991258f), +vec2(0.7685533f , 0.03792081f), +vec2(0.9970094f , 0.02585129f), +vec2(0.9686818f , 0.1570935f), +vec2(0.9854341f , -0.09172997f), +vec2(0.9330608f , 0.3326486f), +vec2(0.8329557f , -0.2438523f), +vec2(0.664771f , -0.0837701f), +vec2(0.7429124f , -0.1530652f), +vec2(0.9506453f , -0.2174281f), +vec2(0.8192949f , 0.3485171f), +vec2(0.6851269f , 0.2711877f), +vec2(0.7665657f , 0.5014166f), +vec2(0.673241f , 0.3793408f), +vec2(0.6981376f , 0.1465924f), +vec2(0.6521665f , -0.2384985f), +vec2(0.5145761f , -0.05752508f), +vec2(0.5641244f , -0.169443f), +vec2(0.5916035f , 0.06004957f), +vec2(0.57079f , 0.234188f), +vec2(0.509311f , 0.1523665f), +vec2(0.4204576f , 0.05759521f), +vec2(0.8200846f , -0.3601041f), +vec2(0.6893264f , -0.3473432f), +vec2(0.4775535f , -0.3062558f), +vec2(0.438106f , -0.1796866f), +vec2(0.4056528f , -0.08251233f), +vec2(0.5771964f , 0.5502692f), +vec2(0.5094061f , 0.4025192f), +vec2(0.6908483f , 0.572951f), +vec2(0.5379036f , -0.4542191f), +vec2(0.8167359f , -0.4793735f), +vec2(0.6829269f , -0.4557574f), +vec2(0.5725697f , -0.3477072f), +vec2(0.5767449f , -0.5782524f), +vec2(0.3979413f , -0.4172934f), +vec2(0.4282598f , -0.5145645f), +vec2(0.938814f , -0.3239739f), +vec2(0.702452f , -0.5662871f), +vec2(0.2832307f , -0.1285671f), +vec2(0.3230537f , -0.2691054f), +vec2(0.2921676f , -0.3734582f), +vec2(0.2534037f , -0.4906001f), +vec2(0.4343273f , 0.5223463f), +vec2(0.3605334f , 0.3151571f), +vec2(0.3498518f , 0.451428f), +vec2(0.3230703f , 0.00287089f), +vec2(0.1049206f , -0.1476725f), +vec2(0.2063161f , -0.2608192f), +vec2(0.7266634f , 0.6725333f), +vec2(0.4027067f , -0.6185485f), +vec2(0.2655533f , -0.5912259f), +vec2(0.4947965f , 0.3025357f), +vec2(0.5760762f , 0.68844f), +vec2(0.4909205f , -0.6975324f), +vec2(0.8609334f , 0.4559f), +vec2(0.1836646f , 0.03724086f), +vec2(0.2878554f , 0.178938f), +vec2(0.3948484f , 0.1618928f), +vec2(0.3519658f , -0.7628763f), +vec2(0.6338583f , -0.673193f), +vec2(0.5511802f , -0.8283072f), +vec2(0.4090595f , -0.8717521f), +vec2(0.1482169f , -0.374728f), +vec2(0.1050598f , -0.2613987f), +vec2(0.4210334f , 0.6578422f), +vec2(0.2430464f , 0.4383665f), +vec2(0.3329675f , 0.5512741f), +vec2(0.2147711f , 0.3245511f), +vec2(0.1227196f , 0.2529026f), +vec2(-0.03937457f , 0.156439f), +vec2(0.05618772f , 0.06690486f), +vec2(0.06519571f , 0.3974038f), +vec2(0.1360903f , 0.1466078f), +vec2(-0.00170609f , 0.3089452f), +vec2(0.1357622f , -0.5088975f), +vec2(0.1604694f , -0.7453476f), +vec2(0.1245694f , -0.6337074f), +vec2(0.02542936f , -0.3728781f), +vec2(0.02222222f , -0.649554f), +vec2(0.09870815f , 0.5357338f), +vec2(0.2073958f , 0.5452989f), +vec2(0.216654f , -0.8935689f), +vec2(0.2422334f , 0.665805f), +vec2(0.0574713f , 0.6742729f), +vec2(0.2021346f , 0.8144029f), +vec2(0.3086587f , 0.7504997f), +vec2(0.02122174f , -0.7498575f), +vec2(-0.1551729f , 0.1809731f), +vec2(-0.1947583f , 0.06246066f), +vec2(-0.05754202f , -0.03901273f), +vec2(-0.1083095f , 0.2952235f), +vec2(-0.03259534f , -0.492394f), +vec2(-0.02488567f , -0.2081116f), +vec2(-0.1820729f , -0.1829884f), +vec2(-0.1674413f , -0.04529009f), +vec2(0.04342153f , -0.0368562f), +vec2(0.801399f , -0.5845526f), +vec2(0.3158276f , -0.9124843f), +vec2(-0.05945269f , 0.6727523f), +vec2(0.07701834f , 0.8579889f), +vec2(-0.05778154f , 0.5699022f), +vec2(0.1191713f , 0.7542591f), +vec2(-0.2578296f , 0.3630984f), +vec2(-0.1428598f , 0.4557526f), +vec2(-0.3304029f , 0.5055485f), +vec2(-0.3227198f , 0.1847367f), +vec2(-0.4183801f , 0.3412776f), +vec2(0.2538475f , 0.9317476f), +vec2(0.406249f , 0.8423664f), +vec2(0.4718862f , 0.7592828f), +vec2(0.168472f , -0.06605823f), +vec2(0.2632498f , -0.7084918f), +vec2(-0.2816192f , -0.1023492f), +vec2(-0.3161443f , 0.02489911f), +vec2(-0.4677814f , 0.08450397f), +vec2(-0.4156994f , 0.2408664f), +vec2(-0.237449f , 0.2605326f), +vec2(-0.0912179f , 0.06491816f), +vec2(0.01475127f , 0.7670643f), +vec2(0.1216858f , -0.9368939f), +vec2(0.07010741f , -0.841011f), +vec2(-0.1708607f , -0.4152923f), +vec2(-0.1345006f , -0.5842513f), +vec2(-0.09419055f , -0.3213732f), +vec2(-0.2149337f , 0.730642f), +vec2(-0.1102187f , 0.8425013f), +vec2(-0.1808572f , 0.6244397f), +vec2(-0.2414505f , -0.7063725f), +vec2(-0.2410318f , -0.537854f), +vec2(-0.1005938f , -0.7635075f), +vec2(0.1053517f , 0.9678772f), +vec2(-0.3340288f , 0.6926677f), +vec2(-0.2363931f , 0.8464488f), +vec2(-0.4057773f , 0.7786722f), +vec2(-0.5484858f , 0.1686208f), +vec2(-0.64842f , 0.02256887f), +vec2(-0.5544513f , -0.02348978f), +vec2(-0.492855f , -0.1083694f), +vec2(-0.4248196f , 0.4674786f), +vec2(-0.5873146f , 0.4072608f), +vec2(-0.6439911f , 0.3038489f), +vec2(-0.6419188f , 0.1293737f), +vec2(-0.005880734f , 0.4699725f), +vec2(-0.4239455f , 0.6250131f), +vec2(-0.1701273f , 0.9506347f), +vec2(7.665656E-05f , 0.9941212f), +vec2(-0.7070159f , 0.4426281f), +vec2(-0.7481344f , 0.3139496f), +vec2(-0.8330062f , 0.2472693f), +vec2(-0.7271438f , 0.2024286f), +vec2(-0.5179888f , 0.3149576f), +vec2(-0.8258062f , 0.3779382f), +vec2(-0.8063191f , 0.1262931f), +vec2(-0.2690676f , -0.4360798f), +vec2(-0.3714577f , -0.5887412f), +vec2(-0.3736085f , -0.4018324f), +vec2(-0.3228985f , -0.2063406f), +vec2(-0.2414576f , -0.2875458f), +vec2(-0.4720859f , -0.3823904f), +vec2(-0.4937642f , -0.2686005f), +vec2(-0.01500604f , -0.9587054f), +vec2(-0.08535925f , -0.8820614f), +vec2(-0.6436375f , -0.3157263f), +vec2(-0.5736347f , -0.4224878f), +vec2(-0.5026127f , -0.5516239f), +vec2(-0.8200902f , 0.5370023f), +vec2(-0.7196413f , 0.57133f), +vec2(-0.5849072f , 0.5917885f), +vec2(-0.1598758f , -0.9739854f), +vec2(-0.4230629f , -0.01858409f), +vec2(-0.9403627f , 0.2213769f), +vec2(-0.685889f , -0.2192711f), +vec2(-0.6693704f , -0.4884708f), +vec2(-0.7967147f , -0.3078234f), +vec2(-0.596441f , -0.1686891f), +vec2(-0.7366468f , -0.3939891f), +vec2(-0.7963406f , 0.02246814f), +vec2(-0.9177913f , 0.0929693f), +vec2(-0.9284672f , 0.3329005f), +vec2(-0.6497722f , 0.6851863f), +vec2(-0.496019f , 0.7013303f), +vec2(-0.3930301f , -0.6892192f), +vec2(-0.2122009f , -0.8777389f), +vec2(-0.3660335f , -0.801644f), +vec2(-0.386839f , -0.1191898f), +vec2(-0.7020127f , -0.0776734f), +vec2(-0.7760845f , -0.1566844f), +vec2(-0.5444778f , -0.6516482f), +vec2(-0.5331346f , 0.4946506f), +vec2(-0.3288236f , 0.9408244f), +vec2(0.5819826f , 0.8101937f), +vec2(-0.4894184f , -0.8290837f), +vec2(-0.5183194f , 0.8454953f), +vec2(-0.7665774f , -0.5223897f), +vec2(-0.6703191f , -0.6217513f), +vec2(-0.8902924f , -0.2446688f), +vec2(-0.8574848f , -0.09174173f), +vec2(-0.3544409f , -0.9239591f), +vec2(-0.969833f , -0.1172272f), +vec2(-0.8968207f , -0.4079512f), +vec2(-0.5891477f , 0.7724466f), +vec2(-0.2146262f , 0.5286855f), +vec2(-0.3762444f , -0.3014335f), +vec2(-0.9466863f , -0.008970681f), +vec2(-0.596356f , -0.7976127f), +vec2(-0.8877738f , 0.4569088f)); +#endif + +flat varying vec4 exposure; +flat varying vec2 rodExposureDepth; +varying vec2 texcoord; +uniform sampler2D colortex4; +uniform sampler2D colortex5; +uniform sampler2D colortex3; +uniform sampler2D colortex6; +uniform sampler2D colortex7; +uniform sampler2D colortex8; // specular +// uniform sampler2D colortex9; // specular +uniform sampler2D depthtex0; +uniform sampler2D depthtex1; +uniform sampler2D noisetex; +uniform vec2 texelSize; + +uniform ivec2 eyeBrightnessSmooth; +uniform float viewWidth; +uniform float viewHeight; +uniform float frameTimeCounter; +uniform int frameCounter; +uniform int isEyeInWater; +uniform float near; +uniform float aspectRatio; +uniform float far; +uniform float rainStrength; +uniform float screenBrightness; +uniform vec4 Moon_Weather_properties; // R = cloud coverage G = fog density + +uniform mat4 gbufferModelViewInverse; +uniform mat4 gbufferProjectionInverse; +vec4 Weather_properties = Moon_Weather_properties; + +#include "lib/color_transforms.glsl" +#include "lib/color_dither.glsl" +// #include "lib/biome_specifics.glsl" + +float cdist(vec2 coord) { + return max(abs(coord.s-0.5),abs(coord.t-0.5))*2.0; +} +float blueNoise(){ + return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); +} +float ld(float depth) { + return (2.0 * near) / (far + near - depth * (far - near)); // (-depth * (far - near)) = (2.0 * near)/ld - far - near +} + +// blindness fogs +uniform float blindness; +uniform float darknessFactor; + +void main() { + /* DRAWBUFFERS:7 */ + float vignette = (1.5-dot(texcoord-0.5,texcoord-0.5)*2.); + vec3 col = texture2D(colortex5,texcoord).rgb; + + #ifdef DOF + /*--------------------------------*/ + float z = ld(texture2D(depthtex0, texcoord.st*RENDER_SCALE).r)*far; + #ifdef AUTOFOCUS + float focus = rodExposureDepth.y*far; + #else + float focus = MANUAL_FOCUS*screenBrightness; + #endif + float pcoc = min(abs(aperture * (focal/100.0 * (z - focus)) / (z * (focus - focal/100.0))),texelSize.x*15.0); + #ifdef FAR_BLUR_ONLY + pcoc *= float(z > focus); + #endif + float noise = blueNoise()*6.28318530718; + mat2 noiseM = mat2( cos( noise ), -sin( noise ), + sin( noise ), cos( noise ) + ); + vec3 bcolor = vec3(0.); + float nb = 0.0; + vec2 bcoord = vec2(0.0); + /*--------------------------------*/ + #ifndef HQ_DOF + bcolor = col; + #ifdef HEXAGONAL_BOKEH + for ( int i = 0; i < 60; i++) { + bcolor += texture2D(colortex5, texcoord.xy + hex_offsets[i]*pcoc*vec2(1.0,aspectRatio)).rgb; + } + col = bcolor/61.0; + #else + for ( int i = 0; i < 60; i++) { + bcolor += texture2D(colortex5, texcoord.xy + offsets[i]*pcoc*vec2(0.3,aspectRatio)).rgb; + } + /*--------------------------------*/ + col = bcolor/61.0; + #endif + #endif + #ifdef HQ_DOF + for ( int i = 0; i < 209; i++) { + bcolor += texture2D(colortex5, texcoord.xy + noiseM*shadow_offsets[i]*pcoc*vec2(1.0,aspectRatio)).rgb; + } + col = bcolor/209.0; + #endif +#endif + vec2 clampedRes = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.)); + + + vec3 bloom = texture2D(colortex3,texcoord/clampedRes*vec2(1920.,1080.)*0.5*BLOOM_QUALITY).rgb/2./7.0; + + float lightScat = clamp(BLOOM_STRENGTH * 0.05 * pow(exposure.a ,0.2) ,0.0,1.0)*vignette; + + float VL_abs = texture2D(colortex7,texcoord*RENDER_SCALE).r; + float purkinje = rodExposureDepth.x/(1.0+rodExposureDepth.x)*Purkinje_strength; + + VL_abs = clamp( (1.0-VL_abs)*BLOOMY_FOG*0.75*(1.0-purkinje),0.0,1.0)*clamp(1.0-pow(cdist(texcoord.xy),15.0),0.0,1.0); + + float lightleakfix = clamp(eyeBrightnessSmooth.y/240.0,0.0,1.0); + col = (mix(col,bloom,VL_abs)+bloom*lightScat)* mix(exposure.rgb,min(exposure.rgb,0.01), 0); + + //Purkinje Effect + float lum = dot(col,vec3(0.15,0.3,0.55)); + float lum2 = dot(col,vec3(0.85,0.7,0.45))/2; + float rodLum = lum2*400.; + float rodCurve = mix(1.0, rodLum/(2.5+rodLum), purkinje); + col = mix(clamp(lum,0.0,0.05)*Purkinje_Multiplier*vec3(Purkinje_R, Purkinje_G, Purkinje_B)+1.5e-3, col, rodCurve); + + #ifndef USE_ACES_COLORSPACE_APPROXIMATION + col = LinearTosRGB(TONEMAP(col)); + #else + col = col * ACESInputMat; + col = TONEMAP(col); + col = LinearTosRGB(clamp(col * ACESOutputMat, 0.0, 1.0)); + #endif + gl_FragData[0].rgb = clamp(int8Dither(col,texcoord),0.0,1.0); + + + + + +} \ No newline at end of file diff --git a/shaders/composite15.vsh b/shaders/composite15.vsh new file mode 100644 index 0000000..51cbbf6 --- /dev/null +++ b/shaders/composite15.vsh @@ -0,0 +1,26 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + +#define FinalR 1.0 //[0.0 0.025315 0.051271 0.077884 0.105170 0.133148 0.161834 0.191246 0.221402 0.252322 0.284025 0.316530 0.349858 0.384030 0.419067 0.454991 0.491824 0.529590 0.568312 0.608014 0.648721 0.690458 0.733253 0.777130 0.822118 0.868245 0.915540 0.964032 1.013752 1.064731 1.117000 1.170592 1.225540 1.281880 1.339646 1.398875 1.459603 1.521868 1.585709 1.651167 1.718281 1.787095 1.857651 1.929992 2.004166 2.080216 2.158192 2.238142 2.320116 2.404166 2.490342 2.578701 2.669296 2.762185 2.857425 2.955076 3.055199 3.157857 3.263114 3.371035 3.481689 3.595143 3.711470 3.830741 3.953032 4.078419 4.206979 4.338795 4.473947 4.612521 4.754602 4.900281 5.049647 5.202795 5.359819 5.520819 5.685894 5.855148 6.028687 6.206619 6.389056 6.576110 6.767901 6.964546 7.166169 7.372897 7.584858 7.802185 8.025013 8.253482 8.487735 8.727919 8.974182 9.226680 9.485569 9.751013 10.02317 10.30222 10.58834 10.88170 11.18249 ] +#define FinalG 1.0 //[0.0 0.025315 0.051271 0.077884 0.105170 0.133148 0.161834 0.191246 0.221402 0.252322 0.284025 0.316530 0.349858 0.384030 0.419067 0.454991 0.491824 0.529590 0.568312 0.608014 0.648721 0.690458 0.733253 0.777130 0.822118 0.868245 0.915540 0.964032 1.013752 1.064731 1.117000 1.170592 1.225540 1.281880 1.339646 1.398875 1.459603 1.521868 1.585709 1.651167 1.718281 1.787095 1.857651 1.929992 2.004166 2.080216 2.158192 2.238142 2.320116 2.404166 2.490342 2.578701 2.669296 2.762185 2.857425 2.955076 3.055199 3.157857 3.263114 3.371035 3.481689 3.595143 3.711470 3.830741 3.953032 4.078419 4.206979 4.338795 4.473947 4.612521 4.754602 4.900281 5.049647 5.202795 5.359819 5.520819 5.685894 5.855148 6.028687 6.206619 6.389056 6.576110 6.767901 6.964546 7.166169 7.372897 7.584858 7.802185 8.025013 8.253482 8.487735 8.727919 8.974182 9.226680 9.485569 9.751013 10.02317 10.30222 10.58834 10.88170 11.18249 ] +#define FinalB 1.0 //[0.0 0.025315 0.051271 0.077884 0.105170 0.133148 0.161834 0.191246 0.221402 0.252322 0.284025 0.316530 0.349858 0.384030 0.419067 0.454991 0.491824 0.529590 0.568312 0.608014 0.648721 0.690458 0.733253 0.777130 0.822118 0.868245 0.915540 0.964032 1.013752 1.064731 1.117000 1.170592 1.225540 1.281880 1.339646 1.398875 1.459603 1.521868 1.585709 1.651167 1.718281 1.787095 1.857651 1.929992 2.004166 2.080216 2.158192 2.238142 2.320116 2.404166 2.490342 2.578701 2.669296 2.762185 2.857425 2.955076 3.055199 3.157857 3.263114 3.371035 3.481689 3.595143 3.711470 3.830741 3.953032 4.078419 4.206979 4.338795 4.473947 4.612521 4.754602 4.900281 5.049647 5.202795 5.359819 5.520819 5.685894 5.855148 6.028687 6.206619 6.389056 6.576110 6.767901 6.964546 7.166169 7.372897 7.584858 7.802185 8.025013 8.253482 8.487735 8.727919 8.974182 9.226680 9.485569 9.751013 10.02317 10.30222 10.58834 10.88170 11.18249 ] + +varying vec2 texcoord; +flat varying vec4 exposure; +flat varying vec2 rodExposureDepth; +uniform sampler2D colortex4; + +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + + gl_Position = ftransform(); + texcoord = gl_MultiTexCoord0.xy; + exposure=vec4(texelFetch2D(colortex4,ivec2(10,37),0).r*vec3(FinalR,FinalG,FinalB),texelFetch2D(colortex4,ivec2(10,37),0).r); + rodExposureDepth = texelFetch2D(colortex4,ivec2(14,37),0).rg; + rodExposureDepth.y = sqrt(rodExposureDepth.y/65000.0); +} diff --git a/shaders/composite2.fsh b/shaders/composite2.fsh new file mode 100644 index 0000000..2d87b09 --- /dev/null +++ b/shaders/composite2.fsh @@ -0,0 +1,1090 @@ +#version 120 +//Render sky, volumetric clouds, direct lighting +#extension GL_EXT_gpu_shader4 : enable + +#define Moon_temp 15000 // [1000 2000 3000 4000 5000 6000 7000 8000 9000 10000] +#define CAVE_LIGHT_LEAK_FIX // Hackish way to remove sunlight incorrectly leaking into the caves. Can inacurrately create shadows in some places +#define CLOUDS_SHADOWS +#define CLOUDS_QUALITY 0.5 //[0.1 0.125 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.9 1.0] +#define TORCH_R 1.0 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +#define TORCH_G 0.75 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +#define TORCH_B 0.5 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] + +#define ambient_colortype 0 // Toggle which method you want to change the color of ambient light with. [0 1] +#define ambient_temp 9000 // [1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 15000 50000] +#define ambient_brightness 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 ] +#define AmbientLight_R 0.91 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +#define AmbientLight_G 0.86 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +#define AmbientLight_B 1.0 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] + + +#define Sub_surface_scattering // (place the flashlight on your hand example here) +// #define LabPBR_subsurface_scattering +#define LabSSS_Curve 1.0 // i just really like how it looks at 2.0, so i made it an option. [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 ] +#define Strong_SSS_strength 45 // [ 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 2 3 4 5 6 7 8 9 10 15 20 30 35 40 45 50] +#define Medium_SSS_strength 30 // [ 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 2 3 4 5 6 7 8 9 10 15 20 30 35 40 45 50] + +#define indirect_effect 1 // Choose what effect is applied to indirect light. [0 1 2 3] +#define AO_Strength 0.8 // strength of shadowed areas [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 ] +#define GI_Strength 5.0 // strength of bounced light areas [ 1 2 3 4 5 6 7 8 9 10] +// #define HQ_SSGI + + +// #define LabPBR_Emissives +#define Emissive_Brightness 10.0 // [1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 15. 20. 25. 30. 35. 40. 45. 50. 100.] +#define Emissive_Curve 2.0 // yes i blatantly copied kappa here. [1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 ] + +#define Puddle_Size 1.0 // [0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5] +#ifdef Specular_Reflections + #define Puddles // yes +#else + // #define Puddles // yes +#endif +// #define Porosity + + +// #define Allow_Vanilla_sky // allow the vanilla sky to appear. may appear broken with some resourcepacks. + +// #define WhiteWorld // THIS IS A DEBUG VIEW. uses to see AO easier. used to see fake GI better (green light) +// #define ambientLight_only // THIS IS A DEBUG VIEW. turn the sunlight off. DOES NOT increase performance, the shadows are still working in the background +#define MIN_LIGHT_AMOUNT 1.0 //[0.0 0.5 1.0 1.5 2.0 3.0 4.0 5.0] + + +// #define Glass_Tint // multiply the background through glass by the color of the glass for a strong tint. + +// #define Horrible_slope_normals // awful + +const bool shadowHardwareFiltering = true; +flat varying vec4 lightCol; //main light source color (rgb),used light source(1=sun,-1=moon) +flat varying vec3 ambientUp; +flat varying vec3 ambientLeft; +flat varying vec3 ambientRight; +flat varying vec3 ambientB; +flat varying vec3 ambientF; +flat varying vec3 ambientDown; +flat varying vec3 avgAmbient; +flat varying vec3 WsunVec; +flat varying vec2 TAA_Offset; +flat varying float tempOffsets; + + +/* +const int colortex12Format = RGBA16F; //Final output, transparencies id (gbuffer->composite4) +const int colortex11Format = RGBA16F; //Final output, transparencies id (gbuffer->composite4) +const int colortex15Format = RGBA16F; //Final output, transparencies id (gbuffer->composite4) +*/ + + +uniform sampler2D colortex0;//clouds +uniform sampler2D colortex1;//albedo(rgb),material(alpha) RGBA16 +// uniform sampler2D colortex4;//Skybox +uniform sampler2D colortex3; +uniform sampler2D colortex5; +uniform sampler2D colortex7; // normal +uniform sampler2D colortex6; // Noise +uniform sampler2D colortex8; // specular +// uniform sampler2D colortex9; // specular +uniform sampler2D colortex10; // specular +uniform sampler2D colortex11; // specular +uniform sampler2D colortex12; // specular +uniform sampler2D colortex13; // specular +uniform sampler2D colortex14; // specular +uniform sampler2D colortex15; // specular +uniform sampler2D colortex16; // specular +uniform sampler2D depthtex1;//depth +uniform sampler2D depthtex0;//depth +uniform sampler2D noisetex;//depth +uniform sampler2DShadow shadow; +varying vec4 normalMat; +uniform int heldBlockLightValue; +uniform int frameCounter; +uniform int isEyeInWater; +uniform float far; +uniform float nightVision; +uniform float near; +uniform float frameTimeCounter; +uniform float rainStrength; +uniform mat4 gbufferProjection; +uniform mat4 gbufferProjectionInverse; +uniform mat4 gbufferModelViewInverse; +uniform mat4 gbufferPreviousModelView; +uniform mat4 gbufferPreviousProjection; +uniform vec3 previousCameraPosition; +uniform mat4 shadowModelView; +uniform mat4 shadowProjection; +uniform mat4 gbufferModelView; +// uniform float viewWidth; +// uniform float viewHeight; +uniform float aspectRatio; +uniform vec2 texelSize; +uniform vec3 cameraPosition; +uniform vec3 sunVec; +uniform ivec2 eyeBrightnessSmooth; +uniform ivec2 eyeBrightness; + +// uniform int worldTime; + +#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) + +#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) + + +vec3 toScreenSpace(vec3 p) { + vec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); + vec3 p3 = p * 2. - 1.; + vec4 fragposition = iProjDiag * p3.xyzz + gbufferProjectionInverse[3]; + return fragposition.xyz / fragposition.w; +} + +vec3 toScreenSpacePrev(vec3 p) { + vec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); + vec3 p3 = p * 2. - 1.; + vec4 fragposition = iProjDiag * p3.xyzz + gbufferProjectionInverse[3]; + return fragposition.xyz / fragposition.w; +} +vec3 worldToView(vec3 p3) { + vec4 pos = vec4(p3, 0.0); + pos = gbufferModelView * pos; + return pos.xyz; +} + + +float ld(float dist) { + return (2.0 * near) / (far + near - dist * (far - near)); +} +vec3 ld(vec3 dist) { + return (2.0 * near) / (far + near - dist * (far - near)); +} +vec3 srgbToLinear2(vec3 srgb){ + return mix( + srgb / 12.92, + pow(.947867 * srgb + .0521327, vec3(2.4) ), + step( .04045, srgb ) + ); +} +vec3 blackbody2(float Temp) +{ + float t = pow(Temp, -1.5); + float lt = log(Temp); + + vec3 col = vec3(0.0); + col.x = 220000.0 * t + 0.58039215686; + col.y = 0.39231372549 * lt - 2.44549019608; + col.y = Temp > 6500. ? 138039.215686 * t + 0.72156862745 : col.y; + col.z = 0.76078431372 * lt - 5.68078431373; + col = clamp(col,0.0,1.0); + col = Temp < 1000. ? col * Temp * 0.001 : col; + + return srgbToLinear2(col); +} + +// #include "lib/settings.glsl" +// #include "lib/biome_specifics.glsl" +#include "lib/res_params.glsl" +#include "lib/waterOptions.glsl" +#include "lib/Shadow_Params.glsl" +#include "lib/color_transforms.glsl" +#include "lib/sky_gradient.glsl" +#include "lib/stars.glsl" +#include "lib/volumetricClouds.glsl" +#include "lib/waterBump.glsl" +#include "lib/specular.glsl" +// #include "/lib/climate_settings.glsl" + + +vec3 normVec (vec3 vec){ + return vec*inversesqrt(dot(vec,vec)); +} +float lengthVec (vec3 vec){ + return sqrt(dot(vec,vec)); +} +#define fsign(a) (clamp((a)*1e35,0.,1.)*2.-1.) +float triangularize(float dither) +{ + float center = dither*2.0-1.0; + dither = center*inversesqrt(abs(center)); + return clamp(dither-fsign(center),0.0,1.0); +} + + +float interleaved_gradientNoise(){ + // vec2 coord = gl_FragCoord.xy + (frameCounter%40000); + vec2 coord = gl_FragCoord.xy + frameTimeCounter; + // vec2 coord = gl_FragCoord.xy; + float noise = fract( 52.9829189 * fract( (coord.x * 0.06711056) + (coord.y * 0.00583715)) ); + return noise ; +} + +float blueNoise(){ + return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); +} +vec4 blueNoise(vec2 coord){ + return texelFetch2D(colortex6, ivec2(coord )%512 , 0); +} +vec3 fp10Dither(vec3 color,float dither){ + const vec3 mantissaBits = vec3(6.,6.,5.); + vec3 exponent = floor(log2(color)); + return color + dither*exp2(-mantissaBits)*exp2(exponent); +} + +vec3 decode (vec2 encn){ + vec3 n = vec3(0.0); + encn = encn * 2.0 - 1.0; + n.xy = abs(encn); + n.z = 1.0 - n.x - n.y; + n.xy = n.z <= 0.0 ? (1.0 - n.yx) * sign(encn) : encn; + return clamp(normalize(n.xyz),-1.0,1.0); +} +vec2 decodeVec2(float a){ + const vec2 constant1 = 65535. / vec2( 256., 65536.); + const float constant2 = 256. / 255.; + return fract( a * constant1 ) * constant2 ; +} + + +vec2 tapLocation(int sampleNumber,int nb, float nbRot,float jitter,float distort){ + float alpha0 = sampleNumber/nb; + float alpha = (sampleNumber+jitter)/nb; + float angle = jitter*6.28 + alpha * 84.0 * 6.28; + + float sin_v, cos_v; + + sin_v = sin(angle); + cos_v = cos(angle); + + return vec2(cos_v, sin_v)*sqrt(alpha); +} +vec3 toShadowSpaceProjected(vec3 p3){ + p3 = mat3(gbufferModelViewInverse) * p3 + gbufferModelViewInverse[3].xyz; + p3 = mat3(shadowModelView) * p3 + shadowModelView[3].xyz; + p3 = diagonal3(shadowProjection) * p3 + shadowProjection[3].xyz; + return p3; +} + +vec2 R2_samples(int n){ + vec2 alpha = vec2(0.75487765, 0.56984026); + return fract(alpha * n); +} + +vec2 tapLocation(int sampleNumber, float spinAngle,int nb, float nbRot,float r0){ + float alpha = (float(sampleNumber*1.0f + r0) * (1.0 / (nb))); + float angle = alpha * (nbRot * 3.14) + spinAngle*3.14; + + float ssR = alpha; + float sin_v, cos_v; + + sin_v = sin(angle); + cos_v = cos(angle); + + return vec2(cos_v, sin_v)*ssR; +} + +vec3 viewToWorld(vec3 viewPosition) { + vec4 pos; + pos.xyz = viewPosition; + pos.w = 0.0; + pos = gbufferModelViewInverse * pos; + return pos.xyz; +} +void waterVolumetrics(inout vec3 inColor, vec3 rayStart, vec3 rayEnd, float estEndDepth, float estSunDepth, float rayLength, float dither, vec3 waterCoefs, vec3 scatterCoef, vec3 ambient, vec3 lightSource, float VdotL){ + inColor *= exp(-rayLength * waterCoefs); //No need to take the integrated value + int spCount = rayMarchSampleCount; + vec3 start = toShadowSpaceProjected(rayStart); + vec3 end = toShadowSpaceProjected(rayEnd); + vec3 dV = (end-start); + //limit ray length at 32 blocks for performance and reducing integration error + //you can't see above this anyway + float maxZ = min(rayLength,32.0)/(1e-8+rayLength); + dV *= maxZ; + vec3 dVWorld = -mat3(gbufferModelViewInverse) * (rayEnd - rayStart) * maxZ; + rayLength *= maxZ; + float dY = normalize(mat3(gbufferModelViewInverse) * rayEnd).y * rayLength; + estEndDepth *= maxZ; + estSunDepth *= maxZ; + vec3 absorbance = vec3(1.0); + vec3 vL = vec3(0.0); + float phase = 2*mix(phaseg(VdotL, 0.4),phaseg(VdotL, 0.8),0.5); + float expFactor = 11.0; + vec3 progressW = gbufferModelViewInverse[3].xyz+cameraPosition; + for (int i=0;i -near) ? + (-near -position.z) / dir.z : far*sqrt(3.) ; + vec3 direction = toClipSpace3(position+dir*rayLength)-clipPosition; //convert to clip space + direction.xyz = direction.xyz/max(abs(direction.x)/texelSize.x,abs(direction.y)/texelSize.y); //fixed step size + vec3 stepv = direction *3. * clamp(MC_RENDER_QUALITY,1.,2.0)*vec3(RENDER_SCALE,1.0); + + vec3 spos = clipPosition*vec3(RENDER_SCALE,1.0); + spos.xy += (TAA_Offset*(texelSize/4))*RENDER_SCALE ; + spos += stepv; + + for (int i = 0; i < int(quality); i++) { + spos += stepv*(dither*0.2 +0.8) *0.5; + // spos += stepv; + + float sp = texture2D(depthtex1,spos.xy).x; + + if( sp < spos.z) { + float dist = abs(linZ(sp)-linZ(spos.z))/linZ(spos.z); + if (dist < 0.015 ) return 0.0; + } + } + return 1.0; +} + + +vec2 tapLocation_alternate( + int sampleNumber, + float spinAngle, + int nb, + float nbRot, + float r0 +){ + float alpha = (float(sampleNumber*1.0f + r0) * (1.0 / (nb))); + float angle = alpha * (nbRot * 3.14) ; + + float ssR = alpha + spinAngle*3.14; + float sin_v, cos_v; + + sin_v = sin(angle); + cos_v = cos(angle); + + return vec2(cos_v, sin_v)*ssR; +} +void ssAO(inout vec3 lighting, vec3 fragpos,float mulfov, vec2 noise, vec3 normal, vec2 texcoord, vec3 ambientCoefs, vec2 lightmap, float sunlight){ + + ivec2 pos = ivec2(gl_FragCoord.xy); + const float tan70 = tan(70.*3.14/180.); + + float dist = 1.0 + clamp(fragpos.z*fragpos.z/50.0,0,2); // shrink sample size as distance increases + + float mulfov2 = gbufferProjection[1][1]/(tan70 * dist); + float maxR2 = fragpos.z*fragpos.z*mulfov2*2.*5/50.0; + + + float rd = mulfov2 * 0.1 ; + //pre-rotate direction + float n = 0.0; + + float occlusion = 0.0; + + vec2 acc = -(TAA_Offset*(texelSize/2))*RENDER_SCALE ; + + int seed = (frameCounter%40000)*2 + (1+frameCounter); + float randomDir = fract(R2_samples(seed).y + noise.x ) * 1.61803398874 ; + vec3 NormalSpecific = viewToWorld(normal); + for (int j = 0; j < 7 ;j++) { + + vec2 sp = tapLocation_alternate(j, 0.0, 7, 20, randomDir); + float thing = sp.y < 0.0 && clamp(floor(abs(NormalSpecific.y)*2.0),0.0,1.0) < 1.0 ? rd * 10: rd; + + + vec2 sampleOffset = sp*thing; + vec2 sampleOffset2 = sp*rd ; + sampleOffset = min(sampleOffset, sampleOffset2); + + ivec2 offset = ivec2(gl_FragCoord.xy + sampleOffset*vec2(viewWidth,viewHeight*aspectRatio)*RENDER_SCALE); + + if (offset.x >= 0 && offset.y >= 0 && offset.x < viewWidth*RENDER_SCALE.x && offset.y < viewHeight*RENDER_SCALE.y ) { + vec3 t0 = toScreenSpace(vec3(offset*texelSize+acc+0.5*texelSize,texelFetch2D(depthtex1,offset,0).x) * vec3(1.0/RENDER_SCALE, 1.0) ); + vec3 vec = t0.xyz - fragpos; + float dsquared = dot(vec,vec); + + if (dsquared > 1e-5){ + if (dsquared < maxR2){ + float NdotV = clamp(dot(vec*inversesqrt(dsquared), normalize(normal)),0.,1.); + occlusion += NdotV * clamp(1.0-dsquared/maxR2,0.0,1.0); + + // float NdotV2 = clamp(dot(vec*inversesqrt(dsquared), normalize(RPnormal)),0.,1.); + // occlusion.y += NdotV2 * clamp(1.0-dsquared/maxR2,0.0,1.0); + } + n += 1; + } + } + } + + occlusion *= mix(2.5, 2.0 , clamp(floor(abs(NormalSpecific.y)*2.0),0.0,1.0)); + occlusion = max(1.0 - occlusion/n, 0.0); + // float skylight = clamp(abs(ambientCoefs.y+1),0.5,1.25) * clamp(abs(ambientCoefs.y+0.5),1.0,1.25); + float skylight = clamp(abs(ambientCoefs.y+1),0.5,2.0) ; + // lighting *= 0.5; + lighting *= mix(1.0,skylight,1); + + lighting = lighting*max(occlusion,pow(lightmap.x,4)); +} + +vec3 RT(vec3 dir, vec3 position, float noise, float stepsizes){ + float dist = 1.0 + clamp(position.z*position.z/50.0,0,2); // shrink sample size as distance increases + + float stepSize = stepsizes / dist; + int maxSteps = STEPS; + vec3 clipPosition = toClipSpace3(position); + float rayLength = ((position.z + dir.z * sqrt(3.0)*far) > -sqrt(3.0)*near) ? + (-sqrt(3.0)*near -position.z) / dir.z : sqrt(3.0)*far; + vec3 end = toClipSpace3(position+dir*rayLength) ; + vec3 direction = end-clipPosition ; //convert to clip space + + float len = max(abs(direction.x)/texelSize.x,abs(direction.y)/texelSize.y)/stepSize; + //get at which length the ray intersects with the edge of the screen + vec3 maxLengths = (step(0.,direction)-clipPosition) / direction; + + float mult = min(min(maxLengths.x,maxLengths.y),maxLengths.z)*2000.0; + + vec3 stepv = direction/len; + + int iterations = min(int(min(len, mult*len)-2), maxSteps); + + //Do one iteration for closest texel (good contact shadows) + vec3 spos = clipPosition*vec3(RENDER_SCALE,1.0) ; + spos.xy += TAA_Offset*texelSize*0.5*RENDER_SCALE; + spos += stepv/(stepSize/2); + + for(int i = 0; i < iterations; i++){ + if (spos.x < 0.0 || spos.y < 0.0 || spos.z < 0.0 || spos.x > 1.0 || spos.y > 1.0 || spos.z > 1.0) return vec3(1.1); + spos += stepv*noise; + + float sp = sqrt(texelFetch2D(colortex4,ivec2(spos.xy/ texelSize/4),0).w/65000.0); + float currZ = linZ(spos.z); + + if( sp < currZ) { + float dist = abs(sp-currZ)/currZ; + if (dist <= 0.075) return vec3(spos.xy, invLinZ(sp))/vec3(RENDER_SCALE,1.0); + } + } + return vec3(1.1); +} + +vec3 cosineHemisphereSample(vec2 Xi, float roughness){ + float r = sqrt(Xi.x); + float theta = 2.0 * 3.14159265359 * Xi.y; + + float x = r * cos(theta); + float y = r * sin(theta); + + return vec3(x, y, sqrt(clamp(1.0 - Xi.x,0.,1.))); +} +vec3 TangentToWorld(vec3 N, vec3 H, float roughness){ + vec3 UpVector = abs(N.z) < 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(1.0, 0.0, 0.0); + vec3 T = normalize(cross(UpVector, N)); + vec3 B = cross(N, T); + + return vec3((T * H.x) + (B * H.y) + (N * H.z)); +} + +void rtAO(inout vec3 lighting, vec3 normal, vec2 noise, vec3 fragpos, float lightmap, float inShadow){ + int nrays = 4; + float occlude = 0.0; + + float indoor = clamp(pow(lightmap,2)*2,0.0,AO_Strength); + + for (int i = 0; i < nrays; i++){ + int seed = (frameCounter%40000)*nrays+i; + vec2 ij = fract(R2_samples(seed) + noise.rg); + + + vec3 rayDir = TangentToWorld( normal, normalize(cosineHemisphereSample(ij,1.0)) ,1.0) ; + + #ifdef HQ_SSGI + vec3 rayHit = rayTrace_GI( mat3(gbufferModelView) * rayDir, fragpos, blueNoise(), 30.); // ssr rt + #else + vec3 rayHit = RT(mat3(gbufferModelView)*rayDir, fragpos, blueNoise(), 24.); // choc sspt + #endif + + // vec3 lightDir = normalize(vec3(0.2,0.8,0.2)); + // float skyLightDir = dot(rayDir,lightDir); // the positons where the occlusion happens + + float skyLightDir = rayDir.y > 0.0 ? 1.0 : max(rayDir.y,1.0-indoor); // the positons where the occlusion happens + if (rayHit.z > 1.0) occlude += max(rayDir.y,1-AO_Strength); + + + } + // occlude = mix( occlude,1, inShadow); + // occlude = occlude*0.5 + 0.5; + lighting *= 2.5; + lighting *= mix(occlude/nrays,1.0,0) ; +} +void rtGI(inout vec3 lighting, vec3 normal,vec2 noise,vec3 fragpos, float lightmap, vec3 albedo, float inShadow){ + int nrays = RAY_COUNT; + vec3 intRadiance = vec3(0.0); + vec3 occlude = vec3(0.0); + + lighting *= 1.50; + float indoor = clamp(pow(lightmap,2)*2,0.0,AO_Strength); + + for (int i = 0; i < nrays; i++){ + int seed = (frameCounter%40000)*nrays+i; + vec2 ij = fract(R2_samples(seed) + noise ); + + vec3 rayDir = TangentToWorld(normal, normalize(cosineHemisphereSample(ij,1.0)) ,1.0); + + #ifdef HQ_SSGI + vec3 rayHit = rayTrace_GI( mat3(gbufferModelView) * rayDir, fragpos, blueNoise(), 50.); // ssr rt + #else + vec3 rayHit = RT(mat3(gbufferModelView)*rayDir, fragpos, blueNoise(), 30.); // choc sspt + #endif + + float skyLightDir = rayDir.y > 0.0 ? 1.0 : max(rayDir.y,1.0-indoor); // the positons where the occlusion happens + + if (rayHit.z < 1.){ + vec3 previousPosition = mat3(gbufferModelViewInverse) * toScreenSpace(rayHit) + gbufferModelViewInverse[3].xyz + cameraPosition-previousCameraPosition; + previousPosition = mat3(gbufferPreviousModelView) * previousPosition + gbufferPreviousModelView[3].xyz; + previousPosition.xy = projMAD(gbufferPreviousProjection, previousPosition).xy / -previousPosition.z * 0.5 + 0.5; + if (previousPosition.x > 0.0 && previousPosition.y > 0.0 && previousPosition.x < 1.0 && previousPosition.x < 1.0) + intRadiance = 0 + texture2D(colortex5,previousPosition.xy).rgb * GI_Strength ; + else + intRadiance += lighting*skyLightDir; // make sure ambient light exists but at screen edges when you turn + + }else{ + intRadiance += lighting*skyLightDir; + } + } + lighting = intRadiance/nrays; +} +float GetCloudShadow(vec3 eyePlayerPos){ + vec3 p3 = (eyePlayerPos + cameraPosition) - Cloud_Height; + vec3 cloudPos = p3*Cloud_Size + WsunVec/abs(WsunVec.y) * ((3250 - 3250*0.35) - p3.y*Cloud_Size) ; + float shadow = getCloudDensity(cloudPos, 1); + // float shadow = (getCloudDensity(cloudPos, 1) + HighAltitudeClouds(cloudPos)) / 2.0; + + shadow = clamp(exp(-shadow*6),0.0,1.0); + + // float timething = (worldTime%24000)*1.0; + // float fadestart_evening = clamp(1.0 - clamp(timething-11500.0 ,0.0,2000.0)/1000. ,0.0,1.0); + // float fadeend_evening = clamp( clamp(14000.0-timething ,0.0,2000.0)/1000. ,0.0,1.0); + + // float fadestart_morning = clamp(clamp(23500.0-timething ,0.0,2000.0)/1000. ,0.0,1.0); + // float fadeend_morning = clamp(1.0 - clamp(timething-200.0 ,0.0,2000.0)/1000. ,0.0,1.0); + + // float TheSettingSun = fadeend_morning; + + return shadow ; +} + +void SubsurfaceScattering(inout float SSS, float Scattering, float Density, float LabDenisty){ + #ifdef LabPBR_subsurface_scattering + float labcurve = pow(LabDenisty,LabSSS_Curve); + SSS = clamp(exp( -(10 - LabDenisty*7) * sqrt(Scattering) ), 0.0, labcurve); + if (abs(Scattering-0.1) < 0.0004 ) SSS = labcurve; + #else + SSS = clamp(exp( -Density * sqrt(Scattering) ), 0.0, 1.0); + if (abs(Scattering-0.1) < 0.0004 ) SSS = 1.0; + #endif +} + + +float densityAtPosSNOW(in vec3 pos){ + pos /= 18.; + pos.xz *= 0.5; + vec3 p = floor(pos); + vec3 f = fract(pos); + f = (f*f) * (3.-2.*f); + vec2 uv = p.xz + f.xz + p.y * vec2(0.0,193.0); + vec2 coord = uv / 512.0; + vec2 xy = texture2D(noisetex, coord).yx; + return mix(xy.r,xy.g, f.y); +} + +// Emin's and Gri's combined ideas to stop peter panning and light leaking, also has little shadowacne so thats nice +// https://www.complementary.dev/reimagined +// https://github.com/gri573 +void GriAndEminShadowFix( + inout vec3 WorldPos, + vec3 FlatNormal, + float VanillaAO, + float SkyLightmap, + bool Entities +){ + float DistanceOffset = clamp(0.1 + length(WorldPos) / (shadowMapResolution*0.20), 0.0,1.0) ; + vec3 Bias = FlatNormal * DistanceOffset; // adjust the bias thingy's strength as it gets farther away. + + // stop lightleaking + if(SkyLightmap < 0.1 && !Entities) { + WorldPos += mix(Bias, 0.5 * (0.5 - fract(WorldPos + cameraPosition + FlatNormal*0.01 ) ), VanillaAO) ; + }else{ + WorldPos += Bias; + } +} + +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +void main() { + + vec2 texcoord = gl_FragCoord.xy*texelSize; + float dirtAmount = Dirt_Amount; + vec3 waterEpsilon = vec3(Water_Absorb_R, Water_Absorb_G, Water_Absorb_B); + vec3 dirtEpsilon = vec3(Dirt_Absorb_R, Dirt_Absorb_G, Dirt_Absorb_B); + vec3 totEpsilon = dirtEpsilon*dirtAmount + waterEpsilon; + vec3 scatterCoef = dirtAmount * vec3(Dirt_Scatter_R, Dirt_Scatter_G, Dirt_Scatter_B) / pi; + vec2 tempOffset=TAA_Offset; + + float noise = blueNoise(); + + float z0 = texture2D(depthtex0,texcoord).x; + float z = texture2D(depthtex1,texcoord).x; + + vec3 fragpos = toScreenSpace(vec3(texcoord/RENDER_SCALE-vec2(tempOffset)*texelSize*0.5,z)); + vec3 p3 = mat3(gbufferModelViewInverse) * fragpos + gbufferModelViewInverse[3].xyz; + vec3 np3 = normVec(p3); + + float iswaterstuff = texture2D(colortex7,texcoord).a ; + bool iswater = iswaterstuff > 0.99; + vec4 SpecularTex = texture2D(colortex8,texcoord); + + vec4 data = texture2D(colortex1,texcoord); // terraom + vec4 dataUnpacked0 = vec4(decodeVec2(data.x),decodeVec2(data.y)); + vec4 dataUnpacked1 = vec4(decodeVec2(data.z),decodeVec2(data.w)); + vec4 dataUnpacked2 = vec4(decodeVec2(data.z),decodeVec2(data.w)); + vec3 albedo = toLinear(vec3(dataUnpacked0.xz,dataUnpacked1.x)); + + vec4 translucentCol = texture2D(colortex13,texcoord); // translucents + + + vec3 normal = decode(dataUnpacked0.yw); + + vec4 normalAndAO = texture2D(colortex15,texcoord); + float vanilla_AO = normalAndAO.a; + + normalAndAO.a = clamp(pow(normalAndAO.a*5,4),0,1); + vec3 FlatNormals = normalAndAO.rgb * 2.0 - 1.0; + + vec3 geometryNormal = normalize(cross(dFdx(p3), dFdy(p3))); + #ifdef Horrible_slope_normals + vec3 slope_normal = normalize(clamp(normal, geometryNormal*2.0 - 1.0,geometryNormal*2.0 + 1.0)); + #else + vec3 slope_normal = normal; + #endif + + + + vec2 lightmap = dataUnpacked1.yz; + + bool translucent = abs(dataUnpacked1.w-0.5) <0.01; // Strong translucency + bool translucent2 = abs(dataUnpacked1.w-0.6) <0.01; // Weak translucency + bool translucent3 = abs(dataUnpacked1.w-0.55) <0.01; // all blocks + bool translucent4 = abs(dataUnpacked1.w-0.65) <0.01; // Weak translucency + bool entities = abs(dataUnpacked1.w-0.45) <0.01; + + bool hand = abs(dataUnpacked1.w-0.75) < 0.01; + bool blocklights = abs(dataUnpacked1.w-0.8) <0.01; + + vec3 filtered = vec3(1.412,1.0,0.0); + if (!hand) filtered = texture2D(colortex3,texcoord).rgb; + + #ifdef WhiteWorld + albedo = vec3(1); + #endif + + float Diffuse_final = 1.0; + + vec3 ambientCoefs = slope_normal/dot(abs(slope_normal),vec3(1.)); + + float cloudShadow = 1.0; + + vec3 color = vec3(0.0); + + vec3 skyTEX = skyFromTex(np3,colortex4)/150. ; + + float lightleakfix = clamp(eyeBrightness.y/240.0 + lightmap.y,0.0,1.0); + + if ( z >= 1.) { //sky + vec4 cloud = texture2D_bicubic(colortex0,texcoord*CLOUDS_QUALITY); + + color += stars(np3); + + #ifndef ambientLight_only + // #ifdef Allow_Vanilla_sky + // vec3 SkyTextured = toLinear(texture2D(colortex12,texcoord).rgb); + // color += SkyTextured * (lightCol.a == 1 ? lightCol.rgb : 0.75 + blackbody2(Moon_temp)) * sqrt(luma(SkyTextured)); + // #else + color += drawSun(dot(lightCol.a * WsunVec, np3),0, lightCol.rgb/150.,vec3(0.0)) ; // sun + color += drawSun(dot(lightCol.a * -WsunVec, np3),0, blackbody2(Moon_temp)/500.,vec3(0.0)); // moon + // #endif + #endif + + color *= clamp(normalize(np3-0.02).y*5.0,0.0,1.0); // fade from the approximated base of the cloud plane, so it doesnt peek under it. + + color += skyTEX; + color = color*cloud.a+cloud.rgb; + + gl_FragData[0].rgb = clamp(fp10Dither(color * 5.0,triangularize(noise)),0.0,65000.); + + }else{//land + + + + ////// ----- direct ----- ////// + + vec3 Direct_lighting = vec3(1.0); + vec3 directLightCol = lightCol.rgb; + + float NdotL = dot(slope_normal,WsunVec); + float diffuseSun = clamp((-15 + NdotL*255.0) / 240.0 ,0.0,1.0); + + float shading = clamp(1.0 - filtered.b,0.0,1.0); + if (abs(filtered.y-0.1) < 0.0004 && !iswater) shading = clamp((lightmap.y-0.85)*25,0,1); + + float SSS = 0.0; + float LabSSS = clamp((-65.0 + SpecularTex.z * 255.0) / 190.0 ,0.0,1.0); + float SSS_strength = 0.0; + float scattering = 0.0; + + + if (diffuseSun > 0.001) { + + GriAndEminShadowFix(p3, viewToWorld(FlatNormals), normalAndAO.a, lightmap.y, entities); + // p3 += getShadowBias(p3,FlatNormals, diffuseSun, lightmap.y, normalAndAO.a); + + vec3 projectedShadowPosition = mat3(shadowModelView) * p3 + shadowModelView[3].xyz; + projectedShadowPosition = diagonal3(shadowProjection) * projectedShadowPosition + shadowProjection[3].xyz; + + //apply distortion + float distortFactor = calcDistort(projectedShadowPosition.xy); + projectedShadowPosition.xy *= distortFactor; + + //do shadows only if on shadow map + if (abs(projectedShadowPosition.x) < 1.0-1.5/shadowMapResolution && abs(projectedShadowPosition.y) < 1.0-1.5/shadowMapResolution && abs(projectedShadowPosition.z) < 6.0){ + + float diffthresh = 0.0; + if(hand && eyeBrightness.y/240. > 0.0) diffthresh = 0.0003; + + projectedShadowPosition = projectedShadowPosition * vec3(0.5,0.5,0.5/6.0) + vec3(0.5); + shading = 0.0; + + float rdMul = filtered.x*distortFactor*d0*k/shadowMapResolution; + + for(int i = 0; i < SHADOW_FILTER_SAMPLE_COUNT; i++){ + if(hand) noise = 0.0; + vec2 offsetS = tapLocation(i,SHADOW_FILTER_SAMPLE_COUNT,1.618,noise,0.0); + float weight = 1.0+(i+noise)*rdMul/SHADOW_FILTER_SAMPLE_COUNT*shadowMapResolution; + float isShadow = shadow2D(shadow,vec3(projectedShadowPosition + vec3(rdMul*offsetS,-diffthresh*weight))).x; + + shading += isShadow/SHADOW_FILTER_SAMPLE_COUNT; + } + } + } + + #ifdef CAVE_LIGHT_LEAK_FIX + if (isEyeInWater == 0 || (iswater && isEyeInWater == 1) ) shading = mix(0.0, shading, lightleakfix); + #endif + + #ifdef Sub_surface_scattering + #ifdef Variable_Penumbra_Shadows + + if (translucent) SSS_strength = 3; // strong sss + else if (translucent2) SSS_strength = 5; /// weak sss + else if (translucent3) SSS_strength = 5; // misc sss + else if (translucent4) SSS_strength = 10; // mob sss + else SSS_strength = -1; // anything less than zero is no SSS + + bool hasSSS = SSS_strength > 0.0 || LabSSS > 0.0 ; + + if(hasSSS) SubsurfaceScattering(SSS, filtered.y, SSS_strength, LabSSS) ; + + if (isEyeInWater == 0) SSS *= lightleakfix; // light leak fix + #endif + + + + if (!hand){ + + if (abs(filtered.y-0.1) < 0.0004 && ( !translucent || !translucent2 || !translucent3 || !translucent4 ) ) SSS = 0.0; + + #ifndef SCREENSPACE_CONTACT_SHADOWS + + if (abs(filtered.y-0.1) < 0.0004 && ( translucent || translucent2 || translucent4 ) ) SSS = clamp((lightmap.y-0.87)*25,0,1) * clamp(pow(1+dot(WsunVec,normal),25),0,1); + + #else + vec3 vec = lightCol.a*sunVec; + float screenShadow = rayTraceShadow(vec, fragpos, interleaved_gradientNoise()); + + #ifdef Variable_Penumbra_Shadows + shading = min(screenShadow, shading); + if (abs(filtered.y-0.1) < 0.0004 && ( translucent || translucent2 ) ) SSS = shading; + // #else + + #endif + + + #endif + } + + #ifdef Variable_Penumbra_Shadows + SSS = clamp(SSS, diffuseSun*shading, 1.0); + SSS = (phaseg(clamp(dot(np3, WsunVec),0.0,1.0), 0.5) * 10.0 + 0.25 ) * SSS ; + #endif + #else + SSS = 0.0; + #endif + + + #ifdef VOLUMETRIC_CLOUDS + #ifdef CLOUDS_SHADOWS + cloudShadow = GetCloudShadow(p3); + shading *= cloudShadow; + SSS *= cloudShadow; + #endif + #endif + + Diffuse_final = diffuseSun * shading ; + + ////// ----- indirect ----- ////// + + vec3 Indirect_lighting = vec3(1.0); + + // vec3 ambientLight = vec3(0.0); + vec3 ambientLight = avgAmbient * 2.0; + vec3 custom_lightmap = texture2D(colortex4, (vec2(lightmap.x, pow(lightmap.y,2))*15.0+0.5+vec2(0.0,19.))*texelSize).rgb*8./150./3.; // y = torch + + custom_lightmap.x = max(custom_lightmap.x, Diffuse_final * 8./150./3. ); // make it so that sunlight color is the same even where ambient light is dark + + // apply ambient light to the sky lightmap and do adjustments + ambientLight = ambientLight * custom_lightmap.x + custom_lightmap.z; + if( (isEyeInWater == 1 && !iswater) ) ambientLight = avgAmbient * 8./150./3.; + ambientLight *= ambient_brightness; + + // add torch lightmap to ambientlight and do adjustments + vec3 Lightsources = custom_lightmap.y * vec3(TORCH_R,TORCH_G,TORCH_B); + if(hand) Lightsources *= 0.15; + + // if(blocklights) Lightsources *= 0.3; + + if(custom_lightmap.y > 10.0) Lightsources *= 0.3; + // Lightsources *= 0.0; + + + ambientLight += Lightsources; + + // debug for direct or ambient + #ifdef ambientLight_only + directLightCol = vec3(0); + #endif + #ifdef ambientLight_only + Indirect_lighting = vec3(0); + #endif + + + + #if indirect_effect == 0 + ambientLight *= 1.0 - exp2(-5 * pow(1-vanilla_AO,3)) ; + float skylight = clamp(abs(ambientCoefs.y+1),0.35,2.0) ; + ambientLight *= skylight; + #endif + #if indirect_effect == 1 + ambientLight *= mix(1.0 - exp2(-5 * pow(1-vanilla_AO,2)), 1.0, diffuseSun*shading) ; + if (!hand) ssAO(ambientLight, fragpos, 1.0, blueNoise(gl_FragCoord.xy).rg, FlatNormals , texcoord, ambientCoefs, lightmap.xy, diffuseSun*shading ) ; + #endif + #if indirect_effect == 2 + if (!hand) rtAO(ambientLight, slope_normal, blueNoise(gl_FragCoord.xy).rg, fragpos, lightmap.y, diffuseSun*shading); + #endif + #if indirect_effect == 3 + if (!hand) rtGI(ambientLight, slope_normal, blueNoise(gl_FragCoord.xy).rg, fragpos, lightmap.y, albedo, diffuseSun*shading); + #endif + + Indirect_lighting = ambientLight; + + vec3 waterabsorb_speculars = vec3(1); + + if ((iswater && isEyeInWater == 0) || (!iswater && isEyeInWater == 1) || iswaterstuff == 1.0){ + + vec3 fragpos0 = toScreenSpace(vec3(texcoord/RENDER_SCALE-vec2(tempOffset)*texelSize*0.5,z0)); + float Vdiff = distance(fragpos,fragpos0); + float VdotU = np3.y; + float estimatedDepth = Vdiff * abs(VdotU); //assuming water plane + float estimatedDepth2 = Vdiff * abs(VdotU); //assuming water plane + if (isEyeInWater == 1){ + Vdiff = length(fragpos); + estimatedDepth = clamp((15.5-lightmap.y*16.0)/15.5,0.,1.0); + estimatedDepth *= estimatedDepth*estimatedDepth*32.0; + + #ifndef lightMapDepthEstimation + estimatedDepth = max(Water_Top_Layer - (cameraPosition.y+p3.y),0.0); + #endif + + estimatedDepth2 = clamp((15.5-lightmap.y*16.0)/15.5,0.,1.0); + estimatedDepth2 *= estimatedDepth2*estimatedDepth2*32.0; + } + + float estimatedSunDepth = estimatedDepth/abs(WsunVec.y); //assuming water plane + vec3 thething = exp2(-totEpsilon*estimatedSunDepth); + + float estimatedSunDepth2 = estimatedDepth2/abs(WsunVec.y); //assuming water plane + vec3 thething2 = max(exp2(-totEpsilon*estimatedSunDepth2),0.01); + // water absorbtion for the sunlight. when this isnt active, the water fog is + if (isEyeInWater == 1) directLightCol *= thething*(0.91-pow(1.0-WsunVec.y,5.0)*0.86); + + // allow the sun specular reflection to have water absorbtion when looking at it from outside the water + // waterabsorb_speculars.rgb = (iswater && isEyeInWater == 0) ? waterabsorb_speculars.rgb * thething*(0.91-pow(1.0-WsunVec.y,5.0)*0.86) : waterabsorb_speculars.rgb; + waterabsorb_speculars.rgb = waterabsorb_speculars.rgb*thething; + // caustics... + float Direct_caustics = waterCaustics(mat3(gbufferModelViewInverse) * fragpos + gbufferModelViewInverse[3].xyz + cameraPosition, WsunVec); + float Ambient_Caustics = waterCaustics(mat3(gbufferModelViewInverse) * fragpos + gbufferModelViewInverse[3].xyz + cameraPosition, vec3(0.5, 1.0, 0.5)); + + // apply caustics to the sunlight + directLightCol *= 0.5 + max(pow(Direct_caustics*2,2),0.0); + + + // interpolate between normal ambient light to a different ambient light with caustics and water absorbtion + Ambient_Caustics = 0.5 + max(pow(Ambient_Caustics,2),0.0); + // vec3 underwater_ambient = max(Ambient_Caustics ,0.0) ; + + + // if( (isEyeInWater == 1 && iswater) || (isEyeInWater == 1 && !iswater) ) Indirect_lighting *= 8./150./3.*0.5; + if( isEyeInWater == 1 && !iswater ) Indirect_lighting = Indirect_lighting*thething + Indirect_lighting*Ambient_Caustics*thething2 + Lightsources ; + + + //combine all light sources + // Direct_lighting = max(Diffuse_final ,SSS) * (directLightCol/127.0); + // gl_FragData[0].rgb = (Indirect_lighting + Direct_lighting) * albedo; + + } + #ifdef Seasons + #ifdef Snowy_Winter + float SnowPatches = densityAtPosSNOW(vec3(p3.x,p3.y/48.,p3.z)*250); + SnowPatches = 1.0 - clamp( exp(pow(SnowPatches,3.5) * -100.0) ,0,1); + SnowPatches *= clamp(sqrt(normal.y),0,1) * clamp(pow(lightmap.y,25)*25,0,1); + + if(!hand && !iswater){ + albedo = mix(albedo, vec3(0.8,0.9,1.0), SnowPatches); + SpecularTex.rg = mix(SpecularTex.rg, vec2(1,0.05), SnowPatches); + } + #endif + #endif + + //combine all light sources + // Direct_lighting = max(Diffuse_final ,SSS) * (directLightCol/127.0) ; + Direct_lighting = max(Diffuse_final ,SSS) * (directLightCol/127.0) ; + gl_FragData[0].rgb = (Indirect_lighting + Direct_lighting) * albedo; + + // do this after water and stuff is done because yea + #ifdef Specular_Reflections + MaterialReflections(gl_FragData[0].rgb, SpecularTex.r, SpecularTex.ggg, albedo, WsunVec, lightCol.rgb * waterabsorb_speculars, Diffuse_final , lightmap.y, slope_normal, np3, fragpos, vec3(blueNoise(gl_FragCoord.xy).rg, interleaved_gradientNoise()), hand); + #endif + + #ifdef LabPBR_Emissives + gl_FragData[0].rgb = SpecularTex.a < 255.0/255.0 ? mix(gl_FragData[0].rgb, albedo * Emissive_Brightness , SpecularTex.a) + Direct_lighting*albedo : gl_FragData[0].rgb; + #endif + } + + + #ifdef Glass_Tint + // glass tint. + vec4 glassColor = texture2D(colortex13,texcoord); + + #ifdef BorderFog + float fog = 1.0 - clamp( exp2(-pow(length(fragpos / far),10.)*4.0) ,0.0,1.0); + if(z < 1.0 && isEyeInWater == 0 && glassColor.a > 0.0) gl_FragData[0].rgb = mix(gl_FragData[0].rgb, skyTEX * 5.0, fog*lightleakfix ) ; + #endif + + float colorstrength = 0.75; + glassColor.rgb *= 5.; + if(glassColor.a > 0.0 && !iswater && (iswaterstuff < 0.1 && iswaterstuff > 0.0 )) gl_FragData[0].rgb = gl_FragData[0].rgb*glassColor.rgb + gl_FragData[0].rgb * clamp(pow(1.0-luma(glassColor.rgb),5.),0,1); + #endif + + + if (iswater){ + vec3 fragpos0 = toScreenSpace(vec3(texcoord/RENDER_SCALE-vec2(tempOffset)*texelSize*0.5,z0)); + float Vdiff = distance(fragpos,fragpos0); + float VdotU = np3.y; + float estimatedDepth = Vdiff * abs(VdotU); //assuming water plane + float estimatedSunDepth = estimatedDepth/abs(WsunVec.y); //assuming water plane + + float custom_lightmap_T = texture2D(colortex14, texcoord).x; // y = torch + + vec3 ambientColVol = avgAmbient * 8./150./1.5 * max(custom_lightmap_T,0.0025); + vec3 lightColVol = lightCol.rgb * 8./127. * max(lightleakfix,0.0); + + if (isEyeInWater == 0) waterVolumetrics(gl_FragData[0].rgb, fragpos0, fragpos, estimatedDepth, estimatedSunDepth, Vdiff, noise, totEpsilon, scatterCoef, ambientColVol, lightColVol, dot(np3, WsunVec)); + } + + + // gl_FragData[0].rgb = vec3(1) * viewToWorld(FlatNormals); + + + + /* RENDERTARGETS:3 */ +} \ No newline at end of file diff --git a/shaders/composite2.vsh b/shaders/composite2.vsh new file mode 100644 index 0000000..074231c --- /dev/null +++ b/shaders/composite2.vsh @@ -0,0 +1,75 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable +#define TAA +#define SEPARATE_AO +flat varying vec3 WsunVec; +flat varying vec3 avgAmbient; +flat varying vec3 ambientUp; +flat varying vec3 ambientLeft; +flat varying vec3 ambientRight; +flat varying vec3 ambientB; +flat varying vec3 ambientF; +flat varying vec3 ambientDown; +flat varying vec4 lightCol; +flat varying float tempOffsets; +flat varying vec2 TAA_Offset; +flat varying vec3 zMults; + +attribute vec4 mc_Entity; +uniform sampler2D colortex4; +varying vec4 lmtexcoord; +// varying float vanilla_ao; + +uniform float far; +uniform float near; +uniform mat4 gbufferModelViewInverse; +uniform vec3 sunPosition; +uniform float sunElevation; +uniform int frameCounter; + +const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); + + +#include "/lib/util.glsl" +#include "/lib/res_params.glsl" +void main() { + gl_Position = ftransform(); + + #ifdef TAA_UPSCALING + gl_Position.xy = (gl_Position.xy*0.5+0.5)*RENDER_SCALE*2.0-1.0; + #endif + + tempOffsets = HaltonSeq2(frameCounter%10000); + TAA_Offset = offsets[frameCounter%8]; + #ifndef TAA + TAA_Offset = vec2(0.0); + #endif + + vec3 sc = texelFetch2D(colortex4,ivec2(6,37),0).rgb; + // ambientUp = texelFetch2D(colortex4,ivec2(0,37),0).rgb; + // ambientDown = texelFetch2D(colortex4,ivec2(1,37),0).rgb; + // ambientLeft = texelFetch2D(colortex4,ivec2(2,37),0).rgb; + // ambientRight = texelFetch2D(colortex4,ivec2(3,37),0).rgb; + // ambientB = texelFetch2D(colortex4,ivec2(4,37),0).rgb; + // ambientF = texelFetch2D(colortex4,ivec2(5,37),0).rgb; + + avgAmbient = texelFetch2D(colortex4,ivec2(0,37),0).rgb; + + + + lightCol.a = float(sunElevation > 1e-5)*2-1.; + lightCol.rgb = sc; + + WsunVec = lightCol.a*normalize(mat3(gbufferModelViewInverse) *sunPosition); + zMults = vec3((far * near)*2.0,far+near,far-near); + + + +} diff --git a/shaders/composite3.fsh b/shaders/composite3.fsh new file mode 100644 index 0000000..32a8481 --- /dev/null +++ b/shaders/composite3.fsh @@ -0,0 +1,89 @@ +#version 120 +//Render sky, volumetric clouds, direct lighting +#extension GL_EXT_gpu_shader4 : enable + +// #define BorderFog // aaaaaaaaaaaaaaaaaaaaaaa + +#define fog_coefficientRayleighR 5.8 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0] +#define fog_coefficientRayleighG 1.35 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0] +#define fog_coefficientRayleighB 3.31 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0] + +#define fog_coefficientMieR 3.0 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0] +#define fog_coefficientMieG 3.0 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0] +#define fog_coefficientMieB 3.0 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0] + +uniform vec2 texelSize; +uniform sampler2D depthtex0; +uniform sampler2D depthtex1; +uniform sampler2D colortex3; +uniform sampler2D colortex13; +uniform sampler2D colortex4; + +uniform int frameCounter; +uniform float frameTimeCounter; + +uniform vec3 cameraPosition; + +uniform mat4 gbufferProjectionInverse; +uniform mat4 gbufferModelViewInverse; +flat varying vec2 TAA_Offset; +#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) + +#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) + +uniform float far; +uniform float near; + +vec3 toScreenSpace(vec3 p) { + vec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); + vec3 p3 = p * 2. - 1.; + vec4 fragposition = iProjDiag * p3.xyzz + gbufferProjectionInverse[3]; + return fragposition.xyz / fragposition.w; +} +vec3 normVec (vec3 vec){ + return vec*inversesqrt(dot(vec,vec)); +} + +uniform int isEyeInWater; +uniform ivec2 eyeBrightnessSmooth; +uniform float blindness; +uniform float darknessFactor; + +#include "lib/sky_gradient.glsl" + +void main() { + /* DRAWBUFFERS:3 */ + + vec2 texcoord = gl_FragCoord.xy*texelSize; + gl_FragData[0].rgb = texture2D(colortex3, texcoord).rgb; + + ///////////////// border fog + +#ifdef BorderFog + vec2 tempOffset = TAA_Offset; + float z = texture2D(depthtex0,texcoord).x; + + vec3 fragpos = toScreenSpace(vec3(texcoord -vec2(tempOffset)*texelSize*0.5,z)); + vec3 p3 = mat3(gbufferModelViewInverse) * fragpos; + vec3 np3 = normVec(p3); + + vec3 worldpos = p3 + (gbufferModelViewInverse[3].xyz+cameraPosition) ; + + + vec3 sky = skyFromTex(np3,colortex4) / 150. * 5.; + + float fog = 1.0 - clamp( exp(-pow(length(fragpos / far),10.)*4.0) ,0.0,1.0); + + + float lightleakfix = clamp(eyeBrightnessSmooth.y/240.0,0.0,1.0); + float heightFalloff = clamp( pow(abs(np3.y-1.01),10) ,0,1) ; + // if(z < 1.0 && isEyeInWater == 0) + + if(z < 1.0 && isEyeInWater == 0) gl_FragData[0].rgb = mix(gl_FragData[0].rgb, sky, fog*lightleakfix*heightFalloff ) ; + + +#endif + + + +} \ No newline at end of file diff --git a/shaders/composite3.vsh b/shaders/composite3.vsh new file mode 100644 index 0000000..b2da16c --- /dev/null +++ b/shaders/composite3.vsh @@ -0,0 +1,29 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + +flat varying float tempOffsets; +uniform int frameCounter; +flat varying vec2 TAA_Offset; + +#include "/lib/util.glsl" +#include "/lib/res_params.glsl" + +const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); + +void main() { + gl_Position = ftransform(); + + + TAA_Offset = offsets[frameCounter%8]; + #ifdef TAA_UPSCALING + gl_Position.xy = (gl_Position.xy*0.5+0.5)*RENDER_SCALE*2.0-1.0; + #endif + +} diff --git a/shaders/composite5.fsh b/shaders/composite5.fsh new file mode 100644 index 0000000..1f2fe6d --- /dev/null +++ b/shaders/composite5.fsh @@ -0,0 +1,414 @@ +#version 120 +//Volumetric fog rendering +#extension GL_EXT_gpu_shader4 : enable +#define CLOUDS_SHADOWS +#define VL_CLOUDS_SHADOWS // Casts shadows from clouds on VL (slow) +#define CLOUDS_SHADOWS_STRENGTH 1.0 //[0.1 0.125 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.9 1.0] +#define VL_SAMPLES 8 //[4 6 8 10 12 14 16 20 24 30 40 50] +#define Ambient_Mult 1.0 //[0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.5 2.0 3.0 4.0 5.0 6.0 10.0] +#define SEA_LEVEL 70 //[0 10 20 30 40 50 60 70 80 90 100 110 120 130 150 170 190] //The volumetric light uses an altitude-based fog density, this is where fog density is the highest, adjust this value according to your world. +#define ATMOSPHERIC_DENSITY 1.0 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 4.0 5.0 7.5 10.0 12.5 15.0 20.] +#define fog_mieg1 0.40 //[0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.75 0.8 0.85 0.9 0.95 1.0] +#define fog_mieg2 0.10 //[0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.75 0.8 0.85 0.9 0.95 1.0] +#define fog_coefficientRayleighR 5.8 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0] +#define fog_coefficientRayleighG 1.35 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0] +#define fog_coefficientRayleighB 3.31 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0] + +#define fog_coefficientMieR 3.0 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0] +#define fog_coefficientMieG 3.0 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0] +#define fog_coefficientMieB 3.0 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0] + +#define Cloudy_Fog_Density 5.0 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0] +#define Uniform_Fog_Density 1.0 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0] + +#define uniformfog_fade 10 // does not change rain or cave fog [5 10 20 30 40 50 60 70 80 90 100] +#define cloudyfog_fade 10 // does not change rain or cave fog [5 10 20 30 40 50 60 70 80 90 100] + +#define RainFog_amount 5 // [0 1 2 3 4 5 6 7 8 9 10 15 20 25] +#define CaveFog_amount 5 // [0 1 2 3 4 5 6 7 8 9 10 15 20 25] +#define cloudray_amount 0.2 // rain boost this [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.75 0.8 0.85 0.9 0.95 1.0] + +#define UniformFog_amount 1.0 // [0.0 0.2 0.4 0.6 0.8 1.0 1.25 1.5 1.75 2.0 3.0 4.0 5.0 10.0 20.0 30.0 50.0 100.0 150.0 200.0] +#define CloudyFog_amount 1.0 // [0.0 0.2 0.4 0.6 0.8 1.0 1.25 1.5 1.75 2.0 3.0 4.0 5.0 10 20 30 40 50 100 500 10000] +#define TimeOfDayFog_multiplier 1.0 // Influence of time of day on fog amount [0.0 0.2 0.4 0.6 0.8 1.0 1.25 1.5 1.75 2.0 3.0 4.0 5.0] +#define Haze_amount 1.0 // [0.0 0.2 0.4 0.6 0.8 1.0 1.25 1.5 1.75 2.0 3.0 4.0 5.0] +// #define fog_selfShadowing // make the fog cast a shadow onto itself + + + +flat varying vec4 lightCol; +flat varying vec3 ambientUp; +flat varying vec3 ambientLeft; +flat varying vec3 ambientRight; +flat varying vec3 ambientB; +flat varying vec3 ambientF; +flat varying vec3 ambientDown; +flat varying vec3 avgAmbient; +flat varying float tempOffsets; +flat varying float fogAmount; +flat varying float VFAmount; +flat varying float FogSchedule; +uniform sampler2D noisetex; +uniform sampler2D depthtex0; +uniform sampler2D depthtex1; +uniform sampler2DShadow shadow; +flat varying vec3 refractedSunVec; +flat varying vec3 WsunVec; + +uniform sampler2D colortex1; +uniform sampler2D colortex2; +uniform sampler2D colortex3; +// uniform sampler2D colortex4; + +uniform vec3 sunVec; +uniform float far; +uniform float near; +uniform int frameCounter; +uniform float rainStrength; +uniform float sunElevation; +uniform ivec2 eyeBrightnessSmooth; +uniform float frameTimeCounter; +uniform int isEyeInWater; +uniform vec2 texelSize; + + +#include "lib/waterOptions.glsl" +#include "lib/Shadow_Params.glsl" +#include "lib/color_transforms.glsl" +#include "lib/color_dither.glsl" +#include "lib/projections.glsl" +#include "lib/sky_gradient.glsl" +#include "/lib/res_params.glsl" +// #include "lib/biome_specifics.glsl" + +#define TIMEOFDAYFOG +#include "lib/volumetricClouds.glsl" + + +float blueNoise(){ + return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); +} +float R2_dither(){ + vec2 alpha = vec2(0.75487765, 0.56984026); + return fract(alpha.x * gl_FragCoord.x + alpha.y * gl_FragCoord.y + 1.0/1.6180339887 * frameCounter) ; +} +float R2_dither2(){ + vec2 alpha = vec2(0.75487765, 0.56984026); + return fract(alpha.x *(1- gl_FragCoord.x) + alpha.y * (1-gl_FragCoord.y) + 1.0/1.6180339887 * frameCounter) ; +} +float interleaved_gradientNoise(){ + vec2 alpha = vec2(0.75487765, 0.56984026); + vec2 coord = vec2(alpha.x * gl_FragCoord.x,alpha.y * gl_FragCoord.y)+ 1.0/1.6180339887 * frameCounter; + float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)); + return noise; +} + +float phaseRayleigh(float cosTheta) { + const vec2 mul_add = vec2(0.1, 0.28) /acos(-1.0); + return cosTheta * mul_add.x + mul_add.y; // optimized version from [Elek09], divided by 4 pi for energy conservation +} + +float GetCloudShadow(vec3 eyePlayerPos){ + vec3 worldPos = (eyePlayerPos + cameraPosition) - Cloud_Height; + vec3 cloudPos = worldPos*Cloud_Size + WsunVec/abs(WsunVec.y) * ((3250 - 3250*0.35) - worldPos.y*Cloud_Size) ; + float shadow = getCloudDensity(cloudPos, 1); + + shadow = clamp(exp(-shadow*5),0.0,1.0); + + return shadow ; +} + +float densityAtPosFog(in vec3 pos){ + pos /= 18.; + pos.xz *= 0.5; + vec3 p = floor(pos); + vec3 f = fract(pos); + f = (f*f) * (3.-2.*f); + vec2 uv = p.xz + f.xz + p.y * vec2(0.0,193.0); + vec2 coord = uv / 512.0; + vec2 xy = texture2D(noisetex, coord).yx; + return mix(xy.r,xy.g, f.y); +} + +float fog_densities_atmospheric = 24 * Haze_amount; // this is seperate from the cloudy and uniform fog. + +float cloudVol(in vec3 pos){ + + vec3 samplePos = pos*vec3(1.0,1./24.,1.0); + vec3 samplePos2 = pos*vec3(1.0,1./48.,1.0); + + + float mult = exp( -max((pos.y - SEA_LEVEL) / 35.,0.0)); + + float fog_shape = 1-densityAtPosFog(samplePos * 24.0); + float fog_eroded = 1-densityAtPosFog( samplePos2 * 200.0); + + float CloudyFog = max( (fog_shape*2.0 - fog_eroded*0.5) - 1.2, 0.0) * mult; + float UniformFog = exp2( -max((pos.y - SEA_LEVEL) / 25.,0.0)); + + float RainFog = max(fog_shape*10. - 7.,0.5) * exp2( -max((pos.y - SEA_LEVEL) / 25.,0.0)) * 5. * rainStrength; + + TimeOfDayFog(UniformFog, CloudyFog); + + return CloudyFog + UniformFog + RainFog; +} + +mat2x3 getVolumetricRays( + float dither, + vec3 fragpos, + float dither2 +){ + //project pixel position into projected shadowmap space + vec3 wpos = mat3(gbufferModelViewInverse) * fragpos + gbufferModelViewInverse[3].xyz; + vec3 fragposition = mat3(shadowModelView) * wpos + shadowModelView[3].xyz; + fragposition = diagonal3(shadowProjection) * fragposition + shadowProjection[3].xyz; + + //project view origin into projected shadowmap space + vec3 start = toShadowSpaceProjected(vec3(0.)); + + //rayvector into projected shadow map space + //we can use a projected vector because its orthographic projection + //however we still have to send it to curved shadow map space every step + vec3 dV = fragposition-start; + vec3 dVWorld = (wpos-gbufferModelViewInverse[3].xyz); + + float maxLength = min(length(dVWorld),far*5)/length(dVWorld); + dV *= maxLength; + dVWorld *= maxLength; + + //apply dither + vec3 progress = start.xyz; + vec3 progressW = gbufferModelViewInverse[3].xyz+cameraPosition; + + vec3 vL = vec3(0.); + + float SdotV = dot(sunVec,normalize(fragpos))*lightCol.a; + float dL = length(dVWorld); + + //Mie phase + somewhat simulates multiple scattering (Horizon zero down cloud approx) + float mie = phaseg(SdotV,0.7)*5.0 + 1.0; + float rayL = phaseRayleigh(SdotV); + + // Makes fog more white idk how to simulate it correctly + vec3 sunColor = lightCol.rgb / 127.0; + vec3 skyCol0 = (ambientUp / 150. * 5.); // * max(abs(WsunVec.y)/150.0,0.); + + vec3 rC = vec3(fog_coefficientRayleighR*1e-6, fog_coefficientRayleighG*1e-5, fog_coefficientRayleighB*1e-5); + vec3 mC = vec3(fog_coefficientMieR*1e-6, fog_coefficientMieG*1e-6, fog_coefficientMieB*1e-6); + + float mu = 1.0; + float muS = mu; + vec3 absorbance = vec3(1.0); + float expFactor = 11.0; + vec3 WsunVec = mat3(gbufferModelViewInverse) * sunVec * lightCol.a; + + float cloudShadow = 1.0; + + for (int i=0;i 1e-5)*2-1.; + lightCol.rgb = sc; + + TAA_Offset = offsets[frameCounter%8]; + #ifndef TAA + TAA_Offset = vec2(0.0); + #endif + + #ifndef VL_Clouds_Shadows + lightCol.rgb *= (1.0-rainStrength*0.9); + #endif + // float Time = worldTime%24000; + + // FogSchedule = clamp( (Time - 9000)/9000 ,0,1); + // // float fogAmount0 = 1/3000.+FOG_TOD_MULTIPLIER*(1/100.*(clamp(modWT-11000.,0.,2000.0)/2000.+(1.0-clamp(modWT,0.,3000.0)/3000.))*(clamp(modWT-11000.,0.,2000.0)/2000.+(1.0-clamp(modWT,0.,3000.0)/3000.)) + 1/120.*clamp(modWT-13000.,0.,1000.0)/1000.*(1.0-clamp(modWT-23000.,0.,1000.0)/1000.)); + + // float fogAmount0 = TimeOfDayFog; + + // // VFAmount = CLOUDY_FOG_AMOUNT*(fogAmount0*fogAmount0+FOG_RAIN_MULTIPLIER*1.0/20000.*rainStrength); + // VFAmount = fogAmount0; + // fogAmount = BASE_FOG_AMOUNT*(fogAmount0+max(FOG_RAIN_MULTIPLIER*1/10.*rainStrength , FOG_TOD_MULTIPLIER*1/50.*clamp(modWT-13000.,0.,1000.0)/1000.*(1.0-clamp(modWT-23000.,0.,1000.0)/1000.))); + + + + + WsunVec = lightCol.a*normalize(mat3(gbufferModelViewInverse) *sunPosition); + refractedSunVec = refract(WsunVec, -vec3(0.0,1.0,0.0), 1.0/1.33333); +} diff --git a/shaders/composite6.fsh b/shaders/composite6.fsh new file mode 100644 index 0000000..5d16df1 --- /dev/null +++ b/shaders/composite6.fsh @@ -0,0 +1,325 @@ +#version 120 +//Horizontal bilateral blur for volumetric fog + Forward rendered objects + Draw volumetric fog +#extension GL_EXT_gpu_shader4 : enable + +#define SEA_LEVEL 70 //[0 10 20 30 40 50 60 70 80 90 100 110 120 130 150 170 190] //The volumetric light uses an altitude-based fog density, this is where fog density is the highest, adjust this value according to your world. +#define Refraction + + +#define Cave_fog // cave fog.... +#define CaveFogFallOff 1.3 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 ] + +#define CaveFogColor_R 0.1 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +#define CaveFogColor_G 0.2 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +#define CaveFogColor_B 0.5 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] + +// #define display_LUT // aaaaaaaaaaaaaaaaaaaaaaa +flat varying vec3 zMults; +flat varying vec2 TAA_Offset; + + +/* +const int colortex11Format = RGBA16F; //Final output, transparencies id (gbuffer->composite4) +*/ + + +uniform sampler2D noisetex; +uniform sampler2D depthtex0; +uniform sampler2D depthtex1; +uniform sampler2D colortex0; +uniform sampler2D colortex1; +uniform sampler2D colortex2; +uniform sampler2D colortex3; +// uniform sampler2D colortex4; +uniform sampler2D colortex5; +uniform sampler2D colortex6; +uniform sampler2D colortex7; +uniform sampler2D colortex8; +uniform sampler2D colortex9; +uniform sampler2D colortex11; +uniform sampler2D colortex13; +uniform sampler2D colortex15; +uniform vec2 texelSize; + +flat varying vec3 noooormal; +flat varying vec4 lightCol; //main light source color (rgb),used light source(1=sun,-1=moon) +flat varying vec3 WsunVec; + +uniform vec3 sunVec; +uniform float frameTimeCounter; +uniform int frameCounter; +uniform float far; +uniform float near; +uniform mat4 gbufferModelViewInverse; +uniform mat4 gbufferModelView; +uniform mat4 gbufferPreviousModelView; +uniform mat4 gbufferProjectionInverse; +uniform mat4 gbufferProjection; +uniform mat4 gbufferPreviousProjection; +uniform vec3 cameraPosition; +uniform vec3 previousCameraPosition; + +uniform int isEyeInWater; +uniform ivec2 eyeBrightnessSmooth; +uniform float rainStrength; +uniform float blindness; +uniform float darknessFactor; +uniform float darknessLightFactor; +uniform float nightVision; + +#include "lib/waterBump.glsl" +#include "lib/waterOptions.glsl" +#include "/lib/res_params.glsl" + +#include "lib/sky_gradient.glsl" +#include "lib/volumetricClouds.glsl" +// #include "lib/biome_specifics.glsl" + + + +#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) +#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) + +float ld(float depth) { + return 1.0 / (zMults.y - depth * zMults.z); // (-depth * (far - near)) = (2.0 * near)/ld - far - near +} +float luma(vec3 color) { + return dot(color,vec3(0.21, 0.72, 0.07)); +} +vec3 toLinear(vec3 sRGB){ + return sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878); +} +vec3 toScreenSpace(vec3 p) { + vec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); + vec3 p3 = p * 2. - 1.; + vec4 fragposition = iProjDiag * p3.xyzz + gbufferProjectionInverse[3]; + return fragposition.xyz / fragposition.w; +} + + +#include "lib/specular.glsl" + + + + +vec4 BilateralUpscale(sampler2D tex, sampler2D depth,vec2 coord,float frDepth){ + coord = coord; + vec4 vl = vec4(0.0); + float sum = 0.0; + mat3x3 weights; + const ivec2 scaling = ivec2(1.0/VL_RENDER_RESOLUTION); + ivec2 posD = ivec2(coord*VL_RENDER_RESOLUTION)*scaling; + ivec2 posVl = ivec2(coord*VL_RENDER_RESOLUTION); + float dz = zMults.x; + ivec2 pos = (ivec2(gl_FragCoord.xy+frameCounter) % 2 )*2; + + ivec2 tcDepth = posD + ivec2(-2,-2) * scaling + pos * scaling; + float dsample = ld(texelFetch2D(depth,tcDepth,0).r); + float w = abs(dsample-frDepth) < dz ? 1.0 : 1e-5; + vl += texelFetch2D(tex,posVl+ivec2(-2)+pos,0)*w; + sum += w; + + tcDepth = posD + ivec2(-2,0) * scaling + pos * scaling; + dsample = ld(texelFetch2D(depth,tcDepth,0).r); + w = abs(dsample-frDepth) < dz ? 1.0 : 1e-5; + vl += texelFetch2D(tex,posVl+ivec2(-2,0)+pos,0)*w; + sum += w; + + tcDepth = posD + ivec2(0) + pos * scaling; + dsample = ld(texelFetch2D(depth,tcDepth,0).r); + w = abs(dsample-frDepth) < dz ? 1.0 : 1e-5; + vl += texelFetch2D(tex,posVl+ivec2(0)+pos,0)*w; + sum += w; + + tcDepth = posD + ivec2(0,-2) * scaling + pos * scaling; + dsample = ld(texelFetch2D(depth,tcDepth,0).r); + w = abs(dsample-frDepth) < dz ? 1.0 : 1e-5; + vl += texelFetch2D(tex,posVl+ivec2(0,-2)+pos,0)*w; + sum += w; + + return vl/sum; +} + +vec3 decode (vec2 encn){ + vec3 n = vec3(0.0); + encn = encn * 2.0 - 1.0; + n.xy = abs(encn); + n.z = 1.0 - n.x - n.y; + n.xy = n.z <= 0.0 ? (1.0 - n.yx) * sign(encn) : encn; + return clamp(normalize(n.xyz),-1.0,1.0); +} + +vec2 decodeVec2(float a){ + const vec2 constant1 = 65535. / vec2( 256., 65536.); + const float constant2 = 256. / 255.; + return fract( a * constant1 ) * constant2 ; +} + +vec3 worldToView(vec3 worldPos) { + vec4 pos = vec4(worldPos, 0.0); + pos = gbufferModelView * pos; + return pos.xyz; +} +float blueNoise(){ + return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); +} +vec4 blueNoise(vec2 coord){ + return texelFetch2D(colortex6, ivec2(coord )%512 , 0); +} +vec3 normVec (vec3 vec){ + return vec*inversesqrt(dot(vec,vec)); +} + +float interleaved_gradientNoise(){ + vec2 coord = gl_FragCoord.xy; + float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)); + return noise; +} +vec3 viewToWorld(vec3 viewPosition) { + vec4 pos; + pos.xyz = viewPosition; + pos.w = 0.0; + pos = gbufferModelViewInverse * pos; + return pos.xyz; +} + +void main() { + vec2 texcoord = gl_FragCoord.xy*texelSize; + /* DRAWBUFFERS:73 */ + + vec4 transparencies = texture2D(colortex2,texcoord); + vec4 trpData = texture2D(colortex7,texcoord); + + vec4 speculartex = texture2D(colortex8,texcoord); // translucents + float sunlight = speculartex.b; + + bool iswater = trpData.a > 0.99; + float translucentAlpha = trpData.a; + + //3x3 bilateral upscale from half resolution + float z = texture2D(depthtex0,texcoord).x; + float z2 = texture2D(depthtex1,texcoord).x; + float frDepth = ld(z2); + vec4 vl = BilateralUpscale(colortex0,depthtex1,gl_FragCoord.xy,frDepth); + // vec4 vl = texture2D(colortex0,texcoord * 0.5); + + + vec4 data = texture2D(colortex11,texcoord); // translucents + vec4 dataUnpacked0 = vec4(decodeVec2(data.x),decodeVec2(data.y)); + vec4 dataUnpacked1 = vec4(decodeVec2(data.z),decodeVec2(data.w)); + + vec3 normals = mat3(gbufferModelViewInverse) * worldToView(decode(dataUnpacked0.yw) ); + + vec4 data_terrain = texture2D(colortex1,texcoord); // terraom + vec4 dataUnpacked1_terrain = vec4(decodeVec2(data_terrain.z),decodeVec2(data_terrain.w)); + + bool hand = (abs(dataUnpacked1_terrain.w-0.75) < 0.01); + + + vec2 refractedCoord = texcoord; + + float rainDrops = clamp(texture2D(colortex9,texcoord).a, 0.0,1.0); // bloomy rain effect + + + + vec2 tempOffset = TAA_Offset; + vec3 fragpos = toScreenSpace(vec3(texcoord/RENDER_SCALE-vec2(tempOffset)*texelSize*0.5,z)); + vec3 fragpos2 = toScreenSpace(vec3(texcoord/RENDER_SCALE-vec2(tempOffset)*texelSize*0.5,z2)); + vec3 p3 = mat3(gbufferModelViewInverse) * fragpos; + vec3 np3 = normVec(p3); + + #ifdef Refraction + vec3 worldPos = p3 + cameraPosition; + + // thank you sixthsurge, though i may be doing stuff weirdly with the tangent, it works... as far as i can tell. + vec3 geometryNormal = normalize(cross(dFdx(worldPos), dFdy(worldPos))); + + vec3 geometryNormal2 = geometryNormal; + vec3 tangent = geometryNormal2.y > 0.50 || geometryNormal2.y < -0.50 ? normalize(cross(vec3(0,0,1),geometryNormal)) : normalize(cross(vec3(0.0, 1.0, 0.0), geometryNormal)); + + // vec3 tangent = normalize(cross(vec3(1.0, 1.0, 1.0), geometryNormal)) ; + vec3 bitangent = normalize(cross(tangent, geometryNormal)) ; + mat3 tbn = mat3(tangent, bitangent, geometryNormal); + vec3 tangentSpaceNormal = normals * tbn; + + float dist = clamp(ld(fragpos.z)*100,0,0.15); // shrink as distance increases + + if( translucentAlpha > 0.0) refractedCoord += (tangentSpaceNormal.xy * dist ) * RENDER_SCALE; + + bool glass = texture2D(colortex7,refractedCoord).a > 0.0 && texture2D(colortex13,texcoord).a > 0.0; + if(!glass) refractedCoord = texcoord; + #endif + + // underwater squiggles + // if(isEyeInWater == 1 && !iswater) refractedCoord = texcoord + pow(texture2D(noisetex,texcoord - vec2(0,frameTimeCounter/25)).b - 0.5, 2.0)*0.05; + + + vec3 color = texture2D(colortex3,refractedCoord).rgb; + + if (frDepth > 2.5/far || transparencies.a < 0.99 || !hand) color = color * (1.0-transparencies.a) + transparencies.rgb*10.; // Discount fix for transparencies through hand + + + + float dirtAmount = Dirt_Amount; + vec3 waterEpsilon = vec3(Water_Absorb_R, Water_Absorb_G, Water_Absorb_B); + vec3 dirtEpsilon = vec3(Dirt_Absorb_R, Dirt_Absorb_G, Dirt_Absorb_B); + vec3 totEpsilon = dirtEpsilon*dirtAmount + waterEpsilon; + + color *= vl.a ; + + if(rainDrops > 0.0) { + // refractedCoord = mix(refractedCoord, vec2(texcoord.x,texcoord.y * 0.9 + 0.05), rainStrength) ; + vl.a *= clamp(exp2(-rainDrops*5),0.,1.); // bloomy rain effect + } + + + float lightleakfix = clamp((eyeBrightnessSmooth.y )/240.0,0.0,1.0); + + //cave fog + #ifdef Cave_fog + if (isEyeInWater == 0){ + float fogdistfade = 1.0 - clamp( exp(-pow(length(fragpos / far),2.)*5.0) ,0.0,1.0); + float fogfade = clamp( exp(clamp( np3.y*0.5 +0.5,0,1) * -6.0) ,0.0,1.0); + + color.rgb = mix(color.rgb, vec3(CaveFogColor_R,CaveFogColor_G,CaveFogColor_B)*fogfade, fogdistfade * (1.0-lightleakfix) * (1.0-darknessFactor)* clamp( 1.5 - np3.y,0.,1)) ; + // color.rgb = mix(color.rgb, vec3(CaveFogColor_R,CaveFogColor_G,CaveFogColor_B)*fogfade, fogdistfade) ; + } + #endif + + // underwater fog + if (isEyeInWater == 1){ + float fogfade = clamp(exp(-length(fragpos) /9. ) ,0.0,1.0); + color.rgb *= fogfade; + vl.a *= fogfade*0.70+0.3 ; + } + + color += vl.rgb; + gl_FragData[0].r = vl.a; + + /// lava. + if (isEyeInWater == 2){ + color.rgb = vec3(4.0,0.5,0.1); + } + + /// powdered snow + if (isEyeInWater == 3){ + color.rgb = mix(color.rgb,vec3(10,15,20),clamp(length(fragpos)*0.5,0.,1.)); + vl.a = 0.0; + } + + // blidnesss + // color.rgb *= mix(1.0, clamp(1.5-pow(length(fragpos2)*(blindness*0.2),2.0),0.0,1.0), blindness); + color.rgb *= mix(1.0, clamp( exp(pow(length(fragpos)*(blindness*0.2),2) * -5),0.,1.) , blindness); + + // darkness effect + color.rgb *= mix(1.0, (1.0-darknessLightFactor*2.0) * clamp(1.0-pow(length(fragpos2)*(darknessFactor*0.07),2.0),0.0,1.0), darknessFactor); + + + gl_FragData[1].rgb = clamp(color.rgb,0.0,68000.0); + + #ifdef display_LUT + gl_FragData[1].rgb = texture2D(colortex4,texcoord/2.5).rgb *0.035; + #endif + + // gl_FragData[1].rgb =mix(vec3(0.2,0.5,1), vec3(0,0,0), clamp( exp2(pow(clamp(0.5-np3.y,0,1) ,2)* -0.5) ,0,1)); +} \ No newline at end of file diff --git a/shaders/composite6.vsh b/shaders/composite6.vsh new file mode 100644 index 0000000..be43d51 --- /dev/null +++ b/shaders/composite6.vsh @@ -0,0 +1,53 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + +flat varying vec4 lightCol; +flat varying vec3 WsunVec; + +uniform mat4 gbufferModelViewInverse; +uniform int frameCounter; +uniform vec3 sunPosition; +uniform float sunElevation; + +flat varying vec2 TAA_Offset; +uniform sampler2D colortex4; +flat varying vec3 zMults; +uniform float far; +uniform float near; +#include "/lib/res_params.glsl" +const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); + + +flat varying vec3 noooormal; +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + zMults = vec3(1.0/(far * near),far+near,far-near); + gl_Position = ftransform(); + #ifdef TAA_UPSCALING + gl_Position.xy = (gl_Position.xy*0.5+0.5)*RENDER_SCALE*2.0-1.0; + #endif + + TAA_Offset = offsets[frameCounter%8]; + #ifndef TAA + TAA_Offset = vec2(0.0); + #endif + vec3 sc = texelFetch2D(colortex4,ivec2(6,37),0).rgb; + lightCol.a = float(sunElevation > 1e-5)*2-1.; + lightCol.rgb = sc; + + WsunVec = lightCol.a*normalize(mat3(gbufferModelViewInverse) *sunPosition); + + vec3 noooormal = normalize(gl_NormalMatrix * gl_Normal); +} diff --git a/shaders/composite7.fsh b/shaders/composite7.fsh new file mode 100644 index 0000000..cc57f47 --- /dev/null +++ b/shaders/composite7.fsh @@ -0,0 +1,44 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable +uniform sampler2D colortex3; +// Compute 3x3 min max for TAA + +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { +/* DRAWBUFFERS:06 */ + ivec2 center = ivec2(gl_FragCoord.xy); + vec3 current = texelFetch2D(colortex3, center, 0).rgb; + vec3 cMin = current; + vec3 cMax = current; + current = texelFetch2D(colortex3, center + ivec2(-1, -1), 0).rgb; + cMin = min(cMin, current); + cMax = max(cMax, current); + current = texelFetch2D(colortex3, center + ivec2(-1, 0), 0).rgb; + cMin = min(cMin, current); + cMax = max(cMax, current); + current = texelFetch2D(colortex3, center + ivec2(-1, 1), 0).rgb; + cMin = min(cMin, current); + cMax = max(cMax, current); + current = texelFetch2D(colortex3, center + ivec2(0, -1), 0).rgb; + cMin = min(cMin, current); + cMax = max(cMax, current); + current = texelFetch2D(colortex3, center + ivec2(0, 1), 0).rgb; + cMin = min(cMin, current); + cMax = max(cMax, current); + current = texelFetch2D(colortex3, center + ivec2(1, -1), 0).rgb; + cMin = min(cMin, current); + cMax = max(cMax, current); + current = texelFetch2D(colortex3, center + ivec2(1, 0), 0).rgb; + cMin = min(cMin, current); + cMax = max(cMax, current); + current = texelFetch2D(colortex3, center + ivec2(1, 1), 0).rgb; + cMin = min(cMin, current); + cMax = max(cMax, current); + gl_FragData[0].rgb = cMax; + gl_FragData[1].rgb = cMin; +} diff --git a/shaders/composite7.vsh b/shaders/composite7.vsh new file mode 100644 index 0000000..060ffeb --- /dev/null +++ b/shaders/composite7.vsh @@ -0,0 +1,17 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + + +#include "/lib/res_params.glsl" +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + gl_Position = ftransform(); + #ifdef TAA_UPSCALING + gl_Position.xy = (gl_Position.xy*0.5+0.5)*RENDER_SCALE*2.0-1.0; + #endif +} diff --git a/shaders/composite8.fsh b/shaders/composite8.fsh new file mode 100644 index 0000000..f7989d9 --- /dev/null +++ b/shaders/composite8.fsh @@ -0,0 +1,458 @@ +#version 120 +//Temporal Anti-Aliasing + Dynamic exposure calculations (vertex shader) + +#extension GL_EXT_gpu_shader4 : enable + +#include "lib/res_params.glsl" + + +//TAA OPTIONS +//#define NO_CLIP //Removes all anti-ghosting techniques used and creates a sharp image (good for still screenshots) +#define BLEND_FACTOR 0.05 //[0.01 0.02 0.03 0.04 0.05 0.06 0.08 0.1 0.12 0.14 0.16] higher values = more flickering but sharper image, lower values = less flickering but the image will be blurrier +#define MOTION_REJECTION 0.0 //[0.0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.5] //Higher values=sharper image in motion at the cost of flickering +#define ANTI_GHOSTING 0.0 //[0.0 0.25 0.5 0.75 1.0] High values reduce ghosting but may create flickering +#define FLICKER_REDUCTION 0.5 //[0.0 0.25 0.5 0.75 1.0] High values reduce flickering but may reduce sharpness +#define CLOSEST_VELOCITY //improves edge quality in motion at the cost of performance + +// #define SCREENSHOT_MODE // go render mode and accumulate frames for as long as you want for max image quality. +// #define SPLIT_RENDER // AAAAAAAAAAAAAAAA + +const int noiseTextureResolution = 32; + + +/* +const int colortex0Format = RGBA16F; // low res clouds (deferred->composite2) + low res VL (composite5->composite15) +const int colortex1Format = RGBA16; //terrain gbuffer (gbuffer->composite2) +const int colortex2Format = RGBA16F; //forward + transparencies (gbuffer->composite4) +const int colortex3Format = R11F_G11F_B10F; //frame buffer + bloom (deferred6->final) +const int colortex4Format = RGBA16F; //light values and skyboxes (everything) + +#ifdef SCREENSHOT_MODE + const int colortex5Format = RGBA32F; //TAA buffer (everything) +#else + const int colortex5Format = R11F_G11F_B10F; //TAA buffer (everything) +#endif + +const int colortex6Format = R11F_G11F_B10F; //additionnal buffer for bloom (composite3->final) +const int colortex7Format = RGBA8; //Final output, transparencies id (gbuffer->composite4) +const int colortex8Format = RGBA16F; //Final output, transparencies id (gbuffer->composite4) +const int colortex9Format = RGBA8; //Final output, transparencies id (gbuffer->composite4) +const int colortex10Format = RGBA16F; //Final output, transparencies id (gbuffer->composite4) +const int colortex13Format = RGBA16F; //Final output, transparencies id (gbuffer->composite4) +// const int colortex15Format = RGBA16F; // flat normals and vanilla +*/ +//no need to clear the buffers, saves a few fps +/* +const bool colortex0Clear = false; +const bool colortex1Clear = false; +const bool colortex2Clear = true; +const bool colortex3Clear = false; +const bool colortex4Clear = false; +const bool colortex5Clear = false; +const bool colortex6Clear = false; +const bool colortex7Clear = false; +*/ +varying vec2 texcoord; +flat varying float exposureA; +flat varying float tempOffsets; +uniform sampler2D colortex3; +uniform sampler2D colortex5; +uniform sampler2D colortex0; +uniform sampler2D colortex6; +uniform sampler2D colortex7; +uniform sampler2D colortex1; +uniform sampler2D colortex10; +uniform sampler2D colortex13; +uniform sampler2D depthtex0; +uniform sampler2D depthtex1; + +uniform vec2 texelSize; +uniform float frameTimeCounter; +uniform float viewHeight; +uniform float viewWidth; +uniform int frameCounter; +uniform int framemod8; +uniform vec3 previousCameraPosition; +uniform mat4 gbufferPreviousModelView; +#define fsign(a) (clamp((a)*1e35,0.,1.)*2.-1.) +#include "lib/projections.glsl" + + +float luma(vec3 color) { + return dot(color,vec3(0.21, 0.72, 0.07)); +} +float interleaved_gradientNoise(){ + return fract(52.9829189*fract(0.06711056*gl_FragCoord.x + 0.00583715*gl_FragCoord.y)+tempOffsets); +} +float triangularize(float dither) +{ + float center = dither*2.0-1.0; + dither = center*inversesqrt(abs(center)); + return clamp(dither-fsign(center),0.0,1.0); +} +vec3 fp10Dither(vec3 color,float dither){ + const vec3 mantissaBits = vec3(6.,6.,5.); + vec3 exponent = floor(log2(color)); + return color + dither*exp2(-mantissaBits)*exp2(exponent); +} + + +//returns the projected coordinates of the closest point to the camera in the 3x3 neighborhood +vec3 closestToCamera5taps(vec2 texcoord, sampler2D depth) +{ + vec2 du = vec2(texelSize.x*2., 0.0); + vec2 dv = vec2(0.0, texelSize.y*2.); + + vec3 dtl = vec3(texcoord,0.) + vec3(-texelSize, texture2D(depth, texcoord - dv - du).x); + vec3 dtr = vec3(texcoord,0.) + vec3( texelSize.x, -texelSize.y, texture2D(depth, texcoord - dv + du).x); + vec3 dmc = vec3(texcoord,0.) + vec3( 0.0, 0.0, texture2D(depth, texcoord).x); + vec3 dbl = vec3(texcoord,0.) + vec3(-texelSize.x, texelSize.y, texture2D(depth, texcoord + dv - du).x); + vec3 dbr = vec3(texcoord,0.) + vec3( texelSize.x, texelSize.y, texture2D(depth, texcoord + dv + du).x); + + vec3 dmin = dmc; + dmin = dmin.z > dtr.z? dtr : dmin; + dmin = dmin.z > dtl.z? dtl : dmin; + dmin = dmin.z > dbl.z? dbl : dmin; + dmin = dmin.z > dbr.z? dbr : dmin; + #ifdef TAA_UPSCALING + dmin.xy = dmin.xy/RENDER_SCALE; + #endif + return dmin; +} + +//Modified texture interpolation from inigo quilez +vec4 smoothfilter(in sampler2D tex, in vec2 uv) +{ + vec2 textureResolution = vec2(viewWidth,viewHeight); + uv = uv*textureResolution + 0.5; + vec2 iuv = floor( uv ); + vec2 fuv = fract( uv ); + uv = iuv + fuv*fuv*fuv*(fuv*(fuv*6.0-15.0)+10.0); + uv = (uv - 0.5)/textureResolution; + return texture2D( tex, uv); +} +//Due to low sample count we "tonemap" the inputs to preserve colors and smoother edges +vec3 weightedSample(sampler2D colorTex, vec2 texcoord){ + vec3 wsample = texture2D(colorTex,texcoord).rgb*exposureA; + return wsample/(1.0+luma(wsample)); + +} + + +//from : https://gist.github.com/TheRealMJP/c83b8c0f46b63f3a88a5986f4fa982b1 +vec4 SampleTextureCatmullRom(sampler2D tex, vec2 uv, vec2 texSize ) +{ + // We're going to sample a a 4x4 grid of texels surrounding the target UV coordinate. We'll do this by rounding + // down the sample location to get the exact center of our "starting" texel. The starting texel will be at + // location [1, 1] in the grid, where [0, 0] is the top left corner. + vec2 samplePos = uv * texSize; + vec2 texPos1 = floor(samplePos - 0.5) + 0.5; + + // Compute the fractional offset from our starting texel to our original sample location, which we'll + // feed into the Catmull-Rom spline function to get our filter weights. + vec2 f = samplePos - texPos1; + + // Compute the Catmull-Rom weights using the fractional offset that we calculated earlier. + // These equations are pre-expanded based on our knowledge of where the texels will be located, + // which lets us avoid having to evaluate a piece-wise function. + vec2 w0 = f * ( -0.5 + f * (1.0 - 0.5*f)); + vec2 w1 = 1.0 + f * f * (-2.5 + 1.5*f); + vec2 w2 = f * ( 0.5 + f * (2.0 - 1.5*f) ); + vec2 w3 = f * f * (-0.5 + 0.5 * f); + + // Work out weighting factors and sampling offsets that will let us use bilinear filtering to + // simultaneously evaluate the middle 2 samples from the 4x4 grid. + vec2 w12 = w1 + w2; + vec2 offset12 = w2 / (w1 + w2); + + // Compute the final UV coordinates we'll use for sampling the texture + vec2 texPos0 = texPos1 - vec2(1.0); + vec2 texPos3 = texPos1 + vec2(2.0); + vec2 texPos12 = texPos1 + offset12; + + texPos0 *= texelSize; + texPos3 *= texelSize; + texPos12 *= texelSize; + + vec4 result = vec4(0.0); + result += texture2D(tex, vec2(texPos0.x, texPos0.y)) * w0.x * w0.y; + result += texture2D(tex, vec2(texPos12.x, texPos0.y)) * w12.x * w0.y; + result += texture2D(tex, vec2(texPos3.x, texPos0.y)) * w3.x * w0.y; + + result += texture2D(tex, vec2(texPos0.x, texPos12.y)) * w0.x * w12.y; + result += texture2D(tex, vec2(texPos12.x, texPos12.y)) * w12.x * w12.y; + result += texture2D(tex, vec2(texPos3.x, texPos12.y)) * w3.x * w12.y; + + result += texture2D(tex, vec2(texPos0.x, texPos3.y)) * w0.x * w3.y; + result += texture2D(tex, vec2(texPos12.x, texPos3.y)) * w12.x * w3.y; + result += texture2D(tex, vec2(texPos3.x, texPos3.y)) * w3.x * w3.y; + + return result; +} +float R2_dither(){ + vec2 alpha = vec2(0.75487765, 0.56984026); + return fract(alpha.x * gl_FragCoord.x + alpha.y * gl_FragCoord.y + 1.0/1.6180339887 * frameCounter); +} +//approximation from SMAA presentation from siggraph 2016 +vec3 FastCatmulRom(sampler2D colorTex, vec2 texcoord, vec4 rtMetrics, float sharpenAmount) +{ + vec2 position = rtMetrics.zw * texcoord; + vec2 centerPosition = floor(position - 0.5) + 0.5; + vec2 f = position - centerPosition; + vec2 f2 = f * f; + vec2 f3 = f * f2; + + float c = sharpenAmount; + vec2 w0 = -c * f3 + 2.0 * c * f2 - c * f; + vec2 w1 = (2.0 - c) * f3 - (3.0 - c) * f2 + 1.0; + vec2 w2 = -(2.0 - c) * f3 + (3.0 - 2.0 * c) * f2 + c * f; + vec2 w3 = c * f3 - c * f2; + + vec2 w12 = w1 + w2; + vec2 tc12 = rtMetrics.xy * (centerPosition + w2 / w12); + vec3 centerColor = texture2D(colorTex, vec2(tc12.x, tc12.y)).rgb; + + vec2 tc0 = rtMetrics.xy * (centerPosition - 1.0); + vec2 tc3 = rtMetrics.xy * (centerPosition + 2.0); + vec4 color = vec4(texture2D(colorTex, vec2(tc12.x, tc0.y )).rgb, 1.0) * (w12.x * w0.y ) + + vec4(texture2D(colorTex, vec2(tc0.x, tc12.y)).rgb, 1.0) * (w0.x * w12.y) + + vec4(centerColor, 1.0) * (w12.x * w12.y) + + vec4(texture2D(colorTex, vec2(tc3.x, tc12.y)).rgb, 1.0) * (w3.x * w12.y) + + vec4(texture2D(colorTex, vec2(tc12.x, tc3.y )).rgb, 1.0) * (w12.x * w3.y ); + return color.rgb/color.a; + +} + +vec3 clip_aabb(vec3 q,vec3 aabb_min, vec3 aabb_max) + { + vec3 p_clip = 0.5 * (aabb_max + aabb_min); + vec3 e_clip = 0.5 * (aabb_max - aabb_min) + 0.00000001; + + vec3 v_clip = q - vec3(p_clip); + vec3 v_unit = v_clip.xyz / e_clip; + vec3 a_unit = abs(v_unit); + float ma_unit = max(a_unit.x, max(a_unit.y, a_unit.z)); + + if (ma_unit > 1.0) + return vec3(p_clip) + v_clip / ma_unit; + else + return q; + } +vec3 toClipSpace3Prev(vec3 viewSpacePosition) { + return projMAD(gbufferPreviousProjection, viewSpacePosition) / -viewSpacePosition.z * 0.5 + 0.5; +} + +vec3 tonemap(vec3 col){ + return col/(1+luma(col)); +} +vec3 invTonemap(vec3 col){ + return col/(1-luma(col)); +} +const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); +vec3 TAA_hq(bool hand, bool istranslucent){ + #ifdef TAA_UPSCALING + vec2 adjTC = clamp(texcoord*RENDER_SCALE, vec2(0.0),RENDER_SCALE-texelSize*2.); + #else + vec2 adjTC = texcoord; + #endif + + //use velocity from the nearest texel from camera in a 3x3 box in order to improve edge quality in motion + #ifdef CLOSEST_VELOCITY + vec3 closestToCamera = closestToCamera5taps(adjTC, depthtex0); + #endif + + #ifndef CLOSEST_VELOCITY + vec3 closestToCamera = vec3(texcoord,texture2D(depthtex1,adjTC).x); + #endif + + //reproject previous frame + vec3 fragposition = toScreenSpace(closestToCamera); + fragposition = mat3(gbufferModelViewInverse) * fragposition + gbufferModelViewInverse[3].xyz + (cameraPosition - previousCameraPosition); + vec3 previousPosition = mat3(gbufferPreviousModelView) * fragposition + gbufferPreviousModelView[3].xyz; + previousPosition = toClipSpace3Prev(previousPosition); + vec2 velocity = previousPosition.xy - closestToCamera.xy; + previousPosition.xy = texcoord + velocity; + + //reject history if off-screen and early exit + if (previousPosition.x < 0.0 || previousPosition.y < 0.0 || previousPosition.x > 1.0 || previousPosition.y > 1.0) + return smoothfilter(colortex3, adjTC + offsets[framemod8]*texelSize*0.5).xyz; + + #ifdef TAA_UPSCALING + vec3 albedoCurrent0 = smoothfilter(colortex3, adjTC + offsets[framemod8]*texelSize*0.5).xyz; + // Interpolating neighboorhood clampling boundaries between pixels + vec3 cMax = texture2D(colortex0, adjTC).rgb; + vec3 cMin = texture2D(colortex6, adjTC).rgb; + #else + vec3 albedoCurrent0 = texture2D(colortex3, adjTC).rgb; + vec3 albedoCurrent1 = texture2D(colortex3, adjTC + vec2(texelSize.x,texelSize.y)).rgb; + vec3 albedoCurrent2 = texture2D(colortex3, adjTC + vec2(texelSize.x,-texelSize.y)).rgb; + vec3 albedoCurrent3 = texture2D(colortex3, adjTC + vec2(-texelSize.x,-texelSize.y)).rgb; + vec3 albedoCurrent4 = texture2D(colortex3, adjTC + vec2(-texelSize.x,texelSize.y)).rgb; + vec3 albedoCurrent5 = texture2D(colortex3, adjTC + vec2(0.0,texelSize.y)).rgb; + vec3 albedoCurrent6 = texture2D(colortex3, adjTC + vec2(0.0,-texelSize.y)).rgb; + vec3 albedoCurrent7 = texture2D(colortex3, adjTC + vec2(-texelSize.x,0.0)).rgb; + vec3 albedoCurrent8 = texture2D(colortex3, adjTC + vec2(texelSize.x,0.0)).rgb; + //Assuming the history color is a blend of the 3x3 neighborhood, we clamp the history to the min and max of each channel in the 3x3 neighborhood + vec3 cMax = max(max(max(albedoCurrent0,albedoCurrent1),albedoCurrent2),max(albedoCurrent3,max(albedoCurrent4,max(albedoCurrent5,max(albedoCurrent6,max(albedoCurrent7,albedoCurrent8)))))); + vec3 cMin = min(min(min(albedoCurrent0,albedoCurrent1),albedoCurrent2),min(albedoCurrent3,min(albedoCurrent4,min(albedoCurrent5,min(albedoCurrent6,min(albedoCurrent7,albedoCurrent8)))))); + albedoCurrent0 = smoothfilter(colortex3, adjTC + offsets[framemod8]*texelSize*0.5).rgb; + #endif + + #ifndef NO_CLIP + vec3 albedoPrev = max(FastCatmulRom(colortex5, previousPosition.xy,vec4(texelSize, 1.0/texelSize), 0.75).xyz, 0.0); + vec3 finalcAcc = clamp(albedoPrev,cMin,cMax); + + //Increases blending factor when far from AABB and in motion, reduces ghosting + float isclamped = distance(albedoPrev,finalcAcc)/luma(albedoPrev) * 0.5; + float movementRejection = (0.12+isclamped)*clamp(length(velocity/texelSize),0.0,1.0); + + float test = 0.05; + if(hand) movementRejection *= 5; + if(istranslucent) test = 0.1; + + //Blend current pixel with clamped history, apply fast tonemap beforehand to reduce flickering + // vec3 supersampled = invTonemap(mix(tonemap(finalcAcc),tonemap(albedoCurrent0),clamp(BLEND_FACTOR + movementRejection, min(luma(motionVector) *255,1.0),1.))); + + vec3 supersampled = invTonemap(mix(tonemap(finalcAcc),tonemap(albedoCurrent0),clamp(BLEND_FACTOR + movementRejection, test,1.))); + #endif + + + #ifdef NO_CLIP + vec3 albedoPrev = texture2D(colortex5, previousPosition.xy).xyz; + vec3 supersampled = mix(albedoPrev,albedoCurrent0,clamp(0.05,0.,1.)); + #endif + + //De-tonemap + return supersampled; +} + + +vec3 decode (vec2 encn){ + vec3 n = vec3(0.0); + encn = encn * 2.0 - 1.0; + n.xy = abs(encn); + n.z = 1.0 - n.x - n.y; + n.xy = n.z <= 0.0 ? (1.0 - n.yx) * sign(encn) : encn; + return clamp(normalize(n.xyz),-1.0,1.0); +} +vec2 decodeVec2(float a){ + const vec2 constant1 = 65535. / vec2( 256., 65536.); + const float constant2 = 256. / 255.; + return fract( a * constant1 ) * constant2 ; +} +vec2 R2_samples(int n){ + vec2 alpha = vec2(0.75487765, 0.56984026); + return fract(alpha * n)*2.-1.0; +} +vec4 TAA_hq_render(){ + #ifdef TAA_UPSCALING + vec2 adjTC = clamp(texcoord*RENDER_SCALE, vec2(0.0),RENDER_SCALE-texelSize*2.); + #else + vec2 adjTC = texcoord; + #endif + + //use velocity from the nearest texel from camera in a 3x3 box in order to improve edge quality in motion + #ifdef CLOSEST_VELOCITY + vec3 closestToCamera = closestToCamera5taps(adjTC,depthtex0); + #endif + + #ifndef CLOSEST_VELOCITY + vec3 closestToCamera = vec3(texcoord,texture2D(depthtex0,adjTC).x); + #endif + + //reproject previous frame + vec3 fragposition = toScreenSpace(closestToCamera); + fragposition = mat3(gbufferModelViewInverse) * fragposition + gbufferModelViewInverse[3].xyz + (cameraPosition - previousCameraPosition); + vec3 previousPosition = mat3(gbufferPreviousModelView) * fragposition + gbufferPreviousModelView[3].xyz; + previousPosition = toClipSpace3Prev(previousPosition); + vec2 velocity = previousPosition.xy - closestToCamera.xy; + previousPosition.xy = texcoord + velocity; + + // //reject history if off-screen and early exit + if (previousPosition.x < 0.0 || previousPosition.y < 0.0 || previousPosition.x > 1.0 || previousPosition.y > 1.0) + return vec4(smoothfilter(colortex3, adjTC + R2_samples(frameCounter)*texelSize*0.5).xyz, 1.0); + + vec3 albedoCurrent0 = smoothfilter(colortex3, adjTC + R2_samples(frameCounter)*texelSize*0.5).xyz; + + float rej = 0.0; + vec4 albedoPrev = texture2D(colortex5, previousPosition.xy); + vec3 supersampled = albedoPrev.rgb * albedoPrev.a + albedoCurrent0; + + if (length(velocity) > 1e-6) return vec4(albedoCurrent0,1.0); + return vec4(supersampled/(albedoPrev.a+1.0), albedoPrev.a+1.0); +} + +void main() { + +/* DRAWBUFFERS:5 */ + + // vec3 motionVector = texture2D(colortex10,texcoord).xyz ; + + // vec3 viewpos = motionVector; + // vec3 eyepos = mat3(gbufferModelViewInverse) * viewpos; + // vec3 worldPos = eyepos + (cameraPosition + gbufferModelViewInverse[3].xyz); + // vec3 feetPos = worldPos - cameraPosition; + + // vec4 clippos = gbufferProjection * vec4(viewpos,1.0); + + // vec3 ndcPos = projectAndDivide(gbufferProjectionInverse, viewpos); + // vec3 screenPos = ndcPos * 0.5 + 0.5; + + // vec3 movement = ( cameraPosition - previousCameraPosition); + + + gl_FragData[0].a = 1.0; +#ifndef SPLIT_RENDER + #ifdef SCREENSHOT_MODE + + + vec4 color = TAA_hq_render(); + gl_FragData[0] = color; + + + #else + #ifdef TAA + vec4 data = texture2D(colortex1,texcoord* RENDER_SCALE); // terraom + vec4 dataUnpacked1 = vec4(decodeVec2(data.z),decodeVec2(data.w)); + bool hand = abs(dataUnpacked1.w-0.75) < 0.01; + bool translucentCol = texture2D(colortex13,texcoord * RENDER_SCALE).a > 0.0; // translucents + + + + vec3 color = TAA_hq(hand, translucentCol); + gl_FragData[0].rgb = clamp(fp10Dither(color ,triangularize(R2_dither())),6.11*1e-5,65000.0); + #endif + + #ifndef TAA + vec3 color = clamp(fp10Dither(texture2D(colortex3,texcoord).rgb,triangularize(interleaved_gradientNoise())),0.,65000.); + gl_FragData[0].rgb = color; + #endif + #endif +#endif +#ifdef SPLIT_RENDER + if(texcoord.x > 0.5){ + + vec4 color = TAA_hq_render(); + gl_FragData[0] = color; + + }else{ + vec4 data = texture2D(colortex1,texcoord* RENDER_SCALE); // terraom + vec4 dataUnpacked1 = vec4(decodeVec2(data.z),decodeVec2(data.w)); + bool hand = abs(dataUnpacked1.w-0.75) < 0.01; + bool translucentCol = texture2D(colortex13,texcoord * RENDER_SCALE).a > 0.0; // translucents + + + + vec3 color = TAA_hq(hand, translucentCol); + gl_FragData[0].rgb = clamp(fp10Dither(color ,triangularize(R2_dither())),6.11*1e-5,65000.0); + + } +#endif +} diff --git a/shaders/composite8.vsh b/shaders/composite8.vsh new file mode 100644 index 0000000..24ef8ce --- /dev/null +++ b/shaders/composite8.vsh @@ -0,0 +1,17 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + + +varying vec2 texcoord; +flat varying float exposureA; +flat varying float tempOffsets; +uniform sampler2D colortex4; +uniform int frameCounter; +#include "/lib/util.glsl" +void main() { + + tempOffsets = HaltonSeq2(frameCounter%10000); + gl_Position = ftransform(); + texcoord = gl_MultiTexCoord0.xy; + exposureA = texelFetch2D(colortex4,ivec2(10,37),0).r; +} diff --git a/shaders/composite9.fsh b/shaders/composite9.fsh new file mode 100644 index 0000000..50d2602 --- /dev/null +++ b/shaders/composite9.fsh @@ -0,0 +1,49 @@ +#version 120 +//downsample 1st pass (half res) for bloom + +uniform sampler2D colortex5; +// uniform sampler2D colortex8; +uniform vec2 texelSize; +uniform float viewWidth; +uniform float viewHeight; + +#include "lib/res_params.glsl" + + +void main() { +/* DRAWBUFFERS:3 */ + + +vec2 resScale = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.))/vec2(1920.,1080.); +vec2 quarterResTC = gl_FragCoord.xy*texelSize*2.*resScale/BLOOM_QUALITY; + +// float emissives1 = texture2D(colortex8,quarterResTC).a; +// float emissives2 = emissives1 < 1.0 ? emissives1 : 0.0; + + // 0.5 + gl_FragData[0] = texture2D(colortex5,quarterResTC-1.0*vec2(texelSize.x,texelSize.y))/4.*0.5; + gl_FragData[0] += texture2D(colortex5,quarterResTC+1.0*vec2(texelSize.x,texelSize.y))/4.*0.5; + gl_FragData[0] += texture2D(colortex5,quarterResTC+vec2(-1.0*texelSize.x,1.0*texelSize.y))/4.*0.5; + gl_FragData[0] += texture2D(colortex5,quarterResTC+vec2(1.0*texelSize.x,-1.0*texelSize.y))/4.*0.5; + + //0.25 + gl_FragData[0] += texture2D(colortex5,quarterResTC-2.0*vec2(texelSize.x,0.0))/2.*0.125; + gl_FragData[0] += texture2D(colortex5,quarterResTC+2.0*vec2(0.0,texelSize.y))/2.*0.125; + gl_FragData[0] += texture2D(colortex5,quarterResTC+2.0*vec2(0,-texelSize.y))/2*0.125; + gl_FragData[0] += texture2D(colortex5,quarterResTC+2.0*vec2(-texelSize.x,0.0))/2*0.125; + + //0.125 + gl_FragData[0] += texture2D(colortex5,quarterResTC-2.0*vec2(texelSize.x,texelSize.y))/4.*0.125; + gl_FragData[0] += texture2D(colortex5,quarterResTC+2.0*vec2(texelSize.x,texelSize.y))/4.*0.125; + gl_FragData[0] += texture2D(colortex5,quarterResTC+vec2(-2.0*texelSize.x,2.0*texelSize.y))/4.*0.125; + gl_FragData[0] += texture2D(colortex5,quarterResTC+vec2(2.0*texelSize.x,-2.0*texelSize.y))/4.*0.125; + + //0.125 + gl_FragData[0] += texture2D(colortex5,quarterResTC)*0.125; + + + gl_FragData[0].rgb = clamp(gl_FragData[0].rgb,0.0,65000.); + if (quarterResTC.x > 1.0 - 3.5*texelSize.x || quarterResTC.y > 1.0 -3.5*texelSize.y || quarterResTC.x < 3.5*texelSize.x || quarterResTC.y < 3.5*texelSize.y) gl_FragData[0].rgb = vec3(0.0); + + +} diff --git a/shaders/composite9.vsh b/shaders/composite9.vsh new file mode 100644 index 0000000..f98ccfe --- /dev/null +++ b/shaders/composite9.vsh @@ -0,0 +1,17 @@ +#version 120 +#include "lib/res_params.glsl" +uniform float viewWidth; +uniform float viewHeight; +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + //Improves performances and makes sure bloom radius stays the same at high resolution (>1080p) + vec2 clampedRes = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.)); + gl_Position = ftransform(); + //*0.51 to avoid errors when sampling outside since clearing is disabled + gl_Position.xy = (gl_Position.xy*0.5+0.5)*0.51*BLOOM_QUALITY/clampedRes*vec2(1920.0,1080.)*2.0-1.0; +} diff --git a/shaders/deferred.fsh b/shaders/deferred.fsh new file mode 100644 index 0000000..b17e3a3 --- /dev/null +++ b/shaders/deferred.fsh @@ -0,0 +1,196 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + + +//Prepares sky textures (2 * 256 * 256), computes light values and custom lightmaps +#define Ambient_Mult 1.0 //[0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.5 2.0 3.0 4.0 5.0 6.0 10.0] +#define Sky_Brightness 1.0 //[0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.5 2.0 3.0 4.0 5.0 6.0 10.0] + +#define MIN_LIGHT_AMOUNT 1.0 //[0.0 0.5 1.0 1.5 2.0 3.0 4.0 5.0] +#define TORCH_AMOUNT 1.0 //[0.0 0.5 0.75 1. 1.2 1.4 1.6 1.8 2.0] +#define TORCH_R 1.0 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +#define TORCH_G 0.75 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +#define TORCH_B 0.5 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +#define ambient_temp 9000 // [1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 15000 50000] + + +flat varying vec3 ambientUp; +flat varying vec3 ambientLeft; +flat varying vec3 ambientRight; +flat varying vec3 ambientB; +flat varying vec3 ambientF; +flat varying vec3 ambientDown; +flat varying float avgL2; +flat varying vec3 lightSourceColor; +flat varying vec3 sunColor; +flat varying vec3 sunColorCloud; +flat varying vec3 moonColor; +flat varying vec3 moonColorCloud; +flat varying vec3 zenithColor; +flat varying vec3 avgSky; +flat varying vec2 tempOffsets; +flat varying float exposure; +flat varying float rodExposure; +flat varying float avgBrightness; +flat varying float exposureF; +flat varying float fogAmount; +flat varying float VFAmount; +flat varying float centerDepth; + +// uniform sampler2D colortex4; +uniform sampler2D noisetex; +uniform sampler2DShadow shadow; + +uniform int frameCounter; +uniform float rainStrength; +uniform float eyeAltitude; +uniform float nightVision; +uniform vec3 sunVec; +uniform vec2 texelSize; +uniform float frameTimeCounter; +uniform mat4 gbufferProjection; +uniform mat4 gbufferProjectionInverse; +uniform mat4 gbufferPreviousProjection; +uniform mat4 gbufferModelViewInverse; +uniform mat4 gbufferModelView; +uniform mat4 shadowModelView; +uniform mat4 shadowProjection; +uniform float sunElevation; +uniform vec3 cameraPosition; +uniform float far; +uniform ivec2 eyeBrightnessSmooth; + +#include "lib/Shadow_Params.glsl" +#include "/lib/util.glsl" +#include "/lib/ROBOBO_sky.glsl" +#include "lib/sky_gradient.glsl" + +#define TIMEOFDAYFOG +#include "lib/volumetricClouds.glsl" + +// #include "lib/biome_specifics.glsl" + +vec3 toShadowSpaceProjected(vec3 p3){ + p3 = mat3(gbufferModelViewInverse) * p3 + gbufferModelViewInverse[3].xyz; + p3 = mat3(shadowModelView) * p3 + shadowModelView[3].xyz; + p3 = diagonal3(shadowProjection) * p3 + shadowProjection[3].xyz; + + return p3; +} +float R2_dither(){ + vec2 alpha = vec2(0.75487765, 0.56984026); + return fract(alpha.x * gl_FragCoord.x + alpha.y * gl_FragCoord.y + 1.0/1.6180339887 * frameCounter); +} +float blueNoise(){ + return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); +} +vec4 lightCol = vec4(lightSourceColor, float(sunElevation > 1e-5)*2-1.); +#include "lib/volumetricFog.glsl" +const float[17] Slightmap = float[17](14.0,17.,19.0,22.0,24.0,28.0,31.0,40.0,60.0,79.0,93.0,110.0,132.0,160.0,197.0,249.0,249.0); + +void main() { +/* DRAWBUFFERS:4 */ +gl_FragData[0] = vec4(0.0); +float minLight = (MIN_LIGHT_AMOUNT + nightVision*5) * 0.007/ (exposure + rodExposure/(rodExposure+1.0)*exposure*1.); +// vec3 minLight_col = MIN_LIGHT_AMOUNT * 0.007/ (exposure + rodExposure/(rodExposure+1.0)*exposure*1.) * vec3(0.8,0.9,1.0); +//Lightmap for forward shading (contains average integrated sky color across all faces + torch + min ambient) +vec3 avgAmbient = (ambientUp + ambientLeft + ambientRight + ambientB + ambientF + ambientDown)/6.; + +// avgAmbient *= blackbody(ambient_temp); + +if (gl_FragCoord.x < 17. && gl_FragCoord.y < 17.){ + float torchLut = clamp(16.0-gl_FragCoord.x,0.5,15.5); + torchLut = torchLut+0.712; + float torch_lightmap = max(1.0/torchLut/torchLut - 1/17.212/17.212,0.0); + torch_lightmap = pow(torch_lightmap*2.5,1.5)*TORCH_AMOUNT*10.; + float sky_lightmap = (Slightmap[int(gl_FragCoord.y)]-14.0)/235.; + sky_lightmap = pow(sky_lightmap,1.4); + vec3 ambient = (ambientUp * blackbody(ambient_temp))*sky_lightmap+torch_lightmap*vec3(TORCH_R,TORCH_G,TORCH_B)*TORCH_AMOUNT; + + gl_FragData[0] = vec4(max(ambient*Ambient_Mult,minLight/5),1.0); +} + +//Lightmap for deferred shading (contains only torch + min ambient) +if (gl_FragCoord.x < 17. && gl_FragCoord.y > 19. && gl_FragCoord.y < 19.+17. ){ + float torchLut = clamp(16.0-gl_FragCoord.x,0.5,15.5); + torchLut = torchLut+0.712; + float torch_lightmap = max(1.0/torchLut/torchLut - 1/17.212/17.212,0.0); + float ambient = pow(torch_lightmap*2.5,1.5)*TORCH_AMOUNT*10.; + float sky_lightmap = (Slightmap[int(gl_FragCoord.y-19.0)]-14.0)/235./150.; + + gl_FragData[0] = vec4(sky_lightmap,ambient,minLight,1.0)*Ambient_Mult; +} + +//Save light values +if (gl_FragCoord.x < 1. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1 ) +gl_FragData[0] = vec4(ambientUp * blackbody(ambient_temp),1.0); +if (gl_FragCoord.x > 1. && gl_FragCoord.x < 2. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1 ) +gl_FragData[0] = vec4(ambientUp,1.0); +if (gl_FragCoord.x > 2. && gl_FragCoord.x < 3. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1 ) +gl_FragData[0] = vec4(ambientLeft,1.0); +if (gl_FragCoord.x > 3. && gl_FragCoord.x < 4. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1 ) +gl_FragData[0] = vec4(ambientRight,1.0); +if (gl_FragCoord.x > 4. && gl_FragCoord.x < 5. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1 ) +gl_FragData[0] = vec4(ambientB,1.0); +if (gl_FragCoord.x > 5. && gl_FragCoord.x < 6. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1 ) +gl_FragData[0] = vec4(ambientF,1.0); +if (gl_FragCoord.x > 6. && gl_FragCoord.x < 7. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1 ) +gl_FragData[0] = vec4(lightSourceColor,1.0); +if (gl_FragCoord.x > 7. && gl_FragCoord.x < 8. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1 ) +gl_FragData[0] = vec4(avgAmbient,1.0); +if (gl_FragCoord.x > 8. && gl_FragCoord.x < 9. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1 ) +gl_FragData[0] = vec4(sunColor,1.0); +if (gl_FragCoord.x > 9. && gl_FragCoord.x < 10. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1 ) +gl_FragData[0] = vec4(moonColor,1.0); +if (gl_FragCoord.x > 11. && gl_FragCoord.x < 12. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1 ) +gl_FragData[0] = vec4(avgSky,1.0); +if (gl_FragCoord.x > 12. && gl_FragCoord.x < 13. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1 ) +gl_FragData[0] = vec4(sunColorCloud,1.0); +if (gl_FragCoord.x > 13. && gl_FragCoord.x < 14. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1 ) +gl_FragData[0] = vec4(moonColorCloud,1.0); +//Sky gradient (no clouds) +const float pi = 3.141592653589793238462643383279502884197169; +if (gl_FragCoord.x > 18. && gl_FragCoord.y > 1. && gl_FragCoord.x < 18+257){ + vec2 p = clamp(floor(gl_FragCoord.xy-vec2(18.,1.))/256.+tempOffsets/256.,0.0,1.0); + vec3 viewVector = cartToSphere(p); + + vec2 planetSphere = vec2(0.0); + vec3 sky = vec3(0.0); + vec3 skyAbsorb = vec3(0.0); + vec3 WsunVec = mat3(gbufferModelViewInverse)*sunVec; + sky = calculateAtmosphere(avgSky*4000./2.0, viewVector, vec3(0.0,1.0,0.0), WsunVec, -WsunVec, planetSphere, skyAbsorb, 10, blueNoise()); + + sky = mix(sky, vec3(0.5,0.5,0.5)*avgSky * 4000., clamp(1 - viewVector.y,0.0,1.0) * rainStrength ); + // sky *= max(abs(viewVector.y+0.05),0.25); + gl_FragData[0] = vec4(sky/4000.*Sky_Brightness,1.0); +} + +//Sky gradient with clouds +if (gl_FragCoord.x > 18.+257. && gl_FragCoord.y > 1. && gl_FragCoord.x < 18+257+257.){ + vec2 p = clamp(floor(gl_FragCoord.xy-vec2(18.+257,1.))/256.+tempOffsets/256.,0.0,1.0); + vec3 viewVector = cartToSphere(p); + vec4 clouds = renderClouds(mat3(gbufferModelView)*viewVector*1024.,vec3(0.), blueNoise(),sunColorCloud,moonColor,ambientUp,blueNoise()); + mat2x3 vL = getVolumetricRays(fract(frameCounter/1.6180339887),mat3(gbufferModelView)*viewVector*1024.); + float absorbance = dot(vL[1],vec3(0.22,0.71,0.07)); + vec3 skytex = texelFetch2D(colortex4,ivec2(gl_FragCoord.xy)-ivec2(257,0),0).rgb/150.; + + if(viewVector.y < -0.025) skytex = skytex * clamp( exp(viewVector.y - 1.0),0.,1.) ; + + skytex = skytex*clouds.a + clouds.rgb; + + // gl_FragData[0] = vec4(skytex,1.0); + gl_FragData[0] = vec4(skytex*absorbance+vL[0].rgb,1.0); +} + +//Temporally accumulate sky and light values +vec3 temp = texelFetch2D(colortex4,ivec2(gl_FragCoord.xy),0).rgb; +vec3 curr = gl_FragData[0].rgb*150.; +gl_FragData[0].rgb = clamp(mix(temp,curr,0.06),0.0,65000.); + +//Exposure values +if (gl_FragCoord.x > 10. && gl_FragCoord.x < 11. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1 ) +gl_FragData[0] = vec4(exposure,avgBrightness,avgL2,1.0); +if (gl_FragCoord.x > 14. && gl_FragCoord.x < 15. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1 ) +gl_FragData[0] = vec4(rodExposure,centerDepth,0.0, 1.0); + +} diff --git a/shaders/deferred.vsh b/shaders/deferred.vsh new file mode 100644 index 0000000..dd4356e --- /dev/null +++ b/shaders/deferred.vsh @@ -0,0 +1,261 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable +#define EXPOSURE_MULTIPLIER 1.0 //[0.25 0.4 0.5 0.6 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.1 1.2 1.3 1.4 1.5 2.0 3.0 4.0] +#define AUTO_EXPOSURE //Highly recommended to keep it on unless you want to take screenshots +#define Manual_exposure_value 1.0 // [0.000553 0.000581 0.000611 0.000642 0.000675 0.000710 0.000746 0.000784 0.000825 0.000867 0.000911 0.000958 0.001007 0.001059 0.001113 0.001170 0.001230 0.001294 0.001360 0.001430 0.001503 0.001580 0.001661 0.001746 0.001836 0.001930 0.002029 0.002133 0.002242 0.002357 0.002478 0.002605 0.002739 0.002879 0.003027 0.003182 0.003345 0.003517 0.003697 0.003887 0.004086 0.004296 0.004516 0.004748 0.004991 0.005247 0.005516 0.005799 0.006096 0.006409 0.006737 0.007083 0.007446 0.007828 0.008229 0.008651 0.009095 0.009561 0.010051 0.010567 0.011108 0.011678 0.012277 0.012906 0.013568 0.014264 0.014995 0.015764 0.016572 0.017422 0.018315 0.019254 0.020241 0.021279 0.022370 0.023517 0.024723 0.025991 0.027323 0.028724 0.030197 0.031745 0.033373 0.035084 0.036883 0.038774 0.040762 0.042852 0.045049 0.047358 0.049787 0.052339 0.055023 0.057844 0.060810 0.063927 0.067205 0.070651 0.074273 0.078081 0.082084 0.086293 0.090717 0.095369 0.100258 0.105399 0.110803 0.116484 0.122456 0.128734 0.135335 0.142274 0.149568 0.157237 0.165298 0.173773 0.182683 0.192049 0.201896 0.212247 0.223130 0.234570 0.246596 0.259240 0.272531 0.286504 0.301194 0.316636 0.332871 0.349937 0.367879 0.386741 0.406569 0.427414 0.449328 0.472366 0.496585 0.522045 0.548811 0.576949 0.606530 0.637628 0.670320 0.704688 0.740818 0.778800 0.818730 0.860707 0.904837 0.951229 1.0 1.051271 1.105170 1.161834 1.221402 1.284025 1.349858 1.419067 1.491824 1.568312 1.648721 1.733253 1.822118 1.915540 2.013752 2.117000 2.225540 2.339646 2.459603 2.585709 2.718281 2.857651 3.004166 3.158192 3.320116 3.490342 3.669296 3.857425 4.055199 4.263114 4.481689 4.711470 4.953032 5.206979 5.473947 5.754602 6.049647 6.359819 6.685894 7.028687 7.389056 7.767901 8.166169 8.584858 9.025013 9.487735 9.974182 10.48556 11.02317 11.58834 12.18249 ] +#define Exposure_Speed 1.0 //[0.25 0.5 0.75 1.0 1.25 1.5 1.75 2.0 2.25 2.5 2.75 3.0 4.0 5.0] +#define DoF_Adaptation_Speed 1.00 // [0.20 0.21 0.23 0.24 0.25 0.27 0.29 0.30 0.32 0.34 0.36 0.39 0.41 0.43 0.46 0.49 0.52 0.55 0.59 0.62 0.66 0.70 0.74 0.79 0.84 0.89 0.94 1.00 1.06 1.13 1.20 1.27 1.35 1.43 1.52 1.61 1.71 1.82 1.93 2.05 2.18 2.31 2.45 2.60 2.76 2.93 3.11 3.30 3.51 3.72 3.95 4.19 4.45 4.73 5.02 5.33 5.65 6.00] +#define CLOUDS_SHADOWS +#define BASE_FOG_AMOUNT 1.0 //[0.0 0.2 0.4 0.6 0.8 1.0 1.25 1.5 1.75 2.0 3.0 4.0 5.0 10.0 20.0 30.0 50.0 100.0 150.0 200.0] Base fog amount amount (does not change the "cloudy" fog) +#define CLOUDY_FOG_AMOUNT 1.0 //[0.0 0.2 0.4 0.6 0.8 1.0 1.25 1.5 1.75 2.0 3.0 4.0 5.0] +#define FOG_TOD_MULTIPLIER 1.0 //[0.0 0.2 0.4 0.6 0.8 1.0 1.25 1.5 1.75 2.0 3.0 4.0 5.0] //Influence of time of day on fog amount +#define FOG_RAIN_MULTIPLIER 1.0 //[0.0 0.2 0.4 0.6 0.8 1.0 1.25 1.5 1.75 2.0 3.0 4.0 5.0] //Influence of rain on fog amount +#include "lib/res_params.glsl" +flat varying vec3 ambientUp; +flat varying vec3 ambientLeft; +flat varying vec3 ambientRight; +flat varying vec3 ambientB; +flat varying vec3 ambientF; +flat varying vec3 ambientDown; +flat varying vec3 zenithColor; +flat varying vec3 sunColor; +flat varying vec3 sunColorCloud; +flat varying vec3 moonColor; +flat varying vec3 moonColorCloud; +flat varying vec3 lightSourceColor; +flat varying vec3 avgSky; +flat varying vec2 tempOffsets; +flat varying float exposure; +flat varying float avgBrightness; +flat varying float exposureF; +flat varying float rodExposure; +flat varying float fogAmount; +flat varying float VFAmount; +flat varying float avgL2; +flat varying float centerDepth; + +uniform sampler2D colortex4; +uniform sampler2D colortex6; +uniform sampler2D depthtex0; + + +uniform mat4 gbufferModelViewInverse; +uniform vec3 sunPosition; +uniform vec2 texelSize; +uniform float rainStrength; +uniform float sunElevation; +uniform float nightVision; +uniform float near; +uniform float far; +uniform float frameTime; +uniform float eyeAltitude; +uniform int frameCounter; +uniform int worldTime; +vec3 sunVec = normalize(mat3(gbufferModelViewInverse) *sunPosition); + + + +#include "lib/sky_gradient.glsl" +#include "/lib/util.glsl" +#include "/lib/ROBOBO_sky.glsl" + + +vec3 rodSample(vec2 Xi) +{ + float r = sqrt(1.0f - Xi.x*Xi.y); + float phi = 2 * 3.14159265359 * Xi.y; + + return normalize(vec3(cos(phi) * r, sin(phi) * r, Xi.x)).xzy; +} +vec3 cosineHemisphereSample(vec2 Xi) +{ + float r = sqrt(Xi.x); + float theta = 2.0 * 3.14159265359 * Xi.y; + + float x = r * cos(theta); + float y = r * sin(theta); + + return vec3(x, y, sqrt(clamp(1.0 - Xi.x,0.,1.))); +} + +float luma(vec3 color) { + return dot(color,vec3(0.21, 0.72, 0.07)); +} + +vec2 tapLocation(int sampleNumber,int nb, float nbRot,float jitter) +{ + float alpha = float(sampleNumber+jitter)/nb; + float angle = (jitter+alpha) * (nbRot * 6.28); + + float ssR = alpha; + float sin_v, cos_v; + + sin_v = sin(angle); + cos_v = cos(angle); + + return vec2(cos_v, sin_v)*ssR; +} +//Low discrepancy 2D sequence, integration error is as low as sobol but easier to compute : http://extremelearning.com.au/unreasonable-effectiveness-of-quasirandom-sequences/ +vec2 R2_samples(int n){ + vec2 alpha = vec2(0.75487765, 0.56984026); + return fract(alpha * n); +} +float tanh(float x){ + return (exp(x) - exp(-x))/(exp(x) + exp(-x)); +} +float ld(float depth) { + return (2.0 * near) / (far + near - depth * (far - near)); // (-depth * (far - near)) = (2.0 * near)/ld - far - near +} +void main() { + + gl_Position = ftransform()*0.5+0.5; + gl_Position.xy = gl_Position.xy*vec2(18.+258*2,258.)*texelSize; + gl_Position.xy = gl_Position.xy*2.-1.0; + + tempOffsets = R2_samples(frameCounter%10000); + + ambientUp = vec3(0.0); + ambientDown = vec3(0.0); + ambientLeft = vec3(0.0); + ambientRight = vec3(0.0); + ambientB = vec3(0.0); + ambientF = vec3(0.0); + avgSky = vec3(0.0); + //Integrate sky light for each block side + int maxIT = 20; + for (int i = 0; i < maxIT; i++) { + vec2 ij = R2_samples((frameCounter%1000)*maxIT+i); + vec3 pos = normalize(rodSample(ij)); + + + vec3 samplee = 1.72*skyFromTex(pos,colortex4).rgb/maxIT/150.; + avgSky += samplee/1.72; + ambientUp += samplee*(pos.y+abs(pos.x)/7.+abs(pos.z)/7.); + ambientLeft += samplee*(clamp(-pos.x,0.0,1.0)+clamp(pos.y/7.,0.0,1.0)+abs(pos.z)/7.); + ambientRight += samplee*(clamp(pos.x,0.0,1.0)+clamp(pos.y/7.,0.0,1.0)+abs(pos.z)/7.); + ambientB += samplee*(clamp(pos.z,0.0,1.0)+abs(pos.x)/7.+clamp(pos.y/7.,0.0,1.0)); + ambientF += samplee*(clamp(-pos.z,0.0,1.0)+abs(pos.x)/7.+clamp(pos.y/7.,0.0,1.0)); + ambientDown += samplee*(clamp(pos.y/6.,0.0,1.0)+abs(pos.x)/7.+abs(pos.z)/7.); + + /* + ambientUp += samplee*(pos.y); + ambientLeft += samplee*(clamp(-pos.x,0.0,1.0)); + ambientRight += samplee*(clamp(pos.x,0.0,1.0)); + ambientB += samplee*(clamp(pos.z,0.0,1.0)); + ambientF += samplee*(clamp(-pos.z,0.0,1.0)); + ambientDown += samplee*(clamp(pos.y/6.,0.0,1.0))*0; + */ + + } + + + vec2 planetSphere = vec2(0.0); + vec3 sky = vec3(0.0); + vec3 skyAbsorb = vec3(0.0); + + float sunVis = clamp(sunElevation,0.0,0.05)/0.05*clamp(sunElevation,0.0,0.05)/0.05; + float moonVis = clamp(-sunElevation,0.0,0.05)/0.05*clamp(-sunElevation,0.0,0.05)/0.05; + + zenithColor = calculateAtmosphere(vec3(0.0), vec3(0.0,1.0,0.0), vec3(0.0,1.0,0.0), sunVec, -sunVec, planetSphere, skyAbsorb, 25,tempOffsets.x); + skyAbsorb = vec3(0.0); + vec3 absorb = vec3(0.0); + sunColor = calculateAtmosphere(vec3(0.0), sunVec, vec3(0.0,1.0,0.0), sunVec, -sunVec, planetSphere, skyAbsorb, 25,0.0); + sunColor = sunColorBase/4000. * skyAbsorb; + + skyAbsorb = vec3(1.0); + float dSun = 0.03; + vec3 modSunVec = sunVec*(1.0-dSun)+vec3(0.0,dSun,0.0); + vec3 modSunVec2 = sunVec*(1.0-dSun)+vec3(0.0,dSun,0.0); + if (modSunVec2.y > modSunVec.y) modSunVec = modSunVec2; + sunColorCloud = calculateAtmosphere(vec3(0.0), modSunVec, vec3(0.0,1.0,0.0), sunVec, -sunVec, planetSphere, skyAbsorb, 25,0.); + sunColorCloud = sunColorBase/4000. * skyAbsorb ; + + skyAbsorb = vec3(1.0); + moonColor = calculateAtmosphere(vec3(0.0), -sunVec, vec3(0.0,1.0,0.0), sunVec, -sunVec, planetSphere, skyAbsorb, 25,0.5); + moonColor = moonColorBase/4000.0*skyAbsorb; + + skyAbsorb = vec3(1.0); + modSunVec = -sunVec*(1.0-dSun)+vec3(0.0,dSun,0.0); + modSunVec2 = -sunVec*(1.0-dSun)+vec3(0.0,dSun,0.0); + if (modSunVec2.y > modSunVec.y) modSunVec = modSunVec2; + moonColorCloud = calculateAtmosphere(vec3(0.0), modSunVec, vec3(0.0,1.0,0.0), sunVec, -sunVec, planetSphere, skyAbsorb, 25,0.5); + + moonColorCloud = moonColorBase/4000.0*0.55; + #ifndef CLOUDS_SHADOWS + sunColor *= (1.0-rainStrength*vec3(0.96,0.95,0.94)); + moonColor *= (1.0-rainStrength*vec3(0.96,0.95,0.94)); + #endif + lightSourceColor = sunVis >= 1e-5 ? sunColor * sunVis : moonColor * moonVis; + + float lightDir = float( sunVis >= 1e-5)*2.0-1.0; + + + //Fake bounced sunlight + vec3 bouncedSun = lightSourceColor*0.1/5.0*0.5*clamp(lightDir*sunVec.y,0.0,1.0)*clamp(lightDir*sunVec.y,0.0,1.0); + vec3 cloudAmbientSun = (sunColorCloud)*0.007; + vec3 cloudAmbientMoon = (moonColorCloud)*0.007; + ambientUp += bouncedSun*clamp(-lightDir*sunVec.y+4.,0.,4.0) + cloudAmbientSun*clamp(sunVec.y+2.,0.,4.0) + cloudAmbientMoon*clamp(-sunVec.y+2.,0.,4.0); + ambientLeft += bouncedSun*clamp(lightDir*sunVec.x+4.,0.0,4.) + cloudAmbientSun*clamp(-sunVec.x+2.,0.0,4.)*0.7 + cloudAmbientMoon*clamp(sunVec.x+2.,0.0,4.)*0.7; + ambientRight += bouncedSun*clamp(-lightDir*sunVec.x+4.,0.0,4.) + cloudAmbientSun*clamp(sunVec.x+2.,0.0,4.)*0.7 + cloudAmbientMoon*clamp(-sunVec.x+2.,0.0,4.)*0.7; + ambientB += bouncedSun*clamp(-lightDir*sunVec.z+4.,0.0,4.) + cloudAmbientSun*clamp(sunVec.z+2.,0.0,4.)*0.7 + cloudAmbientMoon*clamp(-sunVec.z+2.,0.0,4.)*0.7; + ambientF += bouncedSun*clamp(lightDir*sunVec.z+4.,0.0,4.) + cloudAmbientSun*clamp(-sunVec.z+2.,0.0,4.)*0.7 + cloudAmbientMoon*clamp(sunVec.z+2.,0.0,4.)*0.7; + ambientDown += bouncedSun*clamp(lightDir*sunVec.y+4.,0.0,4.)*0.7 + cloudAmbientSun*clamp(-sunVec.y+2.,0.0,4.)*0.5 + cloudAmbientMoon*clamp(sunVec.y+2.,0.0,4.)*0.5; + avgSky += bouncedSun*5.; + + vec3 rainNightBoost = moonColorCloud*rainStrength*0.005; + ambientUp += rainNightBoost; + ambientLeft += rainNightBoost; + ambientRight += rainNightBoost; + ambientB += rainNightBoost; + ambientF += rainNightBoost; + ambientDown += rainNightBoost; + avgSky += rainNightBoost; + + float avgLuma = 0.0; + float m2 = 0.0; + int n=100; + vec2 clampedRes = max(1.0/texelSize,vec2(1920.0,1080.)); + float avgExp = 0.0; + float avgB = 0.0; + vec2 resScale = vec2(1920.,1080.)/clampedRes*BLOOM_QUALITY; + const int maxITexp = 50; + float w = 0.0; + for (int i = 0; i < maxITexp; i++){ + vec2 ij = R2_samples((frameCounter%2000)*maxITexp+i); + vec2 tc = 0.5 + (ij-0.5) * 0.7; + vec3 sp = texture2D(colortex6,tc/16. * resScale+vec2(0.375*resScale.x+4.5*texelSize.x,.0)).rgb; + avgExp += log(luma(sp)); + avgB += log(min(dot(sp,vec3(0.07,0.22,0.71)),8e-2)); + } + + avgExp = exp(avgExp/maxITexp); + avgB = exp(avgB/maxITexp); + + avgBrightness = clamp(mix(avgExp,texelFetch2D(colortex4,ivec2(10,37),0).g,0.95),0.00003051757,65000.0); + + float L = max(avgBrightness,1e-8); + float keyVal = 1.03-2.0/(log(L*4000/150.*8./3.0+1.0)/log(10.0)+2.0); + float expFunc = 0.5+0.5*tanh(log(L)); + float targetExposure = 0.18/log2(L*2.5+1.045)*0.62; + + avgL2 = clamp(mix(avgB,texelFetch2D(colortex4,ivec2(10,37),0).b,0.985),0.00003051757,65000.0); + float targetrodExposure = max(0.012/log2(avgL2+1.002)-0.1,0.0)*1.2; + + + exposure=max(targetExposure*EXPOSURE_MULTIPLIER, 0); + float currCenterDepth = ld(texture2D(depthtex0, vec2(0.5)*RENDER_SCALE).r); + centerDepth = mix(sqrt(texelFetch2D(colortex4,ivec2(14,37),0).g/65000.0), currCenterDepth, clamp(DoF_Adaptation_Speed*exp(-0.016/frameTime+1.0)/(6.0+currCenterDepth*far),0.0,1.0)); + centerDepth = centerDepth * centerDepth * 65000.0; + + rodExposure = targetrodExposure; + + #ifndef AUTO_EXPOSURE + exposure = Manual_exposure_value; + rodExposure = clamp(log(Manual_exposure_value*2.0+1.0)-0.1,0.0,2.0); + #endif + float modWT = (worldTime%24000)*1.0; + + float fogAmount0 = 1/3000.+FOG_TOD_MULTIPLIER*(1/100.*(clamp(modWT-11000.,0.,2000.0)/2000.+(1.0-clamp(modWT,0.,3000.0)/3000.))*(clamp(modWT-11000.,0.,2000.0)/2000.+(1.0-clamp(modWT,0.,3000.0)/3000.)) + 1/120.*clamp(modWT-13000.,0.,1000.0)/1000.*(1.0-clamp(modWT-23000.,0.,1000.0)/1000.)); + VFAmount = CLOUDY_FOG_AMOUNT*(fogAmount0*fogAmount0+FOG_RAIN_MULTIPLIER*1.0/20000.*rainStrength); + fogAmount = BASE_FOG_AMOUNT*(fogAmount0+max(FOG_RAIN_MULTIPLIER*1/10.*rainStrength , FOG_TOD_MULTIPLIER*1/50.*clamp(modWT-13000.,0.,1000.0)/1000.*(1.0-clamp(modWT-23000.,0.,1000.0)/1000.))); +} diff --git a/shaders/deferred1.fsh b/shaders/deferred1.fsh new file mode 100644 index 0000000..9e513aa --- /dev/null +++ b/shaders/deferred1.fsh @@ -0,0 +1,101 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + +//Computes volumetric clouds at variable resolution (default 1/4 res) +#define HQ_CLOUDS //Renders detailled clouds for viewport +#define CLOUDS_QUALITY 0.5 //[0.1 0.125 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.9 1.0] +#define TAA + +flat varying vec3 sunColor; +flat varying vec3 moonColor; +flat varying vec3 avgAmbient; +flat varying float tempOffsets; + +uniform sampler2D depthtex0; +// uniform sampler2D colortex4; +uniform sampler2D noisetex; + +uniform vec3 sunVec; +uniform vec2 texelSize; +uniform float frameTimeCounter; +uniform float rainStrength; +uniform int frameCounter; +uniform int framemod8; +uniform mat4 gbufferProjectionInverse; +uniform mat4 gbufferModelViewInverse; +uniform vec3 cameraPosition; + +uniform mat4 gbufferModelView; +// flat varying vec2 TAA_Offset; + + +vec3 toScreenSpace(vec3 p) { + vec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); + vec3 p3 = p * 2. - 1.; + vec4 fragposition = iProjDiag * p3.xyzz + gbufferProjectionInverse[3]; + return fragposition.xyz / fragposition.w; +} +float R2_dither(){ + vec2 alpha = vec2(0.75487765, 0.56984026); + return fract(alpha.x * gl_FragCoord.x + alpha.y * gl_FragCoord.y + 1.0/1.6180339887 * frameCounter); +} +float R2_dither2(){ + vec2 alpha = vec2(0.75487765, 0.56984026); + return fract(alpha.x * (1.0-gl_FragCoord.x) + alpha.y * (1.0-gl_FragCoord.y) + 1.0/1.6180339887 * frameCounter); +} +float interleaved_gradientNoise(){ + vec2 alpha = vec2(0.75487765, 0.56984026); + vec2 coord = vec2(alpha.x * gl_FragCoord.x,alpha.y * gl_FragCoord.y)+ 1.0/1.6180339887 * frameCounter; + float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)); + return noise; +} +#include "lib/sky_gradient.glsl" +#include "lib/volumetricClouds.glsl" +#include "/lib/res_params.glsl" +const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); +float blueNoise(){ + return fract(texelFetch2D(noisetex, ivec2(1.0-gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); +} +float blueNoise2(){ + return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); +} + +vec3 normVec (vec3 vec){ + return vec*inversesqrt(dot(vec,vec)); +} +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { +/* DRAWBUFFERS:0 */ +float phi = 2 * 3.14159265359; +float noise = fract(fract(frameCounter * (1.0 / phi)) + interleaved_gradientNoise() ) ; + + + #ifdef VOLUMETRIC_CLOUDS + vec2 halfResTC = vec2(floor(gl_FragCoord.xy)/CLOUDS_QUALITY/RENDER_SCALE+0.5+(vec2(tempOffsets)*(texelSize/4))*CLOUDS_QUALITY*RENDER_SCALE*0.5); + + vec3 fragpos = toScreenSpace(vec3(halfResTC*texelSize,1.0)); + vec3 p3 = mat3(gbufferModelViewInverse) * fragpos; + vec3 np3 = normVec(p3); + + + vec4 currentClouds = renderClouds(fragpos,vec3(0.), R2_dither(),sunColor/150.,moonColor/150.,avgAmbient/150.,blueNoise2()); + gl_FragData[0] = currentClouds ; + + + #else + gl_FragData[0] = vec4(0.0,0.0,0.0,1.0); + #endif + +} diff --git a/shaders/deferred1.vsh b/shaders/deferred1.vsh new file mode 100644 index 0000000..6f8f89d --- /dev/null +++ b/shaders/deferred1.vsh @@ -0,0 +1,46 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable +#define CLOUDS_QUALITY 0.5 //[0.1 0.125 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.9 1.0] + +flat varying vec3 sunColor; +flat varying vec3 moonColor; +flat varying vec3 avgAmbient; +flat varying float tempOffsets; + +flat varying vec3 ambientUp; +flat varying vec3 ambientLeft; +flat varying vec3 ambientRight; +flat varying vec3 ambientB; +flat varying vec3 ambientF; +flat varying vec3 ambientDown; + +uniform sampler2D colortex4; +uniform int frameCounter; +#include "/lib/util.glsl" +#include "/lib/res_params.glsl" +void main() { + + // TAA_Offset = offsets[frameCounter%8]; + // #ifndef TAA + // TAA_Offset = vec2(0.0); + // #endif + + tempOffsets = HaltonSeq2(frameCounter%10000); + gl_Position = ftransform(); + gl_Position.xy = (gl_Position.xy*0.5+0.5)*clamp(CLOUDS_QUALITY+0.01,0.0,1.0)*2.0-1.0; + #ifdef TAA_UPSCALING + gl_Position.xy = (gl_Position.xy*0.5+0.5)*RENDER_SCALE*2.0-1.0; + #endif + sunColor = texelFetch2D(colortex4,ivec2(12,37),0).rgb; + moonColor = texelFetch2D(colortex4,ivec2(13,37),0).rgb; + // avgAmbient = texelFetch2D(colortex4,ivec2(11,37),0).rgb; + + // ambientUp = texelFetch2D(colortex4,ivec2(0,37),0).rgb; + // ambientDown = texelFetch2D(colortex4,ivec2(1,37),0).rgb; + // ambientLeft = texelFetch2D(colortex4,ivec2(2,37),0).rgb; + // ambientRight = texelFetch2D(colortex4,ivec2(3,37),0).rgb; + // ambientB = texelFetch2D(colortex4,ivec2(4,37),0).rgb; + // ambientF = texelFetch2D(colortex4,ivec2(5,37),0).rgb; + + avgAmbient = texelFetch2D(colortex4,ivec2(1,37),0).rgb; +} diff --git a/shaders/deferred2.fsh b/shaders/deferred2.fsh new file mode 100644 index 0000000..b8932e7 --- /dev/null +++ b/shaders/deferred2.fsh @@ -0,0 +1,27 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable +uniform sampler2D colortex4; +uniform sampler2D depthtex1; + +uniform float near; +uniform float far; + + +float linZ(float depth) { + return (2.0 * near) / (far + near - depth * (far - near)); +} +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { +/* DRAWBUFFERS:4 */ + vec3 oldTex = texelFetch2D(colortex4, ivec2(gl_FragCoord.xy), 0).xyz; + float newTex = texelFetch2D(depthtex1, ivec2(gl_FragCoord.xy*4), 0).x; + if (newTex < 1.0) + gl_FragData[0] = vec4(oldTex, linZ(newTex)*linZ(newTex)*65000.0); + else + gl_FragData[0] = vec4(oldTex, 2.0); +} diff --git a/shaders/deferred2.vsh b/shaders/deferred2.vsh new file mode 100644 index 0000000..942c20e --- /dev/null +++ b/shaders/deferred2.vsh @@ -0,0 +1,9 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable +uniform vec2 texelSize; +#include "/lib/res_params.glsl" +void main() { + gl_Position = ftransform(); + vec2 scaleRatio = max(vec2(0.25), vec2(18.+258*2,258.)*texelSize); + gl_Position.xy = (gl_Position.xy*0.5+0.5)*clamp(scaleRatio+0.01,0.0,1.0)*2.0-1.0; +} diff --git a/shaders/entity.properties b/shaders/entity.properties new file mode 100644 index 0000000..c57aaa6 --- /dev/null +++ b/shaders/entity.properties @@ -0,0 +1,13 @@ +#if MC_VERSION >= 11300 + + +### all the different strengths of subsurface scattering and what entities to put them on. +#medium sss (same as strong sss for blocks) +entity.1100 = slime giant ender_dragon ghast + +#weak sss (same as weak sss for blocks) +entity.1200 = frog sheep chicken snow_golem polar_bear zombie_horse armor_stand arrow squid bat cat cod cow donkey fox horse mooshroom mule ocelot parrot pig piglin polar_bear pufferfish rabbit salmon strider tropical_fish turtle villager wandering_trader bee cave_spider dolphin enderman llama panda spider wolf zombified_piglin blaze creeper drowned elder_gaurdian endermite evoker guardian hoglin husk magma_cube phantom piglin_brute pillager ravager silverfish stray vex vindicator witch zoglin zombie zombie_villager wither player trader_llama + +# entity.5000 = minecraft:lightning_bolt +entity.9001 = minecraft:boat +layer.translucent=slime diff --git a/shaders/final.fsh b/shaders/final.fsh new file mode 100644 index 0000000..78adec1 --- /dev/null +++ b/shaders/final.fsh @@ -0,0 +1,101 @@ +#version 120 +//Vignetting, applies bloom, applies exposure and tonemaps the final image +#extension GL_EXT_gpu_shader4 : enable +//#define BICUBIC_UPSCALING //Provides a better interpolation when using a render quality different of 1.0, slower +#define CONTRAST_ADAPTATIVE_SHARPENING +#define SHARPENING 0.35 //[0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 ] +#define SATURATION 0.00 // Negative values desaturates colors, Positive values saturates color, 0 is no change [-1.0 -0.98 -0.96 -0.94 -0.92 -0.9 -0.88 -0.86 -0.84 -0.82 -0.8 -0.78 -0.76 -0.74 -0.72 -0.7 -0.68 -0.66 -0.64 -0.62 -0.6 -0.58 -0.56 -0.54 -0.52 -0.5 -0.48 -0.46 -0.44 -0.42 -0.4 -0.38 -0.36 -0.34 -0.32 -0.3 -0.28 -0.26 -0.24 -0.22 -0.2 -0.18 -0.16 -0.14 -0.12 -0.1 -0.08 -0.06 -0.04 -0.02 0.0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.2 0.22 0.24 0.26 0.28 0.3 0.32 0.34 0.36 0.38 0.4 0.42 0.44 0.46 0.48 0.5 0.52 0.54 0.56 0.58 0.6 0.62 0.64 0.66 0.68 0.7 0.72 0.74 0.76 0.78 0.8 0.82 0.84 0.86 0.88 0.9 0.92 0.94 0.96 0.98 1.0 ] +#define CROSSTALK 0.0 // Desaturates bright colors and preserves saturation in darker areas (inverted if negative). Helps avoiding almsost fluorescent colors [-1.0 -0.98 -0.96 -0.94 -0.92 -0.9 -0.88 -0.86 -0.84 -0.82 -0.8 -0.78 -0.76 -0.74 -0.72 -0.7 -0.68 -0.66 -0.64 -0.62 -0.6 -0.58 -0.56 -0.54 -0.52 -0.5 -0.48 -0.46 -0.44 -0.42 -0.4 -0.38 -0.36 -0.34 -0.32 -0.3 -0.28 -0.26 -0.24 -0.22 -0.2 -0.18 -0.16 -0.14 -0.12 -0.1 -0.08 -0.06 -0.04 -0.02 0.0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.2 0.22 0.24 0.26 0.28 0.3 0.32 0.34 0.36 0.38 0.4 0.42 0.44 0.46 0.48 0.5 0.52 0.54 0.56 0.58 0.6 0.62 0.64 0.66 0.68 0.7 0.72 0.74 0.76 0.78 0.8 0.82 0.84 0.86 0.88 0.9 0.92 0.94 0.96 0.98 1.0 ] +varying vec2 texcoord; + +uniform sampler2D colortex7; +uniform sampler2D noisetex; +uniform vec2 texelSize; +uniform float viewWidth; +uniform float viewHeight; +uniform float frameTimeCounter; +uniform int frameCounter; +uniform int isEyeInWater; +#include "lib/color_transforms.glsl" +#include "lib/color_dither.glsl" +#include "/lib/res_params.glsl" +vec4 SampleTextureCatmullRom(sampler2D tex, vec2 uv, vec2 texSize ) +{ + // We're going to sample a a 4x4 grid of texels surrounding the target UV coordinate. We'll do this by rounding + // down the sample location to get the exact center of our "starting" texel. The starting texel will be at + // location [1, 1] in the grid, where [0, 0] is the top left corner. + vec2 samplePos = uv * texSize; + vec2 texPos1 = floor(samplePos - 0.5) + 0.5; + + // Compute the fractional offset from our starting texel to our original sample location, which we'll + // feed into the Catmull-Rom spline function to get our filter weights. + vec2 f = samplePos - texPos1; + + // Compute the Catmull-Rom weights using the fractional offset that we calculated earlier. + // These equations are pre-expanded based on our knowledge of where the texels will be located, + // which lets us avoid having to evaluate a piece-wise function. + vec2 w0 = f * ( -0.5 + f * (1.0 - 0.5*f)); + vec2 w1 = 1.0 + f * f * (-2.5 + 1.5*f); + vec2 w2 = f * ( 0.5 + f * (2.0 - 1.5*f) ); + vec2 w3 = f * f * (-0.5 + 0.5 * f); + + // Work out weighting factors and sampling offsets that will let us use bilinear filtering to + // simultaneously evaluate the middle 2 samples from the 4x4 grid. + vec2 w12 = w1 + w2; + vec2 offset12 = w2 / (w1 + w2); + + // Compute the final UV coordinates we'll use for sampling the texture + vec2 texPos0 = texPos1 - vec2(1.0); + vec2 texPos3 = texPos1 + vec2(2.0); + vec2 texPos12 = texPos1 + offset12; + + texPos0 *= texelSize; + texPos3 *= texelSize; + texPos12 *= texelSize; + + vec4 result = vec4(0.0); + result += texture2D(tex, vec2(texPos0.x, texPos0.y)) * w0.x * w0.y; + result += texture2D(tex, vec2(texPos12.x, texPos0.y)) * w12.x * w0.y; + result += texture2D(tex, vec2(texPos3.x, texPos0.y)) * w3.x * w0.y; + + result += texture2D(tex, vec2(texPos0.x, texPos12.y)) * w0.x * w12.y; + result += texture2D(tex, vec2(texPos12.x, texPos12.y)) * w12.x * w12.y; + result += texture2D(tex, vec2(texPos3.x, texPos12.y)) * w3.x * w12.y; + + result += texture2D(tex, vec2(texPos0.x, texPos3.y)) * w0.x * w3.y; + result += texture2D(tex, vec2(texPos12.x, texPos3.y)) * w12.x * w3.y; + result += texture2D(tex, vec2(texPos3.x, texPos3.y)) * w3.x * w3.y; + + return result; +} + + +void main() { + #ifdef BICUBIC_UPSCALING + vec3 col = SampleTextureCatmullRom(colortex7,texcoord,1.0/texelSize).rgb; + #else + vec3 col = texture2D(colortex7,texcoord).rgb; + #endif + + #ifdef CONTRAST_ADAPTATIVE_SHARPENING + //Weights : 1 in the center, 0.5 middle, 0.25 corners + vec3 albedoCurrent1 = texture2D(colortex7, texcoord + vec2(texelSize.x,texelSize.y)/MC_RENDER_QUALITY*0.5).rgb; + vec3 albedoCurrent2 = texture2D(colortex7, texcoord + vec2(texelSize.x,-texelSize.y)/MC_RENDER_QUALITY*0.5).rgb; + vec3 albedoCurrent3 = texture2D(colortex7, texcoord + vec2(-texelSize.x,-texelSize.y)/MC_RENDER_QUALITY*0.5).rgb; + vec3 albedoCurrent4 = texture2D(colortex7, texcoord + vec2(-texelSize.x,texelSize.y)/MC_RENDER_QUALITY*0.5).rgb; + + + vec3 m1 = -0.5/3.5*col + albedoCurrent1/3.5 + albedoCurrent2/3.5 + albedoCurrent3/3.5 + albedoCurrent4/3.5; + vec3 std = abs(col - m1) + abs(albedoCurrent1 - m1) + abs(albedoCurrent2 - m1) + + abs(albedoCurrent3 - m1) + abs(albedoCurrent3 - m1) + abs(albedoCurrent4 - m1); + float contrast = 1.0 - luma(std)/5.0; + col = col*(1.0+(SHARPENING+UPSCALING_SHARPNENING)*contrast) + - (SHARPENING+UPSCALING_SHARPNENING)/(1.0-0.5/3.5)*contrast*(m1 - 0.5/3.5*col); + #endif + + float lum = luma(col); + vec3 diff = col-lum; + col = col + diff*(-lum*CROSSTALK + SATURATION); + + gl_FragColor.rgb = clamp(int8Dither(col,texcoord),0.0,1.0); +} diff --git a/shaders/final.vsh b/shaders/final.vsh new file mode 100644 index 0000000..7aeb51b --- /dev/null +++ b/shaders/final.vsh @@ -0,0 +1,23 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + +#define FinalR 1.0 //[0.0 0.025315 0.051271 0.077884 0.105170 0.133148 0.161834 0.191246 0.221402 0.252322 0.284025 0.316530 0.349858 0.384030 0.419067 0.454991 0.491824 0.529590 0.568312 0.608014 0.648721 0.690458 0.733253 0.777130 0.822118 0.868245 0.915540 0.964032 1.013752 1.064731 1.117000 1.170592 1.225540 1.281880 1.339646 1.398875 1.459603 1.521868 1.585709 1.651167 1.718281 1.787095 1.857651 1.929992 2.004166 2.080216 2.158192 2.238142 2.320116 2.404166 2.490342 2.578701 2.669296 2.762185 2.857425 2.955076 3.055199 3.157857 3.263114 3.371035 3.481689 3.595143 3.711470 3.830741 3.953032 4.078419 4.206979 4.338795 4.473947 4.612521 4.754602 4.900281 5.049647 5.202795 5.359819 5.520819 5.685894 5.855148 6.028687 6.206619 6.389056 6.576110 6.767901 6.964546 7.166169 7.372897 7.584858 7.802185 8.025013 8.253482 8.487735 8.727919 8.974182 9.226680 9.485569 9.751013 10.02317 10.30222 10.58834 10.88170 11.18249 ] +#define FinalG 1.0 //[0.0 0.025315 0.051271 0.077884 0.105170 0.133148 0.161834 0.191246 0.221402 0.252322 0.284025 0.316530 0.349858 0.384030 0.419067 0.454991 0.491824 0.529590 0.568312 0.608014 0.648721 0.690458 0.733253 0.777130 0.822118 0.868245 0.915540 0.964032 1.013752 1.064731 1.117000 1.170592 1.225540 1.281880 1.339646 1.398875 1.459603 1.521868 1.585709 1.651167 1.718281 1.787095 1.857651 1.929992 2.004166 2.080216 2.158192 2.238142 2.320116 2.404166 2.490342 2.578701 2.669296 2.762185 2.857425 2.955076 3.055199 3.157857 3.263114 3.371035 3.481689 3.595143 3.711470 3.830741 3.953032 4.078419 4.206979 4.338795 4.473947 4.612521 4.754602 4.900281 5.049647 5.202795 5.359819 5.520819 5.685894 5.855148 6.028687 6.206619 6.389056 6.576110 6.767901 6.964546 7.166169 7.372897 7.584858 7.802185 8.025013 8.253482 8.487735 8.727919 8.974182 9.226680 9.485569 9.751013 10.02317 10.30222 10.58834 10.88170 11.18249 ] +#define FinalB 1.0 //[0.0 0.025315 0.051271 0.077884 0.105170 0.133148 0.161834 0.191246 0.221402 0.252322 0.284025 0.316530 0.349858 0.384030 0.419067 0.454991 0.491824 0.529590 0.568312 0.608014 0.648721 0.690458 0.733253 0.777130 0.822118 0.868245 0.915540 0.964032 1.013752 1.064731 1.117000 1.170592 1.225540 1.281880 1.339646 1.398875 1.459603 1.521868 1.585709 1.651167 1.718281 1.787095 1.857651 1.929992 2.004166 2.080216 2.158192 2.238142 2.320116 2.404166 2.490342 2.578701 2.669296 2.762185 2.857425 2.955076 3.055199 3.157857 3.263114 3.371035 3.481689 3.595143 3.711470 3.830741 3.953032 4.078419 4.206979 4.338795 4.473947 4.612521 4.754602 4.900281 5.049647 5.202795 5.359819 5.520819 5.685894 5.855148 6.028687 6.206619 6.389056 6.576110 6.767901 6.964546 7.166169 7.372897 7.584858 7.802185 8.025013 8.253482 8.487735 8.727919 8.974182 9.226680 9.485569 9.751013 10.02317 10.30222 10.58834 10.88170 11.18249 ] + +varying vec2 texcoord; +flat varying vec4 exposure; +uniform sampler2D colortex4; + +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + + gl_Position = ftransform(); + texcoord = gl_MultiTexCoord0.xy; + exposure=vec4(texelFetch2D(colortex4,ivec2(10,37),0).r*vec3(FinalR,FinalG,FinalB),texelFetch2D(colortex4,ivec2(10,37),0).r); +} diff --git a/shaders/gbuffers_all_particles.fsh b/shaders/gbuffers_all_particles.fsh new file mode 100644 index 0000000..d1cc609 --- /dev/null +++ b/shaders/gbuffers_all_particles.fsh @@ -0,0 +1,149 @@ +// #version 120 +varying vec4 lmtexcoord; +varying vec4 color; + +uniform sampler2D texture; +uniform sampler2DShadow shadow; +uniform sampler2D gaux1; +uniform sampler2D noisetex; +uniform vec3 sunVec; +flat varying vec3 WsunVec; +uniform float frameTimeCounter; +uniform ivec2 eyeBrightnessSmooth; + +uniform vec2 texelSize; +uniform float rainStrength; +uniform mat4 gbufferProjectionInverse; +uniform mat4 gbufferModelViewInverse; +uniform mat4 gbufferModelView; +uniform mat4 shadowModelView; +uniform mat4 shadowProjection; +uniform vec3 cameraPosition; + +#include "lib/Shadow_Params.glsl" +#include "/lib/res_params.glsl" +#include "lib/sky_gradient.glsl" +#include "lib/volumetricClouds.glsl" + +//faster and actually more precise than pow 2.2 +vec3 toLinear(vec3 sRGB){ + return sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878); +} + +#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) +#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) +vec3 toScreenSpace(vec3 p) { + vec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); + vec3 p3 = p * 2. - 1.; + vec4 fragposition = iProjDiag * p3.xyzz + gbufferProjectionInverse[3]; + return fragposition.xyz / fragposition.w; +} + +uniform int framemod8; +const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); + +float shadow2D_bicubic(sampler2DShadow tex, vec3 sc) +{ + vec2 uv = sc.xy*shadowMapResolution; + vec2 iuv = floor( uv ); + vec2 fuv = fract( uv ); + + float g0x = g0(fuv.x); + float g1x = g1(fuv.x); + float h0x = h0(fuv.x); + float h1x = h1(fuv.x); + float h0y = h0(fuv.y); + float h1y = h1(fuv.y); + + vec2 p0 = vec2(iuv.x + h0x, iuv.y + h0y)/shadowMapResolution - 0.5/shadowMapResolution; + vec2 p1 = vec2(iuv.x + h1x, iuv.y + h0y)/shadowMapResolution - 0.5/shadowMapResolution; + vec2 p2 = vec2(iuv.x + h0x, iuv.y + h1y)/shadowMapResolution - 0.5/shadowMapResolution; + vec2 p3 = vec2(iuv.x + h1x, iuv.y + h1y)/shadowMapResolution - 0.5/shadowMapResolution; + + return g0(fuv.y) * (g0x * shadow2D(tex, vec3(p0,sc.z)).x + + g1x * shadow2D(tex, vec3(p1,sc.z)).x) + + g1(fuv.y) * (g0x * shadow2D(tex, vec3(p2,sc.z)).x + + g1x * shadow2D(tex, vec3(p3,sc.z)).x); +} +float luma(vec3 color) { + return dot(color,vec3(0.299, 0.587, 0.114)); +} +vec3 normVec (vec3 vec){ + return vec*inversesqrt(dot(vec,vec)); +} + +float GetCloudShadow(vec3 eyePlayerPos){ + vec3 worldPos = (eyePlayerPos + cameraPosition) - Cloud_Height; + vec3 cloudPos = worldPos*Cloud_Size + WsunVec/abs(WsunVec.y) * ((3250 - 3250*0.35) - worldPos.y*Cloud_Size) ; + float shadow = getCloudDensity(cloudPos, 1); + // float shadow = (getCloudDensity(cloudPos, 1) + HighAltitudeClouds(cloudPos)) / 2.0; + + shadow = clamp(exp(-shadow*15),0.0,1.0); + + return shadow ; +} +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +/* DRAWBUFFERS:29 */ +void main() { + + vec4 TEXTURE = texture2D(texture, lmtexcoord.xy)*color; + +#ifndef WEATHER + gl_FragData[0] = TEXTURE; + vec2 tempOffset = offsets[framemod8]; + float avgBlockLum = luma(texture2DLod(texture, lmtexcoord.xy,128).rgb*color.rgb); + gl_FragData[0].rgb = clamp((gl_FragData[0].rgb)*pow(avgBlockLum,-0.33)*0.85,0.0,1.0); + vec3 albedo = toLinear(gl_FragData[0].rgb); + + vec3 fragpos = toScreenSpace(gl_FragCoord.xyz*vec3(texelSize/RENDER_SCALE,1.0)-vec3(vec2(tempOffset)*texelSize*0.5,0.0)); + vec3 p3 = mat3(gbufferModelViewInverse) * fragpos; + vec3 np3 = normVec(p3); + + vec3 DirectLightCol = texelFetch2D(gaux1,ivec2(6,37),0).rgb / 127.0; + DirectLightCol *= GetCloudShadow(p3); + + vec3 AmbientLight = texture2D(gaux1,(lmtexcoord.zw*15.+0.5)*texelSize).rgb * 8.0/150.0/3.0; + + //compute shadows only if not backface + float diffuseSun = 0.712; + if (diffuseSun > 0.001) { + vec3 p3 = mat3(gbufferModelViewInverse) * fragpos + gbufferModelViewInverse[3].xyz; + vec3 projectedShadowPosition = mat3(shadowModelView) * p3 + shadowModelView[3].xyz; + projectedShadowPosition = diagonal3(shadowProjection) * projectedShadowPosition + shadowProjection[3].xyz; + + //apply distortion + float distortFactor = calcDistort(projectedShadowPosition.xy); + projectedShadowPosition.xy *= distortFactor; + //do shadows only if on shadow map + if (abs(projectedShadowPosition.x) < 1.0-1.5/shadowMapResolution && abs(projectedShadowPosition.y) < 1.0-1.5/shadowMapResolution){ + + float diffthresh = 0.0002; + + projectedShadowPosition = projectedShadowPosition * vec3(0.5,0.5,0.5/6.0) + vec3(0.5,0.5,0.5); + + float shading = shadow2D_bicubic(shadow,vec3(projectedShadowPosition + vec3(0.0,0.0,-diffthresh*1.2))); + DirectLightCol *= shading; + } + } + + float phase = phaseg(clamp(dot(np3, WsunVec),0.0,1.0), 0.7) + 0.05 ; + float lightleakfix = clamp(eyeBrightnessSmooth.y/240.0,0.0,1.0); + vec3 DirectLight = DirectLightCol * phase * lightleakfix; + + gl_FragData[0].rgb = (AmbientLight + DirectLight) * albedo; +#endif + + gl_FragData[1].a = TEXTURE.a; // for bloomy rain + // gl_FragData[1].a = 1; +} \ No newline at end of file diff --git a/shaders/gbuffers_all_particles.vsh b/shaders/gbuffers_all_particles.vsh new file mode 100644 index 0000000..2424506 --- /dev/null +++ b/shaders/gbuffers_all_particles.vsh @@ -0,0 +1,74 @@ +// #version 120 +#extension GL_EXT_gpu_shader4 : enable +#include "/lib/res_params.glsl" + +/* +!! DO NOT REMOVE !! +This code is from Chocapic13' shaders +Read the terms of modification and sharing before changing something below please ! +!! DO NOT REMOVE !! +*/ + +varying vec4 lmtexcoord; +varying vec4 color; +varying vec4 normalMat; + +#ifdef MC_NORMAL_MAP + varying vec4 tangent; + attribute vec4 at_tangent; + varying vec3 FlatNormals; +#endif + +flat varying vec3 WsunVec; +flat varying vec4 lightCol; +uniform mat4 gbufferModelViewInverse; +uniform vec3 sunPosition; +uniform float sunElevation; +uniform sampler2D colortex4; + + +uniform vec2 texelSize; +uniform int framemod8; + const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + lmtexcoord.xy = (gl_MultiTexCoord0).xy; + + vec2 lmcoord = gl_MultiTexCoord1.xy/255.; + lmtexcoord.zw = lmcoord; + + gl_Position = ftransform(); + color = gl_Color; + + vec3 sc = texelFetch2D(colortex4,ivec2(6,37),0).rgb; + lightCol.a = float(sunElevation > 1e-5)*2-1.; + lightCol.rgb = sc; + + WsunVec = lightCol.a*normalize(mat3(gbufferModelViewInverse) *sunPosition); + + + FlatNormals = normalize(gl_NormalMatrix *gl_Normal); + #ifdef MC_NORMAL_MAP + tangent = vec4(normalize(gl_NormalMatrix *at_tangent.rgb),at_tangent.w); + #endif + + normalMat = vec4(normalize(gl_NormalMatrix *gl_Normal),1.0); + #ifdef TAA_UPSCALING + gl_Position.xy = gl_Position.xy * RENDER_SCALE + RENDER_SCALE * gl_Position.w - gl_Position.w; + #endif + #ifdef TAA + gl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize; + #endif +} diff --git a/shaders/gbuffers_all_solid.fsh b/shaders/gbuffers_all_solid.fsh new file mode 100644 index 0000000..705a9bd --- /dev/null +++ b/shaders/gbuffers_all_solid.fsh @@ -0,0 +1,465 @@ +#extension GL_EXT_gpu_shader4 : enable +#extension GL_ARB_shader_texture_lod : enable +//#define Specular_Reflections // reflections on blocks. REQUIRES A PBR RESOURCEPACK. +//#define POM +#define POM_MAP_RES 128.0 // [16.0 32.0 64.0 128.0 256.0 512.0 1024.0] Increase to improve POM quality +#define POM_DEPTH 0.1 // [0.025 0.05 0.075 0.1 0.125 0.15 0.20 0.25 0.30 0.50 0.75 1.0] //Increase to increase POM strength +#define MAX_ITERATIONS 50 // [5 10 15 20 25 30 40 50 60 70 80 90 100 125 150 200 400] //Improves quality at grazing angles (reduces performance) +#define MAX_DIST 25.0 // [5.0 10.0 15.0 20.0 25.0 30.0 40.0 50.0 60.0 70.0 80.0 90.0 100.0 125.0 150.0 200.0 400.0] //Increases distance at which POM is calculated +//#define USE_LUMINANCE_AS_HEIGHTMAP //Can generate POM on any texturepack (may look weird in some cases) +#define Texture_MipMap_Bias -1.00 // Uses a another mip level for textures. When reduced will increase texture detail but may induce a lot of shimmering. [-5.00 -4.75 -4.50 -4.25 -4.00 -3.75 -3.50 -3.25 -3.00 -2.75 -2.50 -2.25 -2.00 -1.75 -1.50 -1.25 -1.00 -0.75 -0.50 -0.25 0.00 0.25 0.50 0.75 1.00 1.25 1.50 1.75 2.00 2.25 2.50 2.75 3.00 3.25 3.50 3.75 4.00 4.25 4.50 4.75 5.00] +#define DISABLE_ALPHA_MIPMAPS //Disables mipmaps on the transparency of alpha-tested things like foliage, may cost a few fps in some cases + + +#define SSAO // screen-space ambient occlusion. +#define texture_ao // ambient occlusion on the texture + +#define Puddle_Size 1.0 // [0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5] +#ifdef Specular_Reflections + #define Puddles // yes +#else + // #define Puddles // yes +#endif +// #define Porosity + +#ifndef USE_LUMINANCE_AS_HEIGHTMAP +#ifndef MC_NORMAL_MAP +#undef POM +#endif +#endif + +#ifdef POM +#define MC_NORMAL_MAP +#endif + + +varying float VanillaAO; + +const float mincoord = 1.0/4096.0; +const float maxcoord = 1.0-mincoord; +const vec3 intervalMult = vec3(1.0, 1.0, 1.0/POM_DEPTH)/POM_MAP_RES * 1.0; + +const float MAX_OCCLUSION_DISTANCE = MAX_DIST; +const float MIX_OCCLUSION_DISTANCE = MAX_DIST*0.9; +const int MAX_OCCLUSION_POINTS = MAX_ITERATIONS; + +uniform vec2 texelSize; +uniform int framemod8; + +#ifdef POM +varying vec4 vtexcoordam; // .st for add, .pq for mul +varying vec4 vtexcoord; + +#endif +#include "/lib/res_params.glsl" +varying vec4 lmtexcoord; +varying vec4 color; +varying vec4 NoSeasonCol; +varying vec4 seasonColor; +uniform float far; +varying vec4 normalMat; +#ifdef MC_NORMAL_MAP +varying vec4 tangent; +uniform float wetness; +uniform sampler2D normals; +uniform sampler2D specular; +varying vec3 FlatNormals; +#endif + +#ifdef POM + vec2 dcdx = dFdx(vtexcoord.st*vtexcoordam.pq)*exp2(Texture_MipMap_Bias); + vec2 dcdy = dFdy(vtexcoord.st*vtexcoordam.pq)*exp2(Texture_MipMap_Bias); +#endif + +flat varying int lightningBolt; +uniform sampler2D texture; +uniform sampler2D colortex1;//albedo(rgb),material(alpha) RGBA16 +uniform float frameTimeCounter; +uniform int frameCounter; +uniform mat4 gbufferProjectionInverse; +uniform mat4 gbufferModelView; +uniform mat4 gbufferProjection; +uniform mat4 gbufferModelViewInverse; +uniform vec3 cameraPosition; +uniform float rainStrength; +uniform sampler2D noisetex;//depth +uniform sampler2D depthtex0; +in vec3 test_motionVectors; + +varying vec4 materialMask; + +flat varying vec4 TESTMASK; + +// float interleaved_gradientNoise(){ +// return fract(52.9829189*fract(0.06711056*gl_FragCoord.x + 0.00583715*gl_FragCoord.y)+frameTimeCounter*51.9521); +// } +float interleaved_gradientNoise(){ + vec2 alpha = vec2(0.75487765, 0.56984026); + vec2 coord = vec2(alpha.x * gl_FragCoord.x,alpha.y * gl_FragCoord.y)+ 1.0/1.6180339887 * frameCounter; + float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)); + return noise; +} + +float blueNoise(){ + return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); +} +float R2_dither(){ + vec2 alpha = vec2(0.75487765, 0.56984026); + return fract(alpha.x * gl_FragCoord.x + alpha.y * gl_FragCoord.y + 1.0/1.6180339887 * frameCounter) ; +} +vec2 decodeVec2(float a){ + const vec2 constant1 = 65535. / vec2( 256., 65536.); + const float constant2 = 256. / 255.; + return fract( a * constant1 ) * constant2 ; +} +mat3 inverse(mat3 m) { + float a00 = m[0][0], a01 = m[0][1], a02 = m[0][2]; + float a10 = m[1][0], a11 = m[1][1], a12 = m[1][2]; + float a20 = m[2][0], a21 = m[2][1], a22 = m[2][2]; + + float b01 = a22 * a11 - a12 * a21; + float b11 = -a22 * a10 + a12 * a20; + float b21 = a21 * a10 - a11 * a20; + + float det = a00 * b01 + a01 * b11 + a02 * b21; + + return mat3(b01, (-a22 * a01 + a02 * a21), (a12 * a01 - a02 * a11), + b11, (a22 * a00 - a02 * a20), (-a12 * a00 + a02 * a10), + b21, (-a21 * a00 + a01 * a20), (a11 * a00 - a01 * a10)) / det; +} + +vec3 viewToWorld(vec3 viewPosition) { + vec4 pos; + pos.xyz = viewPosition; + pos.w = 0.0; + pos = gbufferModelViewInverse * pos; + return pos.xyz; +} +vec3 worldToView(vec3 worldPos) { + vec4 pos = vec4(worldPos, 0.0); + pos = gbufferModelView * pos; + return pos.xyz; +} +vec4 encode (vec3 n, vec2 lightmaps){ + n.xy = n.xy / dot(abs(n), vec3(1.0)); + n.xy = n.z <= 0.0 ? (1.0 - abs(n.yx)) * sign(n.xy) : n.xy; + vec2 encn = clamp(n.xy * 0.5 + 0.5,-1.0,1.0); + + return vec4(encn,vec2(lightmaps.x,lightmaps.y)); +} + + +#ifdef MC_NORMAL_MAP + // vec3 applyBump(mat3 tbnMatrix, vec3 bump){ + // float bumpmult = 1.0; + // bump = bump * vec3(bumpmult, bumpmult, bumpmult) + vec3(0.0f, 0.0f, 1.0f - bumpmult); + // return normalize(bump*tbnMatrix); + // } + vec3 applyBump(mat3 tbnMatrix, vec3 bump, float puddle_values){ + float bumpmult = clamp(puddle_values,0.0,1.0); + bump = bump * vec3(bumpmult, bumpmult, bumpmult) + vec3(0.0f, 0.0f, 1.0f - bumpmult); + return normalize(bump*tbnMatrix); + } +#endif + +//encoding by jodie +float encodeVec2(vec2 a){ + const vec2 constant1 = vec2( 1., 256.) / 65535.; + vec2 temp = floor( a * 255. ); + return temp.x*constant1.x+temp.y*constant1.y; +} +float encodeVec2(float x,float y){ + return encodeVec2(vec2(x,y)); +} + +#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) +#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) + +vec3 toScreenSpace(vec3 p) { + vec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); + vec3 p3 = p * 2. - 1.; + vec4 fragposition = iProjDiag * p3.xyzz + gbufferProjectionInverse[3]; + return fragposition.xyz / fragposition.w; +} +vec3 toClipSpace3(vec3 viewSpacePosition) { + return projMAD(gbufferProjection, viewSpacePosition) / -viewSpacePosition.z * 0.5 + 0.5; +} +#ifdef POM +vec4 readNormal(in vec2 coord) +{ + return texture2DGradARB(normals,fract(coord)*vtexcoordam.pq+vtexcoordam.st,dcdx,dcdy); +} +vec4 readTexture(in vec2 coord) +{ + return texture2DGradARB(texture,fract(coord)*vtexcoordam.pq+vtexcoordam.st,dcdx,dcdy); +} +#endif +float luma(vec3 color) { + return dot(color,vec3(0.21, 0.72, 0.07)); +} + + +vec3 toLinear(vec3 sRGB){ + return sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878); +} + + +const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); +vec3 srgbToLinear2(vec3 srgb){ + return mix( + srgb / 12.92, + pow(.947867 * srgb + .0521327, vec3(2.4) ), + step( .04045, srgb ) + ); +} +vec3 blackbody2(float Temp) +{ + float t = pow(Temp, -1.5); + float lt = log(Temp); + + vec3 col = vec3(0.0); + col.x = 220000.0 * t + 0.58039215686; + col.y = 0.39231372549 * lt - 2.44549019608; + col.y = Temp > 6500. ? 138039.215686 * t + 0.72156862745 : col.y; + col.z = 0.76078431372 * lt - 5.68078431373; + col = clamp(col,0.0,1.0); + col = Temp < 1000. ? col * Temp * 0.001 : col; + + return srgbToLinear2(col); +} +float densityAtPosSNOW(in vec3 pos){ + pos /= 18.; + pos.xz *= 0.5; + vec3 p = floor(pos); + vec3 f = fract(pos); + f = (f*f) * (3.-2.*f); + vec2 uv = p.xz + f.xz + p.y * vec2(0.0,193.0); + vec2 coord = uv / 512.0; + vec2 xy = texture2D(noisetex, coord).yx; + return mix(xy.r,xy.g, f.y); +} +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +/* RENDERTARGETS: 1,7,8,13,15 */ +void main() { + + + float phi = 2 * 3.14159265359; + float noise = fract(fract(frameCounter * (1.0 / phi)) + interleaved_gradientNoise() ) ; + + vec3 normal = normalMat.xyz; + + #ifdef MC_NORMAL_MAP + vec3 tangent2 = normalize(cross(tangent.rgb,normal)*tangent.w); + mat3 tbnMatrix = mat3(tangent.x, tangent2.x, normal.x, + tangent.y, tangent2.y, normal.y, + tangent.z, tangent2.z, normal.z); + #endif + vec2 tempOffset=offsets[framemod8]; + + vec3 fragpos = toScreenSpace(gl_FragCoord.xyz*vec3(texelSize/RENDER_SCALE,1.0)-vec3(vec2(tempOffset)*texelSize*0.5,0.0)); + vec3 worldpos = mat3(gbufferModelViewInverse) * fragpos + gbufferModelViewInverse[3].xyz + cameraPosition; + + + float lightmap = clamp( (lmtexcoord.w-0.66) * 5.0,0.,1.); + + float rainfall = 0. ; + float Puddle_shape = 0.; + float puddle_shiny = 1.; + float puddle_normal = 0.; + + #ifndef ENTITIES + #ifdef WORLD + #ifdef Puddles + rainfall = rainStrength ; + Puddle_shape = 1.0 - max(texture2D(noisetex, worldpos.xz * (0.015 * Puddle_Size)).b - (1.0-lightmap) ,0.0); + puddle_shiny = clamp( pow(1.0-Puddle_shape,2.0)*2,0.25,1.) ; + puddle_normal = clamp( pow(Puddle_shape,5.0) * 50. ,0.,1.) ; + #endif + #endif + #endif + + #ifdef POM + // vec2 tempOffset=offsets[framemod8]; + vec2 adjustedTexCoord = fract(vtexcoord.st)*vtexcoordam.pq+vtexcoordam.st; + // vec3 fragpos = toScreenSpace(gl_FragCoord.xyz*vec3(texelSize/RENDER_SCALE,1.0)-vec3(vec2(tempOffset)*texelSize*0.5,0.0)); + vec3 viewVector = normalize(tbnMatrix*fragpos); + float dist = length(fragpos); + + gl_FragDepth = gl_FragCoord.z; + + #ifdef WORLD + if (dist < MAX_OCCLUSION_DISTANCE) { + + float depthmap = readNormal(vtexcoord.st).a; + + if ( viewVector.z < 0.0 && depthmap < 0.9999 && depthmap > 0.00001) { + + // vec3 interval = viewVector.xyz /-viewVector.z/MAX_OCCLUSION_POINTS*POM_DEPTH; + vec3 interval = (viewVector.xyz /-viewVector.z/MAX_OCCLUSION_POINTS * POM_DEPTH) * clamp(1.0-pow(depthmap,2),0.1,1.0) ; + + vec3 coord = vec3(vtexcoord.st, 1.0); + coord += interval; + + float sumVec = 0.5; + for (int loopCount = 0; (loopCount < MAX_OCCLUSION_POINTS) && (1.0 - POM_DEPTH + POM_DEPTH * readNormal(coord.st).a ) < coord.p && coord.p >= 0.0; ++loopCount) { + coord = coord+interval; + sumVec += 1; + } + + if (coord.t < mincoord) { + if (readTexture(vec2(coord.s,mincoord)).a == 0.0) { + coord.t = mincoord; + discard; + } + } + adjustedTexCoord = mix(fract(coord.st)*vtexcoordam.pq+vtexcoordam.st, adjustedTexCoord, max(dist-MIX_OCCLUSION_DISTANCE,0.0)/(MAX_OCCLUSION_DISTANCE-MIX_OCCLUSION_DISTANCE)); + + vec3 truePos = fragpos + sumVec*inverse(tbnMatrix)*interval; + // #ifdef Depth_Write_POM + gl_FragDepth = toClipSpace3(truePos).z; + // #endif + } + } + #endif + + // color + vec4 data0 = texture2DGradARB(texture, adjustedTexCoord.xy,dcdx,dcdy); + + #ifdef DISABLE_ALPHA_MIPMAPS + data0.a = texture2DGradARB(texture, adjustedTexCoord.xy,vec2(0.),vec2(0.0)).a; + #endif + + data0.rgb *= color.rgb; + float avgBlockLum = luma(texture2DLod(texture, adjustedTexCoord.xy,128).rgb*color.rgb); + data0.rgb = clamp(data0.rgb*pow(avgBlockLum,-0.33)*0.85,0.0,1.0); + + + #ifdef WORLD + if (data0.a > 0.1) data0.a = normalMat.a; + else data0.a = 0.0; + #endif + + #ifdef HAND + if (data0.a > 0.1) data0.a = 0.75; + else data0.a = 0.0; + #endif + + // normal + #ifdef MC_NORMAL_MAP + vec3 normalTex = texture2DGradARB(normals, adjustedTexCoord.xy, dcdx,dcdy).rgb; + normalTex.xy = normalTex.xy*2.0-1.0; + normalTex.z = clamp(sqrt(1.0 - dot(normalTex.xy, normalTex.xy)),0.0,1.0); + + normal = applyBump(tbnMatrix,normalTex, mix(1.0,puddle_normal,rainfall)); + #endif + + // specular + gl_FragData[2] = texture2DGradARB(specular, adjustedTexCoord.xy,dcdx,dcdy); + + // finalize + vec4 data1 = clamp(encode(viewToWorld(normal), lmtexcoord.zw),0.,1.0); + gl_FragData[0] = vec4(encodeVec2(data0.x,data1.x),encodeVec2(data0.y,data1.y),encodeVec2(data0.z,data1.z),encodeVec2(data1.w,data0.w)); + + gl_FragData[1].a = 0.0; + #else + + + // float Snow = texture2D(noisetex, worldpos.xz/100, Texture_MipMap_Bias).r; + // Snow = clamp( exp(pow(Snow,2) * -25) ,0,1) ; + // Snow *= clamp(pow(lmtexcoord.w,25)*5 ,0,1); + + // #ifdef ENTITIES + // Snow = 0; + // #endif + // #ifdef HAND + // Snow = 0; + // #endif + + // normal + #ifdef MC_NORMAL_MAP + vec4 normalTex = texture2D(normals, lmtexcoord.xy, Texture_MipMap_Bias).rgba; + normalTex.xy = normalTex.xy*2.0-1.0; + normalTex.z = clamp(sqrt(1.0 - dot(normalTex.xy, normalTex.xy)),0.0,1.0) ; + + normal = applyBump(tbnMatrix, normalTex.xyz, mix(1.0,puddle_normal, rainfall) ); + #endif + + // Snow *= clamp(viewToWorld(normal).y,0.0,1.0); + + + + // specular + vec4 specular = texture2D(specular, lmtexcoord.xy, Texture_MipMap_Bias).rgba; + vec4 specular_modded = vec4( max(specular.r,puddle_shiny), max(specular.g, puddle_shiny*0.1),specular.ba); + + gl_FragData[2].rgba = mix(specular, specular_modded, rainfall); + + // gl_FragData[2].rg = mix(gl_FragData[2].rg, vec2(0.8,0.3), Snow); + + + // color + vec4 data0 = texture2D(texture, lmtexcoord.xy, Texture_MipMap_Bias) * color ; + // data0.rgb *= pow(VanillaAO.r,25); + + #ifdef Puddles + + float porosity = specular.z >= 64.5/255.0 ? 0.0 : (specular.z*255.0/64.0)*0.65; + #ifndef Porosity + porosity = 0.5; + #endif + + data0.rgb = mix(data0.rgb, vec3(0), puddle_shiny*porosity*rainfall); + #endif + + float avgBlockLum = luma(texture2DLod(texture, lmtexcoord.xy,128).rgb*color.rgb); + data0.rgb = clamp(data0.rgb*pow(avgBlockLum,-0.33)*0.85,0.0,1.0); + + #ifndef ENTITIES + if(TESTMASK.r==255) data0.rgb = vec3(0); + #endif + + #ifdef DISABLE_ALPHA_MIPMAPS + data0.a = texture2DLod(texture,lmtexcoord.xy,0).a; + #endif + #ifdef WORLD + if (data0.a > 0.1) data0.a = normalMat.a; + else data0.a = 0.0; + + #endif + #ifdef HAND + if (data0.a > 0.1) data0.a = 0.75; + else data0.a = 0.0; + #endif + + // finalize + vec4 data1 = clamp(blueNoise()/255.0 + encode(viewToWorld(normal), lmtexcoord.zw),0.0,1.0); + gl_FragData[0] = vec4(encodeVec2(data0.x,data1.x), encodeVec2(data0.y,data1.y), encodeVec2(data0.z,data1.z), encodeVec2(data1.w,data0.w)); + + #ifdef WORLD + gl_FragData[1].a = 0.0; + #endif + + #endif + + gl_FragData[4] = vec4(FlatNormals* 0.5 + 0.5,VanillaAO); + + + // #ifdef ENTITIES + // #ifdef WORLD + // gl_FragData[3].xyz = test_motionVectors; + // #endif + // #endif +// gl_FragData[0].rgb = vec3(0,255,0); +} \ No newline at end of file diff --git a/shaders/gbuffers_all_solid.vsh b/shaders/gbuffers_all_solid.vsh new file mode 100644 index 0000000..291c26a --- /dev/null +++ b/shaders/gbuffers_all_solid.vsh @@ -0,0 +1,271 @@ +#extension GL_EXT_gpu_shader4 : enable +#include "/lib/res_params.glsl" +#define WAVY_PLANTS +#define WAVY_STRENGTH 1.0 //[0.1 0.25 0.5 0.75 1.0 1.25 1.5 1.75 2.0] +#define WAVY_SPEED 1.0 //[0.001 0.01 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 1.0 1.25 1.5 2.0 3.0 4.0] +#define SEPARATE_AO +//#define POM +//#define USE_LUMINANCE_AS_HEIGHTMAP //Can generate POM on any texturepack (may look weird in some cases) +// #define RTAO // I recommend turning ambientOcclusionLevel to zero with this on. like ssao, but rt, nicer, noiser, and slower. SSAO will turn OFF when this is ON +#define indirect_effect 1 // 0 = none. 1 = SSAO. 2 = RTAO. 3 = SSGI. [0 1 2 3] + +#define Variable_Penumbra_Shadows //Makes the shadows more blurry the more distant they are to objects (costs fps) +#define mob_SSS +#define misc_block_SSS + +#ifndef USE_LUMINANCE_AS_HEIGHTMAP +#ifndef MC_NORMAL_MAP +#undef POM +#endif +#endif + +#ifdef POM +#define MC_NORMAL_MAP +#endif + +/* +!! DO NOT REMOVE !! +This code is from Chocapic13' shaders +Read the terms of modification and sharing before changing something below please ! +!! DO NOT REMOVE !! +*/ +uniform int worldDay; +varying vec4 lmtexcoord; +varying vec4 color; +varying float VanillaAO; +varying vec4 NoSeasonCol; +varying vec4 normalMat; +#ifdef POM +varying vec4 vtexcoordam; // .st for add, .pq for mul +varying vec4 vtexcoord; +#endif + + +#ifdef MC_NORMAL_MAP + varying vec4 tangent; + attribute vec4 at_tangent; + varying vec3 FlatNormals; +#endif + +out vec3 test_motionVectors; +in vec3 at_velocity; + +uniform float frameTimeCounter; +const float PI48 = 150.796447372*WAVY_SPEED; +float pi2wt = PI48*frameTimeCounter; + +attribute vec4 mc_Entity; +uniform int blockEntityId; +uniform int entityId; + +varying vec4 materialMask; +flat varying vec4 TESTMASK; +flat varying int lightningBolt; + + + +uniform mat4 gbufferModelView; +uniform mat4 gbufferModelViewInverse; +attribute vec4 mc_midTexCoord; +uniform vec3 cameraPosition; +uniform vec2 texelSize; +uniform int framemod8; +const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); +#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) +#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) +vec4 toClipSpace3(vec3 viewSpacePosition) { + return vec4(projMAD(gl_ProjectionMatrix, viewSpacePosition),-viewSpacePosition.z); +} + +vec2 calcWave(in vec3 pos) { + + float magnitude = abs(sin(dot(vec4(frameTimeCounter, pos),vec4(1.0,0.005,0.005,0.005)))*0.5+0.72)*0.013; + vec2 ret = (sin(pi2wt*vec2(0.0063,0.0015)*4. - pos.xz + pos.y*0.05)+0.1)*magnitude; + + return ret; +} + +vec3 calcMovePlants(in vec3 pos) { + vec2 move1 = calcWave(pos ); + float move1y = -length(move1); + return vec3(move1.x,move1y,move1.y)*5.*WAVY_STRENGTH; +} + +vec3 calcWaveLeaves(in vec3 pos, in float fm, in float mm, in float ma, in float f0, in float f1, in float f2, in float f3, in float f4, in float f5) { + + float magnitude = abs(sin(dot(vec4(frameTimeCounter, pos),vec4(1.0,0.005,0.005,0.005)))*0.5+0.72)*0.013; + vec3 ret = (sin(pi2wt*vec3(0.0063,0.0224,0.0015)*1.5 - pos))*magnitude; + + return ret; +} + +vec3 calcMoveLeaves(in vec3 pos, in float f0, in float f1, in float f2, in float f3, in float f4, in float f5, in vec3 amp1, in vec3 amp2) { + vec3 move1 = calcWaveLeaves(pos , 0.0054, 0.0400, 0.0400, 0.0127, 0.0089, 0.0114, 0.0063, 0.0224, 0.0015) * amp1; + return move1*5.*WAVY_STRENGTH; +} +vec3 srgbToLinear2(vec3 srgb){ + return mix( + srgb / 12.92, + pow(.947867 * srgb + .0521327, vec3(2.4) ), + step( .04045, srgb ) + ); +} +vec3 blackbody2(float Temp) +{ + float t = pow(Temp, -1.5); + float lt = log(Temp); + + vec3 col = vec3(0.0); + col.x = 220000.0 * t + 0.58039215686; + col.y = 0.39231372549 * lt - 2.44549019608; + col.y = Temp > 6500. ? 138039.215686 * t + 0.72156862745 : col.y; + col.z = 0.76078431372 * lt - 5.68078431373; + col = clamp(col,0.0,1.0); + col = Temp < 1000. ? col * Temp * 0.001 : col; + + return srgbToLinear2(col); +} +// float luma(vec3 color) { +// return dot(color,vec3(0.21, 0.72, 0.07)); +// } + + #define SEASONS_VSH + #include "/lib/climate_settings.glsl" + +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + lmtexcoord.xy = (gl_MultiTexCoord0).xy; + FlatNormals = normalize(gl_NormalMatrix * gl_Normal); + TESTMASK = vec4(normalize(gl_NormalMatrix * gl_Normal), 1.0); + + TESTMASK.r = blockEntityId == 222 ? 255 : TESTMASK.r; + + + #ifdef ENTITIES + test_motionVectors = at_velocity; + #endif + + #ifdef POM + vec2 midcoord = (gl_TextureMatrix[0] * mc_midTexCoord).st; + vec2 texcoordminusmid = lmtexcoord.xy-midcoord; + vtexcoordam.pq = abs(texcoordminusmid)*2; + vtexcoordam.st = min(lmtexcoord.xy,midcoord-texcoordminusmid); + vtexcoord.xy = sign(texcoordminusmid)*0.5+0.5; + #endif + + vec2 lmcoord = gl_MultiTexCoord1.xy/255.; + lmtexcoord.zw = lmcoord; + vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz; + + color = gl_Color; + VanillaAO = 1.0 - clamp(color.a,0,1); + if (color.a < 0.3) color.a = 1.0; // fix vanilla ao on some custom block models. + + bool istopv = gl_MultiTexCoord0.t < mc_midTexCoord.t; + + #ifdef MC_NORMAL_MAP + tangent = vec4(normalize(gl_NormalMatrix *at_tangent.rgb),at_tangent.w); + #endif + + normalMat = vec4(normalize(gl_NormalMatrix *gl_Normal), 1.0); + +#ifdef ENTITIES + + #ifdef mob_SSS + #ifdef Variable_Penumbra_Shadows + normalMat.a = entityId == 1100 ? 0.65 : normalMat.a; + normalMat.a = entityId == 1200 ? 0.65 : normalMat.a; + #endif + #endif + + normalMat.a = 0.45; + + gl_Position = ftransform(); + +#endif + + + +#ifdef WORLD + + normalMat = vec4(normalize(gl_NormalMatrix *gl_Normal),mc_Entity.x == 10004 || mc_Entity.x == 10003 ? 0.5 : mc_Entity.x == 10001 ? 0.6 : 1.0); + + normalMat.a = mc_Entity.x == 10006 || mc_Entity.x == 200 ? 0.6 : normalMat.a; // 0.6 weak SSS + normalMat.a = blockEntityId == 10010 ? 0.65 : normalMat.a; // banners + + #ifdef misc_block_SSS + normalMat.a = mc_Entity.x == 10007 ? 0.55 : normalMat.a; // 0.55 abnormal block strong sss + #endif + + normalMat.a = mc_Entity.x == 10005 ? 0.8 : normalMat.a; + + + #ifdef WAVY_PLANTS + if ((mc_Entity.x == 10001 && istopv) && abs(position.z) < 64.0) { + vec3 worldpos = mat3(gbufferModelViewInverse) * position + gbufferModelViewInverse[3].xyz + cameraPosition; + worldpos.xyz += calcMovePlants(worldpos.xyz)*lmtexcoord.w - cameraPosition; + position = mat3(gbufferModelView) * worldpos + gbufferModelView[3].xyz; + } + + if (mc_Entity.x == 10003 && abs(position.z) < 64.0) { + vec3 worldpos = mat3(gbufferModelViewInverse) * position + gbufferModelViewInverse[3].xyz + cameraPosition; + worldpos.xyz += calcMoveLeaves(worldpos.xyz, 0.0040, 0.0064, 0.0043, 0.0035, 0.0037, 0.0041, vec3(1.0,0.2,1.0), vec3(0.5,0.1,0.5))*lmtexcoord.w - cameraPosition; + position = mat3(gbufferModelView) * worldpos + gbufferModelView[3].xyz; + } + #endif + + if (mc_Entity.x == 100 ){ + color.rgb = normalize(color.rgb)*sqrt(3.0); + normalMat.a = 0.9; + } + + gl_Position = toClipSpace3(position); + + + + + #ifdef SEPARATE_AO + + // #if indirect_effect == 1 || indirect_effect == 0 + // lmtexcoord.zw *= sqrt(color.a); + // #endif + + #else + color.rgb *= color.a; + #endif + + // if (mc_Entity.x == 10099 ) seasonColor.rgb = (gl_Color.rgb * blackbody2(sin(frameTimeCounter)*12000 + 14000)) * (1.0 - floor(luma(gl_Color.rgb)+(1.0/255.))); + +#endif + + // seasonColor = color; + NoSeasonCol.rgb = gl_Color.rgb; + #ifdef Seasons + #ifndef BLOCKENTITIES + #ifndef ENTITIES + YearCycleColor(color.rgb, gl_Color.rgb); + #endif + #endif + #endif + + #ifdef TAA_UPSCALING + gl_Position.xy = gl_Position.xy * RENDER_SCALE + RENDER_SCALE * gl_Position.w - gl_Position.w; + #endif + #ifdef TAA + gl_Position.xy += offsets[framemod8] * gl_Position.w * texelSize; + #endif + + +} diff --git a/shaders/gbuffers_all_translucent.fsh b/shaders/gbuffers_all_translucent.fsh new file mode 100644 index 0000000..f8627ee --- /dev/null +++ b/shaders/gbuffers_all_translucent.fsh @@ -0,0 +1,610 @@ +// #version 120 +#extension GL_EXT_gpu_shader4 : enable + +varying vec4 lmtexcoord; +varying vec4 color; +varying vec4 normalMat; +varying vec3 binormal; +uniform sampler2D normals; +varying vec3 tangent; +varying vec4 tangent_other; +varying vec3 viewVector; +varying float dist; +#include "/lib/res_params.glsl" + +#define CLOUDS_SHADOWS +#define VL_CLOUDS_SHADOWS // Casts shadows from clouds on VL (slow) +#define SCREENSPACE_REFLECTIONS //can be really expensive at high resolutions/render quality, especially on ice +#define SSR_STEPS 30 //[10 15 20 25 30 35 40 50 100 200 400] +#define SUN_MICROFACET_SPECULAR // If enabled will use realistic rough microfacet model, else will just reflect the sun. No performance impact. +#define USE_QUARTER_RES_DEPTH // Uses a quarter resolution depth buffer to raymarch screen space reflections, improves performance but may introduce artifacts +#define saturate(x) clamp(x,0.0,1.0) +#define Dirt_Amount 0.14 //How much dirt there is in water [0.0 0.04 0.08 0.12 0.16 0.2 0.24 0.28 0.32 0.36 0.4 0.44 0.48 0.52 0.56 0.6 0.64 0.68 0.72 0.76 0.8 0.84 0.88 0.92 0.96 1.0 1.04 1.08 1.12 1.16 1.2 1.24 1.28 1.32 1.36 1.4 1.44 1.48 1.52 1.56 1.6 1.64 1.68 1.72 1.76 1.8 1.84 1.88 1.92 1.96 2.0 ] + +#define Dirt_Scatter_R 0.6 //How much dirt diffuses red [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 ] +#define Dirt_Scatter_G 0.6 //How much dirt diffuses green [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 ] +#define Dirt_Scatter_B 0.6 //How much dirt diffuses blue [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 ] + +#define Dirt_Absorb_R 1.65 //How much dirt absorbs red [0.0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.2 0.22 0.24 0.26 0.28 0.3 0.32 0.34 0.36 0.38 0.4 0.42 0.44 0.46 0.48 0.5 0.52 0.54 0.56 0.58 0.6 0.62 0.64 0.66 0.68 0.7 0.72 0.74 0.76 0.78 0.8 0.82 0.84 0.86 0.88 0.9 0.92 0.94 0.96 0.98 1.0 1.02 1.04 1.06 1.08 1.1 1.12 1.14 1.16 1.18 1.2 1.22 1.24 1.26 1.28 1.3 1.32 1.34 1.36 1.38 1.4 1.42 1.44 1.46 1.48 1.5 1.52 1.54 1.56 1.58 1.6 1.62 1.64 1.66 1.68 1.7 1.72 1.74 1.76 1.78 1.8 1.82 1.84 1.86 1.88 1.9 1.92 1.94 1.96 1.98 2.0 ] +#define Dirt_Absorb_G 1.85 //How much dirt absorbs green [0.0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.2 0.22 0.24 0.26 0.28 0.3 0.32 0.34 0.36 0.38 0.4 0.42 0.44 0.46 0.48 0.5 0.52 0.54 0.56 0.58 0.6 0.62 0.64 0.66 0.68 0.7 0.72 0.74 0.76 0.78 0.8 0.82 0.84 0.86 0.88 0.9 0.92 0.94 0.96 0.98 1.0 1.02 1.04 1.06 1.08 1.1 1.12 1.14 1.16 1.18 1.2 1.22 1.24 1.26 1.28 1.3 1.32 1.34 1.36 1.38 1.4 1.42 1.44 1.46 1.48 1.5 1.52 1.54 1.56 1.58 1.6 1.62 1.64 1.66 1.68 1.7 1.72 1.74 1.76 1.78 1.8 1.82 1.84 1.86 1.88 1.9 1.92 1.94 1.96 1.98 2.0 ] +#define Dirt_Absorb_B 2.05 //How much dirt absorbs blue [0.0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.2 0.22 0.24 0.26 0.28 0.3 0.32 0.34 0.36 0.38 0.4 0.42 0.44 0.46 0.48 0.5 0.52 0.54 0.56 0.58 0.6 0.62 0.64 0.66 0.68 0.7 0.72 0.74 0.76 0.78 0.8 0.82 0.84 0.86 0.88 0.9 0.92 0.94 0.96 0.98 1.0 1.02 1.04 1.06 1.08 1.1 1.12 1.14 1.16 1.18 1.2 1.22 1.24 1.26 1.28 1.3 1.32 1.34 1.36 1.38 1.4 1.42 1.44 1.46 1.48 1.5 1.52 1.54 1.56 1.58 1.6 1.62 1.64 1.66 1.68 1.7 1.72 1.74 1.76 1.78 1.8 1.82 1.84 1.86 1.88 1.9 1.92 1.94 1.96 1.98 2.0 ] + +#define Water_Absorb_R 0.2629 //How much water absorbs red [0.0 0.0025 0.005 0.0075 0.01 0.0125 0.015 0.0175 0.02 0.0225 0.025 0.0275 0.03 0.0325 0.035 0.0375 0.04 0.0425 0.045 0.0475 0.05 0.0525 0.055 0.0575 0.06 0.0625 0.065 0.0675 0.07 0.0725 0.075 0.0775 0.08 0.0825 0.085 0.0875 0.09 0.0925 0.095 0.0975 0.1 0.1025 0.105 0.1075 0.11 0.1125 0.115 0.1175 0.12 0.1225 0.125 0.1275 0.13 0.1325 0.135 0.1375 0.14 0.1425 0.145 0.1475 0.15 0.1525 0.155 0.1575 0.16 0.1625 0.165 0.1675 0.17 0.1725 0.175 0.1775 0.18 0.1825 0.185 0.1875 0.19 0.1925 0.195 0.1975 0.2 0.2025 0.205 0.2075 0.21 0.2125 0.215 0.2175 0.22 0.2225 0.225 0.2275 0.23 0.2325 0.235 0.2375 0.24 0.2425 0.245 0.2475 0.25 ] +#define Water_Absorb_G 0.0565 //How much water absorbs green [0.0 0.0025 0.005 0.0075 0.01 0.0125 0.015 0.0175 0.02 0.0225 0.025 0.0275 0.03 0.0325 0.035 0.0375 0.04 0.0425 0.045 0.0475 0.05 0.0525 0.055 0.0575 0.06 0.0625 0.065 0.0675 0.07 0.0725 0.075 0.0775 0.08 0.0825 0.085 0.0875 0.09 0.0925 0.095 0.0975 0.1 0.1025 0.105 0.1075 0.11 0.1125 0.115 0.1175 0.12 0.1225 0.125 0.1275 0.13 0.1325 0.135 0.1375 0.14 0.1425 0.145 0.1475 0.15 0.1525 0.155 0.1575 0.16 0.1625 0.165 0.1675 0.17 0.1725 0.175 0.1775 0.18 0.1825 0.185 0.1875 0.19 0.1925 0.195 0.1975 0.2 0.2025 0.205 0.2075 0.21 0.2125 0.215 0.2175 0.22 0.2225 0.225 0.2275 0.23 0.2325 0.235 0.2375 0.24 0.2425 0.245 0.2475 0.25 ] +#define Water_Absorb_B 0.01011 //How much water absorbs blue [0.0 0.0025 0.005 0.0075 0.01 0.0125 0.015 0.0175 0.02 0.0225 0.025 0.0275 0.03 0.0325 0.035 0.0375 0.04 0.0425 0.045 0.0475 0.05 0.0525 0.055 0.0575 0.06 0.0625 0.065 0.0675 0.07 0.0725 0.075 0.0775 0.08 0.0825 0.085 0.0875 0.09 0.0925 0.095 0.0975 0.1 0.1025 0.105 0.1075 0.11 0.1125 0.115 0.1175 0.12 0.1225 0.125 0.1275 0.13 0.1325 0.135 0.1375 0.14 0.1425 0.145 0.1475 0.15 0.1525 0.155 0.1575 0.16 0.1625 0.165 0.1675 0.17 0.1725 0.175 0.1775 0.18 0.1825 0.185 0.1875 0.19 0.1925 0.195 0.1975 0.2 0.2025 0.205 0.2075 0.21 0.2125 0.215 0.2175 0.22 0.2225 0.225 0.2275 0.23 0.2325 0.235 0.2375 0.24 0.2425 0.245 0.2475 0.25 ] +#define Texture_MipMap_Bias -1.00 // Uses a another mip level for textures. When reduced will increase texture detail but may induce a lot of shimmering. [-5.00 -4.75 -4.50 -4.25 -4.00 -3.75 -3.50 -3.25 -3.00 -2.75 -2.50 -2.25 -2.00 -1.75 -1.50 -1.25 -1.00 -0.75 -0.50 -0.25 0.00 0.25 0.50 0.75 1.00 1.25 1.50 1.75 2.00 2.25 2.50 2.75 3.00 3.25 3.50 3.75 4.00 4.25 4.50 4.75 5.00] + +#define ambient_colortype 0 // 0 = temperature. 1 = rgb sliders [0 1] +#define ambient_temp 9000 // [1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 15000 50000] + +#define AmbientLight_R 0.91 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +#define AmbientLight_G 0.86 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +#define AmbientLight_B 1.0 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] + + +// #define BorderFog // aaaaaaaaaaaaaaaaaaaaaaa + +#define MIN_LIGHT_AMOUNT 1.0 //[0.0 0.5 1.0 1.5 2.0 3.0 4.0 5.0] + + +// #define Glass_Tint // multiply the background through glass by the color of the glass for a strong tint. + +// #define ambientLight_only // THIS IS A DEBUG VIEW. turn the sunlight off. DOES NOT increase performance, the shadows are still working in the background +//#define Vanilla_like_water // vanilla water texture along with shader water stuff +uniform sampler2D texture; +uniform sampler2D noisetex; +uniform sampler2DShadow shadow; +uniform sampler2D gaux2; +uniform sampler2D gaux1; +uniform sampler2D depthtex1; + +uniform vec4 lightCol; +uniform float nightVision; + +uniform vec3 sunVec; +uniform float frameTimeCounter; +uniform float lightSign; +uniform float near; +uniform float far; +uniform float moonIntensity; +uniform float sunIntensity; +uniform vec3 sunColor; +uniform vec3 nsunColor; +uniform vec3 upVec; +uniform float sunElevation; +uniform float fogAmount; +uniform vec2 texelSize; +uniform float rainStrength; +uniform float skyIntensityNight; +uniform float skyIntensity; +flat varying vec3 WsunVec; +uniform mat4 gbufferPreviousModelView; +uniform vec3 previousCameraPosition; +uniform int framemod8; +uniform sampler2D specular; +uniform int frameCounter; +uniform int isEyeInWater; + + + + + +#include "lib/Shadow_Params.glsl" +#include "lib/color_transforms.glsl" +#include "lib/projections.glsl" +#include "lib/sky_gradient.glsl" +#include "lib/waterBump.glsl" +#include "lib/clouds.glsl" +#include "lib/stars.glsl" +#include "lib/volumetricClouds.glsl" + + const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); +float interleaved_gradientNoise(float temporal){ + vec2 coord = gl_FragCoord.xy; + float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)+temporal); + return noise; +} +vec3 srgbToLinear2(vec3 srgb){ + return mix( + srgb / 12.92, + pow(.947867 * srgb + .0521327, vec3(2.4) ), + step( .04045, srgb ) + ); +} +vec3 blackbody2(float Temp) +{ + float t = pow(Temp, -1.5); + float lt = log(Temp); + + vec3 col = vec3(0.0); + col.x = 220000.0 * t + 0.58039215686; + col.y = 0.39231372549 * lt - 2.44549019608; + col.y = Temp > 6500. ? 138039.215686 * t + 0.72156862745 : col.y; + col.z = 0.76078431372 * lt - 5.68078431373; + col = clamp(col,0.0,1.0); + col = Temp < 1000. ? col * Temp * 0.001 : col; + + return srgbToLinear2(col); +} + +float blueNoise(){ + return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); +} +float invLinZ (float lindepth){ + return -((2.0*near/lindepth)-far-near)/(far-near); +} +float ld(float dist) { + return (2.0 * near) / (far + near - dist * (far - near)); +} +vec3 nvec3(vec4 pos){ + return pos.xyz/pos.w; +} + +vec4 nvec4(vec3 pos){ + return vec4(pos.xyz, 1.0); +} +vec3 rayTrace(vec3 dir,vec3 position,float dither, float fresnel, bool inwater){ + + float quality = mix(15,SSR_STEPS,fresnel); + vec3 clipPosition = toClipSpace3(position); + float rayLength = ((position.z + dir.z * far*sqrt(3.)) > -near) ? + (-near -position.z) / dir.z : far*sqrt(3.); + vec3 direction = normalize(toClipSpace3(position+dir*rayLength)-clipPosition); //convert to clip space + direction.xy = normalize(direction.xy); + + //get at which length the ray intersects with the edge of the screen + vec3 maxLengths = (step(0.,direction)-clipPosition) / direction; + float mult = min(min(maxLengths.x,maxLengths.y),maxLengths.z); + + + vec3 stepv = direction * mult / quality*vec3(RENDER_SCALE,1.0); + + + vec3 spos = clipPosition*vec3(RENDER_SCALE,1.0) + stepv*dither; + float minZ = clipPosition.z; + float maxZ = spos.z+stepv.z*0.5; + + spos.xy += offsets[framemod8]*texelSize*0.5/RENDER_SCALE; + + float dist = 1.0 + clamp(position.z*position.z/50.0,0,2); // shrink sample size as distance increases + for (int i = 0; i <= int(quality); i++) { + #ifdef USE_QUARTER_RES_DEPTH + // decode depth buffer + float sp = sqrt(texelFetch2D(gaux1,ivec2(spos.xy/texelSize/4),0).w/65000.0); + sp = invLinZ(sp); + + if(sp <= max(maxZ,minZ) && sp >= min(maxZ,minZ)) return vec3(spos.xy/RENDER_SCALE,sp); + #else + float sp = texelFetch2D(depthtex1,ivec2(spos.xy/texelSize),0).r; + if(sp <= max(maxZ,minZ) && sp >= min(maxZ,minZ)) return vec3(spos.xy/RENDER_SCALE,sp); + + + #endif + + spos += stepv; + //small bias + minZ = maxZ-(0.0001/dist)/ld(spos.z); + if(inwater) minZ = maxZ-0.0004/ld(spos.z); + maxZ += stepv.z; + } + + return vec3(1.1); +} + + +float facos(float sx){ + float x = clamp(abs( sx ),0.,1.); + float a = sqrt( 1. - x ) * ( -0.16882 * x + 1.56734 ); + return sx > 0. ? a : pi - a; +} + + + + + float bayer2(vec2 a){ + a = floor(a); + return fract(dot(a,vec2(0.5,a.y*0.75))); +} + +float cdist(vec2 coord) { + return max(abs(coord.s-0.5),abs(coord.t-0.5))*2.0; +} + + #define PW_DEPTH 0.0 //[0.5 1.0 1.5 2.0 2.5 3.0] + #define PW_POINTS 1 //[2 4 6 8 16 32] + #define bayer4(a) (bayer2( .5*(a))*.25+bayer2(a)) +#define bayer8(a) (bayer4( .5*(a))*.25+bayer2(a)) +#define bayer16(a) (bayer8( .5*(a))*.25+bayer2(a)) +#define bayer32(a) (bayer16(.5*(a))*.25+bayer2(a)) +#define bayer64(a) (bayer32(.5*(a))*.25+bayer2(a)) +#define bayer128(a) fract(bayer64(.5*(a))*.25+bayer2(a)) +vec3 getParallaxDisplacement(vec3 posxz, float iswater,float bumpmult,vec3 viewVec) { + float waveZ = mix(20.0,0.25,iswater); + float waveM = mix(0.0,4.0,iswater); + + vec3 parallaxPos = posxz; + vec2 vec = viewVector.xy * (1.0 / float(PW_POINTS)) * 22.0 * PW_DEPTH; + float waterHeight = getWaterHeightmap(posxz.xz, waveM, waveZ, iswater) ; + + parallaxPos.xz += waterHeight * vec; + + return parallaxPos; + +} +vec2 tapLocation(int sampleNumber,int nb, float nbRot,float jitter,float distort) +{ + float alpha = (sampleNumber+jitter)/nb; + float angle = jitter*6.28 + alpha * nbRot * 6.28; + + float sin_v, cos_v; + + sin_v = sin(angle); + cos_v = cos(angle); + + return vec2(cos_v, sin_v)*sqrt(alpha); +} +//Low discrepancy 2D sequence, integration error is as low as sobol but easier to compute : http://extremelearning.com.au/unreasonable-effectiveness-of-quasirandom-sequences/ +vec2 R2_samples(int n){ + vec2 alpha = vec2(0.75487765, 0.56984026); + return fract(alpha * n); +} +vec4 hash44(vec4 p4) +{ + p4 = fract(p4 * vec4(.1031, .1030, .0973, .1099)); + p4 += dot(p4, p4.wzxy+33.33); + return fract((p4.xxyz+p4.yzzw)*p4.zywx); +} +vec3 TangentToWorld(vec3 N, vec3 H) +{ + vec3 UpVector = abs(N.z) < 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(1.0, 0.0, 0.0); + vec3 T = normalize(cross(UpVector, N)); + vec3 B = cross(N, T); + + return vec3((T * H.x) + (B * H.y) + (N * H.z)); +} +float GGX (vec3 n, vec3 v, vec3 l, float r, float F0) { + r*=r;r*=r; + + vec3 h = l + v; + float hn = inversesqrt(dot(h, h)); + + float dotLH = clamp(dot(h,l)*hn,0.,1.); + float dotNH = clamp(dot(h,n)*hn,0.,1.); + float dotNL = clamp(dot(n,l),0.,1.); + float dotNHsq = dotNH*dotNH; + + float denom = dotNHsq * r - dotNHsq + 1.; + float D = r / (3.141592653589793 * denom * denom); + float F = F0 + (1. - F0) * exp2((-5.55473*dotLH-6.98316)*dotLH); + float k2 = .25 * r; + + return dotNL * D * F / (dotLH*dotLH*(1.0-k2)+k2); +} + + vec3 applyBump(mat3 tbnMatrix, vec3 bump){ + float bumpmult = 1.0; + bump = bump * vec3(bumpmult, bumpmult, bumpmult) + vec3(0.0f, 0.0f, 1.0f - bumpmult); + return normalize(bump*tbnMatrix); + } + +#define fsign(a) (clamp((a)*1e35,0.,1.)*2.-1.) +float triangularize(float dither) +{ + float center = dither*2.0-1.0; + dither = center*inversesqrt(abs(center)); + return clamp(dither-fsign(center),0.0,1.0); +} +vec3 fp10Dither(vec3 color,float dither){ + const vec3 mantissaBits = vec3(6.,6.,5.); + vec3 exponent = floor(log2(color)); + return color + dither*exp2(-mantissaBits)*exp2(exponent); +} +float R2_dither(){ + vec2 alpha = vec2(0.75487765, 0.56984026); + return fract(alpha.x * gl_FragCoord.x + alpha.y * gl_FragCoord.y + 1.0/1.6180339887 * frameCounter) ; +} +float interleaved_gradientNoise(){ + vec2 coord = gl_FragCoord.xy + (frameCounter%40000); + // vec2 coord = gl_FragCoord.xy + frameTimeCounter; + // vec2 coord = gl_FragCoord.xy; + float noise = fract( 52.9829189 * fract( (coord.x * 0.06711056) + (coord.y * 0.00583715)) ); + return noise ; +} +//encoding by jodie +float encodeVec2(vec2 a){ + const vec2 constant1 = vec2( 1., 256.) / 65535.; + vec2 temp = floor( a * 255. ); + return temp.x*constant1.x+temp.y*constant1.y; +} +float encodeVec2(float x,float y){ + return encodeVec2(vec2(x,y)); +} +vec3 viewToWorld(vec3 viewPosition) { + vec4 pos; + pos.xyz = viewPosition; + pos.w = 0.0; + pos = gbufferModelViewInverse * pos; + return pos.xyz; +} +vec3 worldToView(vec3 worldPos) { + vec4 pos = vec4(worldPos, 0.0); + pos = gbufferModelView * pos; + return pos.xyz; +} +vec4 encode (vec3 n, vec2 lightmaps){ + n.xy = n.xy / dot(abs(n), vec3(1.0)); + n.xy = n.z <= 0.0 ? (1.0 - abs(n.yx)) * sign(n.xy) : n.xy; + vec2 encn = clamp(n.xy * 0.5 + 0.5,-1.0,1.0); + + return vec4(encn,vec2(lightmaps.x,lightmaps.y)); +} + + + + +float square(float x){ + return x*x; +} +float g(float NdotL, float roughness){ + float alpha = square(max(roughness, 0.02)); + return 2.0 * NdotL / (NdotL + sqrt(square(alpha) + (1.0 - square(alpha)) * square(NdotL))); +} +float gSimple(float dp, float roughness){ + float k = roughness + 1; + k *= k/8.0; + return dp / (dp * (1.0-k) + k); +} + +vec3 GGX2(vec3 n, vec3 v, vec3 l, float r, vec3 F0,float fresnel) { + + float roughness = r; + + float alpha = square(roughness) + 1e-4; // when roughness is zero it fucks up + + vec3 h = normalize(l + v) * mix(1.000, 1.0025, pow(fresnel,2) ); + + float dotLH = clamp(dot(h,l),0.,1.); + float dotNH = clamp(dot(h,n),0.,1.); + float dotNL = clamp(dot(n,l),0.,1.); + float dotNV = clamp(dot(n,v),0.,1.); + float dotVH = clamp(dot(h,v),0.,1.); + + + float D = alpha / (0.0541592653589793*square(square(dotNH) * (alpha - 1.0) + 1.0)); + float G = gSimple(dotNV, roughness) * gSimple(dotNL, roughness); + vec3 F = F0 + (1. - F0) * exp2((-5.55473*dotVH-6.98316)*dotVH); + + return dotNL * F * (G * D / (4 * dotNV * dotNL + 1e-7)); +} + +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +/* RENDERTARGETS:2,7,1,11,13,14 */ +void main() { + if (gl_FragCoord.x * texelSize.x < RENDER_SCALE.x && gl_FragCoord.y * texelSize.y < RENDER_SCALE.y ) { + vec2 tempOffset=offsets[framemod8]; + float iswater = normalMat.w; + vec3 fragC = gl_FragCoord.xyz*vec3(texelSize,1.0); + vec3 fragpos = toScreenSpace(gl_FragCoord.xyz*vec3(texelSize/RENDER_SCALE,1.0)-vec3(vec2(tempOffset)*texelSize*0.5,0.0)); + gl_FragData[0] = texture2D(texture, lmtexcoord.xy,-5)*color; + float avgBlockLum = luma(texture2DLod(texture, lmtexcoord.xy,128).rgb*color.rgb); + gl_FragData[0].rgb = clamp((gl_FragData[0].rgb)*pow(avgBlockLum,-0.33)*0.85,0.0,1.0); + + vec3 albedo = toLinear(gl_FragData[0].rgb); + + + #ifndef Vanilla_like_water + if (iswater > 0.4) { + albedo = vec3(1.0); + gl_FragData[0] = vec4(0.42,0.6,0.7,0.7); + } + if (iswater > 0.9) { + gl_FragData[0] = vec4(vec3(0.0),1./255.); + } + #endif + + #ifdef Vanilla_like_water + if (iswater > 0.5) { + gl_FragData[0].a = luma(albedo.rgb); + albedo = color.rgb; + } + #endif + + gl_FragData[4] = vec4(albedo, gl_FragData[0].a); + + + vec3 normal = normalMat.xyz; + + vec3 p3 = mat3(gbufferModelViewInverse) * fragpos + gbufferModelViewInverse[3].xyz; + mat3 tbnMatrix = mat3(tangent.x, binormal.x, normal.x, + tangent.y, binormal.y, normal.y, + tangent.z, binormal.z, normal.z); + if (iswater > 0.4){ + float bumpmult = 1.; + vec3 posxz = p3+cameraPosition; + posxz.xz-=posxz.y; + vec3 bump; + + + posxz.xyz = getParallaxDisplacement(posxz,iswater,bumpmult,normalize(tbnMatrix*fragpos)); + + bump = normalize(getWaveHeight(posxz.xz,iswater)); + bump = bump * vec3(bumpmult, bumpmult, bumpmult) + vec3(0.0f, 0.0f, 1.0f - bumpmult); + normal = normalize(bump * tbnMatrix); + }else { + vec3 normalTex = texture2D(normals, lmtexcoord.xy, Texture_MipMap_Bias).rgb; + + normalTex.xy = normalTex.xy*2.0-1.0; + normalTex.z = clamp(sqrt(1.0 - dot(normalTex.xy, normalTex.xy)),0.0,1.0); + normal = applyBump(tbnMatrix,normalTex); + } + + vec4 data0 = vec4(1); + vec4 data1 = clamp( encode(viewToWorld(normal), lmtexcoord.zw),0.0,1.0); + gl_FragData[3] = vec4(encodeVec2(data0.x,data1.x), encodeVec2(data0.y,data1.y), encodeVec2(data0.z,data1.z), encodeVec2(data1.w,data0.w)); + gl_FragData[5] = vec4(encodeVec2(lmtexcoord.a,lmtexcoord.a), encodeVec2(lmtexcoord.a,lmtexcoord.a), encodeVec2(lmtexcoord.a,lmtexcoord.a), encodeVec2(lmtexcoord.a,lmtexcoord.a)); + + float NdotL = lightSign*dot(normal,sunVec); + float NdotU = dot(upVec,normal); + float diffuseSun = clamp(NdotL,0.0f,1.0f); + diffuseSun = clamp((-15 + diffuseSun*255.0) / 240.0 ,0.0,1.0); + + vec3 direct = texelFetch2D(gaux1,ivec2(6,37),0).rgb/127.0; + #ifdef ambientLight_only + direct = vec3(0); + #endif + + + float shading = 1.0; + float cloudShadow = 1.0; + //compute shadows only if not backface + if (diffuseSun > 0.001) { + vec3 p3 = mat3(gbufferModelViewInverse) * fragpos + gbufferModelViewInverse[3].xyz; + vec3 projectedShadowPosition = mat3(shadowModelView) * p3 + shadowModelView[3].xyz; + projectedShadowPosition = diagonal3(shadowProjection) * projectedShadowPosition + shadowProjection[3].xyz; + + //apply distortion + float distortFactor = calcDistort(projectedShadowPosition.xy); + projectedShadowPosition.xy *= distortFactor; + //do shadows only if on shadow map + if (abs(projectedShadowPosition.x) < 1.0-1.5/shadowMapResolution && abs(projectedShadowPosition.y) < 1.0-1.5/shadowMapResolution){ + const float threshMul = max(2048.0/shadowMapResolution*shadowDistance/128.0,0.95); + float distortThresh = (sqrt(1.0-diffuseSun*diffuseSun)/diffuseSun+0.7)/distortFactor; + float diffthresh = distortThresh/6000.0*threshMul; + + projectedShadowPosition = projectedShadowPosition * vec3(0.5,0.5,0.5/6.0) + vec3(0.5,0.5,0.5); + + shading = 0.0; + float noise = blueNoise(); + float rdMul = 4.0/shadowMapResolution; + for(int i = 0; i < 9; i++){ + vec2 offsetS = tapLocation(i,9, 1.618,noise,0.0); + + float weight = 1.0+(i+noise)*rdMul/9.0*shadowMapResolution; + shading += shadow2D(shadow,vec3(projectedShadowPosition + vec3(rdMul*offsetS,-diffthresh*weight))).x/9.0; + } + direct *= shading; + } + + + #ifdef VOLUMETRIC_CLOUDS + #ifdef CLOUDS_SHADOWS + vec3 campos = (p3 + cameraPosition)-319 ; + // get cloud position + vec3 cloudPos = campos*Cloud_Size + WsunVec/abs(WsunVec.y) * (2250 - campos.y*Cloud_Size); + // get the cloud density and apply it + cloudShadow = getCloudDensity(cloudPos, 1); + // cloudShadow = exp(-cloudShadow*sqrt(cloudDensity)*25); + + cloudShadow = clamp(exp(-cloudShadow*10),0,1); + + // make these turn to zero when occluded by the cloud shadow + direct *= cloudShadow; + #endif + #endif + } + + + vec3 ambientLight = (texture2D(gaux1,(lmtexcoord.zw*15.+0.5)*texelSize).rgb * 2.0) * 8./150./3.; + + direct *= (iswater > 0.9 ? 0.2: 1.0)*diffuseSun*lmtexcoord.w; + + vec3 directLight = direct; + + vec3 color = vec3(0); + + + color += ambientLight ; + color += directLight; + + #ifdef Glass_Tint + float alphashit = min(pow(gl_FragData[0].a,2.0),1.0); + color *= alphashit; + #endif + + color *= albedo; + + vec2 specularstuff = texture2D(specular, lmtexcoord.xy, Texture_MipMap_Bias).rg; + specularstuff = iswater > 0.0 && specularstuff.r > 0.0 && specularstuff.g < 0.9 ? specularstuff : vec2(1.0,0.02); + + if (iswater > 0.0){ + + float roughness = pow(1.0-specularstuff.r,2.0); + float f0 = 0; + + float F0 = f0; + + vec3 reflectedVector = reflect(normalize(fragpos), normal); + float normalDotEye = dot(normal, normalize(fragpos)); + float fresnel = pow(clamp(1.0 + normalDotEye,0.0,1.0), 5.0); + + // snells window looking thing + if(isEyeInWater == 1 && iswater > 0.99) fresnel = clamp(pow(1.66 + normalDotEye,25),0.02,1.0); + + fresnel = mix(F0, 1.0, fresnel); + float indoors = clamp((lmtexcoord.w-0.6)*5.0, 0.0,1.0); + vec3 wrefl = mat3(gbufferModelViewInverse)*reflectedVector; + + vec3 sky_c = skyCloudsFromTex(wrefl,gaux1).rgb / 150. * 5. ; + sky_c.rgb *= indoors; + + float visibilityFactor = clamp(exp2((pow(roughness,3.0) / F0) * -4),0,1); + + sky_c = mix(sky_c,color,(1.0-indoors)) ; + + vec4 reflection = vec4(0.); + #ifdef SCREENSPACE_REFLECTIONS + vec3 rtPos = rayTrace(reflectedVector,fragpos.xyz, interleaved_gradientNoise(), fresnel, isEyeInWater == 1); + if (rtPos.z <1.){ + vec3 previousPosition = mat3(gbufferModelViewInverse) * toScreenSpace(rtPos) + gbufferModelViewInverse[3].xyz + cameraPosition-previousCameraPosition; + previousPosition = mat3(gbufferPreviousModelView) * previousPosition + gbufferPreviousModelView[3].xyz; + previousPosition.xy = projMAD(gbufferPreviousProjection, previousPosition).xy / -previousPosition.z * 0.5 + 0.5; + if (previousPosition.x > 0.0 && previousPosition.y > 0.0 && previousPosition.x < 1.0 && previousPosition.x < 1.0) { + reflection.a = 1.0; + reflection.rgb = texture2D(gaux2,previousPosition.xy).rgb; + } + } + #endif + + if(isEyeInWater == 1 ) sky_c.rgb = color.rgb*lmtexcoord.w; + + reflection.rgb = mix(sky_c.rgb, reflection.rgb, reflection.a); + + vec3 sunSpec = shading*directLight * GGX2(normal, -normalize(fragpos), lightSign*sunVec, roughness, vec3(f0), fresnel) ; + + sunSpec *= max(cloudShadow-0.5,0.0); + + vec3 reflected = reflection.rgb*fresnel + sunSpec ; + + // reflected = vec3(0); + + float alpha0 = gl_FragData[0].a; + + // //correct alpha channel with fresnel + gl_FragData[0].a = -gl_FragData[0].a*fresnel+gl_FragData[0].a+fresnel; + gl_FragData[0].rgb = clamp(color/gl_FragData[0].a*alpha0*(1.0-fresnel)*0.1+reflected/gl_FragData[0].a*0.1,0.0,65100.0); + if (gl_FragData[0].r > 65000.) gl_FragData[0].rgba = vec4(0.); + + #ifdef BorderFog + float fog = 1.0 - clamp( exp2(-pow(length(fragpos / far),10.)*3.0) ,0.0,1.0); + gl_FragData[0].a = mix(gl_FragData[0].a, 0.0, fog); + #endif + + } + else + gl_FragData[0].rgb = color*.1; + + gl_FragData[1] = vec4(albedo,iswater); + + } +} diff --git a/shaders/gbuffers_all_translucent.vsh b/shaders/gbuffers_all_translucent.vsh new file mode 100644 index 0000000..dbae161 --- /dev/null +++ b/shaders/gbuffers_all_translucent.vsh @@ -0,0 +1,116 @@ +// #version 120 +#extension GL_EXT_gpu_shader4 : enable + +#include "/lib/res_params.glsl" + + +/* +!! DO NOT REMOVE !! +This code is from Chocapic13' shaders +Read the terms of modification and sharing before changing something below please ! +!! DO NOT REMOVE !! +*/ + +varying vec4 lmtexcoord; +varying vec4 color; +varying vec4 normalMat; +varying vec3 binormal; +varying vec3 tangent; +varying float dist; +uniform mat4 gbufferModelViewInverse; +varying vec3 viewVector; + +flat varying int glass; + +attribute vec4 at_tangent; +attribute vec4 mc_Entity; + +uniform sampler2D colortex4; +uniform vec3 sunPosition; +flat varying vec3 WsunVec; +uniform float sunElevation; + +varying vec4 tangent_other; +#define SHADOW_MAP_BIAS 0.8 + +flat varying vec4 lightCol; //main light source color (rgb),used light source(1=sun,-1=moon) + + + +uniform vec2 texelSize; +uniform int framemod8; + const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); +#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) +#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) +vec4 toClipSpace3(vec3 viewSpacePosition) { + return vec4(projMAD(gl_ProjectionMatrix, viewSpacePosition),-viewSpacePosition.z); +} +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + lmtexcoord.xy = (gl_MultiTexCoord0).xy; + vec2 lmcoord = gl_MultiTexCoord1.xy/255.; + lmtexcoord.zw = lmcoord; + + vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz; + gl_Position = toClipSpace3(position); + color = gl_Color; + float mat = 0.0; + if(mc_Entity.x == 8.0 || mc_Entity.x == 9.0) { + mat = 1.0; + + gl_Position.z -= 1e-4; + } + + + if (mc_Entity.x == 10002) mat = 0.01; + if (mc_Entity.x == 72) mat = 0.5; + + // if (mc_Entity.x == 8) mat = 0.1; + + normalMat = vec4(normalize( gl_NormalMatrix*gl_Normal),mat); + + + + tangent_other = vec4(normalize(gl_NormalMatrix * at_tangent.rgb),normalMat.a); + + tangent = normalize( gl_NormalMatrix *at_tangent.rgb); + binormal = normalize(cross(tangent.rgb,normalMat.xyz)*at_tangent.w); + + mat3 tbnMatrix = mat3(tangent.x, binormal.x, normalMat.x, + tangent.y, binormal.y, normalMat.y, + tangent.z, binormal.z, normalMat.z); + + dist = length(gl_ModelViewMatrix * gl_Vertex); + + viewVector = ( gl_ModelViewMatrix * gl_Vertex).xyz; + viewVector = normalize(tbnMatrix * viewVector); + + + + #ifdef TAA_UPSCALING + gl_Position.xy = gl_Position.xy * RENDER_SCALE + RENDER_SCALE * gl_Position.w - gl_Position.w; + #endif + #ifdef TAA + gl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize; + #endif + + vec3 sc = texelFetch2D(colortex4,ivec2(6,37),0).rgb; + + + lightCol.a = float(sunElevation > 1e-5)*2-1.; + lightCol.rgb = sc; + + WsunVec = lightCol.a*normalize(mat3(gbufferModelViewInverse) *sunPosition); +} diff --git a/shaders/gbuffers_armor_glint.fsh b/shaders/gbuffers_armor_glint.fsh new file mode 100644 index 0000000..d2a0cfd --- /dev/null +++ b/shaders/gbuffers_armor_glint.fsh @@ -0,0 +1,81 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + + +varying vec4 lmtexcoord; +varying vec4 color; +varying vec4 normalMat; + + +uniform sampler2D texture; +uniform sampler2D gaux1; +uniform vec4 lightCol; +uniform vec3 sunVec; + +uniform vec2 texelSize; +uniform float skyIntensityNight; +uniform float skyIntensity; +uniform float sunElevation; +uniform mat4 gbufferProjectionInverse; +uniform mat4 gbufferModelViewInverse; +uniform mat4 shadowModelView; +uniform mat4 shadowProjection; + +//faster and actually more precise than pow 2.2 +vec3 toLinear(vec3 sRGB){ + return sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878); +} + +#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) +#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) +vec3 toScreenSpace(vec3 p) { + vec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); + vec3 p3 = p * 2. - 1.; + vec4 fragposition = iProjDiag * p3.xyzz + gbufferProjectionInverse[3]; + return fragposition.xyz / fragposition.w; +} +float interleaved_gradientNoise(){ + vec2 coord = gl_FragCoord.xy; + float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)); + return noise; +} + +float facos(float sx){ + float x = clamp(abs( sx ),0.,1.); + float a = sqrt( 1. - x ) * ( -0.16882 * x + 1.56734 ); + return sx > 0. ? a : 3.14159265359 - a; +} +#define SHADOW_MAP_BIAS 0.8 +float calcDistort(vec2 worlpos){ + + vec2 pos = worlpos * 1.165; + vec2 posSQ = pos*pos; + + float distb = pow(posSQ.x*posSQ.x*posSQ.x + posSQ.y*posSQ.y*posSQ.y, 1.0 / 6.0); + return 1.08695652/((1.0 - SHADOW_MAP_BIAS) + distb * SHADOW_MAP_BIAS); +} + +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +/* DRAWBUFFERS:2 */ +void main() { + + + gl_FragData[0] = texture2D(texture, lmtexcoord.xy); + + vec3 albedo = toLinear(gl_FragData[0].rgb*color.rgb); + + float exposure = texelFetch2D(gaux1,ivec2(10,37),0).r; + + vec3 col = albedo*exp(-exposure*3.); + + + gl_FragData[0].rgb = col*color.a; + gl_FragData[0].a = gl_FragData[0].a*0.1; + + + +} diff --git a/shaders/gbuffers_armor_glint.vsh b/shaders/gbuffers_armor_glint.vsh new file mode 100644 index 0000000..ab59388 --- /dev/null +++ b/shaders/gbuffers_armor_glint.vsh @@ -0,0 +1,63 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable +#include "/lib/res_params.glsl" + +/* +!! DO NOT REMOVE !! +This code is from Chocapic13' shaders +Read the terms of modification and sharing before changing something below please ! +!! DO NOT REMOVE !! +*/ + +varying vec4 lmtexcoord; +varying vec4 color; +varying vec4 normalMat; +#ifdef MC_NORMAL_MAP +varying vec4 tangent; +attribute vec4 at_tangent; +#endif +uniform vec2 texelSize; +uniform int framemod8; + const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); +#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) +#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) +vec4 toClipSpace3(vec3 viewSpacePosition) { + return vec4(projMAD(gl_ProjectionMatrix, viewSpacePosition),-viewSpacePosition.z); +} + +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + lmtexcoord.xy = (gl_TextureMatrix[0] * gl_MultiTexCoord0).st; + + vec2 lmcoord = gl_MultiTexCoord1.xy/255.; + lmtexcoord.zw = lmcoord*lmcoord; + + vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz; + color = gl_Color; + gl_Position = toClipSpace3(position); + + + #ifdef MC_NORMAL_MAP + tangent = vec4(normalize(gl_NormalMatrix *at_tangent.rgb),at_tangent.w); + #endif + + normalMat = vec4(normalize(gl_NormalMatrix *gl_Normal),1.0); + #ifdef TAA_UPSCALING + gl_Position.xy = gl_Position.xy * RENDER_SCALE + RENDER_SCALE * gl_Position.w - gl_Position.w; + #endif + #ifdef TAA + gl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize; + #endif +} diff --git a/shaders/gbuffers_basic.fsh b/shaders/gbuffers_basic.fsh new file mode 100644 index 0000000..7748265 --- /dev/null +++ b/shaders/gbuffers_basic.fsh @@ -0,0 +1,6 @@ +#version 120 + +// #define ENTITIES +#define BLOCKENTITIES +#define WORLD +#include "gbuffers_all_solid.fsh" \ No newline at end of file diff --git a/shaders/gbuffers_basic.vsh b/shaders/gbuffers_basic.vsh new file mode 100644 index 0000000..068cbd8 --- /dev/null +++ b/shaders/gbuffers_basic.vsh @@ -0,0 +1,7 @@ +#version 120 + +// #define ENTITIES +// #define LINE +#define BLOCKENTITIES +#define WORLD +#include "gbuffers_all_solid.vsh" \ No newline at end of file diff --git a/shaders/gbuffers_beaconbeam.fsh b/shaders/gbuffers_beaconbeam.fsh new file mode 100644 index 0000000..631cdf1 --- /dev/null +++ b/shaders/gbuffers_beaconbeam.fsh @@ -0,0 +1,90 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + + + +varying vec4 lmtexcoord; +varying vec4 color; +varying vec4 normalMat; + +#define SHADOW_MAP_BIAS 0.8 + +uniform sampler2D texture; +uniform sampler2D gaux1; + +uniform vec4 lightCol; +uniform vec3 sunVec; +uniform vec3 upVec; + +uniform vec2 texelSize; +uniform float skyIntensityNight; +uniform float skyIntensity; +uniform float sunElevation; +uniform float rainStrength; +uniform mat4 gbufferProjectionInverse; +uniform mat4 gbufferModelViewInverse; +uniform mat4 shadowModelView; +uniform mat4 shadowProjection; + +//faster and actually more precise than pow 2.2 +vec3 toLinear(vec3 sRGB){ + return sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878); +} + +#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) +#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) +vec3 toScreenSpace(vec3 p) { + vec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); + vec3 p3 = p * 2. - 1.; + vec4 fragposition = iProjDiag * p3.xyzz + gbufferProjectionInverse[3]; + return fragposition.xyz / fragposition.w; +} +float interleaved_gradientNoise(){ + vec2 coord = gl_FragCoord.xy; + float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)); + return noise; +} + + +float facos(float sx){ + float x = clamp(abs( sx ),0.,1.); + float a = sqrt( 1. - x ) * ( -0.16882 * x + 1.56734 ); + return sx > 0. ? a : 3.14159265359 - a; +} +#define SHADOW_MAP_BIAS 0.8 +float calcDistort(vec2 worlpos){ + + vec2 pos = worlpos * 1.165; + vec2 posSQ = pos*pos; + + float distb = pow(posSQ.x*posSQ.x*posSQ.x + posSQ.y*posSQ.y*posSQ.y, 1.0 / 6.0); + return 1.08695652/((1.0 - SHADOW_MAP_BIAS) + distb * SHADOW_MAP_BIAS); +} + +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +/* DRAWBUFFERS:2 */ +void main() { + + + gl_FragData[0] = texture2D(texture, lmtexcoord.xy)*color; + gl_FragData[0].a = 1.0; + + vec3 albedo = toLinear(gl_FragData[0].rgb); + + float torch_lightmap = lmtexcoord.z; + float exposure = texelFetch2D(gaux1,ivec2(10,37),0).r; + vec3 diffuseLight = torch_lightmap*vec3(20.,30.,50.)*2./10. ; + + vec3 color = diffuseLight*albedo/exposure*5.0; + + + gl_FragData[0].rgb = clamp(color*0.01,0,1); + + + + +} diff --git a/shaders/gbuffers_beaconbeam.vsh b/shaders/gbuffers_beaconbeam.vsh new file mode 100644 index 0000000..ad085e1 --- /dev/null +++ b/shaders/gbuffers_beaconbeam.vsh @@ -0,0 +1,57 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable +#include "/lib/res_params.glsl" + +/* +!! DO NOT REMOVE !! +This code is from Chocapic13' shaders +Read the terms of modification and sharing before changing something below please ! +!! DO NOT REMOVE !! +*/ + +varying vec4 lmtexcoord; +varying vec4 color; +varying vec4 normalMat; +#ifdef MC_NORMAL_MAP +varying vec4 tangent; +attribute vec4 at_tangent; +#endif + +uniform vec2 texelSize; +uniform int framemod8; + const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + lmtexcoord.xy = (gl_MultiTexCoord0).xy; + + vec2 lmcoord = gl_MultiTexCoord1.xy/255.; + lmtexcoord.zw = lmcoord; + + gl_Position = ftransform(); + color = gl_Color; + + + #ifdef MC_NORMAL_MAP + tangent = vec4(normalize(gl_NormalMatrix *at_tangent.rgb),at_tangent.w); + #endif + + normalMat = vec4(normalize(gl_NormalMatrix *gl_Normal),1.0); + #ifdef TAA_UPSCALING + gl_Position.xy = gl_Position.xy * RENDER_SCALE + RENDER_SCALE * gl_Position.w - gl_Position.w; + #endif + #ifdef TAA + gl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize; + #endif +} diff --git a/shaders/gbuffers_block.fsh b/shaders/gbuffers_block.fsh new file mode 100644 index 0000000..c7c36b4 --- /dev/null +++ b/shaders/gbuffers_block.fsh @@ -0,0 +1,5 @@ +#version 120 + +#define WORLD +#define BLOCKENTITIES +#include "gbuffers_all_solid.fsh" \ No newline at end of file diff --git a/shaders/gbuffers_block.vsh b/shaders/gbuffers_block.vsh new file mode 100644 index 0000000..5decf09 --- /dev/null +++ b/shaders/gbuffers_block.vsh @@ -0,0 +1,5 @@ +#version 120 + +#define WORLD +#define BLOCKENTITIES +#include "gbuffers_all_solid.vsh" \ No newline at end of file diff --git a/shaders/gbuffers_damagedblock.fsh b/shaders/gbuffers_damagedblock.fsh new file mode 100644 index 0000000..b13b1ed --- /dev/null +++ b/shaders/gbuffers_damagedblock.fsh @@ -0,0 +1,553 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + +varying vec4 lmtexcoord; +varying vec4 color; +varying vec4 normalMat; +varying vec3 binormal; +uniform sampler2D normals; +varying vec3 tangent; +varying vec4 tangent_other; +varying vec3 viewVector; +varying float dist; +#include "/lib/res_params.glsl" + +#define CLOUDS_SHADOWS +#define VL_CLOUDS_SHADOWS // Casts shadows from clouds on VL (slow) +#define SCREENSPACE_REFLECTIONS //can be really expensive at high resolutions/render quality, especially on ice +#define SSR_STEPS 30 //[10 15 20 25 30 35 40 50 100 200 400] +#define SUN_MICROFACET_SPECULAR // If enabled will use realistic rough microfacet model, else will just reflect the sun. No performance impact. +#define USE_QUARTER_RES_DEPTH // Uses a quarter resolution depth buffer to raymarch screen space reflections, improves performance but may introduce artifacts +#define saturate(x) clamp(x,0.0,1.0) +#define Dirt_Amount 0.14 //How much dirt there is in water [0.0 0.04 0.08 0.12 0.16 0.2 0.24 0.28 0.32 0.36 0.4 0.44 0.48 0.52 0.56 0.6 0.64 0.68 0.72 0.76 0.8 0.84 0.88 0.92 0.96 1.0 1.04 1.08 1.12 1.16 1.2 1.24 1.28 1.32 1.36 1.4 1.44 1.48 1.52 1.56 1.6 1.64 1.68 1.72 1.76 1.8 1.84 1.88 1.92 1.96 2.0 ] + +#define Dirt_Scatter_R 0.6 //How much dirt diffuses red [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 ] +#define Dirt_Scatter_G 0.6 //How much dirt diffuses green [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 ] +#define Dirt_Scatter_B 0.6 //How much dirt diffuses blue [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 ] + +#define Dirt_Absorb_R 1.65 //How much dirt absorbs red [0.0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.2 0.22 0.24 0.26 0.28 0.3 0.32 0.34 0.36 0.38 0.4 0.42 0.44 0.46 0.48 0.5 0.52 0.54 0.56 0.58 0.6 0.62 0.64 0.66 0.68 0.7 0.72 0.74 0.76 0.78 0.8 0.82 0.84 0.86 0.88 0.9 0.92 0.94 0.96 0.98 1.0 1.02 1.04 1.06 1.08 1.1 1.12 1.14 1.16 1.18 1.2 1.22 1.24 1.26 1.28 1.3 1.32 1.34 1.36 1.38 1.4 1.42 1.44 1.46 1.48 1.5 1.52 1.54 1.56 1.58 1.6 1.62 1.64 1.66 1.68 1.7 1.72 1.74 1.76 1.78 1.8 1.82 1.84 1.86 1.88 1.9 1.92 1.94 1.96 1.98 2.0 ] +#define Dirt_Absorb_G 1.85 //How much dirt absorbs green [0.0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.2 0.22 0.24 0.26 0.28 0.3 0.32 0.34 0.36 0.38 0.4 0.42 0.44 0.46 0.48 0.5 0.52 0.54 0.56 0.58 0.6 0.62 0.64 0.66 0.68 0.7 0.72 0.74 0.76 0.78 0.8 0.82 0.84 0.86 0.88 0.9 0.92 0.94 0.96 0.98 1.0 1.02 1.04 1.06 1.08 1.1 1.12 1.14 1.16 1.18 1.2 1.22 1.24 1.26 1.28 1.3 1.32 1.34 1.36 1.38 1.4 1.42 1.44 1.46 1.48 1.5 1.52 1.54 1.56 1.58 1.6 1.62 1.64 1.66 1.68 1.7 1.72 1.74 1.76 1.78 1.8 1.82 1.84 1.86 1.88 1.9 1.92 1.94 1.96 1.98 2.0 ] +#define Dirt_Absorb_B 2.05 //How much dirt absorbs blue [0.0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.2 0.22 0.24 0.26 0.28 0.3 0.32 0.34 0.36 0.38 0.4 0.42 0.44 0.46 0.48 0.5 0.52 0.54 0.56 0.58 0.6 0.62 0.64 0.66 0.68 0.7 0.72 0.74 0.76 0.78 0.8 0.82 0.84 0.86 0.88 0.9 0.92 0.94 0.96 0.98 1.0 1.02 1.04 1.06 1.08 1.1 1.12 1.14 1.16 1.18 1.2 1.22 1.24 1.26 1.28 1.3 1.32 1.34 1.36 1.38 1.4 1.42 1.44 1.46 1.48 1.5 1.52 1.54 1.56 1.58 1.6 1.62 1.64 1.66 1.68 1.7 1.72 1.74 1.76 1.78 1.8 1.82 1.84 1.86 1.88 1.9 1.92 1.94 1.96 1.98 2.0 ] + +#define Water_Absorb_R 0.2629 //How much water absorbs red [0.0 0.0025 0.005 0.0075 0.01 0.0125 0.015 0.0175 0.02 0.0225 0.025 0.0275 0.03 0.0325 0.035 0.0375 0.04 0.0425 0.045 0.0475 0.05 0.0525 0.055 0.0575 0.06 0.0625 0.065 0.0675 0.07 0.0725 0.075 0.0775 0.08 0.0825 0.085 0.0875 0.09 0.0925 0.095 0.0975 0.1 0.1025 0.105 0.1075 0.11 0.1125 0.115 0.1175 0.12 0.1225 0.125 0.1275 0.13 0.1325 0.135 0.1375 0.14 0.1425 0.145 0.1475 0.15 0.1525 0.155 0.1575 0.16 0.1625 0.165 0.1675 0.17 0.1725 0.175 0.1775 0.18 0.1825 0.185 0.1875 0.19 0.1925 0.195 0.1975 0.2 0.2025 0.205 0.2075 0.21 0.2125 0.215 0.2175 0.22 0.2225 0.225 0.2275 0.23 0.2325 0.235 0.2375 0.24 0.2425 0.245 0.2475 0.25 ] +#define Water_Absorb_G 0.0565 //How much water absorbs green [0.0 0.0025 0.005 0.0075 0.01 0.0125 0.015 0.0175 0.02 0.0225 0.025 0.0275 0.03 0.0325 0.035 0.0375 0.04 0.0425 0.045 0.0475 0.05 0.0525 0.055 0.0575 0.06 0.0625 0.065 0.0675 0.07 0.0725 0.075 0.0775 0.08 0.0825 0.085 0.0875 0.09 0.0925 0.095 0.0975 0.1 0.1025 0.105 0.1075 0.11 0.1125 0.115 0.1175 0.12 0.1225 0.125 0.1275 0.13 0.1325 0.135 0.1375 0.14 0.1425 0.145 0.1475 0.15 0.1525 0.155 0.1575 0.16 0.1625 0.165 0.1675 0.17 0.1725 0.175 0.1775 0.18 0.1825 0.185 0.1875 0.19 0.1925 0.195 0.1975 0.2 0.2025 0.205 0.2075 0.21 0.2125 0.215 0.2175 0.22 0.2225 0.225 0.2275 0.23 0.2325 0.235 0.2375 0.24 0.2425 0.245 0.2475 0.25 ] +#define Water_Absorb_B 0.01011 //How much water absorbs blue [0.0 0.0025 0.005 0.0075 0.01 0.0125 0.015 0.0175 0.02 0.0225 0.025 0.0275 0.03 0.0325 0.035 0.0375 0.04 0.0425 0.045 0.0475 0.05 0.0525 0.055 0.0575 0.06 0.0625 0.065 0.0675 0.07 0.0725 0.075 0.0775 0.08 0.0825 0.085 0.0875 0.09 0.0925 0.095 0.0975 0.1 0.1025 0.105 0.1075 0.11 0.1125 0.115 0.1175 0.12 0.1225 0.125 0.1275 0.13 0.1325 0.135 0.1375 0.14 0.1425 0.145 0.1475 0.15 0.1525 0.155 0.1575 0.16 0.1625 0.165 0.1675 0.17 0.1725 0.175 0.1775 0.18 0.1825 0.185 0.1875 0.19 0.1925 0.195 0.1975 0.2 0.2025 0.205 0.2075 0.21 0.2125 0.215 0.2175 0.22 0.2225 0.225 0.2275 0.23 0.2325 0.235 0.2375 0.24 0.2425 0.245 0.2475 0.25 ] +#define Texture_MipMap_Bias -1.00 // Uses a another mip level for textures. When reduced will increase texture detail but may induce a lot of shimmering. [-5.00 -4.75 -4.50 -4.25 -4.00 -3.75 -3.50 -3.25 -3.00 -2.75 -2.50 -2.25 -2.00 -1.75 -1.50 -1.25 -1.00 -0.75 -0.50 -0.25 0.00 0.25 0.50 0.75 1.00 1.25 1.50 1.75 2.00 2.25 2.50 2.75 3.00 3.25 3.50 3.75 4.00 4.25 4.50 4.75 5.00] + +#define ambient_colortype 0 // Toggle which method you want to change the color of ambient light with. [0 1] +#define ambient_temp 9000 // [1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 15000 50000] + +#define AmbientLight_R 0.91 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +#define AmbientLight_G 0.86 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +#define AmbientLight_B 1.0 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] + + + +#define MIN_LIGHT_AMOUNT 1.0 //[0.0 0.5 1.0 1.5 2.0 3.0 4.0 5.0] +//#define Vanilla_like_water // vanilla water texture along with shader water stuff +uniform sampler2D texture; +uniform sampler2D noisetex; +uniform sampler2DShadow shadow; +uniform sampler2D gaux2; +uniform sampler2D gaux1; +uniform sampler2D depthtex1; + +uniform vec4 lightCol; +uniform float nightVision; + +uniform vec3 sunVec; +uniform float frameTimeCounter; +uniform float lightSign; +uniform float near; +uniform float far; +uniform float moonIntensity; +uniform float sunIntensity; +uniform vec3 sunColor; +uniform vec3 nsunColor; +uniform vec3 upVec; +uniform float sunElevation; +uniform float fogAmount; +uniform vec2 texelSize; +uniform float rainStrength; +uniform float skyIntensityNight; +uniform float skyIntensity; +flat varying vec3 WsunVec; +uniform mat4 gbufferPreviousModelView; +uniform vec3 previousCameraPosition; +uniform int framemod8; +uniform sampler2D specular; +uniform int frameCounter; +uniform int isEyeInWater; + + + + + +#include "lib/Shadow_Params.glsl" +#include "lib/color_transforms.glsl" +#include "lib/projections.glsl" +#include "lib/sky_gradient.glsl" +#include "lib/waterBump.glsl" +#include "lib/clouds.glsl" +#include "lib/stars.glsl" +#include "lib/volumetricClouds.glsl" + + const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); +float interleaved_gradientNoise(float temporal){ + vec2 coord = gl_FragCoord.xy; + float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)+temporal); + return noise; +} +vec3 srgbToLinear2(vec3 srgb){ + return mix( + srgb / 12.92, + pow(.947867 * srgb + .0521327, vec3(2.4) ), + step( .04045, srgb ) + ); +} +vec3 blackbody2(float Temp) +{ + float t = pow(Temp, -1.5); + float lt = log(Temp); + + vec3 col = vec3(0.0); + col.x = 220000.0 * t + 0.58039215686; + col.y = 0.39231372549 * lt - 2.44549019608; + col.y = Temp > 6500. ? 138039.215686 * t + 0.72156862745 : col.y; + col.z = 0.76078431372 * lt - 5.68078431373; + col = clamp(col,0.0,1.0); + col = Temp < 1000. ? col * Temp * 0.001 : col; + + return srgbToLinear2(col); +} + +float blueNoise(){ + return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); +} +float invLinZ (float lindepth){ + return -((2.0*near/lindepth)-far-near)/(far-near); +} +float ld(float dist) { + return (2.0 * near) / (far + near - dist * (far - near)); +} +vec3 nvec3(vec4 pos){ + return pos.xyz/pos.w; +} + +vec4 nvec4(vec3 pos){ + return vec4(pos.xyz, 1.0); +} +vec3 rayTrace(vec3 dir,vec3 position,float dither, float fresnel, bool inwater){ + + float quality = mix(15,SSR_STEPS,fresnel); + vec3 clipPosition = toClipSpace3(position); + float rayLength = ((position.z + dir.z * far*sqrt(3.)) > -near) ? + (-near -position.z) / dir.z : far*sqrt(3.); + vec3 direction = normalize(toClipSpace3(position+dir*rayLength)-clipPosition); //convert to clip space + direction.xy = normalize(direction.xy); + + //get at which length the ray intersects with the edge of the screen + vec3 maxLengths = (step(0.,direction)-clipPosition) / direction; + float mult = min(min(maxLengths.x,maxLengths.y),maxLengths.z); + + + vec3 stepv = direction * mult / quality*vec3(RENDER_SCALE,1.0); + + + + + vec3 spos = clipPosition*vec3(RENDER_SCALE,1.0) + stepv*dither; + float minZ = clipPosition.z; + float maxZ = spos.z+stepv.z*0.5; + + spos.xy += offsets[framemod8]*texelSize*0.5/RENDER_SCALE; + + for (int i = 0; i <= int(quality); i++) { + #ifdef USE_QUARTER_RES_DEPTH + // decode depth buffer + float sp = sqrt(texelFetch2D(gaux1,ivec2(spos.xy/texelSize/4),0).w/65000.0); + sp = invLinZ(sp); + if(sp <= max(maxZ,minZ) && sp >= min(maxZ,minZ)){ + return vec3(spos.xy/RENDER_SCALE,sp); + } + spos += stepv; + #else + float sp = texelFetch2D(depthtex1,ivec2(spos.xy/texelSize),0).r; + if(sp <= max(maxZ,minZ) && sp >= min(maxZ,minZ)){ + return vec3(spos.xy/RENDER_SCALE,sp); + } + spos += stepv; + #endif + //small bias + minZ = maxZ-0.00004/ld(spos.z); + if(inwater) minZ = maxZ-0.0004/ld(spos.z); + maxZ += stepv.z; + } + + return vec3(1.1); +} + + +float facos(float sx){ + float x = clamp(abs( sx ),0.,1.); + float a = sqrt( 1. - x ) * ( -0.16882 * x + 1.56734 ); + return sx > 0. ? a : pi - a; +} + + + + + float bayer2(vec2 a){ + a = floor(a); + return fract(dot(a,vec2(0.5,a.y*0.75))); +} + +float cdist(vec2 coord) { + return max(abs(coord.s-0.5),abs(coord.t-0.5))*2.0; +} + + #define PW_DEPTH 1.0 //[0.5 1.0 1.5 2.0 2.5 3.0] + #define PW_POINTS 1 //[2 4 6 8 16 32] + #define bayer4(a) (bayer2( .5*(a))*.25+bayer2(a)) +#define bayer8(a) (bayer4( .5*(a))*.25+bayer2(a)) +#define bayer16(a) (bayer8( .5*(a))*.25+bayer2(a)) +#define bayer32(a) (bayer16(.5*(a))*.25+bayer2(a)) +#define bayer64(a) (bayer32(.5*(a))*.25+bayer2(a)) +#define bayer128(a) fract(bayer64(.5*(a))*.25+bayer2(a)) +vec3 getParallaxDisplacement(vec3 posxz, float iswater,float bumpmult,vec3 viewVec) { + float waveZ = mix(20.0,0.25,iswater); + float waveM = mix(0.0,4.0,iswater); + + vec3 parallaxPos = posxz; + vec2 vec = viewVector.xy * (1.0 / float(PW_POINTS)) * 22.0 * PW_DEPTH; + float waterHeight = getWaterHeightmap(posxz.xz, waveM, waveZ, iswater) ; + + parallaxPos.xz += waterHeight * vec; + + return parallaxPos; + +} +vec2 tapLocation(int sampleNumber,int nb, float nbRot,float jitter,float distort) +{ + float alpha = (sampleNumber+jitter)/nb; + float angle = jitter*6.28 + alpha * nbRot * 6.28; + + float sin_v, cos_v; + + sin_v = sin(angle); + cos_v = cos(angle); + + return vec2(cos_v, sin_v)*sqrt(alpha); +} +//Low discrepancy 2D sequence, integration error is as low as sobol but easier to compute : http://extremelearning.com.au/unreasonable-effectiveness-of-quasirandom-sequences/ +vec2 R2_samples(int n){ + vec2 alpha = vec2(0.75487765, 0.56984026); + return fract(alpha * n); +} +vec4 hash44(vec4 p4) +{ + p4 = fract(p4 * vec4(.1031, .1030, .0973, .1099)); + p4 += dot(p4, p4.wzxy+33.33); + return fract((p4.xxyz+p4.yzzw)*p4.zywx); +} +vec3 TangentToWorld(vec3 N, vec3 H) +{ + vec3 UpVector = abs(N.z) < 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(1.0, 0.0, 0.0); + vec3 T = normalize(cross(UpVector, N)); + vec3 B = cross(N, T); + + return vec3((T * H.x) + (B * H.y) + (N * H.z)); +} +float GGX (vec3 n, vec3 v, vec3 l, float r, float F0) { + r*=r;r*=r; + + vec3 h = l + v; + float hn = inversesqrt(dot(h, h)); + + float dotLH = clamp(dot(h,l)*hn,0.,1.); + float dotNH = clamp(dot(h,n)*hn,0.,1.); + float dotNL = clamp(dot(n,l),0.,1.); + float dotNHsq = dotNH*dotNH; + + float denom = dotNHsq * r - dotNHsq + 1.; + float D = r / (3.141592653589793 * denom * denom); + float F = F0 + (1. - F0) * exp2((-5.55473*dotLH-6.98316)*dotLH); + float k2 = .25 * r; + + return dotNL * D * F / (dotLH*dotLH*(1.0-k2)+k2); +} +float square(float x){ + return x*x; +} + +float gSimple(float dp, float roughness){ + float k = roughness + 1; + k *= k/8.0; + return dp / (dp * (1.0-k) + k); +} +vec3 GGX2(vec3 n, vec3 v, vec3 l, float r, vec3 F0) { + float alpha = square(r); + + vec3 h = normalize(l + v); + + float dotLH = clamp(dot(h,l),0.,1.); + float dotNH = clamp(dot(h,n),0.,1.); + float dotNL = clamp(dot(n,l),0.,1.); + float dotNV = clamp(dot(n,v),0.,1.); + float dotVH = clamp(dot(h,v),0.,1.); + + + float D = alpha / (3.141592653589793*square(square(dotNH) * (alpha - 1.0) + 1.0)); + float G = gSimple(dotNV, r) * gSimple(dotNL, r); + vec3 F = F0 + (1. - F0) * exp2((-5.55473*dotVH-6.98316)*dotVH); + + return dotNL * F * (G * D / (4 * dotNV * dotNL + 1e-7)); +} + + vec3 applyBump(mat3 tbnMatrix, vec3 bump){ + float bumpmult = 1.0; + bump = bump * vec3(bumpmult, bumpmult, bumpmult) + vec3(0.0f, 0.0f, 1.0f - bumpmult); + return normalize(bump*tbnMatrix); + } + +#define fsign(a) (clamp((a)*1e35,0.,1.)*2.-1.) +float triangularize(float dither) +{ + float center = dither*2.0-1.0; + dither = center*inversesqrt(abs(center)); + return clamp(dither-fsign(center),0.0,1.0); +} +vec3 fp10Dither(vec3 color,float dither){ + const vec3 mantissaBits = vec3(6.,6.,5.); + vec3 exponent = floor(log2(color)); + return color + dither*exp2(-mantissaBits)*exp2(exponent); +} +float R2_dither(){ + vec2 alpha = vec2(0.75487765, 0.56984026); + return fract(alpha.x * gl_FragCoord.x + alpha.y * gl_FragCoord.y + 1.0/1.6180339887 * frameCounter) ; +} +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +/* DRAWBUFFERS:271 */ +void main() { +if (gl_FragCoord.x * texelSize.x < RENDER_SCALE.x && gl_FragCoord.y * texelSize.y < RENDER_SCALE.y ) { + + vec2 specularstuff = texture2D(specular, lmtexcoord.xy, Texture_MipMap_Bias).rg; + + // color + vec2 tempOffset = offsets[framemod8]; + float iswater = normalMat.w; + + vec3 fragC = gl_FragCoord.xyz*vec3(texelSize,1.0); + vec3 fragpos = toScreenSpace(gl_FragCoord.xyz*vec3(texelSize/RENDER_SCALE,1.0)-vec3(vec2(tempOffset)*texelSize*0.5,0.0)); + + vec3 np3 = mat3(gbufferModelViewInverse) * fragpos + gbufferModelViewInverse[3].xyz + cameraPosition; + + gl_FragData[0] = texture2D(texture, lmtexcoord.xy)*color; + float avgBlockLum = luma(texture2DLod(texture, lmtexcoord.xy,128).rgb*color.rgb); + gl_FragData[0].rgb = clamp((gl_FragData[0].rgb)*pow(avgBlockLum,-0.33)*0.85,0.0,1.0); + vec3 albedo = toLinear(gl_FragData[0].rgb); + + #ifndef Vanilla_like_water + if (iswater > 0.4) { + albedo = vec3(0.42,0.6,0.7); + gl_FragData[0] = vec4(0.42,0.6,0.7,0.7); + } + if (iswater > 0.9) { + gl_FragData[0] = vec4(0.0); + } + #endif + + + // normals + vec3 normal = normalMat.xyz; + + vec3 p3 = mat3(gbufferModelViewInverse) * fragpos + gbufferModelViewInverse[3].xyz; + mat3 tbnMatrix = mat3(tangent.x, binormal.x, normal.x, + tangent.y, binormal.y, normal.y, + tangent.z, binormal.z, normal.z); + if (iswater > 0.4){ + float bumpmult = 1.; + if (iswater > 0.9) bumpmult = 1.; + float parallaxMult = bumpmult; + + vec3 posxz = p3+cameraPosition; + posxz.xz-=posxz.y; + + if (iswater < 0.9) posxz.xz *= 3.0; + + vec3 bump; + posxz.xyz = getParallaxDisplacement(posxz,iswater,bumpmult,normalize(tbnMatrix*fragpos)); + bump = normalize(getWaveHeight(posxz.xz,iswater)); + bump = bump * vec3(bumpmult, bumpmult, bumpmult) + vec3(0.0f, 0.0f, 1.0f - bumpmult); + normal = normalize(bump * tbnMatrix); + }else { + vec3 normalTex = texture2D(normals, lmtexcoord.xy, Texture_MipMap_Bias).rgb; + + normalTex.xy = normalTex.xy*2.0-1.0; + normalTex.z = clamp(sqrt(1.0 - dot(normalTex.xy, normalTex.xy)),0.0,1.0); + normal = applyBump(tbnMatrix,normalTex); + } + + /// Direct light + + float NdotL = lightSign*dot(normal,sunVec); + float NdotU = dot(upVec,normal); + float diffuseSun = clamp(NdotL,0.0f,1.0f); + + vec3 direct = texelFetch2D(gaux1,ivec2(6,37),0).rgb/3.1415; + vec3 directlightcol = direct; + float shading = 1.0; + float cloudShadow = 1.0; + //compute shadows only if not backface + if(diffuseSun > 0.001) { + vec3 p3 = mat3(gbufferModelViewInverse) * fragpos + gbufferModelViewInverse[3].xyz; + vec3 projectedShadowPosition = mat3(shadowModelView) * p3 + shadowModelView[3].xyz; + projectedShadowPosition = diagonal3(shadowProjection) * projectedShadowPosition + shadowProjection[3].xyz; + + //apply distortion + float distortFactor = calcDistort(projectedShadowPosition.xy); + projectedShadowPosition.xy *= distortFactor; + //do shadows only if on shadow map + if (abs(projectedShadowPosition.x) < 1.0-1.5/shadowMapResolution && abs(projectedShadowPosition.y) < 1.0-1.5/shadowMapResolution){ + const float threshMul = max(2048.0/shadowMapResolution*shadowDistance/128.0,0.95); + float distortThresh = (sqrt(1.0-diffuseSun*diffuseSun)/diffuseSun+0.7)/distortFactor; + float diffthresh = distortThresh/6000.0*threshMul; + + projectedShadowPosition = projectedShadowPosition * vec3(0.5,0.5,0.5/6.0) + vec3(0.5,0.5,0.5); + + shading = 0.0; + float noise = blueNoise(); + float rdMul = 4.0/shadowMapResolution; + for(int i = 0; i < 9; i++){ + vec2 offsetS = tapLocation(i,9, 1.618,noise,0.0); + + float weight = 1.0+(i+noise)*rdMul/9.0*shadowMapResolution; + shading += shadow2D(shadow,vec3(projectedShadowPosition + vec3(rdMul*offsetS,-diffthresh*weight))).x/9.0; + } + direct *= shading; + } + + + vec3 campos = (p3 + cameraPosition)-319 ; + #ifdef VOLUMETRIC_CLOUDS + #ifdef CLOUDS_SHADOWS + // get cloud position + vec3 cloudPos = campos*Cloud_Size + WsunVec/abs(WsunVec.y) * (2250 - campos.y*Cloud_Size); + // get the cloud density and apply it + cloudShadow = getCloudDensity(cloudPos, 1); + cloudShadow = exp(-cloudShadow*sqrt(cloudDensity)*25); + + // make these turn to zero when occluded by the cloud shadow + direct *= cloudShadow; + #endif + #endif + } + #if ambient_colortype == 0 + vec3 colortype = blackbody2(ambient_temp); + #else + vec3 colortype = vec3(AmbientLight_R,AmbientLight_G,AmbientLight_B) ; + #endif + + vec3 ambientLight = texture2D(gaux1,(lmtexcoord.zw*15.+0.5)*texelSize).rgb * colortype; + + directlightcol *= (iswater > 0.9 ? 0.2: 1.0)*diffuseSun*lmtexcoord.w; + + + vec3 diffuseLight = (directlightcol + ambientLight)/5; + vec3 color = diffuseLight * albedo * 8./150./3.0 ; + + if (iswater > 0.0){ + + float roughness = iswater > 0.4 ? 0.0 : specularstuff.r > 0.0 ? pow(1.0-specularstuff.r,2.0) : 0.05*(1.0-gl_FragData[0].a ); + float f0 = iswater > 0.4 || specularstuff.g > 0.9 ? 0.02 : specularstuff.g; + float F0 = f0; + + // float f0 = iswater > 0.1 ? 0.02 : 0.05*(1.0-gl_FragData[0].a); + // float roughness = 0.02; + // float F0 = f0; + // roughness = 1.; + vec3 reflectedVector = reflect(normalize(fragpos), normal); + + + float normalDotEye = dot(normal, normalize(fragpos)); + float fresnel = pow(clamp(1.0 + normalDotEye,0.0,1.0), 5.0); + + // snells window looking thing + if(isEyeInWater == 1 && iswater > 0.99) fresnel = clamp(pow(1.66 + normalDotEye,25),0.02,1.0); + + fresnel = mix(F0,1.0,fresnel); + + // adjust the amount of sunlight based on f0. max f0 should + // direct = mix(direct, (ambientLight*2.5) * albedo * 8./150./3.0 , mix(1.0-roughness, F0, 0.5)); + + vec3 wrefl = mat3(gbufferModelViewInverse)*reflectedVector; + vec3 sky_c = mix(skyCloudsFromTex(wrefl,gaux1).rgb,texture2D(gaux1,(lmtexcoord.zw*15.+0.5)*texelSize).rgb*0.5,isEyeInWater); + sky_c.rgb *= lmtexcoord.w*lmtexcoord.w*255*255/240./240./150.*8./3.; + + vec4 reflection = vec4(sky_c.rgb,0.); + #ifdef SCREENSPACE_REFLECTIONS + vec3 rtPos = rayTrace(reflectedVector,fragpos.xyz, blueNoise(), fresnel, isEyeInWater == 0); + if (rtPos.z <1.){ + vec3 previousPosition = mat3(gbufferModelViewInverse) * toScreenSpace(rtPos) + gbufferModelViewInverse[3].xyz + cameraPosition-previousCameraPosition; + previousPosition = mat3(gbufferPreviousModelView) * previousPosition + gbufferPreviousModelView[3].xyz; + previousPosition.xy = projMAD(gbufferPreviousProjection, previousPosition).xy / -previousPosition.z * 0.5 + 0.5; + if (previousPosition.x > 0.0 && previousPosition.y > 0.0 && previousPosition.x < 1.0 && previousPosition.x < 1.0) { + reflection.a = 1.0; + reflection.rgb = texture2D(gaux2,previousPosition.xy).rgb; + } + } + #endif + + + if(isEyeInWater ==1 ) sky_c.rgb = color.rgb*lmtexcoord.y; + + reflection.rgb = mix(sky_c.rgb, reflection.rgb, reflection.a); + + #ifdef SUN_MICROFACET_SPECULAR + // vec3 sunSpec = GGX(normal,-normalize(fragpos), lightSign*sunVec, rainStrength*0.2+roughness+0.05+clamp(-lightSign*0.15,0.0,1.0), f0) * texelFetch2D(gaux1,ivec2(6,37),0).rgb*8./3./150.0/3.1415 * (1.0-rainStrength*0.9); + vec3 sunSpec = GGX2(normal, -normalize(fragpos), lightSign*sunVec, roughness+0.005, vec3(f0)) ; + #else + vec3 sunSpec = drawSun(dot(lightSign*sunVec,reflectedVector), 0.0,texelFetch2D(gaux1,ivec2(6,37),0).rgb,vec3(0.0))*8./3./150.0*fresnel/3.1415 * (1.0-rainStrength*0.9); + #endif + + sunSpec *= max(cloudShadow-0.5,0.0); + // direct = mix(direct, direct*sunSpec, sunSpec); + vec3 reflected = reflection.rgb*fresnel + shading*sunSpec*directlightcol; + float alpha0 = gl_FragData[0].a; + + vec4 nice_colors = mix(gl_FragData[0], vec4(gl_FragData[0].rgb*2 - 0.5, 1.0-gl_FragData[0].a), 1.0-gl_FragData[0].a) ; + + nice_colors.rgb *= (ambientLight + shading*diffuseSun*directlightcol * max(sunSpec,0.15))/25.; + gl_FragData[0].a = -gl_FragData[0].a*fresnel+gl_FragData[0].a+fresnel; // correct alpha channel with fresnel + gl_FragData[0].rgb = clamp(nice_colors.rgb/gl_FragData[0].a*alpha0*(1.0-fresnel)*0.1+reflected/gl_FragData[0].a*0.1,0.0,65100.0); + + // if(gl_FragData[0].a > 0) gl_FragData[0] = max(nice_colors, 0.0); + + }else + gl_FragData[0].rgb = color*.1; + + gl_FragData[1] = vec4(albedo, iswater); + // vec4 nice_colors = vec4(gl_FragData[0].rgb, gl_FragData[0].a*gl_FragData[0].a) + (vec4(gl_FragData[0].rgb -0.5 , 1 - gl_FragData[0].a)*(1.0-gl_FragData[0].a) ) ; + // gl_FragData[0].rgb = color; + + + + + + + // float z = texture2D(depthtex0,texcoord).x; + // vec3 fragpos = toScreenSpace(vec3(texcoord,z)); + // gl_FragData[0].rgb *= vec3(1- clamp( pow( length(fragpos)/far, 1), 0, 1)) ; +} +} \ No newline at end of file diff --git a/shaders/gbuffers_damagedblock.vsh b/shaders/gbuffers_damagedblock.vsh new file mode 100644 index 0000000..cb9ec6f --- /dev/null +++ b/shaders/gbuffers_damagedblock.vsh @@ -0,0 +1,111 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + +#include "/lib/res_params.glsl" + + +/* +!! DO NOT REMOVE !! +This code is from Chocapic13' shaders +Read the terms of modification and sharing before changing something below please ! +!! DO NOT REMOVE !! +*/ + +varying vec4 lmtexcoord; +varying vec4 color; +varying vec4 normalMat; +varying vec3 binormal; +varying vec3 tangent; +varying float dist; +uniform mat4 gbufferModelViewInverse; +varying vec3 viewVector; +attribute vec4 at_tangent; +attribute vec4 mc_Entity; + +uniform sampler2D colortex4; +uniform vec3 sunPosition; +flat varying vec3 WsunVec; +uniform float sunElevation; + +varying vec4 tangent_other; +#define SHADOW_MAP_BIAS 0.8 + +flat varying vec4 lightCol; //main light source color (rgb),used light source(1=sun,-1=moon) + + + +uniform vec2 texelSize; +uniform int framemod8; + const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); +#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) +#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) +vec4 toClipSpace3(vec3 viewSpacePosition) { + return vec4(projMAD(gl_ProjectionMatrix, viewSpacePosition),-viewSpacePosition.z); +} +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + lmtexcoord.xy = (gl_MultiTexCoord0).xy; + vec2 lmcoord = gl_MultiTexCoord1.xy/255.; + lmtexcoord.zw = lmcoord; + + vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz; + gl_Position = toClipSpace3(position); + color = gl_Color; + float mat = 0.0; + if(mc_Entity.x == 8.0 || mc_Entity.x == 9.0) { + mat = 1.0; + + gl_Position.z -= 1e-4; + } + + + if (mc_Entity.x == 10002) mat = 0.01; + if (mc_Entity.x == 72) mat = 0.5; + + normalMat = vec4(normalize( gl_NormalMatrix*gl_Normal),mat); + + + + tangent_other = vec4(normalize(gl_NormalMatrix * at_tangent.rgb),normalMat.a); + + tangent = normalize( gl_NormalMatrix *at_tangent.rgb); + binormal = normalize(cross(tangent.rgb,normalMat.xyz)*at_tangent.w); + + mat3 tbnMatrix = mat3(tangent.x, binormal.x, normalMat.x, + tangent.y, binormal.y, normalMat.y, + tangent.z, binormal.z, normalMat.z); + + dist = length(gl_ModelViewMatrix * gl_Vertex); + + viewVector = ( gl_ModelViewMatrix * gl_Vertex).xyz; + viewVector = normalize(tbnMatrix * viewVector); + + + + #ifdef TAA_UPSCALING + gl_Position.xy = gl_Position.xy * RENDER_SCALE + RENDER_SCALE * gl_Position.w - gl_Position.w; + #endif + #ifdef TAA + gl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize; + #endif + + vec3 sc = texelFetch2D(colortex4,ivec2(6,37),0).rgb; + + + lightCol.a = float(sunElevation > 1e-5)*2-1.; + lightCol.rgb = sc; + + WsunVec = lightCol.a*normalize(mat3(gbufferModelViewInverse) *sunPosition); +} diff --git a/shaders/gbuffers_entities.fsh b/shaders/gbuffers_entities.fsh new file mode 100644 index 0000000..0cd3e0d --- /dev/null +++ b/shaders/gbuffers_entities.fsh @@ -0,0 +1,5 @@ +#version 120 + +#define WORLD +#define ENTITIES +#include "gbuffers_all_solid.fsh" \ No newline at end of file diff --git a/shaders/gbuffers_entities.vsh b/shaders/gbuffers_entities.vsh new file mode 100644 index 0000000..f4f07a4 --- /dev/null +++ b/shaders/gbuffers_entities.vsh @@ -0,0 +1,6 @@ +#version 120 + + +// #define WORLD +#define ENTITIES +#include "gbuffers_all_solid.vsh" \ No newline at end of file diff --git a/shaders/gbuffers_hand.fsh b/shaders/gbuffers_hand.fsh new file mode 100644 index 0000000..21ac244 --- /dev/null +++ b/shaders/gbuffers_hand.fsh @@ -0,0 +1,4 @@ +#version 120 + +#define HAND +#include "gbuffers_all_solid.fsh" \ No newline at end of file diff --git a/shaders/gbuffers_hand.vsh b/shaders/gbuffers_hand.vsh new file mode 100644 index 0000000..39504ed --- /dev/null +++ b/shaders/gbuffers_hand.vsh @@ -0,0 +1,5 @@ +#version 120 + +#define WORLD +#define HAND +#include "gbuffers_all_solid.vsh" \ No newline at end of file diff --git a/shaders/gbuffers_hand_water.fsh b/shaders/gbuffers_hand_water.fsh new file mode 100644 index 0000000..16b241a --- /dev/null +++ b/shaders/gbuffers_hand_water.fsh @@ -0,0 +1,271 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + +varying vec4 lmtexcoord; +varying vec4 color; +varying vec4 normalMat; +varying vec3 binormal; +uniform sampler2D normals; +varying vec3 tangent; +varying vec4 tangent_other; +varying vec3 viewVector; +varying float dist; +#include "/lib/res_params.glsl" + +#define CLOUDS_SHADOWS +#define VL_CLOUDS_SHADOWS // Casts shadows from clouds on VL (slow) +#define SCREENSPACE_REFLECTIONS //can be really expensive at high resolutions/render quality, especially on ice +#define SSR_STEPS 30 //[10 15 20 25 30 35 40 50 100 200 400] +#define SUN_MICROFACET_SPECULAR // If enabled will use realistic rough microfacet model, else will just reflect the sun. No performance impact. +#define USE_QUARTER_RES_DEPTH // Uses a quarter resolution depth buffer to raymarch screen space reflections, improves performance but may introduce artifacts +#define saturate(x) clamp(x,0.0,1.0) +#define Dirt_Amount 0.14 //How much dirt there is in water [0.0 0.04 0.08 0.12 0.16 0.2 0.24 0.28 0.32 0.36 0.4 0.44 0.48 0.52 0.56 0.6 0.64 0.68 0.72 0.76 0.8 0.84 0.88 0.92 0.96 1.0 1.04 1.08 1.12 1.16 1.2 1.24 1.28 1.32 1.36 1.4 1.44 1.48 1.52 1.56 1.6 1.64 1.68 1.72 1.76 1.8 1.84 1.88 1.92 1.96 2.0 ] + +#define Dirt_Scatter_R 0.6 //How much dirt diffuses red [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 ] +#define Dirt_Scatter_G 0.6 //How much dirt diffuses green [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 ] +#define Dirt_Scatter_B 0.6 //How much dirt diffuses blue [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 ] + +#define Dirt_Absorb_R 1.65 //How much dirt absorbs red [0.0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.2 0.22 0.24 0.26 0.28 0.3 0.32 0.34 0.36 0.38 0.4 0.42 0.44 0.46 0.48 0.5 0.52 0.54 0.56 0.58 0.6 0.62 0.64 0.66 0.68 0.7 0.72 0.74 0.76 0.78 0.8 0.82 0.84 0.86 0.88 0.9 0.92 0.94 0.96 0.98 1.0 1.02 1.04 1.06 1.08 1.1 1.12 1.14 1.16 1.18 1.2 1.22 1.24 1.26 1.28 1.3 1.32 1.34 1.36 1.38 1.4 1.42 1.44 1.46 1.48 1.5 1.52 1.54 1.56 1.58 1.6 1.62 1.64 1.66 1.68 1.7 1.72 1.74 1.76 1.78 1.8 1.82 1.84 1.86 1.88 1.9 1.92 1.94 1.96 1.98 2.0 ] +#define Dirt_Absorb_G 1.85 //How much dirt absorbs green [0.0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.2 0.22 0.24 0.26 0.28 0.3 0.32 0.34 0.36 0.38 0.4 0.42 0.44 0.46 0.48 0.5 0.52 0.54 0.56 0.58 0.6 0.62 0.64 0.66 0.68 0.7 0.72 0.74 0.76 0.78 0.8 0.82 0.84 0.86 0.88 0.9 0.92 0.94 0.96 0.98 1.0 1.02 1.04 1.06 1.08 1.1 1.12 1.14 1.16 1.18 1.2 1.22 1.24 1.26 1.28 1.3 1.32 1.34 1.36 1.38 1.4 1.42 1.44 1.46 1.48 1.5 1.52 1.54 1.56 1.58 1.6 1.62 1.64 1.66 1.68 1.7 1.72 1.74 1.76 1.78 1.8 1.82 1.84 1.86 1.88 1.9 1.92 1.94 1.96 1.98 2.0 ] +#define Dirt_Absorb_B 2.05 //How much dirt absorbs blue [0.0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.2 0.22 0.24 0.26 0.28 0.3 0.32 0.34 0.36 0.38 0.4 0.42 0.44 0.46 0.48 0.5 0.52 0.54 0.56 0.58 0.6 0.62 0.64 0.66 0.68 0.7 0.72 0.74 0.76 0.78 0.8 0.82 0.84 0.86 0.88 0.9 0.92 0.94 0.96 0.98 1.0 1.02 1.04 1.06 1.08 1.1 1.12 1.14 1.16 1.18 1.2 1.22 1.24 1.26 1.28 1.3 1.32 1.34 1.36 1.38 1.4 1.42 1.44 1.46 1.48 1.5 1.52 1.54 1.56 1.58 1.6 1.62 1.64 1.66 1.68 1.7 1.72 1.74 1.76 1.78 1.8 1.82 1.84 1.86 1.88 1.9 1.92 1.94 1.96 1.98 2.0 ] + +#define Water_Absorb_R 0.2629 //How much water absorbs red [0.0 0.0025 0.005 0.0075 0.01 0.0125 0.015 0.0175 0.02 0.0225 0.025 0.0275 0.03 0.0325 0.035 0.0375 0.04 0.0425 0.045 0.0475 0.05 0.0525 0.055 0.0575 0.06 0.0625 0.065 0.0675 0.07 0.0725 0.075 0.0775 0.08 0.0825 0.085 0.0875 0.09 0.0925 0.095 0.0975 0.1 0.1025 0.105 0.1075 0.11 0.1125 0.115 0.1175 0.12 0.1225 0.125 0.1275 0.13 0.1325 0.135 0.1375 0.14 0.1425 0.145 0.1475 0.15 0.1525 0.155 0.1575 0.16 0.1625 0.165 0.1675 0.17 0.1725 0.175 0.1775 0.18 0.1825 0.185 0.1875 0.19 0.1925 0.195 0.1975 0.2 0.2025 0.205 0.2075 0.21 0.2125 0.215 0.2175 0.22 0.2225 0.225 0.2275 0.23 0.2325 0.235 0.2375 0.24 0.2425 0.245 0.2475 0.25 ] +#define Water_Absorb_G 0.0565 //How much water absorbs green [0.0 0.0025 0.005 0.0075 0.01 0.0125 0.015 0.0175 0.02 0.0225 0.025 0.0275 0.03 0.0325 0.035 0.0375 0.04 0.0425 0.045 0.0475 0.05 0.0525 0.055 0.0575 0.06 0.0625 0.065 0.0675 0.07 0.0725 0.075 0.0775 0.08 0.0825 0.085 0.0875 0.09 0.0925 0.095 0.0975 0.1 0.1025 0.105 0.1075 0.11 0.1125 0.115 0.1175 0.12 0.1225 0.125 0.1275 0.13 0.1325 0.135 0.1375 0.14 0.1425 0.145 0.1475 0.15 0.1525 0.155 0.1575 0.16 0.1625 0.165 0.1675 0.17 0.1725 0.175 0.1775 0.18 0.1825 0.185 0.1875 0.19 0.1925 0.195 0.1975 0.2 0.2025 0.205 0.2075 0.21 0.2125 0.215 0.2175 0.22 0.2225 0.225 0.2275 0.23 0.2325 0.235 0.2375 0.24 0.2425 0.245 0.2475 0.25 ] +#define Water_Absorb_B 0.01011 //How much water absorbs blue [0.0 0.0025 0.005 0.0075 0.01 0.0125 0.015 0.0175 0.02 0.0225 0.025 0.0275 0.03 0.0325 0.035 0.0375 0.04 0.0425 0.045 0.0475 0.05 0.0525 0.055 0.0575 0.06 0.0625 0.065 0.0675 0.07 0.0725 0.075 0.0775 0.08 0.0825 0.085 0.0875 0.09 0.0925 0.095 0.0975 0.1 0.1025 0.105 0.1075 0.11 0.1125 0.115 0.1175 0.12 0.1225 0.125 0.1275 0.13 0.1325 0.135 0.1375 0.14 0.1425 0.145 0.1475 0.15 0.1525 0.155 0.1575 0.16 0.1625 0.165 0.1675 0.17 0.1725 0.175 0.1775 0.18 0.1825 0.185 0.1875 0.19 0.1925 0.195 0.1975 0.2 0.2025 0.205 0.2075 0.21 0.2125 0.215 0.2175 0.22 0.2225 0.225 0.2275 0.23 0.2325 0.235 0.2375 0.24 0.2425 0.245 0.2475 0.25 ] + +uniform sampler2D texture; +uniform sampler2D noisetex; +uniform sampler2DShadow shadow; +uniform sampler2D gaux2; +uniform sampler2D gaux1; +uniform sampler2D depthtex1; + +uniform vec4 lightCol; +uniform vec3 sunVec; +uniform float frameTimeCounter; +uniform float lightSign; +uniform float near; +uniform float far; +uniform float moonIntensity; +uniform float sunIntensity; +uniform vec3 sunColor; +uniform vec3 nsunColor; +uniform vec3 upVec; +uniform float sunElevation; +uniform float fogAmount; +uniform vec2 texelSize; +uniform float rainStrength; +uniform float skyIntensityNight; +uniform float skyIntensity; +flat varying vec3 WsunVec; +uniform mat4 gbufferPreviousModelView; +uniform vec3 previousCameraPosition; +uniform int framemod8; +uniform sampler2D specular; +uniform int frameCounter; +uniform int isEyeInWater; +#include "lib/Shadow_Params.glsl" +#include "lib/color_transforms.glsl" +#include "lib/projections.glsl" +#include "lib/sky_gradient.glsl" +#include "lib/waterBump.glsl" +#include "lib/clouds.glsl" +#include "lib/stars.glsl" +#include "lib/volumetricClouds.glsl" + +const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); +float blueNoise(){ + return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); +} +float ld(float dist) { + return (2.0 * near) / (far + near - dist * (far - near)); +} +float cdist(vec2 coord) { + return max(abs(coord.s-0.5),abs(coord.t-0.5))*2.0; +} +vec2 tapLocation(int sampleNumber,int nb, float nbRot,float jitter,float distort){ + float alpha = (sampleNumber+jitter)/nb; + float angle = jitter*6.28 + alpha * nbRot * 6.28; + + float sin_v, cos_v; + + sin_v = sin(angle); + cos_v = cos(angle); + + return vec2(cos_v, sin_v)*sqrt(alpha); +} +float GGX(vec3 n, vec3 v, vec3 l, float r, float F0) { + r*=r;r*=r; + + vec3 h = l + v; + float hn = inversesqrt(dot(h, h)); + + float dotLH = clamp(dot(h,l)*hn,0.,1.); + float dotNH = clamp(dot(h,n)*hn,0.,1.); + float dotNL = clamp(dot(n,l),0.,1.); + float dotNHsq = dotNH*dotNH; + + float denom = dotNHsq * r - dotNHsq + 1.; + float D = r / (3.141592653589793 * denom * denom); + float F = F0 + (1. - F0) * exp2((-5.55473*dotLH-6.98316)*dotLH); + float k2 = .25 * r; + + return dotNL * D * F / (dotLH*dotLH*(1.0-k2)+k2); +} +vec3 applyBump(mat3 tbnMatrix, vec3 bump){ + float bumpmult = 1.0; + bump = bump * vec3(bumpmult, bumpmult, bumpmult) + vec3(0.0f, 0.0f, 1.0f - bumpmult); + return normalize(bump*tbnMatrix); +} +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +/* RENDERTARGETS:2,7,13 */ +void main() { + if (gl_FragCoord.x * texelSize.x < RENDER_SCALE.x && gl_FragCoord.y * texelSize.y < RENDER_SCALE.y ) { + vec2 tempOffset=offsets[framemod8]; + float iswater = normalMat.w; + vec3 fragC = gl_FragCoord.xyz*vec3(texelSize,1.0); + vec3 fragpos = toScreenSpace(gl_FragCoord.xyz*vec3(texelSize/RENDER_SCALE,1.0)-vec3(vec2(tempOffset)*texelSize*0.5,0.0)); + + // color n stuff + gl_FragData[0] = texture2D(texture, lmtexcoord.xy)*color; + float avgBlockLum = luma(texture2DLod(texture, lmtexcoord.xy,128).rgb*color.rgb); + gl_FragData[0].rgb = clamp((gl_FragData[0].rgb)*pow(avgBlockLum,-0.33)*0.85,0.0,1.0); + vec3 albedo = toLinear(gl_FragData[0].rgb); + + + gl_FragData[2] = vec4(albedo, gl_FragData[0].a); + + // specular + vec2 specularstuff = texture2D(specular, lmtexcoord.xy, -1).rg; + + // normals + vec3 normal = normalMat.xyz; + + vec3 p3 = mat3(gbufferModelViewInverse) * fragpos + gbufferModelViewInverse[3].xyz; + mat3 tbnMatrix = mat3(tangent.x, binormal.x, normal.x, + tangent.y, binormal.y, normal.y, + tangent.z, binormal.z, normal.z); + + vec3 normalTex = texture2D(normals, lmtexcoord.xy, -1).rgb; + normalTex.xy = normalTex.xy*2.0-1.0; + normalTex.z = clamp(sqrt(1.0 - dot(normalTex.xy, normalTex.xy)),0.0,1.0); + normal = applyBump(tbnMatrix,normalTex); + + + //other shit + float NdotL = lightSign*dot(normal,sunVec); + float diffuseSun = clamp(NdotL,0.0f,1.0f); + + vec3 direct = texelFetch2D(gaux1,ivec2(6,37),0).rgb/3.1415; + + float shading = 1.0; + float cloudShadow = 1.0; + + //compute shadows only if not backface + if (diffuseSun > 0.001) { + vec3 p3 = mat3(gbufferModelViewInverse) * fragpos + gbufferModelViewInverse[3].xyz; + vec3 projectedShadowPosition = mat3(shadowModelView) * p3 + shadowModelView[3].xyz; + projectedShadowPosition = diagonal3(shadowProjection) * projectedShadowPosition + shadowProjection[3].xyz; + + //apply distortion + float distortFactor = calcDistort(projectedShadowPosition.xy); + projectedShadowPosition.xy *= distortFactor; + //do shadows only if on shadow map + if (abs(projectedShadowPosition.x) < 1.0-1.5/shadowMapResolution && abs(projectedShadowPosition.y) < 1.0-1.5/shadowMapResolution){ + const float threshMul = max(2048.0/shadowMapResolution*shadowDistance/128.0,0.95); + float distortThresh = (sqrt(1.0-diffuseSun*diffuseSun)/diffuseSun+0.7)/distortFactor; + float diffthresh = distortThresh/6000.0*threshMul; + + projectedShadowPosition = projectedShadowPosition * vec3(0.5,0.5,0.5/6.0) + vec3(0.5,0.5,0.5); + + shading = 0.0; + float noise = blueNoise(); + float rdMul = 4.0/shadowMapResolution; + for(int i = 0; i < 9; i++){ + vec2 offsetS = tapLocation(i,9, 1.618,noise,0.0); + + float weight = 1.0+(i+noise)*rdMul/9.0*shadowMapResolution; + shading += shadow2D(shadow,vec3(projectedShadowPosition + vec3(rdMul*offsetS,-diffthresh*weight))).x/9.0; + } + direct *= shading; + } + // vec3 campos = (p3 + cameraPosition)-319 ; + // #ifdef VOLUMETRIC_CLOUDS + // #ifdef CLOUDS_SHADOWS + // // get cloud position + // vec3 cloudPos = campos*Cloud_Size + WsunVec/abs(WsunVec.y) * (2250 - campos.y*Cloud_Size); + // // get the cloud density and apply it + // cloudShadow = getCloudDensity(cloudPos, 1); + // cloudShadow = exp(-cloudShadow*sqrt(cloudDensity)*25); + + // // make these turn to zero when occluded by the cloud shadow + // direct *= cloudShadow; + // #endif + // #endif + } + + + direct *= (iswater > 0.9 ? 0.2: 1.0)*diffuseSun*lmtexcoord.w; + + vec3 diffuseLight = direct + texture2D(gaux1,(lmtexcoord.zw*15.+0.5)*texelSize).rgb; + vec3 color = diffuseLight*albedo*8./150./3.; + + if (iswater >= 0.0){ + + float roughness = iswater > 0.4 ? 0.0 : specularstuff.r > 0.0 ? pow(1.0-specularstuff.r,2.0) : 0.05*(1.0-gl_FragData[0].a); + float f0 = iswater > 0.4 ? 0.02 : specularstuff.g; + + float F0 = f0; + + + vec3 reflectedVector = reflect(normalize(fragpos), normal); + float normalDotEye = dot(normal, normalize(fragpos)); + float fresnel = pow(clamp(1.0 + normalDotEye,0.0,1.0), 5.0); + + fresnel = mix(F0,1.0,fresnel); + + + vec3 wrefl = mat3(gbufferModelViewInverse)*reflectedVector; + vec3 sky_c = mix(skyCloudsFromTex(wrefl,gaux1).rgb,texture2D(gaux1,(lmtexcoord.zw*15.+0.5)*texelSize).rgb*0.5,isEyeInWater); + sky_c.rgb *= lmtexcoord.w*lmtexcoord.w*255*255/240./240./150.*8./3.; + + vec4 reflection = vec4(sky_c.rgb,0.); + reflection.rgb = mix(sky_c.rgb, reflection.rgb, reflection.a); + + #ifdef SUN_MICROFACET_SPECULAR + vec3 sunSpec = GGX(normal,-normalize(fragpos), lightSign*sunVec, rainStrength*0.2+roughness+0.05+clamp(-lightSign*0.15,0.0,1.0), f0) * texelFetch2D(gaux1,ivec2(6,37),0).rgb*8./3./150.0/3.1415 * (1.0-rainStrength*0.9); + #else + vec3 sunSpec = drawSun(dot(lightSign*sunVec,reflectedVector), 0.0,texelFetch2D(gaux1,ivec2(6,37),0).rgb,vec3(0.0))*8./3./150.0*fresnel/3.1415 * (1.0-rainStrength*0.9); + #endif + + + // vec3 albedoTint = F0 >= (230.0/255.0) ? clamp(color.rgb + fresnel,0.0,1.0) : vec3(1.0); + // reflection.rgb *= albedoTint; + // sunSpec.rgb *= albedoTint; + + vec3 reflected = reflection.rgb*fresnel+shading*sunSpec; + + float alpha0 = gl_FragData[0].a; + + //correct alpha channel with fresnel + gl_FragData[0].a = -gl_FragData[0].a*fresnel+gl_FragData[0].a+fresnel; + gl_FragData[0].rgb =clamp(color/gl_FragData[0].a*alpha0*(1.0-fresnel)*0.1+reflected/gl_FragData[0].a*0.1,0.0,65100.0); + if (gl_FragData[0].r > 65000.) gl_FragData[0].rgba = vec4(0.); + } + else + gl_FragData[0].rgb = color*0.1; + + gl_FragData[1] = vec4(albedo,iswater); + } +} diff --git a/shaders/gbuffers_hand_water.vsh b/shaders/gbuffers_hand_water.vsh new file mode 100644 index 0000000..0c5e6a1 --- /dev/null +++ b/shaders/gbuffers_hand_water.vsh @@ -0,0 +1,107 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + +#include "/lib/res_params.glsl" + + +/* +!! DO NOT REMOVE !! +This code is from Chocapic13' shaders +Read the terms of modification and sharing before changing something below please ! +!! DO NOT REMOVE !! +*/ +//#define Vanilla_like_water // vanilla water texture along with shader water stuff + +varying vec4 lmtexcoord; +varying vec4 color; +varying vec4 normalMat; +varying vec3 binormal; +varying vec3 tangent; +varying float dist; +uniform mat4 gbufferModelViewInverse; +varying vec3 viewVector; +attribute vec4 at_tangent; +attribute vec4 mc_Entity; + +uniform sampler2D colortex4; +uniform vec3 sunPosition; +flat varying vec4 lightCol; +flat varying vec3 WsunVec; +uniform float sunElevation; + +varying vec4 tangent_other; +#define SHADOW_MAP_BIAS 0.8 + + +uniform vec2 texelSize; +uniform int framemod8; + const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); +#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) +#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) +vec4 toClipSpace3(vec3 viewSpacePosition) { + return vec4(projMAD(gl_ProjectionMatrix, viewSpacePosition),-viewSpacePosition.z); +} +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + lmtexcoord.xy = (gl_MultiTexCoord0).xy; + vec2 lmcoord = gl_MultiTexCoord1.xy/255.; + lmtexcoord.zw = lmcoord; + + vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz; + gl_Position = toClipSpace3(position); + color = gl_Color; + float mat = 0.0; + if(mc_Entity.x == 8.0 || mc_Entity.x == 9.0) { + mat = 1.0; + + gl_Position.z -= 1e-4; + } + + + if (mc_Entity.x == 10002) mat = 0.01; + if (mc_Entity.x == 72) mat = 0.5; + + normalMat = vec4(normalize( gl_NormalMatrix*gl_Normal),mat); + + + + tangent_other = vec4(normalize(gl_NormalMatrix * at_tangent.rgb),normalMat.a); + + tangent = normalize( gl_NormalMatrix *at_tangent.rgb); + binormal = normalize(cross(tangent.rgb,normalMat.xyz)*at_tangent.w); + + mat3 tbnMatrix = mat3(tangent.x, binormal.x, normalMat.x, + tangent.y, binormal.y, normalMat.y, + tangent.z, binormal.z, normalMat.z); + + dist = length(gl_ModelViewMatrix * gl_Vertex); + + viewVector = ( gl_ModelViewMatrix * gl_Vertex).xyz; + viewVector = normalize(tbnMatrix * viewVector); + + + #ifdef TAA_UPSCALING + gl_Position.xy = gl_Position.xy * RENDER_SCALE + RENDER_SCALE * gl_Position.w - gl_Position.w; + #endif + #ifdef TAA + gl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize; + #endif + + vec3 sc = texelFetch2D(colortex4,ivec2(6,37),0).rgb; + + lightCol.a = float(sunElevation > 1e-5)*2-1.; + lightCol.rgb = sc; + WsunVec = lightCol.a*normalize(mat3(gbufferModelViewInverse) *sunPosition); +} diff --git a/shaders/gbuffers_skybasic.fsh b/shaders/gbuffers_skybasic.fsh new file mode 100644 index 0000000..563a191 --- /dev/null +++ b/shaders/gbuffers_skybasic.fsh @@ -0,0 +1,9 @@ +#version 120 + +/* DRAWBUFFERS:3 */ + + + +void main() { + +} diff --git a/shaders/gbuffers_skybasic.vsh b/shaders/gbuffers_skybasic.vsh new file mode 100644 index 0000000..90c4b9e --- /dev/null +++ b/shaders/gbuffers_skybasic.vsh @@ -0,0 +1,14 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + + +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + + gl_Position.w = -1.0; +} diff --git a/shaders/gbuffers_skytextured.fsh b/shaders/gbuffers_skytextured.fsh new file mode 100644 index 0000000..2852cff --- /dev/null +++ b/shaders/gbuffers_skytextured.fsh @@ -0,0 +1,24 @@ +#version 120 + +/* +!! DO NOT REMOVE !! +This code is from Chocapic13' shaders +Read the terms of modification and sharing before changing something below please ! +!! DO NOT REMOVE !! +*/ + +/* RENDERTARGETS:12 */ + +varying vec4 color; +varying vec2 texcoord; +//faster and actually more precise than pow 2.2 +vec3 toLinear(vec3 sRGB){ + return sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878); +} + +uniform sampler2D texture; +void main() { + + gl_FragData[0] = texture2D(texture,texcoord.xy)*color; + gl_FragData[0].rgb = gl_FragData[0].rgb*gl_FragData[0].a; +} diff --git a/shaders/gbuffers_skytextured.vsh b/shaders/gbuffers_skytextured.vsh new file mode 100644 index 0000000..4722357 --- /dev/null +++ b/shaders/gbuffers_skytextured.vsh @@ -0,0 +1,38 @@ +#version 120 +#include "/lib/res_params.glsl" + +/* +!! DO NOT REMOVE !! +This code is from Chocapic13' shaders +Read the terms of modification and sharing before changing something below please ! +!! DO NOT REMOVE !! +*/ + +varying vec4 color; +varying vec2 texcoord; + +uniform vec2 texelSize; +uniform int framemod8; + const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); +void main() { + texcoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).st; + + + + color = gl_Color; + + gl_Position = ftransform(); + #ifdef TAA_UPSCALING + gl_Position.xy = gl_Position.xy * RENDER_SCALE + RENDER_SCALE * gl_Position.w - gl_Position.w; + #endif + #ifdef TAA + gl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize; + #endif +} diff --git a/shaders/gbuffers_spidereyes.fsh b/shaders/gbuffers_spidereyes.fsh new file mode 100644 index 0000000..aa3de8b --- /dev/null +++ b/shaders/gbuffers_spidereyes.fsh @@ -0,0 +1,32 @@ +#version 120 + +/* +!! DO NOT REMOVE !! +This code is from Chocapic13' shaders +Read the terms of modification and sharing before changing something below please ! +!! DO NOT REMOVE !! +*/ + + +varying vec4 color; +varying vec2 texcoord; + +uniform sampler2D texture; +vec3 toLinear(vec3 sRGB){ + return sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878); +} +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + vec4 albedo = texture2D(texture, texcoord); + + albedo *= color; + albedo.rgb = toLinear(albedo.rgb)*0.33; +/* DRAWBUFFERS:2 */ + gl_FragData[0] = albedo; + +} diff --git a/shaders/gbuffers_spidereyes.vsh b/shaders/gbuffers_spidereyes.vsh new file mode 100644 index 0000000..cfe2b7d --- /dev/null +++ b/shaders/gbuffers_spidereyes.vsh @@ -0,0 +1,37 @@ +#version 120 +#include "/lib/res_params.glsl" +/* +!! DO NOT REMOVE !! +This code is from Chocapic13' shaders +Read the terms of modification and sharing before changing something below please ! +!! DO NOT REMOVE !! +*/ + +varying vec4 color; +varying vec2 texcoord; + +uniform vec2 texelSize; +uniform int framemod8; + const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); +void main() { + + + texcoord = (gl_MultiTexCoord0).xy; + color = gl_Color; + + gl_Position = ftransform(); + #ifdef TAA_UPSCALING + gl_Position.xy = gl_Position.xy * RENDER_SCALE + RENDER_SCALE * gl_Position.w - gl_Position.w; + #endif + #ifdef TAA + gl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize; + #endif + +} diff --git a/shaders/gbuffers_terrain.fsh b/shaders/gbuffers_terrain.fsh new file mode 100644 index 0000000..97072f6 --- /dev/null +++ b/shaders/gbuffers_terrain.fsh @@ -0,0 +1,4 @@ +#version 120 + +#define WORLD +#include "gbuffers_all_solid.fsh" \ No newline at end of file diff --git a/shaders/gbuffers_terrain.vsh b/shaders/gbuffers_terrain.vsh new file mode 100644 index 0000000..5078151 --- /dev/null +++ b/shaders/gbuffers_terrain.vsh @@ -0,0 +1,4 @@ +#version 120 + +#define WORLD +#include "gbuffers_all_solid.vsh" \ No newline at end of file diff --git a/shaders/gbuffers_textured.fsh b/shaders/gbuffers_textured.fsh new file mode 100644 index 0000000..0e4abca --- /dev/null +++ b/shaders/gbuffers_textured.fsh @@ -0,0 +1,352 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable +#extension GL_ARB_shader_texture_lod : enable + +//#define POM +#define POM_MAP_RES 128.0 // [16.0 32.0 64.0 128.0 256.0 512.0 1024.0] Increase to improve POM quality +#define POM_DEPTH 0.1 // [0.025 0.05 0.075 0.1 0.125 0.15 0.20 0.25 0.30 0.50 0.75 1.0] //Increase to increase POM strength +#define MAX_ITERATIONS 50 // [5 10 15 20 25 30 40 50 60 70 80 90 100 125 150 200 400] //Improves quality at grazing angles (reduces performance) +#define MAX_DIST 25.0 // [5.0 10.0 15.0 20.0 25.0 30.0 40.0 50.0 60.0 70.0 80.0 90.0 100.0 125.0 150.0 200.0 400.0] //Increases distance at which POM is calculated +//#define USE_LUMINANCE_AS_HEIGHTMAP //Can generate POM on any texturepack (may look weird in some cases) +#define Texture_MipMap_Bias -1.00 // Uses a another mip level for textures. When reduced will increase texture detail but may induce a lot of shimmering. [-5.00 -4.75 -4.50 -4.25 -4.00 -3.75 -3.50 -3.25 -3.00 -2.75 -2.50 -2.25 -2.00 -1.75 -1.50 -1.25 -1.00 -0.75 -0.50 -0.25 0.00 0.25 0.50 0.75 1.00 1.25 1.50 1.75 2.00 2.25 2.50 2.75 3.00 3.25 3.50 3.75 4.00 4.25 4.50 4.75 5.00] +#define DISABLE_ALPHA_MIPMAPS //Disables mipmaps on the transparency of alpha-tested things like foliage, may cost a few fps in some cases + + +#define SSAO // screen-space ambient occlusion. +#define texture_ao // ambient occlusion on the texture + + +#ifndef USE_LUMINANCE_AS_HEIGHTMAP +#ifndef MC_NORMAL_MAP +#undef POM +#endif +#endif + +#ifdef POM +#define MC_NORMAL_MAP +#endif + +const float mincoord = 1.0/4096.0; +const float maxcoord = 1.0-mincoord; +const vec3 intervalMult = vec3(1.0, 1.0, 1.0/POM_DEPTH)/POM_MAP_RES * 1.0; + +const float MAX_OCCLUSION_DISTANCE = MAX_DIST; +const float MIX_OCCLUSION_DISTANCE = MAX_DIST*0.9; +const int MAX_OCCLUSION_POINTS = MAX_ITERATIONS; + +uniform vec2 texelSize; +#ifdef POM +varying vec4 vtexcoordam; // .st for add, .pq for mul +varying vec4 vtexcoord; + +uniform int framemod8; +#endif +#include "/lib/res_params.glsl" +varying vec4 lmtexcoord; +varying vec4 color; +varying vec4 normalMat; +#ifdef MC_NORMAL_MAP +varying vec4 tangent; +uniform float wetness; +uniform sampler2D normals; +uniform sampler2D specular; +#endif +#ifdef POM +vec2 dcdx = dFdx(vtexcoord.st*vtexcoordam.pq)*exp2(Texture_MipMap_Bias); +vec2 dcdy = dFdy(vtexcoord.st*vtexcoordam.pq)*exp2(Texture_MipMap_Bias); +#endif +uniform sampler2D texture; +uniform sampler2D colortex1;//albedo(rgb),material(alpha) RGBA16 +uniform float frameTimeCounter; +uniform int frameCounter; +uniform mat4 gbufferProjectionInverse; +uniform mat4 gbufferModelView; +uniform mat4 gbufferProjection; +uniform mat4 gbufferModelViewInverse; +uniform sampler2D noisetex;//depth + +float interleaved_gradientNoise(){ + return fract(52.9829189*fract(0.06711056*gl_FragCoord.x + 0.00583715*gl_FragCoord.y)+frameTimeCounter*51.9521); +} +float blueNoise(){ + return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); +} +float R2_dither(){ + vec2 alpha = vec2(0.75487765, 0.56984026); + return fract(alpha.x * gl_FragCoord.x + alpha.y * gl_FragCoord.y + 1.0/1.6180339887 * frameCounter) ; +} +vec2 decodeVec2(float a){ + const vec2 constant1 = 65535. / vec2( 256., 65536.); + const float constant2 = 256. / 255.; + return fract( a * constant1 ) * constant2 ; +} +mat3 inverse(mat3 m) { + float a00 = m[0][0], a01 = m[0][1], a02 = m[0][2]; + float a10 = m[1][0], a11 = m[1][1], a12 = m[1][2]; + float a20 = m[2][0], a21 = m[2][1], a22 = m[2][2]; + + float b01 = a22 * a11 - a12 * a21; + float b11 = -a22 * a10 + a12 * a20; + float b21 = a21 * a10 - a11 * a20; + + float det = a00 * b01 + a01 * b11 + a02 * b21; + + return mat3(b01, (-a22 * a01 + a02 * a21), (a12 * a01 - a02 * a11), + b11, (a22 * a00 - a02 * a20), (-a12 * a00 + a02 * a10), + b21, (-a21 * a00 + a01 * a20), (a11 * a00 - a01 * a10)) / det; +} + +vec3 viewToWorld(vec3 viewPosition) { + vec4 pos; + pos.xyz = viewPosition; + pos.w = 0.0; + pos = gbufferModelViewInverse * pos; + return pos.xyz; +} +vec3 worldToView(vec3 worldPos) { + vec4 pos = vec4(worldPos, 0.0); + pos = gbufferModelView * pos; + return pos.xyz; +} +vec4 encode (vec3 n, vec2 lightmaps){ + n.xy = n.xy / dot(abs(n), vec3(1.0)); + n.xy = n.z <= 0.0 ? (1.0 - abs(n.yx)) * sign(n.xy) : n.xy; + vec2 encn = clamp(n.xy * 0.5 + 0.5,-1.0,1.0); + + return vec4(encn,vec2(lightmaps.x,lightmaps.y)); +} + +//encode normal in two channels (xy),torch(z) and sky lightmap (w) +// vec4 encode_old (vec3 n){ +// return vec4(n.xy*inversesqrt(n.z*8.0+8.0) + 0.5,vec2(lmtexcoord.z,lmtexcoord.w)); +// } +// vec4 encode_old (vec3 n, vec2 lightmaps){ +// return vec4(n.xy*inversesqrt(n.z*8.0+8.0) + 0.5,vec2(lightmaps.x,lightmaps.y)); +// } + + + +#ifdef MC_NORMAL_MAP +vec3 applyBump(mat3 tbnMatrix, vec3 bump) +{ + float bumpmult = 1.0; + + bump = bump * vec3(bumpmult, bumpmult, bumpmult) + vec3(0.0f, 0.0f, 1.0f - bumpmult); + + return normalize(bump*tbnMatrix); +} +#endif + +//encoding by jodie +float encodeVec2(vec2 a){ + const vec2 constant1 = vec2( 1., 256.) / 65535.; + vec2 temp = floor( a * 255. ); + return temp.x*constant1.x+temp.y*constant1.y; +} +float encodeVec2(float x,float y){ + return encodeVec2(vec2(x,y)); +} + +#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) +#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) + +vec3 toScreenSpace(vec3 p) { + vec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); + vec3 p3 = p * 2. - 1.; + vec4 fragposition = iProjDiag * p3.xyzz + gbufferProjectionInverse[3]; + return fragposition.xyz / fragposition.w; +} +vec3 toClipSpace3(vec3 viewSpacePosition) { + return projMAD(gbufferProjection, viewSpacePosition) / -viewSpacePosition.z * 0.5 + 0.5; +} +#ifdef POM +vec4 readNormal(in vec2 coord) +{ + return texture2DGradARB(normals,fract(coord)*vtexcoordam.pq+vtexcoordam.st,dcdx,dcdy); +} +vec4 readTexture(in vec2 coord) +{ + return texture2DGradARB(texture,fract(coord)*vtexcoordam.pq+vtexcoordam.st,dcdx,dcdy); +} +#endif +float luma(vec3 color) { + return dot(color,vec3(0.21, 0.72, 0.07)); +} + + +vec3 toLinear(vec3 sRGB){ + return sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878); +} + + +const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +/* DRAWBUFFERS:178 */ +void main() { + // float noise = interleaved_gradientNoise(); + + + float phi = 2 * 3.14159265359; + float noise = fract(fract(frameCounter * (1.0 / phi)) + interleaved_gradientNoise() ) ; + // float noise = interleaved_gradientNoise(); + + + vec3 normal = normalMat.xyz; + #ifdef MC_NORMAL_MAP + vec3 tangent2 = normalize(cross(tangent.rgb,normal)*tangent.w); + mat3 tbnMatrix = mat3(tangent.x, tangent2.x, normal.x, + tangent.y, tangent2.y, normal.y, + tangent.z, tangent2.z, normal.z); + #endif + + #ifdef POM + vec2 tempOffset=offsets[framemod8]; + vec2 adjustedTexCoord = fract(vtexcoord.st)*vtexcoordam.pq+vtexcoordam.st; + vec3 fragpos = toScreenSpace(gl_FragCoord.xyz*vec3(texelSize/RENDER_SCALE,1.0)-vec3(vec2(tempOffset)*texelSize*0.5,0.0)); + vec3 viewVector = normalize(tbnMatrix*fragpos); + float dist = length(fragpos); + + // #ifdef Depth_Write_POM + gl_FragDepth = gl_FragCoord.z; + // #endif + + if (dist < MAX_OCCLUSION_DISTANCE) { + + if ( viewVector.z < 0.0 && readNormal(vtexcoord.st).a < 0.9999 && readNormal(vtexcoord.st).a > 0.00001) { + + vec3 interval = viewVector.xyz /-viewVector.z/MAX_OCCLUSION_POINTS*POM_DEPTH; + vec3 coord = vec3(vtexcoord.st, 1.0); + coord += noise*interval; + float sumVec = noise; + for (int loopCount = 0; (loopCount < MAX_OCCLUSION_POINTS) && (1.0 - POM_DEPTH + POM_DEPTH*readNormal(coord.st).a < coord.p) &&coord.p >= 0.0; ++loopCount) { coord = coord+interval; sumVec += 1.0; } + + if (coord.t < mincoord) { + if (readTexture(vec2(coord.s,mincoord)).a == 0.0) { + coord.t = mincoord; + discard; + } + } + adjustedTexCoord = mix(fract(coord.st)*vtexcoordam.pq+vtexcoordam.st, adjustedTexCoord, max(dist-MIX_OCCLUSION_DISTANCE,0.0)/(MAX_OCCLUSION_DISTANCE-MIX_OCCLUSION_DISTANCE)); + + + vec3 truePos = fragpos + sumVec*inverse(tbnMatrix)*interval; + // #ifdef Depth_Write_POM + gl_FragDepth = toClipSpace3(truePos).z; + // #endif + + } + } + + vec4 data0 = texture2DGradARB(texture, adjustedTexCoord.xy,dcdx,dcdy); + #ifdef DISABLE_ALPHA_MIPMAPS + data0.a = texture2DGradARB(texture, adjustedTexCoord.xy,vec2(0.),vec2(0.0)).a; + #endif + if (data0.a > 0.1) data0.a = normalMat.a; + else data0.a = 0.0; + + + // normal = applyBump(tbnMatrix,texture2DGradARB(normals,adjustedTexCoord.xy,dcdx,dcdy).xyz*2.-1.); + // data0.rgb*=color.rgb; + // vec4 data1 = clamp(noise*exp2(-8.)+encode_old(normal),0.,1.0); + // gl_FragData[0] = vec4(encodeVec2(data0.x,data1.x),encodeVec2(data0.y,data1.y),encodeVec2(data0.z,data1.z),encodeVec2(data1.w,data0.w)); + + + vec2 lm = lmtexcoord.zw; + + // vec3 normalTex = texture2DGradARB(normals,adjustedTexCoord.xy,dcdx,dcdy).xyz; + // normal = applyBump(tbnMatrix,texture2DGradARB(normals,adjustedTexCoord.xy,dcdx,dcdy).xyz*2.0-1.0); + + // #ifdef MC_NORMAL_MAP + vec3 normalTex = texture2DGradARB(normals, adjustedTexCoord.xy, dcdx,dcdy).rgb; + #ifndef SSAO + #ifdef texture_ao + lm *= clamp( pow(normalTex.b,0.4) ,0,1); // texture ao? i think? i dont know + // lm *= clamp(0.5 + pow(normalTex.b,0.1) - max(normalTex.g,0),0,1) ; // texture ao? i think? i dont know + #endif + #endif + normalTex.xy = normalTex.xy*2.0-1.0; + normalTex.z = sqrt(1.0 - dot(normalTex.xy, normalTex.xy)); + normal = applyBump(tbnMatrix,normalTex); + // #endif + + + data0.rgb*=color.rgb; + + float avgBlockLum = luma(texture2DLod(texture, lmtexcoord.xy,128).rgb*color.rgb); + data0.rgb = clamp(data0.rgb*pow(avgBlockLum,-0.33)*0.85,0.0,1.0); + + vec4 data1 = clamp(encode(viewToWorld(normal), lm),0.,1.0); + + gl_FragData[0] = vec4(encodeVec2(data0.x,data1.x),encodeVec2(data0.y,data1.y),encodeVec2(data0.z,data1.z),encodeVec2(data1.w,data0.w)); + gl_FragData[1] = texture2DGradARB(specular, adjustedTexCoord.xy,dcdx,dcdy); + gl_FragData[1].a = 0.0; + + #else + + vec4 data0 = texture2D(texture, lmtexcoord.xy, Texture_MipMap_Bias); + + vec4 specularMap = texture2D(specular, lmtexcoord.xy, Texture_MipMap_Bias); + gl_FragData[2].rgba = specularMap; + + data0.rgb *= color.rgb + vec3(0,255,0); + + float avgBlockLum = luma(texture2DLod(texture, lmtexcoord.xy,128).rgb*color.rgb); + data0.rgb = clamp(data0.rgb*pow(avgBlockLum,-0.33)*0.85,0.0,1.0); + + #ifdef DISABLE_ALPHA_MIPMAPS + data0.a = texture2DLod(texture,lmtexcoord.xy,0).a; + #endif + + + if (data0.a > 0.1) data0.a = normalMat.a; + else data0.a = 0.0; + + vec2 lm = lmtexcoord.zw; + + #ifdef MC_NORMAL_MAP + vec3 normalTex = texture2D(normals, lmtexcoord.xy, Texture_MipMap_Bias).rgb; + // #ifndef SSAO + // #ifdef texture_ao + // lm *= clamp( pow(normalTex.b,0.4) ,0,1); // texture ao? i think? i dont know + // // lm *= clamp(0.5 + pow(normalTex.b,0.1) - max(normalTex.g,0),0,1) ; // texture ao? i think? i dont know + // #endif + // #endif + normalTex.xy = normalTex.xy*2.0-1.0; + normalTex.z = clamp(sqrt(1.0 - dot(normalTex.xy, normalTex.xy)),0.0,1.0); + normal = applyBump(tbnMatrix,normalTex); + #endif + + // #ifdef MC_NORMAL_MAP + // normal =clamp( applyBump(tbnMatrix,texture2D(normals, lmtexcoord.xy,Texture_MipMap_Bias).rgb*2.0-1.0),-1.,1.); + // #endif + + // vec4 data1 = clamp(noise/256.+encode(normal, lm),0.,1.0); + vec4 data1 = clamp(encode(viewToWorld(normal), lm),0.,1.0); + + vec2 texcoord = gl_FragCoord.xy*lmtexcoord.xy; + vec4 data = texture2D(colortex1,texcoord); + vec4 dataUnpacked0 = vec4(decodeVec2(data.x),decodeVec2(data.y)); + vec4 dataUnpacked1 = vec4(decodeVec2(data.z),decodeVec2(data.w)); + + gl_FragData[0] = vec4(encodeVec2(data0.x,data1.x), encodeVec2(data0.y,data1.y), encodeVec2(data0.z,data1.z), encodeVec2(data1.w,data0.w)); + + gl_FragData[1].a = 0.0; + + + // float emissionMat = specularMap.a < 1.0 ? specularMap.a * specularMap.a : 0.0; + // gl_FragData[0].rgb = mix(gl_FragData[0].rgb, vec3(emissionMat) ,1); + + #endif + +} \ No newline at end of file diff --git a/shaders/gbuffers_textured.vsh b/shaders/gbuffers_textured.vsh new file mode 100644 index 0000000..a1358ce --- /dev/null +++ b/shaders/gbuffers_textured.vsh @@ -0,0 +1,165 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable +#include "/lib/res_params.glsl" +#define WAVY_PLANTS +#define WAVY_STRENGTH 1.0 //[0.1 0.25 0.5 0.75 1.0 1.25 1.5 1.75 2.0] +#define WAVY_SPEED 1.0 //[0.001 0.01 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 1.0 1.25 1.5 2.0 3.0 4.0] +#define SEPARATE_AO +//#define POM +//#define USE_LUMINANCE_AS_HEIGHTMAP //Can generate POM on any texturepack (may look weird in some cases) + +#define SSS_mode 1 // [1 2] + + +#ifndef USE_LUMINANCE_AS_HEIGHTMAP +#ifndef MC_NORMAL_MAP +#undef POM +#endif +#endif + +#ifdef POM +#define MC_NORMAL_MAP +#endif + +/* +!! DO NOT REMOVE !! +This code is from Chocapic13' shaders +Read the terms of modification and sharing before changing something below please ! +!! DO NOT REMOVE !! +*/ + +varying vec4 lmtexcoord; +varying vec4 color; +varying vec4 normalMat; +#ifdef POM +varying vec4 vtexcoordam; // .st for add, .pq for mul +varying vec4 vtexcoord; +#endif + +#ifdef MC_NORMAL_MAP +varying vec4 tangent; +attribute vec4 at_tangent; +#endif + +uniform float frameTimeCounter; +const float PI48 = 150.796447372*WAVY_SPEED; +float pi2wt = PI48*frameTimeCounter; +attribute vec4 mc_Entity; +uniform mat4 gbufferModelView; +uniform mat4 gbufferModelViewInverse; +attribute vec4 mc_midTexCoord; +uniform vec3 cameraPosition; +uniform vec2 texelSize; +uniform int framemod8; +const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); +#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) +#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) +vec4 toClipSpace3(vec3 viewSpacePosition) { + return vec4(projMAD(gl_ProjectionMatrix, viewSpacePosition),-viewSpacePosition.z); +} + +vec2 calcWave(in vec3 pos) { + + float magnitude = abs(sin(dot(vec4(frameTimeCounter, pos),vec4(1.0,0.005,0.005,0.005)))*0.5+0.72)*0.013; + vec2 ret = (sin(pi2wt*vec2(0.0063,0.0015)*4. - pos.xz + pos.y*0.05)+0.1)*magnitude; + + return ret; +} + +vec3 calcMovePlants(in vec3 pos) { + vec2 move1 = calcWave(pos ); + float move1y = -length(move1); + return vec3(move1.x,move1y,move1.y)*5.*WAVY_STRENGTH; +} + +vec3 calcWaveLeaves(in vec3 pos, in float fm, in float mm, in float ma, in float f0, in float f1, in float f2, in float f3, in float f4, in float f5) { + + float magnitude = abs(sin(dot(vec4(frameTimeCounter, pos),vec4(1.0,0.005,0.005,0.005)))*0.5+0.72)*0.013; + vec3 ret = (sin(pi2wt*vec3(0.0063,0.0224,0.0015)*1.5 - pos))*magnitude; + + return ret; +} + +vec3 calcMoveLeaves(in vec3 pos, in float f0, in float f1, in float f2, in float f3, in float f4, in float f5, in vec3 amp1, in vec3 amp2) { + vec3 move1 = calcWaveLeaves(pos , 0.0054, 0.0400, 0.0400, 0.0127, 0.0089, 0.0114, 0.0063, 0.0224, 0.0015) * amp1; + return move1*5.*WAVY_STRENGTH; +} +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + lmtexcoord.xy = (gl_MultiTexCoord0).xy; + #ifdef POM + vec2 midcoord = (gl_TextureMatrix[0] * mc_midTexCoord).st; + vec2 texcoordminusmid = lmtexcoord.xy-midcoord; + vtexcoordam.pq = abs(texcoordminusmid)*2; + vtexcoordam.st = min(lmtexcoord.xy,midcoord-texcoordminusmid); + vtexcoord.xy = sign(texcoordminusmid)*0.5+0.5; + #endif + vec2 lmcoord = gl_MultiTexCoord1.xy/255.; + lmtexcoord.zw = lmcoord; + + vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz; + + color = gl_Color; + + bool istopv = gl_MultiTexCoord0.t < mc_midTexCoord.t; + #ifdef MC_NORMAL_MAP + tangent = vec4(normalize(gl_NormalMatrix *at_tangent.rgb),at_tangent.w); + #endif + + normalMat = vec4(normalize(gl_NormalMatrix *gl_Normal),mc_Entity.x == 10004 || mc_Entity.x == 10003 || mc_Entity.x == 10001 ? 0.5:1.0); + + normalMat.a = mc_Entity.x == 10006? 0.6 : normalMat.a; + normalMat.a = mc_Entity.x == 10007 ? 0.55 : normalMat.a; + + normalMat.a = mc_Entity.x == 10005 ? 0.9 : normalMat.a; + normalMat.a = mc_Entity.x == 10009 ? 0.8 : normalMat.a; + normalMat.a = mc_Entity.x == 99 ? 0.65 : normalMat.a; + + + #ifdef WAVY_PLANTS + if ((mc_Entity.x == 10001 && istopv) && abs(position.z) < 64.0) { + vec3 worldpos = mat3(gbufferModelViewInverse) * position + gbufferModelViewInverse[3].xyz + cameraPosition; + worldpos.xyz += calcMovePlants(worldpos.xyz)*lmtexcoord.w - cameraPosition; + position = mat3(gbufferModelView) * worldpos + gbufferModelView[3].xyz; + } + + if (mc_Entity.x == 10003 && abs(position.z) < 64.0) { + vec3 worldpos = mat3(gbufferModelViewInverse) * position + gbufferModelViewInverse[3].xyz + cameraPosition; + worldpos.xyz += calcMoveLeaves(worldpos.xyz, 0.0040, 0.0064, 0.0043, 0.0035, 0.0037, 0.0041, vec3(1.0,0.2,1.0), vec3(0.5,0.1,0.5))*lmtexcoord.w - cameraPosition; + position = mat3(gbufferModelView) * worldpos + gbufferModelView[3].xyz; + } + #endif + + if (mc_Entity.x == 100){ + color.rgb = normalize(color.rgb)*sqrt(3.0); + normalMat.a = 0.9; + } + + gl_Position = toClipSpace3(position); + #ifdef SEPARATE_AO + lmtexcoord.z *= sqrt(color.a); + lmtexcoord.w *= color.a; + #else + color.rgb*=color.a; + #endif + + + #ifdef TAA_UPSCALING + gl_Position.xy = gl_Position.xy * RENDER_SCALE + RENDER_SCALE * gl_Position.w - gl_Position.w; + #endif + #ifdef TAA + gl_Position.xy += offsets[framemod8] * gl_Position.w * texelSize; + #endif +} diff --git a/shaders/gbuffers_textured_lit.fsh b/shaders/gbuffers_textured_lit.fsh new file mode 100644 index 0000000..bcc6769 --- /dev/null +++ b/shaders/gbuffers_textured_lit.fsh @@ -0,0 +1,5 @@ +#version 120 + +// #define WEATHER +#define PARTICLES +#include "gbuffers_all_particles.fsh" \ No newline at end of file diff --git a/shaders/gbuffers_textured_lit.vsh b/shaders/gbuffers_textured_lit.vsh new file mode 100644 index 0000000..1381905 --- /dev/null +++ b/shaders/gbuffers_textured_lit.vsh @@ -0,0 +1,5 @@ +#version 120 + +// #define WEATHER +#define PARTICLES +#include "gbuffers_all_particles.vsh" \ No newline at end of file diff --git a/shaders/gbuffers_water.fsh b/shaders/gbuffers_water.fsh new file mode 100644 index 0000000..9208bed --- /dev/null +++ b/shaders/gbuffers_water.fsh @@ -0,0 +1,4 @@ +#version 120 + +// #define WORLD +#include "gbuffers_all_translucent.fsh" \ No newline at end of file diff --git a/shaders/gbuffers_water.vsh b/shaders/gbuffers_water.vsh new file mode 100644 index 0000000..5228fab --- /dev/null +++ b/shaders/gbuffers_water.vsh @@ -0,0 +1,4 @@ +#version 120 + +// #define WORLD +#include "gbuffers_all_translucent.vsh" \ No newline at end of file diff --git a/shaders/gbuffers_weather.fsh b/shaders/gbuffers_weather.fsh new file mode 100644 index 0000000..eba2476 --- /dev/null +++ b/shaders/gbuffers_weather.fsh @@ -0,0 +1,5 @@ +#version 120 + +#define WEATHER +#define PARTICLES +#include "gbuffers_all_particles.fsh" \ No newline at end of file diff --git a/shaders/gbuffers_weather.vsh b/shaders/gbuffers_weather.vsh new file mode 100644 index 0000000..b63e120 --- /dev/null +++ b/shaders/gbuffers_weather.vsh @@ -0,0 +1,5 @@ +#version 120 + +#define WEATHER +#define PARTICLES +#include "gbuffers_all_particles.vsh" \ No newline at end of file diff --git a/shaders/lang/en_us.lang b/shaders/lang/en_us.lang new file mode 100644 index 0000000..cba6470 --- /dev/null +++ b/shaders/lang/en_us.lang @@ -0,0 +1,9 @@ +option.indirect_effect = Indirect Lighting +value.indirect_effect.0 = Vanilla AO +value.indirect_effect.1 = SSAO +value.indirect_effect.2 = RTAO +value.indirect_effect.3 = SSGI + +option.ambient_colortype = Coloring Type +value.ambient_colortype.0 = Temperature +value.ambient_colortype.1 = RGB \ No newline at end of file diff --git a/shaders/lib/ROBOBO_sky.glsl b/shaders/lib/ROBOBO_sky.glsl new file mode 100644 index 0000000..0ed71f6 --- /dev/null +++ b/shaders/lib/ROBOBO_sky.glsl @@ -0,0 +1,182 @@ +// uniform float LowCoverage; + +// uniform float isDeserts; +const float sunAngularSize = 0.533333; +const float moonAngularSize = 0.516667; + +//Sky coefficients and heights + +#define airNumberDensity 2.5035422e25 +#define ozoneConcentrationPeak 8e-6 +const float ozoneNumberDensity = airNumberDensity * ozoneConcentrationPeak; +#define ozoneCrossSection vec3(4.51103766177301e-21, 3.2854797958699e-21, 1.96774621921165e-22) + +#define sky_planetRadius 6731e3 + +#define sky_atmosphereHeight 110e3 +#define sky_scaleHeights vec2(8.0e3, 1.2e3) + +#define sky_mieg 0.80 //[0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 ] +#define sky_coefficientRayleighR 5.8 //[0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5.0 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6.0 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7.0 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8.0 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9.0 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10.0 ] +#define sky_coefficientRayleighG 1.35 //[0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5.0 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6.0 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7.0 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8.0 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9.0 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10.0 ] +#define sky_coefficientRayleighB 3.31 //[0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5.0 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6.0 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7.0 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8.0 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9.0 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10.0 ] + +#define sky_coefficientRayleigh vec3(sky_coefficientRayleighR*1e-6, sky_coefficientRayleighG*1e-5, sky_coefficientRayleighB*1e-5) + + +#define sky_coefficientMieR 3.0 //[0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5.0 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6.0 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7.0 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8.0 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9.0 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10.0 ] +#define sky_coefficientMieG 3.0 //[0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5.0 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6.0 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7.0 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8.0 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9.0 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10.0 ] +#define sky_coefficientMieB 3.0 //[0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5.0 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6.0 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7.0 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8.0 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9.0 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10.0 ] + +#define sky_coefficientMie vec3(sky_coefficientMieR*1e-6, sky_coefficientMieG*1e-6, sky_coefficientMieB*1e-6) // Should be >= 2e-6 +const vec3 sky_coefficientOzone = (ozoneCrossSection * (ozoneNumberDensity * 0.2e-6)); // ozone cross section * (ozone number density * (cm ^ 3)) + +const vec2 sky_inverseScaleHeights = 1.0 / sky_scaleHeights; +const vec2 sky_scaledPlanetRadius = sky_planetRadius * sky_inverseScaleHeights; +const float sky_atmosphereRadius = sky_planetRadius + sky_atmosphereHeight; +const float sky_atmosphereRadiusSquared = sky_atmosphereRadius * sky_atmosphereRadius; + +#define sky_coefficientsScattering mat2x3(sky_coefficientRayleigh, sky_coefficientMie) +const mat3 sky_coefficientsAttenuation = mat3(sky_coefficientRayleigh , sky_coefficientMie, sky_coefficientOzone ); // commonly called the extinction coefficient + +#define sun_illuminance 128000.0 //[10000.0 20000.0 30000.0 40000.0 50000.0 60000.0 70000.0 80000.0 90000.0 100000.0 110000.0 120000.0 130000.0 140000.0 160000.0] +#define moon_illuminance 200.0 //[0.0 10.0 20.0 30.0 40.0 50.0 60.0 70.0 80.0 90.0 100.0 150.0 200.0 300.0 400.0 500.0 600.0 700.0 800.0 900.0 1000.0] + +#define sunColorR 1.0 //[0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 ] +#define sunColorG 0.91 //[0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 ] +#define sunColorB 0.81 //[0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 ] + +#define colortype 2 // 1 = RGB sliders for sun/moon color. 2 = blackbody. [1 2] +#define Sun_temp 7000 // [1000 2000 3000 4000 5000 6000 7000 8000 9000 10000] +#define Moon_temp 15000 // [1000 2000 3000 4000 5000 6000 7000 8000 9000 10000] + +// #define sunColorBase mix( vec3(sunColorR,sunColorG,sunColorB), blackbody(50000), LowCoverage) * sun_illuminance + + + + +#define moonColorR 0.9080 //[0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 ] +#define moonColorG 0.9121 //[0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 ] +#define moonColorB 0.8948 //[0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 ] + +#if colortype == 1 + #define sunColorBase vec3(sunColorR,sunColorG,sunColorB) * sun_illuminance + #define moonColorBase vec3(moonColorR,moonColorG,moonColorB) * moon_illuminance //Fake Purkinje effect +#else + #define sunColorBase blackbody(Sun_temp) * sun_illuminance + #define moonColorBase blackbody(Moon_temp) * moon_illuminance //Fake Purkinje effect +#endif + + +float sky_rayleighPhase(float cosTheta) { + const vec2 mul_add = vec2(0.1, 0.28) * rPI; + return cosTheta * mul_add.x + mul_add.y; // optimized version from [Elek09], divided by 4 pi for energy conservation +} + +float sky_miePhase(float cosTheta, const float g) { + float gg = g * g; + return (gg * -0.25 + 0.25) * rPI * pow(-(2.0 * g) * cosTheta + (gg + 1.0), -1.5); +} + +vec2 sky_phase(float cosTheta, const float g) { + return vec2(sky_rayleighPhase(cosTheta), sky_miePhase(cosTheta, g)); +} + +vec3 sky_density(float centerDistance) { + vec2 rayleighMie = exp(centerDistance * -sky_inverseScaleHeights + sky_scaledPlanetRadius); + + // Ozone distribution curve by Sergeant Sarcasm - https://www.desmos.com/calculator/j0wozszdwa + float ozone = exp(-max(0.0, (35000.0 - centerDistance) - sky_planetRadius) * (1.0 / 5000.0)) + * exp(-max(0.0, (centerDistance - 35000.0) - sky_planetRadius) * (1.0 / 15000.0)); + return vec3(rayleighMie, ozone); +} + +vec3 sky_airmass(vec3 position, vec3 direction, float rayLength, const float steps) { + float stepSize = rayLength * (1.0 / steps); + vec3 increment = direction * stepSize; + position += increment * 0.5; + + vec3 airmass = vec3(0.0); + for (int i = 0; i < steps; ++i, position += increment) { + airmass += sky_density(length(position)); + } + + return airmass * stepSize; +} +vec3 sky_airmass(vec3 position, vec3 direction, const float steps) { + float rayLength = dot(position, direction); + rayLength = rayLength * rayLength + sky_atmosphereRadiusSquared - dot(position, position); + if (rayLength < 0.0) return vec3(0.0); + rayLength = sqrt(rayLength) - dot(position, direction); + + return sky_airmass(position, direction, rayLength, steps); +} + +vec3 sky_opticalDepth(vec3 position, vec3 direction, float rayLength, const float steps) { + return sky_coefficientsAttenuation * sky_airmass(position, direction, rayLength, steps); +} +vec3 sky_opticalDepth(vec3 position, vec3 direction, const float steps) { + return sky_coefficientsAttenuation * sky_airmass(position, direction, steps); +} + +vec3 sky_transmittance(vec3 position, vec3 direction, const float steps) { + return exp2(-sky_opticalDepth(position, direction, steps) * rLOG2); +} + + + +vec3 calculateAtmosphere(vec3 background, vec3 viewVector, vec3 upVector, vec3 sunVector, vec3 moonVector, out vec2 pid, out vec3 transmittance, const int iSteps, float noise) { + const int jSteps = 4; + + + vec3 viewPosition = (sky_planetRadius + eyeAltitude) * upVector; + + vec2 aid = rsi(viewPosition, viewVector, sky_atmosphereRadius); + if (aid.y < 0.0) {transmittance = vec3(1.0); return vec3(0.0);} + + pid = rsi(viewPosition, viewVector, sky_planetRadius * 0.998); + bool planetIntersected = pid.y >= 0.0; + + vec2 sd = vec2((planetIntersected && pid.x < 0.0) ? pid.y : max(aid.x, 0.0), (planetIntersected && pid.x > 0.0) ? pid.x : aid.y); + + float stepSize = (sd.y - sd.x) * (1.0 / iSteps); + vec3 increment = viewVector * stepSize; + vec3 position = viewVector * sd.x + viewPosition; + position += increment * (0.34*noise); + vec2 phaseSun = sky_phase(dot(viewVector, sunVector ), sky_mieg); + vec2 phaseMoon = sky_phase(dot(viewVector, moonVector), sky_mieg); + + vec3 scatteringSun = vec3(0.0); + vec3 scatteringMoon = vec3(0.0); + vec3 scatteringAmbient = vec3(0.0); + + transmittance = vec3(1.0); + + + // float low_sun = clamp(pow(1.0-sunVector.y,10.0) + 1.0,1.0, 2.0); + + float high_sun = clamp(pow(sunVector.y+0.6,5),0.0,1.0) * 3.0; // make sunrise less blue, and allow sunset to be bluer + float low_sun = clamp(((1.0-abs(sunVector.y))*3.) - high_sun,1.0,2.5) ; + + for (int i = 0; i < iSteps; ++i, position += increment) { + vec3 density = sky_density(length(position)); + if (density.y > 1e35) break; + vec3 stepAirmass = density * stepSize; + vec3 stepOpticalDepth = sky_coefficientsAttenuation * stepAirmass; + + vec3 stepTransmittance = exp2(-stepOpticalDepth * rLOG2); + vec3 stepTransmittedFraction = clamp01((stepTransmittance - 1.0) / -stepOpticalDepth); + vec3 stepScatteringVisible = transmittance * stepTransmittedFraction; + + scatteringSun += sky_coefficientsScattering * (stepAirmass.xy * phaseSun ) * stepScatteringVisible * sky_transmittance(position, sunVector*0.5+0.1, jSteps); + scatteringMoon += sky_coefficientsScattering * (stepAirmass.xy * phaseMoon) * stepScatteringVisible * sky_transmittance(position, moonVector, jSteps); + // Nice way to fake multiple scattering. + scatteringAmbient += sky_coefficientsScattering * stepAirmass.xy * (stepScatteringVisible * low_sun); + + transmittance *= stepTransmittance; + } + + vec3 scattering = scatteringSun * sunColorBase + (scatteringAmbient) * background + scatteringMoon*moonColorBase ; + // scattering = vec3(0,high_sun*255.,0); + return scattering; +} diff --git a/shaders/lib/Shadow_Params.glsl b/shaders/lib/Shadow_Params.glsl new file mode 100644 index 0000000..ba81659 --- /dev/null +++ b/shaders/lib/Shadow_Params.glsl @@ -0,0 +1,44 @@ + + +const float ambientOcclusionLevel = 0.15; //[0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 ] + + + +const float sunPathRotation = -35; //[-90 -89 -88 -87 -86 -85 -84 -83 -82 -81 -80 -79 -78 -77 -76 -75 -74 -73 -72 -71 -70 -69 -68 -67 -66 -65 -64 -63 -62 -61 -60 -59 -58 -57 -56 -55 -54 -53 -52 -51 -50 -49 -48 -47 -46 -45 -44 -43 -42 -41 -40 -39 -38 -37 -36 -35 -34 -33 -32 -31 -30 -29 -28 -27 -26 -25 -24 -23 -22 -21 -20 -19 -18 -17 -16 -15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 ] + +const int shadowMapResolution = 2048; //Will probably crash at 16 384 [512 768 1024 1536 2048 3172 4096 8192 16384] +const float shadowDistance = 69.; //[32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 ] Not linear at all when shadowDistanceRenderMul is set to -1.0, 175.0 is enough for 40 render distance +const float shadowDistanceRenderMul = -1.0; //[-1.0 1.0] Can help to increase shadow draw distance when set to -1.0, at the cost of performance + +#define Variable_Penumbra_Shadows //Makes the shadows more blurry the more distant they are to objects (costs fps) +#define VPS_Search_Samples 4 //The number of samples used to find occluders [4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32] +#define Min_Shadow_Filter_Radius 5.0 //If Variable_Penumbra_Shadows are not used, will be used as shadow filter size. [0.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0 17.0 18.0 19.0 20.0 21.0 22.0 23.0 24.0 25.0 26.0 27.0 28.0 29.0 30.0 31.0 32.0 33.0 34.0 35.0 36.0 37.0 38.0 39.0 40.0 41.0 42.0 43.0 44.0 45.0 46.0 47.0 48.0 49.0 50.0 51.0 52.0 53.0 54.0 55.0 56.0 57.0 58.0 59.0 60.0 61.0 62.0 63.0 64.0 65.0 66.0 67.0 68.0 69.0 70.0 71.0 72.0 73.0 74.0 75.0 76.0 77.0 78.0 79.0 80.0 81.0 82.0 83.0 84.0 85.0 86.0 87.0 88.0 89.0 90.0 91.0 92.0 93.0 94.0 95.0 96.0 97.0 98.0 99.0 100.0 101.0 102.0 103.0 104.0 105.0 106.0 107.0 108.0 109.0 110.0 111.0 112.0 113.0 114.0 115.0 116.0 117.0 118.0 119.0 ] +#define Max_Shadow_Filter_Radius 30.0 //Not used if Variable_Penumbra_Shadows are not used. Will cause issues at too high values [0.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0 17.0 18.0 19.0 20.0 21.0 22.0 23.0 24.0 25.0 26.0 27.0 28.0 29.0 30.0 31.0 32.0 33.0 34.0 35.0 36.0 37.0 38.0 39.0 40.0 41.0 42.0 43.0 44.0 45.0 46.0 47.0 48.0 49.0 50.0 51.0 52.0 53.0 54.0 55.0 56.0 57.0 58.0 59.0 60.0 61.0 62.0 63.0 64.0 65.0 66.0 67.0 68.0 69.0 70.0 71.0 72.0 73.0 74.0 75.0 76.0 77.0 78.0 79.0 80.0 81.0 82.0 83.0 84.0 85.0 86.0 87.0 88.0 89.0 90.0 91.0 92.0 93.0 94.0 95.0 96.0 97.0 98.0 99.0 100.0 101.0 102.0 103.0 104.0 105.0 106.0 107.0 108.0 109.0 110.0 111.0 112.0 113.0 114.0 115.0 116.0 117.0 118.0 119.0 ] +#define Max_Filter_Depth 20.0 //Distance to the occluder at which the shadow filter size reaches its maximum. [0.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0 17.0 18.0 19.0 20.0 21.0 22.0 23.0 24.0 25.0 26.0 27.0 28.0 29.0 30.0 31.0 32.0 33.0 34.0 35.0 36.0 37.0 38.0 39.0 40.0 41.0 42.0 43.0 44.0 45.0 46.0 47.0 48.0 49.0 50.0 51.0 52.0 53.0 54.0 55.0 56.0 57.0 58.0 59.0 60.0 61.0 62.0 63.0 64.0 65.0 66.0 67.0 68.0 69.0 70.0 71.0 72.0 73.0 74.0 75.0 76.0 77.0 78.0 79.0 80.0 81.0 82.0 83.0 84.0 85.0 86.0 87.0 88.0 89.0 90.0 91.0 92.0 93.0 94.0 95.0 96.0 97.0 98.0 99.0 100.0 101.0 102.0 103.0 104.0 105.0 106.0 107.0 108.0 109.0 110.0 111.0 112.0 113.0 114.0 115.0 116.0 117.0 118.0 119.0 ] +#define SCREENSPACE_CONTACT_SHADOWS //Raymarch towards the sun in screen-space, in order to cast shadows outside of the shadow map or at the contact of objects. Can get really expensive at high resolutions. +#define SHADOW_FILTER_SAMPLE_COUNT 13 // Number of samples used to filter the actual shadows [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 ] + +// #define SSGI +#define RAY_COUNT 4 // [1 2 3 4 5 6 7 8 9 10 12 14 16 18 21 24 28 32 37 43 49 57 65 75 86 100] +#define STEPS 8 // [ 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99] +#define STEP_LENGTH 12. // [ 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30.] +#define SubSurfaceScattering + +const float k = 1.8; +const float d0 = 0.04; +const float d1 = 0.61; +float a = exp(d0); +float b = (exp(d1)-a)*150./128.0; + +vec4 BiasShadowProjection(in vec4 projectedShadowSpacePosition) { + + float distortFactor = log(length(projectedShadowSpacePosition.xy)*b+a)*k; + projectedShadowSpacePosition.xy /= distortFactor; + return projectedShadowSpacePosition; +} + + + +float calcDistort(vec2 worldpos){ + return 1.0/(log(length(worldpos)*b+a)*k); +} diff --git a/shaders/lib/biome_specifics.glsl b/shaders/lib/biome_specifics.glsl new file mode 100644 index 0000000..41be98a --- /dev/null +++ b/shaders/lib/biome_specifics.glsl @@ -0,0 +1,100 @@ +// #define Biome_specific_environment // makes the fog density and color look unique in certain biomes. (swamps, jungles, lush caves, giant pines, dark forests) +// #define Jungle_fog_strength 1.0 // how strong the fog gets there. set to zero to have normal fog [0.0 0.25 0.50 0.75 1.0] +// #define Swamp_fog_strength 1.0 // how strong the fog gets there. set to zero to have normal fog [0.0 0.25 0.50 0.75 1.0] +// #define Lush_fog_strength 1.0 // how strong the fog gets there. set to zero to have normal fog [0.0 0.25 0.50 0.75 1.0] + +// #define Time_of_day_fog // fog starts closer to you at sunrise/sunset + night +// #define Rain_fog // rain fog. +// #define Lightmap_based_fog // fog that changes lighting based on the light from the sky. so if you're in a cave, it changes. if you go to the surface, its mostly normal + +// #define Swamp_R 0.9 // the color of the fog. only effects this specific biome [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +// #define Swamp_G 1.0 // the color of the fog. only effects this specific biome [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +// #define Swamp_B 0.35 // the color of the fog. only effects this specific biome [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] + +// #define Jungle_R 0.5 // the color of the fog. only effects this specific biome [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +// #define Jungle_G 1.0 // the color of the fog. only effects this specific biome [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +// #define Jungle_B 0.8 // the color of the fog. only effects this specific biome [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] + +// #define override_R 0.5 // the color of the fog. only effects this specific biome [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +// #define override_G 1.0 // the color of the fog. only effects this specific biome [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +// #define override_B 0.8 // the color of the fog. only effects this specific biome [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] + +// #define Swamp_cloudyfog_Density 25. // how dense or thick the cloudy fog is. only effects this specific biome [0. 5. 10. 15. 20. 25. 30. 35. 40. 45. 50. 55. 60. 65. 70. 75. 80. 85. 90. 95. 100.] +// #define Jungle_Cloudy_Fog_Density 10. // how dense or thick the cloudy fog is. only effects this specific biome [0. 5. 10. 15. 20. 25. 30. 35. 40. 45. 50. 55. 60. 65. 70. 75. 80. 85. 90. 95. 100.] +// #define override_Cloudy_Fog_Density 1. // how dense or thick the cloudy fog is. only effects this specific biome [0. 5. 10. 15. 20. 25. 30. 35. 40. 45. 50. 55. 60. 65. 70. 75. 80. 85. 90. 95. 100.] + +// #define Swamp_UniformFog_Density 15. // how dense or thick the uniform fog is. only effects this specific biome [0. 5. 10. 15. 20. 25. 30. 35. 40. 45. 50. 55. 60. 65. 70. 75. 80. 85. 90. 95. 100.] +// #define Jungle_Uniform_Fog_Density 10. //how dense or thick the uniform fog is. only effects this specific biome [0. 5. 10. 15. 20. 25. 30. 35. 40. 45. 50. 55. 60. 65. 70. 75. 80. 85. 90. 95. 100.] +// #define override_Uniform_Fog_Density 1. //how dense or thick the uniform fog is. only effects this specific biome [0. 5. 10. 15. 20. 25. 30. 35. 40. 45. 50. 55. 60. 65. 70. 75. 80. 85. 90. 95. 100.] + +// #define Swamp_Mie 0.75 // control the size of the peak of light around the sun in the fog. only effects this specific biome [0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.75 0.8 0.85 0.9 0.95 1.0] +// #define Jungle_Mie 0.75 // control the size of the peak of light around the sun in the fog. only effects this specific biome [0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.75 0.8 0.85 0.9 0.95 1.0] +// #define override_Mie 1.0 // control the size of the peak of light around the sun in the fog. only effects this specific biome [0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.75 0.8 0.85 0.9 0.95 1.0] + +// #define Swamp_Sun_Strength 1.0 // control how strong the sun shines through fog. only effects this specific biome [0.0 0.25 0.50 0.75 1.0 1.25 1.50 1.75 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0] +// #define Jungle_Sun_Strength 1.0 // control how strong the sun shines through fog. only effects this specific biome [0.0 0.25 0.50 0.75 1.0 1.25 1.50 1.75 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0] +// #define override_Sun_Strength 1.0 // control how strong the sun shines through fog. only effects this specific biome [0.0 0.25 0.50 0.75 1.0 1.25 1.50 1.75 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0] + +// #define Swamp_Bloomy_Fog 2.0 // control how bloomy the fog looks. only effects this specific biome [0.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0] +// #define Jungle_Bloomy_Fog 3.0 // control how bloomy the fog looks. only effects this specific biome [0.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0] +// #define override_Bloomy_Fog 1.0 // control how bloomy the fog looks. only effects this specific biome [0.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0] + +// #define Swamp_cloudyfog_height 30 // controll the fade away at the top of the fog [5 10 20 30 40 50 60 70 80 90 100] +// #define Jungle_cloudyfog_fade 30 // controll the fade away at the top of the fog [5 10 20 30 40 50 60 70 80 90 100] +// #define override_cloudyfog_fade 50 // controll the fade away at the top of the fog [5 10 20 30 40 50 60 70 80 90 100] + +// #define Swamp_uniformfog_height 10 // controll the fade away at the top of the fog [5 10 20 30 40 50 60 70 80 90 100] +// #define Jungle_uniformfog_fade 10 // controll the fade away at the top of the fog [5 10 20 30 40 50 60 70 80 90 100] +// #define override_uniformfog_fade 50 // controll the fade away at the top of the fog [5 10 20 30 40 50 60 70 80 90 100] + + +// #define override_fog 0 // override the fog that exists everywhere with your own [0 1] + +// // uniform int isEyeInWater; +// // uniform float blindness; +// // uniform float rainStrength; +// // uniform ivec2 eyeBrightnessSmooth; +// // uniform float eyeAltitude; +// // uniform int worldTime; + +// uniform float isJungles; +// uniform float isSwamps; +// uniform float isLush; +// uniform float isDeserts; + +// // float timething = (worldTime%24000)*1.0; +// // float TimeOfDayFog = clamp((1.0 - clamp( timething-11000,0.0,2000.0)/2000.) * (clamp(timething,0.0,2000.0)/2000.) ,0.0,1.0); + +// // fuck you +// #ifdef Biome_specific_environment +// float SWAMPS = isSwamps; +// float JUNGLES = isJungles; +// float LUSHCAVE = isLush; +// float DESERTS = isDeserts; +// float OVERRIDE = max(override_fog - (SWAMPS + JUNGLES),0); +// #else +// float OVERRIDE = 0; +// float SWAMPS = 0; +// float JUNGLES = 0; +// float LUSHCAVE = 0; +// float DESERTS = 0; +// #endif + +// // all the fog settings that do various things. +// float[8] Biome_Fog_Properties = float[8]( +// /*[0] biome check*/ SWAMPS*Swamp_fog_strength + JUNGLES*Jungle_fog_strength + OVERRIDE +// /*[1] cloudy fog density*/ ,SWAMPS*Swamp_cloudyfog_Density + JUNGLES*Jungle_Cloudy_Fog_Density + OVERRIDE*override_cloudyfog_fade +// /*[2] uniform fog density*/ ,SWAMPS*Swamp_UniformFog_Density + JUNGLES*Jungle_Uniform_Fog_Density + OVERRIDE*override_Uniform_Fog_Density +// /*[3] sunlight strength*/ ,SWAMPS*Swamp_Sun_Strength + JUNGLES*Jungle_Sun_Strength + OVERRIDE*override_Sun_Strength +// /*[4] bloomy fog strength*/ ,SWAMPS*Swamp_Bloomy_Fog + JUNGLES*Jungle_Bloomy_Fog + OVERRIDE*override_Bloomy_Fog +// /*[5] fog mie size */ ,SWAMPS*Swamp_Mie + JUNGLES*Jungle_Mie + OVERRIDE*override_Mie +// /*[6] cloudy fog fade */ ,SWAMPS*Swamp_cloudyfog_height + JUNGLES*Jungle_cloudyfog_fade + OVERRIDE*override_Cloudy_Fog_Density +// /*[7] uniform fog fade */ ,SWAMPS*Swamp_uniformfog_height + JUNGLES*Jungle_uniformfog_fade + OVERRIDE*override_uniformfog_fade +// ); + +// // ??? ive no clue what this one does ngl +// vec3 Biome_FogColor = vec3( +// SWAMPS*Swamp_R + JUNGLES*Jungle_R + OVERRIDE*override_R +// ,SWAMPS*Swamp_G + JUNGLES*Jungle_G + OVERRIDE*override_G +// ,SWAMPS*Swamp_B + JUNGLES*Jungle_B + OVERRIDE*override_B +// ); \ No newline at end of file diff --git a/shaders/lib/climate_settings.glsl b/shaders/lib/climate_settings.glsl new file mode 100644 index 0000000..3aff8e3 --- /dev/null +++ b/shaders/lib/climate_settings.glsl @@ -0,0 +1,273 @@ +// this file contains all things for seasons, weather, and biome specific settings. +// i gotta start centralizing shit someday. + +#define Seasons +#define Season_Length 24 // how long each season lasts in minecraft days. 91 is roughly how long each season is in reality. 1 will make a year last 4 days [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91] +// #define Snowy_Winter // snow in the winter, yes or no? + +#define Summer_R 1.0 // the color of the plants during this season [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0] +#define Summer_G 1.0 // the color of the plants during this season [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0] +#define Summer_B 1.0 // the color of the plants during this season [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0] +#define Summer_Leaf_R 1.0 // the color of the plants during this season [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0] +#define Summer_Leaf_G 1.0 // the color of the plants during this season [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0] +#define Summer_Leaf_B 1.0 // the color of the plants during this season [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0] + +#define Fall_R 1.5 // the color of the plants during this season [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0] +#define Fall_G 1.0 // the color of the plants during this season [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0] +#define Fall_B 1.0 // the color of the plants during this season [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0] +#define Fall_Leaf_R 1.8 // the color of the plants during this season [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0] +#define Fall_Leaf_G 0.8 // the color of the plants during this season [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0] +#define Fall_Leaf_B 0.0 // the color of the plants during this season [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0] + +#define Winter_R 1.2 // the color of the plants during this season [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0] +#define Winter_G 0.8 // the color of the plants during this season [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0] +#define Winter_B 1.0 // the color of the plants during this season [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0] +#define Winter_Leaf_R 1.2 // the color of the plants during this season [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0] +#define Winter_Leaf_G 0.5 // the color of the plants during this season [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0] +#define Winter_Leaf_B 1.0 // the color of the plants during this season [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0] + +#define Spring_R 1.0 // the color of the plants during this season [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0] +#define Spring_G 0.9 // the color of the plants during this season [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0] +#define Spring_B 1.1 // the color of the plants during this season [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0] +#define Spring_Leaf_R 1.0 // the color of the plants during this season [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0] +#define Spring_Leaf_G 0.8 // the color of the plants during this season [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0] +#define Spring_Leaf_B 0.8 // the color of the plants during this season [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0] + + +#define Daily_Weather // different skies for different days, and fog. +#define WeatherDay -1 // [-1 0 1 2 3 4 5 6 7] + +#define cloudCoverage 0.4 // Cloud coverage [ 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0] +#define Rain_coverage 0.6 // how much the coverage of the clouds change during rain [ 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 3.0 4.0 5.0] + +#define Biome_specific_environment // makes the fog density and color look unique in certain biomes. (swamps, jungles, lush caves, giant pines, dark forests) + +/////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// +///////////////////////////////// SEASONS ///////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// + +/////////////////////////////////////////////////////////////////////////////// VERTEX SHADER +#ifdef Seasons + #ifdef SEASONS_VSH + varying vec4 seasonColor; + void YearCycleColor ( + inout vec3 FinalColor, + vec3 glcolor + ){ + // colors for things that arent leaves and using the tint index. + vec3 SummerCol = vec3(Summer_R, Summer_G, Summer_B) * glcolor; + vec3 AutumnCol = vec3(Fall_R, Fall_G, Fall_B) * glcolor; + vec3 WinterCol = vec3(Winter_R, Winter_G, Winter_B) ; + vec3 SpringCol = vec3(Spring_R, Spring_G, Spring_B) * glcolor; + + // do leaf colors different because thats cool and i like it + if(mc_Entity.x == 10003){ + SummerCol = vec3(Summer_Leaf_R, Summer_Leaf_G, Summer_Leaf_B) * glcolor; + AutumnCol = vec3(Fall_Leaf_R, Fall_Leaf_G, Fall_Leaf_B) * glcolor; + WinterCol = vec3(Winter_Leaf_R, Winter_Leaf_G, Winter_Leaf_B) ; + SpringCol = vec3(Spring_Leaf_R, Spring_Leaf_G, Spring_Leaf_B)* glcolor; + } + + // length of each season in minecraft days + int SeasonLength = Season_Length; + + // loop the year. multiply the season length by the 4 seasons to create a years time. + float YearLoop = mod(worldDay, SeasonLength * 4); + + // the time schedule for each season + float SummerTime = clamp(YearLoop ,0, SeasonLength) / SeasonLength; + float AutumnTime = clamp(YearLoop - SeasonLength ,0, SeasonLength) / SeasonLength; + float WinterTime = clamp(YearLoop - SeasonLength*2 ,0, SeasonLength) / SeasonLength; + float SpringTime = clamp(YearLoop - SeasonLength*3 ,0, SeasonLength) / SeasonLength; + + // lerp all season colors together + vec3 SummerToFall = mix(SummerCol, AutumnCol, SummerTime); + vec3 FallToWinter = mix(SummerToFall, WinterCol, AutumnTime); + vec3 WinterToSpring = mix(FallToWinter, SpringCol, WinterTime); + vec3 SpringToSummer = mix(WinterToSpring, SummerCol, SpringTime); + + // make it so that you only have access to parts of the texture that use the tint index + bool IsTintIndex = floor(dot(glcolor,vec3(0.5))) < 1.0; + + // multiply final color by the final lerped color, because it contains all the other colors. + if (IsTintIndex && mc_Entity.x != 200) FinalColor = SpringToSummer; + } + #endif +#endif + +/////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// +////////////////////////////// DAILY WEATHER ////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// +#ifdef WEATHERCLOUDS + uniform float CumulusCoverage; + uniform float CirrusCoverage; + uniform float CirrusThickness; + + float DailyWeather_LowAltitude( + float Coverage + ){ + + #ifdef Daily_Weather + int W_DAY = WeatherDay; + + if(W_DAY > -1) { + if(W_DAY == 0) Coverage += 0.1; + if(W_DAY == 1) Coverage += 0.5; + if(W_DAY == 2) Coverage += 0.2; + if(W_DAY == 3) Coverage += 0.8; + if(W_DAY == 4) Coverage += 0.1; + if(W_DAY == 5) Coverage += 0.6; + if(W_DAY == 6) Coverage += 0.0; + if(W_DAY == 7) Coverage += 1.0; + }else{ + Coverage += mix(CumulusCoverage, Rain_coverage, rainStrength); + } + #else + Coverage += mix(cloudCoverage, Rain_coverage, rainStrength); + #endif + + return Coverage; + } + + void DailyWeather_HighAltitude( + inout float Coverage, + inout float Thickness + ){ + + #ifdef Daily_Weather + float W_DAY = WeatherDay; + + if(W_DAY > -1) { + if(W_DAY == 0){ Coverage = 0.8; Thickness = 0.5; } + if(W_DAY == 1){ Coverage = 0.8; Thickness = 0.5; } + if(W_DAY == 2){ Coverage = 0.0; Thickness = 0.5; } + if(W_DAY == 3){ Coverage = 0.0; Thickness = 0.5; } + if(W_DAY == 4){ Coverage = 0.0; Thickness = 0.5; } + if(W_DAY == 5){ Coverage = 0.0; Thickness = 0.5; } + if(W_DAY == 6){ Coverage = 0.0; Thickness = 0.5; } + if(W_DAY == 7){ Coverage = 0.0; Thickness = 0.5; } + }else{ + Coverage = CirrusCoverage; + Thickness = CirrusThickness; + } + #else + Coverage = 0.5; + Thickness = 0.05; + #endif + + Coverage = pow(1.0-Coverage,3) * 50; + Thickness = Thickness * 10; + } +#endif + +#ifdef Daily_Weather + uniform float Day; + + void DailyWeather_FogDensity( + inout vec4 UniformDensity, + inout vec4 CloudyDensity + ){ + // it's so symmetrical~ + float day0 = clamp(clamp(Day, 0.0,1.0)*clamp(2-Day, 0.0,1.0),0.0,1.0); + float day1 = clamp(clamp(Day-1, 0.0,1.0)*clamp(3-Day, 0.0,1.0),0.0,1.0); + float day2 = clamp(clamp(Day-2, 0.0,1.0)*clamp(4-Day, 0.0,1.0),0.0,1.0); + float day3 = clamp(clamp(Day-3, 0.0,1.0)*clamp(5-Day, 0.0,1.0),0.0,1.0); + float day4 = clamp(clamp(Day-4, 0.0,1.0)*clamp(6-Day, 0.0,1.0),0.0,1.0); + float day5 = clamp(clamp(Day-5, 0.0,1.0)*clamp(7-Day, 0.0,1.0),0.0,1.0); + float day6 = clamp(clamp(Day-6, 0.0,1.0)*clamp(8-Day, 0.0,1.0),0.0,1.0); + float day7 = clamp(clamp(Day-7, 0.0,1.0)*clamp(9-Day, 0.0,1.0),0.0,1.0); + + // set fog Profiles for each of the 8 days in the cycle. + // U = uniform fog || C = cloudy fog + vec4 MistyDay_U = vec4(5); + + vec4 FoggyDay_U = vec4(5); + vec4 FoggyDay_C = vec4(25); + + + UniformDensity += FoggyDay_U*day1 + MistyDay_U*day4; + CloudyDensity += FoggyDay_C*day1; + } +#endif + +/////////////////////////////////////////////////////////////////////////////// +///////////////////////////// BIOME SPECIFICS ///////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// + +#ifdef Biome_specific_environment + uniform float isJungles; + uniform float isSwamps; + uniform float isLush; + uniform float isDeserts; + + void BiomeFogColor( + inout vec3 FinalFogColor + ){ + // this is a little complicated? lmao + vec3 BiomeColors; + BiomeColors.r = isSwamps*0.7 + isJungles*0.5; + BiomeColors.g = isSwamps*1.0 + isJungles*1.0; + BiomeColors.b = isSwamps*0.35 + isJungles*0.8; + + // insure the biome colors are locked to the fog shape and lighting, but not its orignal color. + BiomeColors *= dot(FinalFogColor,vec3(0.5)); + + // these range 0.0-1.0. they will never overlap. + float Inbiome = isJungles+isSwamps; + + // interpoloate between normal fog colors and biome colors. the transition speeds are conrolled by the biome uniforms. + FinalFogColor = mix(FinalFogColor, BiomeColors, Inbiome); + } + + void BiomeFogDensity( + inout vec4 UniformDensity, + inout vec4 CloudyDensity + ){ + // these range 0.0-1.0. they will never overlap. + float Inbiome = isJungles+isSwamps; + + vec2 BiomeFogDensity; // x = uniform || y = cloudy + BiomeFogDensity.x = isSwamps*5 + isJungles*5; + BiomeFogDensity.y = isSwamps*50 + isJungles*2; + + UniformDensity = mix(UniformDensity, vec4(BiomeFogDensity.x), Inbiome); + CloudyDensity = mix(CloudyDensity, vec4(BiomeFogDensity.y), Inbiome); + } +#endif + +/////////////////////////////////////////////////////////////////////////////// +////////////////////////////// FOG CONTROLLER ///////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// + +#ifdef TIMEOFDAYFOG + uniform int worldTime; + void TimeOfDayFog(inout float Uniform, inout float Cloudy) { + + float Time = (worldTime%24000)*1.0; + + // set schedules for fog to appear at specific ranges of time in the day. + float Morning = clamp((Time-22000)/2000,0,1) + clamp((2000-Time)/2000,0,1); + float Noon = clamp(Time/2000,0,1) * clamp((12000-Time)/2000,0,1); + float Evening = clamp((Time-10000)/2000,0,1) * clamp((14000-Time)/2000,0,1) ; + float Night = clamp((Time-13000)/2000,0,1) * clamp((23000-Time)/2000,0,1) ; + + // set densities. morn, noon, even, night + vec4 UniformDensity = vec4(1.0, 0.0, 1.0, 10.0); + vec4 CloudyDensity = vec4(5.0, 0.0, 5.0, 25.0); + + #ifdef Daily_Weather + DailyWeather_FogDensity(UniformDensity, CloudyDensity); // let daily weather influence fog densities. + #endif + + #ifdef Biome_specific_environment + BiomeFogDensity(UniformDensity, CloudyDensity); // let biome fog hijack to control densities, and overrride any other density controller... + #endif + + Uniform *= Morning*UniformDensity.r + Noon*UniformDensity.g + Evening*UniformDensity.b + Night*UniformDensity.a; + Cloudy *= Morning*CloudyDensity.r + Noon*CloudyDensity.g + Evening*CloudyDensity.b + Night*CloudyDensity.a; + } +#endif diff --git a/shaders/lib/clouds.glsl b/shaders/lib/clouds.glsl new file mode 100644 index 0000000..abd35ef --- /dev/null +++ b/shaders/lib/clouds.glsl @@ -0,0 +1,16 @@ +vec3 cloud2D(vec3 fragpos,vec3 col){ + vec3 wpos = fragpos; + float wind = frameTimeCounter/200.; + vec2 intersection = ((2000.0-cameraPosition.y)*wpos.xz*inversesqrt(wpos.y+cameraPosition.y/512.-50./512.) + cameraPosition.xz+wind)/40000.; + + + float phase = pow(clamp(dot(fragpos,sunVec),0.,1.),2.)*0.5+0.5; + + float fbm = clamp((texture2D(noisetex,intersection*vec2(1.,1.5)).a + texture2D(noisetex,intersection*vec2(2.,7.)+wind*0.4).a/2.)-0.5*(1.0-rainStrength),0.,1.) ; + + + + + return mix(col,6.*(vec3(0.9,1.2,1.5)*skyIntensityNight*0.02*(1.0-rainStrength*0.9)+17.*phase*nsunColor*skyIntensity*0.7*(1.0-rainStrength*0.9)),0.0*(fbm*fbm)*(fbm*fbm)*(fbm*clamp(wpos.y*0.9,0.,1.))); + +} \ No newline at end of file diff --git a/shaders/lib/color_dither.glsl b/shaders/lib/color_dither.glsl new file mode 100644 index 0000000..73c4960 --- /dev/null +++ b/shaders/lib/color_dither.glsl @@ -0,0 +1,46 @@ +//using white noise for color dithering : gives a somewhat more "filmic" look when noise is visible +float nrand( vec2 n ) +{ + return fract(sin(dot(n.xy, vec2(12.9898, 78.233)))* 43758.5453); +} + +float triangWhiteNoise( vec2 n ) +{ + + float t = fract( frameTimeCounter ); + float rnd = nrand( n + 0.07*t ); + + float center = rnd*2.0-1.0; + rnd = center*inversesqrt(abs(center)); + rnd = max(-1.0,rnd); + return rnd-sign(center); +} + +vec3 fp10Dither(vec3 color,vec2 tc01){ + float dither = triangWhiteNoise(tc01); + const vec3 mantissaBits = vec3(6.,6.,5.); + vec3 exponent = floor(log2(color)); + return color + dither*exp2(-mantissaBits)*exp2(exponent); +} + +vec3 fp16Dither(vec3 color,vec2 tc01){ + float dither = triangWhiteNoise(tc01); + const vec3 mantissaBits = vec3(10.); + vec3 exponent = floor(log2(color)); + return color + dither*exp2(-mantissaBits)*exp2(exponent); +} + +vec3 int8Dither(vec3 color,vec2 tc01){ + float dither = triangWhiteNoise(tc01); + return color + dither*exp2(-8.0); +} + +vec3 int10Dither(vec3 color,vec2 tc01){ + float dither = triangWhiteNoise(tc01); + return color + dither*exp2(-10.0); +} + +vec3 int16Dither(vec3 color,vec2 tc01){ + float dither = triangWhiteNoise(tc01); + return color + dither*exp2(-16.0); +} \ No newline at end of file diff --git a/shaders/lib/color_transforms.glsl b/shaders/lib/color_transforms.glsl new file mode 100644 index 0000000..b016657 --- /dev/null +++ b/shaders/lib/color_transforms.glsl @@ -0,0 +1,157 @@ +//faster and actually more precise than pow 2.2 +vec3 toLinear(vec3 sRGB){ + return sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878); +} + +float luma(vec3 color) { + return dot(color,vec3(0.299, 0.587, 0.114)); +} + +const mat3 ACESInputMat = +mat3(0.59719, 0.35458, 0.04823, + 0.07600, 0.90834, 0.01566, + 0.02840, 0.13383, 0.83777 +); + +// ODT_SAT => XYZ => D60_2_D65 => sRGB +const mat3 ACESOutputMat = +mat3( 1.60475, -0.53108, -0.07367, + -0.10208, 1.10813, -0.00605, + -0.00327, -0.07276, 1.07602 +); +vec3 LinearTosRGB(in vec3 color) +{ + vec3 x = color * 12.92f; + vec3 y = 1.055f * pow(clamp(color,0.0,1.0), vec3(1.0f / 2.4f)) - 0.055f; + + vec3 clr = color; + clr.r = color.r < 0.0031308f ? x.r : y.r; + clr.g = color.g < 0.0031308f ? x.g : y.g; + clr.b = color.b < 0.0031308f ? x.b : y.b; + + return clr; +} +vec3 ToneMap_Hejl2015(in vec3 hdr) +{ + vec4 vh = vec4(hdr*0.85, 3.0); //0 + vec4 va = (1.75 * vh) + 0.05; //0.05 + vec4 vf = ((vh * va + 0.004f) / ((vh * (va + 0.55f) + 0.0491f))) - 0.0821f+0.000633604888; //((0+0.004)/((0*(0.05+0.55)+0.0491)))-0.0821 + return vf.xyz / vf.www; +} +vec3 HableTonemap(vec3 linearColor) { + // A = shoulder strength + const float A = 0.45; + // B = linear strength + const float B = 0.28; + // C = linear angle + const float C = 0.1; + // D = toe strength + const float D = 0.5; + // E = toe numerator + const float E = 0.01; + // F = toe denominator + const float F = 0.3; + // Note: E / F = toe angle + // linearWhite = linear white point value + + vec3 x = linearColor*2.0; + vec3 color = ((x * (A * x + C * B) + D * E) / (x * (A * x + B) + D * F)) - E / F; + + const float W = 11.0; + const float white = ((W * (A * W + C * B) + D * E) / (W * (A * W + B) + D * F)) - E / F; + + return color / white; +} + +vec3 reinhard(vec3 x){ +x *= 1.66; +return x/(1.0+x); +} +vec3 ACESFilm( vec3 x ) +{ + x*=0.9; + float a = 2.51f; + float b = 0.03f; + float c = 2.43f; + float d = 0.59f; + float e = 0.14f; + return (x*(a*x+b))/(x*(c*x+d)+e); +} + +// From https://www.shadertoy.com/view/WdjSW3 +vec3 Tonemap_Lottes(vec3 x) { + // Lottes 2016, "Advanced Techniques and Optimization of HDR Color Pipelines" + const float a = 1.6; + const float d = 0.977; + const float hdrMax = 8.0; + const float midIn = 0.23; + const float midOut = 0.267; + + // Can be precomputed + const float b = + (-pow(midIn, a) + pow(hdrMax, a) * midOut) / + ((pow(hdrMax, a * d) - pow(midIn, a * d)) * midOut); + const float c = + (pow(hdrMax, a * d) * pow(midIn, a) - pow(hdrMax, a) * pow(midIn, a * d) * midOut) / + ((pow(hdrMax, a * d) - pow(midIn, a * d)) * midOut); + + return pow(x,vec3(a)) / (pow(x, vec3(a * d)) * b + c); +} +vec3 curve(vec3 x){ + return 1.0 - x/(1.0+x); +} +vec3 Tonemap_Uchimura_Modified(vec3 x, float P, float a, float m, float l, float c, float b) { + // Uchimura 2017, "HDR theory and practice" + // Math: https://www.desmos.com/calculator/gslcdxvipg + // Source: https://www.slideshare.net/nikuque/hdr-theory-and-practicce-jp + float l0 = ((P - m) * l) / a; + float L0 = m - m / a; + float L1 = m + (1.0 - m) / a; + float S0 = m + l0; + float S1 = m + a * l0; + float C2 = (a * P) / (P - S1); + float CP = C2 / P; + + vec3 w0 = 1.0 - smoothstep(x, vec3(0.0), vec3(m)); + vec3 w2 = step(m + l0, x); + vec3 w1 = 1.0 - w0 - w2; + + vec3 T = m * pow(x / m, vec3(c)) + b; + vec3 S = P - (P - S1) * curve(CP * (x - S0)); + vec3 L = m + a * (x - m); + + return clamp(T * w0 + L * w1 + S * w2,0.0,1.0); +} +// From https://www.shadertoy.com/view/WdjSW3 +vec3 Tonemap_Uchimura(vec3 x, float P, float a, float m, float l, float c, float b) { + // Uchimura 2017, "HDR theory and practice" + // Math: https://www.desmos.com/calculator/gslcdxvipg + // Source: https://www.slideshare.net/nikuque/hdr-theory-and-practicce-jp + float l0 = ((P - m) * l) / a; + float L0 = m - m / a; + float L1 = m + (1.0 - m) / a; + float S0 = m + l0; + float S1 = m + a * l0; + float C2 = (a * P) / (P - S1); + float CP = -C2 / P; + + vec3 w0 = 1.0 - smoothstep(x, vec3(0.0), vec3(m)); + vec3 w2 = step(m + l0, x); + vec3 w1 = 1.0 - w0 - w2; + + vec3 T = m * pow(x / m, vec3(c)) + b; + vec3 S = P - (P - S1) * exp(CP * (x - S0)); + vec3 L = m + a * (x - m); + + return clamp(T * w0 + L * w1 + S * w2,0.0,1.0); +} + +vec3 Tonemap_Uchimura(vec3 x) { + const float P = 1.0; // max display brightness 1.0 + const float a = 1.0; // contrast 1.0 + const float m = 0.12; // linear section start 0.22 + const float l = 0.22; // linear section length 0.4 + const float c = 1.5; // black 1.33 + const float b = 0.0; // pedestal 0.0 + return Tonemap_Uchimura_Modified(x, P, a, m, l, c, b); +} diff --git a/shaders/lib/projections.glsl b/shaders/lib/projections.glsl new file mode 100644 index 0000000..72ab381 --- /dev/null +++ b/shaders/lib/projections.glsl @@ -0,0 +1,55 @@ +uniform mat4 gbufferProjection; +uniform mat4 gbufferProjectionInverse; +uniform mat4 gbufferPreviousProjection; +uniform mat4 gbufferModelViewInverse; +uniform mat4 gbufferModelView; +uniform mat4 shadowModelView; +uniform mat4 shadowProjection; + +uniform vec3 cameraPosition; + + +#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) +#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) + +vec3 toClipSpace3(vec3 viewSpacePosition) { + return projMAD(gbufferProjection, viewSpacePosition) / -viewSpacePosition.z * 0.5 + 0.5; +} + +vec3 toScreenSpace(vec3 p) { + vec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); + vec3 p3 = p * 2. - 1.; + vec4 fragposition = iProjDiag * p3.xyzz + gbufferProjectionInverse[3]; + return fragposition.xyz / fragposition.w; +} + +vec3 toScreenSpaceVector(vec3 p) { + vec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); + vec3 p3 = p * 2. - 1.; + vec4 fragposition = iProjDiag * p3.xyzz + gbufferProjectionInverse[3]; + return normalize(fragposition.xyz); +} + +vec3 toWorldSpace(vec3 p3){ + p3 = mat3(gbufferModelViewInverse) * p3 + gbufferModelViewInverse[3].xyz; + return p3; +} + +vec3 toWorldSpaceCamera(vec3 p3){ + p3 = mat3(gbufferModelViewInverse) * p3 + gbufferModelViewInverse[3].xyz; + return p3 + cameraPosition; +} + +vec3 toShadowSpace(vec3 p3){ + p3 = mat3(gbufferModelViewInverse) * p3 + gbufferModelViewInverse[3].xyz; + p3 = mat3(shadowModelView) * p3 + shadowModelView[3].xyz; + return p3; +} + +vec3 toShadowSpaceProjected(vec3 p3){ + p3 = mat3(gbufferModelViewInverse) * p3 + gbufferModelViewInverse[3].xyz; + p3 = mat3(shadowModelView) * p3 + shadowModelView[3].xyz; + p3 = diagonal3(shadowProjection) * p3 + shadowProjection[3].xyz; + + return p3; +} diff --git a/shaders/lib/res_params.glsl b/shaders/lib/res_params.glsl new file mode 100644 index 0000000..f2c3322 --- /dev/null +++ b/shaders/lib/res_params.glsl @@ -0,0 +1,20 @@ +#define TAA +// #define TAA_UPSCALING // Lowers render resolution and uses TAA to combine several lower resolution images (greatly improves performance). USE THIS INSTEAD OF SHADER RENDER QUALITY OPTION IF YOU WANT TO INCREASE FPS (Leave it to 1). IF YOU WANT TO INCREASE QUALITY DISABLE THIS AND INCREASE SHADER RENDER QUALITY +#ifndef TAA + #undef TAA_UPSCALING +#endif + + + +#ifdef TAA_UPSCALING + #define RENDER_SCALE_X 0.7 // X axis render resolution multiplier [0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1. ] + #define RENDER_SCALE_Y 0.7 // Y axis render resolution multiplier [0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1. ] + #define RENDER_SCALE vec2(RENDER_SCALE_X, RENDER_SCALE_Y) + #define UPSCALING_SHARPNENING 2.0 - RENDER_SCALE_X - RENDER_SCALE_Y +#else + #define RENDER_SCALE vec2(1.0, 1.0) + #define UPSCALING_SHARPNENING 0.0 +#endif + +#define BLOOM_QUALITY 0.5 // Reduces the resolution at which bloom is computed. (0.5 = half of default resolution) [0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1. ] +#define VL_RENDER_RESOLUTION 0.5 // Reduces the resolution at which volumetric fog is computed. (0.5 = half of default resolution) [0.25 0.5 1.0] diff --git a/shaders/lib/settings.glsl b/shaders/lib/settings.glsl new file mode 100644 index 0000000..828447b --- /dev/null +++ b/shaders/lib/settings.glsl @@ -0,0 +1,45 @@ +#define Moon_temp 15000 // [1000 2000 3000 4000 5000 6000 7000 8000 9000 10000] + + + +#define CAVE_LIGHT_LEAK_FIX // Hackish way to remove sunlight incorrectly leaking into the caves. Can inacurrately create shadows in some places +#define CLOUDS_SHADOWS +#define CLOUDS_QUALITY 0.5 //[0.1 0.125 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.9 1.0] +#define TORCH_R 1.0 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +#define TORCH_G 0.75 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +#define TORCH_B 0.5 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] + +#define ambient_colortype 0 // Toggle which method you want to change the color of ambient light with. [0 1] +#define ambient_temp 9000 // [1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 15000 50000] +#define ambient_brightness 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 ] +#define AmbientLight_R 0.91 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +#define AmbientLight_G 0.86 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +#define AmbientLight_B 1.0 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] + + +#define Sub_surface_scattering // (place the flashlight on your hand example here) +// #define LabPBR_subsurface_scattering +#define LabSSS_Curve 1.0 // i just really like how it looks at 2.0, so i made it an option. [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 ] +#define Strong_SSS_strength 45 // [ 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 2 3 4 5 6 7 8 9 10 15 20 30 35 40 45 50] +#define Medium_SSS_strength 30 // [ 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 2 3 4 5 6 7 8 9 10 15 20 30 35 40 45 50] + +#define indirect_effect 1 // Choose what effect is applied to indirect light. [0 1 2 3] +#define AO_Strength 0.8 // strength of shadowed areas [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 ] +#define GI_Strength 5.0 // strength of bounced light areas [ 1 2 3 4 5 6 7 8 9 10] +// #define HQ_SSGI + + +// #define LabPBR_Emissives +#define Emissive_Brightness 10.0 // [1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 15. 20. 25. 30. 35. 40. 45. 50. 100.] +#define Emissive_Curve 2.0 // yes i blatantly copied kappa here. [1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 ] + +#define Puddle_Size 1.0 // [0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5] +#define Puddles // yes +// #define Porosity + + +// #define Allow_Vanilla_sky // allow the vanilla sky to appear. may appear broken with some resourcepacks. + +// #define WhiteWorld // THIS IS A DEBUG VIEW. uses to see AO easier. used to see fake GI better (green light) +// #define ambientLight_only // THIS IS A DEBUG VIEW. turn the sunlight off. DOES NOT increase performance, the shadows are still working in the background +#define MIN_LIGHT_AMOUNT 1.0 //[0.0 0.5 1.0 1.5 2.0 3.0 4.0 5.0] diff --git a/shaders/lib/sky_gradient.glsl b/shaders/lib/sky_gradient.glsl new file mode 100644 index 0000000..559faf3 --- /dev/null +++ b/shaders/lib/sky_gradient.glsl @@ -0,0 +1,84 @@ +#define DRAW_SUN //if not using custom sky +#define SKY_BRIGHTNESS_DAY 1.0 //[0.0 0.5 0.75 1. 1.2 1.4 1.6 1.8 2.0] +#define SKY_BRIGHTNESS_NIGHT 1.0 //[0.0 0.5 0.75 1. 1.2 1.4 1.6 1.8 2.0] +#define ffstep(x,y) clamp((y - x) * 1e35,0.0,1.0) +vec3 drawSun(float cosY, float sunInt,vec3 nsunlight,vec3 inColor){ + return inColor+nsunlight/0.0008821203*pow(smoothstep(cos(0.0093084168595*3.2),cos(0.0093084168595*1.8),cosY),3.)*0.62; +} +const float pi = 3.141592653589793238462643383279502884197169; +vec2 sphereToCarte(vec3 dir) { + float lonlat = atan(-dir.x, -dir.z); + return vec2(lonlat * (0.5/pi) +0.5,0.5*dir.y+0.5); +} +vec3 skyFromTex(vec3 pos,sampler2D sampler){ + vec2 p = sphereToCarte(pos); + return texture2D(sampler,p*texelSize*256.+vec2(18.5,1.5)*texelSize).rgb; +} +float w0(float a) +{ + return (1.0/6.0)*(a*(a*(-a + 3.0) - 3.0) + 1.0); +} + +float w1(float a) +{ + return (1.0/6.0)*(a*a*(3.0*a - 6.0) + 4.0); +} + +float w2(float a) +{ + return (1.0/6.0)*(a*(a*(-3.0*a + 3.0) + 3.0) + 1.0); +} + +float w3(float a) +{ + return (1.0/6.0)*(a*a*a); +} + +float g0(float a) +{ + return w0(a) + w1(a); +} + +float g1(float a) +{ + return w2(a) + w3(a); +} + +float h0(float a) +{ + return -1.0 + w1(a) / (w0(a) + w1(a)); +} + +float h1(float a) +{ + return 1.0 + w3(a) / (w2(a) + w3(a)); +} + +vec4 texture2D_bicubic(sampler2D tex, vec2 uv) +{ + vec4 texelSize = vec4(texelSize,1.0/texelSize); + uv = uv*texelSize.zw; + vec2 iuv = floor( uv ); + vec2 fuv = fract( uv ); + + float g0x = g0(fuv.x); + float g1x = g1(fuv.x); + float h0x = h0(fuv.x); + float h1x = h1(fuv.x); + float h0y = h0(fuv.y); + float h1y = h1(fuv.y); + + vec2 p0 = (vec2(iuv.x + h0x, iuv.y + h0y) - 0.5) * texelSize.xy; + vec2 p1 = (vec2(iuv.x + h1x, iuv.y + h0y) - 0.5) * texelSize.xy; + vec2 p2 = (vec2(iuv.x + h0x, iuv.y + h1y) - 0.5) * texelSize.xy; + vec2 p3 = (vec2(iuv.x + h1x, iuv.y + h1y) - 0.5) * texelSize.xy; + + return g0(fuv.y) * (g0x * texture2D(tex, p0) + + g1x * texture2D(tex, p1)) + + g1(fuv.y) * (g0x * texture2D(tex, p2) + + g1x * texture2D(tex, p3)); +} +vec4 skyCloudsFromTex(vec3 pos,sampler2D sampler){ + vec2 p = sphereToCarte(pos); + return texture2D(sampler,p*texelSize*256.+vec2(18.5+257.,1.5)*texelSize); +} diff --git a/shaders/lib/specular.glsl b/shaders/lib/specular.glsl new file mode 100644 index 0000000..415467a --- /dev/null +++ b/shaders/lib/specular.glsl @@ -0,0 +1,349 @@ +//#define Specular_Reflections // reflections on blocks. REQUIRES A PBR RESOURCEPACK. +#define Screen_Space_Reflections // toggle screenspace reflections. if you want normal performance but still want a bit of shiny, the sun reflection stays on when this is turned off. +#define Sky_reflection // just in case you dont want it i guess +// #define Rough_reflections // turns the roughness GGXVNDF ON. sizable performance impact, and introduces alot of noise. + +#define Sun_specular_Strength 3 // increase for more sparkles [1 2 3 4 5 6 7 8 9 10] +#define reflection_quality 30 // adjust the quality of the screenspace reflections. [6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 ] +#define Roughness_Threshold 1.5 // using a curve on the roughness, make the reflections more or less visible on rough surfaces. good for hiding noise on rough materials [1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 ] + +// #define SCREENSHOT_MODE // go render mode and accumulate frames for as long as you want for max image quality. + + + +uniform sampler2D gaux1; +uniform int framemod8; + +const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); + + +// sun specular stuff +float square(float x){ + return x*x; +} +float g(float NdotL, float roughness){ + float alpha = square(max(roughness, 0.02)); + return 2.0 * NdotL / (NdotL + sqrt(square(alpha) + (1.0 - square(alpha)) * square(NdotL))); +} +float gSimple(float dp, float roughness){ + float k = roughness + 1; + k *= k/8.0; + return dp / (dp * (1.0-k) + k); +} +vec3 GGX2(vec3 n, vec3 v, vec3 l, float r, vec3 F0) { + + float roughness = r; // when roughness is zero it fucks up + float alpha = square(roughness) + 1e-5; + + vec3 h = normalize(l + v) ; + + float dotLH = clamp(dot(h,l),0.,1.); + float dotNH = clamp(dot(h,n),0.,1.); + float dotNL = clamp(dot(n,l),0.,1.); + float dotNV = clamp(dot(n,v),0.,1.); + float dotVH = clamp(dot(h,v),0.,1.); + + + float D = alpha / (3.141592653589793*square(square(dotNH) * (alpha - 1.0) + 1.0)); + float G = gSimple(dotNV, roughness) * gSimple(dotNL, roughness); + vec3 F = F0 + (1. - F0) * exp2((-5.55473*dotVH-6.98316)*dotVH); + + return dotNL * F * (G * D / (4 * dotNV * dotNL + 1e-7)); +} + + +// other shit +float invLinZ (float lindepth){ + return -((2.0*near/lindepth)-far-near)/(far-near); +} +vec3 toClipSpace3(vec3 viewSpacePosition) { + return projMAD(gbufferProjection, viewSpacePosition) / -viewSpacePosition.z * 0.5 + 0.5; +} +float linZ(float depth) { + return (2.0 * near) / (far + near - depth * (far - near)); + // l = (2*n)/(f+n-d(f-n)) + // f+n-d(f-n) = 2n/l + // -d(f-n) = ((2n/l)-f-n) + // d = -((2n/l)-f-n)/(f-n) + +} +// vec3 rayTrace_GI(vec3 dir,vec3 position,float dither, float quality){ + +// vec3 clipPosition = toClipSpace3(position); +// float rayLength = ((position.z + dir.z * far*sqrt(3.)) > -near) ? +// (-near -position.z) / dir.z : far*sqrt(3.); +// vec3 direction = normalize(toClipSpace3(position+dir*rayLength)-clipPosition); //convert to clip space +// direction.xy = normalize(direction.xy); + +// //get at which length the ray intersects with the edge of the screen +// vec3 maxLengths = (step(0.,direction)-clipPosition) / direction; +// float mult = min(min(maxLengths.x,maxLengths.y),maxLengths.z); + +// vec3 stepv = direction * mult / quality*vec3(RENDER_SCALE,1.0); + +// vec3 spos = clipPosition*vec3(RENDER_SCALE,1.0) ; + +// float minZ = spos.z+stepv.z; +// float maxZ = spos.z+stepv.z; + +// spos.xy += TAA_Offset*texelSize*0.5/RENDER_SCALE; +// spos += stepv*dither ; + +// for(int i = 0; i < int(quality); i++){ +// float sp = sqrt(texelFetch2D(colortex4,ivec2(spos.xy/texelSize/4),0).w/65000.0); +// float currZ = linZ(spos.z); +// if( sp < currZ) { +// float dist = abs(sp-currZ)/currZ; +// if (dist <= 0.05) return vec3(spos.xy, invLinZ(sp))/vec3(RENDER_SCALE,1.0); +// } +// spos += stepv ; +// } +// return vec3(1.1); +// } +vec3 rayTrace_GI(vec3 dir,vec3 position,float dither, float quality){ + + vec3 clipPosition = toClipSpace3(position); + float rayLength = ((position.z + dir.z * far*sqrt(3.)) > -near) ? + (-near -position.z) / dir.z : far*sqrt(3.); + vec3 direction = normalize(toClipSpace3(position+dir*rayLength)-clipPosition); //convert to clip space + direction.xy = normalize(direction.xy); + + //get at which length the ray intersects with the edge of the screen + vec3 maxLengths = (step(0.,direction)-clipPosition) / direction; + float mult = maxLengths.y; + + vec3 stepv = direction * mult / quality*vec3(RENDER_SCALE,1.0) * dither; + vec3 spos = clipPosition*vec3(RENDER_SCALE,1.0) ; + + spos.xy += TAA_Offset*texelSize*0.5/RENDER_SCALE; + + float biasdist = clamp(position.z*position.z/50.0,1,2); // shrink sample size as distance increases + + for(int i = 0; i < int(quality); i++){ + spos += stepv; + float sp = sqrt(texelFetch2D(colortex4,ivec2(spos.xy/texelSize/4),0).w/65000.0); + float currZ = linZ(spos.z); + + if( sp < currZ) { + float dist = abs(sp-currZ)/currZ; + if (abs(dist) < biasdist*0.05) return vec3(spos.xy, invLinZ(sp))/vec3(RENDER_SCALE,1.0); + } + spos += stepv; + } + return vec3(1.1); +} + +void frisvad(in vec3 n, out vec3 f, out vec3 r){ + if(n.z < -0.9) { + f = vec3(0.,-1,0); + r = vec3(-1, 0, 0); + } else { + float a = 1./(1.+n.z); + float b = -n.x*n.y*a; + f = vec3(1. - n.x*n.x*a, b, -n.x) ; + r = vec3(b, 1. - n.y*n.y*a , -n.y); + } +} +mat3 CoordBase(vec3 n){ + vec3 x,y; + frisvad(n,x,y); + return mat3(x,y,n); +} +float unpackRoughness(float x){ + float r = 1.0 - x; + return clamp(r*r,0,1); +} +vec2 R2_samples_spec(int n){ + vec2 alpha = vec2(0.75487765, 0.56984026); + return fract(alpha * n); +} + +vec3 sampleGGXVNDF(vec3 V_, float roughness, float U1, float U2){ + // stretch view + vec3 V = normalize(vec3(roughness * V_.x, roughness * V_.y, V_.z)); + // orthonormal basis + vec3 T1 = (V.z < 0.9999) ? normalize(cross(V, vec3(0,0,1))) : vec3(1,0,0); + vec3 T2 = cross(T1, V); + // sample point with polar coordinates (r, phi) + float a = 1.0 / (1.0 + V.z); + float r = sqrt(U1*0.25); + float phi = (U2 -near) ? + (-near -position.z) / dir.z : far*sqrt(3.); + vec3 direction = normalize(toClipSpace3(position+dir*rayLength)-clipPosition); //convert to clip space + direction.xy = normalize(direction.xy); + + //get at which length the ray intersects with the edge of the screen + vec3 maxLengths = (step(0.,direction)-clipPosition) / direction; + float mult = min(min(maxLengths.x,maxLengths.y),maxLengths.z); + + vec3 stepv = direction * mult / quality*vec3(RENDER_SCALE,1.0); + + vec3 spos = clipPosition*vec3(RENDER_SCALE,1.0) + stepv*dither; + + float minZ = spos.z+stepv.z; + float maxZ = spos.z+stepv.z; + + spos.xy += TAA_Offset*texelSize*0.5/RENDER_SCALE; + + float dist = 1.0 + clamp(position.z*position.z/50.0,0,2); // shrink sample size as distance increases + for (int i = 0; i <= int(quality); i++) { + + // decode depth buffer + vec2 testthing = hand ? spos.xy*texelSize : spos.xy/texelSize/4.0; // fix for ssr on hand + float sp = sqrt(texelFetch2D(gaux1,ivec2(testthing),0).w/65000.0); + sp = invLinZ(sp); + + if(sp <= max(maxZ,minZ) && sp >= min(maxZ,minZ) ) return vec3(spos.xy/RENDER_SCALE,sp); + spos += stepv; + + //small bias + float biasamount = 0.0002 / dist; + if(hand) biasamount = 0.01; + minZ = maxZ-biasamount / ld(spos.z); + + maxZ += stepv.z; + } + return vec3(1.1); +} + +vec3 mix_vec3(vec3 X, vec3 Y, float A){ + return X * (1.0 - A) + Y * A; +} +float mix_float(float X, float Y, float A){ + return X * (1.0 - A) + Y * A; +} + + +// pain +void MaterialReflections( + inout vec3 Output, + float roughness, + vec3 f0, + vec3 albedo, + vec3 sunPos, + vec3 sunCol, + float diffuse, + float lightmap, + vec3 normal, + vec3 np3, + vec3 fragpos, + vec3 noise, + bool hand +){ + vec3 Reflections_Final = Output; + + float Outdoors = clamp((lightmap-0.6)*5.0, 0.0,1.0); + // float Outdoors = clamp((lightmap-0.5) * , 0.0,1.0); + + roughness = unpackRoughness(roughness); + f0 = f0.y == 0.0 ? vec3(0.04) : f0; + + // roughness = 0.0; + // f0 = vec3(0.9); + + mat3 basis = CoordBase(normal); + vec3 normSpaceView = -np3*basis ; + + // roughness stuff + #ifdef Rough_reflections + int seed = (frameCounter%40000); + vec2 ij = fract(R2_samples_spec(seed) + noise.rg) ; + + vec3 H = sampleGGXVNDF(normSpaceView, roughness, ij.x, ij.y); + if(hand) H = normalize(vec3(0.0,0.0,1.0)); + #else + vec3 H = normalize(vec3(0.0,0.0,1.0)); + #endif + + vec3 Ln = reflect(-normSpaceView, clamp(H,-1.0,1.0)); + vec3 L = basis * Ln; + + // fresnel stuff + float fresnel = pow(clamp(1.0 + dot(-Ln, H),0.0,1.0),5.0); + // vec3 F = f0 + (1.0 - f0) * fresnel; + + vec3 F = mix(f0, vec3(1.0), fresnel); + vec3 rayContrib = F; + + + float NdotV = clamp(normalize(dot(np3, normal))*10000.,0.,1.); + bool hasReflections = (f0.y * (1.0 - roughness * Roughness_Threshold)) > 0.01; + + if (Roughness_Threshold == 1.0){ hasReflections = roughness > -1; NdotV = -1.0;} + + if (!hasReflections || NdotV > 0.0 ) Outdoors = 0.0; + + // SSR, Sky, and Sun reflections + vec4 Reflections = vec4(0.0); + vec3 SkyReflection = skyCloudsFromTex(L, colortex4).rgb / 150. * 5.; + vec3 SunReflection = diffuse * GGX2(clamp(normal,-1,1), -np3, sunPos, roughness, f0) * 8./150./3. * sunCol * Sun_specular_Strength; + + #ifndef Sky_reflection + SkyReflection = Reflections_Final; + #endif + + #ifdef Screen_Space_Reflections + if ( hasReflections && NdotV <= 0.0) { // Skip SSR if ray contribution is low + #ifdef SCREENSHOT_MODE + float rayQuality = reflection_quality; + #else + float rayQuality = mix_float(reflection_quality,0.0,sqrt(roughness)); // Scale quality with ray contribution + #endif + vec3 rtPos = rayTraceSpeculars( mat3(gbufferModelView) * L,fragpos.xyz, noise.b, rayQuality, hand); + if (rtPos.z < 1. ){ // Reproject on previous frame + vec3 previousPosition = mat3(gbufferModelViewInverse) * toScreenSpace(rtPos) + gbufferModelViewInverse[3].xyz + cameraPosition-previousCameraPosition; + previousPosition = mat3(gbufferPreviousModelView) * previousPosition + gbufferPreviousModelView[3].xyz; + previousPosition.xy = projMAD(gbufferPreviousProjection, previousPosition).xy / -previousPosition.z * 0.5 + 0.5; + if (previousPosition.x > 0.0 && previousPosition.y > 0.0 && previousPosition.x < 1.0 && previousPosition.x < 1.0) { + Reflections.a = 1.0; + Reflections.rgb = texture2D(colortex5,previousPosition.xy).rgb; + } + } + } + #endif + + // check if the f0 is within the metal ranges, then tint by albedo if it's true. + vec3 Metals = f0.y > 229.5/255.0 ? clamp(albedo + fresnel,0.0,1.0) : vec3(1.0); + + Reflections.rgb *= Metals; + SunReflection *= Metals; + #ifdef Sky_reflection + SkyReflection *= Metals; + #endif + float lumaRayContrib = luma(rayContrib); + // darken albedos, and stop darkening where the sky gets occluded indoors + Reflections_Final *= mix_float(1.0 - (Reflections.a*lumaRayContrib), 1.0 - lumaRayContrib, Outdoors); + + // apply all reflections to the lighting + Reflections_Final += Reflections.rgb * lumaRayContrib; + Reflections_Final += SkyReflection * lumaRayContrib * (1.0-Reflections.a) * Outdoors ; + + float visibilityFactor = clamp(exp2((pow(roughness,3.0) / f0.y) * -4),0,1); + #ifdef Rough_reflections + Output = hand ? mix_vec3(Output, Reflections_Final, visibilityFactor) : Reflections_Final; + #else + Output = mix_vec3(Output, Reflections_Final, visibilityFactor); + #endif + + Output += SunReflection ; +} \ No newline at end of file diff --git a/shaders/lib/stars.glsl b/shaders/lib/stars.glsl new file mode 100644 index 0000000..c018c07 --- /dev/null +++ b/shaders/lib/stars.glsl @@ -0,0 +1,48 @@ +//Original star code : https://www.shadertoy.com/view/Md2SR3 , optimised + + + +// Return random noise in the range [0.0, 1.0], as a function of x. +float hash12(vec2 p) +{ + vec3 p3 = fract(vec3(p.xyx) * 0.1031); + p3 += dot(p3, p3.yzx + 19.19); + return fract((p3.x + p3.y) * p3.z); +} +// Convert Noise2d() into a "star field" by stomping everthing below fThreshhold to zero. +float NoisyStarField( in vec2 vSamplePos, float fThreshhold ) +{ + float StarVal = hash12( vSamplePos ); + StarVal = clamp(StarVal/(1.0 - fThreshhold) - fThreshhold/(1.0 - fThreshhold),0.0,1.0); + + return StarVal; +} + +// Stabilize NoisyStarField() by only sampling at integer values. +float StableStarField( in vec2 vSamplePos, float fThreshhold ) +{ + // Linear interpolation between four samples. + // Note: This approach has some visual artifacts. + // There must be a better way to "anti alias" the star field. + float fractX = fract( vSamplePos.x ); + float fractY = fract( vSamplePos.y ); + vec2 floorSample = floor( vSamplePos ); + float v1 = NoisyStarField( floorSample, fThreshhold ); + float v2 = NoisyStarField( floorSample + vec2( 0.0, 1.0 ), fThreshhold ); + float v3 = NoisyStarField( floorSample + vec2( 1.0, 0.0 ), fThreshhold ); + float v4 = NoisyStarField( floorSample + vec2( 1.0, 1.0 ), fThreshhold ); + + float StarVal = v1 * ( 1.0 - fractX ) * ( 1.0 - fractY ) + + v2 * ( 1.0 - fractX ) * fractY + + v3 * fractX * ( 1.0 - fractY ) + + v4 * fractX * fractY; + return StarVal; +} + +float stars(vec3 fragpos){ + + float elevation = clamp(fragpos.y,0.,1.); + vec2 uv = fragpos.xz/(1.5+elevation); + + return StableStarField(uv*1500.,0.999)*0.5*(0.3-0.3*rainStrength); +} diff --git a/shaders/lib/texFiltering.glsl b/shaders/lib/texFiltering.glsl new file mode 100644 index 0000000..7d58676 --- /dev/null +++ b/shaders/lib/texFiltering.glsl @@ -0,0 +1,19 @@ +vec4 smoothfilter(in sampler2D tex, in vec2 uv, in vec2 textureResolution) +{ + uv = uv*textureResolution + 0.5; + vec2 iuv = floor( uv ); + vec2 fuv = fract( uv ); + uv = iuv + (fuv*fuv)*(3.0-2.0*fuv); + uv = uv/textureResolution - 0.5/textureResolution; + return texture2D( tex, uv); +} + +float shadowsmoothfilter(in sampler2DShadow tex, in vec3 uv,in float textureResolution) +{ + uv.xy = uv.xy*textureResolution + 0.5; + vec2 iuv = floor( uv.xy ); + vec2 fuv = fract( uv.xy ); + uv.xy = iuv + (fuv*fuv)*(3.0-2.0*fuv); + uv.xy = uv.xy/textureResolution - 0.5/textureResolution; + return shadow2D( tex, uv).x; +} diff --git a/shaders/lib/util.glsl b/shaders/lib/util.glsl new file mode 100644 index 0000000..f701920 --- /dev/null +++ b/shaders/lib/util.glsl @@ -0,0 +1,196 @@ +#define TIME_MULT 1.0 +#define TIME (frameTimeCounter * TIME_MULT) + +const float PI = acos(-1.0); +const float TAU = PI * 2.0; +const float hPI = PI * 0.5; +const float rPI = 1.0 / PI; +const float rTAU = 1.0 / TAU; + +const float PHI = sqrt(5.0) * 0.5 + 0.5; +const float rLOG2 = 1.0 / log(2.0); + +const float goldenAngle = TAU / PHI / PHI; + +#define clamp01(x) clamp(x, 0.0, 1.0) +#define max0(x) max(x, 0.0) +#define min0(x) min(x, 0.0) +#define max3(a) max(max(a.x, a.y), a.z) +#define min3(a) min(min(a.x, a.y), a.z) +#define max4(a, b, c, d) max(max(a, b), max(c, d)) +#define min4(a, b, c, d) min(min(a, b), min(c, d)) + +#define fsign(x) (clamp01(x * 1e35) * 2.0 - 1.0) +#define fstep(x,y) clamp01((y - x) * 1e35) + +#define diagonal2(m) vec2((m)[0].x, (m)[1].y) +#define diagonal3(m) vec3(diagonal2(m), m[2].z) +#define diagonal4(m) vec4(diagonal3(m), m[2].w) + +#define transMAD(mat, v) (mat3(mat) * (v) + (mat)[3].xyz) +#define projMAD(mat, v) (diagonal3(mat) * (v) + (mat)[3].xyz) + +#define encodeColor(x) (x * 0.00005) +#define decodeColor(x) (x * 20000.0) + +#define cubeSmooth(x) (x * x * (3.0 - 2.0 * x)) + +#define lumCoeff vec3(0.2125, 0.7154, 0.0721) + +float facos(const float sx){ + float x = clamp(abs( sx ),0.,1.); + float a = sqrt( 1. - x ) * ( -0.16882 * x + 1.56734 ); + return sx > 0. ? a : PI - a; + //float c = clamp(-sx * 1e35, 0., 1.); + //return c * pi + a * -(c * 2. - 1.); //no conditional version +} + + +vec2 sincos(float x){ + return vec2(sin(x), cos(x)); +} + +vec2 circlemap(float i, float n){ + return sincos(i * n * goldenAngle) * sqrt(i); +} + +vec3 circlemapL(float i, float n){ + return vec3(sincos(i * n * goldenAngle), sqrt(i)); +} + +vec3 calculateRoughSpecular(const float i, const float alpha2, const int steps) { + + float x = (alpha2 * i) / (1.0 - i); + float y = i * float(steps) * 64.0 * 64.0 * goldenAngle; + + float c = inversesqrt(x + 1.0); + float s = sqrt(x) * c; + + return vec3(cos(y) * s, sin(y) * s, c); +} + +vec3 clampNormal(vec3 n, vec3 v){ + float NoV = clamp( dot(n, -v), 0., 1. ); + return normalize( NoV * v + n ); +} + +vec3 srgbToLinear(vec3 srgb){ + return mix( + srgb / 12.92, + pow(.947867 * srgb + .0521327, vec3(2.4) ), + step( .04045, srgb ) + ); +} + +vec3 linearToSRGB(vec3 linear){ + return mix( + linear * 12.92, + pow(linear, vec3(1./2.4) ) * 1.055 - .055, + step( .0031308, linear ) + ); +} + + + +vec3 blackbody(float Temp) +{ + float t = pow(Temp, -1.5); + float lt = log(Temp); + + vec3 col = vec3(0.0); + col.x = 220000.0 * t + 0.58039215686; + col.y = 0.39231372549 * lt - 2.44549019608; + col.y = Temp > 6500. ? 138039.215686 * t + 0.72156862745 : col.y; + col.z = 0.76078431372 * lt - 5.68078431373; + col = clamp01(col); + col = Temp < 1000. ? col * Temp * 0.001 : col; + + return srgbToLinear(col); +} + +float calculateHardShadows(float shadowDepth, vec3 shadowPosition, float bias) { + if(shadowPosition.z >= 1.0) return 1.0; + + return 1.0 - fstep(shadowDepth, shadowPosition.z - bias); +} + +vec3 genUnitVector(vec2 xy) { + xy.x *= TAU; xy.y = xy.y * 2.0 - 1.0; + return vec3(sincos(xy.x) * sqrt(1.0 - xy.y * xy.y), xy.y); +} + +vec2 rotate(vec2 x, float r){ + vec2 sc = sincos(r); + return mat2(sc.x, -sc.y, sc.y, sc.x) * x; +} + +vec3 cartToSphere(vec2 coord) { + coord *= vec2(TAU, PI); + vec2 lon = sincos(coord.x) * sin(coord.y); + return vec3(lon.x, 2.0/PI*coord.y-1.0, lon.y); +} + +vec2 sphereToCart(vec3 dir) { + float lonlat = atan(-dir.x, -dir.z); + return vec2(lonlat * rTAU +0.5,0.5*dir.y+0.5); +} + +mat3 getRotMat(vec3 x,vec3 y){ + float d = dot(x,y); + vec3 cr = cross(y,x); + + float s = length(cr); + + float id = 1.-d; + + vec3 m = cr/s; + + vec3 m2 = m*m*id+d; + vec3 sm = s*m; + + vec3 w = (m.xy*id).xxy*m.yzz; + + return mat3( + m2.x, w.x-sm.z, w.y+sm.y, + w.x+sm.z, m2.y, w.z-sm.x, + w.y-sm.y, w.z+sm.x, m2.z + ); +} + +// No intersection if returned y component is < 0.0 +vec2 rsi(vec3 position, vec3 direction, float radius) { + float PoD = dot(position, direction); + float radiusSquared = radius * radius; + + float delta = PoD * PoD + radiusSquared - dot(position, position); + if (delta < 0.0) return vec2(-1.0); + delta = sqrt(delta); + + return -PoD + vec2(-delta, delta); +} +float HaltonSeq3(int index) + { + float r = 0.; + float f = 1.; + int i = index; + while (i > 0) + { + f /= 3.0; + r += f * (i % 3); + i = int(i / 3.0); + } + return r; + } +float HaltonSeq2(int index) + { + float r = 0.; + float f = 1.; + int i = index; + while (i > 0) + { + f /= 2.0; + r += f * (i % 2); + i = int(i / 2.0); + } + return r; + } diff --git a/shaders/lib/volumetricClouds.glsl b/shaders/lib/volumetricClouds.glsl new file mode 100644 index 0000000..ffc6b35 --- /dev/null +++ b/shaders/lib/volumetricClouds.glsl @@ -0,0 +1,436 @@ +#define VOLUMETRIC_CLOUDS// if you don't like the noise on the default cloud settings, turn up the cloud samples. if that hurts performance too much, turn down the clouds quality. + +#define cloud_LevelOfDetail 1 // Number of fbm noise iterations for on-screen clouds (-1 is no fbm) [-1 0 1 2 3 4 5 6 7 8] +#define cloud_ShadowLevelOfDetail 0 // Number of fbm noise iterations for the shadowing of on-screen clouds (-1 is no fbm) [-1 0 1 2 3 4 5 6 7 8] +#define cloud_LevelOfDetailLQ 1 // Number of fbm noise iterations for reflected clouds (-1 is no fbm) [-1 0 1 2 3 4 5 6 7 8] +#define cloud_ShadowLevelOfDetailLQ 0 // Number of fbm noise iterations for the shadowing of reflected clouds (-1 is no fbm) [-1 0 1 2 3 4 5 6 7 8] +#define minRayMarchSteps 20 // Number of ray march steps towards zenith for on-screen clouds [20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 105 110 115 120 125 130 135 140 145 150 155 160 165 170 175 180 185 190 195 200] +#define maxRayMarchSteps 30 // Number of ray march steps towards horizon for on-screen clouds [5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 105 110 115 120 125 130 135 140 145 150 155 160 165 170 175 180 185 190 195 200] +#define minRayMarchStepsLQ 10 // Number of ray march steps towards zenith for reflected clouds [5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100] +#define maxRayMarchStepsLQ 30 // Number of ray march steps towards horizon for reflected clouds [ 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100] +#define cloudMieG 0.5 // Values close to 1 will create a strong peak of luminance around the sun and weak elsewhere, values close to 0 means uniform fog. [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 ] +#define cloudMieG2 0.9 // Multiple scattering approximation. Values close to 1 will create a strong peak of luminance around the sun and weak elsewhere, values close to 0 means uniform fog. [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 ] +#define cloudMie2Multiplier 0.7 // Multiplier for multiple scattering approximation [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 ] + +#define Cloud_top_cutoff 1.0 // the cutoff point on the top part of the cloud. [ 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.5 3.0 4 5 6 7 8 9] +#define Cloud_base_cutoff 5.0 // the cutoff point on the base of the cloud. [0.1 1 2 4 6 8 10 12 14 16 18 20] + + +#ifdef HQ_CLOUDS +int maxIT_clouds = minRayMarchSteps; +int maxIT = maxRayMarchSteps; +#else +int maxIT_clouds = minRayMarchStepsLQ; +int maxIT = maxRayMarchStepsLQ; +#endif + +/////// shape +#define cloudDensity 0.0514 // Cloud Density, 0.04-0.06 is around irl values [0.0010 0.0011 0.0013 0.0015 0.0017 0.0020 0.0023 0.0026 0.0030 0.0034 0.0039 0.0045 0.0051 0.0058 0.0067 0.0077 0.0088 0.0101 0.0115 0.0132 0.0151 0.0173 0.0199 0.0228 0.0261 0.0299 0.0342 0.0392 0.0449 0.0514 0.0589 0.0675 0.0773 0.0885 0.1014 0.1162 0.1331 0.1524 0.1746 0.2000 0.3 0.35 0.4 0.45 0.5 0.6 0.7 0.8 0.9 1.0] +#define fbmAmount 0.50 // Amount of noise added to the cloud shape [0.00 0.02 0.04 0.06 0.08 0.10 0.12 0.14 0.16 0.18 0.20 0.22 0.24 0.26 0.28 0.30 0.32 0.34 0.36 0.38 0.40 0.42 0.44 0.46 0.48 0.50 0.52 0.54 0.56 0.58 0.60 0.62 0.64 0.66 0.68 0.70 0.72 0.74 0.76 0.78 0.80 0.82 0.84 0.86 0.88 0.90 0.92 0.94 0.96 0.98 1.00 1.02 1.04 1.06 1.08 1.10 1.12 1.14 1.16 1.18 1.20 1.22 1.24 1.26 1.28 1.30 1.32 1.34 1.36 1.38 1.40 1.42 1.44 1.46 1.48 1.50 1.52 1.54 1.56 1.58 1.60 1.62 1.64 1.66 1.68 1.70 1.72 1.74 1.76 1.78 1.80 1.82 1.84 1.86 1.88 1.90 1.92 1.94 1.96 1.98 2.00 2.02 2.04 2.06 2.08 2.10 2.12 2.14 2.16 2.18 2.20 2.22 2.24 2.26 2.28 2.30 2.32 2.34 2.36 2.38 2.40 2.42 2.44 2.46 2.48 2.50 2.52 2.54 2.56 2.58 2.60 2.62 2.64 2.66 2.68 2.70 2.72 2.74 2.76 2.78 2.80 2.82 2.84 2.86 2.88 2.90 2.92 2.94 2.96 2.98 3.00] +#define fbmPower1 3.00 // Higher values increases high frequency details of the cloud shape [1.0 1.50 1.52 1.54 1.56 1.58 1.60 1.62 1.64 1.66 1.68 1.70 1.72 1.74 1.76 1.78 1.80 1.82 1.84 1.86 1.88 1.90 1.92 1.94 1.96 1.98 2.00 2.02 2.04 2.06 2.08 2.10 2.12 2.14 2.16 2.18 2.20 2.22 2.24 2.26 2.28 2.30 2.32 2.34 2.36 2.38 2.40 2.42 2.44 2.46 2.48 2.50 2.52 2.54 2.56 2.58 2.60 2.62 2.64 2.66 2.68 2.70 2.72 2.74 2.76 2.78 2.80 2.82 2.84 2.86 2.88 2.90 2.92 2.94 2.96 2.98 3.00 3.02 3.04 3.06 3.08 3.10 3.12 3.14 3.16 3.18 3.20 3.22 3.24 3.26 3.28 3.30 3.32 3.34 3.36 3.38 3.40 3.42 3.44 3.46 3.48 3.50 3.52 3.54 3.56 3.58 3.60 3.62 3.64 3.66 3.68 3.70 3.72 3.74 3.76 3.78 3.80 3.82 3.84 3.86 3.88 3.90 3.92 3.94 3.96 3.98 4.00 5. 6. 7. 8. 9. 10.] +#define fbmPower2 1.50 // Lower values increases high frequency details of the cloud shape [1.00 1.50 1.52 1.54 1.56 1.58 1.60 1.62 1.64 1.66 1.68 1.70 1.72 1.74 1.76 1.78 1.80 1.82 1.84 1.86 1.88 1.90 1.92 1.94 1.96 1.98 2.00 2.02 2.04 2.06 2.08 2.10 2.12 2.14 2.16 2.18 2.20 2.22 2.24 2.26 2.28 2.30 2.32 2.34 2.36 2.38 2.40 2.42 2.44 2.46 2.48 2.50 2.52 2.54 2.56 2.58 2.60 2.62 2.64 2.66 2.68 2.70 2.72 2.74 2.76 2.78 2.80 2.82 2.84 2.86 2.88 2.90 2.92 2.94 2.96 2.98 3.00 3.02 3.04 3.06 3.08 3.10 3.12 3.14 3.16 3.18 3.20 3.22 3.24 3.26 3.28 3.30 3.32 3.34 3.36 3.38 3.40 3.42 3.44 3.46 3.48 3.50 3.52 3.54 3.56 3.58 3.60 3.62 3.64 3.66 3.68 3.70 3.72 3.74 3.76 3.78 3.80 3.82 3.84 3.86 3.88 3.90 3.92 3.94 3.96 3.98 4.00 5. 6. 7. 8. 9. 10.] + +#define Cloud_Size 35 // [1 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100] +#define Cloud_Height 319 // [-300 -290 -280 -270 -260 -250 -240 -230 -220 -210 -200 -190 -180 -170 -160 -150 -140 -130 -120 -110 -100 -90 -80 -70 -60 -50 -40 -30 -20 -10 0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 250 260 270 280 290 300 310 319 320] + +/////// lighting +#define Shadow_brightness 0.5 // how dark / bright you want the shadowed part of the clouds to be. low values can look weird. [ 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 3.0 4.0 5.0 6.0] +#define self_shadow_samples 3.0 // amount of interations for cloud self shadows. longer/shorter cloud self shadows. [ 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 15 20 30 40 50] + + +#define Dynamic_sky_day -1 // -1 MEANS THIS IS OFF. select which day of the 8 to the clouds should take shape in [0 1 2 3 4 5 6 7 ] +#define Dynamic_Sky // day 1: partly cloudy. day 2: really cloudy, misty. day 3: mostly clear. day 4: cloudy. day 5: cloudy again. day 6: scattered clouds. day 7: partly cloudy. day 8: clear + +#define High_Altitude_Clouds // a layer of clouds way up yonder +#define Cumulus_Clouds + + +/////// other +#define flip_the_clouds 1 // what was once above is now below [1 -1] +#define cloud_speed 1 // how [ 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 2.0 3.0 5.0 10.0 25.0 50.0 100.0 200.0] + +#ifdef HQ_CLOUDS + const int cloudLoD = cloud_LevelOfDetail; + const int cloudShadowLoD = cloud_ShadowLevelOfDetail; +#else + const int cloudLoD = cloud_LevelOfDetailLQ; + const int cloudShadowLoD = cloud_ShadowLevelOfDetailLQ; +#endif + +uniform float viewHeight; +uniform float viewWidth; +uniform sampler2D colortex4;//Skybox +// uniform float lightningFlash; + +// uniform vec4 Moon_Weather_properties; +// float highCov = Dynamic_sky_day == 0 ? 0.4 : Dynamic_sky_day == 1 ? 0.6 : Dynamic_sky_day == 2 ? 0.4 : Dynamic_sky_day == 3 ? -1000 : Dynamic_sky_day == 4 ? 1 : Dynamic_sky_day == 5 ? -1000 : Dynamic_sky_day == 6 ? 0.6 : 0.4; +// float lowCov = Dynamic_sky_day == 0 ? 0.4 : Dynamic_sky_day == 1 ? 0.9 : Dynamic_sky_day == 2 ? 0.0 : Dynamic_sky_day == 3 ? 0.5 : Dynamic_sky_day == 4 ? 0 : Dynamic_sky_day == 5 ? -1000 : Dynamic_sky_day == 6 ? -1000 : 0.8; +// float FogDen = Dynamic_sky_day == 0 ? 0 : Dynamic_sky_day == 1 ? 0 : Dynamic_sky_day == 2 ? 0 : Dynamic_sky_day == 3 ? 0 : Dynamic_sky_day == 4 ? 0 : Dynamic_sky_day == 5 ? 0 : Dynamic_sky_day == 6 ? 0 : 0; +// float CloudyFogden = Dynamic_sky_day == 0 ? 0 : Dynamic_sky_day == 1 ? 0 : Dynamic_sky_day == 2 ? 0 : Dynamic_sky_day == 3 ? 0 : Dynamic_sky_day == 4 ? 0 : Dynamic_sky_day == 5 ? 0 : Dynamic_sky_day == 6 ? 0 : 0; +// vec4 custom_day = vec4(highCov, lowCov, FogDen, CloudyFogden); + + +// #ifdef Dynamic_Sky + +// #if Dynamic_sky_day < 0 +// vec4 Weather_properties = Moon_Weather_properties; +// #endif + +// #if Dynamic_sky_day >= 0 +// vec4 Weather_properties = custom_day; +// #endif + +// #else +// vec4 Weather_properties = vec4(0); +// #endif + +#define WEATHERCLOUDS +#include "/lib/climate_settings.glsl" + + + +float maxHeight = 5000.; +float cloud_height = 1500.; + +// quick variables +float rainCloudwetness = rainStrength ; +float rainClouds = rainCloudwetness; + +float cloud_movement1 = frameTimeCounter * cloud_speed * 0.001; + + +//3D noise from 2d texture +float densityAtPos(in vec3 pos){ + pos /= 18.; + pos.xz *= 0.5; + vec3 p = floor(pos); + vec3 f = fract(pos); + vec2 uv = p.xz + f.xz + p.y * vec2(0.0,193.0); + vec2 coord = uv / 512.0; + + //The y channel has an offset to avoid using two textures fetches + + vec2 xy = texture2D(noisetex, coord).yx; + + + return mix(xy.r,xy.g, f.y); +} + +float cloudshape = 0.0; + +float cloudCov(in vec3 pos,vec3 samplePos){ + + float CloudLarge = texture2D(noisetex, samplePos.xz/150000 + cloud_movement1).b; + float CloudSmall = texture2D(noisetex, samplePos.xz/15000 - cloud_movement1 + vec2(1-CloudLarge,-CloudLarge)/5).r; + + float coverage = CloudSmall-CloudLarge; + + float mult = max( abs(pos.y-1750) / 5000, 0); + + // #ifdef Dynamic_Sky + // cloudshape = ( coverage + (-0.35+mix(Weather_properties.r, Rain_coverage, rainCloudwetness)*1.5) ) - mult; + // // cloudshape = coverage - mult; + // #else + // cloudshape = ( coverage + (-0.35+mix(cloudCoverage, Rain_coverage, rainCloudwetness)*1.5) ) - mult ; + // #endif + + cloudshape = DailyWeather_LowAltitude(coverage) - mult; + + return max(cloudshape,0.0); +} +//Erode cloud with 3d Perlin-worley noise, actual cloud value +float cloudVol(in vec3 pos,in vec3 samplePos,in float cov, in int LoD){ + float noise = 0.0 ; + float totalWeights = 0.0; + float pw = log(fbmPower1); + float pw2 = log(fbmPower2); + + // samplePos.xyz -= cloud_movement1.xyz*400; + + for (int i = 0; i <= LoD; i++){ + float weight = exp(-i*pw2); + + noise += weight - densityAtPos(samplePos * 8 * exp(i*pw) )*weight ; + totalWeights += weight ; + } + + noise *= clamp(1.0-cloudshape,0.0,1.0); + noise /= totalWeights; + noise = noise*noise; + float cloud = max(cov-noise*noise*fbmAmount,0.0); + + return cloud; +} + +float getCloudDensity(in vec3 pos, in int LoD){ + + + vec3 samplePos = pos*vec3(1.0,1./48.,1.0)/4 ; + float coverageSP = cloudCov(pos,samplePos); + + if (coverageSP > 0.001) { + if (LoD < 0) return max(coverageSP - 0.27*fbmAmount,0.0); + return cloudVol(pos,samplePos,coverageSP, LoD); + } else return 0.0; +} + +float HighAltitudeClouds(vec3 pos){ + vec2 pos2d = pos.xz/100000.0 ; + + float cloudLarge = texture2D(noisetex, pos2d/5. ).b; + float cloudSmall = texture2D(noisetex, pos2d + vec2(-cloudLarge,cloudLarge)/10).b; + + + // #ifdef Dynamic_Sky + // coverage = max(10.3 - Weather_properties.g*10.,0.0); + // // thickness = Weather_properties.g*3 ; + // #endif + + float coverage = 1; + float thickness = 1; + DailyWeather_HighAltitude(coverage, thickness); + + float cirrusFinal = exp(pow((cloudSmall + cloudLarge),thickness) * -coverage ); + return max(cirrusFinal,0.0); +} + +//Mie phase function +float phaseg(float x, float g){ + float gg = g * g; + return (gg * -0.25 + 0.25) * pow(-2.0 * (g * x) + (gg + 1.0), -1.5) /3.14; +} + +// random magic number bullshit go! +vec3 Cloud_lighting( + vec3 Pos, + float CloudShape, + float SkyShadowing, + float SunShadowing, + float MoonShadowing, + vec3 SkyColors, + vec3 sunContribution, + vec3 sunContributionMulti, + vec3 moonContribution, + vec3 moonContributionMulti, + int cloudType +){ + + // low altitude + float powder = max(1.0 - exp2(-CloudShape*100.0),0.0); + float ambientShading = (powder*0.8+0.2) * exp2(-SkyShadowing * 50.); + vec3 ambientLighting = SkyColors * 4.0 * ambientShading; + + if(cloudType == 1) ambientLighting = SkyColors * (1.0-powder/2); + + vec3 sunLighting = ( exp2(-SunShadowing * 2.0 )*sunContribution + exp(-SunShadowing * 0.2 )*sunContributionMulti ) * powder; + vec3 moonLighting = ( exp2(-MoonShadowing * 2.0 )*moonContribution + exp(-MoonShadowing * 0.2 )*moonContributionMulti ) * powder; + + // if(cloudType == 0) sunLighting *= clamp((1.05-CirrusCoverage),0,1); // less sunlight hits low clouds if high clouds have alot of coverage + + return ambientLighting + sunLighting + moonLighting; +} + +vec3 startOffset = vec3(0); +vec4 renderClouds( + vec3 fragpositi, + vec3 color, + float dither, + vec3 sunColor, + vec3 moonColor, + vec3 avgAmbient, + float dither2 +){ + #ifndef VOLUMETRIC_CLOUDS + return vec4(0.0,0.0,0.0,1.0); + #endif + + float vL = 0.0; + float total_extinction = 1.0; + color = vec3(0.0); + + //project pixel position into projected shadowmap space + vec4 fragposition = gbufferModelViewInverse*vec4(fragpositi,1.0); + + vec3 worldV = normalize(fragposition.rgb); + float VdotU = worldV.y; + + //project view origin into projected shadowmap space + vec4 start = (gbufferModelViewInverse*vec4(0.0,0.0,0.,1.)); + + // vec3 dV_view = worldV; + + // cloud plane curvature + float curvature = 0.05; + worldV.y += curvature; + vec3 dV_view = worldV; + worldV.y -= curvature; + vec3 dV_view2 = worldV; + + + + maxIT_clouds = int(clamp( maxIT_clouds / sqrt(exp2(VdotU)),0.0, maxIT)); + + worldV = normalize(worldV)*100000. + cameraPosition; //makes max cloud distance not dependant of render distance + dV_view = normalize(dV_view); + + float height = Cloud_Height; + int flipClouds = 1; + // if (worldV.y < cloud_height){ + // flipClouds = -1; + // }; + + if (worldV.y < cloud_height || cameraPosition.y > 390. ) return vec4(0.,0.,0.,1.); //don't trace if no intersection is possible + // if (worldV.y < cloud_height && flipClouds == -1) return vec4(0.,0.,0.,1.); //don't trace if no intersection is possible + + //setup ray to start at the start of the cloud plane and end at the end of the cloud plane + dV_view *= max(maxHeight - cloud_height, 0.0)/dV_view.y/(maxIT_clouds); + startOffset = dV_view*dither; + + vec3 camPos = ((cameraPosition*flipClouds)-height)*Cloud_Size; + + vec3 progress_view = startOffset + camPos + dV_view*(cloud_height-camPos.y)/dV_view.y; + + float shadowStep = 200.; + vec3 dV_Sun = flipClouds * normalize(mat3(gbufferModelViewInverse)*sunVec)*shadowStep; + float mult = length(dV_view); + + float SdotV = dot(sunVec,normalize(fragpositi)); + + float spinX = sin(frameTimeCounter *3.14); + float spinZ = sin(1.57 + frameTimeCounter*3.14); + float SdotV_custom = dot(mat3(gbufferModelView) * normalize(vec3(0,0.1,0)),normalize(fragpositi)); + + float phaseLightning = phaseg(SdotV_custom, 0.7); + + // direct light colors and shit for clouds + // multiply everything by ~pi just for good luck :D + float mieDayMulti = phaseg(SdotV, 0.35)*3.14; + float mieDay = mix(phaseg(SdotV,0.75), mieDayMulti,0.8)*3.14; + + float mieNightMulti = phaseg(-SdotV, 0.35)*3.14; + float mieNight = mix(phaseg(-SdotV,0.9), mieNightMulti,0.5)*3.14; + + vec3 sunContribution = mieDay*sunColor*6.14; + vec3 sunContributionMulti = mieDayMulti*sunColor*3.14; + + vec3 moonContribution = mieNight*moonColor*3.14; + vec3 moonContributionMulti = mieNightMulti*moonColor*3.14; + + float ambientMult = 1.0; + vec3 skyCol0 = (avgAmbient * ambientMult) ; + + vec3 progress_view_high = progress_view + (20000.0-progress_view.y) * dV_view / dV_view.y; + float muEshD_high = 0.0; + float muEshN_high = 0.0; + + float cirrusShadowStep = 7.; + float cirrusDensity = 0.03; + + + float cloud = 0.0; + for(int i=0;i= 0.0){ + float muS = cloud*densityofclouds; + float muE = cloud*densityofclouds; + + float muEshD = 0.0; + if (sunContribution.g > 1e-5){ + for (int j=0; j < self_shadow_samples; j++){ + float sample = j+dither2; + + #ifdef Cumulus_Clouds + // low altitude clouds shadows + vec3 shadowSamplePos = progress_view + dV_Sun * (sample + sample*2.0); + + if (shadowSamplePos.y < maxHeight){ + float cloudS = getCloudDensity(vec3(shadowSamplePos), cloudShadowLoD); + muEshD += cloudS*cloudDensity*shadowStep; + } + #endif + + #ifdef High_Altitude_Clouds + // high altitude clouds shadows + vec3 shadowSamplePos_high = progress_view_high + dV_Sun * (sample + sample*2.0); + float highAlt_cloudS = HighAltitudeClouds(shadowSamplePos_high); + muEshD_high += highAlt_cloudS*cirrusDensity*cirrusShadowStep; + #endif + } + } + + float muEshN = 0.0; + if (moonContribution.g > 1e-5){ + for (int j=0; j= 0.0){ + float muS = cirrus*cirrusDensity; + float muE = cirrus*cirrusDensity; + + float muEshA_high = cirrus*cirrusDensity; + + vec3 S = Cloud_lighting(progress_view, muE, muEshA_high, muEshD_high, muEshN_high, skyCol0 * max(abs(dV_Sun.y)/150.0,0.5) , sunContribution, sunContributionMulti, moonContribution, moonContributionMulti, 1); + + vec3 Sint = (S - S * exp(-mult*muE)) / muE; + color += max(muS*Sint*total_extinction,0.0); + total_extinction *= max(exp(-muE*mult),0); + } + #endif + + vec3 normView = normalize(dV_view2)*flipClouds; + // Assume fog color = sky gradient at long distance + vec3 fogColor = skyFromTex(normView, colortex4)/150.; + float dist = (cloud_height - (cameraPosition.y))/normalize(dV_view2).y; + float fog = exp(-dist/15000.0*(1.0+rainCloudwetness*8.)); + return mix(vec4(fogColor,0.0), vec4(color,total_extinction), fog); + // return vec4(color,total_extinction); +} diff --git a/shaders/lib/volumetricFog.glsl b/shaders/lib/volumetricFog.glsl new file mode 100644 index 0000000..6324a7b --- /dev/null +++ b/shaders/lib/volumetricFog.glsl @@ -0,0 +1,184 @@ +#define VL_CLOUDS_SHADOWS +#define CLOUDS_SHADOWS +#define CLOUDS_SHADOWS_STRENGTH 1.0 //[0.1 0.125 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.9 1.0] +#define VL_SAMPLES2 6 //[4 6 8 10 12 14 16 20 24 30 40 50] +#define Ambient_Mult 1.0 //[0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.5 2.0 3.0 4.0 5.0 6.0 10.0] +#define SEA_LEVEL 70 //[0 10 20 30 40 50 60 70 80 90 100 110 120 130 150 170 190] //The volumetric light uses an altitude-based fog density, this is where fog density is the highest, adjust this value according to your world. +#define ATMOSPHERIC_DENSITY 1.0 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 4.0 5.0 7.5 10.0 12.5 15.0 20.] +#define fog_mieg1 0.40 //[0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.75 0.8 0.85 0.9 0.95 1.0] +#define fog_mieg2 0.10 //[0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.75 0.8 0.85 0.9 0.95 1.0] +#define fog_coefficientRayleighR 5.8 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0] +#define fog_coefficientRayleighG 1.35 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0] +#define fog_coefficientRayleighB 3.31 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0] + +#define fog_coefficientMieR 3.0 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0] +#define fog_coefficientMieG 3.0 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0] +#define fog_coefficientMieB 3.0 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0] + +// #define Cloudy_Fog_Density 5.0 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0] +// #define Uniform_Fog_Density 1.0 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0] + +// #define uniformfog_fade 10 // [5 10 20 30 40 50 60 70 80 90 100] +// #define cloudyfog_fade 10 // [5 10 20 30 40 50 60 70 80 90 100] + +float luma(vec3 color) { + return dot(color,vec3(0.299, 0.587, 0.114)); +} + +float phaseRayleigh(float cosTheta) { + const vec2 mul_add = vec2(0.1, 0.28) /acos(-1.0); + return cosTheta * mul_add.x + mul_add.y; // optimized version from [Elek09], divided by 4 pi for energy conservation +} + + +// #define TIMEOFDAYFOG +// #include "/lib/climate_settings.glsl" + // uniform int worldTime; + + // void TimeOfDayFog( inout float Uniform, inout float Cloudy) { + + // float Time = (worldTime%24000)*1.0; + + // // set schedules for fog to appear at specific ranges of time in the day. + // float Morning = clamp((Time-22000)/2000,0,1) + clamp((2000-Time)/2000,0,1); + // float Noon = clamp(Time/2000,0,1) * clamp((12000-Time)/2000,0,1); + // float Evening = clamp((Time-10000)/2000,0,1) * clamp((14000-Time)/2000,0,1) ; + // float Night = clamp((Time-12000)/2000,0,1) * clamp((23000-Time)/2000,0,1) ; + + // vec4 UniformDensity = vec4(0, 55, 0, 0); + // vec4 CloudyDensity = vec4(0, 0, 0, 0); + + + // Uniform *= Morning*UniformDensity.r + Noon*UniformDensity.g + Evening*UniformDensity.b + Night*UniformDensity.a; + // Cloudy *= Morning*CloudyDensity.r + Noon*CloudyDensity.g + Evening*CloudyDensity.b + Night*CloudyDensity.a; + // } + +float cloudVol(in vec3 pos){ + + vec3 samplePos = pos*vec3(1.0,1./24.,1.0); + vec3 samplePos2 = pos*vec3(1.0,1./48.,1.0); + + + float mult = exp2( -max((pos.y - SEA_LEVEL) / 35.,0.0)); + + float fog_shape = 1-densityAtPos(samplePos * 24.0); + float fog_eroded = densityAtPos( samplePos2 * 150.0); + + float CloudyFog = max( (fog_shape*2.0 - fog_eroded*0.5) - 1.4, 0.0) * mult; + float UniformFog = exp2( -max((pos.y - SEA_LEVEL) / 25.,0.0)); + + float RainFog = max(fog_shape*10. - 7.,0.5) * exp2( -max((pos.y - SEA_LEVEL) / 25.,0.0)) * 5. * rainStrength; + + TimeOfDayFog(UniformFog, CloudyFog); + + return RainFog + CloudyFog + UniformFog; +} + +mat2x3 getVolumetricRays( + float dither, + vec3 fragpos +){ + //project pixel position into projected shadowmap space + vec3 wpos = mat3(gbufferModelViewInverse) * fragpos + gbufferModelViewInverse[3].xyz; + vec3 fragposition = mat3(shadowModelView) * wpos + shadowModelView[3].xyz; + fragposition = diagonal3(shadowProjection) * fragposition + shadowProjection[3].xyz; + + //project view origin into projected shadowmap space + vec3 start = toShadowSpaceProjected(vec3(0.)); + + //rayvector into projected shadow map space + //we can use a projected vector because its orthographic projection + //however we still have to send it to curved shadow map space every step + vec3 dV = fragposition-start; + vec3 dVWorld = (wpos-gbufferModelViewInverse[3].xyz); + + float maxLength = min(length(dVWorld),far)/length(dVWorld); + dV *= maxLength; + dVWorld *= maxLength; + + //apply dither + vec3 progress = start.xyz; + vec3 progressW = gbufferModelViewInverse[3].xyz+cameraPosition; + + vec3 vL = vec3(0.); + + float SdotV = dot(sunVec,normalize(fragpos))*lightCol.a; + float dL = length(dVWorld); + + //Mie phase + somewhat simulates multiple scattering (Horizon zero down cloud approx) + float mie = phaseg(SdotV,0.7)*5.0 + 1.0; + float rayL = phaseRayleigh(SdotV); + + // Makes fog more white idk how to simulate it correctly + vec3 sunColor = lightCol.rgb / 5.0; + vec3 skyCol0 = (ambientUp / 5.0 * 5.); // * max(abs(WsunVec.y)/150.0,0.); + + vec3 rC = vec3(fog_coefficientRayleighR*1e-6, fog_coefficientRayleighG*1e-5, fog_coefficientRayleighB*1e-5); + vec3 mC = vec3(fog_coefficientMieR*1e-6, fog_coefficientMieG*1e-6, fog_coefficientMieB*1e-6); + + float mu = 1.0; + float muS = mu; + vec3 absorbance = vec3(1.0); + float expFactor = 11.0; + vec3 WsunVec = mat3(gbufferModelViewInverse) * sunVec * lightCol.a; + + float cloudShadow = 1.0; + + for (int i=0;i [Filtering] shadowMapResolution shadowDistance shadowDistanceRenderMul + + screen.Subsurface_Scattering.columns=1 + screen.Subsurface_Scattering = Variable_Penumbra_Shadows Strong_SSS_strength Medium_SSS_strength LabPBR_subsurface_scattering LabSSS_Curve mob_SSS misc_block_SSS + + screen.Filtering.columns=1 + screen.Filtering = Variable_Penumbra_Shadows VPS_Search_Samples Min_Shadow_Filter_Radius Max_Shadow_Filter_Radius Max_Filter_Depth SHADOW_FILTER_SAMPLE_COUNT + + ### AMBIENT LIGHT + screen.Ambient_light.columns=1 + screen.Ambient_light = [Torch] [Ambient] [ambientlight_colors] indirect_effect HQ_SSGI AO_Strength GI_Strength + + screen.ambientlight_colors.columns=1 + screen.ambientlight_colors = ambient_brightness ambient_colortype ambient_temp AmbientLight_R AmbientLight_G AmbientLight_B + + screen.Torch.columns=1 + screen.Torch = TORCH_AMOUNT Emissive_Brightness Emissive_Curve TORCH_R TORCH_G TORCH_B + + screen.Ambient.columns=1 + screen.Ambient = ambientOcclusionLevel MIN_LIGHT_AMOUNT Ambient_Mult SEPARATE_AO + + +######## WORLD + screen.World.columns=1 + screen.World = [LabPBR] [Waving_Stuff] [Water] + ### SPECULARS + screen.Reflections.columns=2 + screen.Reflections = Specular_Reflections Sun_specular_Strength Screen_Space_Reflections reflection_quality Rough_reflections Roughness_Threshold Sky_reflection + ### WAVING STUFF + screen.Waving_Stuff.columns=1 + screen.Waving_Stuff = WAVY_STRENGTH WAVY_SPEED WAVY_PLANTS + ## POM + screen.POM.columns=1 + screen.POM = POM MAX_ITERATIONS POM_DEPTH MAX_DIST Horrible_slope_normals + + + +######## CLIMATE + screen.Climate.columns=1 + screen.Climate = [Seasons] [Weather] [Biome_Fog] + + ## SEASONS + screen.Seasons.columns=1 + screen.Seasons = Seasons Season_Length Snowy_Winter [Summer_colors] [Fall_colors] [Winter_colors] [Spring_colors] + + screen.Summer_colors.columns=1 + screen.Summer_colors = Summer_R Summer_G Summer_B Summer_Leaf_R Summer_Leaf_G Summer_Leaf_B + + screen.Fall_colors.columns=1 + screen.Fall_colors = Fall_R Fall_G Fall_B Fall_Leaf_R Fall_Leaf_G Fall_Leaf_B + + screen.Winter_colors.columns=1 + screen.Winter_colors = Winter_R Winter_G Winter_B Winter_Leaf_R Winter_Leaf_G Winter_Leaf_B + + screen.Spring_colors.columns=1 + screen.Spring_colors = Spring_R Spring_G Spring_B Spring_Leaf_R Spring_Leaf_G Spring_Leaf_B + + ## DAILY WEATHER + screen.Weather.columns=1 + screen.Weather = Daily_Weather WeatherDay + + ## BIOME SPECIFICS + screen.Biome_Fog.columns=1 + screen.Biome_Fog = Biome_specific_environment Jungle_fog_strength [Jungle_Settings] Swamp_fog_strength [Swamp_Settings] override_fog [Override_Settings] + + screen.Jungle_Settings.columns=1 + screen.Jungle_Settings = Jungle_R Jungle_G Jungle_B Jungle_Cloudy_Fog_Density Jungle_cloudyfog_fade Jungle_Uniform_Fog_Density Jungle_uniformfog_fade Jungle_Bloomy_Fog Jungle_Sun_Strength + + screen.Swamp_Settings.columns=1 + screen.Swamp_Settings = Swamp_R Swamp_G Swamp_B Swamp_cloudyfog_Density Swamp_cloudyfog_height Swamp_UniformFog_Density Swamp_uniformfog_height Swamp_Bloomy_Fog Swamp_Sun_Strength + + screen.Override_Settings.columns=1 + screen.Override_Settings = override_R override_G override_B override_Cloudy_Fog_Density override_cloudyfog_fade override_Uniform_Fog_Density override_uniformfog_fade override_Bloomy_Fog override_Sun_Strength + + +######## ATMOSPHERICS + screen.Atmospherics.columns=1 + screen.Atmospherics = [Sky] [Fog] [Biome_Fog] [Clouds] High_Altitude_Clouds Cumulus_Clouds Allow_Vanilla_sky CLOUDS_SHADOWS VL_CLOUDS_SHADOWS + ### SKY + screen.Sky.columns=1 + screen.Sky = [Sky_coefficients] [Sun_and_Moon_Colors] sunPathRotation + + screen.Sky_coefficients.columns=1 + screen.Sky_coefficients = Sky_Brightness sky_mieg sky_coefficientRayleighR sky_coefficientRayleighG sky_coefficientRayleighB sky_coefficientMieR sky_coefficientMieG sky_coefficientMieB + + ### CLOUDS + screen.Clouds.columns=2 + screen.Clouds = VOLUMETRIC_CLOUDS Dynamic_Sky cloud_LevelOfDetail cloud_ShadowLevelOfDetail CLOUDS_QUALITY cloudDensity cloudCoverage Rain_coverage cloud_speed fbmAmount fbmPower1 fbmPower2 Cloud_top_cutoff Cloud_base_cutoff Shadow_brightness self_shadow_samples + + ### FOG + screen.Fog.columns=1 + screen.Fog = [Biome_Fog] [cave_fog] [Fog_Densities] VL_RENDER_RESOLUTION VL_SAMPLES BLOOMY_FOG VL_Clouds_Shadows fog_selfShadowing + + screen.Fog_Densities.columns=1 + screen.Fog_Densities = Haze_amount UniformFog_amount CloudyFog_amount TimeOfDayFog_multiplier RainFog_amount CaveFog_amount uniformfog_fade cloudyfog_fade + + screen.Fog_Color.columns=1 + screen.Fog_Color = fog_mieg1 fog_mieg2 fog_coefficientRayleighR fog_coefficientRayleighG fog_coefficientRayleighB fog_coefficientMieR fog_coefficientMieG fog_coefficientMieB + ### WATER + screen.Water.columns=1 + screen.Water = Refraction Vanilla_like_water Dirt_Amount Dirt_Mie_Phase rayMarchSampleCount SCREENSPACE_REFLECTIONS SSR_STEPS USE_QUARTER_RES_DEPTH SUN_MICROFACET_SPECULAR Water_Top_Layer lightMapDepthEstimation [Water_fog_color] + + screen.Water_fog_color.columns=1 + screen.Water_fog_color = Dirt_Scatter_R Dirt_Scatter_G Dirt_Scatter_B Dirt_Absorb_R Dirt_Absorb_G Dirt_Absorb_B Water_Absorb_R Water_Absorb_G Water_Absorb_B + +######## POST + screen.Post_Processing.columns=1 + screen.Post_Processing = [TAA_OPTIONS] [Purkinje_effect] [Tonemapping] [Exposure] [DepthOfField] SHARPENING BLOOM_STRENGTH BLOOM_QUALITY + ### TAA + screen.TAA_OPTIONS.columns = 1 + screen.TAA_OPTIONS= SCREENSHOT_MODE SPLIT_RENDER TAA BLEND_FACTOR TAA_UPSCALING RENDER_SCALE_X RENDER_SCALE_Y + ### DOF + screen.DepthOfField.columns = 1 + screen.DepthOfField = DOF HEXAGONAL_BOKEH AUTOFOCUS focal aperture MANUAL_FOCUS DoF_Adaptation_Speed FAR_BLUR_ONLY + ### EXPOSURE + screen.Exposure.columns = 1 + screen.Exposure = AUTO_EXPOSURE EXPOSURE_MULTIPLIER Exposure_Speed Manual_exposure_value + ### TONEMAPS + screen.Tonemapping.columns = 1 + screen.Tonemapping = TONEMAP USE_ACES_COLORSPACE_APPROXIMATION SATURATION CROSSTALK FinalR FinalG FinalB + ### PURKINJE + screen.Purkinje_effect.columns = 1 + screen.Purkinje_effect = Purkinje_strength Purkinje_strength Purkinje_R Purkinje_G Purkinje_B Purkinje_Multiplier + +######## MISC SETTINGS + screen.Misc_Settings.columns=1 + screen.Misc_Settings =end_shadows WhiteWorld ambientLight_only Cloud_Size Cloud_Height BorderFog Texture_MipMap_Bias Glass_Tint display_LUT DISABLE_ALPHA_MIPMAPS + + screen.LabPBR.columns = 1 + screen.LabPBR = [Reflections] [Subsurface_Scattering] [Emissives] [POM] [Porosity] + + screen.Emissives.columns = 1 + screen.Emissives = LabPBR_Emissives Emissive_Brightness Emissive_Curve + + screen.Porosity.columns = 1 + screen.Porosity = Puddles Puddle_Size Porosity + + screen.Sun_and_Moon_Colors.columns = 1 + screen.Sun_and_Moon_Colors = sunColorR sunColorG sunColorB moonColorR moonColorG moonColorB colortype Sun_temp Moon_temp + + screen.Advanced = Dirt_Scatter_R Dirt_Scatter_G Dirt_Scatter_B Dirt_Absorb_R Dirt_Absorb_G Dirt_Absorb_B Water_Absorb_R Water_Absorb_G Water_Absorb_B + screen.cave_fog = Cave_fog CaveFogFallOff CaveFogColor_R CaveFogColor_G CaveFogColor_B + +######## moonphase based weather + +uniform.float.CumulusCoverage = smooth(1, if( \ + moonPhase == 0, 0.3, \ + moonPhase == 1, 0.8, \ + moonPhase == 2, 0.2, \ + moonPhase == 3, 0.0, \ + moonPhase == 4, 0.8, \ + moonPhase == 5, 0.5, \ + moonPhase == 6, -0.5, \ + 0.6 ), 60, 60) + +uniform.float.CirrusCoverage = smooth(2, if( \ + moonPhase == 0, 0.5, \ + moonPhase == 1, 0.65, \ + moonPhase == 2, 0.6, \ + moonPhase == 3, 0.0, \ + moonPhase == 4, 0.5, \ + moonPhase == 5, 0.5, \ + moonPhase == 6, 0.6, \ + 0.5 ), 60, 60) + +uniform.float.CirrusThickness = smooth(3, if( \ + moonPhase == 0, 0.05, \ + moonPhase == 1, 0.2, \ + moonPhase == 2, 0.2, \ + moonPhase == 3, 0.0, \ + moonPhase == 4, 0.0, \ + moonPhase == 5, 0.05, \ + moonPhase == 6, 0.2, \ + 0.1 ), 60, 60) + + + +uniform.float.Day = smooth(4, if( \ + moonPhase == 0, 1, \ + moonPhase == 1, 2, \ + moonPhase == 2, 3, \ + moonPhase == 3, 4, \ + moonPhase == 4, 5, \ + moonPhase == 5, 6, \ + moonPhase == 6, 7, \ + 8 ), 5, 5) + + +# Biome uniforms +uniform.float.isJungles = smooth(6, if(in(biome,23,24,25), 1,0), 25,25) +uniform.float.isSwamps = smooth(7, if(in(biome,6,7), 1,0), 25,25) + + +uniform.float.isLush = smooth(8, if(in(biome,10,50), 1,0), 25,25) +uniform.float.isDeserts = smooth(9, if(in(biome,5), 1,0), 25,25) + +uniform.float.isWastes = smooth(10, if(in(biome,51), 1,0), 5, 5) +uniform.float.isWarpedForest = smooth(11, if(in(biome,52), 1,0), 5, 5) +uniform.float.isCrimsonForest = smooth(12, if(in(biome,53), 1,0), 5, 5) +uniform.float.isSoulValley = smooth(13, if(in(biome,54), 1,0), 5, 5) +uniform.float.isBasaltDelta = smooth(14, if(in(biome,55), 1,0), 5, 5) + +# uniform.float.Winter = smooth(14, if( worldDay > 0 && worldDay < 10), 5, 5) + + +# thank you sixthsurge! +uniform.float.lightningFlash = smooth(if(equals(skyColor.r, skyColor.g, 0.01) && skyColor.r > 0.3, 1.0, 0.0), 0, 0.5) + +texture.noise=texture/noises.png +texture.composite.colortex6=texture/blueNoise.png +separateAo=true +alphaTest.shadow= GREATER 0.1 +beacon.beam.depth=true +rain.depth=false + +variable.float.texelSizeX = 1.0/viewWidth +variable.float.texelSizeY = 1.0/viewHeight +uniform.vec2.texelSize=vec2(texelSizeX,texelSizeY) + +uniform.int.framemod8 = frameCounter%8 + +variable.float.normSunVec = sqrt(sunPosition.x*sunPosition.x+sunPosition.y*sunPosition.y+sunPosition.z*sunPosition.z) +variable.float.normUpVec = sqrt(upPosition.x*upPosition.x+upPosition.y*upPosition.y+upPosition.z*upPosition.z) + +variable.float.sunPosX = sunPosition.x/normSunVec +variable.float.sunPosY = sunPosition.y/normSunVec +variable.float.sunPosZ = sunPosition.z/normSunVec + +uniform.vec3.sunVec=vec3(sunPosX,sunPosY,sunPosZ) + +variable.float.upPosX = upPosition.x/normUpVec +variable.float.upPosY = upPosition.y/normUpVec +variable.float.upPosZ = upPosition.z/normUpVec + +uniform.vec3.upVec=vec3(upPosX,upPosY,upPosZ) +uniform.float.sunElevation = sunPosX*upPosX+sunPosY*upPosY+sunPosZ*upPosZ +uniform.float.lightSign = clamp(sunElevation * 1000000000000000000, 0.0, 1.0) * 2.0 - 1.0 + +#Max angle at frustrum diagonal +variable.float.maxAngle = atan(1.0 / gbufferProjection.1.1 * sqrt(1.0+(aspectRatio * aspectRatio))) +uniform.float.cosFov = cos(maxAngle) +variable.float.viewDirX = gbufferModelViewInverse.2.0 +variable.float.viewDirY = gbufferModelViewInverse.2.1 +variable.float.viewDirZ = gbufferModelViewInverse.2.2 +variable.float.normView = sqrt(viewDirX*viewDirX + viewDirY*viewDirY + viewDirZ*viewDirZ) +variable.float.shViewDirX = (shadowModelView.0.0 * viewDirX + shadowModelView.1.0 * viewDirY + shadowModelView.2.0 * viewDirZ)/normView +variable.float.shViewDirY = (shadowModelView.0.1 * viewDirX + shadowModelView.1.1 * viewDirY + shadowModelView.2.1 * viewDirZ)/normView +variable.float.shViewDirZ = (shadowModelView.0.2 * viewDirX + shadowModelView.1.2 * viewDirY + shadowModelView.2.2 * viewDirZ)/normView + +uniform.vec3.shadowViewDir = vec3(shViewDirX, shViewDirY, shViewDirZ) + +variable.float.shStartX = (shadowModelView.0.0 * gbufferModelViewInverse.3.0 + shadowModelView.1.0 * gbufferModelViewInverse.3.1 + shadowModelView.2.0 * gbufferModelViewInverse.3.2) +variable.float.shStartY = (shadowModelView.0.1 * gbufferModelViewInverse.3.0 + shadowModelView.1.1 * gbufferModelViewInverse.3.1 + shadowModelView.2.1 * gbufferModelViewInverse.3.2) +variable.float.shStartZ = (shadowModelView.0.2 * gbufferModelViewInverse.3.0 + shadowModelView.1.2 * gbufferModelViewInverse.3.1 + shadowModelView.2.2 * gbufferModelViewInverse.3.2) + +uniform.vec3.shadowCamera = vec3(shStartX + shadowModelView.3.0 + shViewDirX*2., shStartY + shadowModelView.3.1 + shViewDirY*2., shStartZ + shadowModelView.3.2 + shViewDirZ*2.0) + + +variable.float.wSunX = (gbufferModelViewInverse.0.0 * sunPosX + gbufferModelViewInverse.1.0 * sunPosY + gbufferModelViewInverse.2.0 * sunPosZ) +variable.float.wSunY = (gbufferModelViewInverse.0.1 * sunPosX + gbufferModelViewInverse.1.1 * sunPosY + gbufferModelViewInverse.2.1 * sunPosZ) +variable.float.wSunZ = (gbufferModelViewInverse.0.2 * sunPosX + gbufferModelViewInverse.1.2 * sunPosY + gbufferModelViewInverse.2.2 * sunPosZ) + +variable.float.shSunX = (shadowModelView.0.0 * wSunX + shadowModelView.1.0 * wSunY + shadowModelView.2.0 * wSunZ) +variable.float.shSunY = (shadowModelView.0.1 * wSunX + shadowModelView.1.1 * wSunY + shadowModelView.2.1 * wSunZ) +variable.float.shSunZ = (shadowModelView.0.2 * wSunX + shadowModelView.1.2 * wSunY + shadowModelView.2.2 * wSunZ) + +uniform.vec3.shadowLightVec = vec3(lightSign*shSunX, lightSign*shSunY, lightSign*shSunZ) + +uniform.float.shadowMaxProj = 150.0/abs(sunPosY) diff --git a/shaders/shadow.fsh b/shaders/shadow.fsh new file mode 100644 index 0000000..1d0c7a2 --- /dev/null +++ b/shaders/shadow.fsh @@ -0,0 +1,30 @@ +#version 120 +#extension GL_ARB_shader_texture_lod : enable +#extension GL_EXT_gpu_shader4 : enable +#define SHADOW_DISABLE_ALPHA_MIPMAPS // Disables mipmaps on the transparency of alpha-tested things like foliage, may cost a few fps in some cases +#define Stochastic_Transparent_Shadows // Highly recommanded to enable SHADOW_DISABLE_ALPHA_MIPMAPS with it. Uses noise to simulate transparent objects' shadows (not colored). It is also recommended to increase Min_Shadow_Filter_Radius with this. +varying vec2 texcoord; +uniform sampler2D tex; +uniform sampler2D noisetex; +uniform int frameCounter; +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +// float blueNoise(){ +// return texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a; +// } +float R2_dither(){ + vec2 alpha = vec2(0.75487765, 0.56984026); + return fract(alpha.x * gl_FragCoord.x + alpha.y * gl_FragCoord.y + 1.0/1.6180339887 ) ; +} +void main() { + gl_FragData[0] = texture2D(tex,texcoord.xy); + #ifdef SHADOW_DISABLE_ALPHA_MIPMAPS + gl_FragData[0].a = texture2DLod(tex,texcoord.xy,0).a; + #endif + #ifdef Stochastic_Transparent_Shadows + gl_FragData[0].a = float(gl_FragData[0].a >= R2_dither()); + #endif +} diff --git a/shaders/shadow.vsh b/shaders/shadow.vsh new file mode 100644 index 0000000..403a3cb --- /dev/null +++ b/shaders/shadow.vsh @@ -0,0 +1,138 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable +/* +!! DO NOT REMOVE !! +This code is from Chocapic13' shaders +Read the terms of modification and sharing before changing something below please ! +!! DO NOT REMOVE !! +*/ +//#define SHADOW_FRUSTRUM_CULLING // BROKEN IN 1.17+. If enabled, removes most of the blocks during shadow rendering that would not cast shadows on the player field of view. Improves performance but can be sometimes incorrect and causes flickering shadows on distant occluders +#define WAVY_PLANTS +#define WAVY_STRENGTH 1.0 //[0.1 0.25 0.5 0.75 1.0 1.25 1.5 1.75 2.0] +#define WAVY_SPEED 1.0 //[0.001 0.01 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 1.0 1.25 1.5 2.0 3.0 4.0] +#include "lib/Shadow_Params.glsl" + +#define SHADOW_MAP_BIAS 0.5 +const float PI = 3.1415927; +varying vec2 texcoord; +uniform mat4 shadowProjectionInverse; +uniform mat4 shadowProjection; +uniform mat4 shadowModelViewInverse; +uniform mat4 shadowModelView; +uniform mat4 gbufferModelView; +uniform mat4 gbufferModelViewInverse; +uniform mat4 gbufferProjection; +uniform vec3 cameraPosition; +uniform float frameTimeCounter; +uniform vec3 sunVec; +uniform float aspectRatio; +uniform float sunElevation; +uniform float lightSign; +uniform float cosFov; +uniform vec3 shadowViewDir; +uniform vec3 shadowCamera; +uniform vec3 shadowLightVec; +uniform float shadowMaxProj; +attribute vec4 mc_Entity; +attribute vec4 mc_midTexCoord; +varying vec4 glcolor; + +const float PI48 = 150.796447372*WAVY_SPEED; +float pi2wt = PI48*frameTimeCounter; + +vec2 calcWave(in vec3 pos) { + + float magnitude = abs(sin(dot(vec4(frameTimeCounter, pos),vec4(1.0,0.005,0.005,0.005)))*0.5+0.72)*0.013; + vec2 ret = (sin(pi2wt*vec2(0.0063,0.0015)*4. - pos.xz + pos.y*0.05)+0.1)*magnitude; + + return ret; +} + +vec3 calcMovePlants(in vec3 pos) { + vec2 move1 = calcWave(pos ); + float move1y = -length(move1); + return vec3(move1.x,move1y,move1.y)*5.*WAVY_STRENGTH/255.0; +} + +vec3 calcWaveLeaves(in vec3 pos, in float fm, in float mm, in float ma, in float f0, in float f1, in float f2, in float f3, in float f4, in float f5) { + + float magnitude = abs(sin(dot(vec4(frameTimeCounter, pos),vec4(1.0,0.005,0.005,0.005)))*0.5+0.72)*0.013; + vec3 ret = (sin(pi2wt*vec3(0.0063,0.0224,0.0015)*1.5 - pos))*magnitude; + + return ret; +} + +vec3 calcMoveLeaves(in vec3 pos, in float f0, in float f1, in float f2, in float f3, in float f4, in float f5, in vec3 amp1, in vec3 amp2) { + vec3 move1 = calcWaveLeaves(pos , 0.0054, 0.0400, 0.0400, 0.0127, 0.0089, 0.0114, 0.0063, 0.0224, 0.0015) * amp1; + return move1*5.*WAVY_STRENGTH/255.; +} +bool intersectCone(float coneHalfAngle, vec3 coneTip , vec3 coneAxis, vec3 rayOrig, vec3 rayDir, float maxZ) +{ + vec3 co = rayOrig - coneTip; + float prod = dot(normalize(co),coneAxis); + if (prod <= -coneHalfAngle) return true; //In view frustrum + + float a = dot(rayDir,coneAxis)*dot(rayDir,coneAxis) - coneHalfAngle*coneHalfAngle; + float b = 2. * (dot(rayDir,coneAxis)*dot(co,coneAxis) - dot(rayDir,co)*coneHalfAngle*coneHalfAngle); + float c = dot(co,coneAxis)*dot(co,coneAxis) - dot(co,co)*coneHalfAngle*coneHalfAngle; + + float det = b*b - 4.*a*c; + if (det < 0.) return false; // No intersection with either forward cone and backward cone + + det = sqrt(det); + float t2 = (-b + det) / (2. * a); + if (t2 <= 0.0 || t2 >= maxZ) return false; //Idk why it works + + return true; +} +#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) +#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) +vec4 toClipSpace3(vec3 viewSpacePosition) { + return vec4(projMAD(gl_ProjectionMatrix, viewSpacePosition),1.0); +} +void main() { + + + vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz; + + + //Check if the vertice is going to cast shadows + // #ifdef SHADOW_FRUSTRUM_CULLING + // if (intersectCone(cosFov, shadowCamera, shadowViewDir, position, -shadowLightVec, shadowMaxProj)) { + // #endif + // #ifdef WAVY_PLANTS + // bool istopv = gl_MultiTexCoord0.t < mc_midTexCoord.t; + // if ((mc_Entity.x == 10001&&istopv) && length(position.xy) < 24.0) { + // vec3 worldpos = mat3(shadowModelViewInverse) * position + shadowModelViewInverse[3].xyz; + // worldpos.xyz += calcMovePlants(worldpos.xyz + cameraPosition)*gl_MultiTexCoord1.y; + // position = mat3(shadowModelView) * worldpos + shadowModelView[3].xyz ; + // } + + // if ((mc_Entity.x == 10003) && length(position.xy) < 24.0) { + // vec3 worldpos = mat3(shadowModelViewInverse) * position + shadowModelViewInverse[3].xyz; + // worldpos.xyz += calcMoveLeaves(worldpos.xyz + cameraPosition, 0.0040, 0.0064, 0.0043, 0.0035, 0.0037, 0.0041, vec3(1.0,0.2,1.0), vec3(0.5,0.1,0.5))*gl_MultiTexCoord1.y; + // position = mat3(shadowModelView) * worldpos + shadowModelView[3].xyz ; + // } + // #endif + + + + // gl_Position = BiasShadowProjection_altered(toClipSpace3(position),mat3(shadowProjection),mat3(shadowModelView), gl_NormalMatrix * gl_Normal); + + gl_Position = BiasShadowProjection(toClipSpace3(position)); + + gl_Position.z /= 6.0; + + + texcoord.xy = gl_MultiTexCoord0.xy; + + + if(mc_Entity.x == 8 || mc_Entity.x == 9) gl_Position.w = -1.0; + + + #ifdef SHADOW_FRUSTRUM_CULLING + } + else + gl_Position.xyzw = vec4(0.0,0.0,1e30,0.0); //Degenerates the triangle + #endif +} diff --git a/shaders/texture/blueNoise.png b/shaders/texture/blueNoise.png new file mode 100644 index 0000000000000000000000000000000000000000..87bd792f8351e40dea9a5f419ed16c3b5b402e2c GIT binary patch literal 705573 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

Z8gs)NA|y^^ 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

U#&Kpn-yN8WoI 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

{QVhz9V`{! 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 {4;_^6&CkD*fQSt+VH_VSUo4s?~7d{ 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%0Ae*&p=WUKR6Wuzlmncmm~GNw}V|oMmew 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

Vy1Rr$? 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

eVq`!9n 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 literal 0 HcmV?d00001 diff --git a/shaders/texture/blueNoise.png.mcmeta b/shaders/texture/blueNoise.png.mcmeta new file mode 100644 index 0000000..33f3199 --- /dev/null +++ b/shaders/texture/blueNoise.png.mcmeta @@ -0,0 +1,7 @@ +{ + "texture": + { + "blur": true, + "clamp": false + } +} \ No newline at end of file diff --git a/shaders/texture/noises.png b/shaders/texture/noises.png new file mode 100644 index 0000000000000000000000000000000000000000..6236ff19990bb213e4ec6f6a51df1fc13138e582 GIT binary patch literal 695035 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 yNUa~SuZo9zB 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Ƴ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℞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

Yi2^SGZ6h!TfpHNG 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

    r`*%wWjg2o<3!FDJr@VHqPU9k#`#ewcI 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≫vUQb#-F!u*zClQN@?MP)=TWr=6%kyA9OtVAX{4{qPh3q*r z<>#h2R}i0pyacev1Ed$maPHL_ zw}R?Wq7DJ_X+R$XdI|D-kTw{Mzku;R&{+_)8Gz3R<)W~71gZ}Jogb*q+e97(v(sU| zIlVan?mNia4`6jMG5eD`2C%tj;fecRqS}pJ`MN`w7sDpS@vxg7cWPC#Zcf&}5xAbJ zivw6e@@;|g2H=|l!Hy8M^u`!;08q0IP+!8tAYAkqey`0rF_cPWpttWUey zbjq%#{6fj!lkgCs2LNm>VN@nQDVA%AK3?GNN^Zi$VyxWW!&kB7N(TSVg)v1~tH|$l z+0&FiOz}O)ZiVc0Dn`3-Il(t6n`A5px;Sr9b4Jl`K5tMCYoHyS@qtsf(l`g*mJ)G) ziiZbnM6zcvR92#z;k3?Q+?pvxwvT7N;n3hBjx*^a%lwG2yF}gz@LWmbnDxKR-ZdbO z5p$S~XQbspK|3|&%QG>F%%OljQS$ewv8Bkpl zP3NSK05DFT1 zg=-WXd&9IMT&uwF4;c;&!@rVtgjjk-+fjyFWOjoLKc{QgbZwD^w}sh?VRlTKeJA(b z)47FQl=+~vqM)x4Dto5<<&+(lwCB_6@8mN*z3*+6`fE5Y%fhe1c|{mUrL&XtMP)V@ zXgdkqPQ-r&Ob|6WT?@!{xC(ZMV+T3!gLAl94x{Diw7Mp(`&WAV3axvIS>FZDUndv* zdUm7UR~pq{n$!s;^VcH0RDdg;dd-mU8S<}G`@Lmd*s{`UeawO#6E89dL{2240qiQE zSy$o|NP808%0PG3b6j;#GIk)^Z^`cO!0td;9SFm!MlR*1JDlA`9PI@LT|@CYqC7>F zU#ZUJNWV$Rqm}tiX50&55fU#rZT(_Br#0*u(6F3ZP)eh6enHRVMm;YTm0unHpu?s( zb&oNxChP(NAGtW$;j7aH@VsWufmem75&Mm`d zp#BbOCSbclx==il}MGmioL4Cp%(sC@v=2J$vT_aR4I(?ML+ zLHExc#>ftH=Z4t1vAnRczGn;n_cCYSznyuE)Bf0qCpD_md$PM`6ZN=GV3Q_otCHm{ z&mxnz2EIq&SHk~6G^ z$XE^_y`hzJ!Ol0b<{xkllIQ%g_GOvY5u=FuLGbwjI}EUwz­iy+Pg%T8eDLy+%) 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%0A4os% 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 %Xwxw4s#^wgS`JdVVU#(cv} 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 P00000NkvXXu0mjfdVlSA literal 0 HcmV?d00001 diff --git a/shaders/texture/noises.png.mcmeta b/shaders/texture/noises.png.mcmeta new file mode 100644 index 0000000..33f3199 --- /dev/null +++ b/shaders/texture/noises.png.mcmeta @@ -0,0 +1,7 @@ +{ + "texture": + { + "blur": true, + "clamp": false + } +} \ No newline at end of file diff --git a/shaders/world-1/block.properties b/shaders/world-1/block.properties new file mode 100644 index 0000000..73045f4 --- /dev/null +++ b/shaders/world-1/block.properties @@ -0,0 +1,20 @@ +#if MC_VERSION >= 11300 +block.10001= minecraft:acacia_sapling minecraft:birch_sapling minecraft:dark_oak_sapling minecraft:jungle_sapling minecraft:oak_sapling minecraft:spruce_sapling minecraft:grass minecraft:dead_bush minecraft:fern minecraft:dandelion minecraft:poppy minecraft:blue_orchid minecraft:allium minecraft:azure_bluet minecraft:orange_tulip minecraft:pink_tulip minecraft:red_tulip minecraft:white_tulip minecraft:oxeye_daisy minecraft:brown_mushroom minecraft:red_mushroom minecraft:wheat minecraft:nether_wart minecraft:carrot minecraft:potato minecraft:beetroot_seeds +block.10003 = minecraft:acacia_leaves minecraft:birch_leaves minecraft:dark_oak_leaves minecraft:jungle_leaves minecraft:oak_leaves minecraft:spruce_leaves minecraft:vine +block.10004 = minecraft:cobweb minecraft:sugar_cane minecraft:pumpkin_seeds minecraft:lily_pad minecraft:lilac minecraft:sunflower minecraft:tall_grass minecraft:rose_bush minecraft:peony minecraft:large_fern +block.10002= minecraft:black_stained_glass minecraft:black_stained_glass_pane minecraft:blue_stained_glass minecraft:blue_stained_glass_pane minecraft:brown_stained_glass minecraft:brown_stained_glass_pane minecraft:cyan_stained_glass minecraft:cyan_stained_glass_pane minecraft:gray_stained_glass minecraft:gray_stained_glass_pane minecraft:green_stained_glass minecraft:green_stained_glass_pane minecraft:light_blue_stained_glass minecraft:light_blue_stained_glass_pane minecraft:light_gray_stained_glass minecraft:light_gray_stained_glass_pane minecraft:lime_stained_glass minecraft:lime_stained_glass_pane minecraft:magenta_stained_glass minecraft:magenta_stained_glass_pane minecraft:orange_stained_glass minecraft:orange_stained_glass_pane minecraft:pink_stained_glass minecraft:pink_stained_glass_pane minecraft:purple_stained_glass minecraft:purple_stained_glass_pane minecraft:red_stained_glass minecraft:red_stained_glass_pane minecraft:white_stained_glass minecraft:white_stained_glass_pane minecraft:yellow_stained_glass minecraft:yellow_stained_glass_pane minecraft:glass_pane minecraft:glass +block.8 = minecraft:water minecraft:flowing_water +block.79 = minecraft:ice +block.10005 = minecraft:glowstone minecraft:torch minecraft:wall_torch minecraft:lava minecraft:fire minecraft:redstone_torch minecraft:redstone_wall_torch minecraft:jack_o_lantern minecraft:magma_block minecraft:redstone_lamp:lit=true minecraft:lantern minecraft:campfire:lit=true minecraft:shroomlight minecraft:nether_portal minecraft:soul_torch minecraft:soul_wall_torch minecraft:soul_fire minecraft:end_rod minecraft:sea_lantern minecraft:soul_lantern minecraft:end_gateway minecraft:soul_campfire:lit=true minecraft:lava minecraft:fire +#else +#wavy plants, translucent, bottom vertices not moving +block.10001= 6 31 32 37 38 39 40 59 115 141 142 207 +#wavy plants (blocks) +block.10003 = 18 106 161 +#translucent +block.10004 = 30 83 104 105 111 175 176 177 +#reflective surfaces (not including water and ice) +block.10002=95 160 +#endif + +layer.translucent=minecraft:glass_pane minecraft:glass diff --git a/shaders/world-1/composite10.fsh b/shaders/world-1/composite10.fsh new file mode 100644 index 0000000..25c81c0 --- /dev/null +++ b/shaders/world-1/composite10.fsh @@ -0,0 +1,45 @@ +#version 120 +//downsample 1st pass (half res) for bloom + +uniform sampler2D colortex3; +uniform vec2 texelSize; +uniform float viewWidth; +uniform float viewHeight; +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + +/* DRAWBUFFERS:6 */ +vec2 resScale = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.))/vec2(1920.,1080.); +vec2 quarterResTC = gl_FragCoord.xy*2.*texelSize; + + //0.5 + gl_FragData[0] = texture2D(colortex3,quarterResTC-1.0*vec2(texelSize.x,texelSize.y))/4.*0.5; + gl_FragData[0] += texture2D(colortex3,quarterResTC+1.0*vec2(texelSize.x,texelSize.y))/4.*0.5; + gl_FragData[0] += texture2D(colortex3,quarterResTC+vec2(-1.0*texelSize.x,1.0*texelSize.y))/4.*0.5; + gl_FragData[0] += texture2D(colortex3,quarterResTC+vec2(1.0*texelSize.x,-1.0*texelSize.y))/4.*0.5; + + //0.25 + gl_FragData[0] += texture2D(colortex3,quarterResTC-2.0*vec2(texelSize.x,0.0))/2.*0.125; + gl_FragData[0] += texture2D(colortex3,quarterResTC+2.0*vec2(0.0,texelSize.y))/2.*0.125; + gl_FragData[0] += texture2D(colortex3,quarterResTC+2.0*vec2(0,-texelSize.y))/2*0.125; + gl_FragData[0] += texture2D(colortex3,quarterResTC+2.0*vec2(-texelSize.x,0.0))/2*0.125; + + //0.125 + gl_FragData[0] += texture2D(colortex3,quarterResTC-2.0*vec2(texelSize.x,texelSize.y))/4.*0.125; + gl_FragData[0] += texture2D(colortex3,quarterResTC+2.0*vec2(texelSize.x,texelSize.y))/4.*0.125; + gl_FragData[0] += texture2D(colortex3,quarterResTC+vec2(-2.0*texelSize.x,2.0*texelSize.y))/4.*0.125; + gl_FragData[0] += texture2D(colortex3,quarterResTC+vec2(2.0*texelSize.x,-2.0*texelSize.y))/4.*0.125; + + //0.125 + gl_FragData[0] += texture2D(colortex3,quarterResTC)*0.125; + + gl_FragData[0].rgb = clamp(gl_FragData[0].rgb,0.0,65000.); + + + +} diff --git a/shaders/world-1/composite10.vsh b/shaders/world-1/composite10.vsh new file mode 100644 index 0000000..8d47d5c --- /dev/null +++ b/shaders/world-1/composite10.vsh @@ -0,0 +1,17 @@ +#version 120 + +uniform float viewWidth; +uniform float viewHeight; +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + //Improves performances and makes sure bloom radius stays the same at high resolution (>1080p) + vec2 clampedRes = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.)); + gl_Position = ftransform(); + //*0.51 to avoid errors when sampling outside since clearing is disabled + gl_Position.xy = (gl_Position.xy*0.5+0.5)*0.26/clampedRes*vec2(1920.0,1080.)*2-1.0; +} diff --git a/shaders/world-1/composite11.fsh b/shaders/world-1/composite11.fsh new file mode 100644 index 0000000..1320222 --- /dev/null +++ b/shaders/world-1/composite11.fsh @@ -0,0 +1,61 @@ +#version 120 +//6 Horizontal gaussian blurs and horizontal downsampling + + +uniform sampler2D colortex6; +uniform vec2 texelSize; +varying vec2 texcoord; +uniform float viewWidth; +uniform float viewHeight; +vec2 resScale = vec2(1920.,1080.)/max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.)); +vec3 gauss1D(vec2 coord,vec2 dir,float alpha,int maxIT){ + vec4 tot = vec4(0.); + float maxTC = 0.25*resScale.x; + float minTC = 0.; + for (int i = -maxIT;i minTC && spCoord.x < maxTC); + } + return tot.rgb/max(1.0,tot.a); +} + +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { +/* DRAWBUFFERS:6 */ + +vec2 texcoord = (gl_FragCoord.xy*vec2(2.0,4.0))*texelSize; +vec2 gaussDir = vec2(1.0,0.0); +gl_FragData[0].rgb = vec3(0.0); +vec2 tc2 = texcoord*vec2(2.0,1.)/2.; +if (tc2.x < 1.0*resScale.x && tc2.y <1.0*resScale.y) +gl_FragData[0].xyz = gauss1D(tc2/2,gaussDir,0.16,0); + +vec2 tc4 = texcoord*vec2(4.0,1.)/2.-vec2(0.5*resScale.x+4.0*texelSize.x,0.)*2.0; +if (tc4.x > 0.0 && tc4.y > 0.0 && tc4.x < 1.0*resScale.x && tc4.y <1.0*resScale.y) +gl_FragData[0].xyz = gauss1D(tc4/2,gaussDir,0.16,3); + +vec2 tc8 = texcoord*vec2(8.0,1.)/2.-vec2(0.75*resScale.x+8.*texelSize.x,0.)*4.0; +if (tc8.x > 0.0 && tc8.y > 0.0 && tc8.x < 1.0*resScale.x && tc8.y <1.0*resScale.y) +gl_FragData[0].xyz = gauss1D(tc8/2,gaussDir,0.035,6); + +vec2 tc16 = texcoord*vec2(8.0,1./2.)-vec2(0.875*resScale.x+12.*texelSize.x,0.)*8.0; +if (tc16.x > 0.0 && tc16.y > 0.0 && tc16.x < 1.0*resScale.x && tc16.y <1.0*resScale.y) +gl_FragData[0].xyz = gauss1D(tc16/2,gaussDir,0.0085,12); + +vec2 tc32 = texcoord*vec2(16.0,1./2.)-vec2(0.9375*resScale.x+16.*texelSize.x,0.)*16.0; +if (tc32.x > 0.0 && tc32.y > 0.0 && tc32.x < 1.0*resScale.x && tc32.y <1.0*resScale.y) +gl_FragData[0].xyz = gauss1D(tc32/2,gaussDir,0.002,28); + +vec2 tc64 = texcoord*vec2(32.0,1./2.)-vec2(0.96875*resScale.x+20.*texelSize.x,0.)*32.0; +if (tc64.x > 0.0 && tc64.y > 0.0 && tc64.x < 1.0*resScale.x && tc64.y <1.0*resScale.y) +gl_FragData[0].xyz = gauss1D(tc64/2,gaussDir,0.0005,60); + +gl_FragData[0].rgb = clamp(gl_FragData[0].rgb,0.0,65000.); +} diff --git a/shaders/world-1/composite11.vsh b/shaders/world-1/composite11.vsh new file mode 100644 index 0000000..b299614 --- /dev/null +++ b/shaders/world-1/composite11.vsh @@ -0,0 +1,20 @@ +#version 120 + +uniform float viewWidth; +uniform float viewHeight; +varying vec2 texcoord; +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + vec2 clampedRes = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.0)); + gl_Position = ftransform(); + //0-0.25 + gl_Position.y = (gl_Position.y*0.5+0.5)*0.25/clampedRes.y*1080.0*2.0-1.0; + //0-0.5 + gl_Position.x = (gl_Position.x*0.5+0.5)*0.5/clampedRes.x*1920.0*2.0-1.0; + texcoord = gl_MultiTexCoord0.xy/clampedRes*vec2(1920.,1080.); +} diff --git a/shaders/world-1/composite12.fsh b/shaders/world-1/composite12.fsh new file mode 100644 index 0000000..dd63b74 --- /dev/null +++ b/shaders/world-1/composite12.fsh @@ -0,0 +1,61 @@ +#version 120 +//6 Vertical gaussian blurs and vertical downsampling + + + +uniform sampler2D colortex6; +uniform vec2 texelSize; +varying vec2 texcoord; +uniform float viewWidth; +uniform float viewHeight; +vec2 resScale = vec2(1920.,1080.)/max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.)); +vec3 gauss1D(vec2 coord,vec2 dir,float alpha,int maxIT){ + vec4 tot = vec4(0.); + float maxTC = 0.25*resScale.y; + float minTC = 0.; + for (int i = -maxIT;i minTC && spCoord.y < maxTC); + } + return tot.rgb/max(1.0,tot.a); +} + +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { +/* DRAWBUFFERS:6 */ +vec2 texcoord = (gl_FragCoord.xy*vec2(2.0,4.0))*texelSize; + +vec2 gaussDir = vec2(0.0,1.0); +gl_FragData[0].rgb = vec3(0.0); +vec2 tc2 = texcoord*vec2(2.0,1.); +if (tc2.x < 1.0*resScale.x && tc2.y <1.0*resScale.y) +gl_FragData[0].xyz = gauss1D(texcoord/vec2(2.0,4.0),gaussDir,0.16,0); + +vec2 tc4 = texcoord*vec2(4.0,2.)-vec2(0.5*resScale.x+4.0*texelSize.x,0.)*4.0; +if (tc4.x > 0.0 && tc4.y > 0.0 && tc4.x < 1.0*resScale.x && tc4.y <1.0*resScale.y) +gl_FragData[0].xyz = gauss1D(texcoord/vec2(2.0,2.0),gaussDir,0.16,3); + +vec2 tc8 = texcoord*vec2(8.0,4.)-vec2(0.75*resScale.x+8.*texelSize.x,0.)*8.0; +if (tc8.x > 0.0 && tc8.y > 0.0 && tc8.x < 1.0*resScale.x && tc8.y <1.0*resScale.y) +gl_FragData[0].xyz = gauss1D(texcoord*vec2(1.0,2.0)/vec2(2.0,2.0),gaussDir,0.035,6); + +vec2 tc16 = texcoord*vec2(16.0,8.)-vec2(0.875*resScale.x+12.*texelSize.x,0.)*16.0; +if (tc16.x > 0.0 && tc16.y > 0.0 && tc16.x < 1.0*resScale.x && tc16.y <1.0*resScale.y) +gl_FragData[0].xyz = gauss1D(texcoord*vec2(1.0,4.0)/vec2(2.0,2.0),gaussDir,0.0085,12); + +vec2 tc32 = texcoord*vec2(32.0,16.)-vec2(0.9375*resScale.x+16.*texelSize.x,0.)*32.0; +if (tc32.x > 0.0 && tc32.y > 0.0 && tc32.x < 1.0*resScale.x && tc32.y <1.0*resScale.y) +gl_FragData[0].xyz = gauss1D(texcoord*vec2(1.0,8.0)/vec2(2.0,2.0),gaussDir,0.002,30); + +vec2 tc64 = texcoord*vec2(64.0,32.)-vec2(0.96875*resScale.x+20.*texelSize.x,0.)*64.0; +if (tc64.x > 0.0 && tc64.y > 0.0 && tc64.x < 1.0*resScale.x && tc64.y <1.0*resScale.y) +gl_FragData[0].xyz = gauss1D(texcoord*vec2(1.0,16.0)/vec2(2.0,2.0),gaussDir,0.0005,60); + +gl_FragData[0].rgb = clamp(gl_FragData[0].rgb,0.0,65000.); +} diff --git a/shaders/world-1/composite12.vsh b/shaders/world-1/composite12.vsh new file mode 100644 index 0000000..56683b4 --- /dev/null +++ b/shaders/world-1/composite12.vsh @@ -0,0 +1,21 @@ +#version 120 + +uniform float viewWidth; +uniform float viewHeight; +varying vec2 texcoord; +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + vec2 clampedRes = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.0)); + gl_Position = ftransform(); + //0-0.25 + gl_Position.y = (gl_Position.y*0.5+0.5)*0.25/clampedRes.y*1080.0*2.0-1.0; + //0-0.5 + gl_Position.x = (gl_Position.x*0.5+0.5)*0.5/clampedRes.x*1920.0*2.0-1.0; + texcoord = gl_MultiTexCoord0.xy/clampedRes*vec2(1920.,1080.); + +} diff --git a/shaders/world-1/composite14.fsh b/shaders/world-1/composite14.fsh new file mode 100644 index 0000000..6bfa802 --- /dev/null +++ b/shaders/world-1/composite14.fsh @@ -0,0 +1,103 @@ +#version 120 +//Merge and upsample the blurs into a 1/4 res bloom buffer + +uniform sampler2D colortex3; +uniform sampler2D colortex6; + +uniform vec2 texelSize; +uniform float viewWidth; +uniform float viewHeight; + +float w0(float a) +{ + return (1.0/6.0)*(a*(a*(-a + 3.0) - 3.0) + 1.0); +} + +float w1(float a) +{ + return (1.0/6.0)*(a*a*(3.0*a - 6.0) + 4.0); +} + +float w2(float a) +{ + return (1.0/6.0)*(a*(a*(-3.0*a + 3.0) + 3.0) + 1.0); +} + +float w3(float a) +{ + return (1.0/6.0)*(a*a*a); +} + +float g0(float a) +{ + return w0(a) + w1(a); +} + +float g1(float a) +{ + return w2(a) + w3(a); +} + +float h0(float a) +{ + return -1.0 + w1(a) / (w0(a) + w1(a)); +} + +float h1(float a) +{ + return 1.0 + w3(a) / (w2(a) + w3(a)); +} + +vec4 texture2D_bicubic(sampler2D tex, vec2 uv) +{ + vec4 texelSize = vec4(texelSize,1.0/texelSize); + uv = uv*texelSize.zw; + vec2 iuv = floor( uv ); + vec2 fuv = fract( uv ); + + float g0x = g0(fuv.x); + float g1x = g1(fuv.x); + float h0x = h0(fuv.x); + float h1x = h1(fuv.x); + float h0y = h0(fuv.y); + float h1y = h1(fuv.y); + + vec2 p0 = (vec2(iuv.x + h0x, iuv.y + h0y) - 0.5) * texelSize.xy; + vec2 p1 = (vec2(iuv.x + h1x, iuv.y + h0y) - 0.5) * texelSize.xy; + vec2 p2 = (vec2(iuv.x + h0x, iuv.y + h1y) - 0.5) * texelSize.xy; + vec2 p3 = (vec2(iuv.x + h1x, iuv.y + h1y) - 0.5) * texelSize.xy; + + return g0(fuv.y) * (g0x * texture2D(tex, p0) + + g1x * texture2D(tex, p1)) + + g1(fuv.y) * (g0x * texture2D(tex, p2) + + g1x * texture2D(tex, p3)); +} + +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { +/* DRAWBUFFERS:3 */ +vec2 resScale = vec2(1920.,1080.)/max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.)); +vec2 texcoord = ((gl_FragCoord.xy)*2.+0.5)*texelSize; +vec3 bloom = texture2D_bicubic(colortex3,texcoord/2.0).rgb; //1/4 res + +bloom += texture2D_bicubic(colortex6,texcoord/4.).rgb; //1/8 res + +bloom += texture2D_bicubic(colortex6,texcoord/8.+vec2(0.25*resScale.x+2.5*texelSize.x,.0)).rgb; //1/16 res + +bloom += texture2D_bicubic(colortex6,texcoord/16.+vec2(0.375*resScale.x+4.5*texelSize.x,.0)).rgb; //1/32 res + +bloom += texture2D_bicubic(colortex6,texcoord/32.+vec2(0.4375*resScale.x+6.5*texelSize.x,.0)).rgb*1.0; //1/64 res +bloom += texture2D_bicubic(colortex6,texcoord/64.+vec2(0.46875*resScale.x+8.5*texelSize.x,.0)).rgb*1.0; //1/128 res +bloom += texture2D_bicubic(colortex6,texcoord/128.+vec2(0.484375*resScale.x+10.5*texelSize.x,.0)).rgb*1.0; //1/256 res + +//bloom = texture2D_bicubic(colortex6,texcoord).rgb*6.; //1/8 res + +gl_FragData[0].rgb = bloom*2.; + +gl_FragData[0].rgb = clamp(gl_FragData[0].rgb,0.0,65000.); +} diff --git a/shaders/world-1/composite14.vsh b/shaders/world-1/composite14.vsh new file mode 100644 index 0000000..386f006 --- /dev/null +++ b/shaders/world-1/composite14.vsh @@ -0,0 +1,17 @@ +#version 120 + +uniform float viewWidth; +uniform float viewHeight; +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + //Improves performances and makes sure bloom radius stays the same at high resolution (>1080p) + vec2 clampedRes = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.)); + gl_Position = ftransform(); + //*0.51 to avoid errors when sampling outside since clearing is disabled + gl_Position.xy = (gl_Position.xy*0.5+0.5)*0.51/clampedRes*vec2(1920.0,1080.)*2.0-1.0; +} diff --git a/shaders/world-1/composite15.fsh b/shaders/world-1/composite15.fsh new file mode 100644 index 0000000..74136a6 --- /dev/null +++ b/shaders/world-1/composite15.fsh @@ -0,0 +1,512 @@ +#version 120 +//Vignetting, applies bloom, applies exposure and tonemaps the final image +#extension GL_EXT_gpu_shader4 : enable +#define Fake_purkinje +#define BLOOMY_FOG 2.0 //[0.0 0.25 0.5 0.75 1.0 1.25 1.5 1.75 2.0 3.0 4.0 6.0 10.0 15.0 20.0] +#define BLOOM_STRENGTH 4.0 //[0.0 0.25 0.5 0.75 1.0 1.25 1.5 1.75 2.0 3.0 4.0] +#define TONEMAP ToneMap_Hejl2015 // Tonemapping operator [Tonemap_Uchimura HableTonemap reinhard Tonemap_Lottes ACESFilm ToneMap_Hejl2015] +//#define USE_ACES_COLORSPACE_APPROXIMATION // Do the tonemap in another colorspace + +#define Purkinje_strength 1.0 // Simulates how the eye is unable to see colors at low light intensities. 0 = No purkinje effect at low exposures [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +#define Purkinje_R 0.4 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +#define Purkinje_G 0.7 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +#define Purkinje_B 1.0 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +#define Purkinje_Multiplier 5.0 // How much the purkinje effect increases brightness [0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.05 1.1 1.15 1.2 1.25 1.3 1.35 1.4 1.45 1.5 1.55 1.6 1.65 1.7 1.75 1.8 1.85 1.9 1.95 2.0 2.05 2.1 2.15 2.2 2.25 2.3 2.35 2.4 2.45 2.5 2.55 2.6 2.65 2.7 2.75 2.8 2.85 2.9 2.95 3.0 3.05 3.1 3.15 3.2 3.25 3.3 3.35 3.4 3.45 3.5 3.55 3.6 3.65 3.7 3.75 3.8 3.85 3.9 3.95 4.0 4.05 4.1 4.15 4.2 4.25 4.3 4.35 4.4 4.45 4.5 4.55 4.6 4.65 4.7 4.75 4.8 4.85 4.9 4.95 5.0 5.05 5.1 5.15 5.2 5.25 5.3 5.35 5.4 5.45 5.5 5.55 5.6 5.65 5.7 5.75 5.8 5.85 5.9 5.95 6.0 6.05 6.1 6.15 6.2 6.25 6.3 6.35 6.4 6.45 6.5 6.55 6.6 6.65 6.7 6.75 6.8 6.85 6.9 6.95 7.0 7.05 7.1 7.15 7.2 7.25 7.3 7.35 7.4 7.45 7.5 7.55 7.6 7.65 7.7 7.75 7.8 7.85 7.9 7.95 8.0 8.05 8.1 8.15 8.2 8.25 8.3 8.35 8.4 8.45 8.5 8.55 8.6 8.65 8.7 8.75 8.8 8.85 8.9 8.95 9.0 9.05 9.1 9.15 9.2 9.25 9.3 9.35 9.4 9.45 9.5 9.55 9.6 9.65 9.7 9.75 9.8 9.85 9.9 9.95 ] + + +//#define DOF //enable depth of field (blur on non-focused objects) +//#define HQ_DOF //Slow! Forces circular bokeh! Uses 4 times more samples with noise in order to remove sampling artifacts at great blur sizes. +//#define HEXAGONAL_BOKEH //disabled : circular blur shape - enabled : hexagonal blur shape +#define AUTOFOCUS +//#define FAR_BLUR_ONLY // Removes DoF on objects closer to the camera than the focus point +//lens properties +#define focal 2.4 // Centimeters [0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.05 1.1 1.15 1.2 1.25 1.3 1.35 1.4 1.45 1.5 1.55 1.6 1.65 1.7 1.75 1.8 1.85 1.9 1.95 2.0 2.05 2.1 2.15 2.2 2.25 2.3 2.35 2.4 2.45 2.5 2.55 2.6 2.65 2.7 2.75 2.8 2.85 2.9 2.95 3.0 3.05 3.1 3.15 3.2 3.25 3.3 3.35 3.4 3.45 3.5 3.55 3.6 3.65 3.7 3.75 3.8 3.85 3.9 3.95 4.0 4.05 4.1 4.15 4.2 4.25 4.3 4.35 4.4 4.45 4.5 4.55 4.6 4.65 4.7 4.75 4.8 4.85 4.9 4.95 5.0 5.05 5.1 5.15 5.2 5.25 5.3 5.35 5.4 5.45 5.5 5.55 5.6 5.65 5.7 5.75 5.8 5.85 5.9 5.95 6.0 6.05 6.1 6.15 6.2 6.25 6.3 6.35 6.4 6.45 6.5 6.55 6.6 6.65 6.7 6.75 6.8 6.85 6.9 6.95 7.0 7.05 7.1 7.15 7.2 7.25 7.3 7.35 7.4 7.45 7.5 7.55 7.6 7.65 7.7 7.75 7.8 7.85 7.9 7.95 8.0 8.05 8.1 8.15 8.2 8.25 8.3 8.35 8.4 8.45 8.5 8.55 8.6 8.65 8.7 8.75 8.8 8.85 8.9 8.95 9.0 9.05 9.1 9.15 9.2 9.25 9.3 9.35 9.4 9.45 9.5 9.55 9.6 9.65 9.7 9.75 9.8 9.85 9.9 9.95 ] +#define aperture 0.8 // Centimeters [0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.05 1.1 1.15 1.2 1.25 1.3 1.35 1.4 1.45 1.5 1.55 1.6 1.65 1.7 1.75 1.8 1.85 1.9 1.95 2.0 2.05 2.1 2.15 2.2 2.25 2.3 2.35 2.4 2.45 2.5 2.55 2.6 2.65 2.7 2.75 2.8 2.85 2.9 2.95 3.0 3.05 3.1 3.15 3.2 3.25 3.3 3.35 3.4 3.45 3.5 3.55 3.6 3.65 3.7 3.75 3.8 3.85 3.9 3.95 4.0 4.05 4.1 4.15 4.2 4.25 4.3 4.35 4.4 4.45 4.5 4.55 4.6 4.65 4.7 4.75 4.8 4.85 4.9 4.95 5.0 5.05 5.1 5.15 5.2 5.25 5.3 5.35 5.4 5.45 5.5 5.55 5.6 5.65 5.7 5.75 5.8 5.85 5.9 5.95 6.0 6.05 6.1 6.15 6.2 6.25 6.3 6.35 6.4 6.45 6.5 6.55 6.6 6.65 6.7 6.75 6.8 6.85 6.9 6.95 7.0 7.05 7.1 7.15 7.2 7.25 7.3 7.35 7.4 7.45 7.5 7.55 7.6 7.65 7.7 7.75 7.8 7.85 7.9 7.95 8.0 8.05 8.1 8.15 8.2 8.25 8.3 8.35 8.4 8.45 8.5 8.55 8.6 8.65 8.7 8.75 8.8 8.85 8.9 8.95 9.0 9.05 9.1 9.15 9.2 9.25 9.3 9.35 9.4 9.45 9.5 9.55 9.6 9.65 9.7 9.75 9.8 9.85 9.9 9.95 ] +#define MANUAL_FOCUS 48.0 // If autofocus is turned off, sets the focus point (meters) [0.06948345122280154 0.07243975703425146 0.07552184450877376 0.07873506526686186 0.0820849986238988 0.08557746127787037 0.08921851740926011 0.09301448921066349 0.09697196786440505 0.10109782498721881 0.10539922456186433 0.10988363537639657 0.11455884399268773 0.11943296826671962 0.12451447144412296 0.129812176855438 0.1353352832366127 0.1410933807013415 0.1470964673929768 0.15335496684492847 0.1598797460796939 0.16668213447794653 0.17377394345044514 0.18116748694692214 0.18887560283756183 0.19691167520419406 0.20528965757990927 0.21402409717744744 0.22313016014842982 0.2326236579172927 0.2425210746356487 0.25283959580474646 0.26359713811572677 0.27481238055948964 0.2865047968601901 0.29869468928867837 0.3114032239145977 0.32465246735834974 0.3384654251067422 0.3528660814588489 0.36787944117144233 0.3835315728763107 0.39984965434484737 0.4168620196785084 0.4345982085070782 0.453089017280169 0.4723665527410147 0.49246428767540973 0.513417119032592 0.5352614285189903 0.5580351457700471 0.5817778142098083 0.6065306597126334 0.6323366621862497 0.6592406302004438 0.6872892787909722 0.7165313105737893 0.7470175003104326 0.7788007830714049 0.8119363461506349 0.8464817248906141 0.8824969025845955 0.9200444146293233 0.9591894571091382 1.0 1.0425469051899914 1.086904049521229 1.1331484530668263 1.1813604128656459 1.2316236423470497 1.2840254166877414 1.338656724353094 1.3956124250860895 1.4549914146182013 1.5168967963882134 1.5814360605671443 1.6487212707001282 1.7188692582893286 1.7920018256557555 1.8682459574322223 1.9477340410546757 2.030604096634748 2.117000016612675 2.2070718156067044 2.300975890892825 2.398875293967098 2.5009400136621287 2.6073472713092674 2.718281828459045 2.833936307694169 2.9545115270921065 3.080216848918031 3.211270543153561 3.347900166492527 3.4903429574618414 3.638846248353525 3.7936678946831774 3.955076722920577 4.123352997269821 4.298788906309526 4.4816890703380645 4.672371070304759 4.871165999245474 5.0784190371800815 5.29449005047003 5.51975421667673 5.754602676005731 5.999443210467818 6.254700951936329 6.5208191203301125 6.798259793203881 7.087504708082256 7.38905609893065 7.703437568215379 8.031194996067258 8.372897488127265 8.72913836372013 9.10053618607165 9.487735836358526 9.891409633455755 10.312258501325767 10.751013186076355 11.208435524800691 11.685319768402522 12.182493960703473 12.700821376227164 13.241202019156521 13.804574186067095 14.391916095149892 15.00424758475255 15.642631884188171 16.30817745988666 17.00203994009402 17.725424121461643 18.479586061009854 19.265835257097933 20.085536923187668 20.940114358348602 21.831051418620845 22.75989509352673 23.728258192205157 24.737822143832553 25.790339917193062 26.88763906446752 28.03162489452614 29.22428378123494 30.46768661252054 31.763992386181833 33.11545195869231 34.52441195350251 35.99331883562839 37.524723159600995 39.12128399815321 40.78577355933337 42.52108200006278 44.3302224444953 46.21633621589248 48.182698291098816 50.23272298708815 52.36996988945491 54.598150033144236 56.92113234615337 59.34295036739207 61.867809250367884 64.50009306485578 67.24437240923179 70.10541234668786 73.08818067910767 76.19785657297057 79.43983955226133 82.81975887399955 86.3434833026695 90.01713130052181 93.84708165144015 97.83998453682129 102.00277308269969 106.34267539816554 110.86722712598126 115.58428452718766 120.50203812241894 125.62902691361414 130.9741532108186 136.54669808981876 142.35633750745257 148.4131591025766 154.72767971186107 161.3108636308289 168.17414165184545 175.32943091211476 182.78915558614753 190.56626845863 198.67427341514983 ] + +#ifdef DOF + //hexagon pattern + const vec2 hex_offsets[60] = vec2[60] ( vec2( 0.2165, 0.1250 ), + vec2( 0.0000, 0.2500 ), + vec2( -0.2165, 0.1250 ), + vec2( -0.2165, -0.1250 ), + vec2( -0.0000, -0.2500 ), + vec2( 0.2165, -0.1250 ), + vec2( 0.4330, 0.2500 ), + vec2( 0.0000, 0.5000 ), + vec2( -0.4330, 0.2500 ), + vec2( -0.4330, -0.2500 ), + vec2( -0.0000, -0.5000 ), + vec2( 0.4330, -0.2500 ), + vec2( 0.6495, 0.3750 ), + vec2( 0.0000, 0.7500 ), + vec2( -0.6495, 0.3750 ), + vec2( -0.6495, -0.3750 ), + vec2( -0.0000, -0.7500 ), + vec2( 0.6495, -0.3750 ), + vec2( 0.8660, 0.5000 ), + vec2( 0.0000, 1.0000 ), + vec2( -0.8660, 0.5000 ), + vec2( -0.8660, -0.5000 ), + vec2( -0.0000, -1.0000 ), + vec2( 0.8660, -0.5000 ), + vec2( 0.2163, 0.3754 ), + vec2( -0.2170, 0.3750 ), + vec2( -0.4333, -0.0004 ), + vec2( -0.2163, -0.3754 ), + vec2( 0.2170, -0.3750 ), + vec2( 0.4333, 0.0004 ), + vec2( 0.4328, 0.5004 ), + vec2( -0.2170, 0.6250 ), + vec2( -0.6498, 0.1246 ), + vec2( -0.4328, -0.5004 ), + vec2( 0.2170, -0.6250 ), + vec2( 0.6498, -0.1246 ), + vec2( 0.6493, 0.6254 ), + vec2( -0.2170, 0.8750 ), + vec2( -0.8663, 0.2496 ), + vec2( -0.6493, -0.6254 ), + vec2( 0.2170, -0.8750 ), + vec2( 0.8663, -0.2496 ), + vec2( 0.2160, 0.6259 ), + vec2( -0.4340, 0.5000 ), + vec2( -0.6500, -0.1259 ), + vec2( -0.2160, -0.6259 ), + vec2( 0.4340, -0.5000 ), + vec2( 0.6500, 0.1259 ), + vec2( 0.4325, 0.7509 ), + vec2( -0.4340, 0.7500 ), + vec2( -0.8665, -0.0009 ), + vec2( -0.4325, -0.7509 ), + vec2( 0.4340, -0.7500 ), + vec2( 0.8665, 0.0009 ), + vec2( 0.2158, 0.8763 ), + vec2( -0.6510, 0.6250 ), + vec2( -0.8668, -0.2513 ), + vec2( -0.2158, -0.8763 ), + vec2( 0.6510, -0.6250 ), + vec2( 0.8668, 0.2513 )); + + const vec2 offsets[60] = vec2[60] ( vec2( 0.0000, 0.2500 ), + vec2( -0.2165, 0.1250 ), + vec2( -0.2165, -0.1250 ), + vec2( -0.0000, -0.2500 ), + vec2( 0.2165, -0.1250 ), + vec2( 0.2165, 0.1250 ), + vec2( 0.0000, 0.5000 ), + vec2( -0.2500, 0.4330 ), + vec2( -0.4330, 0.2500 ), + vec2( -0.5000, 0.0000 ), + vec2( -0.4330, -0.2500 ), + vec2( -0.2500, -0.4330 ), + vec2( -0.0000, -0.5000 ), + vec2( 0.2500, -0.4330 ), + vec2( 0.4330, -0.2500 ), + vec2( 0.5000, -0.0000 ), + vec2( 0.4330, 0.2500 ), + vec2( 0.2500, 0.4330 ), + vec2( 0.0000, 0.7500 ), + vec2( -0.2565, 0.7048 ), + vec2( -0.4821, 0.5745 ), + vec2( -0.6495, 0.3750 ), + vec2( -0.7386, 0.1302 ), + vec2( -0.7386, -0.1302 ), + vec2( -0.6495, -0.3750 ), + vec2( -0.4821, -0.5745 ), + vec2( -0.2565, -0.7048 ), + vec2( -0.0000, -0.7500 ), + vec2( 0.2565, -0.7048 ), + vec2( 0.4821, -0.5745 ), + vec2( 0.6495, -0.3750 ), + vec2( 0.7386, -0.1302 ), + vec2( 0.7386, 0.1302 ), + vec2( 0.6495, 0.3750 ), + vec2( 0.4821, 0.5745 ), + vec2( 0.2565, 0.7048 ), + vec2( 0.0000, 1.0000 ), + vec2( -0.2588, 0.9659 ), + vec2( -0.5000, 0.8660 ), + vec2( -0.7071, 0.7071 ), + vec2( -0.8660, 0.5000 ), + vec2( -0.9659, 0.2588 ), + vec2( -1.0000, 0.0000 ), + vec2( -0.9659, -0.2588 ), + vec2( -0.8660, -0.5000 ), + vec2( -0.7071, -0.7071 ), + vec2( -0.5000, -0.8660 ), + vec2( -0.2588, -0.9659 ), + vec2( -0.0000, -1.0000 ), + vec2( 0.2588, -0.9659 ), + vec2( 0.5000, -0.8660 ), + vec2( 0.7071, -0.7071 ), + vec2( 0.8660, -0.5000 ), + vec2( 0.9659, -0.2588 ), + vec2( 1.0000, -0.0000 ), + vec2( 0.9659, 0.2588 ), + vec2( 0.8660, 0.5000 ), + vec2( 0.7071, 0.7071 ), + vec2( 0.5000, 0.8660 ), + vec2( 0.2588, 0.9659 )); + +const vec2 shadow_offsets[209] = vec2[209](vec2(0.8886414f , 0.07936136f), +vec2(0.8190064f , 0.1900164f), +vec2(0.8614115f , -0.06991258f), +vec2(0.7685533f , 0.03792081f), +vec2(0.9970094f , 0.02585129f), +vec2(0.9686818f , 0.1570935f), +vec2(0.9854341f , -0.09172997f), +vec2(0.9330608f , 0.3326486f), +vec2(0.8329557f , -0.2438523f), +vec2(0.664771f , -0.0837701f), +vec2(0.7429124f , -0.1530652f), +vec2(0.9506453f , -0.2174281f), +vec2(0.8192949f , 0.3485171f), +vec2(0.6851269f , 0.2711877f), +vec2(0.7665657f , 0.5014166f), +vec2(0.673241f , 0.3793408f), +vec2(0.6981376f , 0.1465924f), +vec2(0.6521665f , -0.2384985f), +vec2(0.5145761f , -0.05752508f), +vec2(0.5641244f , -0.169443f), +vec2(0.5916035f , 0.06004957f), +vec2(0.57079f , 0.234188f), +vec2(0.509311f , 0.1523665f), +vec2(0.4204576f , 0.05759521f), +vec2(0.8200846f , -0.3601041f), +vec2(0.6893264f , -0.3473432f), +vec2(0.4775535f , -0.3062558f), +vec2(0.438106f , -0.1796866f), +vec2(0.4056528f , -0.08251233f), +vec2(0.5771964f , 0.5502692f), +vec2(0.5094061f , 0.4025192f), +vec2(0.6908483f , 0.572951f), +vec2(0.5379036f , -0.4542191f), +vec2(0.8167359f , -0.4793735f), +vec2(0.6829269f , -0.4557574f), +vec2(0.5725697f , -0.3477072f), +vec2(0.5767449f , -0.5782524f), +vec2(0.3979413f , -0.4172934f), +vec2(0.4282598f , -0.5145645f), +vec2(0.938814f , -0.3239739f), +vec2(0.702452f , -0.5662871f), +vec2(0.2832307f , -0.1285671f), +vec2(0.3230537f , -0.2691054f), +vec2(0.2921676f , -0.3734582f), +vec2(0.2534037f , -0.4906001f), +vec2(0.4343273f , 0.5223463f), +vec2(0.3605334f , 0.3151571f), +vec2(0.3498518f , 0.451428f), +vec2(0.3230703f , 0.00287089f), +vec2(0.1049206f , -0.1476725f), +vec2(0.2063161f , -0.2608192f), +vec2(0.7266634f , 0.6725333f), +vec2(0.4027067f , -0.6185485f), +vec2(0.2655533f , -0.5912259f), +vec2(0.4947965f , 0.3025357f), +vec2(0.5760762f , 0.68844f), +vec2(0.4909205f , -0.6975324f), +vec2(0.8609334f , 0.4559f), +vec2(0.1836646f , 0.03724086f), +vec2(0.2878554f , 0.178938f), +vec2(0.3948484f , 0.1618928f), +vec2(0.3519658f , -0.7628763f), +vec2(0.6338583f , -0.673193f), +vec2(0.5511802f , -0.8283072f), +vec2(0.4090595f , -0.8717521f), +vec2(0.1482169f , -0.374728f), +vec2(0.1050598f , -0.2613987f), +vec2(0.4210334f , 0.6578422f), +vec2(0.2430464f , 0.4383665f), +vec2(0.3329675f , 0.5512741f), +vec2(0.2147711f , 0.3245511f), +vec2(0.1227196f , 0.2529026f), +vec2(-0.03937457f , 0.156439f), +vec2(0.05618772f , 0.06690486f), +vec2(0.06519571f , 0.3974038f), +vec2(0.1360903f , 0.1466078f), +vec2(-0.00170609f , 0.3089452f), +vec2(0.1357622f , -0.5088975f), +vec2(0.1604694f , -0.7453476f), +vec2(0.1245694f , -0.6337074f), +vec2(0.02542936f , -0.3728781f), +vec2(0.02222222f , -0.649554f), +vec2(0.09870815f , 0.5357338f), +vec2(0.2073958f , 0.5452989f), +vec2(0.216654f , -0.8935689f), +vec2(0.2422334f , 0.665805f), +vec2(0.0574713f , 0.6742729f), +vec2(0.2021346f , 0.8144029f), +vec2(0.3086587f , 0.7504997f), +vec2(0.02122174f , -0.7498575f), +vec2(-0.1551729f , 0.1809731f), +vec2(-0.1947583f , 0.06246066f), +vec2(-0.05754202f , -0.03901273f), +vec2(-0.1083095f , 0.2952235f), +vec2(-0.03259534f , -0.492394f), +vec2(-0.02488567f , -0.2081116f), +vec2(-0.1820729f , -0.1829884f), +vec2(-0.1674413f , -0.04529009f), +vec2(0.04342153f , -0.0368562f), +vec2(0.801399f , -0.5845526f), +vec2(0.3158276f , -0.9124843f), +vec2(-0.05945269f , 0.6727523f), +vec2(0.07701834f , 0.8579889f), +vec2(-0.05778154f , 0.5699022f), +vec2(0.1191713f , 0.7542591f), +vec2(-0.2578296f , 0.3630984f), +vec2(-0.1428598f , 0.4557526f), +vec2(-0.3304029f , 0.5055485f), +vec2(-0.3227198f , 0.1847367f), +vec2(-0.4183801f , 0.3412776f), +vec2(0.2538475f , 0.9317476f), +vec2(0.406249f , 0.8423664f), +vec2(0.4718862f , 0.7592828f), +vec2(0.168472f , -0.06605823f), +vec2(0.2632498f , -0.7084918f), +vec2(-0.2816192f , -0.1023492f), +vec2(-0.3161443f , 0.02489911f), +vec2(-0.4677814f , 0.08450397f), +vec2(-0.4156994f , 0.2408664f), +vec2(-0.237449f , 0.2605326f), +vec2(-0.0912179f , 0.06491816f), +vec2(0.01475127f , 0.7670643f), +vec2(0.1216858f , -0.9368939f), +vec2(0.07010741f , -0.841011f), +vec2(-0.1708607f , -0.4152923f), +vec2(-0.1345006f , -0.5842513f), +vec2(-0.09419055f , -0.3213732f), +vec2(-0.2149337f , 0.730642f), +vec2(-0.1102187f , 0.8425013f), +vec2(-0.1808572f , 0.6244397f), +vec2(-0.2414505f , -0.7063725f), +vec2(-0.2410318f , -0.537854f), +vec2(-0.1005938f , -0.7635075f), +vec2(0.1053517f , 0.9678772f), +vec2(-0.3340288f , 0.6926677f), +vec2(-0.2363931f , 0.8464488f), +vec2(-0.4057773f , 0.7786722f), +vec2(-0.5484858f , 0.1686208f), +vec2(-0.64842f , 0.02256887f), +vec2(-0.5544513f , -0.02348978f), +vec2(-0.492855f , -0.1083694f), +vec2(-0.4248196f , 0.4674786f), +vec2(-0.5873146f , 0.4072608f), +vec2(-0.6439911f , 0.3038489f), +vec2(-0.6419188f , 0.1293737f), +vec2(-0.005880734f , 0.4699725f), +vec2(-0.4239455f , 0.6250131f), +vec2(-0.1701273f , 0.9506347f), +vec2(7.665656E-05f , 0.9941212f), +vec2(-0.7070159f , 0.4426281f), +vec2(-0.7481344f , 0.3139496f), +vec2(-0.8330062f , 0.2472693f), +vec2(-0.7271438f , 0.2024286f), +vec2(-0.5179888f , 0.3149576f), +vec2(-0.8258062f , 0.3779382f), +vec2(-0.8063191f , 0.1262931f), +vec2(-0.2690676f , -0.4360798f), +vec2(-0.3714577f , -0.5887412f), +vec2(-0.3736085f , -0.4018324f), +vec2(-0.3228985f , -0.2063406f), +vec2(-0.2414576f , -0.2875458f), +vec2(-0.4720859f , -0.3823904f), +vec2(-0.4937642f , -0.2686005f), +vec2(-0.01500604f , -0.9587054f), +vec2(-0.08535925f , -0.8820614f), +vec2(-0.6436375f , -0.3157263f), +vec2(-0.5736347f , -0.4224878f), +vec2(-0.5026127f , -0.5516239f), +vec2(-0.8200902f , 0.5370023f), +vec2(-0.7196413f , 0.57133f), +vec2(-0.5849072f , 0.5917885f), +vec2(-0.1598758f , -0.9739854f), +vec2(-0.4230629f , -0.01858409f), +vec2(-0.9403627f , 0.2213769f), +vec2(-0.685889f , -0.2192711f), +vec2(-0.6693704f , -0.4884708f), +vec2(-0.7967147f , -0.3078234f), +vec2(-0.596441f , -0.1686891f), +vec2(-0.7366468f , -0.3939891f), +vec2(-0.7963406f , 0.02246814f), +vec2(-0.9177913f , 0.0929693f), +vec2(-0.9284672f , 0.3329005f), +vec2(-0.6497722f , 0.6851863f), +vec2(-0.496019f , 0.7013303f), +vec2(-0.3930301f , -0.6892192f), +vec2(-0.2122009f , -0.8777389f), +vec2(-0.3660335f , -0.801644f), +vec2(-0.386839f , -0.1191898f), +vec2(-0.7020127f , -0.0776734f), +vec2(-0.7760845f , -0.1566844f), +vec2(-0.5444778f , -0.6516482f), +vec2(-0.5331346f , 0.4946506f), +vec2(-0.3288236f , 0.9408244f), +vec2(0.5819826f , 0.8101937f), +vec2(-0.4894184f , -0.8290837f), +vec2(-0.5183194f , 0.8454953f), +vec2(-0.7665774f , -0.5223897f), +vec2(-0.6703191f , -0.6217513f), +vec2(-0.8902924f , -0.2446688f), +vec2(-0.8574848f , -0.09174173f), +vec2(-0.3544409f , -0.9239591f), +vec2(-0.969833f , -0.1172272f), +vec2(-0.8968207f , -0.4079512f), +vec2(-0.5891477f , 0.7724466f), +vec2(-0.2146262f , 0.5286855f), +vec2(-0.3762444f , -0.3014335f), +vec2(-0.9466863f , -0.008970681f), +vec2(-0.596356f , -0.7976127f), +vec2(-0.8877738f , 0.4569088f)); +#endif +flat varying vec4 exposure; +flat varying float rodExposure; +varying vec2 texcoord; +uniform sampler2D colortex4; +uniform sampler2D colortex5; +uniform sampler2D colortex3; +uniform sampler2D colortex7; +uniform sampler2D depthtex0; +uniform sampler2D noisetex; +uniform vec2 texelSize; + +uniform float viewWidth; +uniform float viewHeight; +uniform float frameTimeCounter; +uniform int frameCounter; +uniform int isEyeInWater; +uniform float near; +uniform float aspectRatio; +uniform float far; + + +uniform float screenBrightness; +uniform float isWastes; +uniform float isWarpedForest; +uniform float isCrimsonForest; +uniform float isSoulValley; +uniform float isBasaltDelta; + +#include "lib/color_transforms.glsl" +#include "lib/color_dither.glsl" + +float cdist(vec2 coord) { + return max(abs(coord.s-0.5),abs(coord.t-0.5))*2.0; +} +float blueNoise(){ + return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); +} +float ld(float depth) { + return (2.0 * near) / (far + near - depth * (far - near)); // (-depth * (far - near)) = (2.0 * near)/ld - far - near +} +vec3 closestToCamera3x3() +{ + vec2 du = vec2(texelSize.x, 0.0); + vec2 dv = vec2(0.0, texelSize.y); + + vec3 dtl = vec3(texcoord,0.) + vec3(-texelSize, texture2D(depthtex0, texcoord - dv - du).x); + vec3 dtc = vec3(texcoord,0.) + vec3( 0.0, -texelSize.y, texture2D(depthtex0, texcoord - dv).x); + vec3 dtr = vec3(texcoord,0.) + vec3( texelSize.x, -texelSize.y, texture2D(depthtex0, texcoord - dv + du).x); + + vec3 dml = vec3(texcoord,0.) + vec3(-texelSize.x, 0.0, texture2D(depthtex0, texcoord - du).x); + vec3 dmc = vec3(texcoord,0.) + vec3( 0.0, 0.0, texture2D(depthtex0, texcoord).x); + vec3 dmr = vec3(texcoord,0.) + vec3( texelSize.x, 0.0, texture2D(depthtex0, texcoord + du).x); + + vec3 dbl = vec3(texcoord,0.) + vec3(-texelSize.x, texelSize.y, texture2D(depthtex0, texcoord + dv - du).x); + vec3 dbc = vec3(texcoord,0.) + vec3( 0.0, texelSize.y, texture2D(depthtex0, texcoord + dv).x); + vec3 dbr = vec3(texcoord,0.) + vec3( texelSize.x, texelSize.y, texture2D(depthtex0, texcoord + dv + du).x); + + vec3 dmin = dmc; + + dmin = dmin.z > dtc.z? dtc : dmin; + dmin = dmin.z > dtr.z? dtr : dmin; + + dmin = dmin.z > dml.z? dml : dmin; + dmin = dmin.z > dtl.z? dtl : dmin; + dmin = dmin.z > dmr.z? dmr : dmin; + + dmin = dmin.z > dbl.z? dbl : dmin; + dmin = dmin.z > dbc.z? dbc : dmin; + dmin = dmin.z > dbr.z? dbr : dmin; + + return dmin; +} +void main() { + /* DRAWBUFFERS:7 */ + float vignette = (1.5-dot(texcoord-0.5,texcoord-0.5)*2.5); + vec3 col = texture2D(colortex5,texcoord).rgb; + #ifdef DOF + /*--------------------------------*/ + float z = ld(texture2D(depthtex0, texcoord.st).r)*far; + #ifdef AUTOFOCUS + float focus = ld(texture2D(depthtex0, vec2(0.5)).r)*far; + #else + float focus = MANUAL_FOCUS*screenBrightness; + #endif + float pcoc = min(abs(aperture * (focal/100.0 * (z - focus)) / (z * (focus - focal/100.0))),texelSize.x*15.0); + #ifdef FAR_BLUR_ONLY + pcoc *= float(z > focus); + #endif + float noise = blueNoise()*6.28318530718; + mat2 noiseM = mat2( cos( noise ), -sin( noise ), + sin( noise ), cos( noise ) + ); + vec3 bcolor = vec3(0.); + float nb = 0.0; + vec2 bcoord = vec2(0.0); + /*--------------------------------*/ + #ifndef HQ_DOF + bcolor = col; + #ifdef HEXAGONAL_BOKEH + for ( int i = 0; i < 60; i++) { + bcolor += texture2D(colortex5, texcoord.xy + hex_offsets[i]*pcoc*vec2(1.0,aspectRatio)).rgb; + } + col = bcolor/61.0; + #else + for ( int i = 0; i < 60; i++) { + bcolor += texture2D(colortex5, texcoord.xy + offsets[i]*pcoc*vec2(1.0,aspectRatio)).rgb; + } + /*--------------------------------*/ + col = bcolor/61.0; + #endif + #endif + #ifdef HQ_DOF + for ( int i = 0; i < 209; i++) { + bcolor += texture2D(colortex5, texcoord.xy + noiseM*shadow_offsets[i]*pcoc*vec2(1.0,aspectRatio)).rgb; + } + col = bcolor/209.0; + #endif +#endif + vec2 clampedRes = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.)); + + float BiomeParams = isWastes + isWarpedForest*10 + isCrimsonForest*10 + isSoulValley*5 + isBasaltDelta*0 ; + + + vec3 bloom = texture2D(colortex3,texcoord/clampedRes*vec2(1920.,1080.)*0.5).rgb/2./7.0; + + float lightScat = clamp(4 * 0.05 * pow(exposure.a ,0.2) ,0.0,1.0)*vignette; + + + float VL_abs = texture2D(colortex7,texcoord).r; + + VL_abs = clamp((1.0-VL_abs*1.05)*0.5,0.0,1.0)*clamp(1.0-pow(cdist(texcoord.xy),15.0),0.0,1.0); + col = (mix(col,bloom,VL_abs)+bloom*lightScat)*exposure.rgb; +/* + //Purkinje Effect + float lum = dot(col,vec3(0.15,0.3,0.55)); + float lum2 = dot(col,vec3(0.85,0.7,0.45))/2; + float rodLum = lum2*300.0; + float rodCurve = mix(1.0, rodLum/(2.5+rodLum), rodExposure/2.0*Purkinje_strength); + col = mix(lum*Purkinje_Multiplier*vec3(Purkinje_R, Purkinje_G, Purkinje_B)+0.001, col, rodCurve); +*/ + #ifndef USE_ACES_COLORSPACE_APPROXIMATION + col = LinearTosRGB(TONEMAP(col)); + #else + col = col * ACESInputMat; + col = TONEMAP(col); + col = LinearTosRGB(clamp(col * ACESOutputMat, 0.0, 1.0)); + #endif + //col = ACESFitted(texture2D(colortex4,texcoord/3.).rgb/500.); + gl_FragData[0].rgb = clamp(int8Dither(col,texcoord),0.0,1.0); + //if (nightMode < 0.99 && texcoord.x < 0.5) gl_FragData[0].rgb =vec3(0.0,1.0,0.0); + +} diff --git a/shaders/world-1/composite15.vsh b/shaders/world-1/composite15.vsh new file mode 100644 index 0000000..5099bbb --- /dev/null +++ b/shaders/world-1/composite15.vsh @@ -0,0 +1,25 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + +#define FinalR 1.0 //[0.0 0.025315 0.051271 0.077884 0.105170 0.133148 0.161834 0.191246 0.221402 0.252322 0.284025 0.316530 0.349858 0.384030 0.419067 0.454991 0.491824 0.529590 0.568312 0.608014 0.648721 0.690458 0.733253 0.777130 0.822118 0.868245 0.915540 0.964032 1.013752 1.064731 1.117000 1.170592 1.225540 1.281880 1.339646 1.398875 1.459603 1.521868 1.585709 1.651167 1.718281 1.787095 1.857651 1.929992 2.004166 2.080216 2.158192 2.238142 2.320116 2.404166 2.490342 2.578701 2.669296 2.762185 2.857425 2.955076 3.055199 3.157857 3.263114 3.371035 3.481689 3.595143 3.711470 3.830741 3.953032 4.078419 4.206979 4.338795 4.473947 4.612521 4.754602 4.900281 5.049647 5.202795 5.359819 5.520819 5.685894 5.855148 6.028687 6.206619 6.389056 6.576110 6.767901 6.964546 7.166169 7.372897 7.584858 7.802185 8.025013 8.253482 8.487735 8.727919 8.974182 9.226680 9.485569 9.751013 10.02317 10.30222 10.58834 10.88170 11.18249 ] +#define FinalG 1.0 //[0.0 0.025315 0.051271 0.077884 0.105170 0.133148 0.161834 0.191246 0.221402 0.252322 0.284025 0.316530 0.349858 0.384030 0.419067 0.454991 0.491824 0.529590 0.568312 0.608014 0.648721 0.690458 0.733253 0.777130 0.822118 0.868245 0.915540 0.964032 1.013752 1.064731 1.117000 1.170592 1.225540 1.281880 1.339646 1.398875 1.459603 1.521868 1.585709 1.651167 1.718281 1.787095 1.857651 1.929992 2.004166 2.080216 2.158192 2.238142 2.320116 2.404166 2.490342 2.578701 2.669296 2.762185 2.857425 2.955076 3.055199 3.157857 3.263114 3.371035 3.481689 3.595143 3.711470 3.830741 3.953032 4.078419 4.206979 4.338795 4.473947 4.612521 4.754602 4.900281 5.049647 5.202795 5.359819 5.520819 5.685894 5.855148 6.028687 6.206619 6.389056 6.576110 6.767901 6.964546 7.166169 7.372897 7.584858 7.802185 8.025013 8.253482 8.487735 8.727919 8.974182 9.226680 9.485569 9.751013 10.02317 10.30222 10.58834 10.88170 11.18249 ] +#define FinalB 1.0 //[0.0 0.025315 0.051271 0.077884 0.105170 0.133148 0.161834 0.191246 0.221402 0.252322 0.284025 0.316530 0.349858 0.384030 0.419067 0.454991 0.491824 0.529590 0.568312 0.608014 0.648721 0.690458 0.733253 0.777130 0.822118 0.868245 0.915540 0.964032 1.013752 1.064731 1.117000 1.170592 1.225540 1.281880 1.339646 1.398875 1.459603 1.521868 1.585709 1.651167 1.718281 1.787095 1.857651 1.929992 2.004166 2.080216 2.158192 2.238142 2.320116 2.404166 2.490342 2.578701 2.669296 2.762185 2.857425 2.955076 3.055199 3.157857 3.263114 3.371035 3.481689 3.595143 3.711470 3.830741 3.953032 4.078419 4.206979 4.338795 4.473947 4.612521 4.754602 4.900281 5.049647 5.202795 5.359819 5.520819 5.685894 5.855148 6.028687 6.206619 6.389056 6.576110 6.767901 6.964546 7.166169 7.372897 7.584858 7.802185 8.025013 8.253482 8.487735 8.727919 8.974182 9.226680 9.485569 9.751013 10.02317 10.30222 10.58834 10.88170 11.18249 ] + +varying vec2 texcoord; +flat varying vec4 exposure; +flat varying float rodExposure; +uniform sampler2D colortex4; + +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + + gl_Position = ftransform(); + texcoord = gl_MultiTexCoord0.xy; + exposure=vec4(texelFetch2D(colortex4,ivec2(10,37),0).r*vec3(FinalR,FinalG,FinalB),texelFetch2D(colortex4,ivec2(10,37),0).r); + rodExposure = texelFetch2D(colortex4,ivec2(14,37),0).r; +} diff --git a/shaders/world-1/composite2.fsh b/shaders/world-1/composite2.fsh new file mode 100644 index 0000000..5e1f176 --- /dev/null +++ b/shaders/world-1/composite2.fsh @@ -0,0 +1,433 @@ +#version 120 +//Render sky, volumetric clouds, direct lighting +#extension GL_EXT_gpu_shader4 : enable +#define SCREENSPACE_CONTACT_SHADOWS //Raymarch towards the sun in screen-space, in order to cast shadows outside of the shadow map or at the contact of objects. Can get really expensive at high resolutions. +#define SHADOW_FILTER_SAMPLE_COUNT 9 // Number of samples used to filter the actual shadows [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 ] +#define CAVE_LIGHT_LEAK_FIX // Hackish way to remove sunlight incorrectly leaking into the caves. Can inacurrately remove shadows in some places +#define CLOUDS_SHADOWS +#define CLOUDS_SHADOWS_STRENGTH 1.0 //[0.1 0.125 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.9 1.0] +#define CLOUDS_QUALITY 0.5 //[0.1 0.125 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.9 1.0] +#define SSAO //It is also recommended to reduce the ambientOcclusionLevel value with this enabled +#define SSAO_SAMPLES 7 //[4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32] +#define TORCH_R 1.0 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +#define TORCH_G 0.75 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +#define TORCH_B 0.5 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +#define indirect_effect 1 // Choose what effect is applied to indirect light. [0 1 2 3] +#define AO_Strength 0.8 // strength of shadowed areas [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 ] +#define GI_Strength 5.0 // strength of bounced light areas [ 1 2 3 4 5 6 7 8 9 10] + +// #define HQ_SSGI + +//////////// misc settings + +// #define WhiteWorld // THIS IS A DEBUG VIEW. uses to see AO easier. used to see fake GI better (green light) +// #define LabPBR_Emissives +#define Emissive_Brightness 10.0 // [1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 15. 20. 25. 30. 35. 40. 45. 50. 100.] +#define Emissive_Curve 2.0 // yes i blatantly copied kappa here. [1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 ] + +#define n_MIN_LIGHT_AMOUNT 1.0 //[0.0 0.5 1.0 1.5 2.0 3.0 4.0 5.0] + +const bool shadowHardwareFiltering = true; + +varying vec2 texcoord; + +uniform float nightVision; +flat varying vec4 lightCol; //main light source color (rgb),used light source(1=sun,-1=moon) +flat varying vec3 ambientUp; +flat varying vec3 ambientLeft; +flat varying vec3 ambientRight; +flat varying vec3 ambientB; +flat varying vec3 ambientF; +flat varying vec3 ambientDown; +flat varying vec3 avgAmbient; +flat varying vec3 WsunVec; +flat varying vec2 TAA_Offset; +flat varying float tempOffsets; + +uniform sampler2D colortex0;//clouds +uniform sampler2D colortex1;//albedo(rgb),material(alpha) RGBA16 +uniform sampler2D colortex3; +uniform sampler2D colortex4;//Skybox +uniform sampler2D colortex5; +uniform sampler2D colortex6;//Skybox +uniform sampler2D colortex7; +uniform sampler2D colortex8; +uniform sampler2D depthtex1;//depth +uniform sampler2D depthtex0;//depth +uniform sampler2D noisetex;//depth + + +uniform float isWastes; +uniform float isWarpedForest; +uniform float isCrimsonForest; +uniform float isSoulValley; +uniform float isBasaltDelta; + +uniform int heldBlockLightValue; +uniform int frameCounter; +uniform int isEyeInWater; +uniform mat4 shadowModelViewInverse; +uniform mat4 shadowProjectionInverse; +uniform float far; +uniform float near; +uniform float frameTimeCounter; +uniform float rainStrength; +uniform mat4 gbufferProjection; +uniform mat4 gbufferProjectionInverse; +uniform mat4 gbufferModelViewInverse; +uniform mat4 gbufferPreviousModelView; +uniform mat4 gbufferPreviousProjection; +uniform vec3 previousCameraPosition; +uniform mat4 shadowModelView; +uniform mat4 shadowProjection; +uniform mat4 gbufferModelView; + +uniform vec2 texelSize; +uniform float viewWidth; +uniform float viewHeight; +uniform float aspectRatio; +uniform vec3 cameraPosition; +// uniform int framemod8; +uniform vec3 sunVec; +uniform ivec2 eyeBrightnessSmooth; +#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) +#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) +vec3 toScreenSpace(vec3 p) { + vec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); + vec3 p3 = p * 2. - 1.; + vec4 fragposition = iProjDiag * p3.xyzz + gbufferProjectionInverse[3]; + return fragposition.xyz / fragposition.w; +} +#include "lib/waterOptions.glsl" +#include "lib/color_transforms.glsl" +#include "lib/sky_gradient.glsl" +#include "lib/stars.glsl" +#include "lib/volumetricClouds.glsl" +#include "lib/waterBump.glsl" + + +float ld(float dist) { + return (2.0 * near) / (far + near - dist * (far - near)); +} +vec3 ld(vec3 dist) { + return (2.0 * near) / (far + near - dist * (far - near)); +} + +#include "lib/specular.glsl" + +vec3 normVec (vec3 vec){ + return vec*inversesqrt(dot(vec,vec)); +} +float lengthVec (vec3 vec){ + return sqrt(dot(vec,vec)); +} +#define fsign(a) (clamp((a)*1e35,0.,1.)*2.-1.) +float triangularize(float dither) +{ + float center = dither*2.0-1.0; + dither = center*inversesqrt(abs(center)); + return clamp(dither-fsign(center),0.0,1.0); +} +float interleaved_gradientNoise(float temp){ + return fract(52.9829189*fract(0.06711056*gl_FragCoord.x + 0.00583715*gl_FragCoord.y)+temp); +} +float interleaved_gradientNoise(){ + vec2 coord = gl_FragCoord.xy; + float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)); + return noise; +} +vec3 fp10Dither(vec3 color,float dither){ + const vec3 mantissaBits = vec3(6.,6.,5.); + vec3 exponent = floor(log2(color)); + return color + dither*exp2(-mantissaBits)*exp2(exponent); +} + +vec2 R2_samples(int n){ + vec2 alpha = vec2(0.75487765, 0.56984026); + return fract(alpha * n); +} +float facos(float sx){ + float x = clamp(abs( sx ),0.,1.); + return sqrt( 1. - x ) * ( -0.16882 * x + 1.56734 ); +} +vec3 worldToView(vec3 worldPos) { + vec4 pos = vec4(worldPos, 0.0); + pos = gbufferModelView * pos; + return pos.xyz; +} + +vec3 decode (vec2 encn){ + vec3 n = vec3(0.0); + encn = encn * 2.0 - 1.0; + n.xy = abs(encn); + n.z = 1.0 - n.x - n.y; + n.xy = n.z <= 0.0 ? (1.0 - n.yx) * sign(encn) : encn; + return clamp(normalize(n.xyz),-1.0,1.0); +} +vec2 decodeVec2(float a){ + const vec2 constant1 = 65535. / vec2( 256., 65536.); + const float constant2 = 256. / 255.; + return fract( a * constant1 ) * constant2 ; +} + +vec2 tapLocation(int sampleNumber,int nb, float nbRot,float jitter,float distort) +{ + float alpha0 = sampleNumber/nb; + float alpha = (sampleNumber+jitter)/nb; + float angle = jitter*6.28 + alpha * 4.0 * 6.28; + + float sin_v, cos_v; + + sin_v = sin(angle); + cos_v = cos(angle); + + return vec2(cos_v, sin_v)*sqrt(alpha); +} +float blueNoise(){ + return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); +} +vec4 blueNoise(vec2 coord){ + return texelFetch2D(colortex6, ivec2(coord )%512 , 0); +} +float R2_dither(){ + vec2 alpha = vec2(0.75487765, 0.56984026); + return fract(alpha.x * gl_FragCoord.x + alpha.y * gl_FragCoord.y); +} +vec3 toShadowSpaceProjected(vec3 p3){ + p3 = mat3(gbufferModelViewInverse) * p3 + gbufferModelViewInverse[3].xyz; + p3 = mat3(shadowModelView) * p3 + shadowModelView[3].xyz; + p3 = diagonal3(shadowProjection) * p3 + shadowProjection[3].xyz; + + return p3; +} +vec2 tapLocation(int sampleNumber, float spinAngle,int nb, float nbRot,float r0) +{ + float alpha = (float(sampleNumber*1.0f + r0) * (1.0 / (nb))); + float angle = alpha * (nbRot * 6.28) + spinAngle*6.28; + + float ssR = alpha; + float sin_v, cos_v; + + sin_v = sin(angle); + cos_v = cos(angle); + + return vec2(cos_v, sin_v)*ssR; +} +void ssAO(inout vec3 lighting,vec3 fragpos,float mulfov, vec2 noise, vec3 normal, float lightmap){ + + ivec2 pos = ivec2(gl_FragCoord.xy); + const float tan70 = tan(70.*3.14/240.); + float mulfov2 = gbufferProjection[1][1]/tan70; + + float maxR2 = fragpos.z*fragpos.z*mulfov2*2.*1.412/50.0; + + + float rd = mulfov2 * 0.04 ; + //pre-rotate direction + float n = 0.0; + + float occlusion = 0.0; + + vec2 acc = -(TAA_Offset*(texelSize/2)) ; + + int seed = (frameCounter%40000)*2 + frameCounter; + vec2 ij = fract(R2_samples(seed) + noise.rg ); + vec2 v = ij; + + for (int j = 0; j < 7 ;j++) { + vec2 sp = tapLocation(j,v.x,7,1.682,v.y); + vec2 sampleOffset = sp*rd ; + ivec2 offset = ivec2(gl_FragCoord.xy + sampleOffset*vec2(viewWidth,viewHeight*aspectRatio)); + + if (offset.x >= 0 && offset.y >= 0 && offset.x < viewWidth && offset.y < viewHeight ) { + vec3 t0 = toScreenSpace(vec3(offset*texelSize+acc+0.5*texelSize,texelFetch2D(depthtex1,offset,0).x)); + vec3 vec = t0.xyz - fragpos; + float dsquared = dot(vec,vec); + + if (dsquared > 1e-5){ + if (dsquared < maxR2){ + float NdotV = clamp(dot(vec*inversesqrt(dsquared), normalize(normal) ),0.,1.); + occlusion += NdotV * clamp(1.0-dsquared/maxR2,0.0,1.0); + } + n += 1.0 ; + } + } + } + occlusion *= mix(2.25,0.0,clamp(pow(lightmap,2),0,1)); + occlusion = max(1.0 - occlusion/n, 0.0); + lighting = lighting * occlusion; +} + + +vec3 cosineHemisphereSample(vec2 Xi, float roughness) +{ + float r = sqrt(Xi.x); + float theta = 2.0 * 3.14159265359 * Xi.y; + + float x = r * cos(theta); + float y = r * sin(theta); + + return vec3(x, y, sqrt(clamp(1.0 - Xi.x,0.,1.))); +} +vec3 TangentToWorld(vec3 N, vec3 H, float roughness) +{ + vec3 UpVector = abs(N.z) < 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(1.0, 0.0, 0.0); + vec3 T = normalize(cross(UpVector, N)); + vec3 B = cross(N, T); + + return vec3((T * H.x) + (B * H.y) + (N * H.z)); +} + +vec3 RT(vec3 dir, vec3 position, float noise, float stepsizes){ + float stepSize = stepsizes; + int maxSteps = 12; + vec3 clipPosition = toClipSpace3(position); + float rayLength = ((position.z + dir.z * sqrt(3.0)*far) > -sqrt(3.0)*near) ? + (-sqrt(3.0)*near -position.z) / dir.z : sqrt(3.0)*far; + vec3 end = toClipSpace3(position+dir*rayLength) ; + vec3 direction = end-clipPosition ; //convert to clip space + float len = max(abs(direction.x)/texelSize.x,abs(direction.y)/texelSize.y)/stepSize; + //get at which length the ray intersects with the edge of the screen + vec3 maxLengths = (step(0.,direction)-clipPosition) / direction; + + float mult = min(min(maxLengths.x,maxLengths.y),maxLengths.z)*2000.0; + + vec3 stepv = direction/len; + + int iterations = min(int(min(len, mult*len)-2), maxSteps); + + //Do one iteration for closest texel (good contact shadows) + vec3 spos = clipPosition ; + spos.xy += TAA_Offset*texelSize*0.5; + spos += stepv/(stepSize/2); + + for(int i = 0; i < iterations; i++){ + spos += stepv*noise; + + float sp=texelFetch2D(depthtex1,ivec2(spos.xy/texelSize),0).x; + float currZ = (spos.z); + + if( sp < currZ) { + // float dist = abs(sp-currZ)/currZ; + return vec3(spos.xy, invLinZ(sp)); + } + } + return vec3(1.1); +} +void rtAO(inout vec3 lighting, vec3 normal, vec2 noise, vec3 fragpos){ + int nrays = 4; + float occlude = 0.0; + + for (int i = 0; i < nrays; i++){ + int seed = (frameCounter%40000)*nrays+i; + vec2 ij = fract(R2_samples(seed) + noise ); + + vec3 rayDir = TangentToWorld( normal, normalize(cosineHemisphereSample(ij,1.0)) ,1.0) ; + + vec3 rayHit = RT(mat3(gbufferModelView)*rayDir, fragpos, blueNoise(), 12.); // choc sspt + + float skyLightDir = rayDir.y < 0.0 ? 1.0 : 1.0 ; // the positons where the occlusion happens + if (rayHit.z > 1.0) occlude += skyLightDir; + } + lighting *= occlude/nrays; +} + +void main() { + float dirtAmount = Dirt_Amount; + vec3 waterEpsilon = vec3(Water_Absorb_R, Water_Absorb_G, Water_Absorb_B); + vec3 dirtEpsilon = vec3(Dirt_Absorb_R, Dirt_Absorb_G, Dirt_Absorb_B); + vec3 totEpsilon = dirtEpsilon*dirtAmount + waterEpsilon; + vec3 scatterCoef = dirtAmount * vec3(Dirt_Scatter_R, Dirt_Scatter_G, Dirt_Scatter_B) / pi; + float z = texture2D(depthtex1,texcoord).x; + vec2 tempOffset=TAA_Offset; + + vec3 fragpos = toScreenSpace(vec3(texcoord-vec2(tempOffset)*texelSize*0.5,z)); + vec3 p3 = mat3(gbufferModelViewInverse) * fragpos; + vec3 np3 = normVec(p3); + + vec4 SpecularTex = texture2D(colortex8,texcoord); + + // for a thing + vec3 wpos = mat3(gbufferModelViewInverse) * fragpos + gbufferModelViewInverse[3].xyz; + vec3 dVWorld = (wpos-gbufferModelViewInverse[3].xyz); + float dL = length(dVWorld); + vec3 progressW = gbufferModelViewInverse[3].xyz+cameraPosition; + progressW = gbufferModelViewInverse[3].xyz+cameraPosition + dVWorld; + + p3 += gbufferModelViewInverse[3].xyz; + + bool iswater = texture2D(colortex7,texcoord).a > 0.99; + + vec4 data = texture2D(colortex1,texcoord); + vec4 dataUnpacked0 = vec4(decodeVec2(data.x),decodeVec2(data.y)); + vec4 dataUnpacked1 = vec4(decodeVec2(data.z),decodeVec2(data.w)); + + vec3 albedo = toLinear(vec3(dataUnpacked0.xz,dataUnpacked1.x)); + vec3 normal = mat3(gbufferModelViewInverse) * worldToView(decode(dataUnpacked0.yw)); + + vec2 lightmap = dataUnpacked1.yz; + bool translucent = abs(dataUnpacked1.w-0.5) <0.01; + bool hand = abs(dataUnpacked1.w-0.75) <0.01; + bool blocklights = abs(dataUnpacked1.w-0.8) <0.01; + + vec3 lightSource = normalize(vec3(0.0, -1.0,0.0)); + vec3 viewspace_sunvec = mat3(gbufferModelView) * lightSource; + + vec3 WsunVec = normalize(mat3(gbufferModelViewInverse) * viewspace_sunvec); + float LightDir = max(dot(normal, WsunVec),0.0); + + + vec3 ambientCoefs = normal/dot(abs(normal),vec3(1.)); + + #ifdef WhiteWorld + albedo = vec3(1.0); + #endif + +////// ----- indirect ----- ////// + + vec3 custom_lightmap = texture2D(colortex4, (vec2(lightmap.x, pow(lightmap.y,2))*15.0+0.5+vec2(0.0,19.))*texelSize).rgb*8./150./3.; // y = torch + + // vec3 ambientLight = vec3(1.0) / 30; + vec3 ambientLight = ((ambientUp + ambientDown + ambientRight + ambientLeft + ambientB + ambientF) ) * (abs(ambientCoefs.y * 0.5) + 0.5) ; + + + vec3 Lightsources = custom_lightmap.y * vec3(TORCH_R,TORCH_G,TORCH_B) * 0.5; + if(hand) Lightsources *= 0.15; + if(blocklights) Lightsources *= 0.3; + if(custom_lightmap.y > 10.) Lightsources *= 0.3; + + //apply a curve for the torch light so it doesnt mix with lab emissive colors too much + #ifdef LabPBR_Emissives + if(blocklights && (SpecularTex.a > 0.0 && SpecularTex.a < 1.0)) Lightsources = mix(vec3(0.0), Lightsources, SpecularTex.a); + #endif + + ambientLight += Lightsources; + + #if indirect_effect == 1 + if (!hand) ssAO(ambientLight, fragpos, 1.0, blueNoise(gl_FragCoord.xy).rg, worldToView(decode(dataUnpacked0.yw)), lightmap.x) ; + #endif + // #if indirect_effect == 2 + // if (!hand ) rtAO(ambientLight, normal, blueNoise(gl_FragCoord.xy).rg, fragpos); + // #endif + // #if indirect_effect == 3 + // if (!hand) rtGI(ambientLight, normal, blueNoise(gl_FragCoord.xy).rg, fragpos, 1, albedo); + // #endif + + + vec3 Indirect_lighting = ambientLight; + +////// ----- finalize ----- ////// + + gl_FragData[0].rgb = Indirect_lighting * albedo ; + + #ifdef LabPBR_Emissives + gl_FragData[0].rgb = SpecularTex.a < 255.0/255.0 ? mix(gl_FragData[0].rgb, albedo * Emissive_Brightness*0.5 , SpecularTex.a): gl_FragData[0].rgb; + #endif + + // do this after water and stuff is done because yea + #ifdef Specular_Reflections + MaterialReflections(gl_FragData[0].rgb, SpecularTex.r, SpecularTex.ggg, albedo, WsunVec, vec3(0), 0.0 , lightmap.y, normal, np3, fragpos, vec3(blueNoise(gl_FragCoord.xy).rg,blueNoise()), hand); + #endif + +/* DRAWBUFFERS:3 */ +} diff --git a/shaders/world-1/composite2.vsh b/shaders/world-1/composite2.vsh new file mode 100644 index 0000000..b1cf351 --- /dev/null +++ b/shaders/world-1/composite2.vsh @@ -0,0 +1,68 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable +#define TAA +varying vec2 texcoord; + +flat varying vec3 WsunVec; +flat varying vec3 ambientUp; +flat varying vec3 ambientLeft; +flat varying vec3 ambientRight; +flat varying vec3 ambientB; +flat varying vec3 ambientF; +flat varying vec3 ambientDown; +flat varying vec3 avgAmbient; +flat varying vec4 lightCol; +flat varying float tempOffsets; +flat varying vec2 TAA_Offset; +flat varying vec3 zMults; + +uniform sampler2D colortex4; + +uniform float far; +uniform float near; +uniform mat4 gbufferModelViewInverse; +uniform vec3 sunPosition; +uniform float rainStrength; +uniform float sunElevation; +uniform int frameCounter; + +const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); + + +#include "/lib/util.glsl" + +void main() { + gl_Position = ftransform(); + texcoord = gl_MultiTexCoord0.xy; + + tempOffsets = HaltonSeq2(frameCounter%10000); + TAA_Offset = offsets[frameCounter%8]; + #ifndef TAA + TAA_Offset = vec2(0.0); + #endif + + vec3 sc = texelFetch2D(colortex4,ivec2(6,37),0).rgb; + ambientUp = texelFetch2D(colortex4,ivec2(0,37),0).rgb; + ambientDown = texelFetch2D(colortex4,ivec2(1,37),0).rgb; + ambientLeft = texelFetch2D(colortex4,ivec2(2,37),0).rgb; + ambientRight = texelFetch2D(colortex4,ivec2(3,37),0).rgb; + ambientB = texelFetch2D(colortex4,ivec2(4,37),0).rgb; + ambientF = texelFetch2D(colortex4,ivec2(5,37),0).rgb; + + avgAmbient = texelFetch2D(colortex4,ivec2(11,37),0).rgb; + + lightCol.a = float(sunElevation > 1e-5)*2-1.; + lightCol.rgb = sc; + + WsunVec = lightCol.a*normalize(mat3(gbufferModelViewInverse) *sunPosition); + zMults = vec3((far * near)*2.0,far+near,far-near); + + +} diff --git a/shaders/world-1/composite5.fsh b/shaders/world-1/composite5.fsh new file mode 100644 index 0000000..5444e90 --- /dev/null +++ b/shaders/world-1/composite5.fsh @@ -0,0 +1,271 @@ +#version 120 +//Volumetric fog rendering +#extension GL_EXT_gpu_shader4 : enable + +#define VL_SAMPLES 8 //[4 6 8 10 12 14 16 20 24 30 40 50] +#define Ambient_Mult 1.0 //[0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.5 2.0 3.0 4.0 5.0 6.0 10.0] +#define SEA_LEVEL 70 //[0 10 20 30 40 50 60 70 80 90 100 110 120 130 150 170 190] //The volumetric light uses an altitude-based fog density, this is where fog density is the highest, adjust this value according to your world. +#define ATMOSPHERIC_DENSITY 1.0 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 4.0 5.0 7.5 10.0 12.5 15.0 20.] +#define fog_mieg1 0.40 //[0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.75 0.8 0.85 0.9 0.95 1.0] +#define fog_mieg2 0.10 //[0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.75 0.8 0.85 0.9 0.95 1.0] +#define fog_coefficientRayleighR 5.8 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0] +#define fog_coefficientRayleighG 1.35 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0] +#define fog_coefficientRayleighB 3.31 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0] + +#define fog_coefficientMieR 3.0 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0] +#define fog_coefficientMieG 3.0 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0] +#define fog_coefficientMieB 3.0 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0] + +#define Underwater_Fog_Density 1.0 //[0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.5 2.0 3.0 4.0] + +flat varying vec4 lightCol; +flat varying vec3 ambientUp; +flat varying vec3 ambientLeft; +flat varying vec3 ambientRight; +flat varying vec3 ambientB; +flat varying vec3 ambientF; +flat varying vec3 ambientDown; +flat varying float tempOffsets; +flat varying float fogAmount; +flat varying float VFAmount; +uniform sampler2D noisetex; +uniform sampler2D depthtex0; + + +uniform sampler2D colortex2; +uniform sampler2D colortex3; +uniform sampler2D colortex4; + +uniform vec3 sunVec; +uniform float far; +uniform int frameCounter; +uniform float rainStrength; +uniform float sunElevation; +uniform ivec2 eyeBrightnessSmooth; +uniform float frameTimeCounter; +uniform int isEyeInWater; +uniform vec2 texelSize; + + +uniform float isWastes; +uniform float isWarpedForest; +uniform float isCrimsonForest; +uniform float isSoulValley; +uniform float isBasaltDelta; + + +#include "lib/waterOptions.glsl" +#include "lib/color_transforms.glsl" +#include "lib/color_dither.glsl" +#include "lib/projections.glsl" +#include "lib/sky_gradient.glsl" +#define fsign(a) (clamp((a)*1e35,0.,1.)*2.-1.) + +float interleaved_gradientNoise(){ + return fract(52.9829189*fract(0.06711056*gl_FragCoord.x + 0.00583715*gl_FragCoord.y)+tempOffsets); +} + + +float phaseg(float x, float g){ + float gg = g * g; + return (gg * -0.25 + 0.25) * pow(-2.0 * (g * x) + (gg + 1.0), -1.5) /3.14; +} +float phaseRayleigh(float cosTheta) { + const vec2 mul_add = vec2(0.1, 0.28) /acos(-1.0); + return cosTheta * mul_add.x + mul_add.y; // optimized version from [Elek09], divided by 4 pi for energy conservation +} + +float densityAtPos(in vec3 pos) +{ + + pos /= 18.; + pos.xz *= 0.5; + + + vec3 p = floor(pos); + vec3 f = fract(pos); + + f = (f*f) * (3.-2.*f); + + vec2 uv = p.xz + f.xz + p.y * vec2(0.0,193.0); + + vec2 coord = uv / 512.0; + + vec2 xy = texture2D(noisetex, coord).yx; + + return mix(xy.r,xy.g, f.y); +} +// float cloudVol(in vec3 pos){ + +// vec3 samplePos = pos*vec3(1.0,1./32.,1.0)*5.0+frameTimeCounter*vec3(0.5,0.,0.5)*1.; +// float noise = densityAtPos(samplePos*12.); +// float unifCov = exp2(-max(pos.y-SEA_LEVEL,0.0)/50.); + +// float cloud = pow(clamp(1.0-noise-0.76,0.0,1.0),2.)+0.005; + +// return cloud; +// } + +float cloudVol(in vec3 pos){ + + // float[4] BiomeParams = float[4]( + // /*[0] Cloudy amount */ isWastes*5 + isWarpedForest*0 + isCrimsonForest*0 + isSoulValley + isBasaltDelta*2 + // /*[1] uniform amount*/ ,isWastes*0 + isWarpedForest*0.005 + isCrimsonForest*0.005 + isSoulValley*0.5 + isBasaltDelta*0 + // /*[2] uniform height*/ ,isWastes*3 + isWarpedForest*100 + isCrimsonForest*100 + isSoulValley*2 + isBasaltDelta + // /*[3] cloudy height*/ ,isWastes*20 + isWarpedForest + isCrimsonForest + isSoulValley*100 + isBasaltDelta*100 + // ); + + // cloudy fog shapes + vec3 samplePos = pos*vec3(1.0,1./48.,1.0); + + samplePos.x += frameTimeCounter*2.0; + float cloudy_fog_erosion = densityAtPos(samplePos * 200.0); + + samplePos += cloudy_fog_erosion; + + samplePos.y -= frameTimeCounter*0.2; + float main_cloudy_fog = densityAtPos(samplePos * 50.0); + + float final = main_cloudy_fog/100.0; + return final; +} + +mat2x3 getVolumetricRays(float dither,vec3 fragpos) { + + //project pixel position into projected shadowmap space + vec3 wpos = mat3(gbufferModelViewInverse) * fragpos + gbufferModelViewInverse[3].xyz; + vec3 fragposition = mat3(shadowModelView) * wpos + shadowModelView[3].xyz; + fragposition = diagonal3(shadowProjection) * fragposition + shadowProjection[3].xyz; + + + + //project view origin into projected shadowmap space + vec3 start = toShadowSpaceProjected(vec3(0.)); + + + //rayvector into projected shadow map space + //we can use a projected vector because its orthographic projection + //however we still have to send it to curved shadow map space every step + vec3 dV = (fragposition-start); + vec3 dVWorld = (wpos-gbufferModelViewInverse[3].xyz); + + float maxLength = min(length(dVWorld),far)/length(dVWorld); + dV *= maxLength; + dVWorld *= maxLength; + + //apply dither + vec3 progress = start.xyz; + vec3 progressW = gbufferModelViewInverse[3].xyz+cameraPosition; + vec3 vL = vec3(0.); + + float SdotV = dot(sunVec,normalize(fragpos))*lightCol.a; + float dL = length(dVWorld); + //Mie phase + somewhat simulates multiple scattering (Horizon zero down cloud approx) + float mie = max(phaseg(SdotV,fog_mieg1),1.0/13.0); + float rayL = phaseRayleigh(SdotV); + // wpos.y = clamp(wpos.y,0.0,1.0); + + vec3 ambientCoefs = dVWorld/dot(abs(dVWorld),vec3(1.)); + + vec3 ambientLight = ambientUp; + ambientLight += ambientDown; + ambientLight += ambientRight; + ambientLight += ambientLeft; + ambientLight += ambientB; + ambientLight += ambientF; + + vec3 skyCol0 = ambientLight*8.*2./150./3.*Ambient_Mult*3.1415; + + float mu = 1.0; + float muS = 1.05; + vec3 absorbance = vec3(1.0); + float expFactor = 11.0; + + vec3 fogColor = clamp(gl_Fog.color.rgb*pow(luma(gl_Fog.color.rgb),-0.75)*0.65,0.0,1.0)*0.05; + + // float testcolor = clamp(exp2(-max(progressW.y-25,0.0)/5) ,0,1); + // fogColor = mix(fogColor, vec3(0,1,0), testcolor); + + for (int i=0;i 0.99; + vec2 refractedCoord = texcoord; + + vec3 fragpos = toScreenSpace(vec3(texcoord-vec2(0.0)*texelSize*0.5,z)); + vec3 fragpos2 = toScreenSpace(vec3(texcoord-vec2(0.0)*texelSize*0.5,z2)); + // vec3 np3 = mat3(gbufferModelViewInverse) * fragpos + gbufferModelViewInverse[3].xyz + cameraPosition; + + vec3 p3 = mat3(gbufferModelViewInverse) * fragpos; + vec3 np3 = normVec(p3); + + + if (iswater){ + float norm = getWaterHeightmap(np3.xz*1.71, 4.0, 0.25, 1.0); + float displ = norm/(length(fragpos)/far)/35.; + refractedCoord += displ; + + if (texture2D(colortex7,refractedCoord).a < 0.99) + refractedCoord = texcoord; + + } + + + vec3 color = texture2D(colortex3,refractedCoord).rgb; + if (frDepth > 2.5/far || transparencies.a < 0.99) // Discount fix for transparencies through hand + color = color*(1.0-transparencies.a)+transparencies.rgb*10.; + + float dirtAmount = Dirt_Amount; + vec3 waterEpsilon = vec3(Water_Absorb_R, Water_Absorb_G, Water_Absorb_B); + vec3 dirtEpsilon = vec3(Dirt_Absorb_R, Dirt_Absorb_G, Dirt_Absorb_B); + vec3 totEpsilon = dirtEpsilon*dirtAmount + waterEpsilon; + + color *= vl.a; + + + // vec3 fogColor = clamp(gl_Fog.color.rgb*pow(luma(gl_Fog.color.rgb),-0.75)*0.65,0.0,1.0)*0.05; + + //cave fog + if (isEyeInWater == 0){ + vec3 fogColor = clamp(gl_Fog.color.rgb,0.0,1.0) * 8. * (1.0-vl.a); + + float fogdistfade = clamp(length(fragpos)/far, 0.0, 1.0); + + float fogfade = clamp(exp((1.0 - np3.y)*4 - 8),0.0,1.0); + + // float fog = 1.0 - clamp( exp2(-pow(length(fragpos / far),10.)*4.0) ,0.0,1.0); + + float fog = clamp( pow(length(fragpos / far),0.5) ,0.0,1.0); + + color.rgb = mix(color.rgb, fogColor * fogfade , fog ) ; + vl.a *= 1.0 - fogdistfade; + } + // underwater fog + if (isEyeInWater == 1){ + // color.rgb *= exp(-length(fragpos)/2*totEpsilon); + // vl.a *= (dot(exp(-length(fragpos)/1.2*totEpsilon),vec3(0.2,0.7,0.1)))*0.5+0.5; + + float fogfade = clamp(exp(-length(fragpos) /12 ) ,0.0,1.0); + float fogcolfade = clamp(exp(np3.y*1.5 - 1.5),0.0,1.0); + color.rgb *= fogfade; + color.rgb = color.rgb * (1.0 + vec3(0.0,0.1,0.2) * 12 * (1.0 - fogfade)) + (vec3(0.0,0.1,0.2) * 0.5 * (1.0 - fogfade))*fogcolfade; + + vl.a *= fogfade*0.75 +0.25; + } + /// lava. + if (isEyeInWater == 2){ + color.rgb = vec3(4.0,0.5,0.1); + } + /// powdered snow + if (isEyeInWater == 3){ + color.rgb = mix(color.rgb,vec3(10,15,20),clamp(length(fragpos)*0.5,0.,1.)); + vl.a = 0.0; + } + // blidnesss + color.rgb *= mix(1.0, clamp(1.5-pow(length(fragpos2)*(blindness*0.2),2.0),0.0,1.0), blindness); + // darkness effect + color.rgb *= mix(1.0, (1.0-darknessLightFactor*2.0) * clamp(1.0-pow(length(fragpos2)*(darknessFactor*0.07),2.0),0.0,1.0), darknessFactor); + + + // float BiomeParams = isWastes + isWarpedForest + isCrimsonForest + isSoulValley + isBasaltDelta ; + + gl_FragData[0] = vec4(vl.a, 0.0, 0.0, 0.0); + gl_FragData[1].rgb = clamp(color,6.11*1e-5,65000.0); + + #ifdef display_LUT + gl_FragData[1].rgb = texture2D(colortex4,texcoord*0.45).rgb * 0.000035; + #endif +} diff --git a/shaders/world-1/composite6.vsh b/shaders/world-1/composite6.vsh new file mode 100644 index 0000000..05cecb7 --- /dev/null +++ b/shaders/world-1/composite6.vsh @@ -0,0 +1,19 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + +varying vec2 texcoord; +flat varying vec3 zMults; +uniform float far; +uniform float near; +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + zMults = vec3(1.0/(far * near),far+near,far-near); + gl_Position = ftransform(); + texcoord = gl_MultiTexCoord0.xy; + +} diff --git a/shaders/world-1/composite8.fsh b/shaders/world-1/composite8.fsh new file mode 100644 index 0000000..dd85629 --- /dev/null +++ b/shaders/world-1/composite8.fsh @@ -0,0 +1,320 @@ +#version 120 +//Temporal Anti-Aliasing + Dynamic exposure calculations (vertex shader) + +#extension GL_EXT_gpu_shader4 : enable + +#define TAA //if disabled you should increase most samples counts as I rely on TAA to filter noise + +//#define FAST_TAA //disables bicubic resampling and closest velocity, improves fps especially at high resolutions + +//TAA OPTIONS +//#define NO_CLIP //Removes all anti-ghosting techniques used and creates a sharp image (good for still screenshots) +#define BLEND_FACTOR 0.05 //[0.01 0.02 0.03 0.04 0.05 0.06 0.08 0.1 0.12 0.14 0.16] higher values = more flickering but sharper image, lower values = less flickering but the image will be blurrier +#define MOTION_REJECTION 0.5 //[0.0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.5] //Higher values=sharper image in motion at the cost of flickering +#define ANTI_GHOSTING 1.0 //[0.0 0.25 0.5 0.75 1.0] High values reduce ghosting but may create flickering +#define FLICKER_REDUCTION 0.75 //[0.0 0.25 0.5 0.75 1.0] High values reduce flickering but may reduce sharpness +#define CLOSEST_VELOCITY //improves edge quality in motion at the cost of performance + + +const int noiseTextureResolution = 32; + + +/* +const int colortex0Format = RGBA16F; // low res clouds (deferred->composite2) + low res VL (composite5->composite15) +const int colortex1Format = RGBA16; //terrain gbuffer (gbuffer->composite2) +const int colortex2Format = RGBA16F; //forward + transparencies (gbuffer->composite4) +const int colortex3Format = R11F_G11F_B10F; //frame buffer + bloom (deferred6->final) +const int colortex4Format = RGBA16F; //light values and skyboxes (everything) +const int colortex5Format = R11F_G11F_B10F; //TAA buffer (everything) +const int colortex6Format = R11F_G11F_B10F; //additionnal buffer for bloom (composite3->final) +const int colortex7Format = RGBA8; //Final output, transparencies id (gbuffer->composite4) +*/ +//no need to clear the buffers, saves a few fps +const bool colortex0Clear = false; +const bool colortex1Clear = false; +const bool colortex2Clear = true; +const bool colortex3Clear = false; +const bool colortex4Clear = false; +const bool colortex5Clear = false; +const bool colortex6Clear = false; +const bool colortex7Clear = false; + +varying vec2 texcoord; +flat varying float exposureA; +flat varying float tempOffsets; +uniform sampler2D colortex3; +uniform sampler2D colortex5; +uniform sampler2D depthtex0; + +uniform vec2 texelSize; +uniform float frameTimeCounter; +uniform float viewHeight; +uniform float viewWidth; +uniform vec3 previousCameraPosition; +uniform mat4 gbufferPreviousModelView; +#define fsign(a) (clamp((a)*1e35,0.,1.)*2.-1.) +#include "lib/projections.glsl" + + +float luma(vec3 color) { + return dot(color,vec3(0.21, 0.72, 0.07)); +} +float interleaved_gradientNoise(){ + return fract(52.9829189*fract(0.06711056*gl_FragCoord.x + 0.00583715*gl_FragCoord.y)+tempOffsets); +} +float triangularize(float dither) +{ + float center = dither*2.0-1.0; + dither = center*inversesqrt(abs(center)); + return clamp(dither-fsign(center),0.0,1.0); +} +vec3 fp10Dither(vec3 color,float dither){ + const vec3 mantissaBits = vec3(6.,6.,5.); + vec3 exponent = floor(log2(color)); + return color + dither*exp2(-mantissaBits)*exp2(exponent); +} + + +//returns the projected coordinates of the closest point to the camera in the 3x3 neighborhood +vec3 closestToCamera3x3() +{ + vec2 du = vec2(texelSize.x, 0.0); + vec2 dv = vec2(0.0, texelSize.y); + + vec3 dtl = vec3(texcoord,0.) + vec3(-texelSize, texture2D(depthtex0, texcoord - dv - du).x); + vec3 dtc = vec3(texcoord,0.) + vec3( 0.0, -texelSize.y, texture2D(depthtex0, texcoord - dv).x); + vec3 dtr = vec3(texcoord,0.) + vec3( texelSize.x, -texelSize.y, texture2D(depthtex0, texcoord - dv + du).x); + + vec3 dml = vec3(texcoord,0.) + vec3(-texelSize.x, 0.0, texture2D(depthtex0, texcoord - du).x); + vec3 dmc = vec3(texcoord,0.) + vec3( 0.0, 0.0, texture2D(depthtex0, texcoord).x); + vec3 dmr = vec3(texcoord,0.) + vec3( texelSize.x, 0.0, texture2D(depthtex0, texcoord + du).x); + + vec3 dbl = vec3(texcoord,0.) + vec3(-texelSize.x, texelSize.y, texture2D(depthtex0, texcoord + dv - du).x); + vec3 dbc = vec3(texcoord,0.) + vec3( 0.0, texelSize.y, texture2D(depthtex0, texcoord + dv).x); + vec3 dbr = vec3(texcoord,0.) + vec3( texelSize.x, texelSize.y, texture2D(depthtex0, texcoord + dv + du).x); + + vec3 dmin = dmc; + + dmin = dmin.z > dtc.z? dtc : dmin; + dmin = dmin.z > dtr.z? dtr : dmin; + + dmin = dmin.z > dml.z? dml : dmin; + dmin = dmin.z > dtl.z? dtl : dmin; + dmin = dmin.z > dmr.z? dmr : dmin; + + dmin = dmin.z > dbl.z? dbl : dmin; + dmin = dmin.z > dbc.z? dbc : dmin; + dmin = dmin.z > dbr.z? dbr : dmin; + + return dmin; +} + +//Modified texture interpolation from inigo quilez +vec4 smoothfilter(in sampler2D tex, in vec2 uv) +{ + vec2 textureResolution = vec2(viewWidth,viewHeight); + uv = uv*textureResolution + 0.5; + vec2 iuv = floor( uv ); + vec2 fuv = fract( uv ); + #ifndef SMOOTHESTSTEP_INTERPOLATION + uv = iuv + (fuv*fuv)*(3.0-2.0*fuv); + #endif + #ifdef SMOOTHESTSTEP_INTERPOLATION + uv = iuv + fuv*fuv*fuv*(fuv*(fuv*6.0-15.0)+10.0); + #endif + uv = (uv - 0.5)/textureResolution; + return texture2D( tex, uv); +} +//Due to low sample count we "tonemap" the inputs to preserve colors and smoother edges +vec3 weightedSample(sampler2D colorTex, vec2 texcoord){ + vec3 wsample = texture2D(colorTex,texcoord).rgb*exposureA; + return wsample/(1.0+luma(wsample)); + +} + + +//from : https://gist.github.com/TheRealMJP/c83b8c0f46b63f3a88a5986f4fa982b1 +vec4 SampleTextureCatmullRom(sampler2D tex, vec2 uv, vec2 texSize ) +{ + // We're going to sample a a 4x4 grid of texels surrounding the target UV coordinate. We'll do this by rounding + // down the sample location to get the exact center of our "starting" texel. The starting texel will be at + // location [1, 1] in the grid, where [0, 0] is the top left corner. + vec2 samplePos = uv * texSize; + vec2 texPos1 = floor(samplePos - 0.5) + 0.5; + + // Compute the fractional offset from our starting texel to our original sample location, which we'll + // feed into the Catmull-Rom spline function to get our filter weights. + vec2 f = samplePos - texPos1; + + // Compute the Catmull-Rom weights using the fractional offset that we calculated earlier. + // These equations are pre-expanded based on our knowledge of where the texels will be located, + // which lets us avoid having to evaluate a piece-wise function. + vec2 w0 = f * ( -0.5 + f * (1.0 - 0.5*f)); + vec2 w1 = 1.0 + f * f * (-2.5 + 1.5*f); + vec2 w2 = f * ( 0.5 + f * (2.0 - 1.5*f) ); + vec2 w3 = f * f * (-0.5 + 0.5 * f); + + // Work out weighting factors and sampling offsets that will let us use bilinear filtering to + // simultaneously evaluate the middle 2 samples from the 4x4 grid. + vec2 w12 = w1 + w2; + vec2 offset12 = w2 / (w1 + w2); + + // Compute the final UV coordinates we'll use for sampling the texture + vec2 texPos0 = texPos1 - vec2(1.0); + vec2 texPos3 = texPos1 + vec2(2.0); + vec2 texPos12 = texPos1 + offset12; + + texPos0 *= texelSize; + texPos3 *= texelSize; + texPos12 *= texelSize; + + vec4 result = vec4(0.0); + result += texture2D(tex, vec2(texPos0.x, texPos0.y)) * w0.x * w0.y; + result += texture2D(tex, vec2(texPos12.x, texPos0.y)) * w12.x * w0.y; + result += texture2D(tex, vec2(texPos3.x, texPos0.y)) * w3.x * w0.y; + + result += texture2D(tex, vec2(texPos0.x, texPos12.y)) * w0.x * w12.y; + result += texture2D(tex, vec2(texPos12.x, texPos12.y)) * w12.x * w12.y; + result += texture2D(tex, vec2(texPos3.x, texPos12.y)) * w3.x * w12.y; + + result += texture2D(tex, vec2(texPos0.x, texPos3.y)) * w0.x * w3.y; + result += texture2D(tex, vec2(texPos12.x, texPos3.y)) * w12.x * w3.y; + result += texture2D(tex, vec2(texPos3.x, texPos3.y)) * w3.x * w3.y; + + return result; +} +//approximation from SMAA presentation from siggraph 2016 +vec3 FastCatmulRom(sampler2D colorTex, vec2 texcoord, vec4 rtMetrics, float sharpenAmount) +{ + vec2 position = rtMetrics.zw * texcoord; + vec2 centerPosition = floor(position - 0.5) + 0.5; + vec2 f = position - centerPosition; + vec2 f2 = f * f; + vec2 f3 = f * f2; + + float c = sharpenAmount; + vec2 w0 = -c * f3 + 2.0 * c * f2 - c * f; + vec2 w1 = (2.0 - c) * f3 - (3.0 - c) * f2 + 1.0; + vec2 w2 = -(2.0 - c) * f3 + (3.0 - 2.0 * c) * f2 + c * f; + vec2 w3 = c * f3 - c * f2; + + vec2 w12 = w1 + w2; + vec2 tc12 = rtMetrics.xy * (centerPosition + w2 / w12); + vec3 centerColor = texture2D(colorTex, vec2(tc12.x, tc12.y)).rgb; + + vec2 tc0 = rtMetrics.xy * (centerPosition - 1.0); + vec2 tc3 = rtMetrics.xy * (centerPosition + 2.0); + vec4 color = vec4(texture2D(colorTex, vec2(tc12.x, tc0.y )).rgb, 1.0) * (w12.x * w0.y ) + + vec4(texture2D(colorTex, vec2(tc0.x, tc12.y)).rgb, 1.0) * (w0.x * w12.y) + + vec4(centerColor, 1.0) * (w12.x * w12.y) + + vec4(texture2D(colorTex, vec2(tc3.x, tc12.y)).rgb, 1.0) * (w3.x * w12.y) + + vec4(texture2D(colorTex, vec2(tc12.x, tc3.y )).rgb, 1.0) * (w12.x * w3.y ); + return color.rgb/color.a; + +} + +vec3 clip_aabb(vec3 q,vec3 aabb_min, vec3 aabb_max) + { + vec3 p_clip = 0.5 * (aabb_max + aabb_min); + vec3 e_clip = 0.5 * (aabb_max - aabb_min) + 0.00000001; + + vec3 v_clip = q - vec3(p_clip); + vec3 v_unit = v_clip.xyz / e_clip; + vec3 a_unit = abs(v_unit); + float ma_unit = max(a_unit.x, max(a_unit.y, a_unit.z)); + + if (ma_unit > 1.0) + return vec3(p_clip) + v_clip / ma_unit; + else + return q; + } +vec3 toClipSpace3Prev(vec3 viewSpacePosition) { + return projMAD(gbufferPreviousProjection, viewSpacePosition) / -viewSpacePosition.z * 0.5 + 0.5; +} + +vec3 TAA_hq(){ + //use velocity from the nearest texel from camera in a 3x3 box in order to improve edge quality in motion + #ifdef CLOSEST_VELOCITY + vec3 closestToCamera = closestToCamera3x3(); + #endif + + #ifndef CLOSEST_VELOCITY + vec3 closestToCamera = vec3(texcoord,texture2D(depthtex0,texcoord).x); + #endif + + //reproject previous frame + vec3 fragposition = toScreenSpace(closestToCamera); + fragposition = mat3(gbufferModelViewInverse) * fragposition + gbufferModelViewInverse[3].xyz + (cameraPosition - previousCameraPosition); + vec3 previousPosition = mat3(gbufferPreviousModelView) * fragposition + gbufferPreviousModelView[3].xyz; + previousPosition = toClipSpace3Prev(previousPosition); + vec2 velocity = previousPosition.xy - closestToCamera.xy; + previousPosition.xy = texcoord + velocity; + + //to reduce error propagation caused by interpolation during history resampling, we will introduce back some aliasing in motion + vec2 d = 0.5-abs(fract(previousPosition.xy*vec2(viewWidth,viewHeight)-texcoord*vec2(viewWidth,viewHeight))-0.5); + float mixFactor = dot(d,d); + float rej = mixFactor*MOTION_REJECTION; + //reject history if off-screen and early exit + if (previousPosition.x < 0.0 || previousPosition.y < 0.0 || previousPosition.x > 1.0 || previousPosition.y > 1.0) return texture2D(colortex3, texcoord).rgb; + + //Samples current frame 3x3 neighboorhood + vec3 albedoCurrent0 = texture2D(colortex3, texcoord).rgb; + vec3 albedoCurrent1 = texture2D(colortex3, texcoord + vec2(texelSize.x,texelSize.y)).rgb; + vec3 albedoCurrent2 = texture2D(colortex3, texcoord + vec2(texelSize.x,-texelSize.y)).rgb; + vec3 albedoCurrent3 = texture2D(colortex3, texcoord + vec2(-texelSize.x,-texelSize.y)).rgb; + vec3 albedoCurrent4 = texture2D(colortex3, texcoord + vec2(-texelSize.x,texelSize.y)).rgb; + vec3 albedoCurrent5 = texture2D(colortex3, texcoord + vec2(0.0,texelSize.y)).rgb; + vec3 albedoCurrent6 = texture2D(colortex3, texcoord + vec2(0.0,-texelSize.y)).rgb; + vec3 albedoCurrent7 = texture2D(colortex3, texcoord + vec2(-texelSize.x,0.0)).rgb; + vec3 albedoCurrent8 = texture2D(colortex3, texcoord + vec2(texelSize.x,0.0)).rgb; + + #ifndef NO_CLIP + //Assuming the history color is a blend of the 3x3 neighborhood, we clamp the history to the min and max of each channel in the 3x3 neighborhood + vec3 cMax = max(max(max(albedoCurrent0,albedoCurrent1),albedoCurrent2),max(albedoCurrent3,max(albedoCurrent4,max(albedoCurrent5,max(albedoCurrent6,max(albedoCurrent7,albedoCurrent8)))))); + vec3 cMin = min(min(min(albedoCurrent0,albedoCurrent1),albedoCurrent2),min(albedoCurrent3,min(albedoCurrent4,min(albedoCurrent5,min(albedoCurrent6,min(albedoCurrent7,albedoCurrent8)))))); + + + vec3 albedoPrev = FastCatmulRom(colortex5, previousPosition.xy,vec4(texelSize, 1.0/texelSize), 0.82).xyz; + vec3 finalcAcc = clamp(albedoPrev,cMin,cMax); + + + + //increases blending factor if history is far away from aabb, reduces ghosting at the cost of some flickering + float isclamped = distance(albedoPrev,finalcAcc)/luma(albedoPrev); + + //reduces blending factor if current texel is far from history, reduces flickering + float lumDiff2 = distance(albedoPrev,albedoCurrent0)/luma(albedoPrev); + lumDiff2 = 1.0-clamp(lumDiff2*lumDiff2,0.,1.)*FLICKER_REDUCTION; + + //Blend current pixel with clamped history + vec3 supersampled = mix(finalcAcc,albedoCurrent0,clamp(BLEND_FACTOR*lumDiff2+rej+isclamped*ANTI_GHOSTING+0.01,0.,1.)); + #endif + + + #ifdef NO_CLIP + vec3 albedoPrev = texture2D(colortex5, previousPosition.xy).xyz; + vec3 supersampled = mix(albedoPrev,albedoCurrent0,clamp(0.05,0.,1.)); + #endif + + //De-tonemap + return supersampled; +} + +void main() { + +/* DRAWBUFFERS:5 */ +gl_FragData[0].a = 1.0; + #ifdef TAA + vec3 color = TAA_hq(); + gl_FragData[0].rgb = clamp(fp10Dither(color,triangularize(interleaved_gradientNoise())),6.11*1e-5,65000.0); + #endif + #ifndef TAA + vec3 color = clamp(fp10Dither(texture2D(colortex3,texcoord).rgb,triangularize(interleaved_gradientNoise())),0.,65000.); + gl_FragData[0].rgb = color; + #endif + + + + + +} diff --git a/shaders/world-1/composite8.vsh b/shaders/world-1/composite8.vsh new file mode 100644 index 0000000..24ef8ce --- /dev/null +++ b/shaders/world-1/composite8.vsh @@ -0,0 +1,17 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + + +varying vec2 texcoord; +flat varying float exposureA; +flat varying float tempOffsets; +uniform sampler2D colortex4; +uniform int frameCounter; +#include "/lib/util.glsl" +void main() { + + tempOffsets = HaltonSeq2(frameCounter%10000); + gl_Position = ftransform(); + texcoord = gl_MultiTexCoord0.xy; + exposureA = texelFetch2D(colortex4,ivec2(10,37),0).r; +} diff --git a/shaders/world-1/composite9.fsh b/shaders/world-1/composite9.fsh new file mode 100644 index 0000000..517bfe5 --- /dev/null +++ b/shaders/world-1/composite9.fsh @@ -0,0 +1,53 @@ +#version 120 +//downsample 1st pass (half res) for bloom + +uniform sampler2D colortex5; +uniform sampler2D colortex8; +uniform vec2 texelSize; +uniform float viewWidth; +uniform float viewHeight; +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + +/* DRAWBUFFERS:3 */ +vec2 resScale = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.))/vec2(1920.,1080.); +vec2 quarterResTC = gl_FragCoord.xy*2.*resScale*texelSize; + +float emissives = texture2D(colortex8,quarterResTC).a; +if(emissives == 1.0) emissives = 0.0; +emissives *= 5; + //0.5 + gl_FragData[0] = texture2D(colortex5,quarterResTC-1.0*vec2(texelSize.x,texelSize.y))/4.*0.5; + gl_FragData[0] += texture2D(colortex5,quarterResTC+1.0*vec2(texelSize.x,texelSize.y))/4.*0.5; + gl_FragData[0] += texture2D(colortex5,quarterResTC+vec2(-1.0*texelSize.x,1.0*texelSize.y))/4.*0.5; + gl_FragData[0] += texture2D(colortex5,quarterResTC+vec2(1.0*texelSize.x,-1.0*texelSize.y))/4.*0.5; + + //0.25 + gl_FragData[0] += texture2D(colortex5,quarterResTC-2.0*vec2(texelSize.x,0.0))/2.*0.125; + gl_FragData[0] += texture2D(colortex5,quarterResTC+2.0*vec2(0.0,texelSize.y))/2.*0.125; + gl_FragData[0] += texture2D(colortex5,quarterResTC+2.0*vec2(0,-texelSize.y))/2*0.125; + gl_FragData[0] += texture2D(colortex5,quarterResTC+2.0*vec2(-texelSize.x,0.0))/2*0.125; + + //0.125 + gl_FragData[0] += texture2D(colortex5,quarterResTC-2.0*vec2(texelSize.x,texelSize.y))/4.*0.125; + gl_FragData[0] += texture2D(colortex5,quarterResTC+2.0*vec2(texelSize.x,texelSize.y))/4.*0.125; + gl_FragData[0] += texture2D(colortex5,quarterResTC+vec2(-2.0*texelSize.x,2.0*texelSize.y))/4.*0.125; + gl_FragData[0] += texture2D(colortex5,quarterResTC+vec2(2.0*texelSize.x,-2.0*texelSize.y))/4.*0.125; + + //0.125 + gl_FragData[0] += texture2D(colortex5,quarterResTC)*0.125; + + gl_FragData[0].rgb = clamp(gl_FragData[0].rgb,0.0,65000.); + + // gl_FragData[0].rgb += gl_FragData[0].rgb*emissives; + + + if (quarterResTC.x > 1.0 - 3.5*texelSize.x || quarterResTC.y > 1.0 -3.5*texelSize.y || quarterResTC.x < 3.5*texelSize.x || quarterResTC.y < 3.5*texelSize.y) gl_FragData[0].rgb = vec3(0.0); + + +} diff --git a/shaders/world-1/composite9.vsh b/shaders/world-1/composite9.vsh new file mode 100644 index 0000000..386f006 --- /dev/null +++ b/shaders/world-1/composite9.vsh @@ -0,0 +1,17 @@ +#version 120 + +uniform float viewWidth; +uniform float viewHeight; +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + //Improves performances and makes sure bloom radius stays the same at high resolution (>1080p) + vec2 clampedRes = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.)); + gl_Position = ftransform(); + //*0.51 to avoid errors when sampling outside since clearing is disabled + gl_Position.xy = (gl_Position.xy*0.5+0.5)*0.51/clampedRes*vec2(1920.0,1080.)*2.0-1.0; +} diff --git a/shaders/world-1/deferred.fsh b/shaders/world-1/deferred.fsh new file mode 100644 index 0000000..5745d9d --- /dev/null +++ b/shaders/world-1/deferred.fsh @@ -0,0 +1,141 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + + +//Prepares sky textures (2 * 256 * 256), computes light values and custom lightmaps +#define Ambient_Mult 1.0 //[0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.5 2.0 3.0 4.0 5.0 6.0 10.0] +#define Sky_Brightness 1.0 //[0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.5 2.0 3.0 4.0 5.0 6.0 10.0] +#define MIN_LIGHT_AMOUNT 1.0 //[0.0 0.5 1.0 1.5 2.0 3.0 4.0 5.0] +#define TORCH_AMOUNT 1.0 //[0.0 0.5 0.75 1. 1.2 1.4 1.6 1.8 2.0] +#define TORCH_R 1.0 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +#define TORCH_G 0.75 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +#define TORCH_B 0.5 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] + + +flat varying vec3 ambientUp; +flat varying vec3 ambientLeft; +flat varying vec3 ambientRight; +flat varying vec3 ambientB; +flat varying vec3 ambientF; +flat varying vec3 ambientDown; +flat varying vec3 lightSourceColor; +flat varying vec3 sunColor; +flat varying vec3 sunColorCloud; +flat varying vec3 moonColor; +flat varying vec3 moonColorCloud; +flat varying vec3 zenithColor; +flat varying vec3 avgSky; +flat varying vec2 tempOffsets; +flat varying float exposure; +flat varying float rodExposure; +flat varying float avgBrightness; +flat varying float exposureF; +flat varying float fogAmount; +flat varying float VFAmount; + +uniform sampler2D colortex4; +uniform sampler2D noisetex; + +uniform int frameCounter; +uniform float rainStrength; +uniform float eyeAltitude; +uniform vec3 sunVec; +uniform vec2 texelSize; +uniform float frameTimeCounter; +uniform mat4 gbufferProjection; +uniform mat4 gbufferProjectionInverse; +uniform mat4 gbufferPreviousProjection; +uniform mat4 gbufferModelViewInverse; +uniform mat4 gbufferModelView; +uniform mat4 shadowModelView; +uniform mat4 shadowProjection; +uniform float sunElevation; +uniform vec3 cameraPosition; +uniform float far; +uniform ivec2 eyeBrightnessSmooth; +#include "/lib/util.glsl" +#include "/lib/ROBOBO_sky.glsl" +vec3 toShadowSpaceProjected(vec3 p3){ + p3 = mat3(gbufferModelViewInverse) * p3 + gbufferModelViewInverse[3].xyz; + p3 = mat3(shadowModelView) * p3 + shadowModelView[3].xyz; + p3 = diagonal3(shadowProjection) * p3 + shadowProjection[3].xyz; + + return p3; +} +float interleaved_gradientNoise(){ + vec2 coord = gl_FragCoord.xy; + float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)+frameCounter/1.6180339887); + return noise; +} +float blueNoise(){ + return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); +} +vec4 lightCol = vec4(lightSourceColor, float(sunElevation > 1e-5)*2-1.); +const float[17] Slightmap = float[17](14.0,17.,19.0,22.0,24.0,28.0,31.0,40.0,60.0,79.0,93.0,110.0,132.0,160.0,197.0,249.0,249.0); + +void main() { +/* DRAWBUFFERS:4 */ +gl_FragData[0] = vec4(0.0); +float minLight = MIN_LIGHT_AMOUNT * 0.007/ (exposure + rodExposure/(rodExposure+1.0)*exposure*1.); +vec3 minLight_col = MIN_LIGHT_AMOUNT * 0.007/ (exposure + rodExposure/(rodExposure+1.0)*exposure*1.) * vec3(0.8,0.9,1.0); +//Lightmap for forward shading (contains average integrated sky color across all faces + torch + min ambient) +vec3 avgAmbient = (ambientUp + ambientLeft + ambientRight + ambientB + ambientF + ambientDown)/6.; +if (gl_FragCoord.x < 17. && gl_FragCoord.y < 17.){ + float torchLut = clamp(16.0-gl_FragCoord.x,0.5,15.5); + torchLut = torchLut+0.712; + float torch_lightmap = max(1.0/torchLut/torchLut - 1/17.212/17.212,0.0); + torch_lightmap = pow(torch_lightmap*2.5,1.5)*TORCH_AMOUNT*10.; + float sky_lightmap = (Slightmap[int(gl_FragCoord.y)]-14.0)/235.; + sky_lightmap = pow(sky_lightmap,1.4); + vec3 ambient = avgAmbient*sky_lightmap+torch_lightmap*vec3(TORCH_R,TORCH_G,TORCH_B)*TORCH_AMOUNT; + + gl_FragData[0] = vec4(ambient*Ambient_Mult,1.0); +} + +//Lightmap for deferred shading (contains only torch + min ambient) +if (gl_FragCoord.x < 17. && gl_FragCoord.y > 19. && gl_FragCoord.y < 19.+17. ){ + float torchLut = clamp(16.0-gl_FragCoord.x,0.5,15.5); + torchLut = torchLut+0.712; + float torch_lightmap = max(1.0/torchLut/torchLut - 1/17.212/17.212,0.0); + float ambient = pow(torch_lightmap*2.5,1.5)*TORCH_AMOUNT*10.; + float sky_lightmap = (Slightmap[int(gl_FragCoord.y-19.0)]-14.0)/235./150.; + + gl_FragData[0] = vec4(sky_lightmap,ambient,minLight,1.0)*Ambient_Mult; +} + +//Save light values +if (gl_FragCoord.x < 1. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1 ) +gl_FragData[0] = vec4(ambientUp,1.0); +if (gl_FragCoord.x > 1. && gl_FragCoord.x < 2. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1 ) +gl_FragData[0] = vec4(ambientDown,1.0); +if (gl_FragCoord.x > 2. && gl_FragCoord.x < 3. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1 ) +gl_FragData[0] = vec4(ambientLeft,1.0); +if (gl_FragCoord.x > 3. && gl_FragCoord.x < 4. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1 ) +gl_FragData[0] = vec4(ambientRight,1.0); +if (gl_FragCoord.x > 4. && gl_FragCoord.x < 5. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1 ) +gl_FragData[0] = vec4(ambientB,1.0); +if (gl_FragCoord.x > 5. && gl_FragCoord.x < 6. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1 ) +gl_FragData[0] = vec4(ambientF,1.0); +if (gl_FragCoord.x > 6. && gl_FragCoord.x < 7. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1 ) +gl_FragData[0] = vec4(lightSourceColor,1.0); +if (gl_FragCoord.x > 7. && gl_FragCoord.x < 8. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1 ) +gl_FragData[0] = vec4(avgAmbient,1.0); + +//Sky gradient (no clouds) +const float pi = 3.141592653589793238462643383279502884197169; +if (gl_FragCoord.x > 18. && gl_FragCoord.y > 1. && gl_FragCoord.x < 18+257){ + gl_FragData[0] = vec4(vec3(1.0,0.4,0.12)*100.,1.0); +} + +//Temporally accumulate sky and light values +vec3 temp = texelFetch2D(colortex4,ivec2(gl_FragCoord.xy),0).rgb; +vec3 curr = gl_FragData[0].rgb*150.; +gl_FragData[0].rgb = clamp(mix(temp,curr,0.06),0.0,65000.); + +//Exposure values +if (gl_FragCoord.x > 10. && gl_FragCoord.x < 11. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1 ) +gl_FragData[0] = vec4(exposure,avgBrightness,exposureF,1.0); +if (gl_FragCoord.x > 14. && gl_FragCoord.x < 15. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1 ) +gl_FragData[0] = vec4(rodExposure,0.0,0.0,1.0); + +} diff --git a/shaders/world-1/deferred.vsh b/shaders/world-1/deferred.vsh new file mode 100644 index 0000000..2c5b20a --- /dev/null +++ b/shaders/world-1/deferred.vsh @@ -0,0 +1,206 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable +#define EXPOSURE_MULTIPLIER 1.0 //[0.25 0.4 0.5 0.6 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.1 1.2 1.3 1.4 1.5 2.0 3.0 4.0] +#define AUTO_EXPOSURE //Highly recommended to keep it on unless you want to take screenshots +#define Manual_exposure_value 1.0 // [0.000553 0.000581 0.000611 0.000642 0.000675 0.000710 0.000746 0.000784 0.000825 0.000867 0.000911 0.000958 0.001007 0.001059 0.001113 0.001170 0.001230 0.001294 0.001360 0.001430 0.001503 0.001580 0.001661 0.001746 0.001836 0.001930 0.002029 0.002133 0.002242 0.002357 0.002478 0.002605 0.002739 0.002879 0.003027 0.003182 0.003345 0.003517 0.003697 0.003887 0.004086 0.004296 0.004516 0.004748 0.004991 0.005247 0.005516 0.005799 0.006096 0.006409 0.006737 0.007083 0.007446 0.007828 0.008229 0.008651 0.009095 0.009561 0.010051 0.010567 0.011108 0.011678 0.012277 0.012906 0.013568 0.014264 0.014995 0.015764 0.016572 0.017422 0.018315 0.019254 0.020241 0.021279 0.022370 0.023517 0.024723 0.025991 0.027323 0.028724 0.030197 0.031745 0.033373 0.035084 0.036883 0.038774 0.040762 0.042852 0.045049 0.047358 0.049787 0.052339 0.055023 0.057844 0.060810 0.063927 0.067205 0.070651 0.074273 0.078081 0.082084 0.086293 0.090717 0.095369 0.100258 0.105399 0.110803 0.116484 0.122456 0.128734 0.135335 0.142274 0.149568 0.157237 0.165298 0.173773 0.182683 0.192049 0.201896 0.212247 0.223130 0.234570 0.246596 0.259240 0.272531 0.286504 0.301194 0.316636 0.332871 0.349937 0.367879 0.386741 0.406569 0.427414 0.449328 0.472366 0.496585 0.522045 0.548811 0.576949 0.606530 0.637628 0.670320 0.704688 0.740818 0.778800 0.818730 0.860707 0.904837 0.951229 1.0 1.051271 1.105170 1.161834 1.221402 1.284025 1.349858 1.419067 1.491824 1.568312 1.648721 1.733253 1.822118 1.915540 2.013752 2.117000 2.225540 2.339646 2.459603 2.585709 2.718281 2.857651 3.004166 3.158192 3.320116 3.490342 3.669296 3.857425 4.055199 4.263114 4.481689 4.711470 4.953032 5.206979 5.473947 5.754602 6.049647 6.359819 6.685894 7.028687 7.389056 7.767901 8.166169 8.584858 9.025013 9.487735 9.974182 10.48556 11.02317 11.58834 12.18249 ] +#define Exposure_Speed 1.0 //[0.25 0.5 0.75 1.0 1.25 1.5 1.75 2.0 2.25 2.5 2.75 3.0 4.0 5.0] +#define CLOUDS_SHADOWS +#define BASE_FOG_AMOUNT 1.0 //[0.0 0.2 0.4 0.6 0.8 1.0 1.25 1.5 1.75 2.0 3.0 4.0 5.0 10.0 20.0 30.0 50.0 100.0 150.0 200.0] Base fog amount amount (does not change the "cloudy" fog) +#define CLOUDY_FOG_AMOUNT 1.0 //[0.0 0.2 0.4 0.6 0.8 1.0 1.25 1.5 1.75 2.0 3.0 4.0 5.0] +#define FOG_TOD_MULTIPLIER 1.0 //[0.0 0.2 0.4 0.6 0.8 1.0 1.25 1.5 1.75 2.0 3.0 4.0 5.0] //Influence of time of day on fog amount +#define FOG_RAIN_MULTIPLIER 1.0 //[0.0 0.2 0.4 0.6 0.8 1.0 1.25 1.5 1.75 2.0 3.0 4.0 5.0] //Influence of rain on fog amount +flat varying vec3 ambientUp; +flat varying vec3 ambientLeft; +flat varying vec3 ambientRight; +flat varying vec3 ambientB; +flat varying vec3 ambientF; +flat varying vec3 ambientDown; +flat varying vec3 zenithColor; +flat varying vec3 sunColor; +flat varying vec3 sunColorCloud; +flat varying vec3 moonColor; +flat varying vec3 moonColorCloud; +flat varying vec3 lightSourceColor; +flat varying vec3 avgSky; +flat varying vec2 tempOffsets; +flat varying float exposure; +flat varying float avgBrightness; +flat varying float exposureF; +flat varying float rodExposure; +flat varying float fogAmount; +flat varying float VFAmount; + +uniform sampler2D colortex4; +uniform sampler2D colortex6; + +uniform mat4 gbufferModelViewInverse; +uniform vec3 sunPosition; +uniform vec2 texelSize; +uniform float rainStrength; +uniform float sunElevation; +uniform float nightVision; +uniform float frameTime; +uniform float eyeAltitude; +uniform int frameCounter; +uniform int worldTime; +vec3 sunVec = vec3(0.0,1.0,0.0); + + + +#include "lib/sky_gradient.glsl" +#include "/lib/util.glsl" +#include "/lib/ROBOBO_sky.glsl" +vec3 rodSample(vec2 Xi) +{ + float r = sqrt(1.0f - Xi.x*Xi.y); + float phi = 2 * 3.14159265359 * Xi.y; + + return normalize(vec3(cos(phi) * r, sin(phi) * r, Xi.x)).xzy; +} +vec3 cosineHemisphereSample(vec2 Xi) +{ + float r = sqrt(Xi.x); + float theta = 2.0 * 3.14159265359 * Xi.y; + + float x = r * cos(theta); + float y = r * sin(theta); + + return vec3(x, y, sqrt(clamp(1.0 - Xi.x,0.,1.))); +} + +float luma(vec3 color) { + return dot(color,vec3(0.21, 0.72, 0.07)); +} +vec3 toLinear(vec3 sRGB){ + return sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878); +} + + +vec2 tapLocation(int sampleNumber,int nb, float nbRot,float jitter) +{ + float alpha = float(sampleNumber+jitter)/nb; + float angle = (jitter+alpha) * (nbRot * 6.28); + + float ssR = alpha; + float sin_v, cos_v; + + sin_v = sin(angle); + cos_v = cos(angle); + + return vec2(cos_v, sin_v)*ssR; +} +//Low discrepancy 2D sequence, integration error is as low as sobol but easier to compute : http://extremelearning.com.au/unreasonable-effectiveness-of-quasirandom-sequences/ +vec2 R2_samples(int n){ + vec2 alpha = vec2(0.75487765, 0.56984026); + return fract(alpha * n); +} +void main() { + + gl_Position = ftransform()*0.5+0.5; + gl_Position.xy = gl_Position.xy*vec2(18.+258*2,258.)*texelSize; + gl_Position.xy = gl_Position.xy*2.-1.0; + + tempOffsets = R2_samples(frameCounter%10000); + + ambientUp = vec3(0.0); + ambientDown = vec3(0.0); + ambientLeft = vec3(0.0); + ambientRight = vec3(0.0); + ambientB = vec3(0.0); + ambientF = vec3(0.0); + avgSky = vec3(0.0); + + + + //Fake bounced sunlight + vec3 bouncedSun = clamp(gl_Fog.color.rgb*pow(luma(gl_Fog.color.rgb),-0.75)*0.65,0.0,1.0)/4000.*0.08; + ambientUp += bouncedSun*clamp(-sunVec.y+5.,0.,6.0); + ambientLeft += bouncedSun*clamp(sunVec.x+5.,0.0,6.); + ambientRight += bouncedSun*clamp(-sunVec.x+5.,0.0,6.); + ambientB += bouncedSun*clamp(-sunVec.z+5.,0.0,6.); + ambientF += bouncedSun*clamp(sunVec.z+5.,0.0,6.); + ambientDown += bouncedSun*clamp(sunVec.y+5.,0.0,6.); + + + float avgLuma = 0.0; + float m2 = 0.0; + int n=100; + vec2 clampedRes = max(1.0/texelSize,vec2(1920.0,1080.)); + float avgExp = 0.0; + vec2 resScale = vec2(1920.,1080.)/clampedRes; + float v[25]; + float temp; + // 5x5 Median filter by morgan mcguire + // We take the median value of the most blurred bloom buffer + #define s2(a, b) temp = a; a = min(a, b); b = max(temp, b); + #define t2(a, b) s2(v[a], v[b]); + #define t24(a, b, c, d, e, f, g, h) t2(a, b); t2(c, d); t2(e, f); t2(g, h); + #define t25(a, b, c, d, e, f, g, h, i, j) t24(a, b, c, d, e, f, g, h); t2(i, j); + for (int i = 0; i < 5; i++){ + for (int j = 0; j < 5; j++){ + vec2 tc = 0.5 + vec2(i-2,j-2)/2.0 * 0.35; + v[i+j*5] = luma(texture2D(colortex6,tc/128. * resScale+vec2(0.484375*resScale.x+10.5*texelSize.x,.0)).rgb); + } + } + t25(0, 1, 3, 4, 2, 4, 2, 3, 6, 7); + t25(5, 7, 5, 6, 9, 7, 1, 7, 1, 4); + t25(12, 13, 11, 13, 11, 12, 15, 16, 14, 16); + t25(14, 15, 18, 19, 17, 19, 17, 18, 21, 22); + t25(20, 22, 20, 21, 23, 24, 2, 5, 3, 6); + t25(0, 6, 0, 3, 4, 7, 1, 7, 1, 4); + t25(11, 14, 8, 14, 8, 11, 12, 15, 9, 15); + t25(9, 12, 13, 16, 10, 16, 10, 13, 20, 23); + t25(17, 23, 17, 20, 21, 24, 18, 24, 18, 21); + t25(19, 22, 8, 17, 9, 18, 0, 18, 0, 9); + t25(10, 19, 1, 19, 1, 10, 11, 20, 2, 20); + t25(2, 11, 12, 21, 3, 21, 3, 12, 13, 22); + t25(4, 22, 4, 13, 14, 23, 5, 23, 5, 14); + t25(15, 24, 6, 24, 6, 15, 7, 16, 7, 19); + t25(3, 11, 5, 17, 11, 17, 9, 17, 4, 10); + t25(6, 12, 7, 14, 4, 6, 4, 7, 12, 14); + t25(10, 14, 6, 7, 10, 12, 6, 10, 6, 17); + t25(12, 17, 7, 17, 7, 10, 12, 18, 7, 12); + t24(10, 18, 12, 20, 10, 20, 10, 12); + avgExp = v[12]; // Median value + + + avgBrightness = clamp(mix(avgExp,texelFetch2D(colortex4,ivec2(10,37),0).g,0.95),0.00003051757,65000.0); + + float currentExposure = texelFetch2D(colortex4,ivec2(10,37),0).b; + float L = max(avgBrightness,1e-8); + float keyVal = 1.03-2.0/(log(L+1.0)/log(10.0)+2.0); + float targetExposure = 1.0*keyVal/L; + + float targetrodExposure = clamp(log(targetExposure*2.0+1.0)-0.1,0.0,2.0); + float currentrodExposure = texelFetch2D(colortex4,ivec2(14,37),0).r; + + targetExposure = clamp(targetExposure,2.0,3.0); + float rad = sqrt(currentExposure); + float rtarget = sqrt(targetExposure); + float dir = sign(rtarget-rad); + float dist = abs(rtarget-rad); + float maxApertureChange = 0.0032*frameTime/0.016666*(Exposure_Speed*2) * exp2(max(rad,rtarget)*0.5); + + maxApertureChange *= 1.0+nightVision*4.; + rad = rad+dir*min(dist,maxApertureChange); + + exposureF = rad*rad; + exposure=exposureF*EXPOSURE_MULTIPLIER; + + + dir = sign(targetrodExposure-currentrodExposure); + dist = abs(targetrodExposure-currentrodExposure); + maxApertureChange = 0.0032*frameTime/0.016666*(Exposure_Speed*2) * exp2(max(rad,rtarget)*0.5); + + rodExposure = currentrodExposure + dir * min(dist,maxApertureChange); + + #ifndef AUTO_EXPOSURE + exposure = Manual_exposure_value; + rodExposure = clamp(log(Manual_exposure_value*2.0+1.0)-0.1,0.0,2.0); + #endif + float modWT = (worldTime%24000)*1.0; + + float fogAmount0 = 1/3000.+FOG_TOD_MULTIPLIER*(1/180.*(clamp(modWT-11000.,0.,2000.0)/2000.+(1.0-clamp(modWT,0.,3000.0)/3000.))*(clamp(modWT-11000.,0.,2000.0)/2000.+(1.0-clamp(modWT,0.,3000.0)/3000.)) + 1/200.*clamp(modWT-13000.,0.,1000.0)/1000.*(1.0-clamp(modWT-23000.,0.,1000.0)/1000.)); + VFAmount = CLOUDY_FOG_AMOUNT*(fogAmount0*fogAmount0+FOG_RAIN_MULTIPLIER*1.8/20000.*rainStrength); + fogAmount = BASE_FOG_AMOUNT*(fogAmount0+max(FOG_RAIN_MULTIPLIER*1/15.*rainStrength , FOG_TOD_MULTIPLIER*1/50.*clamp(modWT-13000.,0.,1000.0)/1000.*(1.0-clamp(modWT-23000.,0.,1000.0)/1000.))); +} diff --git a/shaders/world-1/final.fsh b/shaders/world-1/final.fsh new file mode 100644 index 0000000..2388d11 --- /dev/null +++ b/shaders/world-1/final.fsh @@ -0,0 +1,100 @@ +#version 120 +//Vignetting, applies bloom, applies exposure and tonemaps the final image +#extension GL_EXT_gpu_shader4 : enable +//#define BICUBIC_UPSCALING //Provides a better interpolation when using a render quality different of 1.0, slower +#define CONTRAST_ADAPTATIVE_SHARPENING +#define SHARPENING 0.35 //[0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 ] +#define SATURATION 0.00 // Negative values desaturates colors, Positive values saturates color, 0 is no change [-1.0 -0.98 -0.96 -0.94 -0.92 -0.9 -0.88 -0.86 -0.84 -0.82 -0.8 -0.78 -0.76 -0.74 -0.72 -0.7 -0.68 -0.66 -0.64 -0.62 -0.6 -0.58 -0.56 -0.54 -0.52 -0.5 -0.48 -0.46 -0.44 -0.42 -0.4 -0.38 -0.36 -0.34 -0.32 -0.3 -0.28 -0.26 -0.24 -0.22 -0.2 -0.18 -0.16 -0.14 -0.12 -0.1 -0.08 -0.06 -0.04 -0.02 0.0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.2 0.22 0.24 0.26 0.28 0.3 0.32 0.34 0.36 0.38 0.4 0.42 0.44 0.46 0.48 0.5 0.52 0.54 0.56 0.58 0.6 0.62 0.64 0.66 0.68 0.7 0.72 0.74 0.76 0.78 0.8 0.82 0.84 0.86 0.88 0.9 0.92 0.94 0.96 0.98 1.0 ] +#define CROSSTALK 0.0 // Desaturates bright colors and preserves saturation in darker areas (inverted if negative). Helps avoiding almsost fluorescent colors [-1.0 -0.98 -0.96 -0.94 -0.92 -0.9 -0.88 -0.86 -0.84 -0.82 -0.8 -0.78 -0.76 -0.74 -0.72 -0.7 -0.68 -0.66 -0.64 -0.62 -0.6 -0.58 -0.56 -0.54 -0.52 -0.5 -0.48 -0.46 -0.44 -0.42 -0.4 -0.38 -0.36 -0.34 -0.32 -0.3 -0.28 -0.26 -0.24 -0.22 -0.2 -0.18 -0.16 -0.14 -0.12 -0.1 -0.08 -0.06 -0.04 -0.02 0.0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.2 0.22 0.24 0.26 0.28 0.3 0.32 0.34 0.36 0.38 0.4 0.42 0.44 0.46 0.48 0.5 0.52 0.54 0.56 0.58 0.6 0.62 0.64 0.66 0.68 0.7 0.72 0.74 0.76 0.78 0.8 0.82 0.84 0.86 0.88 0.9 0.92 0.94 0.96 0.98 1.0 ] +varying vec2 texcoord; + +uniform sampler2D colortex7; +uniform vec2 texelSize; +uniform float viewWidth; +uniform float viewHeight; +uniform float frameTimeCounter; +uniform int frameCounter; +uniform int isEyeInWater; +#include "lib/color_transforms.glsl" +#include "lib/color_dither.glsl" +#include "/lib/res_params.glsl" +vec4 SampleTextureCatmullRom(sampler2D tex, vec2 uv, vec2 texSize ) +{ + // We're going to sample a a 4x4 grid of texels surrounding the target UV coordinate. We'll do this by rounding + // down the sample location to get the exact center of our "starting" texel. The starting texel will be at + // location [1, 1] in the grid, where [0, 0] is the top left corner. + vec2 samplePos = uv * texSize; + vec2 texPos1 = floor(samplePos - 0.5) + 0.5; + + // Compute the fractional offset from our starting texel to our original sample location, which we'll + // feed into the Catmull-Rom spline function to get our filter weights. + vec2 f = samplePos - texPos1; + + // Compute the Catmull-Rom weights using the fractional offset that we calculated earlier. + // These equations are pre-expanded based on our knowledge of where the texels will be located, + // which lets us avoid having to evaluate a piece-wise function. + vec2 w0 = f * ( -0.5 + f * (1.0 - 0.5*f)); + vec2 w1 = 1.0 + f * f * (-2.5 + 1.5*f); + vec2 w2 = f * ( 0.5 + f * (2.0 - 1.5*f) ); + vec2 w3 = f * f * (-0.5 + 0.5 * f); + + // Work out weighting factors and sampling offsets that will let us use bilinear filtering to + // simultaneously evaluate the middle 2 samples from the 4x4 grid. + vec2 w12 = w1 + w2; + vec2 offset12 = w2 / (w1 + w2); + + // Compute the final UV coordinates we'll use for sampling the texture + vec2 texPos0 = texPos1 - vec2(1.0); + vec2 texPos3 = texPos1 + vec2(2.0); + vec2 texPos12 = texPos1 + offset12; + + texPos0 *= texelSize; + texPos3 *= texelSize; + texPos12 *= texelSize; + + vec4 result = vec4(0.0); + result += texture2D(tex, vec2(texPos0.x, texPos0.y)) * w0.x * w0.y; + result += texture2D(tex, vec2(texPos12.x, texPos0.y)) * w12.x * w0.y; + result += texture2D(tex, vec2(texPos3.x, texPos0.y)) * w3.x * w0.y; + + result += texture2D(tex, vec2(texPos0.x, texPos12.y)) * w0.x * w12.y; + result += texture2D(tex, vec2(texPos12.x, texPos12.y)) * w12.x * w12.y; + result += texture2D(tex, vec2(texPos3.x, texPos12.y)) * w3.x * w12.y; + + result += texture2D(tex, vec2(texPos0.x, texPos3.y)) * w0.x * w3.y; + result += texture2D(tex, vec2(texPos12.x, texPos3.y)) * w12.x * w3.y; + result += texture2D(tex, vec2(texPos3.x, texPos3.y)) * w3.x * w3.y; + + return result; +} + +void main() { + #ifdef BICUBIC_UPSCALING + vec3 col = SampleTextureCatmullRom(colortex7,texcoord,1.0/texelSize).rgb; + #else + vec3 col = texture2D(colortex7,texcoord).rgb; + #endif + + #ifdef CONTRAST_ADAPTATIVE_SHARPENING + //Weights : 1 in the center, 0.5 middle, 0.25 corners + vec3 albedoCurrent1 = texture2D(colortex7, texcoord + vec2(texelSize.x,texelSize.y)/MC_RENDER_QUALITY*0.5).rgb; + vec3 albedoCurrent2 = texture2D(colortex7, texcoord + vec2(texelSize.x,-texelSize.y)/MC_RENDER_QUALITY*0.5).rgb; + vec3 albedoCurrent3 = texture2D(colortex7, texcoord + vec2(-texelSize.x,-texelSize.y)/MC_RENDER_QUALITY*0.5).rgb; + vec3 albedoCurrent4 = texture2D(colortex7, texcoord + vec2(-texelSize.x,texelSize.y)/MC_RENDER_QUALITY*0.5).rgb; + + + vec3 m1 = -0.5/3.5*col + albedoCurrent1/3.5 + albedoCurrent2/3.5 + albedoCurrent3/3.5 + albedoCurrent4/3.5; + vec3 std = abs(col - m1) + abs(albedoCurrent1 - m1) + abs(albedoCurrent2 - m1) + + abs(albedoCurrent3 - m1) + abs(albedoCurrent3 - m1) + abs(albedoCurrent4 - m1); + float contrast = 1.0 - luma(std)/5.0; + col = col*(1.0+(SHARPENING+UPSCALING_SHARPNENING)*contrast) + - (SHARPENING+UPSCALING_SHARPNENING)/(1.0-0.5/3.5)*contrast*(m1 - 0.5/3.5*col); + #endif + + float lum = luma(col); + vec3 diff = col-lum; + col = col + diff*(-lum*CROSSTALK + SATURATION); + //col = -vec3(-lum*CROSSFADING + SATURATION); + gl_FragColor.rgb = clamp(int8Dither(col,texcoord),0.0,1.0); + //gl_FragColor.rgb = vec3(contrast); +} diff --git a/shaders/world-1/final.vsh b/shaders/world-1/final.vsh new file mode 100644 index 0000000..7aeb51b --- /dev/null +++ b/shaders/world-1/final.vsh @@ -0,0 +1,23 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + +#define FinalR 1.0 //[0.0 0.025315 0.051271 0.077884 0.105170 0.133148 0.161834 0.191246 0.221402 0.252322 0.284025 0.316530 0.349858 0.384030 0.419067 0.454991 0.491824 0.529590 0.568312 0.608014 0.648721 0.690458 0.733253 0.777130 0.822118 0.868245 0.915540 0.964032 1.013752 1.064731 1.117000 1.170592 1.225540 1.281880 1.339646 1.398875 1.459603 1.521868 1.585709 1.651167 1.718281 1.787095 1.857651 1.929992 2.004166 2.080216 2.158192 2.238142 2.320116 2.404166 2.490342 2.578701 2.669296 2.762185 2.857425 2.955076 3.055199 3.157857 3.263114 3.371035 3.481689 3.595143 3.711470 3.830741 3.953032 4.078419 4.206979 4.338795 4.473947 4.612521 4.754602 4.900281 5.049647 5.202795 5.359819 5.520819 5.685894 5.855148 6.028687 6.206619 6.389056 6.576110 6.767901 6.964546 7.166169 7.372897 7.584858 7.802185 8.025013 8.253482 8.487735 8.727919 8.974182 9.226680 9.485569 9.751013 10.02317 10.30222 10.58834 10.88170 11.18249 ] +#define FinalG 1.0 //[0.0 0.025315 0.051271 0.077884 0.105170 0.133148 0.161834 0.191246 0.221402 0.252322 0.284025 0.316530 0.349858 0.384030 0.419067 0.454991 0.491824 0.529590 0.568312 0.608014 0.648721 0.690458 0.733253 0.777130 0.822118 0.868245 0.915540 0.964032 1.013752 1.064731 1.117000 1.170592 1.225540 1.281880 1.339646 1.398875 1.459603 1.521868 1.585709 1.651167 1.718281 1.787095 1.857651 1.929992 2.004166 2.080216 2.158192 2.238142 2.320116 2.404166 2.490342 2.578701 2.669296 2.762185 2.857425 2.955076 3.055199 3.157857 3.263114 3.371035 3.481689 3.595143 3.711470 3.830741 3.953032 4.078419 4.206979 4.338795 4.473947 4.612521 4.754602 4.900281 5.049647 5.202795 5.359819 5.520819 5.685894 5.855148 6.028687 6.206619 6.389056 6.576110 6.767901 6.964546 7.166169 7.372897 7.584858 7.802185 8.025013 8.253482 8.487735 8.727919 8.974182 9.226680 9.485569 9.751013 10.02317 10.30222 10.58834 10.88170 11.18249 ] +#define FinalB 1.0 //[0.0 0.025315 0.051271 0.077884 0.105170 0.133148 0.161834 0.191246 0.221402 0.252322 0.284025 0.316530 0.349858 0.384030 0.419067 0.454991 0.491824 0.529590 0.568312 0.608014 0.648721 0.690458 0.733253 0.777130 0.822118 0.868245 0.915540 0.964032 1.013752 1.064731 1.117000 1.170592 1.225540 1.281880 1.339646 1.398875 1.459603 1.521868 1.585709 1.651167 1.718281 1.787095 1.857651 1.929992 2.004166 2.080216 2.158192 2.238142 2.320116 2.404166 2.490342 2.578701 2.669296 2.762185 2.857425 2.955076 3.055199 3.157857 3.263114 3.371035 3.481689 3.595143 3.711470 3.830741 3.953032 4.078419 4.206979 4.338795 4.473947 4.612521 4.754602 4.900281 5.049647 5.202795 5.359819 5.520819 5.685894 5.855148 6.028687 6.206619 6.389056 6.576110 6.767901 6.964546 7.166169 7.372897 7.584858 7.802185 8.025013 8.253482 8.487735 8.727919 8.974182 9.226680 9.485569 9.751013 10.02317 10.30222 10.58834 10.88170 11.18249 ] + +varying vec2 texcoord; +flat varying vec4 exposure; +uniform sampler2D colortex4; + +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + + gl_Position = ftransform(); + texcoord = gl_MultiTexCoord0.xy; + exposure=vec4(texelFetch2D(colortex4,ivec2(10,37),0).r*vec3(FinalR,FinalG,FinalB),texelFetch2D(colortex4,ivec2(10,37),0).r); +} diff --git a/shaders/world-1/gbuffers_all_solid.fsh b/shaders/world-1/gbuffers_all_solid.fsh new file mode 100644 index 0000000..76e3e6c --- /dev/null +++ b/shaders/world-1/gbuffers_all_solid.fsh @@ -0,0 +1,411 @@ +#extension GL_EXT_gpu_shader4 : enable +#extension GL_ARB_shader_texture_lod : enable +//#define Specular_Reflections // reflections on blocks. REQUIRES A PBR RESOURCEPACK. +//#define POM +#define POM_MAP_RES 128.0 // [16.0 32.0 64.0 128.0 256.0 512.0 1024.0] Increase to improve POM quality +#define POM_DEPTH 0.1 // [0.025 0.05 0.075 0.1 0.125 0.15 0.20 0.25 0.30 0.50 0.75 1.0] //Increase to increase POM strength +#define MAX_ITERATIONS 50 // [5 10 15 20 25 30 40 50 60 70 80 90 100 125 150 200 400] //Improves quality at grazing angles (reduces performance) +#define MAX_DIST 25.0 // [5.0 10.0 15.0 20.0 25.0 30.0 40.0 50.0 60.0 70.0 80.0 90.0 100.0 125.0 150.0 200.0 400.0] //Increases distance at which POM is calculated +//#define USE_LUMINANCE_AS_HEIGHTMAP //Can generate POM on any texturepack (may look weird in some cases) +#define Texture_MipMap_Bias -1.00 // Uses a another mip level for textures. When reduced will increase texture detail but may induce a lot of shimmering. [-5.00 -4.75 -4.50 -4.25 -4.00 -3.75 -3.50 -3.25 -3.00 -2.75 -2.50 -2.25 -2.00 -1.75 -1.50 -1.25 -1.00 -0.75 -0.50 -0.25 0.00 0.25 0.50 0.75 1.00 1.25 1.50 1.75 2.00 2.25 2.50 2.75 3.00 3.25 3.50 3.75 4.00 4.25 4.50 4.75 5.00] +#define DISABLE_ALPHA_MIPMAPS //Disables mipmaps on the transparency of alpha-tested things like foliage, may cost a few fps in some cases + + +#define SSAO // screen-space ambient occlusion. +#define texture_ao // ambient occlusion on the texture + +#define Puddle_Size 1.0 // [0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5] +#ifdef Specular_Reflections + #define Puddles // yes +#else + // #define Puddles // yes +#endif +// #define Porosity + +#ifndef USE_LUMINANCE_AS_HEIGHTMAP +#ifndef MC_NORMAL_MAP +#undef POM +#endif +#endif + +#ifdef POM +#define MC_NORMAL_MAP +#endif + +const float mincoord = 1.0/4096.0; +const float maxcoord = 1.0-mincoord; +const vec3 intervalMult = vec3(1.0, 1.0, 1.0/POM_DEPTH)/POM_MAP_RES * 1.0; + +const float MAX_OCCLUSION_DISTANCE = MAX_DIST; +const float MIX_OCCLUSION_DISTANCE = MAX_DIST*0.9; +const int MAX_OCCLUSION_POINTS = MAX_ITERATIONS; + +uniform vec2 texelSize; +uniform int framemod8; + +#ifdef POM +varying vec4 vtexcoordam; // .st for add, .pq for mul +varying vec4 vtexcoord; + +#endif +#include "/lib/res_params.glsl" +varying vec4 lmtexcoord; +varying vec4 color; +uniform float far; +varying vec4 normalMat; +#ifdef MC_NORMAL_MAP +varying vec4 tangent; +uniform float wetness; +uniform sampler2D normals; +uniform sampler2D specular; +#endif + +#ifdef POM + vec2 dcdx = dFdx(vtexcoord.st*vtexcoordam.pq)*exp2(Texture_MipMap_Bias); + vec2 dcdy = dFdy(vtexcoord.st*vtexcoordam.pq)*exp2(Texture_MipMap_Bias); +#endif + +flat varying int lightningBolt; +uniform sampler2D texture; +uniform sampler2D colortex1;//albedo(rgb),material(alpha) RGBA16 +uniform float frameTimeCounter; +uniform int frameCounter; +uniform mat4 gbufferProjectionInverse; +uniform mat4 gbufferModelView; +uniform mat4 gbufferProjection; +uniform mat4 gbufferModelViewInverse; +uniform vec3 cameraPosition; +uniform float rainStrength; +uniform sampler2D noisetex;//depth +uniform sampler2D depthtex0; +in vec3 test_motionVectors; + +varying vec4 materialMask; + +flat varying vec4 TESTMASK; + +// float interleaved_gradientNoise(){ +// return fract(52.9829189*fract(0.06711056*gl_FragCoord.x + 0.00583715*gl_FragCoord.y)+frameTimeCounter*51.9521); +// } +float interleaved_gradientNoise(){ + vec2 alpha = vec2(0.75487765, 0.56984026); + vec2 coord = vec2(alpha.x * gl_FragCoord.x,alpha.y * gl_FragCoord.y)+ 1.0/1.6180339887 * frameCounter; + float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)); + return noise; +} + +float blueNoise(){ + return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); +} +float R2_dither(){ + vec2 alpha = vec2(0.75487765, 0.56984026); + return fract(alpha.x * gl_FragCoord.x + alpha.y * gl_FragCoord.y + 1.0/1.6180339887 * frameCounter) ; +} +vec2 decodeVec2(float a){ + const vec2 constant1 = 65535. / vec2( 256., 65536.); + const float constant2 = 256. / 255.; + return fract( a * constant1 ) * constant2 ; +} +mat3 inverse(mat3 m) { + float a00 = m[0][0], a01 = m[0][1], a02 = m[0][2]; + float a10 = m[1][0], a11 = m[1][1], a12 = m[1][2]; + float a20 = m[2][0], a21 = m[2][1], a22 = m[2][2]; + + float b01 = a22 * a11 - a12 * a21; + float b11 = -a22 * a10 + a12 * a20; + float b21 = a21 * a10 - a11 * a20; + + float det = a00 * b01 + a01 * b11 + a02 * b21; + + return mat3(b01, (-a22 * a01 + a02 * a21), (a12 * a01 - a02 * a11), + b11, (a22 * a00 - a02 * a20), (-a12 * a00 + a02 * a10), + b21, (-a21 * a00 + a01 * a20), (a11 * a00 - a01 * a10)) / det; +} + +vec3 viewToWorld(vec3 viewPosition) { + vec4 pos; + pos.xyz = viewPosition; + pos.w = 0.0; + pos = gbufferModelViewInverse * pos; + return pos.xyz; +} +vec3 worldToView(vec3 worldPos) { + vec4 pos = vec4(worldPos, 0.0); + pos = gbufferModelView * pos; + return pos.xyz; +} +vec4 encode (vec3 n, vec2 lightmaps){ + n.xy = n.xy / dot(abs(n), vec3(1.0)); + n.xy = n.z <= 0.0 ? (1.0 - abs(n.yx)) * sign(n.xy) : n.xy; + vec2 encn = clamp(n.xy * 0.5 + 0.5,-1.0,1.0); + + return vec4(encn,vec2(lightmaps.x,lightmaps.y)); +} + + +#ifdef MC_NORMAL_MAP + // vec3 applyBump(mat3 tbnMatrix, vec3 bump){ + // float bumpmult = 1.0; + // bump = bump * vec3(bumpmult, bumpmult, bumpmult) + vec3(0.0f, 0.0f, 1.0f - bumpmult); + // return normalize(bump*tbnMatrix); + // } + vec3 applyBump(mat3 tbnMatrix, vec3 bump, float puddle_values){ + float bumpmult = clamp(puddle_values,0.0,1.0); + bump = bump * vec3(bumpmult, bumpmult, bumpmult) + vec3(0.0f, 0.0f, 1.0f - bumpmult); + return normalize(bump*tbnMatrix); + } +#endif + +//encoding by jodie +float encodeVec2(vec2 a){ + const vec2 constant1 = vec2( 1., 256.) / 65535.; + vec2 temp = floor( a * 255. ); + return temp.x*constant1.x+temp.y*constant1.y; +} +float encodeVec2(float x,float y){ + return encodeVec2(vec2(x,y)); +} + +#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) +#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) + +vec3 toScreenSpace(vec3 p) { + vec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); + vec3 p3 = p * 2. - 1.; + vec4 fragposition = iProjDiag * p3.xyzz + gbufferProjectionInverse[3]; + return fragposition.xyz / fragposition.w; +} +vec3 toClipSpace3(vec3 viewSpacePosition) { + return projMAD(gbufferProjection, viewSpacePosition) / -viewSpacePosition.z * 0.5 + 0.5; +} +#ifdef POM +vec4 readNormal(in vec2 coord) +{ + return texture2DGradARB(normals,fract(coord)*vtexcoordam.pq+vtexcoordam.st,dcdx,dcdy); +} +vec4 readTexture(in vec2 coord) +{ + return texture2DGradARB(texture,fract(coord)*vtexcoordam.pq+vtexcoordam.st,dcdx,dcdy); +} +#endif +float luma(vec3 color) { + return dot(color,vec3(0.21, 0.72, 0.07)); +} + + +vec3 toLinear(vec3 sRGB){ + return sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878); +} + + +const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); + + + + +// float getPuddleCoverage(vec3 samplePos){ +// float puddle = texture2D(noisetex, samplePos.xz/25000).b ; + +// return max(puddle,0.0); +// } + +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +/* RENDERTARGETS: 1,7,8,13 */ +void main() { + + #ifdef BLOCK_ENT + gl_FragData[3] = TESTMASK; + #endif + + float phi = 2 * 3.14159265359; + float noise = fract(fract(frameCounter * (1.0 / phi)) + interleaved_gradientNoise() ) ; + + vec3 normal = normalMat.xyz; + + #ifdef MC_NORMAL_MAP + vec3 tangent2 = normalize(cross(tangent.rgb,normal)*tangent.w); + mat3 tbnMatrix = mat3(tangent.x, tangent2.x, normal.x, + tangent.y, tangent2.y, normal.y, + tangent.z, tangent2.z, normal.z); + #endif + vec2 tempOffset=offsets[framemod8]; + + vec3 fragpos = toScreenSpace(gl_FragCoord.xyz*vec3(texelSize/RENDER_SCALE,1.0)-vec3(vec2(tempOffset)*texelSize*0.5,0.0)); + + + + vec3 worldpos = mat3(gbufferModelViewInverse) * fragpos + gbufferModelViewInverse[3].xyz + cameraPosition; + float lightmap = clamp( (lmtexcoord.w-0.66) * 5.0,0.,1.); + + float rainfall = 0. ; + float Puddle_shape = 0.; + float puddle_shiny = 1.; + float puddle_normal = 0.; + + #ifndef ENTITIES + #ifdef WORLD + #ifdef Puddles + rainfall = rainStrength ; + Puddle_shape = 1.0 - max(texture2D(noisetex, worldpos.xz * (0.015 * Puddle_Size)).b - (1.0-lightmap) ,0.0); + puddle_shiny = clamp( pow(1.0-Puddle_shape,2.0)*2,0.5,1.) ; + puddle_normal = clamp( pow(Puddle_shape,5.0) * 50. ,0.,1.) ; + #endif + #endif + #endif + + #ifdef POM + // vec2 tempOffset=offsets[framemod8]; + vec2 adjustedTexCoord = fract(vtexcoord.st)*vtexcoordam.pq+vtexcoordam.st; + // vec3 fragpos = toScreenSpace(gl_FragCoord.xyz*vec3(texelSize/RENDER_SCALE,1.0)-vec3(vec2(tempOffset)*texelSize*0.5,0.0)); + vec3 viewVector = normalize(tbnMatrix*fragpos); + float dist = length(fragpos); + + gl_FragDepth = gl_FragCoord.z; + + #ifdef WORLD + if (dist < MAX_OCCLUSION_DISTANCE) { + + if ( viewVector.z < 0.0 && readNormal(vtexcoord.st).a < 0.9999 && readNormal(vtexcoord.st).a > 0.00001) { + + vec3 interval = viewVector.xyz /-viewVector.z/MAX_OCCLUSION_POINTS*POM_DEPTH; + vec3 coord = vec3(vtexcoord.st, 1.0); + coord += noise*interval; + float sumVec = noise; + for (int loopCount = 0; (loopCount < MAX_OCCLUSION_POINTS) && (1.0 - POM_DEPTH + POM_DEPTH*readNormal(coord.st).a < coord.p) && coord.p >= 0.0; ++loopCount) { coord = coord+interval; sumVec += 1.0; } + + if (coord.t < mincoord) { + if (readTexture(vec2(coord.s,mincoord)).a == 0.0) { + coord.t = mincoord; + discard; + } + } + adjustedTexCoord = mix(fract(coord.st)*vtexcoordam.pq+vtexcoordam.st, adjustedTexCoord, max(dist-MIX_OCCLUSION_DISTANCE,0.0)/(MAX_OCCLUSION_DISTANCE-MIX_OCCLUSION_DISTANCE)); + + vec3 truePos = fragpos + sumVec*inverse(tbnMatrix)*interval; + // #ifdef Depth_Write_POM + gl_FragDepth = toClipSpace3(truePos).z; + // #endif + } + } + #endif + + // color + vec4 data0 = texture2DGradARB(texture, adjustedTexCoord.xy,dcdx,dcdy); + + #ifdef DISABLE_ALPHA_MIPMAPS + data0.a = texture2DGradARB(texture, adjustedTexCoord.xy,vec2(0.),vec2(0.0)).a; + #endif + + data0.rgb *= color.rgb; + float avgBlockLum = luma(texture2DLod(texture, lmtexcoord.xy,128).rgb*color.rgb); + data0.rgb = clamp(data0.rgb*pow(avgBlockLum,-0.33)*0.85,0.0,1.0); + + + #ifdef WORLD + if (data0.a > 0.1) data0.a = normalMat.a; + else data0.a = 0.0; + #endif + + #ifdef HAND + if (data0.a > 0.1) data0.a = 0.75; + else data0.a = 0.0; + #endif + + // normal + #ifdef MC_NORMAL_MAP + vec3 normalTex = texture2DGradARB(normals, adjustedTexCoord.xy, dcdx,dcdy).rgb; + normalTex.xy = normalTex.xy*2.0-1.0; + normalTex.z = clamp(sqrt(1.0 - dot(normalTex.xy, normalTex.xy)),0.0,1.0); + normal = applyBump(tbnMatrix,normalTex, mix(1.0,puddle_normal,rainfall)); + #endif + + // specular + gl_FragData[2] = texture2DGradARB(specular, adjustedTexCoord.xy,dcdx,dcdy); + + // finalize + vec4 data1 = clamp(encode(viewToWorld(normal), lmtexcoord.zw),0.,1.0); + gl_FragData[0] = vec4(encodeVec2(data0.x,data1.x),encodeVec2(data0.y,data1.y),encodeVec2(data0.z,data1.z),encodeVec2(data1.w,data0.w)); + + gl_FragData[1].a = 0.0; + + #else + // specular + vec4 specular = texture2D(specular, lmtexcoord.xy, Texture_MipMap_Bias).rgba; + vec4 specular_modded = vec4( max(specular.r,puddle_shiny), max(specular.g, puddle_shiny*0.1),specular.ba); + gl_FragData[2].rgba = mix(specular, specular_modded, rainfall); + + float porosity = specular.z >= 64.5/255.0 ? 0.0 : (specular.z*255.0/64.0)*0.65; + #ifndef Porosity + porosity = 0.4; + #endif + // normal + #ifdef MC_NORMAL_MAP + vec4 normalTex = texture2D(normals, lmtexcoord.xy, Texture_MipMap_Bias).rgba; + normalTex.xy = normalTex.xy*2.0-1.0; + normalTex.z = clamp(sqrt(1.0 - dot(normalTex.xy, normalTex.xy)),0.0,1.0) ; + normal = applyBump(tbnMatrix, normalTex.xyz, mix(1.0,puddle_normal, rainfall) ); + #endif + + // color + vec4 data0 = texture2D(texture, lmtexcoord.xy, Texture_MipMap_Bias) ; + + data0.rgb *= mix(color.rgb, vec3(0.0), max((puddle_shiny*porosity)*0.5,0) * rainfall ); + + + + float avgBlockLum = luma(texture2DLod(texture, lmtexcoord.xy,128).rgb*color.rgb); + data0.rgb = clamp(data0.rgb*pow(avgBlockLum,-0.33)*0.85,0.0,1.0); + + #ifndef ENTITIES + if(TESTMASK.r==255) data0.rgb = vec3(0); + #endif + + #ifdef DISABLE_ALPHA_MIPMAPS + data0.a = texture2DLod(texture,lmtexcoord.xy,0).a; + #endif + #ifdef WORLD + if (data0.a > 0.1) data0.a = normalMat.a; + else data0.a = 0.0; + + #endif + #ifdef HAND + if (data0.a > 0.1) data0.a = 0.75; + else data0.a = 0.0; + #endif + + // finalize + vec4 data1 = clamp(blueNoise()/255.0 + encode(viewToWorld(normal), lmtexcoord.zw),0.0,1.0); + gl_FragData[0] = vec4(encodeVec2(data0.x,data1.x), encodeVec2(data0.y,data1.y), encodeVec2(data0.z,data1.z), encodeVec2(data1.w,data0.w)); + + #ifdef WORLD + gl_FragData[1].a = 0.0; + #endif + + #endif + + + + #ifdef ENTITIES + #ifdef WORLD + gl_FragData[3].xyz = test_motionVectors; + #endif + #endif + // float z = texture2D(depthtex0,texcoord).x; + // vec3 fragpos = toScreenSpace(vec3(texcoord,z)); + // gl_FragData[0].rgb *= vec3(1- clamp( pow( length(fragpos)/far, 1), 0, 1)) ; + + + +} \ No newline at end of file diff --git a/shaders/world-1/gbuffers_all_solid.vsh b/shaders/world-1/gbuffers_all_solid.vsh new file mode 100644 index 0000000..aba1be6 --- /dev/null +++ b/shaders/world-1/gbuffers_all_solid.vsh @@ -0,0 +1,213 @@ +#extension GL_EXT_gpu_shader4 : enable +#include "/lib/res_params.glsl" +#define WAVY_PLANTS +#define WAVY_STRENGTH 1.0 //[0.1 0.25 0.5 0.75 1.0 1.25 1.5 1.75 2.0] +#define WAVY_SPEED 1.0 //[0.001 0.01 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 1.0 1.25 1.5 2.0 3.0 4.0] +#define SEPARATE_AO +//#define POM +//#define USE_LUMINANCE_AS_HEIGHTMAP //Can generate POM on any texturepack (may look weird in some cases) +// #define RTAO // I recommend turning ambientOcclusionLevel to zero with this on. like ssao, but rt, nicer, noiser, and slower. SSAO will turn OFF when this is ON +#define indirect_effect 1 // Choose what effect is applied to indirect light. [0 1 2 3] + +#define Variable_Penumbra_Shadows //Makes the shadows more blurry the more distant they are to objects (costs fps) +#define mob_SSS + +#ifndef USE_LUMINANCE_AS_HEIGHTMAP +#ifndef MC_NORMAL_MAP +#undef POM +#endif +#endif + +#ifdef POM +#define MC_NORMAL_MAP +#endif + +/* +!! DO NOT REMOVE !! +This code is from Chocapic13' shaders +Read the terms of modification and sharing before changing something below please ! +!! DO NOT REMOVE !! +*/ + +varying vec4 lmtexcoord; +varying vec4 color; +varying vec4 normalMat; +#ifdef POM +varying vec4 vtexcoordam; // .st for add, .pq for mul +varying vec4 vtexcoord; +#endif + +#ifdef MC_NORMAL_MAP + varying vec4 tangent; + attribute vec4 at_tangent; +#endif + +out vec3 test_motionVectors; +in vec3 at_velocity; + +uniform float frameTimeCounter; +const float PI48 = 150.796447372*WAVY_SPEED; +float pi2wt = PI48*frameTimeCounter; +attribute vec4 mc_Entity; +uniform int blockEntityId; +uniform int entityId; +varying vec4 materialMask; +flat varying vec4 TESTMASK; +flat varying int lightningBolt; + +uniform mat4 gbufferModelView; +uniform mat4 gbufferModelViewInverse; +attribute vec4 mc_midTexCoord; +uniform vec3 cameraPosition; +uniform vec2 texelSize; +uniform int framemod8; +const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); +#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) +#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) +vec4 toClipSpace3(vec3 viewSpacePosition) { + return vec4(projMAD(gl_ProjectionMatrix, viewSpacePosition),-viewSpacePosition.z); +} + +vec2 calcWave(in vec3 pos) { + + float magnitude = abs(sin(dot(vec4(frameTimeCounter, pos),vec4(1.0,0.005,0.005,0.005)))*0.5+0.72)*0.013; + vec2 ret = (sin(pi2wt*vec2(0.0063,0.0015)*4. - pos.xz + pos.y*0.05)+0.1)*magnitude; + + return ret; +} + +vec3 calcMovePlants(in vec3 pos) { + vec2 move1 = calcWave(pos ); + float move1y = -length(move1); + return vec3(move1.x,move1y,move1.y)*5.*WAVY_STRENGTH; +} + +vec3 calcWaveLeaves(in vec3 pos, in float fm, in float mm, in float ma, in float f0, in float f1, in float f2, in float f3, in float f4, in float f5) { + + float magnitude = abs(sin(dot(vec4(frameTimeCounter, pos),vec4(1.0,0.005,0.005,0.005)))*0.5+0.72)*0.013; + vec3 ret = (sin(pi2wt*vec3(0.0063,0.0224,0.0015)*1.5 - pos))*magnitude; + + return ret; +} + +vec3 calcMoveLeaves(in vec3 pos, in float f0, in float f1, in float f2, in float f3, in float f4, in float f5, in vec3 amp1, in vec3 amp2) { + vec3 move1 = calcWaveLeaves(pos , 0.0054, 0.0400, 0.0400, 0.0127, 0.0089, 0.0114, 0.0063, 0.0224, 0.0015) * amp1; + return move1*5.*WAVY_STRENGTH; +} +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + lmtexcoord.xy = (gl_MultiTexCoord0).xy; + + TESTMASK = vec4(normalize(gl_NormalMatrix * gl_Normal), 1.0); + + TESTMASK.r = blockEntityId == 222 ? 255 : TESTMASK.r; + + + #ifdef ENTITIES + test_motionVectors = at_velocity; + #endif + + #ifdef POM + vec2 midcoord = (gl_TextureMatrix[0] * mc_midTexCoord).st; + vec2 texcoordminusmid = lmtexcoord.xy-midcoord; + vtexcoordam.pq = abs(texcoordminusmid)*2; + vtexcoordam.st = min(lmtexcoord.xy,midcoord-texcoordminusmid); + vtexcoord.xy = sign(texcoordminusmid)*0.5+0.5; + #endif + + vec2 lmcoord = gl_MultiTexCoord1.xy/255.; + lmtexcoord.zw = lmcoord; + vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz; + color = gl_Color; + bool istopv = gl_MultiTexCoord0.t < mc_midTexCoord.t; + + #ifdef MC_NORMAL_MAP + tangent = vec4(normalize(gl_NormalMatrix *at_tangent.rgb),at_tangent.w); + #endif + + normalMat = vec4(normalize(gl_NormalMatrix *gl_Normal), 1.0); + +#ifdef ENTITIES + + #ifdef mob_SSS + #ifdef Variable_Penumbra_Shadows + normalMat.a = entityId == 1100 ? 1.0 : normalMat.a; + normalMat.a = entityId == 1200 ? 1.0 : normalMat.a; + normalMat.a = entityId == 1400 ? 1.0 : normalMat.a; + #endif + #endif + + + gl_Position = ftransform(); + +#endif + + + +#ifdef WORLD + + + normalMat = vec4(normalize(gl_NormalMatrix *gl_Normal),mc_Entity.x == 10004 || mc_Entity.x == 10003 ? 0.5 : mc_Entity.x == 10001 ? 0.6 : 1.0); + normalMat.a = mc_Entity.x == 10006 ? 0.6 : normalMat.a; + normalMat.a = mc_Entity.x == 10007 ? 0.55 : normalMat.a; + + normalMat.a = mc_Entity.x == 10005 ? 0.8 : normalMat.a; + normalMat.a = mc_Entity.x == 99 ? 0.65 : normalMat.a; + + + #ifdef WAVY_PLANTS + if ((mc_Entity.x == 10001 && istopv) && abs(position.z) < 64.0) { + vec3 worldpos = mat3(gbufferModelViewInverse) * position + gbufferModelViewInverse[3].xyz + cameraPosition; + worldpos.xyz += calcMovePlants(worldpos.xyz)*lmtexcoord.w - cameraPosition; + position = mat3(gbufferModelView) * worldpos + gbufferModelView[3].xyz; + } + + if (mc_Entity.x == 10003 && abs(position.z) < 64.0) { + vec3 worldpos = mat3(gbufferModelViewInverse) * position + gbufferModelViewInverse[3].xyz + cameraPosition; + worldpos.xyz += calcMoveLeaves(worldpos.xyz, 0.0040, 0.0064, 0.0043, 0.0035, 0.0037, 0.0041, vec3(1.0,0.2,1.0), vec3(0.5,0.1,0.5))*lmtexcoord.w - cameraPosition; + position = mat3(gbufferModelView) * worldpos + gbufferModelView[3].xyz; + } + #endif + + if (mc_Entity.x == 100 ){ + color.rgb = normalize(color.rgb)*sqrt(3.0); + normalMat.a = 0.9; + } + + gl_Position = toClipSpace3(position); + + if (color.a < 0.3) color.a = 1.0; + + + #ifdef SEPARATE_AO + + #if indirect_effect == 1 || indirect_effect == 0 + lmtexcoord.zw *= sqrt(color.a); + #endif + + #else + color.rgb *= color.a; + #endif + +#endif + + + #ifdef TAA_UPSCALING + gl_Position.xy = gl_Position.xy * RENDER_SCALE + RENDER_SCALE * gl_Position.w - gl_Position.w; + #endif + #ifdef TAA + gl_Position.xy += offsets[framemod8] * gl_Position.w * texelSize; + #endif +} diff --git a/shaders/world-1/gbuffers_all_translucent.fsh b/shaders/world-1/gbuffers_all_translucent.fsh new file mode 100644 index 0000000..d89e204 --- /dev/null +++ b/shaders/world-1/gbuffers_all_translucent.fsh @@ -0,0 +1,624 @@ +// #version 120 +#extension GL_EXT_gpu_shader4 : enable + +varying vec4 lmtexcoord; +varying vec4 color; +varying vec4 normalMat; +varying vec3 binormal; +uniform sampler2D normals; +varying vec3 tangent; +varying vec4 tangent_other; +varying vec3 viewVector; +varying float dist; +#include "/lib/res_params.glsl" + +#define CLOUDS_SHADOWS +#define VL_CLOUDS_SHADOWS // Casts shadows from clouds on VL (slow) +#define SCREENSPACE_REFLECTIONS //can be really expensive at high resolutions/render quality, especially on ice +#define SSR_STEPS 30 //[10 15 20 25 30 35 40 50 100 200 400] +#define SUN_MICROFACET_SPECULAR // If enabled will use realistic rough microfacet model, else will just reflect the sun. No performance impact. +#define USE_QUARTER_RES_DEPTH // Uses a quarter resolution depth buffer to raymarch screen space reflections, improves performance but may introduce artifacts +#define saturate(x) clamp(x,0.0,1.0) +#define Dirt_Amount 0.14 //How much dirt there is in water [0.0 0.04 0.08 0.12 0.16 0.2 0.24 0.28 0.32 0.36 0.4 0.44 0.48 0.52 0.56 0.6 0.64 0.68 0.72 0.76 0.8 0.84 0.88 0.92 0.96 1.0 1.04 1.08 1.12 1.16 1.2 1.24 1.28 1.32 1.36 1.4 1.44 1.48 1.52 1.56 1.6 1.64 1.68 1.72 1.76 1.8 1.84 1.88 1.92 1.96 2.0 ] + +#define Dirt_Scatter_R 0.6 //How much dirt diffuses red [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 ] +#define Dirt_Scatter_G 0.6 //How much dirt diffuses green [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 ] +#define Dirt_Scatter_B 0.6 //How much dirt diffuses blue [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 ] + +#define Dirt_Absorb_R 1.65 //How much dirt absorbs red [0.0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.2 0.22 0.24 0.26 0.28 0.3 0.32 0.34 0.36 0.38 0.4 0.42 0.44 0.46 0.48 0.5 0.52 0.54 0.56 0.58 0.6 0.62 0.64 0.66 0.68 0.7 0.72 0.74 0.76 0.78 0.8 0.82 0.84 0.86 0.88 0.9 0.92 0.94 0.96 0.98 1.0 1.02 1.04 1.06 1.08 1.1 1.12 1.14 1.16 1.18 1.2 1.22 1.24 1.26 1.28 1.3 1.32 1.34 1.36 1.38 1.4 1.42 1.44 1.46 1.48 1.5 1.52 1.54 1.56 1.58 1.6 1.62 1.64 1.66 1.68 1.7 1.72 1.74 1.76 1.78 1.8 1.82 1.84 1.86 1.88 1.9 1.92 1.94 1.96 1.98 2.0 ] +#define Dirt_Absorb_G 1.85 //How much dirt absorbs green [0.0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.2 0.22 0.24 0.26 0.28 0.3 0.32 0.34 0.36 0.38 0.4 0.42 0.44 0.46 0.48 0.5 0.52 0.54 0.56 0.58 0.6 0.62 0.64 0.66 0.68 0.7 0.72 0.74 0.76 0.78 0.8 0.82 0.84 0.86 0.88 0.9 0.92 0.94 0.96 0.98 1.0 1.02 1.04 1.06 1.08 1.1 1.12 1.14 1.16 1.18 1.2 1.22 1.24 1.26 1.28 1.3 1.32 1.34 1.36 1.38 1.4 1.42 1.44 1.46 1.48 1.5 1.52 1.54 1.56 1.58 1.6 1.62 1.64 1.66 1.68 1.7 1.72 1.74 1.76 1.78 1.8 1.82 1.84 1.86 1.88 1.9 1.92 1.94 1.96 1.98 2.0 ] +#define Dirt_Absorb_B 2.05 //How much dirt absorbs blue [0.0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.2 0.22 0.24 0.26 0.28 0.3 0.32 0.34 0.36 0.38 0.4 0.42 0.44 0.46 0.48 0.5 0.52 0.54 0.56 0.58 0.6 0.62 0.64 0.66 0.68 0.7 0.72 0.74 0.76 0.78 0.8 0.82 0.84 0.86 0.88 0.9 0.92 0.94 0.96 0.98 1.0 1.02 1.04 1.06 1.08 1.1 1.12 1.14 1.16 1.18 1.2 1.22 1.24 1.26 1.28 1.3 1.32 1.34 1.36 1.38 1.4 1.42 1.44 1.46 1.48 1.5 1.52 1.54 1.56 1.58 1.6 1.62 1.64 1.66 1.68 1.7 1.72 1.74 1.76 1.78 1.8 1.82 1.84 1.86 1.88 1.9 1.92 1.94 1.96 1.98 2.0 ] + +#define Water_Absorb_R 0.2629 //How much water absorbs red [0.0 0.0025 0.005 0.0075 0.01 0.0125 0.015 0.0175 0.02 0.0225 0.025 0.0275 0.03 0.0325 0.035 0.0375 0.04 0.0425 0.045 0.0475 0.05 0.0525 0.055 0.0575 0.06 0.0625 0.065 0.0675 0.07 0.0725 0.075 0.0775 0.08 0.0825 0.085 0.0875 0.09 0.0925 0.095 0.0975 0.1 0.1025 0.105 0.1075 0.11 0.1125 0.115 0.1175 0.12 0.1225 0.125 0.1275 0.13 0.1325 0.135 0.1375 0.14 0.1425 0.145 0.1475 0.15 0.1525 0.155 0.1575 0.16 0.1625 0.165 0.1675 0.17 0.1725 0.175 0.1775 0.18 0.1825 0.185 0.1875 0.19 0.1925 0.195 0.1975 0.2 0.2025 0.205 0.2075 0.21 0.2125 0.215 0.2175 0.22 0.2225 0.225 0.2275 0.23 0.2325 0.235 0.2375 0.24 0.2425 0.245 0.2475 0.25 ] +#define Water_Absorb_G 0.0565 //How much water absorbs green [0.0 0.0025 0.005 0.0075 0.01 0.0125 0.015 0.0175 0.02 0.0225 0.025 0.0275 0.03 0.0325 0.035 0.0375 0.04 0.0425 0.045 0.0475 0.05 0.0525 0.055 0.0575 0.06 0.0625 0.065 0.0675 0.07 0.0725 0.075 0.0775 0.08 0.0825 0.085 0.0875 0.09 0.0925 0.095 0.0975 0.1 0.1025 0.105 0.1075 0.11 0.1125 0.115 0.1175 0.12 0.1225 0.125 0.1275 0.13 0.1325 0.135 0.1375 0.14 0.1425 0.145 0.1475 0.15 0.1525 0.155 0.1575 0.16 0.1625 0.165 0.1675 0.17 0.1725 0.175 0.1775 0.18 0.1825 0.185 0.1875 0.19 0.1925 0.195 0.1975 0.2 0.2025 0.205 0.2075 0.21 0.2125 0.215 0.2175 0.22 0.2225 0.225 0.2275 0.23 0.2325 0.235 0.2375 0.24 0.2425 0.245 0.2475 0.25 ] +#define Water_Absorb_B 0.01011 //How much water absorbs blue [0.0 0.0025 0.005 0.0075 0.01 0.0125 0.015 0.0175 0.02 0.0225 0.025 0.0275 0.03 0.0325 0.035 0.0375 0.04 0.0425 0.045 0.0475 0.05 0.0525 0.055 0.0575 0.06 0.0625 0.065 0.0675 0.07 0.0725 0.075 0.0775 0.08 0.0825 0.085 0.0875 0.09 0.0925 0.095 0.0975 0.1 0.1025 0.105 0.1075 0.11 0.1125 0.115 0.1175 0.12 0.1225 0.125 0.1275 0.13 0.1325 0.135 0.1375 0.14 0.1425 0.145 0.1475 0.15 0.1525 0.155 0.1575 0.16 0.1625 0.165 0.1675 0.17 0.1725 0.175 0.1775 0.18 0.1825 0.185 0.1875 0.19 0.1925 0.195 0.1975 0.2 0.2025 0.205 0.2075 0.21 0.2125 0.215 0.2175 0.22 0.2225 0.225 0.2275 0.23 0.2325 0.235 0.2375 0.24 0.2425 0.245 0.2475 0.25 ] +#define Texture_MipMap_Bias -1.00 // Uses a another mip level for textures. When reduced will increase texture detail but may induce a lot of shimmering. [-5.00 -4.75 -4.50 -4.25 -4.00 -3.75 -3.50 -3.25 -3.00 -2.75 -2.50 -2.25 -2.00 -1.75 -1.50 -1.25 -1.00 -0.75 -0.50 -0.25 0.00 0.25 0.50 0.75 1.00 1.25 1.50 1.75 2.00 2.25 2.50 2.75 3.00 3.25 3.50 3.75 4.00 4.25 4.50 4.75 5.00] + +#define ambient_colortype 0 // Toggle which method you want to change the color of ambient light with. [0 1] +#define ambient_temp 9000 // [1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 15000 50000] + +#define AmbientLight_R 0.91 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +#define AmbientLight_G 0.86 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +#define AmbientLight_B 1.0 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] + + + +#define MIN_LIGHT_AMOUNT 1.0 //[0.0 0.5 1.0 1.5 2.0 3.0 4.0 5.0] +//#define Vanilla_like_water // vanilla water texture along with shader water stuff +uniform sampler2D texture; +uniform sampler2D noisetex; +uniform sampler2DShadow shadow; +uniform sampler2D gaux2; +uniform sampler2D gaux1; +uniform sampler2D depthtex1; + +uniform vec4 lightCol; +uniform float nightVision; + +uniform vec3 sunVec; +uniform float frameTimeCounter; +uniform float lightSign; +uniform float near; +uniform float far; +uniform float moonIntensity; +uniform float sunIntensity; +uniform vec3 sunColor; +uniform vec3 nsunColor; +uniform vec3 upVec; +uniform float sunElevation; +uniform float fogAmount; +uniform vec2 texelSize; +uniform float rainStrength; +uniform float skyIntensityNight; +uniform float skyIntensity; +flat varying vec3 WsunVec; +uniform mat4 gbufferPreviousModelView; +uniform vec3 previousCameraPosition; +uniform int framemod8; +uniform sampler2D specular; +uniform int frameCounter; +uniform int isEyeInWater; + + + + + +#include "lib/Shadow_Params.glsl" +#include "lib/color_transforms.glsl" +#include "lib/projections.glsl" +#include "lib/sky_gradient.glsl" +#include "lib/waterBump.glsl" +#include "lib/clouds.glsl" +#include "lib/stars.glsl" +#include "lib/volumetricClouds.glsl" + + const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); +float interleaved_gradientNoise(float temporal){ + vec2 coord = gl_FragCoord.xy; + float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)+temporal); + return noise; +} +vec3 srgbToLinear2(vec3 srgb){ + return mix( + srgb / 12.92, + pow(.947867 * srgb + .0521327, vec3(2.4) ), + step( .04045, srgb ) + ); +} +vec3 blackbody2(float Temp) +{ + float t = pow(Temp, -1.5); + float lt = log(Temp); + + vec3 col = vec3(0.0); + col.x = 220000.0 * t + 0.58039215686; + col.y = 0.39231372549 * lt - 2.44549019608; + col.y = Temp > 6500. ? 138039.215686 * t + 0.72156862745 : col.y; + col.z = 0.76078431372 * lt - 5.68078431373; + col = clamp(col,0.0,1.0); + col = Temp < 1000. ? col * Temp * 0.001 : col; + + return srgbToLinear2(col); +} + +float blueNoise(){ + return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); +} +float invLinZ (float lindepth){ + return -((2.0*near/lindepth)-far-near)/(far-near); +} +float ld(float dist) { + return (2.0 * near) / (far + near - dist * (far - near)); +} +vec3 nvec3(vec4 pos){ + return pos.xyz/pos.w; +} + +vec4 nvec4(vec3 pos){ + return vec4(pos.xyz, 1.0); +} +vec3 rayTrace(vec3 dir,vec3 position,float dither, float fresnel, bool inwater){ + + float quality = mix(15,SSR_STEPS,fresnel); + vec3 clipPosition = toClipSpace3(position); + float rayLength = ((position.z + dir.z * far*sqrt(3.)) > -near) ? + (-near -position.z) / dir.z : far*sqrt(3.); + vec3 direction = normalize(toClipSpace3(position+dir*rayLength)-clipPosition); //convert to clip space + direction.xy = normalize(direction.xy); + + //get at which length the ray intersects with the edge of the screen + vec3 maxLengths = (step(0.,direction)-clipPosition) / direction; + float mult = min(min(maxLengths.x,maxLengths.y),maxLengths.z); + + + vec3 stepv = direction * mult / quality*vec3(RENDER_SCALE,1.0); + + + + + vec3 spos = clipPosition*vec3(RENDER_SCALE,1.0) + stepv*dither; + float minZ = clipPosition.z; + float maxZ = spos.z+stepv.z*0.5; + + spos.xy += offsets[framemod8]*texelSize*0.5/RENDER_SCALE; + + for (int i = 0; i <= int(quality); i++) { + #ifdef USE_QUARTER_RES_DEPTH + // decode depth buffer + float sp = sqrt(texelFetch2D(gaux1,ivec2(spos.xy/texelSize/4),0).w/65000.0); + sp = invLinZ(sp); + if(sp <= max(maxZ,minZ) && sp >= min(maxZ,minZ)){ + return vec3(spos.xy/RENDER_SCALE,sp); + } + spos += stepv; + #else + float sp = texelFetch2D(depthtex1,ivec2(spos.xy/texelSize),0).r; + if(sp <= max(maxZ,minZ) && sp >= min(maxZ,minZ)){ + return vec3(spos.xy/RENDER_SCALE,sp); + } + spos += stepv; + #endif + //small bias + minZ = maxZ-0.00004/ld(spos.z); + if(inwater) minZ = maxZ-0.0004/ld(spos.z); + maxZ += stepv.z; + } + + return vec3(1.1); +} + + +float facos(float sx){ + float x = clamp(abs( sx ),0.,1.); + float a = sqrt( 1. - x ) * ( -0.16882 * x + 1.56734 ); + return sx > 0. ? a : pi - a; +} + + + + + float bayer2(vec2 a){ + a = floor(a); + return fract(dot(a,vec2(0.5,a.y*0.75))); +} + +float cdist(vec2 coord) { + return max(abs(coord.s-0.5),abs(coord.t-0.5))*2.0; +} + + #define PW_DEPTH 1.0 //[0.5 1.0 1.5 2.0 2.5 3.0] + #define PW_POINTS 1 //[2 4 6 8 16 32] + #define bayer4(a) (bayer2( .5*(a))*.25+bayer2(a)) +#define bayer8(a) (bayer4( .5*(a))*.25+bayer2(a)) +#define bayer16(a) (bayer8( .5*(a))*.25+bayer2(a)) +#define bayer32(a) (bayer16(.5*(a))*.25+bayer2(a)) +#define bayer64(a) (bayer32(.5*(a))*.25+bayer2(a)) +#define bayer128(a) fract(bayer64(.5*(a))*.25+bayer2(a)) +vec3 getParallaxDisplacement(vec3 posxz, float iswater,float bumpmult,vec3 viewVec) { + float waveZ = mix(20.0,0.25,iswater); + float waveM = mix(0.0,4.0,iswater); + + vec3 parallaxPos = posxz; + vec2 vec = viewVector.xy * (1.0 / float(PW_POINTS)) * 22.0 * PW_DEPTH; + float waterHeight = getWaterHeightmap(posxz.xz, waveM, waveZ, iswater) ; + + parallaxPos.xz += waterHeight * vec; + + return parallaxPos; + +} +vec2 tapLocation(int sampleNumber,int nb, float nbRot,float jitter,float distort) +{ + float alpha = (sampleNumber+jitter)/nb; + float angle = jitter*6.28 + alpha * nbRot * 6.28; + + float sin_v, cos_v; + + sin_v = sin(angle); + cos_v = cos(angle); + + return vec2(cos_v, sin_v)*sqrt(alpha); +} +//Low discrepancy 2D sequence, integration error is as low as sobol but easier to compute : http://extremelearning.com.au/unreasonable-effectiveness-of-quasirandom-sequences/ +vec2 R2_samples(int n){ + vec2 alpha = vec2(0.75487765, 0.56984026); + return fract(alpha * n); +} +vec4 hash44(vec4 p4) +{ + p4 = fract(p4 * vec4(.1031, .1030, .0973, .1099)); + p4 += dot(p4, p4.wzxy+33.33); + return fract((p4.xxyz+p4.yzzw)*p4.zywx); +} +vec3 TangentToWorld(vec3 N, vec3 H) +{ + vec3 UpVector = abs(N.z) < 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(1.0, 0.0, 0.0); + vec3 T = normalize(cross(UpVector, N)); + vec3 B = cross(N, T); + + return vec3((T * H.x) + (B * H.y) + (N * H.z)); +} +float GGX (vec3 n, vec3 v, vec3 l, float r, float F0) { + r*=r;r*=r; + + vec3 h = l + v; + float hn = inversesqrt(dot(h, h)); + + float dotLH = clamp(dot(h,l)*hn,0.,1.); + float dotNH = clamp(dot(h,n)*hn,0.,1.); + float dotNL = clamp(dot(n,l),0.,1.); + float dotNHsq = dotNH*dotNH; + + float denom = dotNHsq * r - dotNHsq + 1.; + float D = r / (3.141592653589793 * denom * denom); + float F = F0 + (1. - F0) * exp2((-5.55473*dotLH-6.98316)*dotLH); + float k2 = .25 * r; + + return dotNL * D * F / (dotLH*dotLH*(1.0-k2)+k2); +} + + vec3 applyBump(mat3 tbnMatrix, vec3 bump){ + float bumpmult = 1.0; + bump = bump * vec3(bumpmult, bumpmult, bumpmult) + vec3(0.0f, 0.0f, 1.0f - bumpmult); + return normalize(bump*tbnMatrix); + } + +#define fsign(a) (clamp((a)*1e35,0.,1.)*2.-1.) +float triangularize(float dither) +{ + float center = dither*2.0-1.0; + dither = center*inversesqrt(abs(center)); + return clamp(dither-fsign(center),0.0,1.0); +} +vec3 fp10Dither(vec3 color,float dither){ + const vec3 mantissaBits = vec3(6.,6.,5.); + vec3 exponent = floor(log2(color)); + return color + dither*exp2(-mantissaBits)*exp2(exponent); +} +float R2_dither(){ + vec2 alpha = vec2(0.75487765, 0.56984026); + return fract(alpha.x * gl_FragCoord.x + alpha.y * gl_FragCoord.y + 1.0/1.6180339887 * frameCounter) ; +} +//encoding by jodie +float encodeVec2(vec2 a){ + const vec2 constant1 = vec2( 1., 256.) / 65535.; + vec2 temp = floor( a * 255. ); + return temp.x*constant1.x+temp.y*constant1.y; +} +float encodeVec2(float x,float y){ + return encodeVec2(vec2(x,y)); +} +vec3 viewToWorld(vec3 viewPosition) { + vec4 pos; + pos.xyz = viewPosition; + pos.w = 0.0; + pos = gbufferModelViewInverse * pos; + return pos.xyz; +} +vec3 worldToView(vec3 worldPos) { + vec4 pos = vec4(worldPos, 0.0); + pos = gbufferModelView * pos; + return pos.xyz; +} +vec4 encode (vec3 n, vec2 lightmaps){ + n.xy = n.xy / dot(abs(n), vec3(1.0)); + n.xy = n.z <= 0.0 ? (1.0 - abs(n.yx)) * sign(n.xy) : n.xy; + vec2 encn = clamp(n.xy * 0.5 + 0.5,-1.0,1.0); + + return vec4(encn,vec2(lightmaps.x,lightmaps.y)); +} + + + + +float square(float x){ + return x*x; +} +float g(float NdotL, float roughness){ + float alpha = square(max(roughness, 0.02)); + return 2.0 * NdotL / (NdotL + sqrt(square(alpha) + (1.0 - square(alpha)) * square(NdotL))); +} +float gSimple(float dp, float roughness){ + float k = roughness + 1; + k *= k/8.0; + return dp / (dp * (1.0-k) + k); +} + +vec3 GGX2(vec3 n, vec3 v, vec3 l, float r, vec3 F0) { + + float roughness = r + 1.0/255.0; // when roughness is zero it fucks up + + float alpha = square(roughness); + + + vec3 h = normalize(l + v); + + float dotLH = clamp(dot(h,l),0.,1.); + float dotNH = clamp(dot(h,n),0.,1.); + float dotNL = clamp(dot(n,l),0.,1.); + float dotNV = clamp(dot(n,v),0.,1.); + float dotVH = clamp(dot(h,v),0.,1.); + + + float D = alpha / (3.141592653589793*square(square(dotNH) * (alpha - 1.0) + 1.0)); + float G = gSimple(dotNV, roughness) * gSimple(dotNL, roughness); + vec3 F = F0 + (1. - F0) * exp2((-5.55473*dotVH-6.98316)*dotVH); + + return dotNL * F * (G * D / (4 * dotNV * dotNL + 1e-7)); +} + +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +/* RENDERTARGETS:2,7,1,11 */ +void main() { + if (gl_FragCoord.x * texelSize.x < RENDER_SCALE.x && gl_FragCoord.y * texelSize.y < RENDER_SCALE.y ) { + vec2 tempOffset=offsets[framemod8]; + float iswater = normalMat.w; + vec3 fragC = gl_FragCoord.xyz*vec3(texelSize,1.0); + vec3 fragpos = toScreenSpace(gl_FragCoord.xyz*vec3(texelSize/RENDER_SCALE,1.0)-vec3(vec2(tempOffset)*texelSize*0.5,0.0)); + gl_FragData[0] = texture2D(texture, lmtexcoord.xy)*color; + float avgBlockLum = luma(texture2DLod(texture, lmtexcoord.xy,128).rgb*color.rgb); + gl_FragData[0].rgb = clamp((gl_FragData[0].rgb)*pow(avgBlockLum,-0.33)*0.85,0.0,1.0); + + vec3 albedo = toLinear(gl_FragData[0].rgb); + + #ifndef Vanilla_like_water + if (iswater > 0.4) { + albedo = vec3(0.42,0.6,0.7); + gl_FragData[0] = vec4(0.42,0.6,0.7,0.7); + } + if (iswater > 0.9) { + gl_FragData[0] = vec4(0.0); + } + #endif + + #ifdef Vanilla_like_water + if (iswater > 0.5) { + gl_FragData[0].a = luma(albedo.rgb); + albedo = color.rgb; + } + #endif + vec2 specularstuff = texture2D(specular, lmtexcoord.xy, Texture_MipMap_Bias).rg; + + vec3 normal = normalMat.xyz; + + vec3 p3 = mat3(gbufferModelViewInverse) * fragpos + gbufferModelViewInverse[3].xyz; + mat3 tbnMatrix = mat3(tangent.x, binormal.x, normal.x, + tangent.y, binormal.y, normal.y, + tangent.z, binormal.z, normal.z); + if (iswater > 0.4){ + float bumpmult = 1.; + if (iswater > 0.9) + bumpmult = 1.; + float parallaxMult = bumpmult; + vec3 posxz = p3+cameraPosition; + posxz.xz-=posxz.y; + if (iswater < 0.9) + posxz.xz *= 3.0; + vec3 bump; + + + posxz.xyz = getParallaxDisplacement(posxz,iswater,bumpmult,normalize(tbnMatrix*fragpos)); + + bump = normalize(getWaveHeight(posxz.xz,iswater)); + + + + bump = bump * vec3(bumpmult, bumpmult, bumpmult) + vec3(0.0f, 0.0f, 1.0f - bumpmult); + + normal = normalize(bump * tbnMatrix); + }else { + vec3 normalTex = texture2D(normals, lmtexcoord.xy, Texture_MipMap_Bias).rgb; + + normalTex.xy = normalTex.xy*2.0-1.0; + normalTex.z = clamp(sqrt(1.0 - dot(normalTex.xy, normalTex.xy)),0.0,1.0); + normal = applyBump(tbnMatrix,normalTex); + } + vec4 data0 = vec4(1); + vec4 data1 = clamp( encode(viewToWorld(normal), lmtexcoord.zw),0.0,1.0); + gl_FragData[3] = vec4(encodeVec2(data0.x,data1.x), encodeVec2(data0.y,data1.y), encodeVec2(data0.z,data1.z), encodeVec2(data1.w,data0.w)); + // gl_FragData[3].a = 0.0; + + + float NdotL = lightSign*dot(normal,sunVec); + float NdotU = dot(upVec,normal); + float diffuseSun = clamp(NdotL,0.0f,1.0f); + + vec3 direct = texelFetch2D(gaux1,ivec2(6,37),0).rgb/3.1415; + + float shading = 1.0; + float cloudShadow = 1.0; + //compute shadows only if not backface + if (diffuseSun > 0.001) { + vec3 p3 = mat3(gbufferModelViewInverse) * fragpos + gbufferModelViewInverse[3].xyz; + vec3 projectedShadowPosition = mat3(shadowModelView) * p3 + shadowModelView[3].xyz; + projectedShadowPosition = diagonal3(shadowProjection) * projectedShadowPosition + shadowProjection[3].xyz; + + //apply distortion + float distortFactor = calcDistort(projectedShadowPosition.xy); + projectedShadowPosition.xy *= distortFactor; + //do shadows only if on shadow map + if (abs(projectedShadowPosition.x) < 1.0-1.5/shadowMapResolution && abs(projectedShadowPosition.y) < 1.0-1.5/shadowMapResolution){ + const float threshMul = max(2048.0/shadowMapResolution*shadowDistance/128.0,0.95); + float distortThresh = (sqrt(1.0-diffuseSun*diffuseSun)/diffuseSun+0.7)/distortFactor; + float diffthresh = distortThresh/6000.0*threshMul; + + projectedShadowPosition = projectedShadowPosition * vec3(0.5,0.5,0.5/6.0) + vec3(0.5,0.5,0.5); + + shading = 0.0; + float noise = blueNoise(); + float rdMul = 4.0/shadowMapResolution; + for(int i = 0; i < 9; i++){ + vec2 offsetS = tapLocation(i,9, 1.618,noise,0.0); + + float weight = 1.0+(i+noise)*rdMul/9.0*shadowMapResolution; + shading += shadow2D(shadow,vec3(projectedShadowPosition + vec3(rdMul*offsetS,-diffthresh*weight))).x/9.0; + } + direct *= shading; + } + + + #ifdef VOLUMETRIC_CLOUDS + #ifdef CLOUDS_SHADOWS + vec3 campos = (p3 + cameraPosition)-319 ; + // get cloud position + vec3 cloudPos = campos*Cloud_Size + WsunVec/abs(WsunVec.y) * (2250 - campos.y*Cloud_Size); + // get the cloud density and apply it + cloudShadow = getCloudDensity(cloudPos, 1); + // cloudShadow = exp(-cloudShadow*sqrt(cloudDensity)*25); + + cloudShadow = clamp(exp(-cloudShadow*10),0,1); + + // make these turn to zero when occluded by the cloud shadow + direct *= cloudShadow; + #endif + #endif + } + + + + + #if ambient_colortype == 0 + vec3 colortype = blackbody2(ambient_temp); + #else + vec3 colortype = vec3(AmbientLight_R,AmbientLight_G,AmbientLight_B) ; + #endif + + vec3 ambientLight = texture2D(gaux1,(lmtexcoord.zw*15.+0.5)*texelSize).rgb * colortype; + + direct *= (iswater > 0.9 ? 0.2: 1.0)*diffuseSun*lmtexcoord.w; + + + vec3 diffuseLight = (direct*1.5) + (ambientLight*2.5); + vec3 color = diffuseLight * albedo * 8./150./3.0 ; + + + + if (iswater > 0.0){ + + float roughness = iswater > 0.4 ? 0.0 : specularstuff.r > 0.0 ? pow(1.0-specularstuff.r,2.0) : 0.05*(1.0-gl_FragData[0].a ); + float f0 = iswater > 0.4 ? 0.02 : specularstuff.g; + if(f0 > 0.9) f0 = 0.02; + float F0 = f0; + + // float f0 = iswater > 0.1 ? 0.02 : 0.05*(1.0-gl_FragData[0].a); + // float roughness = 0.02; + // float F0 = f0; + + vec3 reflectedVector = reflect(normalize(fragpos), normal); + + + float normalDotEye = dot(normal, normalize(fragpos)); + float fresnel = pow(clamp(1.0 + normalDotEye,0.0,1.0), 5.0); + float fresnel2 = pow(clamp(1.0 + normalDotEye,0.0,1.0), 1.0); + + // gl_FragData[3].a = fresnel2; + + // snells window looking thing + if(isEyeInWater == 1 && iswater > 0.99) fresnel = clamp(pow(1.66 + normalDotEye,25),0.02,1.0); + + fresnel = mix(F0,1.0,fresnel); + + // adjust the amount of sunlight based on f0. max f0 should + color = mix(color, (ambientLight*2.5) * albedo * 8./150./3.0 , mix(1.0-roughness, F0, 0.5)); + + vec3 wrefl = mat3(gbufferModelViewInverse)*reflectedVector; + vec3 sky_c = mix(skyCloudsFromTex(wrefl,gaux1).rgb,texture2D(gaux1,(lmtexcoord.zw*15.+0.5)*texelSize).rgb*0.5,isEyeInWater); + sky_c.rgb *= lmtexcoord.w*lmtexcoord.w*255*255/240./240./150.*8./3.; + + vec4 reflection = vec4(sky_c.rgb,0.); + #ifdef SCREENSPACE_REFLECTIONS + vec3 rtPos = rayTrace(reflectedVector,fragpos.xyz, blueNoise(), fresnel, isEyeInWater == 0); + if (rtPos.z <1.){ + vec3 previousPosition = mat3(gbufferModelViewInverse) * toScreenSpace(rtPos) + gbufferModelViewInverse[3].xyz + cameraPosition-previousCameraPosition; + previousPosition = mat3(gbufferPreviousModelView) * previousPosition + gbufferPreviousModelView[3].xyz; + previousPosition.xy = projMAD(gbufferPreviousProjection, previousPosition).xy / -previousPosition.z * 0.5 + 0.5; + if (previousPosition.x > 0.0 && previousPosition.y > 0.0 && previousPosition.x < 1.0 && previousPosition.x < 1.0) { + reflection.a = 1.0; + reflection.rgb = texture2D(gaux2,previousPosition.xy).rgb; + } + } + #endif + + + if(isEyeInWater ==1 ) sky_c.rgb = color.rgb*lmtexcoord.y; + + reflection.rgb = mix(sky_c.rgb, reflection.rgb, reflection.a); + + #ifdef SUN_MICROFACET_SPECULAR + vec3 sunSpec = GGX2(normal, -normalize(fragpos), lightSign*sunVec ,roughness, vec3(f0)) * direct; + + // vec3 sunSpec = GGX(normal,-normalize(fragpos), lightSign*sunVec, rainStrength*0.2+roughness+0.05+clamp(-lightSign*0.15,0.0,1.0), f0) * texelFetch2D(gaux1,ivec2(6,37),0).rgb*8./3./150.0/3.1415 * (1.0-rainStrength*0.9); + #else + vec3 sunSpec = drawSun(dot(lightSign * sunVec,reflectedVector), 0.0,texelFetch2D(gaux1,ivec2(6,37),0).rgb,vec3(0.0))*8./3./150.0*fresnel/3.1415 * (1.0-rainStrength*0.9); + #endif + + + // vec3 albedoTint = F0 >= (230.0/255.0) ? clamp(color.rgb + fresnel,0.0,1.0) : vec3(1.0); + // reflection.rgb *= albedoTint; + // sunSpec.rgb *= albedoTint; + sunSpec *= max(cloudShadow-0.5,0.0); + + vec3 reflected = reflection.rgb*fresnel+shading*sunSpec; + + float alpha0 = gl_FragData[0].a; + + vec3 np3 = mat3(gbufferModelViewInverse) * fragpos + gbufferModelViewInverse[3].xyz + cameraPosition; + + float borderfog = clamp( pow( length(fragpos)/far, 5), 0, 1); + vec3 bordercolor = skyFromTex(np3,colortex4)/150.; + vec3 finalborderfog = clamp(fp10Dither(bordercolor*8./3.,triangularize(R2_dither())),0.0,65000.); + + // alpha0 = mix(0.0, alpha0, borderfog); + + //correct alpha channel with fresnel + gl_FragData[0].a = -gl_FragData[0].a*fresnel+gl_FragData[0].a+fresnel; + + gl_FragData[0].rgb = clamp(color/gl_FragData[0].a*alpha0*(1.0-fresnel)*0.1+reflected/gl_FragData[0].a*0.1,0.0,65100.0); + if (gl_FragData[0].r > 65000.) gl_FragData[0].rgba = vec4(0.); + + + } + else + gl_FragData[0].rgb = color*.1; + + gl_FragData[1] = vec4(albedo,iswater); + + // vec3 np3 = mat3(gbufferModelViewInverse) * fragpos + gbufferModelViewInverse[3].xyz + cameraPosition; + + // float borderfog = clamp( pow( length(fragpos)/far, 5), 0, 1); + // vec3 bordercolor = skyFromTex(np3,colortex4)/150.; + // vec3 finalborderfog = clamp(fp10Dither(bordercolor*8./3.,triangularize(R2_dither())),0.0,65000.); + + } +} diff --git a/shaders/world-1/gbuffers_all_translucent.vsh b/shaders/world-1/gbuffers_all_translucent.vsh new file mode 100644 index 0000000..13986e0 --- /dev/null +++ b/shaders/world-1/gbuffers_all_translucent.vsh @@ -0,0 +1,112 @@ +// #version 120 +#extension GL_EXT_gpu_shader4 : enable + +#include "/lib/res_params.glsl" + + +/* +!! DO NOT REMOVE !! +This code is from Chocapic13' shaders +Read the terms of modification and sharing before changing something below please ! +!! DO NOT REMOVE !! +*/ + +varying vec4 lmtexcoord; +varying vec4 color; +varying vec4 normalMat; +varying vec3 binormal; +varying vec3 tangent; +varying float dist; +uniform mat4 gbufferModelViewInverse; +varying vec3 viewVector; +attribute vec4 at_tangent; +attribute vec4 mc_Entity; + +uniform sampler2D colortex4; +uniform vec3 sunPosition; +flat varying vec3 WsunVec; +uniform float sunElevation; + +varying vec4 tangent_other; +#define SHADOW_MAP_BIAS 0.8 + +flat varying vec4 lightCol; //main light source color (rgb),used light source(1=sun,-1=moon) + + + +uniform vec2 texelSize; +uniform int framemod8; + const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); +#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) +#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) +vec4 toClipSpace3(vec3 viewSpacePosition) { + return vec4(projMAD(gl_ProjectionMatrix, viewSpacePosition),-viewSpacePosition.z); +} +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + lmtexcoord.xy = (gl_MultiTexCoord0).xy; + vec2 lmcoord = gl_MultiTexCoord1.xy/255.; + lmtexcoord.zw = lmcoord; + + vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz; + gl_Position = toClipSpace3(position); + color = gl_Color; + float mat = 0.0; + if(mc_Entity.x == 8.0 || mc_Entity.x == 9.0) { + mat = 1.0; + + gl_Position.z -= 1e-4; + } + + + if (mc_Entity.x == 10002) mat = 0.01; + if (mc_Entity.x == 72) mat = 0.5; + // if (mc_Entity.x == 8) mat = 0.1; + + normalMat = vec4(normalize( gl_NormalMatrix*gl_Normal),mat); + + + + tangent_other = vec4(normalize(gl_NormalMatrix * at_tangent.rgb),normalMat.a); + + tangent = normalize( gl_NormalMatrix *at_tangent.rgb); + binormal = normalize(cross(tangent.rgb,normalMat.xyz)*at_tangent.w); + + mat3 tbnMatrix = mat3(tangent.x, binormal.x, normalMat.x, + tangent.y, binormal.y, normalMat.y, + tangent.z, binormal.z, normalMat.z); + + dist = length(gl_ModelViewMatrix * gl_Vertex); + + viewVector = ( gl_ModelViewMatrix * gl_Vertex).xyz; + viewVector = normalize(tbnMatrix * viewVector); + + + + #ifdef TAA_UPSCALING + gl_Position.xy = gl_Position.xy * RENDER_SCALE + RENDER_SCALE * gl_Position.w - gl_Position.w; + #endif + #ifdef TAA + gl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize; + #endif + + vec3 sc = texelFetch2D(colortex4,ivec2(6,37),0).rgb; + + + lightCol.a = float(sunElevation > 1e-5)*2-1.; + lightCol.rgb = sc; + + WsunVec = lightCol.a*normalize(mat3(gbufferModelViewInverse) *sunPosition); +} diff --git a/shaders/world-1/gbuffers_armor_glint.fsh b/shaders/world-1/gbuffers_armor_glint.fsh new file mode 100644 index 0000000..c931e5f --- /dev/null +++ b/shaders/world-1/gbuffers_armor_glint.fsh @@ -0,0 +1,100 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + + +varying vec4 lmtexcoord; +varying vec4 color; +varying vec4 normalMat; + + +uniform sampler2D texture; + +uniform vec4 lightCol; +uniform vec3 sunVec; + +uniform vec2 texelSize; +uniform float skyIntensityNight; +uniform float skyIntensity; +uniform float sunElevation; +uniform mat4 gbufferProjectionInverse; +uniform mat4 gbufferModelViewInverse; +uniform mat4 shadowModelView; +uniform mat4 shadowProjection; + +//faster and actually more precise than pow 2.2 +vec3 toLinear(vec3 sRGB){ + return sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878); +} + +#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) +#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) +vec3 toScreenSpace(vec3 p) { + vec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); + vec3 p3 = p * 2. - 1.; + vec4 fragposition = iProjDiag * p3.xyzz + gbufferProjectionInverse[3]; + return fragposition.xyz / fragposition.w; +} +float interleaved_gradientNoise(){ + vec2 coord = gl_FragCoord.xy; + float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)); + return noise; +} + +float facos(float sx){ + float x = clamp(abs( sx ),0.,1.); + float a = sqrt( 1. - x ) * ( -0.16882 * x + 1.56734 ); + return sx > 0. ? a : 3.14159265359 - a; +} +#define SHADOW_MAP_BIAS 0.8 +float calcDistort(vec2 worlpos){ + + vec2 pos = worlpos * 1.165; + vec2 posSQ = pos*pos; + + float distb = pow(posSQ.x*posSQ.x*posSQ.x + posSQ.y*posSQ.y*posSQ.y, 1.0 / 6.0); + return 1.08695652/((1.0 - SHADOW_MAP_BIAS) + distb * SHADOW_MAP_BIAS); +} + +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +/* DRAWBUFFERS:2 */ +void main() { + + + gl_FragData[0] = texture2D(texture, lmtexcoord.xy); + + + vec3 albedo = toLinear(gl_FragData[0].rgb*color.rgb); + + vec3 normal = normalMat.xyz; + vec3 fragpos = toScreenSpace(gl_FragCoord.xyz*vec3(texelSize,1.0)); + + + + float NdotL = lightCol.a*dot(normal,sunVec); + + float diffuseSun = clamp(NdotL,0.0f,1.0f); + + vec3 direct = lightCol.rgb; + + + direct *= (diffuseSun*lmtexcoord.w)*10.; + + float torch_lightmap = ((lmtexcoord.z*lmtexcoord.z)*(lmtexcoord.z*lmtexcoord.z))*(lmtexcoord.z*20.)+lmtexcoord.z; + + vec3 ambient = (lightCol.a*sunElevation)*(-NdotL*0.45+0.9)*lightCol.rgb*0.6 + (1.2*skyIntensity)*vec3(0.65,0.7,1.)*30. + skyIntensityNight*vec3(0.09,0.1,0.15)/1.5; + + vec3 diffuseLight = (lmtexcoord.w)*ambient + vec3(1.,0.4,0.1)*torch_lightmap*0.08*1.0 + 0.0006; + + vec3 col = dot(diffuseLight,vec3(1.0/3))*albedo; + + + gl_FragData[0].rgb = col*color.a; + gl_FragData[0].a = 0.0; + + + +} diff --git a/shaders/world-1/gbuffers_armor_glint.vsh b/shaders/world-1/gbuffers_armor_glint.vsh new file mode 100644 index 0000000..40823aa --- /dev/null +++ b/shaders/world-1/gbuffers_armor_glint.vsh @@ -0,0 +1,53 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable +#define TAA + +/* +!! DO NOT REMOVE !! +This code is from Chocapic13' shaders +Read the terms of modification and sharing before changing something below please ! +!! DO NOT REMOVE !! +*/ + +varying vec4 lmtexcoord; +varying vec4 color; +varying vec4 normalMat; +#ifdef MC_NORMAL_MAP +varying vec4 tangent; +attribute vec4 at_tangent; +#endif +uniform vec2 texelSize; +uniform int framemod8; + const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + lmtexcoord.xy = (gl_TextureMatrix[0] * gl_MultiTexCoord0).st; + + vec2 lmcoord = gl_MultiTexCoord1.xy/255.; + lmtexcoord.zw = lmcoord*lmcoord; + + gl_Position = ftransform(); + color = gl_Color; + + + #ifdef MC_NORMAL_MAP + tangent = vec4(normalize(gl_NormalMatrix *at_tangent.rgb),at_tangent.w); + #endif + + normalMat = vec4(normalize(gl_NormalMatrix *gl_Normal),1.0); + #ifdef TAA + gl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize; + #endif +} \ No newline at end of file diff --git a/shaders/world-1/gbuffers_basic.fsh b/shaders/world-1/gbuffers_basic.fsh new file mode 100644 index 0000000..97072f6 --- /dev/null +++ b/shaders/world-1/gbuffers_basic.fsh @@ -0,0 +1,4 @@ +#version 120 + +#define WORLD +#include "gbuffers_all_solid.fsh" \ No newline at end of file diff --git a/shaders/world-1/gbuffers_basic.vsh b/shaders/world-1/gbuffers_basic.vsh new file mode 100644 index 0000000..5078151 --- /dev/null +++ b/shaders/world-1/gbuffers_basic.vsh @@ -0,0 +1,4 @@ +#version 120 + +#define WORLD +#include "gbuffers_all_solid.vsh" \ No newline at end of file diff --git a/shaders/world-1/gbuffers_beaconbeam.fsh b/shaders/world-1/gbuffers_beaconbeam.fsh new file mode 100644 index 0000000..f4e7cfb --- /dev/null +++ b/shaders/world-1/gbuffers_beaconbeam.fsh @@ -0,0 +1,90 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + + + +varying vec4 lmtexcoord; +varying vec4 color; +varying vec4 normalMat; + +#define SHADOW_MAP_BIAS 0.8 + +uniform sampler2D texture; + + +uniform vec4 lightCol; +uniform vec3 sunVec; +uniform vec3 upVec; + +uniform vec2 texelSize; +uniform float skyIntensityNight; +uniform float skyIntensity; +uniform float sunElevation; +uniform float rainStrength; +uniform mat4 gbufferProjectionInverse; +uniform mat4 gbufferModelViewInverse; +uniform mat4 shadowModelView; +uniform mat4 shadowProjection; + +//faster and actually more precise than pow 2.2 +vec3 toLinear(vec3 sRGB){ + return sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878); +} + +#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) +#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) +vec3 toScreenSpace(vec3 p) { + vec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); + vec3 p3 = p * 2. - 1.; + vec4 fragposition = iProjDiag * p3.xyzz + gbufferProjectionInverse[3]; + return fragposition.xyz / fragposition.w; +} +float interleaved_gradientNoise(){ + vec2 coord = gl_FragCoord.xy; + float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)); + return noise; +} + + +float facos(float sx){ + float x = clamp(abs( sx ),0.,1.); + float a = sqrt( 1. - x ) * ( -0.16882 * x + 1.56734 ); + return sx > 0. ? a : 3.14159265359 - a; +} +#define SHADOW_MAP_BIAS 0.8 +float calcDistort(vec2 worlpos){ + + vec2 pos = worlpos * 1.165; + vec2 posSQ = pos*pos; + + float distb = pow(posSQ.x*posSQ.x*posSQ.x + posSQ.y*posSQ.y*posSQ.y, 1.0 / 6.0); + return 1.08695652/((1.0 - SHADOW_MAP_BIAS) + distb * SHADOW_MAP_BIAS); +} + +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +/* DRAWBUFFERS:2 */ +void main() { + + + gl_FragData[0] = texture2D(texture, lmtexcoord.xy)*color; + gl_FragData[0].a = 1.0; + + vec3 albedo = toLinear(gl_FragData[0].rgb); + + float torch_lightmap = lmtexcoord.z; + + vec3 diffuseLight = torch_lightmap*vec3(20.,30.,50.)*2./10. ; + + vec3 color = diffuseLight*albedo; + + + gl_FragData[0].rgb = color*0.01; + + + + +} diff --git a/shaders/world-1/gbuffers_beaconbeam.vsh b/shaders/world-1/gbuffers_beaconbeam.vsh new file mode 100644 index 0000000..704f4ea --- /dev/null +++ b/shaders/world-1/gbuffers_beaconbeam.vsh @@ -0,0 +1,54 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable +#define TAA + +/* +!! DO NOT REMOVE !! +This code is from Chocapic13' shaders +Read the terms of modification and sharing before changing something below please ! +!! DO NOT REMOVE !! +*/ + +varying vec4 lmtexcoord; +varying vec4 color; +varying vec4 normalMat; +#ifdef MC_NORMAL_MAP +varying vec4 tangent; +attribute vec4 at_tangent; +#endif + +uniform vec2 texelSize; +uniform int framemod8; + const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + lmtexcoord.xy = (gl_MultiTexCoord0).xy; + + vec2 lmcoord = gl_MultiTexCoord1.xy/255.; + lmtexcoord.zw = lmcoord; + + gl_Position = ftransform(); + color = gl_Color; + + + #ifdef MC_NORMAL_MAP + tangent = vec4(normalize(gl_NormalMatrix *at_tangent.rgb),at_tangent.w); + #endif + + normalMat = vec4(normalize(gl_NormalMatrix *gl_Normal),1.0); + #ifdef TAA + gl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize; + #endif +} \ No newline at end of file diff --git a/shaders/world-1/gbuffers_block.fsh b/shaders/world-1/gbuffers_block.fsh new file mode 100644 index 0000000..95943b4 --- /dev/null +++ b/shaders/world-1/gbuffers_block.fsh @@ -0,0 +1,5 @@ +#version 120 + +#define BLOCK_ENT +#define WORLD +#include "gbuffers_all_solid.fsh" \ No newline at end of file diff --git a/shaders/world-1/gbuffers_block.vsh b/shaders/world-1/gbuffers_block.vsh new file mode 100644 index 0000000..9974256 --- /dev/null +++ b/shaders/world-1/gbuffers_block.vsh @@ -0,0 +1,5 @@ +#version 120 + +#define BLOCK_ENT +#define WORLD +#include "gbuffers_all_solid.vsh" \ No newline at end of file diff --git a/shaders/world-1/gbuffers_clouds.fsh b/shaders/world-1/gbuffers_clouds.fsh new file mode 100644 index 0000000..563a191 --- /dev/null +++ b/shaders/world-1/gbuffers_clouds.fsh @@ -0,0 +1,9 @@ +#version 120 + +/* DRAWBUFFERS:3 */ + + + +void main() { + +} diff --git a/shaders/world-1/gbuffers_clouds.vsh b/shaders/world-1/gbuffers_clouds.vsh new file mode 100644 index 0000000..90c4b9e --- /dev/null +++ b/shaders/world-1/gbuffers_clouds.vsh @@ -0,0 +1,14 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + + +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + + gl_Position.w = -1.0; +} diff --git a/shaders/world-1/gbuffers_damagedblock.fsh b/shaders/world-1/gbuffers_damagedblock.fsh new file mode 100644 index 0000000..2225473 --- /dev/null +++ b/shaders/world-1/gbuffers_damagedblock.fsh @@ -0,0 +1,116 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + +#define PCF + + + + +varying vec4 lmtexcoord; +varying vec4 color; +varying vec4 normalMat; + + +uniform sampler2D texture; +uniform sampler2D gaux1; +uniform vec4 lightCol; +uniform vec3 sunVec; +uniform vec3 upVec; + +uniform vec2 texelSize; +uniform float skyIntensityNight; +uniform float skyIntensity; +uniform float sunElevation; +uniform float rainStrength; +uniform mat4 gbufferProjectionInverse; +uniform mat4 gbufferModelViewInverse; +uniform mat4 shadowModelView; +uniform mat4 shadowProjection; + +//faster and actually more precise than pow 2.2 +vec3 toLinear(vec3 sRGB){ + return sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878); +} + +#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) +#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) +vec3 toScreenSpace(vec3 p) { + vec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); + vec3 p3 = p * 2. - 1.; + vec4 fragposition = iProjDiag * p3.xyzz + gbufferProjectionInverse[3]; + return fragposition.xyz / fragposition.w; +} +float interleaved_gradientNoise(float temporal){ + vec2 coord = gl_FragCoord.xy; + float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)+temporal); + return noise; +} + +#ifdef PCF +const vec2 shadowOffsets[4] = vec2[4](vec2( 0.1250, 0.0000 ), +vec2( -0.1768, -0.1768 ), +vec2( -0.0000, 0.3750 ), +vec2( 0.3536, -0.3536 ) +); +#endif +float facos(float sx){ + float x = clamp(abs( sx ),0.,1.); + float a = sqrt( 1. - x ) * ( -0.16882 * x + 1.56734 ); + return sx > 0. ? a : 3.14159265359 - a; +} + + +vec2 tapLocation(int sampleNumber, float spinAngle,int nb, float nbRot) +{ + float startJitter = (spinAngle/6.28); + float alpha = sqrt(sampleNumber + startJitter/nb ); + float angle = alpha * (nbRot * 6.28) + spinAngle*2.; + + float ssR = alpha; + float sin_v, cos_v; + + sin_v = sin(angle); + cos_v = cos(angle); + + return vec2(cos_v, sin_v)*ssR; +} +uniform int framemod8; +uniform int framecouter; + const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); + + +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +/* DRAWBUFFERS:2 */ +void main() { + + gl_FragData[0] = texture2D(texture, lmtexcoord.xy)*color; + vec2 tempOffset=offsets[framemod8]; + + if (gl_FragData[0].a>0.1){ + vec3 albedo = toLinear(gl_FragData[0].rgb); + + vec3 normal = normalMat.xyz; + + + vec3 ambient = texture2D(gaux1,(lmtexcoord.zw*15.+0.5)*texelSize).rgb; + + vec3 diffuseLight = ambient; + + + gl_FragData[0].rgb = diffuseLight*albedo*8./1500.*0.1; + } + + + +} diff --git a/shaders/world-1/gbuffers_damagedblock.vsh b/shaders/world-1/gbuffers_damagedblock.vsh new file mode 100644 index 0000000..4ced627 --- /dev/null +++ b/shaders/world-1/gbuffers_damagedblock.vsh @@ -0,0 +1,54 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable +#define TAA + +/* +!! DO NOT REMOVE !! +This code is from Chocapic13' shaders +Read the terms of modification and sharing before changing something below please ! +!! DO NOT REMOVE !! +*/ + +varying vec4 lmtexcoord; +varying vec4 color; +varying vec4 normalMat; +#ifdef MC_NORMAL_MAP +varying vec4 tangent; +attribute vec4 at_tangent; +#endif + +uniform vec2 texelSize; +uniform int framemod8; + const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + lmtexcoord.xy = (gl_MultiTexCoord0).xy; + + vec2 lmcoord = gl_MultiTexCoord1.xy/255.; + lmtexcoord.zw = lmcoord; + + gl_Position = ftransform(); + color = gl_Color; + + + #ifdef MC_NORMAL_MAP + tangent = vec4(normalize(gl_NormalMatrix *at_tangent.rgb),at_tangent.w); + #endif + + normalMat = vec4(normalize(gl_NormalMatrix *gl_Normal),1.0); + #ifdef TAA + gl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize; + #endif +} diff --git a/shaders/world-1/gbuffers_entities.fsh b/shaders/world-1/gbuffers_entities.fsh new file mode 100644 index 0000000..0cd3e0d --- /dev/null +++ b/shaders/world-1/gbuffers_entities.fsh @@ -0,0 +1,5 @@ +#version 120 + +#define WORLD +#define ENTITIES +#include "gbuffers_all_solid.fsh" \ No newline at end of file diff --git a/shaders/world-1/gbuffers_entities.vsh b/shaders/world-1/gbuffers_entities.vsh new file mode 100644 index 0000000..f4f07a4 --- /dev/null +++ b/shaders/world-1/gbuffers_entities.vsh @@ -0,0 +1,6 @@ +#version 120 + + +// #define WORLD +#define ENTITIES +#include "gbuffers_all_solid.vsh" \ No newline at end of file diff --git a/shaders/world-1/gbuffers_hand.fsh b/shaders/world-1/gbuffers_hand.fsh new file mode 100644 index 0000000..21ac244 --- /dev/null +++ b/shaders/world-1/gbuffers_hand.fsh @@ -0,0 +1,4 @@ +#version 120 + +#define HAND +#include "gbuffers_all_solid.fsh" \ No newline at end of file diff --git a/shaders/world-1/gbuffers_hand.vsh b/shaders/world-1/gbuffers_hand.vsh new file mode 100644 index 0000000..39504ed --- /dev/null +++ b/shaders/world-1/gbuffers_hand.vsh @@ -0,0 +1,5 @@ +#version 120 + +#define WORLD +#define HAND +#include "gbuffers_all_solid.vsh" \ No newline at end of file diff --git a/shaders/world-1/gbuffers_hand_water.fsh b/shaders/world-1/gbuffers_hand_water.fsh new file mode 100644 index 0000000..2225473 --- /dev/null +++ b/shaders/world-1/gbuffers_hand_water.fsh @@ -0,0 +1,116 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + +#define PCF + + + + +varying vec4 lmtexcoord; +varying vec4 color; +varying vec4 normalMat; + + +uniform sampler2D texture; +uniform sampler2D gaux1; +uniform vec4 lightCol; +uniform vec3 sunVec; +uniform vec3 upVec; + +uniform vec2 texelSize; +uniform float skyIntensityNight; +uniform float skyIntensity; +uniform float sunElevation; +uniform float rainStrength; +uniform mat4 gbufferProjectionInverse; +uniform mat4 gbufferModelViewInverse; +uniform mat4 shadowModelView; +uniform mat4 shadowProjection; + +//faster and actually more precise than pow 2.2 +vec3 toLinear(vec3 sRGB){ + return sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878); +} + +#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) +#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) +vec3 toScreenSpace(vec3 p) { + vec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); + vec3 p3 = p * 2. - 1.; + vec4 fragposition = iProjDiag * p3.xyzz + gbufferProjectionInverse[3]; + return fragposition.xyz / fragposition.w; +} +float interleaved_gradientNoise(float temporal){ + vec2 coord = gl_FragCoord.xy; + float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)+temporal); + return noise; +} + +#ifdef PCF +const vec2 shadowOffsets[4] = vec2[4](vec2( 0.1250, 0.0000 ), +vec2( -0.1768, -0.1768 ), +vec2( -0.0000, 0.3750 ), +vec2( 0.3536, -0.3536 ) +); +#endif +float facos(float sx){ + float x = clamp(abs( sx ),0.,1.); + float a = sqrt( 1. - x ) * ( -0.16882 * x + 1.56734 ); + return sx > 0. ? a : 3.14159265359 - a; +} + + +vec2 tapLocation(int sampleNumber, float spinAngle,int nb, float nbRot) +{ + float startJitter = (spinAngle/6.28); + float alpha = sqrt(sampleNumber + startJitter/nb ); + float angle = alpha * (nbRot * 6.28) + spinAngle*2.; + + float ssR = alpha; + float sin_v, cos_v; + + sin_v = sin(angle); + cos_v = cos(angle); + + return vec2(cos_v, sin_v)*ssR; +} +uniform int framemod8; +uniform int framecouter; + const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); + + +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +/* DRAWBUFFERS:2 */ +void main() { + + gl_FragData[0] = texture2D(texture, lmtexcoord.xy)*color; + vec2 tempOffset=offsets[framemod8]; + + if (gl_FragData[0].a>0.1){ + vec3 albedo = toLinear(gl_FragData[0].rgb); + + vec3 normal = normalMat.xyz; + + + vec3 ambient = texture2D(gaux1,(lmtexcoord.zw*15.+0.5)*texelSize).rgb; + + vec3 diffuseLight = ambient; + + + gl_FragData[0].rgb = diffuseLight*albedo*8./1500.*0.1; + } + + + +} diff --git a/shaders/world-1/gbuffers_hand_water.vsh b/shaders/world-1/gbuffers_hand_water.vsh new file mode 100644 index 0000000..68dc1b7 --- /dev/null +++ b/shaders/world-1/gbuffers_hand_water.vsh @@ -0,0 +1,56 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable +#define TAA + +/* +!! DO NOT REMOVE !! +This code is from Chocapic13' shaders +Read the terms of modification and sharing before changing something below please ! +!! DO NOT REMOVE !! +*/ + +varying vec4 lmtexcoord; +varying vec4 color; +varying vec4 normalMat; +#ifdef MC_NORMAL_MAP +varying vec4 tangent; +attribute vec4 at_tangent; +#endif + + + +uniform vec2 texelSize; +uniform int framemod8; + const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + lmtexcoord.xy = (gl_MultiTexCoord0).xy; + + vec2 lmcoord = gl_MultiTexCoord1.xy/255.; + lmtexcoord.zw = lmcoord; + + gl_Position = ftransform(); + color = gl_Color; + + + #ifdef MC_NORMAL_MAP + tangent = vec4(normalize(gl_NormalMatrix *at_tangent.rgb),at_tangent.w); + #endif + + normalMat = vec4(normalize(gl_NormalMatrix *gl_Normal),1.0); + #ifdef TAA + gl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize; + #endif +} diff --git a/shaders/world-1/gbuffers_skybasic.fsh b/shaders/world-1/gbuffers_skybasic.fsh new file mode 100644 index 0000000..563a191 --- /dev/null +++ b/shaders/world-1/gbuffers_skybasic.fsh @@ -0,0 +1,9 @@ +#version 120 + +/* DRAWBUFFERS:3 */ + + + +void main() { + +} diff --git a/shaders/world-1/gbuffers_skybasic.vsh b/shaders/world-1/gbuffers_skybasic.vsh new file mode 100644 index 0000000..90c4b9e --- /dev/null +++ b/shaders/world-1/gbuffers_skybasic.vsh @@ -0,0 +1,14 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + + +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + + gl_Position.w = -1.0; +} diff --git a/shaders/world-1/gbuffers_skytextured.fsh b/shaders/world-1/gbuffers_skytextured.fsh new file mode 100644 index 0000000..8ad1592 --- /dev/null +++ b/shaders/world-1/gbuffers_skytextured.fsh @@ -0,0 +1,24 @@ +#version 120 + +/* +!! DO NOT REMOVE !! +This code is from Chocapic13' shaders +Read the terms of modification and sharing before changing something below please ! +!! DO NOT REMOVE !! +*/ + +/* DRAWBUFFERS:1 */ + +varying vec4 color; +varying vec2 texcoord; +//faster and actually more precise than pow 2.2 +vec3 toLinear(vec3 sRGB){ + return sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878); +} + +uniform sampler2D texture; +void main() { + + gl_FragData[0] = texture2D(texture,texcoord.xy)*color; + gl_FragData[0].rgb = gl_FragData[0].rgb*gl_FragData[0].a; +} diff --git a/shaders/world-1/gbuffers_skytextured.vsh b/shaders/world-1/gbuffers_skytextured.vsh new file mode 100644 index 0000000..2c401c5 --- /dev/null +++ b/shaders/world-1/gbuffers_skytextured.vsh @@ -0,0 +1,36 @@ +#version 120 +#define TAA + +/* +!! DO NOT REMOVE !! +This code is from Chocapic13' shaders +Read the terms of modification and sharing before changing something below please ! +!! DO NOT REMOVE !! +*/ + +varying vec4 color; +varying vec2 texcoord; + +uniform vec2 texelSize; +uniform int framemod8; + const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); +void main() { + texcoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).st; + + + + color = gl_Color; + + gl_Position = ftransform(); + #ifdef TAA + gl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize; + #endif +} + diff --git a/shaders/world-1/gbuffers_spidereyes.fsh b/shaders/world-1/gbuffers_spidereyes.fsh new file mode 100644 index 0000000..aa3de8b --- /dev/null +++ b/shaders/world-1/gbuffers_spidereyes.fsh @@ -0,0 +1,32 @@ +#version 120 + +/* +!! DO NOT REMOVE !! +This code is from Chocapic13' shaders +Read the terms of modification and sharing before changing something below please ! +!! DO NOT REMOVE !! +*/ + + +varying vec4 color; +varying vec2 texcoord; + +uniform sampler2D texture; +vec3 toLinear(vec3 sRGB){ + return sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878); +} +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + vec4 albedo = texture2D(texture, texcoord); + + albedo *= color; + albedo.rgb = toLinear(albedo.rgb)*0.33; +/* DRAWBUFFERS:2 */ + gl_FragData[0] = albedo; + +} diff --git a/shaders/world-1/gbuffers_spidereyes.vsh b/shaders/world-1/gbuffers_spidereyes.vsh new file mode 100644 index 0000000..cdc23a4 --- /dev/null +++ b/shaders/world-1/gbuffers_spidereyes.vsh @@ -0,0 +1,36 @@ +#version 120 +#define TAA + +/* +!! DO NOT REMOVE !! +This code is from Chocapic13' shaders +Read the terms of modification and sharing before changing something below please ! +!! DO NOT REMOVE !! +*/ + +varying vec4 color; +varying vec2 texcoord; + +uniform vec2 texelSize; +uniform int framemod8; + const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); +void main() { + + + texcoord = (gl_MultiTexCoord0).xy; + color = gl_Color; + + gl_Position = ftransform(); + + #ifdef TAA + gl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize; + #endif + +} \ No newline at end of file diff --git a/shaders/world-1/gbuffers_terrain.fsh b/shaders/world-1/gbuffers_terrain.fsh new file mode 100644 index 0000000..97072f6 --- /dev/null +++ b/shaders/world-1/gbuffers_terrain.fsh @@ -0,0 +1,4 @@ +#version 120 + +#define WORLD +#include "gbuffers_all_solid.fsh" \ No newline at end of file diff --git a/shaders/world-1/gbuffers_terrain.vsh b/shaders/world-1/gbuffers_terrain.vsh new file mode 100644 index 0000000..5078151 --- /dev/null +++ b/shaders/world-1/gbuffers_terrain.vsh @@ -0,0 +1,4 @@ +#version 120 + +#define WORLD +#include "gbuffers_all_solid.vsh" \ No newline at end of file diff --git a/shaders/world-1/gbuffers_textured.fsh b/shaders/world-1/gbuffers_textured.fsh new file mode 100644 index 0000000..2225473 --- /dev/null +++ b/shaders/world-1/gbuffers_textured.fsh @@ -0,0 +1,116 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + +#define PCF + + + + +varying vec4 lmtexcoord; +varying vec4 color; +varying vec4 normalMat; + + +uniform sampler2D texture; +uniform sampler2D gaux1; +uniform vec4 lightCol; +uniform vec3 sunVec; +uniform vec3 upVec; + +uniform vec2 texelSize; +uniform float skyIntensityNight; +uniform float skyIntensity; +uniform float sunElevation; +uniform float rainStrength; +uniform mat4 gbufferProjectionInverse; +uniform mat4 gbufferModelViewInverse; +uniform mat4 shadowModelView; +uniform mat4 shadowProjection; + +//faster and actually more precise than pow 2.2 +vec3 toLinear(vec3 sRGB){ + return sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878); +} + +#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) +#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) +vec3 toScreenSpace(vec3 p) { + vec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); + vec3 p3 = p * 2. - 1.; + vec4 fragposition = iProjDiag * p3.xyzz + gbufferProjectionInverse[3]; + return fragposition.xyz / fragposition.w; +} +float interleaved_gradientNoise(float temporal){ + vec2 coord = gl_FragCoord.xy; + float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)+temporal); + return noise; +} + +#ifdef PCF +const vec2 shadowOffsets[4] = vec2[4](vec2( 0.1250, 0.0000 ), +vec2( -0.1768, -0.1768 ), +vec2( -0.0000, 0.3750 ), +vec2( 0.3536, -0.3536 ) +); +#endif +float facos(float sx){ + float x = clamp(abs( sx ),0.,1.); + float a = sqrt( 1. - x ) * ( -0.16882 * x + 1.56734 ); + return sx > 0. ? a : 3.14159265359 - a; +} + + +vec2 tapLocation(int sampleNumber, float spinAngle,int nb, float nbRot) +{ + float startJitter = (spinAngle/6.28); + float alpha = sqrt(sampleNumber + startJitter/nb ); + float angle = alpha * (nbRot * 6.28) + spinAngle*2.; + + float ssR = alpha; + float sin_v, cos_v; + + sin_v = sin(angle); + cos_v = cos(angle); + + return vec2(cos_v, sin_v)*ssR; +} +uniform int framemod8; +uniform int framecouter; + const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); + + +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +/* DRAWBUFFERS:2 */ +void main() { + + gl_FragData[0] = texture2D(texture, lmtexcoord.xy)*color; + vec2 tempOffset=offsets[framemod8]; + + if (gl_FragData[0].a>0.1){ + vec3 albedo = toLinear(gl_FragData[0].rgb); + + vec3 normal = normalMat.xyz; + + + vec3 ambient = texture2D(gaux1,(lmtexcoord.zw*15.+0.5)*texelSize).rgb; + + vec3 diffuseLight = ambient; + + + gl_FragData[0].rgb = diffuseLight*albedo*8./1500.*0.1; + } + + + +} diff --git a/shaders/world-1/gbuffers_textured.vsh b/shaders/world-1/gbuffers_textured.vsh new file mode 100644 index 0000000..51f3fd7 --- /dev/null +++ b/shaders/world-1/gbuffers_textured.vsh @@ -0,0 +1,74 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + +#define TAA +#define WAVY_PLANTS +#define WAVY_STRENGTH 1.0 //[0.1 0.25 0.5 0.75 1.0 1.25 1.5 1.75 2.0] +#define WAVY_SPEED 1.0 //[0.001 0.01 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 1.0 1.25 1.5 2.0 3.0 4.0] +#define SEPARATE_AO +//#define POM +//#define USE_LUMINANCE_AS_HEIGHTMAP //Can generate POM on any texturepack (may look weird in some cases) + +#ifndef USE_LUMINANCE_AS_HEIGHTMAP +#ifndef MC_NORMAL_MAP +#undef POM +#endif +#endif + +#ifdef POM +#define MC_NORMAL_MAP +#endif + +/* +!! DO NOT REMOVE !! +This code is from Chocapic13' shaders +Read the terms of modification and sharing before changing something below please ! +!! DO NOT REMOVE !! +*/ + +varying vec4 lmtexcoord; +varying vec4 color; +varying vec4 normalMat; + + +uniform vec2 texelSize; +uniform int framemod8; + const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); +#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) +#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) +vec4 toClipSpace3(vec3 viewSpacePosition) { + return vec4(projMAD(gl_ProjectionMatrix, viewSpacePosition),-viewSpacePosition.z); +} + + +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + lmtexcoord.xy = (gl_MultiTexCoord0).xy; + + vec2 lmcoord = gl_MultiTexCoord1.xy/255.; + lmtexcoord.zw = lmcoord; + + vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz; + + color = gl_Color; + + normalMat = vec4(normalize(gl_NormalMatrix *gl_Normal),0.0); + + gl_Position = toClipSpace3(position); + + #ifdef TAA + gl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize; + #endif +} diff --git a/shaders/world-1/gbuffers_textured_lit.fsh b/shaders/world-1/gbuffers_textured_lit.fsh new file mode 100644 index 0000000..2225473 --- /dev/null +++ b/shaders/world-1/gbuffers_textured_lit.fsh @@ -0,0 +1,116 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + +#define PCF + + + + +varying vec4 lmtexcoord; +varying vec4 color; +varying vec4 normalMat; + + +uniform sampler2D texture; +uniform sampler2D gaux1; +uniform vec4 lightCol; +uniform vec3 sunVec; +uniform vec3 upVec; + +uniform vec2 texelSize; +uniform float skyIntensityNight; +uniform float skyIntensity; +uniform float sunElevation; +uniform float rainStrength; +uniform mat4 gbufferProjectionInverse; +uniform mat4 gbufferModelViewInverse; +uniform mat4 shadowModelView; +uniform mat4 shadowProjection; + +//faster and actually more precise than pow 2.2 +vec3 toLinear(vec3 sRGB){ + return sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878); +} + +#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) +#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) +vec3 toScreenSpace(vec3 p) { + vec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); + vec3 p3 = p * 2. - 1.; + vec4 fragposition = iProjDiag * p3.xyzz + gbufferProjectionInverse[3]; + return fragposition.xyz / fragposition.w; +} +float interleaved_gradientNoise(float temporal){ + vec2 coord = gl_FragCoord.xy; + float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)+temporal); + return noise; +} + +#ifdef PCF +const vec2 shadowOffsets[4] = vec2[4](vec2( 0.1250, 0.0000 ), +vec2( -0.1768, -0.1768 ), +vec2( -0.0000, 0.3750 ), +vec2( 0.3536, -0.3536 ) +); +#endif +float facos(float sx){ + float x = clamp(abs( sx ),0.,1.); + float a = sqrt( 1. - x ) * ( -0.16882 * x + 1.56734 ); + return sx > 0. ? a : 3.14159265359 - a; +} + + +vec2 tapLocation(int sampleNumber, float spinAngle,int nb, float nbRot) +{ + float startJitter = (spinAngle/6.28); + float alpha = sqrt(sampleNumber + startJitter/nb ); + float angle = alpha * (nbRot * 6.28) + spinAngle*2.; + + float ssR = alpha; + float sin_v, cos_v; + + sin_v = sin(angle); + cos_v = cos(angle); + + return vec2(cos_v, sin_v)*ssR; +} +uniform int framemod8; +uniform int framecouter; + const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); + + +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +/* DRAWBUFFERS:2 */ +void main() { + + gl_FragData[0] = texture2D(texture, lmtexcoord.xy)*color; + vec2 tempOffset=offsets[framemod8]; + + if (gl_FragData[0].a>0.1){ + vec3 albedo = toLinear(gl_FragData[0].rgb); + + vec3 normal = normalMat.xyz; + + + vec3 ambient = texture2D(gaux1,(lmtexcoord.zw*15.+0.5)*texelSize).rgb; + + vec3 diffuseLight = ambient; + + + gl_FragData[0].rgb = diffuseLight*albedo*8./1500.*0.1; + } + + + +} diff --git a/shaders/world-1/gbuffers_textured_lit.vsh b/shaders/world-1/gbuffers_textured_lit.vsh new file mode 100644 index 0000000..68dc1b7 --- /dev/null +++ b/shaders/world-1/gbuffers_textured_lit.vsh @@ -0,0 +1,56 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable +#define TAA + +/* +!! DO NOT REMOVE !! +This code is from Chocapic13' shaders +Read the terms of modification and sharing before changing something below please ! +!! DO NOT REMOVE !! +*/ + +varying vec4 lmtexcoord; +varying vec4 color; +varying vec4 normalMat; +#ifdef MC_NORMAL_MAP +varying vec4 tangent; +attribute vec4 at_tangent; +#endif + + + +uniform vec2 texelSize; +uniform int framemod8; + const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + lmtexcoord.xy = (gl_MultiTexCoord0).xy; + + vec2 lmcoord = gl_MultiTexCoord1.xy/255.; + lmtexcoord.zw = lmcoord; + + gl_Position = ftransform(); + color = gl_Color; + + + #ifdef MC_NORMAL_MAP + tangent = vec4(normalize(gl_NormalMatrix *at_tangent.rgb),at_tangent.w); + #endif + + normalMat = vec4(normalize(gl_NormalMatrix *gl_Normal),1.0); + #ifdef TAA + gl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize; + #endif +} diff --git a/shaders/world-1/gbuffers_water.fsh b/shaders/world-1/gbuffers_water.fsh new file mode 100644 index 0000000..5d6f344 --- /dev/null +++ b/shaders/world-1/gbuffers_water.fsh @@ -0,0 +1,334 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + +varying vec4 lmtexcoord; +varying vec4 color; +varying vec4 normalMat; +varying vec3 binormal; +varying vec3 tangent; +varying vec3 viewVector; +varying float dist; +#define SCREENSPACE_REFLECTIONS //can be really expensive at high resolutions/render quality, especially on ice +#define SSR_STEPS 30 //[10 15 20 25 30 35 40 50 100 200 400] +#define SUN_MICROFACET_SPECULAR // If enabled will use realistic rough microfacet model, else will just reflect the sun. No performance impact. +#define saturate(x) clamp(x,0.0,1.0) + +uniform sampler2D texture; +uniform sampler2D noisetex; +uniform sampler2D gaux2; +uniform sampler2D gaux1; +uniform sampler2D depthtex1; + +uniform vec4 lightCol; +uniform vec3 sunVec; +uniform float frameTimeCounter; +uniform float lightSign; +uniform float near; +uniform float far; +uniform float moonIntensity; +uniform float sunIntensity; +uniform vec3 sunColor; +uniform vec3 nsunColor; +uniform vec3 upVec; +uniform float sunElevation; +uniform float fogAmount; +uniform vec2 texelSize; +uniform float rainStrength; +uniform float skyIntensityNight; +uniform float skyIntensity; +uniform mat4 gbufferPreviousModelView; +uniform vec3 previousCameraPosition; +uniform int framemod8; +uniform int frameCounter; +uniform int isEyeInWater; +#include "lib/color_transforms.glsl" +#include "lib/projections.glsl" +#include "lib/sky_gradient.glsl" +#include "lib/waterBump.glsl" +#include "lib/clouds.glsl" +#include "lib/stars.glsl" + const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); +float interleaved_gradientNoise(float temporal){ + vec2 coord = gl_FragCoord.xy; + float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)+temporal); + return noise; +} +float blueNoise(){ + return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); +} +float invLinZ (float lindepth){ + return -((2.0*near/lindepth)-far-near)/(far-near); +} +float ld(float dist) { + return (2.0 * near) / (far + near - dist * (far - near)); +} +vec3 nvec3(vec4 pos){ + return pos.xyz/pos.w; +} + +vec4 nvec4(vec3 pos){ + return vec4(pos.xyz, 1.0); +} +vec3 rayTrace(vec3 dir,vec3 position,float dither, float fresnel){ + + float quality = mix(15,SSR_STEPS,fresnel); + vec3 clipPosition = toClipSpace3(position); + float rayLength = ((position.z + dir.z * far*sqrt(3.)) > -near) ? + (-near -position.z) / dir.z : far*sqrt(3.); + vec3 direction = normalize(toClipSpace3(position+dir*rayLength)-clipPosition); //convert to clip space + direction.xy = normalize(direction.xy); + + //get at which length the ray intersects with the edge of the screen + vec3 maxLengths = (step(0.,direction)-clipPosition) / direction; + float mult = min(min(maxLengths.x,maxLengths.y),maxLengths.z); + + + vec3 stepv = direction * mult / quality; + + + + + vec3 spos = clipPosition + stepv*dither; + float minZ = clipPosition.z; + float maxZ = spos.z+stepv.z*0.5; + spos.xy+=offsets[framemod8]*texelSize*0.5; + //raymarch on a quarter res depth buffer for improved cache coherency + + + for (int i = 0; i < int(quality+1); i++) { + + float sp=texelFetch2D(depthtex1,ivec2(spos.xy/texelSize),0).x; + + if(sp <= max(maxZ,minZ) && sp >= min(maxZ,minZ)){ + return vec3(spos.xy,sp); + + } + spos += stepv; + //small bias + minZ = maxZ-0.00004/ld(spos.z); + maxZ += stepv.z; + } + + return vec3(1.1); +} + + +float facos(float sx){ + float x = clamp(abs( sx ),0.,1.); + float a = sqrt( 1. - x ) * ( -0.16882 * x + 1.56734 ); + return sx > 0. ? a : pi - a; +} + + + + + float bayer2(vec2 a){ + a = floor(a); + return fract(dot(a,vec2(0.5,a.y*0.75))); +} + +float cdist(vec2 coord) { + return max(abs(coord.s-0.5),abs(coord.t-0.5))*2.0; +} + + #define PW_DEPTH 1.0 //[0.5 1.0 1.5 2.0 2.5 3.0] + #define PW_POINTS 1 //[2 4 6 8 16 32] + #define bayer4(a) (bayer2( .5*(a))*.25+bayer2(a)) +#define bayer8(a) (bayer4( .5*(a))*.25+bayer2(a)) +#define bayer16(a) (bayer8( .5*(a))*.25+bayer2(a)) +#define bayer32(a) (bayer16(.5*(a))*.25+bayer2(a)) +#define bayer64(a) (bayer32(.5*(a))*.25+bayer2(a)) +#define bayer128(a) fract(bayer64(.5*(a))*.25+bayer2(a)) +vec3 getParallaxDisplacement(vec3 posxz, float iswater,float bumpmult,vec3 viewVec) { + float waveZ = mix(20.0,0.25,iswater); + float waveM = mix(0.0,4.0,iswater); + + vec3 parallaxPos = posxz; + vec2 vec = viewVector.xy * (1.0 / float(PW_POINTS)) * 22.0 * PW_DEPTH; + float waterHeight = getWaterHeightmap(posxz.xz, waveM, waveZ, iswater) * 0.5; +parallaxPos.xz += waterHeight * vec; + + return parallaxPos; + +} +vec2 tapLocation(int sampleNumber,int nb, float nbRot,float jitter,float distort) +{ + float alpha = (sampleNumber+jitter)/nb; + float angle = jitter*6.28 + alpha * nbRot * 6.28; + + float sin_v, cos_v; + + sin_v = sin(angle); + cos_v = cos(angle); + + return vec2(cos_v, sin_v)*sqrt(alpha); +} +//Low discrepancy 2D sequence, integration error is as low as sobol but easier to compute : http://extremelearning.com.au/unreasonable-effectiveness-of-quasirandom-sequences/ +vec2 R2_samples(int n){ + vec2 alpha = vec2(0.75487765, 0.56984026); + return fract(alpha * n); +} +vec4 hash44(vec4 p4) +{ + p4 = fract(p4 * vec4(.1031, .1030, .0973, .1099)); + p4 += dot(p4, p4.wzxy+33.33); + return fract((p4.xxyz+p4.yzzw)*p4.zywx); +} +vec3 TangentToWorld(vec3 N, vec3 H) +{ + vec3 UpVector = abs(N.z) < 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(1.0, 0.0, 0.0); + vec3 T = normalize(cross(UpVector, N)); + vec3 B = cross(N, T); + + return vec3((T * H.x) + (B * H.y) + (N * H.z)); +} +float GGX (vec3 n, vec3 v, vec3 l, float r, float F0) { + r*=r;r*=r; + + vec3 h = l + v; + float hn = inversesqrt(dot(h, h)); + + float dotLH = clamp(dot(h,l)*hn,0.,1.); + float dotNH = clamp(dot(h,n)*hn,0.,1.); + float dotNL = clamp(dot(n,l),0.,1.); + float dotNHsq = dotNH*dotNH; + + float denom = dotNHsq * r - dotNHsq + 1.; + float D = r / (3.141592653589793 * denom * denom); + float F = F0 + (1. - F0) * exp2((-5.55473*dotLH-6.98316)*dotLH); + float k2 = .25 * r; + + return dotNL * D * F / (dotLH*dotLH*(1.0-k2)+k2); +} + +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +/* DRAWBUFFERS:27 */ +void main() { + + vec2 tempOffset=offsets[framemod8]; + float iswater = normalMat.w; + vec3 fragC = gl_FragCoord.xyz*vec3(texelSize,1.0); + vec3 fragpos = toScreenSpace(gl_FragCoord.xyz*vec3(texelSize,1.0)-vec3(vec2(tempOffset)*texelSize*0.5,0.0)); + gl_FragData[0] = texture2D(texture, lmtexcoord.xy)*color; + vec3 albedo = toLinear(gl_FragData[0].rgb); + if (iswater > 0.4) { + albedo = vec3(0.42,0.6,0.7); + gl_FragData[0] = vec4(0.42,0.6,0.7,0.7); + } + if (iswater > 0.9) { + gl_FragData[0] = vec4(0.0); + } + + + + + vec3 normal = normalMat.xyz; + + vec3 p3 = mat3(gbufferModelViewInverse) * fragpos + gbufferModelViewInverse[3].xyz; + mat3 tbnMatrix = mat3(tangent.x, binormal.x, normal.x, + tangent.y, binormal.y, normal.y, + tangent.z, binormal.z, normal.z); + if (iswater > 0.4){ + float bumpmult = 1.; + if (iswater > 0.9) + bumpmult = 1.; + float parallaxMult = bumpmult; + vec3 posxz = p3+cameraPosition; + posxz.xz-=posxz.y; + if (iswater < 0.9) + posxz.xz *= 3.0; + vec3 bump; + + + posxz.xyz = getParallaxDisplacement(posxz,iswater,bumpmult,normalize(tbnMatrix*fragpos)); + + bump = normalize(getWaveHeight(posxz.xz,iswater)); + + + + bump = bump * vec3(bumpmult, bumpmult, bumpmult) + vec3(0.0f, 0.0f, 1.0f - bumpmult); + + normal = normalize(bump * tbnMatrix); + } + + + vec3 diffuseLight = texture2D(gaux1,(lmtexcoord.zw*15.+0.5)*texelSize).rgb; + vec3 color = diffuseLight*albedo*8./150./3.; + + + if (iswater > 0.0){ + float f0 = iswater > 0.1? 0.02 : 0.05*(1.0-gl_FragData[0].a); + + float roughness = 0.02; + + float emissive = 0.0; + float F0 = f0; + + vec3 reflectedVector = reflect(normalize(fragpos), normal); + float normalDotEye = dot(normal, normalize(fragpos)); + float fresnel = pow(clamp(1.0 + normalDotEye,0.0,1.0), 5.0); + fresnel = mix(F0,1.0,fresnel); + if (iswater > 0.4){ + fresnel = fresnel*0.87+0.04; //faking additionnal roughness to the water + roughness = 0.1; + } + + + + vec3 wrefl = mat3(gbufferModelViewInverse)*reflectedVector; + vec4 sky_c = skyCloudsFromTex(wrefl,gaux1)*(1.0-isEyeInWater); + sky_c.rgb *= lmtexcoord.w*lmtexcoord.w*255*255/240./240./150.*8./3.; + + + + + + vec4 reflection = vec4(sky_c.rgb,0.); + #ifdef SCREENSPACE_REFLECTIONS + vec3 rtPos = rayTrace(reflectedVector,fragpos.xyz,blueNoise(), fresnel); + if (rtPos.z <1.){ + + vec4 fragpositionPrev = gbufferProjectionInverse * vec4(rtPos*2.-1.,1.); + fragpositionPrev /= fragpositionPrev.w; + + vec3 sampleP = fragpositionPrev.xyz; + fragpositionPrev = gbufferModelViewInverse * fragpositionPrev; + + + + vec4 previousPosition = fragpositionPrev + vec4(cameraPosition-previousCameraPosition,0.); + previousPosition = gbufferPreviousModelView * previousPosition; + previousPosition = gbufferPreviousProjection * previousPosition; + previousPosition.xy = previousPosition.xy/previousPosition.w*0.5+0.5; + reflection.a = 1.0; + reflection.rgb = texture2D(gaux2,previousPosition.xy).rgb; + } + #endif + reflection.rgb = mix(sky_c.rgb, reflection.rgb, reflection.a); + vec3 reflected= reflection.rgb*fresnel; + + + float alpha0 = gl_FragData[0].a; + + //correct alpha channel with fresnel + gl_FragData[0].a = -gl_FragData[0].a*fresnel+gl_FragData[0].a+fresnel; + gl_FragData[0].rgb =clamp(color/gl_FragData[0].a*alpha0*(1.0-fresnel)*0.1+reflected/gl_FragData[0].a*0.1,0.0,65100.0); + if (gl_FragData[0].r > 65000.) gl_FragData[0].rgba = vec4(0.); + } + else + gl_FragData[0].rgb = color*0.1; + + gl_FragData[1] = vec4(albedo,iswater); + +} diff --git a/shaders/world-1/gbuffers_water.vsh b/shaders/world-1/gbuffers_water.vsh new file mode 100644 index 0000000..ec64b46 --- /dev/null +++ b/shaders/world-1/gbuffers_water.vsh @@ -0,0 +1,89 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + +#define TAA + + +/* +!! DO NOT REMOVE !! +This code is from Chocapic13' shaders +Read the terms of modification and sharing before changing something below please ! +!! DO NOT REMOVE !! +*/ + +varying vec4 lmtexcoord; +varying vec4 color; + varying vec4 normalMat; +varying vec3 binormal; +varying vec3 tangent; +varying float dist; +uniform mat4 gbufferModelViewInverse; +varying vec3 viewVector; +attribute vec4 at_tangent; +attribute vec4 mc_Entity; + +#define SHADOW_MAP_BIAS 0.8 + + +uniform vec2 texelSize; +uniform int framemod8; + const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); +#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) +#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) +vec4 toClipSpace3(vec3 viewSpacePosition) { + return vec4(projMAD(gl_ProjectionMatrix, viewSpacePosition),-viewSpacePosition.z); +} +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + lmtexcoord.xy = (gl_MultiTexCoord0).xy; + vec2 lmcoord = gl_MultiTexCoord1.xy/255.; + lmtexcoord.zw = lmcoord; + + vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz; + gl_Position = toClipSpace3(position); + color = gl_Color; + float mat = 0.0; + if(mc_Entity.x == 8.0 || mc_Entity.x == 9.0) { + mat = 1.0; + gl_Position.z -= 1e-4; + } + + + if(mc_Entity.x == 79.0) mat = 0.5; + if (mc_Entity.x == 10002) mat = 0.0001; + normalMat = vec4(normalize( gl_NormalMatrix*gl_Normal),mat); + + + + + tangent = normalize( gl_NormalMatrix *at_tangent.rgb); + binormal = normalize(cross(tangent.rgb,normalMat.xyz)*at_tangent.w); + + mat3 tbnMatrix = mat3(tangent.x, binormal.x, normalMat.x, + tangent.y, binormal.y, normalMat.y, + tangent.z, binormal.z, normalMat.z); + + dist = length(gl_ModelViewMatrix * gl_Vertex); + + viewVector = ( gl_ModelViewMatrix * gl_Vertex).xyz; + viewVector = normalize(tbnMatrix * viewVector); + + + + #ifdef TAA + gl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize; + #endif + +} diff --git a/shaders/world-1/gbuffers_weather.fsh b/shaders/world-1/gbuffers_weather.fsh new file mode 100644 index 0000000..f169e8b --- /dev/null +++ b/shaders/world-1/gbuffers_weather.fsh @@ -0,0 +1,49 @@ +#version 120 + + +varying vec4 lmtexcoord; +varying vec4 color; + +uniform sampler2D texture; +uniform sampler2D gaux1; +uniform vec4 lightCol; +uniform vec3 sunVec; + +uniform vec2 texelSize; +uniform float skyIntensityNight; +uniform float skyIntensity; +uniform float rainStrength; + +uniform mat4 gbufferProjectionInverse; + +#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) +#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) +vec3 toLinear(vec3 sRGB){ + return sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878); +} + + +vec3 toScreenSpaceVector(vec3 p) { + vec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); + vec3 p3 = p * 2. - 1.; + vec4 fragposition = iProjDiag * p3.xyzz + gbufferProjectionInverse[3]; + return normalize(fragposition.xyz); +} +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { +/* DRAWBUFFERS:2 */ + gl_FragData[0] = texture2D(texture, lmtexcoord.xy)*color; + gl_FragData[0].a = clamp(gl_FragData[0].a -0.1,0.0,1.0)*0.5; + vec3 albedo = toLinear(gl_FragData[0].rgb*color.rgb); + vec3 ambient = texture2D(gaux1,(lmtexcoord.zw*15.+0.5)*texelSize).rgb; + + gl_FragData[0].rgb = dot(albedo,vec3(1.0))*ambient*10./3.0/150.*0.1; + + + +} diff --git a/shaders/world-1/gbuffers_weather.vsh b/shaders/world-1/gbuffers_weather.vsh new file mode 100644 index 0000000..b7c44aa --- /dev/null +++ b/shaders/world-1/gbuffers_weather.vsh @@ -0,0 +1,44 @@ +#version 120 +#define TAA + +/* +!! DO NOT REMOVE !! +This code is from Chocapic13' shaders +Read the terms of modification and sharing before changing something below please ! +!! DO NOT REMOVE !! +*/ + +varying vec4 lmtexcoord; +varying vec4 color; + +uniform vec2 texelSize; +uniform int framemod8; + const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + + lmtexcoord.xy = (gl_MultiTexCoord0).xy; + + vec2 lmcoord = gl_MultiTexCoord1.xy/255.; + lmtexcoord.zw = lmcoord*lmcoord; + + + gl_Position = ftransform(); + + color = gl_Color; + #ifdef TAA + gl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize; + #endif +} \ No newline at end of file diff --git a/shaders/world-1/lib/ACES.glsl b/shaders/world-1/lib/ACES.glsl new file mode 100644 index 0000000..d9d6ce7 --- /dev/null +++ b/shaders/world-1/lib/ACES.glsl @@ -0,0 +1,382 @@ +#define log10(x) log(x) / log(10.0) + + struct ColorCorrection { + float saturation; + float vibrance; + vec3 lum; + float contrast; + float contrastMidpoint; + + vec3 gain; + vec3 lift; + vec3 InvGamma; +} m; + + +float sigmoid_shaper(float x) { // Sigmoid function in the range 0 to 1 spanning -2 to +2. + float t = max(1.0 - abs(0.5 * x), 0.0); + float y = 1.0 + sign(x) * (1.0 - t * t); + + return 0.5 * y; +} + +float rgb_2_saturation(vec3 rgb) { + float minrgb = min(min(rgb.r, rgb.g), rgb.b); + float maxrgb = max(max(rgb.r, rgb.g), rgb.b); + + return (max(maxrgb, 1e-10) - max(minrgb, 1e-10)) / max(maxrgb, 1e-2); +} + +float rgb_2_yc(vec3 rgb) { // Converts RGB to a luminance proxy, here called YC. YC is ~ Y + K * Chroma. + float ycRadiusWeight = 1.75; + float r = rgb[0]; float g = rgb[1]; float b = rgb[2]; + float chroma = sqrt(b * (b - g) + g * (g - r) + r * (r - b)); + + return (b + g + r + ycRadiusWeight * chroma) / 3.0; +} + +float glow_fwd(float ycIn, float glowGainIn, float glowMid) { + float glowGainOut; + + if (ycIn <= 2.0 / 3.0 * glowMid) { + glowGainOut = glowGainIn; + } else if ( ycIn >= 2.0 * glowMid) { + glowGainOut = 0; + } else { + glowGainOut = glowGainIn * (glowMid / ycIn - 0.5); + } + + return glowGainOut; +} + +float rgb_2_hue(vec3 rgb) { // Returns a geometric hue angle in degrees (0-360) based on RGB values. + float hue; + if (rgb[0] == rgb[1] && rgb[1] == rgb[2]) { // For neutral colors, hue is undefined and the function will return a quiet NaN value. + hue = 0; + } else { + hue = (180.0 / 3.1415) * atan(2.0 * rgb[0] - rgb[1] - rgb[2], sqrt(3.0) * (rgb[1] - rgb[2])); // flip due to opengl spec compared to hlsl + } + + if (hue < 0.0) + hue = hue + 360.0; + + return clamp(hue, 0.0, 360.0); +} + +float center_hue(float hue, float centerH) { + float hueCentered = hue - centerH; + + if (hueCentered < -180.0) { + hueCentered += 360.0; + } else if (hueCentered > 180.0) { + hueCentered -= 360.0; + } + + return hueCentered; +} + +// Transformations between CIE XYZ tristimulus values and CIE x,y +// chromaticity coordinates +vec3 XYZ_2_xyY( vec3 XYZ ) { + float divisor = max(XYZ[0] + XYZ[1] + XYZ[2], 1e-10); + + vec3 xyY = XYZ.xyy; + xyY.rg = XYZ.rg / divisor; + + return xyY; +} + +vec3 xyY_2_XYZ(vec3 xyY) { + vec3 XYZ = vec3(0.0); + XYZ.r = xyY.r * xyY.b / max(xyY.g, 1e-10); + XYZ.g = xyY.b; + XYZ.b = (1.0 - xyY.r - xyY.g) * xyY.b / max(xyY.g, 1e-10); + + return XYZ; +} + +mat3 ChromaticAdaptation( vec2 src_xy, vec2 dst_xy ) { + // Von Kries chromatic adaptation + + // Bradford + const mat3 ConeResponse = mat3( + vec3(0.8951, 0.2664, -0.1614), + vec3(-0.7502, 1.7135, 0.0367), + vec3(0.0389, -0.0685, 1.0296) + ); + const mat3 InvConeResponse = mat3( + vec3(0.9869929, -0.1470543, 0.1599627), + vec3(0.4323053, 0.5183603, 0.0492912), + vec3(-0.0085287, 0.0400428, 0.9684867) + ); + + vec3 src_XYZ = xyY_2_XYZ( vec3( src_xy, 1 ) ); + vec3 dst_XYZ = xyY_2_XYZ( vec3( dst_xy, 1 ) ); + + vec3 src_coneResp = src_XYZ * ConeResponse; + vec3 dst_coneResp = dst_XYZ * ConeResponse; + + mat3 VonKriesMat = mat3( + vec3(dst_coneResp[0] / src_coneResp[0], 0.0, 0.0), + vec3(0.0, dst_coneResp[1] / src_coneResp[1], 0.0), + vec3(0.0, 0.0, dst_coneResp[2] / src_coneResp[2]) + ); + + return (ConeResponse * VonKriesMat) * InvConeResponse; +} + +/******************************************************************************* + - Color CorrectionUE4 Style + ******************************************************************************/ + + // Accurate for 1000K < Temp < 15000K +// [Krystek 1985, "An algorithm to calculate correlated colour temperature"] +vec2 PlanckianLocusChromaticity(float Temp) { + float u = ( 0.860117757f + 1.54118254e-4f * Temp + 1.28641212e-7f * Temp*Temp ) / ( 1.0f + 8.42420235e-4f * Temp + 7.08145163e-7f * Temp*Temp ); + float v = ( 0.317398726f + 4.22806245e-5f * Temp + 4.20481691e-8f * Temp*Temp ) / ( 1.0f - 2.89741816e-5f * Temp + 1.61456053e-7f * Temp*Temp ); + + float x = 3.0*u / ( 2.0*u - 8.0*v + 4.0 ); + float y = 2.0*v / ( 2.0*u - 8.0*v + 4.0 ); + + return vec2(x, y); +} + + vec2 D_IlluminantChromaticity(float Temp) { + // Accurate for 4000K < Temp < 25000K + // in: correlated color temperature + // out: CIE 1931 chromaticity + // Correct for revision of Plank's law + // This makes 6500 == D65 + Temp *= 1.4388 / 1.438; + + float x = Temp <= 7000 ? + 0.244063 + ( 0.09911e3 + ( 2.9678e6 - 4.6070e9 / Temp ) / Temp ) / Temp : + 0.237040 + ( 0.24748e3 + ( 1.9018e6 - 2.0064e9 / Temp ) / Temp ) / Temp; + + float y = -3 * x*x + 2.87 * x - 0.275; + + return vec2(x,y); +} + +vec2 PlanckianIsothermal( float Temp, float Tint ) { + float u = ( 0.860117757f + 1.54118254e-4f * Temp + 1.28641212e-7f * Temp*Temp ) / ( 1.0f + 8.42420235e-4f * Temp + 7.08145163e-7f * Temp*Temp ); + float v = ( 0.317398726f + 4.22806245e-5f * Temp + 4.20481691e-8f * Temp*Temp ) / ( 1.0f - 2.89741816e-5f * Temp + 1.61456053e-7f * Temp*Temp ); + + float ud = ( -1.13758118e9f - 1.91615621e6f * Temp - 1.53177f * Temp*Temp ) / pow( 1.41213984e6f + 1189.62f * Temp + Temp*Temp, 2.0 ); + float vd = ( 1.97471536e9f - 705674.0f * Temp - 308.607f * Temp*Temp ) / pow( 6.19363586e6f - 179.456f * Temp + Temp*Temp , 2.0); //don't pow2 this + + vec2 uvd = normalize( vec2( u, v ) ); + + // Correlated color temperature is meaningful within +/- 0.05 + u += -uvd.y * Tint * 0.05; + v += uvd.x * Tint * 0.05; + + float x = 3*u / ( 2*u - 8*v + 4 ); + float y = 2*v / ( 2*u - 8*v + 4 ); + + return vec2(x,y); +} + +vec3 WhiteBalance(vec3 LinearColor) { + const float WhiteTemp = float(WHITE_BALANCE); + const float WhiteTint = 0.0; + vec2 SrcWhiteDaylight = D_IlluminantChromaticity( WhiteTemp ); + vec2 SrcWhitePlankian = PlanckianLocusChromaticity( WhiteTemp ); + + vec2 SrcWhite = WhiteTemp < 4000 ? SrcWhitePlankian : SrcWhiteDaylight; + const vec2 D65White = vec2(0.31270, 0.32900); + + // Offset along isotherm + vec2 Isothermal = PlanckianIsothermal( WhiteTemp, WhiteTint ) - SrcWhitePlankian; + SrcWhite += Isothermal; + + mat3x3 WhiteBalanceMat = ChromaticAdaptation( SrcWhite, D65White ); + WhiteBalanceMat = (sRGB_2_XYZ_MAT * WhiteBalanceMat) * XYZ_2_sRGB_MAT; + + return LinearColor * WhiteBalanceMat * 1.0; +} + +/******************************************************************************* + - ACES Fimic Curve Approx. + ******************************************************************************/ + +// ACES settings +const float FilmSlope = Film_Slope; //0.90 +const float FilmToe = Film_Toe; //0.55 +const float FilmShoulder = Film_Shoulder; //0.25 +const float FilmBlackClip = Black_Clip; +const float FilmWhiteClip = White_Clip; +const float BlueCorrection = Blue_Correction; +const float ExpandGamut = Gamut_Expansion; + +vec3 FilmToneMap(vec3 LinearColor) { + const mat3 AP0_2_sRGB = (AP0_2_XYZ_MAT * D60_2_D65_CAT) * XYZ_2_sRGB_MAT; + const mat3 AP1_2_sRGB = (AP1_2_XYZ_MAT * D60_2_D65_CAT) * XYZ_2_sRGB_MAT; + + const mat3 AP0_2_AP1 = AP0_2_XYZ_MAT * XYZ_2_AP1_MAT; + const mat3 AP1_2_AP0 = AP1_2_XYZ_MAT * XYZ_2_AP0_MAT; + + vec3 ColorAP1 = LinearColor * AP0_2_AP1; + float LumaAP1 = dot( ColorAP1, AP1_RGB2Y ); + + vec3 ChromaAP1 = ColorAP1 / LumaAP1; + + float ChromaDistSqr = dot( ChromaAP1 - 1, ChromaAP1 - 1 ); + float ExpandAmount = ( 1 - exp2( -4 * ChromaDistSqr ) ) * ( 1 - exp2( -4 * ExpandGamut * LumaAP1*LumaAP1 ) ); + + const mat3 Wide_2_XYZ_MAT = mat3( + vec3(0.5441691, 0.2395926, 0.1666943), + vec3(0.2394656, 0.7021530, 0.0583814), + vec3(-0.0023439, 0.0361834, 1.0552183) + ); + + const mat3 Wide_2_AP1 = Wide_2_XYZ_MAT * XYZ_2_AP1_MAT; + const mat3 ExpandMat = AP1_2_sRGB * Wide_2_AP1; + + vec3 ColorExpand = ColorAP1 * ExpandMat; + ColorAP1 = mix(ColorAP1, ColorExpand, ExpandAmount); + + const mat3 BlueCorrect = mat3( + vec3(0.9404372683, -0.0183068787, 0.0778696104), + vec3(0.0083786969, 0.8286599939, 0.1629613092), + vec3(0.0005471261, -0.0008833746, 1.0003362486) + ); + const mat3 BlueCorrectInv = mat3( + vec3(1.06318, 0.0233956, -0.0865726), + vec3(-0.0106337, 1.20632, -0.19569), + vec3(-0.000590887, 0.00105248, 0.999538) + ); + + const mat3 BlueCorrectAP1 = (AP1_2_AP0 * BlueCorrect) * AP0_2_AP1; + const mat3 BlueCorrectInvAP1 = (AP1_2_AP0 * BlueCorrectInv) * AP0_2_AP1; + + // Blue correction + ColorAP1 = mix(ColorAP1, ColorAP1 * BlueCorrectAP1, BlueCorrection); + + vec3 ColorAP0 = LinearColor * AP1_2_AP0; + + // "Glow" module constants + const float RRT_GLOW_GAIN = 0.05; + const float RRT_GLOW_MID = 0.08; + + float saturation = rgb_2_saturation(ColorAP0); + float ycIn = rgb_2_yc(ColorAP0); + float s = sigmoid_shaper((saturation - 0.4) * 5.0); + float addedGlow = 1.0 + glow_fwd(ycIn, RRT_GLOW_GAIN * s, RRT_GLOW_MID) * 3; + ColorAP0 *= addedGlow; + + // --- Red modifier --- // + const float RRT_RED_SCALE = 0.99; + const float RRT_RED_PIVOT = 0.22; + const float RRT_RED_HUE = 0.15; + const float RRT_RED_WIDTH = 135.0; + float hue = rgb_2_hue(ColorAP0); + float centeredHue = center_hue(hue, RRT_RED_HUE); + float hueWeight = pow(smoothstep(0.0, 1.0, 1.0 - abs(2.0 * centeredHue / RRT_RED_WIDTH)), 2.0); + + ColorAP0.r += hueWeight * saturation * (RRT_RED_PIVOT - ColorAP0.r) * (1.0 - RRT_RED_SCALE); + + // Use ACEScg primaries as working space + vec3 WorkingColor = ColorAP0 * AP0_2_AP1_MAT * 1.2; + WorkingColor = max(vec3(0.0), WorkingColor) * 1.1; + WorkingColor = mix(vec3(dot(WorkingColor, AP1_RGB2Y)), WorkingColor, 0.96); // Pre desaturate + + const float ToeScale = 1.0 + FilmBlackClip - FilmToe; + const float ShoulderScale = 1.0 + FilmWhiteClip - FilmShoulder; + + const float InMatch = in_Match; + const float OutMatch = Out_Match; + + float ToeMatch = 0.0; + if(FilmToe > 0.8) { + // 0.18 will be on straight segment + ToeMatch = (1.0 - FilmToe - OutMatch) / FilmSlope + log10(InMatch); + } else { + // 0.18 will be on toe segment + // Solve for ToeMatch such that input of InMatch gives output of OutMatch. + const float bt = (OutMatch + FilmBlackClip) / ToeScale - 1.0; + ToeMatch = log10(InMatch) - 0.5 * log((1.0 + bt) / (1.0 - bt)) * (ToeScale / FilmSlope); + } + + float StraightMatch = (1.0 - FilmToe) / FilmSlope - ToeMatch; + float ShoulderMatch = FilmShoulder / FilmSlope - StraightMatch; + + vec3 LogColor = log10(WorkingColor); + vec3 StraightColor = FilmSlope * (LogColor + StraightMatch); + + vec3 ToeColor = (-FilmBlackClip) + (2.0 * ToeScale) / (1.0 + exp((-2.0 * FilmSlope / ToeScale) * (LogColor - ToeMatch))); + vec3 ShoulderColor = (1.0 + FilmWhiteClip) - (2.0 * ShoulderScale) / (1.0 + exp(( 2.0 * FilmSlope / ShoulderScale) * (LogColor - ShoulderMatch))); + + for(int i = 0; i < 1; ++i) { + ToeColor[i] = LogColor[i] < ToeMatch ? ToeColor[i] : StraightColor[i]; + ShoulderColor[i] = LogColor[i] > ShoulderMatch ? ShoulderColor[i] : StraightColor[i]; + } + + vec3 t = clamp((LogColor - ToeMatch) / (ShoulderMatch - ToeMatch), 0.0, 1.0); + t = ShoulderMatch < ToeMatch ? 1.0 - t : t; + t = (3.0 - 2.0 * t) * t * t; + + vec3 ToneColor = mix(ToeColor, ShoulderColor, t); + ToneColor = mix(vec3(dot(ToneColor, AP1_RGB2Y)), ToneColor, 0.93); // Post desaturate + + ToneColor = mix(ToneColor, ToneColor * BlueCorrectInvAP1, BlueCorrection); + + // Returning positive AP1 values + return max(vec3(0.0), ToneColor * AP1_2_sRGB); +} + +vec3 Saturation(vec3 color, ColorCorrection m) { + float grey = dot(color, m.lum); + return grey + m.saturation * (color - grey); +} + +vec3 Vibrance(vec3 color, ColorCorrection m) { + float maxColor = max(color.r, max(color.g, color.b)); + float minColor = min(color.r, min(color.g, color.b)); + + float colorSaturation = maxColor - minColor; + + float grey = dot(color, m.lum); + color = mix(vec3(grey), color, 1.0 + m.vibrance * (1.0 - sign(m.vibrance) * colorSaturation)); + + return color; +} + +vec3 LiftGammaGain(vec3 v, ColorCorrection m) { + vec3 lerpV = clamp(pow(v, m.InvGamma), 0.0, 1.0); + return m.gain * lerpV + m.lift * (1.0 - lerpV); +} + +float LogContrast(float x, const float eps, float logMidpoint, float contrast) { + float logX = log2(x + eps); + float adjX = (logX - logMidpoint) / contrast + logMidpoint; + + return max(exp2(adjX) - eps, 0.0); +} + +vec3 Contrast(vec3 color, ColorCorrection m) { + const float contrastEpsilon = 1e-5; + + vec3 ret; + ret.x = LogContrast(color.x, contrastEpsilon, log2(0.18), m.contrast); + ret.y = LogContrast(color.y, contrastEpsilon, log2(0.18), m.contrast); + ret.z = LogContrast(color.z, contrastEpsilon, log2(0.18), m.contrast); + + return ret; +} + +vec3 srgbToLinear(vec3 srgb) { + return mix( + srgb * 0.07739938080495356, // 1.0 / 12.92 = ~0.07739938080495356 + pow(0.947867 * srgb + 0.0521327, vec3(2.4)), + step(0.04045, srgb) + ); +} + +vec3 linearToSrgb(vec3 linear) { + return mix( + linear * 12.92, + pow(linear, vec3(0.416666666667)) * 1.055 - 0.055, // 1.0 / 2.4 = ~0.416666666667 + step(0.0031308, linear) + ); +} diff --git a/shaders/world-1/lib/ACESSPL.glsl b/shaders/world-1/lib/ACESSPL.glsl new file mode 100644 index 0000000..81c4ffd --- /dev/null +++ b/shaders/world-1/lib/ACESSPL.glsl @@ -0,0 +1,115 @@ +#define log10(x) log(x) / log(10.0) + + +struct SegmentedSplineParams_c5 { + float coefsLow[6]; // coefs for B-spline between minPoint and midPoint (units of log luminance) + float coefsHigh[6]; // coefs for B-spline between midPoint and maxPoint (units of log luminance) + vec2 minPoint; // {luminance, luminance} linear extension below this + vec2 midPoint; // {luminance, luminance} + vec2 maxPoint; // {luminance, luminance} linear extension above this + float slopeLow; // log-log slope of low linear extension + float slopeHigh; // log-log slope of high linear extension +}; + +struct SegmentedSplineParams_c9 { + float coefsLow[10]; // coefs for B-spline between minPoint and midPoint (units of log luminance) + float coefsHigh[10]; // coefs for B-spline between midPoint and maxPoint (units of log luminance) + float slopeLow; // log-log slope of low linear extension + float slopeHigh; // log-log slope of high linear extension +}; + +const mat3 M = mat3( + 0.5, -1.0, 0.5, + -1.0, 1.0, 0.5, + 0.5, 0.0, 0.0 +); + +float segmented_spline_c5_fwd(float x) { + const SegmentedSplineParams_c5 C = SegmentedSplineParams_c5( + float[6] ( -4.0000000000, -4.0000000000, -3.1573765773, -0.4852499958, 1.8477324706, 1.8477324706 ), + float[6] ( -0.7185482425, 2.0810307172, 3.6681241237, 4.0000000000, 4.0000000000, 4.0000000000 ), + vec2(0.18*exp2(-15.0), 0.0001), + vec2(0.18, 4.8), + vec2(0.18*exp2(18.0), 10000.), + 0.0, + 0.0 + ); + + const int N_KNOTS_LOW = 4; + const int N_KNOTS_HIGH = 4; + + // Check for negatives or zero before taking the log. If negative or zero, + // set to ACESMIN.1 + float xCheck = x <= 0 ? exp2(-14.0) : x; + + float logx = log10( xCheck); + float logy; + + if (logx <= log10(C.minPoint.x)) { + logy = logx * C.slopeLow + (log10(C.minPoint.y) - C.slopeLow * log10(C.minPoint.x)); + } else if ((logx > log10(C.minPoint.x)) && (logx < log10(C.midPoint.x))) { + float knot_coord = (N_KNOTS_LOW-1) * (logx-log10(C.minPoint.x))/(log10(C.midPoint.x)-log10(C.minPoint.x)); + int j = int(knot_coord); + float t = knot_coord - float(j); + + vec3 cf = vec3( C.coefsLow[ j], C.coefsLow[ j + 1], C.coefsLow[ j + 2]); + + vec3 monomials = vec3(t * t, t, 1.0); + logy = dot( monomials, M * cf); + } else if ((logx >= log10(C.midPoint.x)) && (logx < log10(C.maxPoint.x))) { + float knot_coord = (N_KNOTS_HIGH - 1) * (logx - log10(C.midPoint.x)) / (log10(C.maxPoint.x) - log10(C.midPoint.x)); + int j = int(knot_coord); + float t = knot_coord - float(j); + + vec3 cf = vec3(C.coefsHigh[j], C.coefsHigh[j + 1], C.coefsHigh[j + 2]); + vec3 monomials = vec3(t * t, t, 1.0); + + logy = dot(monomials, M * cf); + } else { + logy = logx * C.slopeHigh + (log10(C.maxPoint.y) - C.slopeHigh * log10(C.maxPoint.x)); + } + + return pow(10.0, logy); +} + +float segmented_spline_c9_fwd( float x, const SegmentedSplineParams_c9 C, const mat3x2 toningPoints) { + const int N_KNOTS_LOW = 8; + const int N_KNOTS_HIGH = 8; + + // Check for negatives or zero before taking the log. If negative or zero, + // set to OCESMIN. + float xCheck = x <= 0 ? 1e-4 : x; + + vec2 minPoint = toningPoints[0]; + vec2 midPoint = toningPoints[1]; + vec2 maxPoint = toningPoints[2]; + + float logx = log10(xCheck); + float logy; + + if (logx <= log10(minPoint.x)) { + logy = logx * C.slopeLow + (log10(minPoint.y) - C.slopeLow * log10(minPoint.x)); + } else if ((logx > log10(minPoint.x)) && (logx < log10(midPoint.x))) { + float knot_coord = (N_KNOTS_LOW - 1) * (logx - log10(minPoint.x)) / (log10(midPoint.x) - log10(minPoint.x)); + int j = int(knot_coord); + float t = knot_coord - float(j); + + vec3 cf = vec3(C.coefsLow[j], C.coefsLow[j + 1], C.coefsLow[j + 2]); + vec3 monomials = vec3(t * t, t, 1.0); + + logy = dot(monomials, M * cf); + } else if ((logx >= log10(midPoint.x)) && (logx < log10(maxPoint.x))) { + float knot_coord = (N_KNOTS_HIGH - 1) * (logx - log10(midPoint.x)) / (log10(maxPoint.x) - log10(midPoint.x)); + int j = int(knot_coord); + float t = knot_coord - float(j); + + vec3 cf = vec3(C.coefsHigh[j], C.coefsHigh[j + 1], C.coefsHigh[j + 2]); + vec3 monomials = vec3(t * t, t, 1.0); + + logy = dot(monomials, M * cf); + } else { + logy = logx * C.slopeHigh + (log10(maxPoint.y) - C.slopeHigh * log10(maxPoint.x)); + } + + return pow(10.0, logy); +} \ No newline at end of file diff --git a/shaders/world-1/lib/ACEST.glsl b/shaders/world-1/lib/ACEST.glsl new file mode 100644 index 0000000..f8693d7 --- /dev/null +++ b/shaders/world-1/lib/ACEST.glsl @@ -0,0 +1,63 @@ + +const mat3 sRGB_2_XYZ_MAT = mat3( // Linear sRGB to XYZ color space + vec3(0.4124564, 0.3575761, 0.1804375), + vec3(0.2126729, 0.7151522, 0.0721750), + vec3(0.0193339, 0.1191920, 0.9503041) +); + +const mat3 XYZ_2_sRGB_MAT = mat3( //XYZ to linear sRGB Color Space + vec3(3.2409699419, -1.5373831776, -0.4986107603), + vec3(-0.9692436363, 1.8759675015, 0.0415550574), + vec3(0.0556300797, -0.2039769589, 1.0569715142) +); + +const mat3 D65_2_D60_CAT = mat3( // D65 to D60 White Point + vec3(1.01303, 0.00610531, -0.014971), + vec3(0.00769823, 0.998165, -0.00503203), + vec3(-0.00284131, 0.00468516, 0.924507) +); + +const mat3 D60_2_D65_CAT = mat3( //D60 to D65 White Point + vec3(0.987224, -0.00611327, 0.0159533), + vec3(-0.00759836, 1.00186, 0.00533002), + vec3(0.00307257, -0.00509595, 1.08168) +); + +const mat3 XYZ_2_AP0_MAT = mat3( // XYZ to ACEScg Color Space + vec3(1.0498110175, 0.0000000000,-0.0000974845), + vec3(-0.4959030231, 1.3733130458, 0.0982400361), + vec3(0.0000000000, 0.0000000000, 0.9912520182) +); + +const mat3 AP0_2_XYZ_MAT = mat3( // ACEScg to XYZ Color Space + vec3(0.9525523959, 0.0000000000, 0.0000936786), + vec3(0.3439664498, 0.7281660966,-0.0721325464), + vec3(0.0000000000, 0.0000000000, 1.0088251844) +); + +const mat3 XYZ_2_AP1_MAT = mat3( // XYZ to ACEStoning Color Space + vec3(1.6410233797, -0.3248032942, -0.2364246952), + vec3(-0.6636628587, 1.6153315917, 0.0167563477), + vec3(0.0117218943, -0.0082844420, 0.9883948585) +); + +const mat3 AP1_2_XYZ_MAT = mat3( // ACEStoning to XYZ Color Space + vec3(0.6624541811, 0.1340042065, 0.1561876870), + vec3(0.2722287168, 0.6740817658, 0.0536895174), + vec3(-0.0055746495, 0.0040607335, 1.0103391003) +); + +const mat3 AP0_2_AP1_MAT = mat3( // ACEScg to ACEStoneing Color Space + vec3(1.4514393161, -0.2365107469, -0.2149285693), + vec3(-0.0765537734, 1.1762296998, -0.0996759264), + vec3(0.0083161484, -0.0060324498, 0.9977163014) +); + +const mat3 AP1_2_AP0_MAT = mat3( // ACEStoning to ACEScg Color Space + vec3(0.6954522414, 0.1406786965, 0.1638690622), + vec3(0.0447945634, 0.8596711185, 0.0955343182), + vec3(-0.0055258826, 0.0040252103, 1.0015006723) +); + +const vec3 AP1_RGB2Y = vec3(0.2722287168, 0.6740817658, 0.0536895174); // Desaturation Coeff +const mat3 sRGB_2_AP0 = (sRGB_2_XYZ_MAT * D65_2_D60_CAT) * XYZ_2_AP0_MAT; \ No newline at end of file diff --git a/shaders/world-1/lib/ROBOBO_sky.glsl b/shaders/world-1/lib/ROBOBO_sky.glsl new file mode 100644 index 0000000..ef8fcfd --- /dev/null +++ b/shaders/world-1/lib/ROBOBO_sky.glsl @@ -0,0 +1,157 @@ +const float sunAngularSize = 0.533333; +const float moonAngularSize = 0.516667; + +//Sky coefficients and heights + +#define airNumberDensity 2.5035422e25 +#define ozoneConcentrationPeak 8e-6 +const float ozoneNumberDensity = airNumberDensity * ozoneConcentrationPeak; +#define ozoneCrossSection vec3(4.51103766177301e-21, 3.2854797958699e-21, 1.96774621921165e-22) + +#define sky_planetRadius 6731e3 + +#define sky_atmosphereHeight 110e3 +#define sky_scaleHeights vec2(8.0e3, 1.2e3) + +#define sky_mieg 0.80 //[0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 ] +#define sky_coefficientRayleighR 5.8 //[0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5.0 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6.0 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7.0 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8.0 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9.0 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10.0 ] +#define sky_coefficientRayleighG 1.35 //[0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5.0 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6.0 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7.0 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8.0 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9.0 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10.0 ] +#define sky_coefficientRayleighB 3.31 //[0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5.0 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6.0 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7.0 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8.0 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9.0 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10.0 ] + +#define sky_coefficientRayleigh vec3(sky_coefficientRayleighR*1e-6, sky_coefficientRayleighG*1e-5, sky_coefficientRayleighB*1e-5) + + +#define sky_coefficientMieR 3.0 //[0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5.0 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6.0 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7.0 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8.0 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9.0 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10.0 ] +#define sky_coefficientMieG 3.0 //[0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5.0 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6.0 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7.0 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8.0 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9.0 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10.0 ] +#define sky_coefficientMieB 3.0 //[0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5.0 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6.0 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7.0 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8.0 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9.0 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10.0 ] + +#define sky_coefficientMie vec3(sky_coefficientMieR*1e-6, sky_coefficientMieG*1e-6, sky_coefficientMieB*1e-6) // Should be >= 2e-6 +const vec3 sky_coefficientOzone = (ozoneCrossSection * (ozoneNumberDensity * 1.e-6)); // ozone cross section * (ozone number density * (cm ^ 3)) + +const vec2 sky_inverseScaleHeights = 1.0 / sky_scaleHeights; +const vec2 sky_scaledPlanetRadius = sky_planetRadius * sky_inverseScaleHeights; +const float sky_atmosphereRadius = sky_planetRadius + sky_atmosphereHeight; +const float sky_atmosphereRadiusSquared = sky_atmosphereRadius * sky_atmosphereRadius; + +#define sky_coefficientsScattering mat2x3(sky_coefficientRayleigh, sky_coefficientMie) +const mat3 sky_coefficientsAttenuation = mat3(sky_coefficientRayleigh, sky_coefficientMie * 1.11, sky_coefficientOzone); // commonly called the extinction coefficient + +#define sun_illuminance 128000.0 //[10000.0 20000.0 30000.0 40000.0 50000.0 60000.0 70000.0 80000.0 90000.0 100000.0 110000.0 120000.0 130000.0 140000.0 160000.0] +#define moon_illuminance 60.0 //[0.0 10.0 20.0 30.0 40.0 50.0 60.0 70.0 80.0 90.0 100.0 1000.0 10000.0 100000.0] + +#define sunColorR 1.0 //[0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 ] +#define sunColorG 0.9 //[0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 ] +#define sunColorB 0.81 //[0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 ] + +#define sunColorBase (vec3(sunColorR,sunColorG,sunColorB) * sun_illuminance) +//#define sunColorBase blackbody(5778) * sun_illuminance +#define moonColorR 1.0 //[0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 ] +#define moonColorG 0.9 //[0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 ] +#define moonColorB 0.81 //[0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 ] + +#define moonColorBase (vec3(moonColorR, moonColorG, moonColorB) * moon_illuminance ) //Fake Purkinje effect + +float sky_rayleighPhase(float cosTheta) { + const vec2 mul_add = vec2(0.1, 0.28) * rPI; + return cosTheta * mul_add.x + mul_add.y; // optimized version from [Elek09], divided by 4 pi for energy conservation +} + +float sky_miePhase(float cosTheta, const float g) { + float gg = g * g; + return (gg * -0.25 + 0.25) * rPI * pow(-(2.0 * g) * cosTheta + (gg + 1.0), -1.5); +} + +vec2 sky_phase(float cosTheta, const float g) { + return vec2(sky_rayleighPhase(cosTheta), sky_miePhase(cosTheta, g)); +} + +vec3 sky_density(float centerDistance) { + vec2 rayleighMie = exp(centerDistance * -sky_inverseScaleHeights + sky_scaledPlanetRadius); + + // Ozone distribution curve by Sergeant Sarcasm - https://www.desmos.com/calculator/j0wozszdwa + float ozone = exp(-max(0.0, (35000.0 - centerDistance) - sky_planetRadius) * (1.0 / 5000.0)) + * exp(-max(0.0, (centerDistance - 35000.0) - sky_planetRadius) * (1.0 / 15000.0)); + return vec3(rayleighMie, ozone); +} + +vec3 sky_airmass(vec3 position, vec3 direction, float rayLength, const float steps) { + float stepSize = rayLength * (1.0 / steps); + vec3 increment = direction * stepSize; + position += increment * 0.5; + + vec3 airmass = vec3(0.0); + for (int i = 0; i < steps; ++i, position += increment) { + airmass += sky_density(length(position)); + } + + return airmass * stepSize; +} +vec3 sky_airmass(vec3 position, vec3 direction, const float steps) { + float rayLength = dot(position, direction); + rayLength = rayLength * rayLength + sky_atmosphereRadiusSquared - dot(position, position); + if (rayLength < 0.0) return vec3(0.0); + rayLength = sqrt(rayLength) - dot(position, direction); + + return sky_airmass(position, direction, rayLength, steps); +} + +vec3 sky_opticalDepth(vec3 position, vec3 direction, float rayLength, const float steps) { + return sky_coefficientsAttenuation * sky_airmass(position, direction, rayLength, steps); +} +vec3 sky_opticalDepth(vec3 position, vec3 direction, const float steps) { + return sky_coefficientsAttenuation * sky_airmass(position, direction, steps); +} + +vec3 sky_transmittance(vec3 position, vec3 direction, const float steps) { + return exp2(-sky_opticalDepth(position, direction, steps) * rLOG2); +} + + + +vec3 calculateAtmosphere(vec3 background, vec3 viewVector, vec3 upVector, vec3 sunVector, vec3 moonVector, out vec2 pid, out vec3 transmittance, const int iSteps, float noise) { + const int jSteps = 4; + + vec3 viewPosition = (sky_planetRadius + eyeAltitude) * upVector; + + vec2 aid = rsi(viewPosition, viewVector, sky_atmosphereRadius); + if (aid.y < 0.0) {transmittance = vec3(1.0); return vec3(0.0);} + + pid = rsi(viewPosition, viewVector, sky_planetRadius * 0.998); + bool planetIntersected = pid.y >= 0.0; + + vec2 sd = vec2((planetIntersected && pid.x < 0.0) ? pid.y : max(aid.x, 0.0), (planetIntersected && pid.x > 0.0) ? pid.x : aid.y); + + float stepSize = (sd.y - sd.x) * (1.0 / iSteps); + vec3 increment = viewVector * stepSize; + vec3 position = viewVector * sd.x + viewPosition; + position += increment * (0.34*noise); + vec2 phaseSun = sky_phase(dot(viewVector, sunVector ), sky_mieg); + vec2 phaseMoon = sky_phase(dot(viewVector, moonVector), sky_mieg); + + vec3 scatteringSun = vec3(0.0); + vec3 scatteringMoon = vec3(0.0); + vec3 scatteringAmbient = vec3(0.0); + transmittance = vec3(1.0); + + for (int i = 0; i < iSteps; ++i, position += increment) { + vec3 density = sky_density(length(position)); + if (density.y > 1e35) break; + vec3 stepAirmass = density * stepSize; + vec3 stepOpticalDepth = sky_coefficientsAttenuation * stepAirmass; + + vec3 stepTransmittance = exp2(-stepOpticalDepth * rLOG2); + vec3 stepTransmittedFraction = clamp01((stepTransmittance - 1.0) / -stepOpticalDepth); + vec3 stepScatteringVisible = transmittance * stepTransmittedFraction; + + scatteringSun += sky_coefficientsScattering * (stepAirmass.xy * phaseSun ) * stepScatteringVisible * sky_transmittance(position, sunVector, jSteps); + scatteringMoon += sky_coefficientsScattering * (stepAirmass.xy * phaseMoon) * stepScatteringVisible * sky_transmittance(position, moonVector, jSteps); + // Nice way to fake multiple scattering. + scatteringAmbient += sky_coefficientsScattering * stepAirmass.xy * stepScatteringVisible; + + transmittance *= stepTransmittance; + } + + vec3 scattering = scatteringSun * sunColorBase + scatteringAmbient * background + scatteringMoon*moonColorBase; + + return scattering; +} diff --git a/shaders/world-1/lib/Shadow_Params.glsl b/shaders/world-1/lib/Shadow_Params.glsl new file mode 100644 index 0000000..7556167 --- /dev/null +++ b/shaders/world-1/lib/Shadow_Params.glsl @@ -0,0 +1,22 @@ +const float ambientOcclusionLevel = 0.3; //[0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 ] +const float sunPathRotation = -35; //[-90 -89 -88 -87 -86 -85 -84 -83 -82 -81 -80 -79 -78 -77 -76 -75 -74 -73 -72 -71 -70 -69 -68 -67 -66 -65 -64 -63 -62 -61 -60 -59 -58 -57 -56 -55 -54 -53 -52 -51 -50 -49 -48 -47 -46 -45 -44 -43 -42 -41 -40 -39 -38 -37 -36 -35 -34 -33 -32 -31 -30 -29 -28 -27 -26 -25 -24 -23 -22 -21 -20 -19 -18 -17 -16 -15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 ] + +const int shadowMapResolution = 3172; //Will probably crash at 16 384 [512 768 1024 1536 2048 3172 4096 8192 16384] +const float shadowDistance = 150; //[32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 ] Not linear at all when shadowDistanceRenderMul is set to -1.0, 175.0 is enough for 40 render distance +const float shadowDistanceRenderMul = -1.0; //[-1.0 1.0] Can help to increase shadow draw distance when set to -1.0, at the cost of performance + + +const float k = 1.8; +const float d0 = 0.04; +const float d1 = 0.61; +float a = exp(d0); +float b = (exp(d1)-a)*shadowDistance/128.0; + +vec4 BiasShadowProjection(in vec4 projectedShadowSpacePosition) { + float distortFactor = log(length(projectedShadowSpacePosition.xy)*b+a)*k; + projectedShadowSpacePosition.xy /= distortFactor; + return projectedShadowSpacePosition; +} +float calcDistort(vec2 worldpos){ + return 1.0/(log(length(worldpos)*b+a)*k); +} diff --git a/shaders/world-1/lib/clouds.glsl b/shaders/world-1/lib/clouds.glsl new file mode 100644 index 0000000..abd35ef --- /dev/null +++ b/shaders/world-1/lib/clouds.glsl @@ -0,0 +1,16 @@ +vec3 cloud2D(vec3 fragpos,vec3 col){ + vec3 wpos = fragpos; + float wind = frameTimeCounter/200.; + vec2 intersection = ((2000.0-cameraPosition.y)*wpos.xz*inversesqrt(wpos.y+cameraPosition.y/512.-50./512.) + cameraPosition.xz+wind)/40000.; + + + float phase = pow(clamp(dot(fragpos,sunVec),0.,1.),2.)*0.5+0.5; + + float fbm = clamp((texture2D(noisetex,intersection*vec2(1.,1.5)).a + texture2D(noisetex,intersection*vec2(2.,7.)+wind*0.4).a/2.)-0.5*(1.0-rainStrength),0.,1.) ; + + + + + return mix(col,6.*(vec3(0.9,1.2,1.5)*skyIntensityNight*0.02*(1.0-rainStrength*0.9)+17.*phase*nsunColor*skyIntensity*0.7*(1.0-rainStrength*0.9)),0.0*(fbm*fbm)*(fbm*fbm)*(fbm*clamp(wpos.y*0.9,0.,1.))); + +} \ No newline at end of file diff --git a/shaders/world-1/lib/color_dither.glsl b/shaders/world-1/lib/color_dither.glsl new file mode 100644 index 0000000..73c4960 --- /dev/null +++ b/shaders/world-1/lib/color_dither.glsl @@ -0,0 +1,46 @@ +//using white noise for color dithering : gives a somewhat more "filmic" look when noise is visible +float nrand( vec2 n ) +{ + return fract(sin(dot(n.xy, vec2(12.9898, 78.233)))* 43758.5453); +} + +float triangWhiteNoise( vec2 n ) +{ + + float t = fract( frameTimeCounter ); + float rnd = nrand( n + 0.07*t ); + + float center = rnd*2.0-1.0; + rnd = center*inversesqrt(abs(center)); + rnd = max(-1.0,rnd); + return rnd-sign(center); +} + +vec3 fp10Dither(vec3 color,vec2 tc01){ + float dither = triangWhiteNoise(tc01); + const vec3 mantissaBits = vec3(6.,6.,5.); + vec3 exponent = floor(log2(color)); + return color + dither*exp2(-mantissaBits)*exp2(exponent); +} + +vec3 fp16Dither(vec3 color,vec2 tc01){ + float dither = triangWhiteNoise(tc01); + const vec3 mantissaBits = vec3(10.); + vec3 exponent = floor(log2(color)); + return color + dither*exp2(-mantissaBits)*exp2(exponent); +} + +vec3 int8Dither(vec3 color,vec2 tc01){ + float dither = triangWhiteNoise(tc01); + return color + dither*exp2(-8.0); +} + +vec3 int10Dither(vec3 color,vec2 tc01){ + float dither = triangWhiteNoise(tc01); + return color + dither*exp2(-10.0); +} + +vec3 int16Dither(vec3 color,vec2 tc01){ + float dither = triangWhiteNoise(tc01); + return color + dither*exp2(-16.0); +} \ No newline at end of file diff --git a/shaders/world-1/lib/color_transforms.glsl b/shaders/world-1/lib/color_transforms.glsl new file mode 100644 index 0000000..4813ff4 --- /dev/null +++ b/shaders/world-1/lib/color_transforms.glsl @@ -0,0 +1,131 @@ +//faster and actually more precise than pow 2.2 +vec3 toLinear(vec3 sRGB){ + return sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878); +} + +float luma(vec3 color) { + return dot(color,vec3(0.299, 0.587, 0.114)); +} +vec3 ToneMap_Hejl2015(in vec3 hdr) +{ + vec4 vh = vec4(hdr*0.85, 3.0); //0 + vec4 va = (1.75 * vh) + 0.05; //0.05 + vec4 vf = ((vh * va + 0.004f) / ((vh * (va + 0.55f) + 0.0491f))) - 0.0821f+0.000633604888; //((0+0.004)/((0*(0.05+0.55)+0.0491)))-0.0821 + return vf.xyz / vf.www; +} +const mat3 ACESInputMat = +mat3(0.59719, 0.35458, 0.04823, + 0.07600, 0.90834, 0.01566, + 0.02840, 0.13383, 0.83777 +); + +// ODT_SAT => XYZ => D60_2_D65 => sRGB +const mat3 ACESOutputMat = +mat3( 1.60475, -0.53108, -0.07367, + -0.10208, 1.10813, -0.00605, + -0.00327, -0.07276, 1.07602 +); +vec3 LinearTosRGB(in vec3 color) +{ + vec3 x = color * 12.92f; + vec3 y = 1.055f * pow(clamp(color,0.0,1.0), vec3(1.0f / 2.4f)) - 0.055f; + + vec3 clr = color; + clr.r = color.r < 0.0031308f ? x.r : y.r; + clr.g = color.g < 0.0031308f ? x.g : y.g; + clr.b = color.b < 0.0031308f ? x.b : y.b; + + return clr; +} +vec3 HableTonemap(vec3 linearColor) { + // A = shoulder strength + const float A = 0.22; + // B = linear strength + const float B = 0.3; + // C = linear angle + const float C = 0.1; + // D = toe strength + const float D = 0.4; + // E = toe numerator + const float E = 0.025; + // F = toe denominator + const float F = 0.30; + // Note: E / F = toe angle + // linearWhite = linear white point value + + vec3 x = linearColor*2.8; + vec3 color = ((x * (A * x + C * B) + D * E) / (x * (A * x + B) + D * F)) - E / F; + + const float W = 11.2; + const float white = ((W * (A * W + C * B) + D * E) / (W * (A * W + B) + D * F)) - E / F; + + return color / white; +} + +vec3 reinhard(vec3 x){ +x *= 1.66; +return x/(1.0+x); +} +vec3 ACESFilm( vec3 x ) +{ + x *= 0.23/0.267; + float a = 2.51f; + float b = 0.03f; + float c = 2.43f; + float d = 0.59f; + float e = 0.14f; + return (x*(a*x+b))/(x*(c*x+d)+e); +} + +// From https://www.shadertoy.com/view/WdjSW3 +vec3 Tonemap_Lottes(vec3 x) { + // Lottes 2016, "Advanced Techniques and Optimization of HDR Color Pipelines" + const float a = 1.7; + const float d = 0.92; + const float hdrMax = 3.0; + const float midIn = 0.2475; + const float midOut = 0.267; + + // Can be precomputed + const float b = + (-pow(midIn, a) + pow(hdrMax, a) * midOut) / + ((pow(hdrMax, a * d) - pow(midIn, a * d)) * midOut); + const float c = + (pow(hdrMax, a * d) * pow(midIn, a) - pow(hdrMax, a) * pow(midIn, a * d) * midOut) / + ((pow(hdrMax, a * d) - pow(midIn, a * d)) * midOut); + + return pow(x,vec3(a)) / (pow(x, vec3(a * d)) * b + c); +} +// From https://www.shadertoy.com/view/WdjSW3 +vec3 Tonemap_Uchimura(vec3 x, float P, float a, float m, float l, float c, float b) { + // Uchimura 2017, "HDR theory and practice" + // Math: https://www.desmos.com/calculator/gslcdxvipg + // Source: https://www.slideshare.net/nikuque/hdr-theory-and-practicce-jp + float l0 = ((P - m) * l) / a; + float L0 = m - m / a; + float L1 = m + (1.0 - m) / a; + float S0 = m + l0; + float S1 = m + a * l0; + float C2 = (a * P) / (P - S1); + float CP = -C2 / P; + + vec3 w0 = 1.0 - smoothstep(0.0, m, x); + vec3 w2 = step(m + l0, x); + vec3 w1 = 1.0 - w0 - w2; + + vec3 T = m * pow(x / m, vec3(c)) + b; + vec3 S = P - (P - S1) * exp(CP * (x - S0)); + vec3 L = m + a * (x - m); + + return T * w0 + L * w1 + S * w2; +} + +vec3 Tonemap_Uchimura(vec3 x) { + const float P = 1.0; // max display brightness + const float a = 1.0; // contrast + const float m = 0.22; // linear section start + const float l = 0.4; // linear section length + const float c = 1.33; // black + const float b = 0.0; // pedestal + return Tonemap_Uchimura(x, P, a, m, l, c, b); +} diff --git a/shaders/world-1/lib/composite3.fsh b/shaders/world-1/lib/composite3.fsh new file mode 100644 index 0000000..cb2a2ba --- /dev/null +++ b/shaders/world-1/lib/composite3.fsh @@ -0,0 +1,78 @@ +#version 120 +//Horizontal bilateral blur for volumetric fog + Forward rendered objects + Draw volumetric fog +#extension GL_EXT_gpu_shader4 : enable + + + +varying vec2 texcoord; +flat varying vec3 zMults; +uniform sampler2D depthtex0; +uniform sampler2D colortex3; +uniform sampler2D colortex2; +uniform sampler2D colortex0; + +uniform int frameCounter; +uniform float far; +uniform float near; +uniform int isEyeInWater; + +uniform vec2 texelSize; +float ld(float depth) { + return 1.0 / (zMults.y - depth * zMults.z); // (-depth * (far - near)) = (2.0 * near)/ld - far - near +} + +vec4 BilateralUpscale(sampler2D tex, sampler2D depth,vec2 coord,float frDepth){ + vec4 vl = vec4(0.0); + float sum = 0.0; + mat3x3 weights; + ivec2 posD = ivec2(coord/2.0)*2; + ivec2 posVl = ivec2(coord/2.0); + float dz = zMults.x; + ivec2 pos = (ivec2(gl_FragCoord.xy+frameCounter) % 3 ); + //pos = ivec2(1,-1); + + ivec2 tcDepth = posD + ivec2(-2,-2) + pos*2; + float dsample = ld(texelFetch2D(depth,tcDepth,0).r); + float w = abs(dsample-frDepth) < dz ? 1.0 : 1e-5; + vl += texelFetch2D(tex,posVl+ivec2(-1)+pos,0)*w; + sum += w; + + tcDepth = posD + ivec2(-2,0) + pos*2; + dsample = ld(texelFetch2D(depth,tcDepth,0).r); + w = abs(dsample-frDepth) < dz ? 1.0 : 1e-5; + vl += texelFetch2D(tex,posVl+ivec2(-1,0)+pos,0)*w; + sum += w; + + tcDepth = posD + ivec2(0) + pos*2; + dsample = ld(texelFetch2D(depth,tcDepth,0).r); + w = abs(dsample-frDepth) < dz ? 1.0 : 1e-5; + vl += texelFetch2D(tex,posVl+ivec2(0)+pos,0)*w; + sum += w; + + tcDepth = posD + ivec2(0,-2) + pos*2; + dsample = ld(texelFetch2D(depth,tcDepth,0).r); + w = abs(dsample-frDepth) < dz ? 1.0 : 1e-5; + vl += texelFetch2D(tex,posVl+ivec2(0,-1)+pos,0)*w; + sum += w; + + return vl/sum; +} + +void main() { +/* DRAWBUFFERS:0 */ + + //3x3 bilateral upscale from half resolution + float frDepth = ld(texture2D(depthtex0,texcoord).x); + vec4 vl = BilateralUpscale(colortex0,depthtex0,gl_FragCoord.xy,frDepth); + + vec3 color = texture2D(colortex3,texcoord).rgb; + vec4 transparencies = texture2D(colortex2,texcoord); + color = color*(1.0-transparencies.a)+transparencies.rgb*10.; + + color *= vl.a; + color += vl.rgb; + + gl_FragData[0].rgb = clamp(color,6.11*1e-5,65000.0); + + gl_FragData[0].a = vl.a; +} diff --git a/shaders/world-1/lib/composite3.vsh b/shaders/world-1/lib/composite3.vsh new file mode 100644 index 0000000..05cecb7 --- /dev/null +++ b/shaders/world-1/lib/composite3.vsh @@ -0,0 +1,19 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + +varying vec2 texcoord; +flat varying vec3 zMults; +uniform float far; +uniform float near; +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + zMults = vec3(1.0/(far * near),far+near,far-near); + gl_Position = ftransform(); + texcoord = gl_MultiTexCoord0.xy; + +} diff --git a/shaders/world-1/lib/projections.glsl b/shaders/world-1/lib/projections.glsl new file mode 100644 index 0000000..72ab381 --- /dev/null +++ b/shaders/world-1/lib/projections.glsl @@ -0,0 +1,55 @@ +uniform mat4 gbufferProjection; +uniform mat4 gbufferProjectionInverse; +uniform mat4 gbufferPreviousProjection; +uniform mat4 gbufferModelViewInverse; +uniform mat4 gbufferModelView; +uniform mat4 shadowModelView; +uniform mat4 shadowProjection; + +uniform vec3 cameraPosition; + + +#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) +#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) + +vec3 toClipSpace3(vec3 viewSpacePosition) { + return projMAD(gbufferProjection, viewSpacePosition) / -viewSpacePosition.z * 0.5 + 0.5; +} + +vec3 toScreenSpace(vec3 p) { + vec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); + vec3 p3 = p * 2. - 1.; + vec4 fragposition = iProjDiag * p3.xyzz + gbufferProjectionInverse[3]; + return fragposition.xyz / fragposition.w; +} + +vec3 toScreenSpaceVector(vec3 p) { + vec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); + vec3 p3 = p * 2. - 1.; + vec4 fragposition = iProjDiag * p3.xyzz + gbufferProjectionInverse[3]; + return normalize(fragposition.xyz); +} + +vec3 toWorldSpace(vec3 p3){ + p3 = mat3(gbufferModelViewInverse) * p3 + gbufferModelViewInverse[3].xyz; + return p3; +} + +vec3 toWorldSpaceCamera(vec3 p3){ + p3 = mat3(gbufferModelViewInverse) * p3 + gbufferModelViewInverse[3].xyz; + return p3 + cameraPosition; +} + +vec3 toShadowSpace(vec3 p3){ + p3 = mat3(gbufferModelViewInverse) * p3 + gbufferModelViewInverse[3].xyz; + p3 = mat3(shadowModelView) * p3 + shadowModelView[3].xyz; + return p3; +} + +vec3 toShadowSpaceProjected(vec3 p3){ + p3 = mat3(gbufferModelViewInverse) * p3 + gbufferModelViewInverse[3].xyz; + p3 = mat3(shadowModelView) * p3 + shadowModelView[3].xyz; + p3 = diagonal3(shadowProjection) * p3 + shadowProjection[3].xyz; + + return p3; +} diff --git a/shaders/world-1/lib/sky_gradient.glsl b/shaders/world-1/lib/sky_gradient.glsl new file mode 100644 index 0000000..559faf3 --- /dev/null +++ b/shaders/world-1/lib/sky_gradient.glsl @@ -0,0 +1,84 @@ +#define DRAW_SUN //if not using custom sky +#define SKY_BRIGHTNESS_DAY 1.0 //[0.0 0.5 0.75 1. 1.2 1.4 1.6 1.8 2.0] +#define SKY_BRIGHTNESS_NIGHT 1.0 //[0.0 0.5 0.75 1. 1.2 1.4 1.6 1.8 2.0] +#define ffstep(x,y) clamp((y - x) * 1e35,0.0,1.0) +vec3 drawSun(float cosY, float sunInt,vec3 nsunlight,vec3 inColor){ + return inColor+nsunlight/0.0008821203*pow(smoothstep(cos(0.0093084168595*3.2),cos(0.0093084168595*1.8),cosY),3.)*0.62; +} +const float pi = 3.141592653589793238462643383279502884197169; +vec2 sphereToCarte(vec3 dir) { + float lonlat = atan(-dir.x, -dir.z); + return vec2(lonlat * (0.5/pi) +0.5,0.5*dir.y+0.5); +} +vec3 skyFromTex(vec3 pos,sampler2D sampler){ + vec2 p = sphereToCarte(pos); + return texture2D(sampler,p*texelSize*256.+vec2(18.5,1.5)*texelSize).rgb; +} +float w0(float a) +{ + return (1.0/6.0)*(a*(a*(-a + 3.0) - 3.0) + 1.0); +} + +float w1(float a) +{ + return (1.0/6.0)*(a*a*(3.0*a - 6.0) + 4.0); +} + +float w2(float a) +{ + return (1.0/6.0)*(a*(a*(-3.0*a + 3.0) + 3.0) + 1.0); +} + +float w3(float a) +{ + return (1.0/6.0)*(a*a*a); +} + +float g0(float a) +{ + return w0(a) + w1(a); +} + +float g1(float a) +{ + return w2(a) + w3(a); +} + +float h0(float a) +{ + return -1.0 + w1(a) / (w0(a) + w1(a)); +} + +float h1(float a) +{ + return 1.0 + w3(a) / (w2(a) + w3(a)); +} + +vec4 texture2D_bicubic(sampler2D tex, vec2 uv) +{ + vec4 texelSize = vec4(texelSize,1.0/texelSize); + uv = uv*texelSize.zw; + vec2 iuv = floor( uv ); + vec2 fuv = fract( uv ); + + float g0x = g0(fuv.x); + float g1x = g1(fuv.x); + float h0x = h0(fuv.x); + float h1x = h1(fuv.x); + float h0y = h0(fuv.y); + float h1y = h1(fuv.y); + + vec2 p0 = (vec2(iuv.x + h0x, iuv.y + h0y) - 0.5) * texelSize.xy; + vec2 p1 = (vec2(iuv.x + h1x, iuv.y + h0y) - 0.5) * texelSize.xy; + vec2 p2 = (vec2(iuv.x + h0x, iuv.y + h1y) - 0.5) * texelSize.xy; + vec2 p3 = (vec2(iuv.x + h1x, iuv.y + h1y) - 0.5) * texelSize.xy; + + return g0(fuv.y) * (g0x * texture2D(tex, p0) + + g1x * texture2D(tex, p1)) + + g1(fuv.y) * (g0x * texture2D(tex, p2) + + g1x * texture2D(tex, p3)); +} +vec4 skyCloudsFromTex(vec3 pos,sampler2D sampler){ + vec2 p = sphereToCarte(pos); + return texture2D(sampler,p*texelSize*256.+vec2(18.5+257.,1.5)*texelSize); +} diff --git a/shaders/world-1/lib/specular.glsl b/shaders/world-1/lib/specular.glsl new file mode 100644 index 0000000..40a8df9 --- /dev/null +++ b/shaders/world-1/lib/specular.glsl @@ -0,0 +1,410 @@ +//#define Specular_Reflections // reflections on blocks. REQUIRES A PBR RESOURCEPACK. +#define Screen_Space_Reflections // toggle screenspace reflections. if you want normal performance but still want a bit of shiny, the sun reflection stays on when this is turned off. +#define Sky_reflection // just in case you dont want it i guess +// #define Rough_reflections // turns the roughness GGXVNDF ON. sizable performance impact, and introduces alot of noise. + +#define Sun_specular_Strength 3 // increase for more sparkles [1 2 3 4 5 6 7 8 9 10] +#define reflection_quality 30 // adjust the quality of the screenspace reflections. [6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 ] +#define Roughness_Threshold 1.5 // using a curve on the roughness, make the reflections more or less visible on rough surfaces. good for hiding noise on rough materials [1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 ] + +// #define SCREENSHOT_MODE // go render mode and accumulate frames for as long as you want for max image quality. + +uniform sampler2D gaux1; +uniform int framemod8; + +const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); + + +// sun specular stuff +float square(float x){ + return x*x; +} +float g(float NdotL, float roughness){ + float alpha = square(max(roughness, 0.02)); + return 2.0 * NdotL / (NdotL + sqrt(square(alpha) + (1.0 - square(alpha)) * square(NdotL))); +} +float gSimple(float dp, float roughness){ + float k = roughness + 1; + k *= k/8.0; + return dp / (dp * (1.0-k) + k); +} +vec3 GGX2(vec3 n, vec3 v, vec3 l, float r, vec3 F0) { + + float roughness = r; // when roughness is zero it fucks up + + float alpha = square(roughness) + 1e-4; + + + vec3 h = normalize(l + v); + + float dotLH = clamp(dot(h,l),0.,1.); + float dotNH = clamp(dot(h,n),0.,1.); + float dotNL = clamp(dot(n,l),0.,1.); + float dotNV = clamp(dot(n,v),0.,1.); + float dotVH = clamp(dot(h,v),0.,1.); + + + float D = alpha / (3.141592653589793*square(square(dotNH) * (alpha - 1.0) + 1.0)); + float G = gSimple(dotNV, roughness) * gSimple(dotNL, roughness); + vec3 F = F0 + (1. - F0) * exp2((-5.55473*dotVH-6.98316)*dotVH); + + return dotNL * F * (G * D / (4 * dotNV * dotNL + 1e-7)); +} + + +// other shit +float invLinZ (float lindepth){ + return -((2.0*near/lindepth)-far-near)/(far-near); +} +vec3 toClipSpace3(vec3 viewSpacePosition) { + return projMAD(gbufferProjection, viewSpacePosition) / -viewSpacePosition.z * 0.5 + 0.5; +} +float linZ(float depth) { + return (2.0 * near) / (far + near - depth * (far - near)); + // l = (2*n)/(f+n-d(f-n)) + // f+n-d(f-n) = 2n/l + // -d(f-n) = ((2n/l)-f-n) + // d = -((2n/l)-f-n)/(f-n) + +} + +void frisvad(in vec3 n, out vec3 f, out vec3 r){ + if(n.z < -0.9) { + f = vec3(0.,-1,0); + r = vec3(-1, 0, 0); + } else { + float a = 1./(1.+n.z); + float b = -n.x*n.y*a; + f = vec3(1. - n.x*n.x*a, b, -n.x) ; + r = vec3(b, 1. - n.y*n.y*a , -n.y); + } +} + +mat3 CoordBase(vec3 n){ + vec3 x,y; + frisvad(n,x,y); + return mat3(x,y,n); +} + +float unpackRoughness(float x){ + float r = 1.0 - x; + return clamp(r*r,0,1); +} + +vec2 R2_samples_spec(int n){ + vec2 alpha = vec2(0.75487765, 0.56984026); + return fract(alpha * n); +} + +vec3 sampleGGXVNDF(vec3 V_, float roughness, float U1, float U2){ + // stretch view + vec3 V = normalize(vec3(roughness * V_.x, roughness * V_.y, V_.z)); + // orthonormal basis + vec3 T1 = (V.z < 0.9999) ? normalize(cross(V, vec3(0,0,1))) : vec3(1,0,0); + vec3 T2 = cross(T1, V); + // sample point with polar coordinates (r, phi) + float a = 1.0 / (1.0 + V.z); + float r = sqrt(U1*0.25); + float phi = (U2 -near) ? + (-near -position.z) / dir.z : far*sqrt(3.); + vec3 direction = normalize(toClipSpace3(position+dir*rayLength)-clipPosition); //convert to clip space + direction.xy = normalize(direction.xy); + + //get at which length the ray intersects with the edge of the screen + vec3 maxLengths = (step(0.,direction)-clipPosition) / direction; + float mult = min(min(maxLengths.x,maxLengths.y),maxLengths.z); + + vec3 stepv = direction * mult / quality*vec3(1,1,1.0); + // if(hand) dither *= 0.1 ; + vec3 spos = clipPosition*vec3(1,1,1.0) + stepv*dither; + + float minZ = spos.z+stepv.z; + float maxZ = spos.z+stepv.z; + + spos.xy += TAA_Offset*texelSize*0.5/1; + + // for (int i = 0; i <= int(quality); i++) { + + // // decode depth buffer + // vec2 testthing = hand ? spos.xy*texelSize : spos.xy/texelSize/4.0; // fix for ssr on hand + + // float sp = sqrt(texelFetch2D(gaux1,ivec2(spos.xy/texelSize/4.0),0).w/65000.0); + + // sp = invLinZ(sp); + + // if(sp <= max(maxZ,minZ) && sp >= min(maxZ,minZ) ) return vec3(spos.xy/1,sp); + + // spos += stepv; + + // //small bias + // float biasamount = 0.00015; + // if(hand) biasamount = 0.01; + // // minZ = maxZ-clamp(fres*0.0004 ,0.00004,0.0004) / ld(spos.z); + // minZ = maxZ-biasamount / ld(spos.z); + + // maxZ += stepv.z; + + // } + for (int i = 0; i < int(quality+1); i++) { + + vec2 testthing = hand ? spos.xy : spos.xy/texelSize; // fix for ssr on hand + float sp=texelFetch2D(depthtex1,ivec2(testthing),0).x; + + if(sp <= max(maxZ,minZ) && sp >= min(maxZ,minZ)){ + return vec3(spos.xy,sp); + + } + spos += stepv; + //small bias + float biasamount = 0.00015; + if(hand) biasamount = 0.01; + // minZ = maxZ-clamp(fres*0.0004 ,0.00004,0.0004) / ld(spos.z); + minZ = maxZ-biasamount / ld(spos.z); + maxZ += stepv.z; + } + + return vec3(1.1); +} + +vec3 mix_vec3(vec3 X, vec3 Y, float A){ + return X * (1.0 - A) + Y * A; +} +float mix_float(float X, float Y, float A){ + return X * (1.0 - A) + Y * A; +} + + +// vec3 gaussblur( vec4 colorout, vec2 texcoord ) +// { +// float Pi = 6.28318530718; // Pi*2 + +// // GAUSSIAN BLUR SETTINGS {{{ +// float Directions = 16.0; // BLUR DIRECTIONS (Default 16.0 - More is better but slower) +// float Quality = 3.0; // BLUR QUALITY (Default 4.0 - More is better but slower) +// float Size = 50.0; // BLUR SIZE (Radius) +// // GAUSSIAN BLUR SETTINGS }}} + +// vec2 Radius = Size/vec2(1920,1080); + +// // Normalized pixel coordinates (from 0 to 1) +// vec2 uv = texcoord/vec2(1920,1080); +// // Pixel colour +// vec4 Color = texture2D(colortex3, texcoord); + +// // Blur calculations +// for( float d=0.0; d 0.02; + +// vec4 Reflections = vec4(0.0); +// // SSR +// #ifdef Screen_Space_Reflections +// if ( hasReflections && NdotV < 0.00001) { // Skip SSR if ray contribution is low +// // float rayQuality = reflection_quality; +// float rayQuality = mix_float(reflection_quality,0.0,sqrt(roughness)); // Scale quality with ray contribution + +// vec3 rtPos = rayTraceSpeculars( mat3(gbufferModelView) * L,fragpos.xyz, noise.b, rayQuality, hand, fresnel); +// if (rtPos.z < 1. ){ // Reproject on previous frame +// vec3 previousPosition = mat3(gbufferModelViewInverse) * toScreenSpace(rtPos) + gbufferModelViewInverse[3].xyz + cameraPosition-previousCameraPosition; +// previousPosition = mat3(gbufferPreviousModelView) * previousPosition + gbufferPreviousModelView[3].xyz; +// previousPosition.xy = projMAD(gbufferPreviousProjection, previousPosition).xy / -previousPosition.z * 0.5 + 0.5; +// if (previousPosition.x > 0.0 && previousPosition.y > 0.0 && previousPosition.x < 1.0 && previousPosition.x < 1.0) { +// Reflections.a = 1.0; +// Reflections.rgb = texture2D(colortex5,previousPosition.xy).rgb; +// } +// } +// } +// #endif + +// // check if the f0 is within the metal ranges, then tint by albedo if it's true. +// vec3 Metals = f0.y >= 230.0/255.0 ? clamp(albedo + fresnel,0.0,1.0) : vec3(1.0); +// Reflections.rgb *= Metals; + +// // darken albedos, and stop darkening where the sky gets occluded indoors +// Reflections_Final *= 1.0 - Reflections.a*luma(rayContrib); + +// // apply all reflections to the lighting +// Reflections_Final += Reflections.rgb * luma(rayContrib); + +// #ifdef Rough_reflections +// Output = Reflections_Final; +// #else +// // interpolate between the albedos and reflections using the roughness value instead of the sampling. +// Output = mix_vec3(Reflections_Final, Output, sqrt(roughness)); +// #endif +// } + +// pain +void MaterialReflections( + inout vec3 Output, + float roughness, + vec3 f0, + vec3 albedo, + vec3 sunPos, + vec3 sunCol, + float diffuse, + float lightmap, + vec3 normal, + vec3 np3, + vec3 fragpos, + vec3 noise, + bool hand +){ + vec3 Reflections_Final = Output; + + float Outdoors = 0.0; + // float Outdoors = clamp((lightmap-0.5) * , 0.0,1.0); + + roughness = unpackRoughness(roughness); + f0 = f0.y == 0.0 ? vec3(0.04) : f0; + + + mat3 basis = CoordBase(normal); + vec3 normSpaceView = -np3*basis ; + + // roughness stuff + #ifdef Rough_reflections + int seed = (frameCounter%40000); + vec2 ij = fract(R2_samples_spec(seed) + noise.rg) ; + + vec3 H = sampleGGXVNDF(normSpaceView, roughness, ij.x, ij.y); + if(hand) H = normalize(vec3(0.0,0.0,1.0)); + #else + vec3 H = normalize(vec3(0.0,0.0,1.0)); + #endif + + vec3 Ln = reflect(-normSpaceView, clamp(H,-1.0,1.0)); + vec3 L = basis * Ln; + + // fresnel stuff + float fresnel = pow(clamp(1.0 + dot(-Ln, H),0.0,1.0),5.0); + // vec3 F = f0 + (1.0 - f0) * fresnel; + + vec3 F = mix(f0, vec3(1.0), fresnel); + vec3 rayContrib = F; + + + float NdotV = clamp(normalize(dot(np3, normal))*10000.,0.,1.); + bool hasReflections = (f0.y * (1.0 - roughness * Roughness_Threshold)) > 0.01; + + if (Roughness_Threshold == 1.0){ hasReflections = roughness > -1; NdotV = -1.0;} + + + // SSR, Sky, and Sun reflections + vec4 Reflections = vec4(0.0); + + #ifdef Screen_Space_Reflections + if ( hasReflections && NdotV <= 0.0) { // Skip SSR if ray contribution is low + #ifdef SCREENSHOT_MODE + float rayQuality = reflection_quality; + #else + float rayQuality = mix_float(reflection_quality,0.0,sqrt(roughness)); // Scale quality with ray contribution + #endif + vec3 rtPos = rayTraceSpeculars( mat3(gbufferModelView) * L,fragpos.xyz, noise.b, rayQuality, hand, fresnel); + if (rtPos.z < 1. ){ // Reproject on previous frame + vec3 previousPosition = mat3(gbufferModelViewInverse) * toScreenSpace(rtPos) + gbufferModelViewInverse[3].xyz + cameraPosition-previousCameraPosition; + previousPosition = mat3(gbufferPreviousModelView) * previousPosition + gbufferPreviousModelView[3].xyz; + previousPosition.xy = projMAD(gbufferPreviousProjection, previousPosition).xy / -previousPosition.z * 0.5 + 0.5; + if (previousPosition.x > 0.0 && previousPosition.y > 0.0 && previousPosition.x < 1.0 && previousPosition.x < 1.0) { + Reflections.a = 1.0; + Reflections.rgb = texture2D(colortex5,previousPosition.xy).rgb; + } + } + } + #endif + + // check if the f0 is within the metal ranges, then tint by albedo if it's true. + vec3 Metals = f0.y > 229.5/255.0 ? clamp(albedo + fresnel,0.0,1.0) : vec3(1.0); + Reflections.rgb *= Metals; + + // apply all reflections to the lighting + Reflections_Final += Reflections.rgb * luma(rayContrib); + + // interpolate between the albedos and reflections using the roughness value instead of the sampling. + float visibilityFactor = clamp(exp2((pow(roughness,3.0) / f0.y) * -4),0,1); + #ifdef Rough_reflections + Output = hand ? mix_vec3(Output, Reflections_Final, visibilityFactor) : Reflections_Final; + #else + Output = mix_vec3(Output, Reflections_Final, visibilityFactor); + #endif +} \ No newline at end of file diff --git a/shaders/world-1/lib/stars.glsl b/shaders/world-1/lib/stars.glsl new file mode 100644 index 0000000..38d3cbf --- /dev/null +++ b/shaders/world-1/lib/stars.glsl @@ -0,0 +1,48 @@ +//Original star code : https://www.shadertoy.com/view/Md2SR3 , optimised + + + +// Return random noise in the range [0.0, 1.0], as a function of x. +float hash12(vec2 p) +{ + vec3 p3 = fract(vec3(p.xyx) * 0.1031); + p3 += dot(p3, p3.yzx + 19.19); + return fract((p3.x + p3.y) * p3.z); +} +// Convert Noise2d() into a "star field" by stomping everthing below fThreshhold to zero. +float NoisyStarField( in vec2 vSamplePos, float fThreshhold ) +{ + float StarVal = hash12( vSamplePos ); + StarVal = clamp(StarVal/(1.0 - fThreshhold) - fThreshhold/(1.0 - fThreshhold),0.0,1.0); + + return StarVal; +} + +// Stabilize NoisyStarField() by only sampling at integer values. +float StableStarField( in vec2 vSamplePos, float fThreshhold ) +{ + // Linear interpolation between four samples. + // Note: This approach has some visual artifacts. + // There must be a better way to "anti alias" the star field. + float fractX = fract( vSamplePos.x ); + float fractY = fract( vSamplePos.y ); + vec2 floorSample = floor( vSamplePos ); + float v1 = NoisyStarField( floorSample, fThreshhold ); + float v2 = NoisyStarField( floorSample + vec2( 0.0, 1.0 ), fThreshhold ); + float v3 = NoisyStarField( floorSample + vec2( 1.0, 0.0 ), fThreshhold ); + float v4 = NoisyStarField( floorSample + vec2( 1.0, 1.0 ), fThreshhold ); + + float StarVal = v1 * ( 1.0 - fractX ) * ( 1.0 - fractY ) + + v2 * ( 1.0 - fractX ) * fractY + + v3 * fractX * ( 1.0 - fractY ) + + v4 * fractX * fractY; + return StarVal; +} + +float stars(vec3 fragpos){ + + float elevation = clamp(fragpos.y,0.,1.); + vec2 uv = fragpos.xz/(1.+elevation); + + return StableStarField(uv*700.,0.999)/4.*(0.3-0.3*rainStrength); +} diff --git a/shaders/world-1/lib/texFiltering.glsl b/shaders/world-1/lib/texFiltering.glsl new file mode 100644 index 0000000..7d58676 --- /dev/null +++ b/shaders/world-1/lib/texFiltering.glsl @@ -0,0 +1,19 @@ +vec4 smoothfilter(in sampler2D tex, in vec2 uv, in vec2 textureResolution) +{ + uv = uv*textureResolution + 0.5; + vec2 iuv = floor( uv ); + vec2 fuv = fract( uv ); + uv = iuv + (fuv*fuv)*(3.0-2.0*fuv); + uv = uv/textureResolution - 0.5/textureResolution; + return texture2D( tex, uv); +} + +float shadowsmoothfilter(in sampler2DShadow tex, in vec3 uv,in float textureResolution) +{ + uv.xy = uv.xy*textureResolution + 0.5; + vec2 iuv = floor( uv.xy ); + vec2 fuv = fract( uv.xy ); + uv.xy = iuv + (fuv*fuv)*(3.0-2.0*fuv); + uv.xy = uv.xy/textureResolution - 0.5/textureResolution; + return shadow2D( tex, uv).x; +} diff --git a/shaders/world-1/lib/util.glsl b/shaders/world-1/lib/util.glsl new file mode 100644 index 0000000..f701920 --- /dev/null +++ b/shaders/world-1/lib/util.glsl @@ -0,0 +1,196 @@ +#define TIME_MULT 1.0 +#define TIME (frameTimeCounter * TIME_MULT) + +const float PI = acos(-1.0); +const float TAU = PI * 2.0; +const float hPI = PI * 0.5; +const float rPI = 1.0 / PI; +const float rTAU = 1.0 / TAU; + +const float PHI = sqrt(5.0) * 0.5 + 0.5; +const float rLOG2 = 1.0 / log(2.0); + +const float goldenAngle = TAU / PHI / PHI; + +#define clamp01(x) clamp(x, 0.0, 1.0) +#define max0(x) max(x, 0.0) +#define min0(x) min(x, 0.0) +#define max3(a) max(max(a.x, a.y), a.z) +#define min3(a) min(min(a.x, a.y), a.z) +#define max4(a, b, c, d) max(max(a, b), max(c, d)) +#define min4(a, b, c, d) min(min(a, b), min(c, d)) + +#define fsign(x) (clamp01(x * 1e35) * 2.0 - 1.0) +#define fstep(x,y) clamp01((y - x) * 1e35) + +#define diagonal2(m) vec2((m)[0].x, (m)[1].y) +#define diagonal3(m) vec3(diagonal2(m), m[2].z) +#define diagonal4(m) vec4(diagonal3(m), m[2].w) + +#define transMAD(mat, v) (mat3(mat) * (v) + (mat)[3].xyz) +#define projMAD(mat, v) (diagonal3(mat) * (v) + (mat)[3].xyz) + +#define encodeColor(x) (x * 0.00005) +#define decodeColor(x) (x * 20000.0) + +#define cubeSmooth(x) (x * x * (3.0 - 2.0 * x)) + +#define lumCoeff vec3(0.2125, 0.7154, 0.0721) + +float facos(const float sx){ + float x = clamp(abs( sx ),0.,1.); + float a = sqrt( 1. - x ) * ( -0.16882 * x + 1.56734 ); + return sx > 0. ? a : PI - a; + //float c = clamp(-sx * 1e35, 0., 1.); + //return c * pi + a * -(c * 2. - 1.); //no conditional version +} + + +vec2 sincos(float x){ + return vec2(sin(x), cos(x)); +} + +vec2 circlemap(float i, float n){ + return sincos(i * n * goldenAngle) * sqrt(i); +} + +vec3 circlemapL(float i, float n){ + return vec3(sincos(i * n * goldenAngle), sqrt(i)); +} + +vec3 calculateRoughSpecular(const float i, const float alpha2, const int steps) { + + float x = (alpha2 * i) / (1.0 - i); + float y = i * float(steps) * 64.0 * 64.0 * goldenAngle; + + float c = inversesqrt(x + 1.0); + float s = sqrt(x) * c; + + return vec3(cos(y) * s, sin(y) * s, c); +} + +vec3 clampNormal(vec3 n, vec3 v){ + float NoV = clamp( dot(n, -v), 0., 1. ); + return normalize( NoV * v + n ); +} + +vec3 srgbToLinear(vec3 srgb){ + return mix( + srgb / 12.92, + pow(.947867 * srgb + .0521327, vec3(2.4) ), + step( .04045, srgb ) + ); +} + +vec3 linearToSRGB(vec3 linear){ + return mix( + linear * 12.92, + pow(linear, vec3(1./2.4) ) * 1.055 - .055, + step( .0031308, linear ) + ); +} + + + +vec3 blackbody(float Temp) +{ + float t = pow(Temp, -1.5); + float lt = log(Temp); + + vec3 col = vec3(0.0); + col.x = 220000.0 * t + 0.58039215686; + col.y = 0.39231372549 * lt - 2.44549019608; + col.y = Temp > 6500. ? 138039.215686 * t + 0.72156862745 : col.y; + col.z = 0.76078431372 * lt - 5.68078431373; + col = clamp01(col); + col = Temp < 1000. ? col * Temp * 0.001 : col; + + return srgbToLinear(col); +} + +float calculateHardShadows(float shadowDepth, vec3 shadowPosition, float bias) { + if(shadowPosition.z >= 1.0) return 1.0; + + return 1.0 - fstep(shadowDepth, shadowPosition.z - bias); +} + +vec3 genUnitVector(vec2 xy) { + xy.x *= TAU; xy.y = xy.y * 2.0 - 1.0; + return vec3(sincos(xy.x) * sqrt(1.0 - xy.y * xy.y), xy.y); +} + +vec2 rotate(vec2 x, float r){ + vec2 sc = sincos(r); + return mat2(sc.x, -sc.y, sc.y, sc.x) * x; +} + +vec3 cartToSphere(vec2 coord) { + coord *= vec2(TAU, PI); + vec2 lon = sincos(coord.x) * sin(coord.y); + return vec3(lon.x, 2.0/PI*coord.y-1.0, lon.y); +} + +vec2 sphereToCart(vec3 dir) { + float lonlat = atan(-dir.x, -dir.z); + return vec2(lonlat * rTAU +0.5,0.5*dir.y+0.5); +} + +mat3 getRotMat(vec3 x,vec3 y){ + float d = dot(x,y); + vec3 cr = cross(y,x); + + float s = length(cr); + + float id = 1.-d; + + vec3 m = cr/s; + + vec3 m2 = m*m*id+d; + vec3 sm = s*m; + + vec3 w = (m.xy*id).xxy*m.yzz; + + return mat3( + m2.x, w.x-sm.z, w.y+sm.y, + w.x+sm.z, m2.y, w.z-sm.x, + w.y-sm.y, w.z+sm.x, m2.z + ); +} + +// No intersection if returned y component is < 0.0 +vec2 rsi(vec3 position, vec3 direction, float radius) { + float PoD = dot(position, direction); + float radiusSquared = radius * radius; + + float delta = PoD * PoD + radiusSquared - dot(position, position); + if (delta < 0.0) return vec2(-1.0); + delta = sqrt(delta); + + return -PoD + vec2(-delta, delta); +} +float HaltonSeq3(int index) + { + float r = 0.; + float f = 1.; + int i = index; + while (i > 0) + { + f /= 3.0; + r += f * (i % 3); + i = int(i / 3.0); + } + return r; + } +float HaltonSeq2(int index) + { + float r = 0.; + float f = 1.; + int i = index; + while (i > 0) + { + f /= 2.0; + r += f * (i % 2); + i = int(i / 2.0); + } + return r; + } diff --git a/shaders/world-1/lib/volumetricClouds.glsl b/shaders/world-1/lib/volumetricClouds.glsl new file mode 100644 index 0000000..b5cc4e5 --- /dev/null +++ b/shaders/world-1/lib/volumetricClouds.glsl @@ -0,0 +1,282 @@ +#define VOLUMETRIC_CLOUDS + +float cloud_height = 1500.; +float maxHeight = 3200.; +#ifdef HQ_CLOUDS +int maxIT_clouds = 20; +int maxIT = 60; +#else +int maxIT_clouds = 9; +int maxIT = 27; +#endif + +float cdensity = 0.015; + + +//3D noise from 2d texture +float densityAtPos(in vec3 pos) +{ + + pos /= 18.; + pos.xz *= 0.5; + + + vec3 p = floor(pos); + vec3 f = fract(pos); + + f = (f*f) * (3.-2.*f); + + vec2 uv = p.xz + f.xz + p.y * vec2(0.0,193.0); + + vec2 coord = uv / 512.0; + //The y channel has an offset to avoid using two textures fetches + vec2 xy = texture2D(noisetex, coord).yx; + + return mix(xy.r,xy.g, f.y); +} +vec4 smoothfilter(in sampler2D tex, in vec2 uv) +{ + uv = uv*512.0 + 0.5; + vec2 iuv = floor( uv ); + vec2 fuv = fract( uv ); + uv = iuv + (fuv*fuv)*(3.0-2.0*fuv); + uv = uv/512.0 - 0.5/512.0; + return texture2D( tex, uv); +} +//Cloud without 3D noise, is used to exit early lighting calculations if there is no cloud +float cloudCov(in vec3 pos,vec3 samplePos){ + float mult = max(pos.y-2000.0,0.0)/2000.0; + float mult2 = max(-pos.y+2000.0,0.0)/500.0; + float coverage = clamp(texture2D(noisetex,samplePos.xz/12500.).r-0.2+0.4*rainStrength,0.0,1.0)/(1.0-0.2+0.4*rainStrength); + float cloud = coverage*coverage*4.0 - mult*mult*mult*3.0 - mult2*mult2; + return max(cloud, 0.0); +} +//Erode cloud with 3d Perlin-worley noise, actual cloud value +#ifdef HQ_CLOUDS + float cloudVol(in vec3 pos,in vec3 samplePos,in float cov){ + //Less erosion on bottom of the cloud + float mult2 = (pos.y-1500)/2500.0+rainStrength*0.4; + float noise = 1.0-densityAtPos(samplePos*15.); + noise += 0.5-densityAtPos(samplePos*30.)*0.5; + noise /= 1.5; + noise = noise*noise; + float cloud = clamp(cov-noise*noise*0.33*(0.2+mult2),0.0,1.0); + //float cloud = clamp(cov-0.1*(0.2+mult2),0.0,1.0); + return cloud; +} + //Low quality cloud, noise is replaced by the average noise value, used for shadowing + float cloudVolLQ(in vec3 pos){ + float mult = max(pos.y-2000.0,0.0)/2000.0; + float mult2 = max(-pos.y+2000.0,0.0)/500.0; + float mult3 = (pos.y-1500)/2500.0+rainStrength*0.4; + vec3 samplePos = pos*vec3(1.0,1./32.,1.0)/4+frameTimeCounter*vec3(0.5,0.,0.5)*25.; + float coverage = clamp(texture2D(noisetex,samplePos.xz/12500.).r-0.2+0.4*rainStrength,0.0,1.0)/(1.0-0.2+0.4*rainStrength); + float cloud = coverage*coverage*4.0 - mult*mult*mult*3.0 - mult2*mult2 - 0.11 * (0.2 + mult3); + return max(cloud, 0.0); + } +#else + float cloudVol(in vec3 pos,in vec3 samplePos,in float cov){ + float mult2 = (pos.y-1500)/2500.0+rainStrength*0.4; + float cloud = clamp(cov-0.11*(0.2+mult2),0.0,1.0); + return cloud; + + } + //Low quality cloud, noise is replaced by the average noise value, used for shadowing + float cloudVolLQ(in vec3 pos){ + float mult = max(pos.y-2000.0,0.0)/2000.0; + float mult2 = max(-pos.y+2000.0,0.0)/500.0; + float mult3 = (pos.y-1500)/2500.0+rainStrength*0.4; + vec3 samplePos = pos*vec3(1.0,1./32.,1.0)/4+frameTimeCounter*vec3(0.5,0.,0.5)*25.; + float coverage = clamp(texture2D(noisetex,samplePos.xz/12500.).r-0.2+0.4*rainStrength,0.0,1.0)/(1.0-0.2+0.4*rainStrength); + float cloud = coverage*coverage*4.0 - mult*mult*mult*3.0 - mult2*mult2 - 0.11 * (0.2 + mult3); + return max(cloud, 0.0); + } +#endif + + +//Mie phase function +float phaseg(float x, float g){ + float gg = g * g; + return (gg * -0.25 /3.14 + 0.25 /3.14) * pow(-2.0 * (g * x) + (gg + 1.0), -1.5); +} + +float calcShadow(vec3 pos, vec3 ray){ + float shadowStep = length(ray); + float d = 0.0; + for (int j=1;j<6;j++){ + float cloudS=cloudVolLQ(vec3(pos+ray*j)); + d += cloudS*cdensity; + + } + return max(exp(-shadowStep*d),exp(-0.25*shadowStep*d)*0.7); +} +float cirrusClouds(vec3 pos){ + vec2 pos2D = pos.xz/50000.0 + frameTimeCounter/200.; + float cirrusMap = clamp(texture2D(noisetex,pos2D.yx/6. ).b-0.7+0.7*rainStrength,0.0,1.0); + float cloud = texture2D(noisetex, pos2D).r; + float weights = 1.0; + vec2 posMult = vec2(2.0,1.5); + for (int i = 1; i < 4; i++){ + pos2D *= posMult; + float weight =exp2(-i*1.0); + cloud += texture2D(noisetex, pos2D).r*weight; + + weights += weight; + } + cloud = clamp(cloud*cirrusMap*0.25,0.0,1.0); + return cloud/weights * float(abs(pos.y - 5500.0) < 200.0); +} + +vec4 renderClouds(vec3 fragpositi, vec3 color,float dither,vec3 sunColor,vec3 moonColor,vec3 avgAmbient) { + #ifndef VOLUMETRIC_CLOUDS + return vec4(0.0,0.0,0.0,1.0); + #endif + //setup ray in projected shadow map space + bool land = false; + + float SdotU = dot(normalize(fragpositi.xyz),sunVec); + float z2 = length(fragpositi); + float z = -fragpositi.z; + + + //project pixel position into projected shadowmap space + vec4 fragposition = gbufferModelViewInverse*vec4(fragpositi,1.0); + + vec3 worldV = normalize(fragposition.rgb); + float VdotU = worldV.y; + maxIT_clouds = int(clamp(maxIT_clouds/sqrt(VdotU),0.0,maxIT*1.0)); + //worldV.y -= -length(worldV.xz)/sqrt(-length(worldV.xz/earthRad)*length(worldV.xz/earthRad)+earthRad); + + //project view origin into projected shadowmap space + vec4 start = (gbufferModelViewInverse*vec4(0.0,0.0,0.,1.)); + vec3 dV_view = worldV; + + + vec3 progress_view = dV_view*dither+cameraPosition; + + float vL = 0.0; + float total_extinction = 1.0; + + + float distW = length(worldV); + worldV = normalize(worldV)*300000. + cameraPosition; //makes max cloud distance not dependant of render distance + dV_view = normalize(dV_view); + + //setup ray to start at the start of the cloud plane and end at the end of the cloud plane + dV_view *= max(maxHeight-cloud_height, 0.0)/dV_view.y/maxIT_clouds; + vec3 startOffset = dV_view*dither; + + progress_view = startOffset + cameraPosition + dV_view*(cloud_height-cameraPosition.y)/(dV_view.y); + + + if (worldV.y < cloud_height) return vec4(0.,0.,0.,1.); //don't trace if no intersection is possible + + + + float shadowStep = 240.; + vec3 dV_Sun = normalize(mat3(gbufferModelViewInverse)*sunVec)*shadowStep; + + float mult = length(dV_view); + + + color = vec3(0.0); + + total_extinction = 1.0; + float SdotV = dot(sunVec,normalize(fragpositi)); + //fake multiple scattering approx 1 (from horizon zero down clouds) + float mieDay = max(phaseg(SdotV,0.7),phaseg(SdotV,0.2)); + float mieNight = max(phaseg(-SdotV,0.7),phaseg(-SdotV,0.2)); + + vec3 sunContribution = mieDay*sunColor*3.14; + vec3 moonContribution = mieNight*moonColor*3.14; + vec3 skyCol0 = avgAmbient*(1.0-rainStrength*0.8); + + float powderMulMoon = 1.0; + float powderMulSun = 1.0; + + for (int i=0;i0.00){ + float cloud = cloudVol(curvedPos,samplePos,coverageSP); + if (cloud > 0.0005){ + float muS = cloud*cdensity; + float muE = cloud*cdensity; + float muEshD = 0.0; + if (sunContribution.g > 1e-5){ + for (int j=1;j<8;j++){ + vec3 shadowSamplePos = curvedPos+dV_Sun*j; + if (shadowSamplePos.y < maxHeight) + { + float cloudS=cloudVolLQ(vec3(shadowSamplePos)); + muEshD += cloudS*cdensity; + } + } + } + float muEshN = 0.0; + if (moonContribution.g > 1e-5){ + for (int j=1;j<8;j++){ + vec3 shadowSamplePos = curvedPos-dV_Sun*j; + if (shadowSamplePos.y < maxHeight) + { + float cloudS=cloudVolLQ(vec3(shadowSamplePos)); + muEshN += cloudS*cdensity; + } + } + } + //fake multiple scattering approx 2 (from horizon zero down clouds) + float sunShadow = max(exp2(-shadowStep*muEshD),exp2(-0.25*shadowStep*muEshD))*(1.0-exp(-muE*100.0*2.0)); + float moonShadow = max(exp2(-shadowStep*muEshN),exp2(-0.25*shadowStep*muEshN))*(1.0-exp(-muE*100.0*2.0)); + float h = 0.5-0.5*clamp(curvedPos.y/4000.-1500./4000.,0.0,1.0); + float ambientPowder = (1.0-h*exp2(-muE*100.0*2.0)); + vec3 S = vec3(sunContribution*sunShadow+moonShadow*moonContribution+skyCol0*ambientPowder); + + + vec3 Sint=(S - S * exp2(-mult*muE)) / (muE); + color += muS*Sint*total_extinction; + total_extinction *= exp2(-muE*mult); + + + if (total_extinction < 1/250.) break; + } + } + + progress_view += dV_view; + } + + //high altitude clouds + progress_view = progress_view + (5500.0-progress_view.y) * dV_view / dV_view.y; + mult = 400.0 * inversesqrt(abs(normalize(dV_view).y)); + float cirrus = cirrusClouds(vec3(progress_view.x,5500.0,progress_view.z))*cdensity*2.0; + if (cirrus > 1e-5){ + float muEshD = 0.0; + if (sunContribution.g > 1e-5){ + for (int j=1;j<8;j++){ + float cloudS=cirrusClouds(vec3(progress_view+dV_Sun*j)); + muEshD += cloudS*cdensity*2.; + } + } + float muEshN = 0.0; + if (moonContribution.g > 1e-5){ + for (int j=1;j<8;j++){ + float cloudS=cirrusClouds(vec3(progress_view-dV_Sun*j)); + muEshN += cloudS*cdensity*2.0; + } + } + float sunShadow = max(exp(-shadowStep*muEshD),exp(-0.25*shadowStep*muEshD)*0.4)*(1.0-exp(-cirrus*mult*2.0)); + float moonShadow = max(exp(-shadowStep*muEshN),exp(-0.25*shadowStep*muEshN)*0.4)*(1.0-exp(-cirrus*mult*2.0)); + float ambientPowder = (1.0-exp(-cirrus*mult*2.0)); + vec3 S = vec3(sunContribution*sunShadow+moonShadow*moonContribution+skyCol0*ambientPowder*0.5); + vec3 Sint=(S - S * exp(-mult*cirrus)) / (cirrus); + color += Sint * cirrus * total_extinction; + total_extinction *= exp(-mult*cirrus); + } + float cosY = normalize(dV_view).y; + + + return mix(vec4(color,clamp(total_extinction*(1.0+1/250.)-1/250.,0.0,1.0)),vec4(0.0,0.0,0.0,1.0),1-smoothstep(0.02,0.15,cosY)); + +} diff --git a/shaders/world-1/lib/volumetricFog.glsl b/shaders/world-1/lib/volumetricFog.glsl new file mode 100644 index 0000000..83212d0 --- /dev/null +++ b/shaders/world-1/lib/volumetricFog.glsl @@ -0,0 +1,118 @@ +#define VL_SAMPLES2 6 //[4 6 8 10 12 14 16 20 24 30 40 50] +#define Ambient_Mult 1.0 //[0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.5 2.0 3.0 4.0 5.0 6.0 10.0] +#define SEA_LEVEL 70 //[0 10 20 30 40 50 60 70 80 90 100 110 120 130 150 170 190] //The volumetric light uses an altitude-based fog density, this is where fog density is the highest, adjust this value according to your world. +#define ATMOSPHERIC_DENSITY 1.0 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 4.0 5.0 7.5 10.0 12.5 15.0 20.] +#define fog_mieg1 0.40 //[0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.75 0.8 0.85 0.9 0.95 1.0] +#define fog_mieg2 0.10 //[0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.75 0.8 0.85 0.9 0.95 1.0] +#define fog_coefficientRayleighR 5.8 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0] +#define fog_coefficientRayleighG 1.35 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0] +#define fog_coefficientRayleighB 3.31 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0] + +#define fog_coefficientMieR 3.0 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0] +#define fog_coefficientMieG 3.0 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0] +#define fog_coefficientMieB 3.0 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0] + +#define Underwater_Fog_Density 1.0 //[0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.5 2.0 3.0 4.0] + +float phaseRayleigh(float cosTheta) { + const vec2 mul_add = vec2(0.1, 0.28) /acos(-1.0); + return cosTheta * mul_add.x + mul_add.y; // optimized version from [Elek09], divided by 4 pi for energy conservation +} +float cloudVol2(in vec3 pos){ + + vec3 samplePos = pos*vec3(1.0,1./16.,1.0)+frameTimeCounter*vec3(0.5,0.,0.5)*5.; + float coverage = mix(exp2(-(pos.y-SEA_LEVEL)*(pos.y-SEA_LEVEL)/10000.),1.0,rainStrength*0.5); + float noise = densityAtPos(samplePos*12.); + float unifCov = exp2(-max(pos.y-SEA_LEVEL,0.0)/50.); + + float cloud = pow(clamp(coverage-noise-0.76,0.0,1.0),2.)*1200./0.23/(coverage+0.01)*VFAmount*600+unifCov*60.*fogAmount; + +return cloud; +} + +mat2x3 getVolumetricRays(float dither,vec3 fragpos) { + + //project pixel position into projected shadowmap space + vec3 wpos = mat3(gbufferModelViewInverse) * fragpos + gbufferModelViewInverse[3].xyz; + vec3 fragposition = mat3(shadowModelView) * wpos + shadowModelView[3].xyz; + fragposition = diagonal3(shadowProjection) * fragposition + shadowProjection[3].xyz; + + + + //project view origin into projected shadowmap space + vec3 start = toShadowSpaceProjected(vec3(0.)); + + + //rayvector into projected shadow map space + //we can use a projected vector because its orthographic projection + //however we still have to send it to curved shadow map space every step + vec3 dV = (fragposition-start); + vec3 dVWorld = (wpos-gbufferModelViewInverse[3].xyz); + + float maxLength = min(length(dVWorld),256.0)/length(dVWorld); + dV *= maxLength; + dVWorld *= maxLength; + + //apply dither + vec3 progress = start.xyz; + vec3 progressW = gbufferModelViewInverse[3].xyz+cameraPosition; + vec3 vL = vec3(0.); + + float SdotV = dot(sunVec,normalize(fragpos))*lightCol.a; + float dL = length(dVWorld); + //Mie phase + somewhat simulates multiple scattering (Horizon zero down cloud approx) + float mie = max(phaseg(SdotV,fog_mieg1),1.0/13.0); + float rayL = phaseRayleigh(SdotV); + // wpos.y = clamp(wpos.y,0.0,1.0); + + vec3 ambientCoefs = dVWorld/dot(abs(dVWorld),vec3(1.)); + + vec3 ambientLight = ambientUp*clamp(ambientCoefs.y,0.,1.); + ambientLight += ambientDown*clamp(-ambientCoefs.y,0.,1.); + ambientLight += ambientRight*clamp(ambientCoefs.x,0.,1.); + ambientLight += ambientLeft*clamp(-ambientCoefs.x,0.,1.); + ambientLight += ambientB*clamp(ambientCoefs.z,0.,1.); + ambientLight += ambientF*clamp(-ambientCoefs.z,0.,1.); + + vec3 skyCol0 = ambientLight*2.*eyeBrightnessSmooth.y/vec3(240.)*Ambient_Mult*2.0/PI; + vec3 sunColor = lightCol.rgb; + + vec3 rC = vec3(fog_coefficientRayleighR*1e-6, fog_coefficientRayleighG*1e-5, fog_coefficientRayleighB*1e-5); + vec3 mC = vec3(fog_coefficientMieR*1e-6, fog_coefficientMieG*1e-6, fog_coefficientMieB*1e-6); + + + float mu = 1.0; + float muS = 1.0*mu; + vec3 absorbance = vec3(1.0); + float expFactor = 11.0; + for (int i=0;i FLICKER_REDUCTION BLEND_FACTOR ANTI_GHOSTING MOTION_REJECTION CLOSEST_VELOCITY NO_CLIP + +screen.Lighting= [Torch] [Sky] [Ambient] +screen.Torch = TORCH_R TORCH_G TORCH_B TORCH_AMOUNT +screen.Sky=[Sky_coefficients] [Sun_and_Moon_Colors] sunPathRotation +screen.Sky_coefficients = Sky_Brightness sky_mieg sky_coefficientRayleighR sky_coefficientRayleighG sky_coefficientRayleighB sky_coefficientMieR sky_coefficientMieG sky_coefficientMieB +screen.Sun_and_Moon_Colors = sunColorR sunColorG sunColorB sun_illuminance moonColorR moonColorG moonColorB moon_illuminance +screen.Ambient = MIN_LIGHT_AMOUNT SEPARATE_AO ambientOcclusionLevel Ambient_Mult + +screen.Shading = DISABLE_ALPHA_MIPMAPS [Shadows] [POM] BICUBIC_UPSCALING CONTRAST_ADAPTATIVE_SHARPENING SHARPENING +screen.Shadows = [Filtering] SCREENSPACE_CONTACT_SHADOWS shadowMapResolution CLOUDS_SHADOWS CLOUDS_SHADOWS_STRENGTH shadowDistanceRenderMul shadowDistance SHADOW_FRUSTRUM_CULLING CAVE_LIGHT_LEAK_FIX SSAO SSAO_SAMPLES SHADOW_DISABLE_ALPHA_MIPMAPS Stochastic_Transparent_Shadows +screen.Filtering = Variable_Penumbra_Shadows VPS_Search_Samples Min_Shadow_Filter_Radius Max_Shadow_Filter_Radius Max_Filter_Depth SHADOW_FILTER_SAMPLE_COUNT +screen.POM = POM_MAP_RES POM POM_DEPTH MAX_ITERATIONS MAX_DIST USE_LUMINANCE_AS_HEIGHTMAP +screen.Camera = EXPOSURE_MULTIPLIER Exposure_Speed AUTO_EXPOSURE Manual_exposure_value BLOOM_STRENGTH FinalR FinalG FinalB [Tonemapping] [DepthOfField] [Purkinje_effect] +screen.Purkinje_effect = Purkinje_strength Purkinje_strength Purkinje_R Purkinje_G Purkinje_B Purkinje_Multiplier +screen.Tonemapping = TONEMAP USE_ACES_COLORSPACE_APPROXIMATION SATURATION CROSSTALK +screen.DepthOfField = DOF HQ_DOF HEXAGONAL_BOKEH AUTOFOCUS focal aperture MANUAL_FOCUS FAR_BLUR_ONLY +texture.noise=texture/noises.png + +separateAo=true + + +beacon.beam.depth=true +rain.depth=false + +variable.float.texelSizeX = 1.0/viewWidth +variable.float.texelSizeY = 1.0/viewHeight +uniform.vec2.texelSize=vec2(texelSizeX,texelSizeY) + +uniform.int.framemod8 = frameCounter%8 + +variable.float.normSunVec = sqrt(sunPosition.x*sunPosition.x+sunPosition.y*sunPosition.y+sunPosition.z*sunPosition.z) +variable.float.normUpVec = sqrt(upPosition.x*upPosition.x+upPosition.y*upPosition.y+upPosition.z*upPosition.z) + +variable.float.sunPosX = sunPosition.x/normSunVec +variable.float.sunPosY = sunPosition.y/normSunVec +variable.float.sunPosZ = sunPosition.z/normSunVec + +uniform.vec3.sunVec=vec3(sunPosX,sunPosY,sunPosZ) + +variable.float.upPosX = upPosition.x/normUpVec +variable.float.upPosY = upPosition.y/normUpVec +variable.float.upPosZ = upPosition.z/normUpVec + +uniform.vec3.upVec=vec3(upPosX,upPosY,upPosZ) +uniform.float.sunElevation = sunPosX*upPosX+sunPosY*upPosY+sunPosZ*upPosZ +uniform.float.lightSign = clamp(sunElevation * 1000000000000000000, 0.0, 1.0) * 2.0 - 1.0 + +#Max angle at frustrum diagonal +variable.float.maxAngle = atan(1.0 / gbufferProjection.1.1 * sqrt(1.0+(aspectRatio * aspectRatio))) +uniform.float.cosFov = cos(maxAngle) +variable.float.viewDirX = gbufferModelViewInverse.2.0 +variable.float.viewDirY = gbufferModelViewInverse.2.1 +variable.float.viewDirZ = gbufferModelViewInverse.2.2 +variable.float.normView = sqrt(viewDirX*viewDirX + viewDirY*viewDirY + viewDirZ*viewDirZ) +variable.float.shViewDirX = (shadowModelView.0.0 * viewDirX + shadowModelView.1.0 * viewDirY + shadowModelView.2.0 * viewDirZ)/normView +variable.float.shViewDirY = (shadowModelView.0.1 * viewDirX + shadowModelView.1.1 * viewDirY + shadowModelView.2.1 * viewDirZ)/normView +variable.float.shViewDirZ = (shadowModelView.0.2 * viewDirX + shadowModelView.1.2 * viewDirY + shadowModelView.2.2 * viewDirZ)/normView + +uniform.vec3.shadowViewDir = vec3(shViewDirX, shViewDirY, shViewDirZ) + +variable.float.shStartX = (shadowModelView.0.0 * gbufferModelViewInverse.3.0 + shadowModelView.1.0 * gbufferModelViewInverse.3.1 + shadowModelView.2.0 * gbufferModelViewInverse.3.2) +variable.float.shStartY = (shadowModelView.0.1 * gbufferModelViewInverse.3.0 + shadowModelView.1.1 * gbufferModelViewInverse.3.1 + shadowModelView.2.1 * gbufferModelViewInverse.3.2) +variable.float.shStartZ = (shadowModelView.0.2 * gbufferModelViewInverse.3.0 + shadowModelView.1.2 * gbufferModelViewInverse.3.1 + shadowModelView.2.2 * gbufferModelViewInverse.3.2) + +uniform.vec3.shadowCamera = vec3(shStartX + shadowModelView.3.0 + shViewDirX*2., shStartY + shadowModelView.3.1 + shViewDirY*2., shStartZ + shadowModelView.3.2 + shViewDirZ*2.0) + + +variable.float.wSunX = (gbufferModelViewInverse.0.0 * sunPosX + gbufferModelViewInverse.1.0 * sunPosY + gbufferModelViewInverse.2.0 * sunPosZ) +variable.float.wSunY = (gbufferModelViewInverse.0.1 * sunPosX + gbufferModelViewInverse.1.1 * sunPosY + gbufferModelViewInverse.2.1 * sunPosZ) +variable.float.wSunZ = (gbufferModelViewInverse.0.2 * sunPosX + gbufferModelViewInverse.1.2 * sunPosY + gbufferModelViewInverse.2.2 * sunPosZ) + +variable.float.shSunX = (shadowModelView.0.0 * wSunX + shadowModelView.1.0 * wSunY + shadowModelView.2.0 * wSunZ) +variable.float.shSunY = (shadowModelView.0.1 * wSunX + shadowModelView.1.1 * wSunY + shadowModelView.2.1 * wSunZ) +variable.float.shSunZ = (shadowModelView.0.2 * wSunX + shadowModelView.1.2 * wSunY + shadowModelView.2.2 * wSunZ) + +uniform.vec3.shadowLightVec = vec3(lightSign*shSunX, lightSign*shSunY, lightSign*shSunZ) + +uniform.float.shadowMaxProj = 150.0/abs(sunPosY) diff --git a/shaders/world-1/texture/composite4.fsh b/shaders/world-1/texture/composite4.fsh new file mode 100644 index 0000000..fccda4b --- /dev/null +++ b/shaders/world-1/texture/composite4.fsh @@ -0,0 +1,37 @@ +#version 120 +//Horizontal bilateral blur for volumetric fog + Forward rendered objects + Draw volumetric fog +#extension GL_EXT_gpu_shader4 : enable + + + +varying vec2 texcoord; +flat varying vec3 zMults; +uniform sampler2D depthtex0; +uniform sampler2D colortex3; +uniform sampler2D colortex2; +uniform sampler2D colortex0; + +uniform int frameCounter; +uniform float far; +uniform float near; +uniform int isEyeInWater; + +uniform vec2 texelSize; +float ld(float depth) { + return 1.0 / (zMults.y - depth * zMults.z); // (-depth * (far - near)) = (2.0 * near)/ld - far - near +} + + +void main() { +/* DRAWBUFFERS:3 */ + vec3 color = texture2D(colortex3,texcoord).rgb; + vec4 transparencies = texture2D(colortex2,texcoord); + color = color*(1.0-transparencies.a)+transparencies.rgb*10.; + + vec4 vl = texture2D(colortex0,texcoord); + + color *= vl.a; + color += vl.rgb; + + gl_FragData[0].rgb = clamp(color,6.11*1e-5,65000.0); +} diff --git a/shaders/world-1/texture/composite4.vsh b/shaders/world-1/texture/composite4.vsh new file mode 100644 index 0000000..e6e3e92 --- /dev/null +++ b/shaders/world-1/texture/composite4.vsh @@ -0,0 +1,19 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + +varying vec2 texcoord; +flat varying vec3 zMults; +uniform float far; +uniform float near; +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + zMults = vec3((far * near)*2.0,far+near,far-near); + gl_Position = ftransform(); + texcoord = gl_MultiTexCoord0.xy; + +} diff --git a/shaders/world-1/texture/noises.png b/shaders/world-1/texture/noises.png new file mode 100644 index 0000000000000000000000000000000000000000..6236ff19990bb213e4ec6f6a51df1fc13138e582 GIT binary patch literal 695035 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 yNUa~SuZo9zB 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Ƴ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℞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

    Yi2^SGZ6h!TfpHNG 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

      r`*%wWjg2o<3!FDJr@VHqPU9k#`#ewcI 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≫vUQb#-F!u*zClQN@?MP)=TWr=6%kyA9OtVAX{4{qPh3q*r z<>#h2R}i0pyacev1Ed$maPHL_ zw}R?Wq7DJ_X+R$XdI|D-kTw{Mzku;R&{+_)8Gz3R<)W~71gZ}Jogb*q+e97(v(sU| zIlVan?mNia4`6jMG5eD`2C%tj;fecRqS}pJ`MN`w7sDpS@vxg7cWPC#Zcf&}5xAbJ zivw6e@@;|g2H=|l!Hy8M^u`!;08q0IP+!8tAYAkqey`0rF_cPWpttWUey zbjq%#{6fj!lkgCs2LNm>VN@nQDVA%AK3?GNN^Zi$VyxWW!&kB7N(TSVg)v1~tH|$l z+0&FiOz}O)ZiVc0Dn`3-Il(t6n`A5px;Sr9b4Jl`K5tMCYoHyS@qtsf(l`g*mJ)G) ziiZbnM6zcvR92#z;k3?Q+?pvxwvT7N;n3hBjx*^a%lwG2yF}gz@LWmbnDxKR-ZdbO z5p$S~XQbspK|3|&%QG>F%%OljQS$ewv8Bkpl zP3NSK05DFT1 zg=-WXd&9IMT&uwF4;c;&!@rVtgjjk-+fjyFWOjoLKc{QgbZwD^w}sh?VRlTKeJA(b z)47FQl=+~vqM)x4Dto5<<&+(lwCB_6@8mN*z3*+6`fE5Y%fhe1c|{mUrL&XtMP)V@ zXgdkqPQ-r&Ob|6WT?@!{xC(ZMV+T3!gLAl94x{Diw7Mp(`&WAV3axvIS>FZDUndv* zdUm7UR~pq{n$!s;^VcH0RDdg;dd-mU8S<}G`@Lmd*s{`UeawO#6E89dL{2240qiQE zSy$o|NP808%0PG3b6j;#GIk)^Z^`cO!0td;9SFm!MlR*1JDlA`9PI@LT|@CYqC7>F zU#ZUJNWV$Rqm}tiX50&55fU#rZT(_Br#0*u(6F3ZP)eh6enHRVMm;YTm0unHpu?s( zb&oNxChP(NAGtW$;j7aH@VsWufmem75&Mm`d zp#BbOCSbclx==il}MGmioL4Cp%(sC@v=2J$vT_aR4I(?ML+ zLHExc#>ftH=Z4t1vAnRczGn;n_cCYSznyuE)Bf0qCpD_md$PM`6ZN=GV3Q_otCHm{ z&mxnz2EIq&SHk~6G^ z$XE^_y`hzJ!Ol0b<{xkllIQ%g_GOvY5u=FuLGbwjI}EUwz­iy+Pg%T8eDLy+%) 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%0A4os% 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 %Xwxw4s#^wgS`JdVVU#(cv} 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 P00000NkvXXu0mjfdVlSA literal 0 HcmV?d00001 diff --git a/shaders/world-1/texture/noises.png.mcmeta b/shaders/world-1/texture/noises.png.mcmeta new file mode 100644 index 0000000..33f3199 --- /dev/null +++ b/shaders/world-1/texture/noises.png.mcmeta @@ -0,0 +1,7 @@ +{ + "texture": + { + "blur": true, + "clamp": false + } +} \ No newline at end of file diff --git a/shaders/world1/block.properties b/shaders/world1/block.properties new file mode 100644 index 0000000..73045f4 --- /dev/null +++ b/shaders/world1/block.properties @@ -0,0 +1,20 @@ +#if MC_VERSION >= 11300 +block.10001= minecraft:acacia_sapling minecraft:birch_sapling minecraft:dark_oak_sapling minecraft:jungle_sapling minecraft:oak_sapling minecraft:spruce_sapling minecraft:grass minecraft:dead_bush minecraft:fern minecraft:dandelion minecraft:poppy minecraft:blue_orchid minecraft:allium minecraft:azure_bluet minecraft:orange_tulip minecraft:pink_tulip minecraft:red_tulip minecraft:white_tulip minecraft:oxeye_daisy minecraft:brown_mushroom minecraft:red_mushroom minecraft:wheat minecraft:nether_wart minecraft:carrot minecraft:potato minecraft:beetroot_seeds +block.10003 = minecraft:acacia_leaves minecraft:birch_leaves minecraft:dark_oak_leaves minecraft:jungle_leaves minecraft:oak_leaves minecraft:spruce_leaves minecraft:vine +block.10004 = minecraft:cobweb minecraft:sugar_cane minecraft:pumpkin_seeds minecraft:lily_pad minecraft:lilac minecraft:sunflower minecraft:tall_grass minecraft:rose_bush minecraft:peony minecraft:large_fern +block.10002= minecraft:black_stained_glass minecraft:black_stained_glass_pane minecraft:blue_stained_glass minecraft:blue_stained_glass_pane minecraft:brown_stained_glass minecraft:brown_stained_glass_pane minecraft:cyan_stained_glass minecraft:cyan_stained_glass_pane minecraft:gray_stained_glass minecraft:gray_stained_glass_pane minecraft:green_stained_glass minecraft:green_stained_glass_pane minecraft:light_blue_stained_glass minecraft:light_blue_stained_glass_pane minecraft:light_gray_stained_glass minecraft:light_gray_stained_glass_pane minecraft:lime_stained_glass minecraft:lime_stained_glass_pane minecraft:magenta_stained_glass minecraft:magenta_stained_glass_pane minecraft:orange_stained_glass minecraft:orange_stained_glass_pane minecraft:pink_stained_glass minecraft:pink_stained_glass_pane minecraft:purple_stained_glass minecraft:purple_stained_glass_pane minecraft:red_stained_glass minecraft:red_stained_glass_pane minecraft:white_stained_glass minecraft:white_stained_glass_pane minecraft:yellow_stained_glass minecraft:yellow_stained_glass_pane minecraft:glass_pane minecraft:glass +block.8 = minecraft:water minecraft:flowing_water +block.79 = minecraft:ice +block.10005 = minecraft:glowstone minecraft:torch minecraft:wall_torch minecraft:lava minecraft:fire minecraft:redstone_torch minecraft:redstone_wall_torch minecraft:jack_o_lantern minecraft:magma_block minecraft:redstone_lamp:lit=true minecraft:lantern minecraft:campfire:lit=true minecraft:shroomlight minecraft:nether_portal minecraft:soul_torch minecraft:soul_wall_torch minecraft:soul_fire minecraft:end_rod minecraft:sea_lantern minecraft:soul_lantern minecraft:end_gateway minecraft:soul_campfire:lit=true minecraft:lava minecraft:fire +#else +#wavy plants, translucent, bottom vertices not moving +block.10001= 6 31 32 37 38 39 40 59 115 141 142 207 +#wavy plants (blocks) +block.10003 = 18 106 161 +#translucent +block.10004 = 30 83 104 105 111 175 176 177 +#reflective surfaces (not including water and ice) +block.10002=95 160 +#endif + +layer.translucent=minecraft:glass_pane minecraft:glass diff --git a/shaders/world1/composite10.fsh b/shaders/world1/composite10.fsh new file mode 100644 index 0000000..25c81c0 --- /dev/null +++ b/shaders/world1/composite10.fsh @@ -0,0 +1,45 @@ +#version 120 +//downsample 1st pass (half res) for bloom + +uniform sampler2D colortex3; +uniform vec2 texelSize; +uniform float viewWidth; +uniform float viewHeight; +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + +/* DRAWBUFFERS:6 */ +vec2 resScale = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.))/vec2(1920.,1080.); +vec2 quarterResTC = gl_FragCoord.xy*2.*texelSize; + + //0.5 + gl_FragData[0] = texture2D(colortex3,quarterResTC-1.0*vec2(texelSize.x,texelSize.y))/4.*0.5; + gl_FragData[0] += texture2D(colortex3,quarterResTC+1.0*vec2(texelSize.x,texelSize.y))/4.*0.5; + gl_FragData[0] += texture2D(colortex3,quarterResTC+vec2(-1.0*texelSize.x,1.0*texelSize.y))/4.*0.5; + gl_FragData[0] += texture2D(colortex3,quarterResTC+vec2(1.0*texelSize.x,-1.0*texelSize.y))/4.*0.5; + + //0.25 + gl_FragData[0] += texture2D(colortex3,quarterResTC-2.0*vec2(texelSize.x,0.0))/2.*0.125; + gl_FragData[0] += texture2D(colortex3,quarterResTC+2.0*vec2(0.0,texelSize.y))/2.*0.125; + gl_FragData[0] += texture2D(colortex3,quarterResTC+2.0*vec2(0,-texelSize.y))/2*0.125; + gl_FragData[0] += texture2D(colortex3,quarterResTC+2.0*vec2(-texelSize.x,0.0))/2*0.125; + + //0.125 + gl_FragData[0] += texture2D(colortex3,quarterResTC-2.0*vec2(texelSize.x,texelSize.y))/4.*0.125; + gl_FragData[0] += texture2D(colortex3,quarterResTC+2.0*vec2(texelSize.x,texelSize.y))/4.*0.125; + gl_FragData[0] += texture2D(colortex3,quarterResTC+vec2(-2.0*texelSize.x,2.0*texelSize.y))/4.*0.125; + gl_FragData[0] += texture2D(colortex3,quarterResTC+vec2(2.0*texelSize.x,-2.0*texelSize.y))/4.*0.125; + + //0.125 + gl_FragData[0] += texture2D(colortex3,quarterResTC)*0.125; + + gl_FragData[0].rgb = clamp(gl_FragData[0].rgb,0.0,65000.); + + + +} diff --git a/shaders/world1/composite10.vsh b/shaders/world1/composite10.vsh new file mode 100644 index 0000000..8d47d5c --- /dev/null +++ b/shaders/world1/composite10.vsh @@ -0,0 +1,17 @@ +#version 120 + +uniform float viewWidth; +uniform float viewHeight; +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + //Improves performances and makes sure bloom radius stays the same at high resolution (>1080p) + vec2 clampedRes = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.)); + gl_Position = ftransform(); + //*0.51 to avoid errors when sampling outside since clearing is disabled + gl_Position.xy = (gl_Position.xy*0.5+0.5)*0.26/clampedRes*vec2(1920.0,1080.)*2-1.0; +} diff --git a/shaders/world1/composite11.fsh b/shaders/world1/composite11.fsh new file mode 100644 index 0000000..1320222 --- /dev/null +++ b/shaders/world1/composite11.fsh @@ -0,0 +1,61 @@ +#version 120 +//6 Horizontal gaussian blurs and horizontal downsampling + + +uniform sampler2D colortex6; +uniform vec2 texelSize; +varying vec2 texcoord; +uniform float viewWidth; +uniform float viewHeight; +vec2 resScale = vec2(1920.,1080.)/max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.)); +vec3 gauss1D(vec2 coord,vec2 dir,float alpha,int maxIT){ + vec4 tot = vec4(0.); + float maxTC = 0.25*resScale.x; + float minTC = 0.; + for (int i = -maxIT;i minTC && spCoord.x < maxTC); + } + return tot.rgb/max(1.0,tot.a); +} + +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { +/* DRAWBUFFERS:6 */ + +vec2 texcoord = (gl_FragCoord.xy*vec2(2.0,4.0))*texelSize; +vec2 gaussDir = vec2(1.0,0.0); +gl_FragData[0].rgb = vec3(0.0); +vec2 tc2 = texcoord*vec2(2.0,1.)/2.; +if (tc2.x < 1.0*resScale.x && tc2.y <1.0*resScale.y) +gl_FragData[0].xyz = gauss1D(tc2/2,gaussDir,0.16,0); + +vec2 tc4 = texcoord*vec2(4.0,1.)/2.-vec2(0.5*resScale.x+4.0*texelSize.x,0.)*2.0; +if (tc4.x > 0.0 && tc4.y > 0.0 && tc4.x < 1.0*resScale.x && tc4.y <1.0*resScale.y) +gl_FragData[0].xyz = gauss1D(tc4/2,gaussDir,0.16,3); + +vec2 tc8 = texcoord*vec2(8.0,1.)/2.-vec2(0.75*resScale.x+8.*texelSize.x,0.)*4.0; +if (tc8.x > 0.0 && tc8.y > 0.0 && tc8.x < 1.0*resScale.x && tc8.y <1.0*resScale.y) +gl_FragData[0].xyz = gauss1D(tc8/2,gaussDir,0.035,6); + +vec2 tc16 = texcoord*vec2(8.0,1./2.)-vec2(0.875*resScale.x+12.*texelSize.x,0.)*8.0; +if (tc16.x > 0.0 && tc16.y > 0.0 && tc16.x < 1.0*resScale.x && tc16.y <1.0*resScale.y) +gl_FragData[0].xyz = gauss1D(tc16/2,gaussDir,0.0085,12); + +vec2 tc32 = texcoord*vec2(16.0,1./2.)-vec2(0.9375*resScale.x+16.*texelSize.x,0.)*16.0; +if (tc32.x > 0.0 && tc32.y > 0.0 && tc32.x < 1.0*resScale.x && tc32.y <1.0*resScale.y) +gl_FragData[0].xyz = gauss1D(tc32/2,gaussDir,0.002,28); + +vec2 tc64 = texcoord*vec2(32.0,1./2.)-vec2(0.96875*resScale.x+20.*texelSize.x,0.)*32.0; +if (tc64.x > 0.0 && tc64.y > 0.0 && tc64.x < 1.0*resScale.x && tc64.y <1.0*resScale.y) +gl_FragData[0].xyz = gauss1D(tc64/2,gaussDir,0.0005,60); + +gl_FragData[0].rgb = clamp(gl_FragData[0].rgb,0.0,65000.); +} diff --git a/shaders/world1/composite11.vsh b/shaders/world1/composite11.vsh new file mode 100644 index 0000000..b299614 --- /dev/null +++ b/shaders/world1/composite11.vsh @@ -0,0 +1,20 @@ +#version 120 + +uniform float viewWidth; +uniform float viewHeight; +varying vec2 texcoord; +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + vec2 clampedRes = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.0)); + gl_Position = ftransform(); + //0-0.25 + gl_Position.y = (gl_Position.y*0.5+0.5)*0.25/clampedRes.y*1080.0*2.0-1.0; + //0-0.5 + gl_Position.x = (gl_Position.x*0.5+0.5)*0.5/clampedRes.x*1920.0*2.0-1.0; + texcoord = gl_MultiTexCoord0.xy/clampedRes*vec2(1920.,1080.); +} diff --git a/shaders/world1/composite12.fsh b/shaders/world1/composite12.fsh new file mode 100644 index 0000000..dd63b74 --- /dev/null +++ b/shaders/world1/composite12.fsh @@ -0,0 +1,61 @@ +#version 120 +//6 Vertical gaussian blurs and vertical downsampling + + + +uniform sampler2D colortex6; +uniform vec2 texelSize; +varying vec2 texcoord; +uniform float viewWidth; +uniform float viewHeight; +vec2 resScale = vec2(1920.,1080.)/max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.)); +vec3 gauss1D(vec2 coord,vec2 dir,float alpha,int maxIT){ + vec4 tot = vec4(0.); + float maxTC = 0.25*resScale.y; + float minTC = 0.; + for (int i = -maxIT;i minTC && spCoord.y < maxTC); + } + return tot.rgb/max(1.0,tot.a); +} + +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { +/* DRAWBUFFERS:6 */ +vec2 texcoord = (gl_FragCoord.xy*vec2(2.0,4.0))*texelSize; + +vec2 gaussDir = vec2(0.0,1.0); +gl_FragData[0].rgb = vec3(0.0); +vec2 tc2 = texcoord*vec2(2.0,1.); +if (tc2.x < 1.0*resScale.x && tc2.y <1.0*resScale.y) +gl_FragData[0].xyz = gauss1D(texcoord/vec2(2.0,4.0),gaussDir,0.16,0); + +vec2 tc4 = texcoord*vec2(4.0,2.)-vec2(0.5*resScale.x+4.0*texelSize.x,0.)*4.0; +if (tc4.x > 0.0 && tc4.y > 0.0 && tc4.x < 1.0*resScale.x && tc4.y <1.0*resScale.y) +gl_FragData[0].xyz = gauss1D(texcoord/vec2(2.0,2.0),gaussDir,0.16,3); + +vec2 tc8 = texcoord*vec2(8.0,4.)-vec2(0.75*resScale.x+8.*texelSize.x,0.)*8.0; +if (tc8.x > 0.0 && tc8.y > 0.0 && tc8.x < 1.0*resScale.x && tc8.y <1.0*resScale.y) +gl_FragData[0].xyz = gauss1D(texcoord*vec2(1.0,2.0)/vec2(2.0,2.0),gaussDir,0.035,6); + +vec2 tc16 = texcoord*vec2(16.0,8.)-vec2(0.875*resScale.x+12.*texelSize.x,0.)*16.0; +if (tc16.x > 0.0 && tc16.y > 0.0 && tc16.x < 1.0*resScale.x && tc16.y <1.0*resScale.y) +gl_FragData[0].xyz = gauss1D(texcoord*vec2(1.0,4.0)/vec2(2.0,2.0),gaussDir,0.0085,12); + +vec2 tc32 = texcoord*vec2(32.0,16.)-vec2(0.9375*resScale.x+16.*texelSize.x,0.)*32.0; +if (tc32.x > 0.0 && tc32.y > 0.0 && tc32.x < 1.0*resScale.x && tc32.y <1.0*resScale.y) +gl_FragData[0].xyz = gauss1D(texcoord*vec2(1.0,8.0)/vec2(2.0,2.0),gaussDir,0.002,30); + +vec2 tc64 = texcoord*vec2(64.0,32.)-vec2(0.96875*resScale.x+20.*texelSize.x,0.)*64.0; +if (tc64.x > 0.0 && tc64.y > 0.0 && tc64.x < 1.0*resScale.x && tc64.y <1.0*resScale.y) +gl_FragData[0].xyz = gauss1D(texcoord*vec2(1.0,16.0)/vec2(2.0,2.0),gaussDir,0.0005,60); + +gl_FragData[0].rgb = clamp(gl_FragData[0].rgb,0.0,65000.); +} diff --git a/shaders/world1/composite12.vsh b/shaders/world1/composite12.vsh new file mode 100644 index 0000000..56683b4 --- /dev/null +++ b/shaders/world1/composite12.vsh @@ -0,0 +1,21 @@ +#version 120 + +uniform float viewWidth; +uniform float viewHeight; +varying vec2 texcoord; +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + vec2 clampedRes = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.0)); + gl_Position = ftransform(); + //0-0.25 + gl_Position.y = (gl_Position.y*0.5+0.5)*0.25/clampedRes.y*1080.0*2.0-1.0; + //0-0.5 + gl_Position.x = (gl_Position.x*0.5+0.5)*0.5/clampedRes.x*1920.0*2.0-1.0; + texcoord = gl_MultiTexCoord0.xy/clampedRes*vec2(1920.,1080.); + +} diff --git a/shaders/world1/composite14.fsh b/shaders/world1/composite14.fsh new file mode 100644 index 0000000..6bfa802 --- /dev/null +++ b/shaders/world1/composite14.fsh @@ -0,0 +1,103 @@ +#version 120 +//Merge and upsample the blurs into a 1/4 res bloom buffer + +uniform sampler2D colortex3; +uniform sampler2D colortex6; + +uniform vec2 texelSize; +uniform float viewWidth; +uniform float viewHeight; + +float w0(float a) +{ + return (1.0/6.0)*(a*(a*(-a + 3.0) - 3.0) + 1.0); +} + +float w1(float a) +{ + return (1.0/6.0)*(a*a*(3.0*a - 6.0) + 4.0); +} + +float w2(float a) +{ + return (1.0/6.0)*(a*(a*(-3.0*a + 3.0) + 3.0) + 1.0); +} + +float w3(float a) +{ + return (1.0/6.0)*(a*a*a); +} + +float g0(float a) +{ + return w0(a) + w1(a); +} + +float g1(float a) +{ + return w2(a) + w3(a); +} + +float h0(float a) +{ + return -1.0 + w1(a) / (w0(a) + w1(a)); +} + +float h1(float a) +{ + return 1.0 + w3(a) / (w2(a) + w3(a)); +} + +vec4 texture2D_bicubic(sampler2D tex, vec2 uv) +{ + vec4 texelSize = vec4(texelSize,1.0/texelSize); + uv = uv*texelSize.zw; + vec2 iuv = floor( uv ); + vec2 fuv = fract( uv ); + + float g0x = g0(fuv.x); + float g1x = g1(fuv.x); + float h0x = h0(fuv.x); + float h1x = h1(fuv.x); + float h0y = h0(fuv.y); + float h1y = h1(fuv.y); + + vec2 p0 = (vec2(iuv.x + h0x, iuv.y + h0y) - 0.5) * texelSize.xy; + vec2 p1 = (vec2(iuv.x + h1x, iuv.y + h0y) - 0.5) * texelSize.xy; + vec2 p2 = (vec2(iuv.x + h0x, iuv.y + h1y) - 0.5) * texelSize.xy; + vec2 p3 = (vec2(iuv.x + h1x, iuv.y + h1y) - 0.5) * texelSize.xy; + + return g0(fuv.y) * (g0x * texture2D(tex, p0) + + g1x * texture2D(tex, p1)) + + g1(fuv.y) * (g0x * texture2D(tex, p2) + + g1x * texture2D(tex, p3)); +} + +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { +/* DRAWBUFFERS:3 */ +vec2 resScale = vec2(1920.,1080.)/max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.)); +vec2 texcoord = ((gl_FragCoord.xy)*2.+0.5)*texelSize; +vec3 bloom = texture2D_bicubic(colortex3,texcoord/2.0).rgb; //1/4 res + +bloom += texture2D_bicubic(colortex6,texcoord/4.).rgb; //1/8 res + +bloom += texture2D_bicubic(colortex6,texcoord/8.+vec2(0.25*resScale.x+2.5*texelSize.x,.0)).rgb; //1/16 res + +bloom += texture2D_bicubic(colortex6,texcoord/16.+vec2(0.375*resScale.x+4.5*texelSize.x,.0)).rgb; //1/32 res + +bloom += texture2D_bicubic(colortex6,texcoord/32.+vec2(0.4375*resScale.x+6.5*texelSize.x,.0)).rgb*1.0; //1/64 res +bloom += texture2D_bicubic(colortex6,texcoord/64.+vec2(0.46875*resScale.x+8.5*texelSize.x,.0)).rgb*1.0; //1/128 res +bloom += texture2D_bicubic(colortex6,texcoord/128.+vec2(0.484375*resScale.x+10.5*texelSize.x,.0)).rgb*1.0; //1/256 res + +//bloom = texture2D_bicubic(colortex6,texcoord).rgb*6.; //1/8 res + +gl_FragData[0].rgb = bloom*2.; + +gl_FragData[0].rgb = clamp(gl_FragData[0].rgb,0.0,65000.); +} diff --git a/shaders/world1/composite14.vsh b/shaders/world1/composite14.vsh new file mode 100644 index 0000000..386f006 --- /dev/null +++ b/shaders/world1/composite14.vsh @@ -0,0 +1,17 @@ +#version 120 + +uniform float viewWidth; +uniform float viewHeight; +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + //Improves performances and makes sure bloom radius stays the same at high resolution (>1080p) + vec2 clampedRes = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.)); + gl_Position = ftransform(); + //*0.51 to avoid errors when sampling outside since clearing is disabled + gl_Position.xy = (gl_Position.xy*0.5+0.5)*0.51/clampedRes*vec2(1920.0,1080.)*2.0-1.0; +} diff --git a/shaders/world1/composite15.fsh b/shaders/world1/composite15.fsh new file mode 100644 index 0000000..74136a6 --- /dev/null +++ b/shaders/world1/composite15.fsh @@ -0,0 +1,512 @@ +#version 120 +//Vignetting, applies bloom, applies exposure and tonemaps the final image +#extension GL_EXT_gpu_shader4 : enable +#define Fake_purkinje +#define BLOOMY_FOG 2.0 //[0.0 0.25 0.5 0.75 1.0 1.25 1.5 1.75 2.0 3.0 4.0 6.0 10.0 15.0 20.0] +#define BLOOM_STRENGTH 4.0 //[0.0 0.25 0.5 0.75 1.0 1.25 1.5 1.75 2.0 3.0 4.0] +#define TONEMAP ToneMap_Hejl2015 // Tonemapping operator [Tonemap_Uchimura HableTonemap reinhard Tonemap_Lottes ACESFilm ToneMap_Hejl2015] +//#define USE_ACES_COLORSPACE_APPROXIMATION // Do the tonemap in another colorspace + +#define Purkinje_strength 1.0 // Simulates how the eye is unable to see colors at low light intensities. 0 = No purkinje effect at low exposures [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +#define Purkinje_R 0.4 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +#define Purkinje_G 0.7 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +#define Purkinje_B 1.0 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +#define Purkinje_Multiplier 5.0 // How much the purkinje effect increases brightness [0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.05 1.1 1.15 1.2 1.25 1.3 1.35 1.4 1.45 1.5 1.55 1.6 1.65 1.7 1.75 1.8 1.85 1.9 1.95 2.0 2.05 2.1 2.15 2.2 2.25 2.3 2.35 2.4 2.45 2.5 2.55 2.6 2.65 2.7 2.75 2.8 2.85 2.9 2.95 3.0 3.05 3.1 3.15 3.2 3.25 3.3 3.35 3.4 3.45 3.5 3.55 3.6 3.65 3.7 3.75 3.8 3.85 3.9 3.95 4.0 4.05 4.1 4.15 4.2 4.25 4.3 4.35 4.4 4.45 4.5 4.55 4.6 4.65 4.7 4.75 4.8 4.85 4.9 4.95 5.0 5.05 5.1 5.15 5.2 5.25 5.3 5.35 5.4 5.45 5.5 5.55 5.6 5.65 5.7 5.75 5.8 5.85 5.9 5.95 6.0 6.05 6.1 6.15 6.2 6.25 6.3 6.35 6.4 6.45 6.5 6.55 6.6 6.65 6.7 6.75 6.8 6.85 6.9 6.95 7.0 7.05 7.1 7.15 7.2 7.25 7.3 7.35 7.4 7.45 7.5 7.55 7.6 7.65 7.7 7.75 7.8 7.85 7.9 7.95 8.0 8.05 8.1 8.15 8.2 8.25 8.3 8.35 8.4 8.45 8.5 8.55 8.6 8.65 8.7 8.75 8.8 8.85 8.9 8.95 9.0 9.05 9.1 9.15 9.2 9.25 9.3 9.35 9.4 9.45 9.5 9.55 9.6 9.65 9.7 9.75 9.8 9.85 9.9 9.95 ] + + +//#define DOF //enable depth of field (blur on non-focused objects) +//#define HQ_DOF //Slow! Forces circular bokeh! Uses 4 times more samples with noise in order to remove sampling artifacts at great blur sizes. +//#define HEXAGONAL_BOKEH //disabled : circular blur shape - enabled : hexagonal blur shape +#define AUTOFOCUS +//#define FAR_BLUR_ONLY // Removes DoF on objects closer to the camera than the focus point +//lens properties +#define focal 2.4 // Centimeters [0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.05 1.1 1.15 1.2 1.25 1.3 1.35 1.4 1.45 1.5 1.55 1.6 1.65 1.7 1.75 1.8 1.85 1.9 1.95 2.0 2.05 2.1 2.15 2.2 2.25 2.3 2.35 2.4 2.45 2.5 2.55 2.6 2.65 2.7 2.75 2.8 2.85 2.9 2.95 3.0 3.05 3.1 3.15 3.2 3.25 3.3 3.35 3.4 3.45 3.5 3.55 3.6 3.65 3.7 3.75 3.8 3.85 3.9 3.95 4.0 4.05 4.1 4.15 4.2 4.25 4.3 4.35 4.4 4.45 4.5 4.55 4.6 4.65 4.7 4.75 4.8 4.85 4.9 4.95 5.0 5.05 5.1 5.15 5.2 5.25 5.3 5.35 5.4 5.45 5.5 5.55 5.6 5.65 5.7 5.75 5.8 5.85 5.9 5.95 6.0 6.05 6.1 6.15 6.2 6.25 6.3 6.35 6.4 6.45 6.5 6.55 6.6 6.65 6.7 6.75 6.8 6.85 6.9 6.95 7.0 7.05 7.1 7.15 7.2 7.25 7.3 7.35 7.4 7.45 7.5 7.55 7.6 7.65 7.7 7.75 7.8 7.85 7.9 7.95 8.0 8.05 8.1 8.15 8.2 8.25 8.3 8.35 8.4 8.45 8.5 8.55 8.6 8.65 8.7 8.75 8.8 8.85 8.9 8.95 9.0 9.05 9.1 9.15 9.2 9.25 9.3 9.35 9.4 9.45 9.5 9.55 9.6 9.65 9.7 9.75 9.8 9.85 9.9 9.95 ] +#define aperture 0.8 // Centimeters [0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.05 1.1 1.15 1.2 1.25 1.3 1.35 1.4 1.45 1.5 1.55 1.6 1.65 1.7 1.75 1.8 1.85 1.9 1.95 2.0 2.05 2.1 2.15 2.2 2.25 2.3 2.35 2.4 2.45 2.5 2.55 2.6 2.65 2.7 2.75 2.8 2.85 2.9 2.95 3.0 3.05 3.1 3.15 3.2 3.25 3.3 3.35 3.4 3.45 3.5 3.55 3.6 3.65 3.7 3.75 3.8 3.85 3.9 3.95 4.0 4.05 4.1 4.15 4.2 4.25 4.3 4.35 4.4 4.45 4.5 4.55 4.6 4.65 4.7 4.75 4.8 4.85 4.9 4.95 5.0 5.05 5.1 5.15 5.2 5.25 5.3 5.35 5.4 5.45 5.5 5.55 5.6 5.65 5.7 5.75 5.8 5.85 5.9 5.95 6.0 6.05 6.1 6.15 6.2 6.25 6.3 6.35 6.4 6.45 6.5 6.55 6.6 6.65 6.7 6.75 6.8 6.85 6.9 6.95 7.0 7.05 7.1 7.15 7.2 7.25 7.3 7.35 7.4 7.45 7.5 7.55 7.6 7.65 7.7 7.75 7.8 7.85 7.9 7.95 8.0 8.05 8.1 8.15 8.2 8.25 8.3 8.35 8.4 8.45 8.5 8.55 8.6 8.65 8.7 8.75 8.8 8.85 8.9 8.95 9.0 9.05 9.1 9.15 9.2 9.25 9.3 9.35 9.4 9.45 9.5 9.55 9.6 9.65 9.7 9.75 9.8 9.85 9.9 9.95 ] +#define MANUAL_FOCUS 48.0 // If autofocus is turned off, sets the focus point (meters) [0.06948345122280154 0.07243975703425146 0.07552184450877376 0.07873506526686186 0.0820849986238988 0.08557746127787037 0.08921851740926011 0.09301448921066349 0.09697196786440505 0.10109782498721881 0.10539922456186433 0.10988363537639657 0.11455884399268773 0.11943296826671962 0.12451447144412296 0.129812176855438 0.1353352832366127 0.1410933807013415 0.1470964673929768 0.15335496684492847 0.1598797460796939 0.16668213447794653 0.17377394345044514 0.18116748694692214 0.18887560283756183 0.19691167520419406 0.20528965757990927 0.21402409717744744 0.22313016014842982 0.2326236579172927 0.2425210746356487 0.25283959580474646 0.26359713811572677 0.27481238055948964 0.2865047968601901 0.29869468928867837 0.3114032239145977 0.32465246735834974 0.3384654251067422 0.3528660814588489 0.36787944117144233 0.3835315728763107 0.39984965434484737 0.4168620196785084 0.4345982085070782 0.453089017280169 0.4723665527410147 0.49246428767540973 0.513417119032592 0.5352614285189903 0.5580351457700471 0.5817778142098083 0.6065306597126334 0.6323366621862497 0.6592406302004438 0.6872892787909722 0.7165313105737893 0.7470175003104326 0.7788007830714049 0.8119363461506349 0.8464817248906141 0.8824969025845955 0.9200444146293233 0.9591894571091382 1.0 1.0425469051899914 1.086904049521229 1.1331484530668263 1.1813604128656459 1.2316236423470497 1.2840254166877414 1.338656724353094 1.3956124250860895 1.4549914146182013 1.5168967963882134 1.5814360605671443 1.6487212707001282 1.7188692582893286 1.7920018256557555 1.8682459574322223 1.9477340410546757 2.030604096634748 2.117000016612675 2.2070718156067044 2.300975890892825 2.398875293967098 2.5009400136621287 2.6073472713092674 2.718281828459045 2.833936307694169 2.9545115270921065 3.080216848918031 3.211270543153561 3.347900166492527 3.4903429574618414 3.638846248353525 3.7936678946831774 3.955076722920577 4.123352997269821 4.298788906309526 4.4816890703380645 4.672371070304759 4.871165999245474 5.0784190371800815 5.29449005047003 5.51975421667673 5.754602676005731 5.999443210467818 6.254700951936329 6.5208191203301125 6.798259793203881 7.087504708082256 7.38905609893065 7.703437568215379 8.031194996067258 8.372897488127265 8.72913836372013 9.10053618607165 9.487735836358526 9.891409633455755 10.312258501325767 10.751013186076355 11.208435524800691 11.685319768402522 12.182493960703473 12.700821376227164 13.241202019156521 13.804574186067095 14.391916095149892 15.00424758475255 15.642631884188171 16.30817745988666 17.00203994009402 17.725424121461643 18.479586061009854 19.265835257097933 20.085536923187668 20.940114358348602 21.831051418620845 22.75989509352673 23.728258192205157 24.737822143832553 25.790339917193062 26.88763906446752 28.03162489452614 29.22428378123494 30.46768661252054 31.763992386181833 33.11545195869231 34.52441195350251 35.99331883562839 37.524723159600995 39.12128399815321 40.78577355933337 42.52108200006278 44.3302224444953 46.21633621589248 48.182698291098816 50.23272298708815 52.36996988945491 54.598150033144236 56.92113234615337 59.34295036739207 61.867809250367884 64.50009306485578 67.24437240923179 70.10541234668786 73.08818067910767 76.19785657297057 79.43983955226133 82.81975887399955 86.3434833026695 90.01713130052181 93.84708165144015 97.83998453682129 102.00277308269969 106.34267539816554 110.86722712598126 115.58428452718766 120.50203812241894 125.62902691361414 130.9741532108186 136.54669808981876 142.35633750745257 148.4131591025766 154.72767971186107 161.3108636308289 168.17414165184545 175.32943091211476 182.78915558614753 190.56626845863 198.67427341514983 ] + +#ifdef DOF + //hexagon pattern + const vec2 hex_offsets[60] = vec2[60] ( vec2( 0.2165, 0.1250 ), + vec2( 0.0000, 0.2500 ), + vec2( -0.2165, 0.1250 ), + vec2( -0.2165, -0.1250 ), + vec2( -0.0000, -0.2500 ), + vec2( 0.2165, -0.1250 ), + vec2( 0.4330, 0.2500 ), + vec2( 0.0000, 0.5000 ), + vec2( -0.4330, 0.2500 ), + vec2( -0.4330, -0.2500 ), + vec2( -0.0000, -0.5000 ), + vec2( 0.4330, -0.2500 ), + vec2( 0.6495, 0.3750 ), + vec2( 0.0000, 0.7500 ), + vec2( -0.6495, 0.3750 ), + vec2( -0.6495, -0.3750 ), + vec2( -0.0000, -0.7500 ), + vec2( 0.6495, -0.3750 ), + vec2( 0.8660, 0.5000 ), + vec2( 0.0000, 1.0000 ), + vec2( -0.8660, 0.5000 ), + vec2( -0.8660, -0.5000 ), + vec2( -0.0000, -1.0000 ), + vec2( 0.8660, -0.5000 ), + vec2( 0.2163, 0.3754 ), + vec2( -0.2170, 0.3750 ), + vec2( -0.4333, -0.0004 ), + vec2( -0.2163, -0.3754 ), + vec2( 0.2170, -0.3750 ), + vec2( 0.4333, 0.0004 ), + vec2( 0.4328, 0.5004 ), + vec2( -0.2170, 0.6250 ), + vec2( -0.6498, 0.1246 ), + vec2( -0.4328, -0.5004 ), + vec2( 0.2170, -0.6250 ), + vec2( 0.6498, -0.1246 ), + vec2( 0.6493, 0.6254 ), + vec2( -0.2170, 0.8750 ), + vec2( -0.8663, 0.2496 ), + vec2( -0.6493, -0.6254 ), + vec2( 0.2170, -0.8750 ), + vec2( 0.8663, -0.2496 ), + vec2( 0.2160, 0.6259 ), + vec2( -0.4340, 0.5000 ), + vec2( -0.6500, -0.1259 ), + vec2( -0.2160, -0.6259 ), + vec2( 0.4340, -0.5000 ), + vec2( 0.6500, 0.1259 ), + vec2( 0.4325, 0.7509 ), + vec2( -0.4340, 0.7500 ), + vec2( -0.8665, -0.0009 ), + vec2( -0.4325, -0.7509 ), + vec2( 0.4340, -0.7500 ), + vec2( 0.8665, 0.0009 ), + vec2( 0.2158, 0.8763 ), + vec2( -0.6510, 0.6250 ), + vec2( -0.8668, -0.2513 ), + vec2( -0.2158, -0.8763 ), + vec2( 0.6510, -0.6250 ), + vec2( 0.8668, 0.2513 )); + + const vec2 offsets[60] = vec2[60] ( vec2( 0.0000, 0.2500 ), + vec2( -0.2165, 0.1250 ), + vec2( -0.2165, -0.1250 ), + vec2( -0.0000, -0.2500 ), + vec2( 0.2165, -0.1250 ), + vec2( 0.2165, 0.1250 ), + vec2( 0.0000, 0.5000 ), + vec2( -0.2500, 0.4330 ), + vec2( -0.4330, 0.2500 ), + vec2( -0.5000, 0.0000 ), + vec2( -0.4330, -0.2500 ), + vec2( -0.2500, -0.4330 ), + vec2( -0.0000, -0.5000 ), + vec2( 0.2500, -0.4330 ), + vec2( 0.4330, -0.2500 ), + vec2( 0.5000, -0.0000 ), + vec2( 0.4330, 0.2500 ), + vec2( 0.2500, 0.4330 ), + vec2( 0.0000, 0.7500 ), + vec2( -0.2565, 0.7048 ), + vec2( -0.4821, 0.5745 ), + vec2( -0.6495, 0.3750 ), + vec2( -0.7386, 0.1302 ), + vec2( -0.7386, -0.1302 ), + vec2( -0.6495, -0.3750 ), + vec2( -0.4821, -0.5745 ), + vec2( -0.2565, -0.7048 ), + vec2( -0.0000, -0.7500 ), + vec2( 0.2565, -0.7048 ), + vec2( 0.4821, -0.5745 ), + vec2( 0.6495, -0.3750 ), + vec2( 0.7386, -0.1302 ), + vec2( 0.7386, 0.1302 ), + vec2( 0.6495, 0.3750 ), + vec2( 0.4821, 0.5745 ), + vec2( 0.2565, 0.7048 ), + vec2( 0.0000, 1.0000 ), + vec2( -0.2588, 0.9659 ), + vec2( -0.5000, 0.8660 ), + vec2( -0.7071, 0.7071 ), + vec2( -0.8660, 0.5000 ), + vec2( -0.9659, 0.2588 ), + vec2( -1.0000, 0.0000 ), + vec2( -0.9659, -0.2588 ), + vec2( -0.8660, -0.5000 ), + vec2( -0.7071, -0.7071 ), + vec2( -0.5000, -0.8660 ), + vec2( -0.2588, -0.9659 ), + vec2( -0.0000, -1.0000 ), + vec2( 0.2588, -0.9659 ), + vec2( 0.5000, -0.8660 ), + vec2( 0.7071, -0.7071 ), + vec2( 0.8660, -0.5000 ), + vec2( 0.9659, -0.2588 ), + vec2( 1.0000, -0.0000 ), + vec2( 0.9659, 0.2588 ), + vec2( 0.8660, 0.5000 ), + vec2( 0.7071, 0.7071 ), + vec2( 0.5000, 0.8660 ), + vec2( 0.2588, 0.9659 )); + +const vec2 shadow_offsets[209] = vec2[209](vec2(0.8886414f , 0.07936136f), +vec2(0.8190064f , 0.1900164f), +vec2(0.8614115f , -0.06991258f), +vec2(0.7685533f , 0.03792081f), +vec2(0.9970094f , 0.02585129f), +vec2(0.9686818f , 0.1570935f), +vec2(0.9854341f , -0.09172997f), +vec2(0.9330608f , 0.3326486f), +vec2(0.8329557f , -0.2438523f), +vec2(0.664771f , -0.0837701f), +vec2(0.7429124f , -0.1530652f), +vec2(0.9506453f , -0.2174281f), +vec2(0.8192949f , 0.3485171f), +vec2(0.6851269f , 0.2711877f), +vec2(0.7665657f , 0.5014166f), +vec2(0.673241f , 0.3793408f), +vec2(0.6981376f , 0.1465924f), +vec2(0.6521665f , -0.2384985f), +vec2(0.5145761f , -0.05752508f), +vec2(0.5641244f , -0.169443f), +vec2(0.5916035f , 0.06004957f), +vec2(0.57079f , 0.234188f), +vec2(0.509311f , 0.1523665f), +vec2(0.4204576f , 0.05759521f), +vec2(0.8200846f , -0.3601041f), +vec2(0.6893264f , -0.3473432f), +vec2(0.4775535f , -0.3062558f), +vec2(0.438106f , -0.1796866f), +vec2(0.4056528f , -0.08251233f), +vec2(0.5771964f , 0.5502692f), +vec2(0.5094061f , 0.4025192f), +vec2(0.6908483f , 0.572951f), +vec2(0.5379036f , -0.4542191f), +vec2(0.8167359f , -0.4793735f), +vec2(0.6829269f , -0.4557574f), +vec2(0.5725697f , -0.3477072f), +vec2(0.5767449f , -0.5782524f), +vec2(0.3979413f , -0.4172934f), +vec2(0.4282598f , -0.5145645f), +vec2(0.938814f , -0.3239739f), +vec2(0.702452f , -0.5662871f), +vec2(0.2832307f , -0.1285671f), +vec2(0.3230537f , -0.2691054f), +vec2(0.2921676f , -0.3734582f), +vec2(0.2534037f , -0.4906001f), +vec2(0.4343273f , 0.5223463f), +vec2(0.3605334f , 0.3151571f), +vec2(0.3498518f , 0.451428f), +vec2(0.3230703f , 0.00287089f), +vec2(0.1049206f , -0.1476725f), +vec2(0.2063161f , -0.2608192f), +vec2(0.7266634f , 0.6725333f), +vec2(0.4027067f , -0.6185485f), +vec2(0.2655533f , -0.5912259f), +vec2(0.4947965f , 0.3025357f), +vec2(0.5760762f , 0.68844f), +vec2(0.4909205f , -0.6975324f), +vec2(0.8609334f , 0.4559f), +vec2(0.1836646f , 0.03724086f), +vec2(0.2878554f , 0.178938f), +vec2(0.3948484f , 0.1618928f), +vec2(0.3519658f , -0.7628763f), +vec2(0.6338583f , -0.673193f), +vec2(0.5511802f , -0.8283072f), +vec2(0.4090595f , -0.8717521f), +vec2(0.1482169f , -0.374728f), +vec2(0.1050598f , -0.2613987f), +vec2(0.4210334f , 0.6578422f), +vec2(0.2430464f , 0.4383665f), +vec2(0.3329675f , 0.5512741f), +vec2(0.2147711f , 0.3245511f), +vec2(0.1227196f , 0.2529026f), +vec2(-0.03937457f , 0.156439f), +vec2(0.05618772f , 0.06690486f), +vec2(0.06519571f , 0.3974038f), +vec2(0.1360903f , 0.1466078f), +vec2(-0.00170609f , 0.3089452f), +vec2(0.1357622f , -0.5088975f), +vec2(0.1604694f , -0.7453476f), +vec2(0.1245694f , -0.6337074f), +vec2(0.02542936f , -0.3728781f), +vec2(0.02222222f , -0.649554f), +vec2(0.09870815f , 0.5357338f), +vec2(0.2073958f , 0.5452989f), +vec2(0.216654f , -0.8935689f), +vec2(0.2422334f , 0.665805f), +vec2(0.0574713f , 0.6742729f), +vec2(0.2021346f , 0.8144029f), +vec2(0.3086587f , 0.7504997f), +vec2(0.02122174f , -0.7498575f), +vec2(-0.1551729f , 0.1809731f), +vec2(-0.1947583f , 0.06246066f), +vec2(-0.05754202f , -0.03901273f), +vec2(-0.1083095f , 0.2952235f), +vec2(-0.03259534f , -0.492394f), +vec2(-0.02488567f , -0.2081116f), +vec2(-0.1820729f , -0.1829884f), +vec2(-0.1674413f , -0.04529009f), +vec2(0.04342153f , -0.0368562f), +vec2(0.801399f , -0.5845526f), +vec2(0.3158276f , -0.9124843f), +vec2(-0.05945269f , 0.6727523f), +vec2(0.07701834f , 0.8579889f), +vec2(-0.05778154f , 0.5699022f), +vec2(0.1191713f , 0.7542591f), +vec2(-0.2578296f , 0.3630984f), +vec2(-0.1428598f , 0.4557526f), +vec2(-0.3304029f , 0.5055485f), +vec2(-0.3227198f , 0.1847367f), +vec2(-0.4183801f , 0.3412776f), +vec2(0.2538475f , 0.9317476f), +vec2(0.406249f , 0.8423664f), +vec2(0.4718862f , 0.7592828f), +vec2(0.168472f , -0.06605823f), +vec2(0.2632498f , -0.7084918f), +vec2(-0.2816192f , -0.1023492f), +vec2(-0.3161443f , 0.02489911f), +vec2(-0.4677814f , 0.08450397f), +vec2(-0.4156994f , 0.2408664f), +vec2(-0.237449f , 0.2605326f), +vec2(-0.0912179f , 0.06491816f), +vec2(0.01475127f , 0.7670643f), +vec2(0.1216858f , -0.9368939f), +vec2(0.07010741f , -0.841011f), +vec2(-0.1708607f , -0.4152923f), +vec2(-0.1345006f , -0.5842513f), +vec2(-0.09419055f , -0.3213732f), +vec2(-0.2149337f , 0.730642f), +vec2(-0.1102187f , 0.8425013f), +vec2(-0.1808572f , 0.6244397f), +vec2(-0.2414505f , -0.7063725f), +vec2(-0.2410318f , -0.537854f), +vec2(-0.1005938f , -0.7635075f), +vec2(0.1053517f , 0.9678772f), +vec2(-0.3340288f , 0.6926677f), +vec2(-0.2363931f , 0.8464488f), +vec2(-0.4057773f , 0.7786722f), +vec2(-0.5484858f , 0.1686208f), +vec2(-0.64842f , 0.02256887f), +vec2(-0.5544513f , -0.02348978f), +vec2(-0.492855f , -0.1083694f), +vec2(-0.4248196f , 0.4674786f), +vec2(-0.5873146f , 0.4072608f), +vec2(-0.6439911f , 0.3038489f), +vec2(-0.6419188f , 0.1293737f), +vec2(-0.005880734f , 0.4699725f), +vec2(-0.4239455f , 0.6250131f), +vec2(-0.1701273f , 0.9506347f), +vec2(7.665656E-05f , 0.9941212f), +vec2(-0.7070159f , 0.4426281f), +vec2(-0.7481344f , 0.3139496f), +vec2(-0.8330062f , 0.2472693f), +vec2(-0.7271438f , 0.2024286f), +vec2(-0.5179888f , 0.3149576f), +vec2(-0.8258062f , 0.3779382f), +vec2(-0.8063191f , 0.1262931f), +vec2(-0.2690676f , -0.4360798f), +vec2(-0.3714577f , -0.5887412f), +vec2(-0.3736085f , -0.4018324f), +vec2(-0.3228985f , -0.2063406f), +vec2(-0.2414576f , -0.2875458f), +vec2(-0.4720859f , -0.3823904f), +vec2(-0.4937642f , -0.2686005f), +vec2(-0.01500604f , -0.9587054f), +vec2(-0.08535925f , -0.8820614f), +vec2(-0.6436375f , -0.3157263f), +vec2(-0.5736347f , -0.4224878f), +vec2(-0.5026127f , -0.5516239f), +vec2(-0.8200902f , 0.5370023f), +vec2(-0.7196413f , 0.57133f), +vec2(-0.5849072f , 0.5917885f), +vec2(-0.1598758f , -0.9739854f), +vec2(-0.4230629f , -0.01858409f), +vec2(-0.9403627f , 0.2213769f), +vec2(-0.685889f , -0.2192711f), +vec2(-0.6693704f , -0.4884708f), +vec2(-0.7967147f , -0.3078234f), +vec2(-0.596441f , -0.1686891f), +vec2(-0.7366468f , -0.3939891f), +vec2(-0.7963406f , 0.02246814f), +vec2(-0.9177913f , 0.0929693f), +vec2(-0.9284672f , 0.3329005f), +vec2(-0.6497722f , 0.6851863f), +vec2(-0.496019f , 0.7013303f), +vec2(-0.3930301f , -0.6892192f), +vec2(-0.2122009f , -0.8777389f), +vec2(-0.3660335f , -0.801644f), +vec2(-0.386839f , -0.1191898f), +vec2(-0.7020127f , -0.0776734f), +vec2(-0.7760845f , -0.1566844f), +vec2(-0.5444778f , -0.6516482f), +vec2(-0.5331346f , 0.4946506f), +vec2(-0.3288236f , 0.9408244f), +vec2(0.5819826f , 0.8101937f), +vec2(-0.4894184f , -0.8290837f), +vec2(-0.5183194f , 0.8454953f), +vec2(-0.7665774f , -0.5223897f), +vec2(-0.6703191f , -0.6217513f), +vec2(-0.8902924f , -0.2446688f), +vec2(-0.8574848f , -0.09174173f), +vec2(-0.3544409f , -0.9239591f), +vec2(-0.969833f , -0.1172272f), +vec2(-0.8968207f , -0.4079512f), +vec2(-0.5891477f , 0.7724466f), +vec2(-0.2146262f , 0.5286855f), +vec2(-0.3762444f , -0.3014335f), +vec2(-0.9466863f , -0.008970681f), +vec2(-0.596356f , -0.7976127f), +vec2(-0.8877738f , 0.4569088f)); +#endif +flat varying vec4 exposure; +flat varying float rodExposure; +varying vec2 texcoord; +uniform sampler2D colortex4; +uniform sampler2D colortex5; +uniform sampler2D colortex3; +uniform sampler2D colortex7; +uniform sampler2D depthtex0; +uniform sampler2D noisetex; +uniform vec2 texelSize; + +uniform float viewWidth; +uniform float viewHeight; +uniform float frameTimeCounter; +uniform int frameCounter; +uniform int isEyeInWater; +uniform float near; +uniform float aspectRatio; +uniform float far; + + +uniform float screenBrightness; +uniform float isWastes; +uniform float isWarpedForest; +uniform float isCrimsonForest; +uniform float isSoulValley; +uniform float isBasaltDelta; + +#include "lib/color_transforms.glsl" +#include "lib/color_dither.glsl" + +float cdist(vec2 coord) { + return max(abs(coord.s-0.5),abs(coord.t-0.5))*2.0; +} +float blueNoise(){ + return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); +} +float ld(float depth) { + return (2.0 * near) / (far + near - depth * (far - near)); // (-depth * (far - near)) = (2.0 * near)/ld - far - near +} +vec3 closestToCamera3x3() +{ + vec2 du = vec2(texelSize.x, 0.0); + vec2 dv = vec2(0.0, texelSize.y); + + vec3 dtl = vec3(texcoord,0.) + vec3(-texelSize, texture2D(depthtex0, texcoord - dv - du).x); + vec3 dtc = vec3(texcoord,0.) + vec3( 0.0, -texelSize.y, texture2D(depthtex0, texcoord - dv).x); + vec3 dtr = vec3(texcoord,0.) + vec3( texelSize.x, -texelSize.y, texture2D(depthtex0, texcoord - dv + du).x); + + vec3 dml = vec3(texcoord,0.) + vec3(-texelSize.x, 0.0, texture2D(depthtex0, texcoord - du).x); + vec3 dmc = vec3(texcoord,0.) + vec3( 0.0, 0.0, texture2D(depthtex0, texcoord).x); + vec3 dmr = vec3(texcoord,0.) + vec3( texelSize.x, 0.0, texture2D(depthtex0, texcoord + du).x); + + vec3 dbl = vec3(texcoord,0.) + vec3(-texelSize.x, texelSize.y, texture2D(depthtex0, texcoord + dv - du).x); + vec3 dbc = vec3(texcoord,0.) + vec3( 0.0, texelSize.y, texture2D(depthtex0, texcoord + dv).x); + vec3 dbr = vec3(texcoord,0.) + vec3( texelSize.x, texelSize.y, texture2D(depthtex0, texcoord + dv + du).x); + + vec3 dmin = dmc; + + dmin = dmin.z > dtc.z? dtc : dmin; + dmin = dmin.z > dtr.z? dtr : dmin; + + dmin = dmin.z > dml.z? dml : dmin; + dmin = dmin.z > dtl.z? dtl : dmin; + dmin = dmin.z > dmr.z? dmr : dmin; + + dmin = dmin.z > dbl.z? dbl : dmin; + dmin = dmin.z > dbc.z? dbc : dmin; + dmin = dmin.z > dbr.z? dbr : dmin; + + return dmin; +} +void main() { + /* DRAWBUFFERS:7 */ + float vignette = (1.5-dot(texcoord-0.5,texcoord-0.5)*2.5); + vec3 col = texture2D(colortex5,texcoord).rgb; + #ifdef DOF + /*--------------------------------*/ + float z = ld(texture2D(depthtex0, texcoord.st).r)*far; + #ifdef AUTOFOCUS + float focus = ld(texture2D(depthtex0, vec2(0.5)).r)*far; + #else + float focus = MANUAL_FOCUS*screenBrightness; + #endif + float pcoc = min(abs(aperture * (focal/100.0 * (z - focus)) / (z * (focus - focal/100.0))),texelSize.x*15.0); + #ifdef FAR_BLUR_ONLY + pcoc *= float(z > focus); + #endif + float noise = blueNoise()*6.28318530718; + mat2 noiseM = mat2( cos( noise ), -sin( noise ), + sin( noise ), cos( noise ) + ); + vec3 bcolor = vec3(0.); + float nb = 0.0; + vec2 bcoord = vec2(0.0); + /*--------------------------------*/ + #ifndef HQ_DOF + bcolor = col; + #ifdef HEXAGONAL_BOKEH + for ( int i = 0; i < 60; i++) { + bcolor += texture2D(colortex5, texcoord.xy + hex_offsets[i]*pcoc*vec2(1.0,aspectRatio)).rgb; + } + col = bcolor/61.0; + #else + for ( int i = 0; i < 60; i++) { + bcolor += texture2D(colortex5, texcoord.xy + offsets[i]*pcoc*vec2(1.0,aspectRatio)).rgb; + } + /*--------------------------------*/ + col = bcolor/61.0; + #endif + #endif + #ifdef HQ_DOF + for ( int i = 0; i < 209; i++) { + bcolor += texture2D(colortex5, texcoord.xy + noiseM*shadow_offsets[i]*pcoc*vec2(1.0,aspectRatio)).rgb; + } + col = bcolor/209.0; + #endif +#endif + vec2 clampedRes = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.)); + + float BiomeParams = isWastes + isWarpedForest*10 + isCrimsonForest*10 + isSoulValley*5 + isBasaltDelta*0 ; + + + vec3 bloom = texture2D(colortex3,texcoord/clampedRes*vec2(1920.,1080.)*0.5).rgb/2./7.0; + + float lightScat = clamp(4 * 0.05 * pow(exposure.a ,0.2) ,0.0,1.0)*vignette; + + + float VL_abs = texture2D(colortex7,texcoord).r; + + VL_abs = clamp((1.0-VL_abs*1.05)*0.5,0.0,1.0)*clamp(1.0-pow(cdist(texcoord.xy),15.0),0.0,1.0); + col = (mix(col,bloom,VL_abs)+bloom*lightScat)*exposure.rgb; +/* + //Purkinje Effect + float lum = dot(col,vec3(0.15,0.3,0.55)); + float lum2 = dot(col,vec3(0.85,0.7,0.45))/2; + float rodLum = lum2*300.0; + float rodCurve = mix(1.0, rodLum/(2.5+rodLum), rodExposure/2.0*Purkinje_strength); + col = mix(lum*Purkinje_Multiplier*vec3(Purkinje_R, Purkinje_G, Purkinje_B)+0.001, col, rodCurve); +*/ + #ifndef USE_ACES_COLORSPACE_APPROXIMATION + col = LinearTosRGB(TONEMAP(col)); + #else + col = col * ACESInputMat; + col = TONEMAP(col); + col = LinearTosRGB(clamp(col * ACESOutputMat, 0.0, 1.0)); + #endif + //col = ACESFitted(texture2D(colortex4,texcoord/3.).rgb/500.); + gl_FragData[0].rgb = clamp(int8Dither(col,texcoord),0.0,1.0); + //if (nightMode < 0.99 && texcoord.x < 0.5) gl_FragData[0].rgb =vec3(0.0,1.0,0.0); + +} diff --git a/shaders/world1/composite15.vsh b/shaders/world1/composite15.vsh new file mode 100644 index 0000000..5099bbb --- /dev/null +++ b/shaders/world1/composite15.vsh @@ -0,0 +1,25 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + +#define FinalR 1.0 //[0.0 0.025315 0.051271 0.077884 0.105170 0.133148 0.161834 0.191246 0.221402 0.252322 0.284025 0.316530 0.349858 0.384030 0.419067 0.454991 0.491824 0.529590 0.568312 0.608014 0.648721 0.690458 0.733253 0.777130 0.822118 0.868245 0.915540 0.964032 1.013752 1.064731 1.117000 1.170592 1.225540 1.281880 1.339646 1.398875 1.459603 1.521868 1.585709 1.651167 1.718281 1.787095 1.857651 1.929992 2.004166 2.080216 2.158192 2.238142 2.320116 2.404166 2.490342 2.578701 2.669296 2.762185 2.857425 2.955076 3.055199 3.157857 3.263114 3.371035 3.481689 3.595143 3.711470 3.830741 3.953032 4.078419 4.206979 4.338795 4.473947 4.612521 4.754602 4.900281 5.049647 5.202795 5.359819 5.520819 5.685894 5.855148 6.028687 6.206619 6.389056 6.576110 6.767901 6.964546 7.166169 7.372897 7.584858 7.802185 8.025013 8.253482 8.487735 8.727919 8.974182 9.226680 9.485569 9.751013 10.02317 10.30222 10.58834 10.88170 11.18249 ] +#define FinalG 1.0 //[0.0 0.025315 0.051271 0.077884 0.105170 0.133148 0.161834 0.191246 0.221402 0.252322 0.284025 0.316530 0.349858 0.384030 0.419067 0.454991 0.491824 0.529590 0.568312 0.608014 0.648721 0.690458 0.733253 0.777130 0.822118 0.868245 0.915540 0.964032 1.013752 1.064731 1.117000 1.170592 1.225540 1.281880 1.339646 1.398875 1.459603 1.521868 1.585709 1.651167 1.718281 1.787095 1.857651 1.929992 2.004166 2.080216 2.158192 2.238142 2.320116 2.404166 2.490342 2.578701 2.669296 2.762185 2.857425 2.955076 3.055199 3.157857 3.263114 3.371035 3.481689 3.595143 3.711470 3.830741 3.953032 4.078419 4.206979 4.338795 4.473947 4.612521 4.754602 4.900281 5.049647 5.202795 5.359819 5.520819 5.685894 5.855148 6.028687 6.206619 6.389056 6.576110 6.767901 6.964546 7.166169 7.372897 7.584858 7.802185 8.025013 8.253482 8.487735 8.727919 8.974182 9.226680 9.485569 9.751013 10.02317 10.30222 10.58834 10.88170 11.18249 ] +#define FinalB 1.0 //[0.0 0.025315 0.051271 0.077884 0.105170 0.133148 0.161834 0.191246 0.221402 0.252322 0.284025 0.316530 0.349858 0.384030 0.419067 0.454991 0.491824 0.529590 0.568312 0.608014 0.648721 0.690458 0.733253 0.777130 0.822118 0.868245 0.915540 0.964032 1.013752 1.064731 1.117000 1.170592 1.225540 1.281880 1.339646 1.398875 1.459603 1.521868 1.585709 1.651167 1.718281 1.787095 1.857651 1.929992 2.004166 2.080216 2.158192 2.238142 2.320116 2.404166 2.490342 2.578701 2.669296 2.762185 2.857425 2.955076 3.055199 3.157857 3.263114 3.371035 3.481689 3.595143 3.711470 3.830741 3.953032 4.078419 4.206979 4.338795 4.473947 4.612521 4.754602 4.900281 5.049647 5.202795 5.359819 5.520819 5.685894 5.855148 6.028687 6.206619 6.389056 6.576110 6.767901 6.964546 7.166169 7.372897 7.584858 7.802185 8.025013 8.253482 8.487735 8.727919 8.974182 9.226680 9.485569 9.751013 10.02317 10.30222 10.58834 10.88170 11.18249 ] + +varying vec2 texcoord; +flat varying vec4 exposure; +flat varying float rodExposure; +uniform sampler2D colortex4; + +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + + gl_Position = ftransform(); + texcoord = gl_MultiTexCoord0.xy; + exposure=vec4(texelFetch2D(colortex4,ivec2(10,37),0).r*vec3(FinalR,FinalG,FinalB),texelFetch2D(colortex4,ivec2(10,37),0).r); + rodExposure = texelFetch2D(colortex4,ivec2(14,37),0).r; +} diff --git a/shaders/world1/composite2.fsh b/shaders/world1/composite2.fsh new file mode 100644 index 0000000..85987c4 --- /dev/null +++ b/shaders/world1/composite2.fsh @@ -0,0 +1,592 @@ +#version 120 +//Render sky, volumetric clouds, direct lighting +#extension GL_EXT_gpu_shader4 : enable +#define SCREENSPACE_CONTACT_SHADOWS //Raymarch towards the sun in screen-space, in order to cast shadows outside of the shadow map or at the contact of objects. Can get really expensive at high resolutions. +#define SHADOW_FILTER_SAMPLE_COUNT 9 // Number of samples used to filter the actual shadows [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 ] +#define CAVE_LIGHT_LEAK_FIX // Hackish way to remove sunlight incorrectly leaking into the caves. Can inacurrately remove shadows in some places +#define CLOUDS_SHADOWS +#define CLOUDS_SHADOWS_STRENGTH 1.0 //[0.1 0.125 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.9 1.0] +#define CLOUDS_QUALITY 0.5 //[0.1 0.125 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.9 1.0] +#define SSAO //It is also recommended to reduce the ambientOcclusionLevel value with this enabled +#define SSAO_SAMPLES 7 //[4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32] +#define TORCH_R 1.0 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +#define TORCH_G 0.75 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +#define TORCH_B 0.5 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +#define indirect_effect 1 // Choose what effect is applied to indirect light. [0 1 2 3] +#define AO_Strength 0.8 // strength of shadowed areas [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 ] +#define GI_Strength 5.0 // strength of bounced light areas [ 1 2 3 4 5 6 7 8 9 10] +// #define Glass_Tint // multiply the background through glass by the color of the glass for a strong tint. + +// #define HQ_SSGI +// #define end_shadows +//////////// misc settings + +// #define WhiteWorld // THIS IS A DEBUG VIEW. uses to see AO easier. used to see fake GI better (green light) +// #define LabPBR_Emissives +#define Emissive_Brightness 10.0 // [1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 15. 20. 25. 30. 35. 40. 45. 50. 100.] +#define Emissive_Curve 2.0 // yes i blatantly copied kappa here. [1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 ] + +#define MIN_LIGHT_AMOUNT 1.0 //[0.0 0.5 1.0 1.5 2.0 3.0 4.0 5.0] + +const bool shadowHardwareFiltering = true; + +varying vec2 texcoord; + +uniform float nightVision; +flat varying vec4 lightCol; //main light source color (rgb),used light source(1=sun,-1=moon) +flat varying vec3 ambientUp; +flat varying vec3 ambientLeft; +flat varying vec3 ambientRight; +flat varying vec3 ambientB; +flat varying vec3 ambientF; +flat varying vec3 ambientDown; +flat varying vec3 avgAmbient; +// flat varying vec3 WsunVec; +flat varying vec2 TAA_Offset; +flat varying float tempOffsets; + +uniform sampler2D colortex0;//clouds +uniform sampler2D colortex1;//albedo(rgb),material(alpha) RGBA16 +uniform sampler2D colortex3; +// uniform sampler2D colortex4;//Skybox +uniform sampler2D colortex5; +uniform sampler2D colortex6;//Skybox +uniform sampler2D colortex7; +uniform sampler2D colortex13; +uniform sampler2D colortex8; +uniform sampler2D depthtex1;//depth +uniform sampler2D depthtex0;//depth +uniform sampler2D noisetex;//depth + + +uniform float isWastes; +uniform float isWarpedForest; +uniform float isCrimsonForest; +uniform float isSoulValley; +uniform float isBasaltDelta; + +uniform int heldBlockLightValue; +uniform int frameCounter; +uniform int isEyeInWater; +uniform mat4 shadowModelViewInverse; +uniform mat4 shadowProjectionInverse; +uniform float far; +uniform float near; +uniform float frameTimeCounter; +uniform float rainStrength; +uniform mat4 gbufferProjection; +uniform mat4 gbufferProjectionInverse; +uniform mat4 gbufferModelViewInverse; +uniform mat4 gbufferPreviousModelView; +uniform mat4 gbufferPreviousProjection; +uniform vec3 previousCameraPosition; +uniform mat4 shadowModelView; +uniform mat4 shadowProjection; +uniform mat4 gbufferModelView; + +uniform vec2 texelSize; +uniform float viewWidth; +uniform float viewHeight; +uniform float aspectRatio; +uniform vec3 cameraPosition; +// uniform int framemod8; +uniform vec3 sunVec; +uniform ivec2 eyeBrightnessSmooth; +#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) +#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) +vec3 toScreenSpace(vec3 p) { + vec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); + vec3 p3 = p * 2. - 1.; + vec4 fragposition = iProjDiag * p3.xyzz + gbufferProjectionInverse[3]; + return fragposition.xyz / fragposition.w; +} +#include "lib/waterOptions.glsl" +#include "lib/color_transforms.glsl" +#include "lib/sky_gradient.glsl" +#include "lib/stars.glsl" +#include "lib/volumetricClouds.glsl" +#include "lib/waterBump.glsl" + + + +float ld(float dist) { + return (2.0 * near) / (far + near - dist * (far - near)); +} +vec3 ld(vec3 dist) { + return (2.0 * near) / (far + near - dist * (far - near)); +} + +#include "lib/specular.glsl" + + +vec3 normVec (vec3 vec){ + return vec*inversesqrt(dot(vec,vec)); +} +float lengthVec (vec3 vec){ + return sqrt(dot(vec,vec)); +} +#define fsign(a) (clamp((a)*1e35,0.,1.)*2.-1.) +float triangularize(float dither) +{ + float center = dither*2.0-1.0; + dither = center*inversesqrt(abs(center)); + return clamp(dither-fsign(center),0.0,1.0); +} +float interleaved_gradientNoise(float temp){ + return fract(52.9829189*fract(0.06711056*gl_FragCoord.x + 0.00583715*gl_FragCoord.y)+temp); +} +float interleaved_gradientNoise(){ + vec2 coord = gl_FragCoord.xy; + float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)); + return noise; +} +vec3 fp10Dither(vec3 color,float dither){ + const vec3 mantissaBits = vec3(6.,6.,5.); + vec3 exponent = floor(log2(color)); + return color + dither*exp2(-mantissaBits)*exp2(exponent); +} + + +vec2 R2_samples(int n){ + vec2 alpha = vec2(0.75487765, 0.56984026); + return fract(alpha * n); +} +float facos(float sx){ + float x = clamp(abs( sx ),0.,1.); + return sqrt( 1. - x ) * ( -0.16882 * x + 1.56734 ); +} +vec3 worldToView(vec3 worldPos) { + vec4 pos = vec4(worldPos, 0.0); + pos = gbufferModelView * pos; + return pos.xyz; +} + +vec3 decode (vec2 encn){ + vec3 n = vec3(0.0); + encn = encn * 2.0 - 1.0; + n.xy = abs(encn); + n.z = 1.0 - n.x - n.y; + n.xy = n.z <= 0.0 ? (1.0 - n.yx) * sign(encn) : encn; + return clamp(normalize(n.xyz),-1.0,1.0); +} +vec2 decodeVec2(float a){ + const vec2 constant1 = 65535. / vec2( 256., 65536.); + const float constant2 = 256. / 255.; + return fract( a * constant1 ) * constant2 ; +} +// float linZ(float depth) { +// return (2.0 * near) / (far + near - depth * (far - near)); +// // l = (2*n)/(f+n-d(f-n)) +// // f+n-d(f-n) = 2n/l +// // -d(f-n) = ((2n/l)-f-n) +// // d = -((2n/l)-f-n)/(f-n) + +// } +// float invLinZ (float lindepth){ +// return -((2.0*near/lindepth)-far-near)/(far-near); +// } + +// vec3 toClipSpace3(vec3 viewSpacePosition) { +// return projMAD(gbufferProjection, viewSpacePosition) / -viewSpacePosition.z * 0.5 + 0.5; +// } +float bayer2(vec2 a){ + a = floor(a); + return fract(dot(a,vec2(0.5,a.y*0.75))); +} + +#define bayer4(a) (bayer2( .5*(a))*.25+bayer2(a)) +#define bayer8(a) (bayer4( .5*(a))*.25+bayer2(a)) +#define bayer16(a) (bayer8( .5*(a))*.25+bayer2(a)) +#define bayer32(a) (bayer16(.5*(a))*.25+bayer2(a)) +#define bayer64(a) (bayer32(.5*(a))*.25+bayer2(a)) +#define bayer128(a) fract(bayer64(.5*(a))*.25+bayer2(a)+tempOffsets) + + + +vec2 tapLocation(int sampleNumber,int nb, float nbRot,float jitter,float distort) +{ + float alpha0 = sampleNumber/nb; + float alpha = (sampleNumber+jitter)/nb; + float angle = jitter*6.28 + alpha * 4.0 * 6.28; + + float sin_v, cos_v; + + sin_v = sin(angle); + cos_v = cos(angle); + + return vec2(cos_v, sin_v)*sqrt(alpha); +} + + + +vec3 BilateralFiltering(sampler2D tex, sampler2D depth,vec2 coord,float frDepth,float maxZ){ + vec4 sampled = vec4(texelFetch2D(tex,ivec2(coord),0).rgb,1.0); + + return vec3(sampled.x,sampled.yz/sampled.w); +} +float blueNoise(){ + return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); +} +vec4 blueNoise(vec2 coord){ + return texelFetch2D(colortex6, ivec2(coord )%512 , 0); +} +float R2_dither(){ + vec2 alpha = vec2(0.75487765, 0.56984026); + return fract(alpha.x * gl_FragCoord.x + alpha.y * gl_FragCoord.y); +} +vec3 toShadowSpaceProjected(vec3 p3){ + p3 = mat3(gbufferModelViewInverse) * p3 + gbufferModelViewInverse[3].xyz; + p3 = mat3(shadowModelView) * p3 + shadowModelView[3].xyz; + p3 = diagonal3(shadowProjection) * p3 + shadowProjection[3].xyz; + + return p3; +} +vec2 tapLocation(int sampleNumber, float spinAngle,int nb, float nbRot,float r0) +{ + float alpha = (float(sampleNumber*1.0f + r0) * (1.0 / (nb))); + float angle = alpha * (nbRot * 6.28) + spinAngle*6.28; + + float ssR = alpha; + float sin_v, cos_v; + + sin_v = sin(angle); + cos_v = cos(angle); + + return vec2(cos_v, sin_v)*ssR; +} +// void ssAO(inout vec3 lighting,vec3 fragpos,float mulfov, vec2 noise, vec3 normal, float lightmap){ + +// ivec2 pos = ivec2(gl_FragCoord.xy); +// const float tan70 = tan(70.*3.14/240.); +// float mulfov2 = gbufferProjection[1][1]/tan70; + +// float maxR2 = fragpos.z*fragpos.z*mulfov2*2.*1.412/50.0; + + +// float rd = mulfov2 * 0.04 ; +// //pre-rotate direction +// float n = 0.0; + +// float occlusion = 0.0; + +// vec2 acc = -(TAA_Offset*(texelSize/2)) ; + +// int seed = (frameCounter%40000)*2 + frameCounter; +// vec2 ij = fract(R2_samples(seed) + noise.rg ); +// vec2 v = ij; + +// for (int j = 0; j < 7 ;j++) { +// vec2 sp = tapLocation(j,v.x,7,1.682,v.y); +// vec2 sampleOffset = sp*rd ; +// ivec2 offset = ivec2(gl_FragCoord.xy + sampleOffset*vec2(viewWidth,viewHeight*aspectRatio)); + +// if (offset.x >= 0 && offset.y >= 0 && offset.x < viewWidth && offset.y < viewHeight ) { +// vec3 t0 = toScreenSpace(vec3(offset*texelSize+acc+0.5*texelSize,texelFetch2D(depthtex1,offset,0).x)); +// vec3 vec = t0.xyz - fragpos; +// float dsquared = dot(vec,vec); + +// if (dsquared > 1e-5){ +// if (dsquared < maxR2){ +// float NdotV = clamp(dot(vec*inversesqrt(dsquared), normalize(normal) ),0.,1.); +// occlusion += NdotV * clamp(1.0-dsquared/maxR2,0.0,1.0); +// } +// n += 1.0 ; +// } +// } +// } +// occlusion *= mix(2.25,0.0,clamp(pow(lightmap,2),0,1)); +// occlusion = max(1.0 - occlusion/n, 0.0); +// lighting = lighting * occlusion; +// } +void ssAO(inout vec3 lighting,vec3 fragpos,float mulfov, vec2 noise, vec3 normal, vec2 texcoord, vec3 ambientCoefs, vec2 lightmap){ + + float skyLightDir = dot(WsunVec, ambientCoefs); + // float skyLightDir = dot(normal, sunVec); + ivec2 pos = ivec2(gl_FragCoord.xy); + const float tan70 = tan(70.*3.14/240.); + float mulfov2 = gbufferProjection[1][1]/tan70; + + float maxR2 = fragpos.z*fragpos.z*mulfov2*2.*1.412/50.0; + + + float rd = mulfov2 * 0.04 ; + //pre-rotate direction + float n = 0.0; + + float occlusion = 0.0; + + vec2 acc = -(TAA_Offset*(texelSize/2)) ; + + int seed = (frameCounter%40000)*2 + frameCounter; + vec2 ij = fract(R2_samples(seed) + noise.rg ); + // vec2 ij = fract(R2_samples(-1) + 0.5 * blueNoise() ); + vec2 v = ij; + + for (int j = 0; j < 7 ;j++) { + + vec2 sp = tapLocation(j,v.x,7,1.682,v.y) ; + vec2 sampleOffset = sp*rd ; + ivec2 offset = ivec2(gl_FragCoord.xy + sampleOffset*vec2(viewWidth,viewHeight*aspectRatio)); + + if (offset.x >= 0 && offset.y >= 0 && offset.x < viewWidth && offset.y < viewHeight ) { + vec3 t0 = toScreenSpace(vec3(offset*texelSize+acc+0.5*texelSize,texelFetch2D(depthtex1,offset,0).x) ); + vec3 vec = t0.xyz - fragpos; + float dsquared = dot(vec,vec); + + if (dsquared > 1e-5){ + if (dsquared < maxR2){ + float NdotV = clamp(dot(vec*inversesqrt(dsquared), normalize(normal) ),0.,1.); + occlusion += NdotV * clamp(1.0-dsquared/maxR2,0.0,1.0); + } + n += 1.0 ; + } + } + } + // occlusion += max(skyLightDir, 0.0); + occlusion *= mix(2.25,0.0,clamp(pow(lightmap.x,2),0,1)); + occlusion = max(1.0 - occlusion/n, 0.0); + + lighting *=clamp(0.75+ambientCoefs.y*0.5,0.0,1.0); + lighting *= max(occlusion + luma(normal/dot(abs(normal),vec3(1))* mat3(gbufferModelView)), occlusion); // multiply ambient light by this effect + + // lighting *= occlusion; +} + +vec3 cosineHemisphereSample(vec2 Xi, float roughness) +{ + float r = sqrt(Xi.x); + float theta = 2.0 * 3.14159265359 * Xi.y; + + float x = r * cos(theta); + float y = r * sin(theta); + + return vec3(x, y, sqrt(clamp(1.0 - Xi.x,0.,1.))); +} +vec3 TangentToWorld(vec3 N, vec3 H, float roughness) +{ + vec3 UpVector = abs(N.z) < 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(1.0, 0.0, 0.0); + vec3 T = normalize(cross(UpVector, N)); + vec3 B = cross(N, T); + + return vec3((T * H.x) + (B * H.y) + (N * H.z)); +} + +vec3 RT(vec3 dir, vec3 position, float noise, float stepsizes){ + float stepSize = stepsizes; + int maxSteps = 12; + vec3 clipPosition = toClipSpace3(position); + float rayLength = ((position.z + dir.z * sqrt(3.0)*far) > -sqrt(3.0)*near) ? + (-sqrt(3.0)*near -position.z) / dir.z : sqrt(3.0)*far; + vec3 end = toClipSpace3(position+dir*rayLength) ; + vec3 direction = end-clipPosition ; //convert to clip space + float len = max(abs(direction.x)/texelSize.x,abs(direction.y)/texelSize.y)/stepSize; + //get at which length the ray intersects with the edge of the screen + vec3 maxLengths = (step(0.,direction)-clipPosition) / direction; + + float mult = min(min(maxLengths.x,maxLengths.y),maxLengths.z)*2000.0; + + vec3 stepv = direction/len; + + int iterations = min(int(min(len, mult*len)-2), maxSteps); + + //Do one iteration for closest texel (good contact shadows) + vec3 spos = clipPosition ; + spos.xy += TAA_Offset*texelSize*0.5; + spos += stepv/(stepSize/2); + + for(int i = 0; i < iterations; i++){ + spos += stepv*noise; + + float sp=texelFetch2D(depthtex1,ivec2(spos.xy/texelSize),0).x; + float currZ = (spos.z); + + if( sp < currZ) { + // float dist = abs(sp-currZ)/currZ; + return vec3(spos.xy, invLinZ(sp)); + } + } + return vec3(1.1); +} +void rtAO(inout vec3 lighting, vec3 normal, vec2 noise, vec3 fragpos){ + int nrays = 4; + float occlude = 0.0; + + for (int i = 0; i < nrays; i++){ + int seed = (frameCounter%40000)*nrays+i; + vec2 ij = fract(R2_samples(seed) + noise ); + + vec3 rayDir = TangentToWorld( normal, normalize(cosineHemisphereSample(ij,1.0)) ,1.0) ; + + vec3 rayHit = RT(mat3(gbufferModelView)*rayDir, fragpos, blueNoise(), 12.); // choc sspt + + float skyLightDir = rayDir.y < 0.0 ? 1.0 : 1.0 ; // the positons where the occlusion happens + if (rayHit.z > 1.0) occlude += skyLightDir; + } + lighting *= occlude/nrays; +} +float rayTraceShadow(vec3 dir,vec3 position,float dither){ + const float quality = 32.; + vec3 clipPosition = toClipSpace3(position); + //prevents the ray from going behind the camera + float rayLength = ((position.z + dir.z * far*sqrt(3.)) > -near) ? + (-near -position.z) / dir.z : far*sqrt(3.) ; + vec3 direction = toClipSpace3(position+dir*rayLength)-clipPosition; //convert to clip space + direction.xyz = direction.xyz/max(abs(direction.x)/texelSize.x,abs(direction.y)/texelSize.y); //fixed step size + vec3 stepv = direction *3. * clamp(MC_RENDER_QUALITY,1.,2.0); + + vec3 spos = clipPosition; + spos.xy += (TAA_Offset*(texelSize/4)) ; + spos += stepv*dither; + + for (int i = 0; i < int(quality); i++) { + + spos += stepv ; + spos += stepv * dither; + + float sp = texture2D(depthtex1,spos.xy).x; + + if( sp < spos.z) { + float dist = abs(linZ(sp)-linZ(spos.z))/linZ(spos.z); + if (dist < 0.1 ) return 0.0; + } + } + return 1.0; +} + +void main() { + float dirtAmount = Dirt_Amount; + vec3 waterEpsilon = vec3(Water_Absorb_R, Water_Absorb_G, Water_Absorb_B); + vec3 dirtEpsilon = vec3(Dirt_Absorb_R, Dirt_Absorb_G, Dirt_Absorb_B); + vec3 totEpsilon = dirtEpsilon*dirtAmount + waterEpsilon; + vec3 scatterCoef = dirtAmount * vec3(Dirt_Scatter_R, Dirt_Scatter_G, Dirt_Scatter_B) / pi; + float z0 = texture2D(depthtex0,texcoord).x; + float z = texture2D(depthtex1,texcoord).x; + vec2 tempOffset=TAA_Offset; + // float noise = blueNoise(); + + vec3 fragpos = toScreenSpace(vec3(texcoord-vec2(tempOffset)*texelSize*0.5,z)); + vec3 p3 = mat3(gbufferModelViewInverse) * fragpos; + vec3 np3 = normVec(p3); + + + vec4 SpecularTex = texture2D(colortex8,texcoord); + + // for a thing + vec3 wpos = mat3(gbufferModelViewInverse) * fragpos + gbufferModelViewInverse[3].xyz; + vec3 dVWorld = (wpos-gbufferModelViewInverse[3].xyz); + float dL = length(dVWorld); + vec3 progressW = gbufferModelViewInverse[3].xyz+cameraPosition; + progressW = gbufferModelViewInverse[3].xyz+cameraPosition + dVWorld; + + + p3 += gbufferModelViewInverse[3].xyz; + + bool iswater = texture2D(colortex7,texcoord).a > 0.99; + + vec4 data = texture2D(colortex1,texcoord); + vec4 dataUnpacked0 = vec4(decodeVec2(data.x),decodeVec2(data.y)); + vec4 dataUnpacked1 = vec4(decodeVec2(data.z),decodeVec2(data.w)); + + vec3 albedo = toLinear(vec3(dataUnpacked0.xz,dataUnpacked1.x)); + vec3 normal = mat3(gbufferModelViewInverse) * worldToView(decode(dataUnpacked0.yw)); + + vec2 lightmap = dataUnpacked1.yz; + bool translucent = abs(dataUnpacked1.w-0.5) <0.01; + bool hand = abs(dataUnpacked1.w-0.75) <0.01; + bool blocklights = abs(dataUnpacked1.w-0.8) <0.01; + + float LightDir = clamp((-15 + max(dot(normal, WsunVec),0.0)*255.0) / 240.0 ,0.0,1.0); + + vec3 lightSource = normalize(WsunVec); + vec3 viewspace_sunvec = mat3(gbufferModelView) * lightSource; + float SdotV = dot(normalize(viewspace_sunvec), normalize(fragpos)); + float lightning_shine = clamp(phaseg(SdotV, 0.8),0,3); + + vec3 ambientCoefs = normal/dot(abs(normal),vec3(1.)); + + #ifdef WhiteWorld + albedo = vec3(1.0); + #endif + + if ( z >= 1.) { + + vec3 color = vec3(1.0,0.75,0.9)/4000.0*150.0*0.1; + vec4 cloud = texture2D_bicubic(colortex0,texcoord*CLOUDS_QUALITY); + color = color*cloud.a+cloud.rgb; + + gl_FragData[0].rgb = clamp(fp10Dither(color*8./3. * (1.0-rainStrength*0.4),triangularize(blueNoise())),0.0,65000.); + + + }else{ + ////// ----- indirect ----- ////// + + vec3 custom_lightmap = texture2D(colortex4, (vec2(lightmap.x, pow(lightmap.y,2))*15.0+0.5+vec2(0.0,19.))*texelSize).rgb*8./150./3.; // y = torch + + // vec3 ambientLight = vec3(1.0) / 30; + vec3 ambientLight = gl_Fog.color.rgb * 0.2; + + // lightmap.x = trpData.a < 255.0/255.0 ? mix( trpData.a, lightmap.x ,pow(trpData.a,Emissive_Curve)): lightmap.x ; + // vec3 Lightsources = (vec3(1.0)/5) * (pow(lightmap.x,2.0) + pow(lightmap.x,10.0)); + + vec3 Lightsources = custom_lightmap.y * vec3(TORCH_R,TORCH_G,TORCH_B) * 0.5; + if(hand) Lightsources *= 0.15; + if(blocklights) Lightsources *= 0.3; + if(custom_lightmap.y > 10.) Lightsources *= 0.25; + + //apply a curve for the torch light so it doesnt mix with lab emissive colors too much + #ifdef LabPBR_Emissives + if(blocklights && (SpecularTex.a > 0.0 && SpecularTex.a < 1.0)) Lightsources = mix(vec3(0.0), Lightsources, SpecularTex.a); + #endif + + ambientLight += Lightsources; + + #if indirect_effect == 1 + if (!hand) ssAO(ambientLight, fragpos, 1.0, blueNoise(gl_FragCoord.xy).rg, worldToView(decode(dataUnpacked0.yw)), texcoord, ambientCoefs, lightmap.xy ) ; + #endif + // #if indirect_effect == 2 + // if (!hand ) rtAO(ambientLight, normal, blueNoise(gl_FragCoord.xy).rg, fragpos); + // #endif + // #if indirect_effect == 3 + // if (!hand) rtGI(ambientLight, normal, blueNoise(gl_FragCoord.xy).rg, fragpos, 1, albedo); + // #endif + + vec3 Indirect_lighting = ambientLight; + + ////// ----- direct ----- ////// + float screenShadow = 1; + vec3 Direct_lighting = SunCol * (lightning_shine*10) * LightDir; + #ifdef end_shadows + vec3 vec = -lightCol.a*viewspace_sunvec; + screenShadow = rayTraceShadow(vec, fragpos, interleaved_gradientNoise()); + if (!hand) Direct_lighting *= screenShadow; + #endif + ////// ----- finalize ----- ////// + + gl_FragData[0].rgb = (Indirect_lighting+Direct_lighting) * albedo ; + + #ifdef LabPBR_Emissives + gl_FragData[0].rgb = SpecularTex.a < 255.0/255.0 ? mix(gl_FragData[0].rgb, albedo * Emissive_Brightness , SpecularTex.a): gl_FragData[0].rgb; + #endif + + // do this after water and stuff is done because yea + #ifdef Specular_Reflections + MaterialReflections(gl_FragData[0].rgb, SpecularTex.r, SpecularTex.ggg, albedo, WsunVec, SunCol, screenShadow*LightDir , 0.0, normal, np3, fragpos, vec3(blueNoise(gl_FragCoord.xy).rg,blueNoise()), hand); + #endif + } + +// / lightnign flashes fog + if (isEyeInWater == 0){ + + // vec3 lightSource = normalize(WsunVec); + // vec3 viewspace_sunvec = mat3(gbufferModelView) * lightSource; + // float SdotV = dot(normalize(viewspace_sunvec), normalize(fragpos)); + // float lightning_shine = clamp(phaseg(SdotV, 0.35) ,0,1); + + vec3 flashingfogCol = SunCol * 0.25; + float flashingfogdist = clamp(pow(length(fragpos)/far,5.), 0.0, 1.0) ; + gl_FragData[0].rgb += flashingfogCol * lightning_shine * flashingfogdist; + // vl.a *= 1.0 - sqrt(flashingfogdist); + } + +/* DRAWBUFFERS:3 */ +} diff --git a/shaders/world1/composite2.vsh b/shaders/world1/composite2.vsh new file mode 100644 index 0000000..b1cf351 --- /dev/null +++ b/shaders/world1/composite2.vsh @@ -0,0 +1,68 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable +#define TAA +varying vec2 texcoord; + +flat varying vec3 WsunVec; +flat varying vec3 ambientUp; +flat varying vec3 ambientLeft; +flat varying vec3 ambientRight; +flat varying vec3 ambientB; +flat varying vec3 ambientF; +flat varying vec3 ambientDown; +flat varying vec3 avgAmbient; +flat varying vec4 lightCol; +flat varying float tempOffsets; +flat varying vec2 TAA_Offset; +flat varying vec3 zMults; + +uniform sampler2D colortex4; + +uniform float far; +uniform float near; +uniform mat4 gbufferModelViewInverse; +uniform vec3 sunPosition; +uniform float rainStrength; +uniform float sunElevation; +uniform int frameCounter; + +const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); + + +#include "/lib/util.glsl" + +void main() { + gl_Position = ftransform(); + texcoord = gl_MultiTexCoord0.xy; + + tempOffsets = HaltonSeq2(frameCounter%10000); + TAA_Offset = offsets[frameCounter%8]; + #ifndef TAA + TAA_Offset = vec2(0.0); + #endif + + vec3 sc = texelFetch2D(colortex4,ivec2(6,37),0).rgb; + ambientUp = texelFetch2D(colortex4,ivec2(0,37),0).rgb; + ambientDown = texelFetch2D(colortex4,ivec2(1,37),0).rgb; + ambientLeft = texelFetch2D(colortex4,ivec2(2,37),0).rgb; + ambientRight = texelFetch2D(colortex4,ivec2(3,37),0).rgb; + ambientB = texelFetch2D(colortex4,ivec2(4,37),0).rgb; + ambientF = texelFetch2D(colortex4,ivec2(5,37),0).rgb; + + avgAmbient = texelFetch2D(colortex4,ivec2(11,37),0).rgb; + + lightCol.a = float(sunElevation > 1e-5)*2-1.; + lightCol.rgb = sc; + + WsunVec = lightCol.a*normalize(mat3(gbufferModelViewInverse) *sunPosition); + zMults = vec3((far * near)*2.0,far+near,far-near); + + +} diff --git a/shaders/world1/composite5.fsh b/shaders/world1/composite5.fsh new file mode 100644 index 0000000..48345fb --- /dev/null +++ b/shaders/world1/composite5.fsh @@ -0,0 +1,259 @@ +#version 120 +//Volumetric fog rendering +#extension GL_EXT_gpu_shader4 : enable + +#define VL_SAMPLES 8 //[4 6 8 10 12 14 16 20 24 30 40 50] +#define Ambient_Mult 1.0 //[0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.5 2.0 3.0 4.0 5.0 6.0 10.0] +#define SEA_LEVEL 70 //[0 10 20 30 40 50 60 70 80 90 100 110 120 130 150 170 190] //The volumetric light uses an altitude-based fog density, this is where fog density is the highest, adjust this value according to your world. +#define ATMOSPHERIC_DENSITY 1.0 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 4.0 5.0 7.5 10.0 12.5 15.0 20.] +#define fog_mieg1 0.40 //[0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.75 0.8 0.85 0.9 0.95 1.0] +#define fog_mieg2 0.10 //[0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.75 0.8 0.85 0.9 0.95 1.0] +#define fog_coefficientRayleighR 5.8 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0] +#define fog_coefficientRayleighG 1.35 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0] +#define fog_coefficientRayleighB 3.31 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0] + +#define fog_coefficientMieR 3.0 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0] +#define fog_coefficientMieG 3.0 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0] +#define fog_coefficientMieB 3.0 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0] + +#define Underwater_Fog_Density 1.0 //[0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.5 2.0 3.0 4.0] + +flat varying vec4 lightCol; +flat varying vec3 ambientUp; +flat varying vec3 ambientLeft; +flat varying vec3 ambientRight; +flat varying vec3 ambientB; +flat varying vec3 ambientF; +flat varying vec3 ambientDown; +flat varying float tempOffsets; +flat varying float fogAmount; +flat varying float VFAmount; +uniform sampler2D noisetex; +uniform sampler2D depthtex0; + + +uniform sampler2D colortex2; +uniform sampler2D colortex3; +// uniform sampler2D colortex4; + +uniform vec3 sunVec; +uniform float far; +uniform int frameCounter; +uniform float rainStrength; +uniform float sunElevation; +uniform ivec2 eyeBrightnessSmooth; +uniform float frameTimeCounter; +uniform int isEyeInWater; +uniform vec2 texelSize; + + +uniform float isWastes; +uniform float isWarpedForest; +uniform float isCrimsonForest; +uniform float isSoulValley; +uniform float isBasaltDelta; + + +#include "lib/waterOptions.glsl" +#include "lib/color_transforms.glsl" +#include "lib/color_dither.glsl" +#include "lib/projections.glsl" +#include "lib/sky_gradient.glsl" +#include "lib/volumetricClouds.glsl" +#define fsign(a) (clamp((a)*1e35,0.,1.)*2.-1.) + +float interleaved_gradientNoise(){ + return fract(52.9829189*fract(0.06711056*gl_FragCoord.x + 0.00583715*gl_FragCoord.y)+tempOffsets); +} + +float densityAtPosFog(in vec3 pos){ + pos /= 18.; + pos.xz *= 0.5; + + vec3 p = floor(pos); + vec3 f = fract(pos); + + f = (f*f) * (3.-2.*f); + vec2 uv = p.xz + f.xz + p.y * vec2(0.0,193.0); + vec2 coord = uv / 512.0; + vec2 xy = texture2D(noisetex, coord).yx; + return mix(xy.r,xy.g, f.y); +} + + +float cloudVol(in vec3 pos){ + + vec3 samplePos = pos*vec3(1.0,1./24.,1.0) ; + vec3 samplePos2 = pos*vec3(1.0,1./48.,1.0) + vec3(frameTimeCounter,0,frameTimeCounter); + + float fog_shape = 1-densityAtPosFog(samplePos * 16.0 ); + float fog_eroded = densityAtPosFog( samplePos2 * 255.0 ); + + return max( (fog_shape*2.0 - fog_eroded*0.2) - 1.5, 0.0) * 255*255 ; +} +float phaseRayleigh(float cosTheta) { + const vec2 mul_add = vec2(0.1, 0.28) /acos(-1.0); + return cosTheta * mul_add.x + mul_add.y; // optimized version from [Elek09], divided by 4 pi for energy conservation +} +mat2x3 getVolumetricRays(float dither,vec3 fragpos, vec3 fragpos_ALT) { + + //project pixel position into projected shadowmap space + vec3 wpos = mat3(gbufferModelViewInverse) * fragpos + gbufferModelViewInverse[3].xyz; + vec3 fragposition = mat3(shadowModelView) * wpos + shadowModelView[3].xyz; + fragposition = diagonal3(shadowProjection) * fragposition + shadowProjection[3].xyz; + + + //project view origin into projected shadowmap space + vec3 start = toShadowSpaceProjected(vec3(0.)); + + //rayvector into projected shadow map space + //we can use a projected vector because its orthographic projection + //however we still have to send it to curved shadow map space every step + vec3 dV = (fragposition-start); + vec3 dVWorld = (wpos-gbufferModelViewInverse[3].xyz); + + float maxLength = min(length(dVWorld),far*4)/length(dVWorld); + dV *= maxLength; + dVWorld *= maxLength; + + //apply dither + vec3 progress = start.xyz; + vec3 progressW = gbufferModelViewInverse[3].xyz+cameraPosition; + vec3 vL = vec3(0.); + float dL = length(dVWorld); + + vec3 lightSource = normalize(WsunVec); + vec3 viewspace_sunvec = mat3(gbufferModelView) * lightSource; + float SdotV = dot(normalize(viewspace_sunvec), normalize(fragpos)); + + float mie = phaseg(SdotV,0.8); + float rayL = phaseRayleigh(SdotV); + + float mu = 1.0; + vec3 absorbance = vec3(1.0); + float expFactor = 11.0; + + vec3 fogColor = gl_Fog.color.rgb * 0.5 ; + vec3 lightning = SunCol ; + + vec3 rC = vec3(fogColor.r*1e-6, fogColor.g*1e-5, fogColor.b*1e-5); + vec3 mC = vec3(fogColor.r*1e-6, fogColor.g*1e-6, fogColor.b*1e-6); + + for (int i=0;i 0.99; + vec2 refractedCoord = texcoord; + + vec3 fragpos = toScreenSpace(vec3(texcoord-vec2(0.0)*texelSize*0.5,z)); + vec3 fragpos2 = toScreenSpace(vec3(texcoord-vec2(0.0)*texelSize*0.5,z2)); + // vec3 np3 = mat3(gbufferModelViewInverse) * fragpos + gbufferModelViewInverse[3].xyz + cameraPosition; + + vec3 p3 = mat3(gbufferModelViewInverse) * fragpos; + vec3 np3 = normVec(p3); + + + if (iswater){ + float norm = getWaterHeightmap(np3.xz*1.71, 4.0, 0.25, 1.0); + float displ = norm/(length(fragpos)/far)/35.; + refractedCoord += displ; + + if (texture2D(colortex7,refractedCoord).a < 0.99) + refractedCoord = texcoord; + + } + + + vec3 color = texture2D(colortex3,refractedCoord).rgb; + if (frDepth > 2.5/far || transparencies.a < 0.99) // Discount fix for transparencies through hand + color = color*(1.0-transparencies.a)+transparencies.rgb*10.; + + float dirtAmount = Dirt_Amount; + vec3 waterEpsilon = vec3(Water_Absorb_R, Water_Absorb_G, Water_Absorb_B); + vec3 dirtEpsilon = vec3(Dirt_Absorb_R, Dirt_Absorb_G, Dirt_Absorb_B); + vec3 totEpsilon = dirtEpsilon*dirtAmount + waterEpsilon; + + color *= vl.a; + + + // vec3 fogColor = clamp(gl_Fog.color.rgb*pow(luma(gl_Fog.color.rgb),-0.75)*0.65,0.0,1.0)*0.05; + + /// lightnign flashes fog + // if (isEyeInWater == 0){ + + // vec3 lightSource = normalize(WsunVec); + // vec3 viewspace_sunvec = mat3(gbufferModelView) * lightSource; + // float SdotV = dot(normalize(viewspace_sunvec), normalize(fragpos)); + // float lightning_shine = clamp(phaseg(SdotV, 0.35) ,0,1); + + // vec3 flashingfogCol = SunCol * 0.25; + // float flashingfogdist = clamp(pow(length(fragpos)/far,5.), 0.0, 1.0) ; + // color.rgb += flashingfogCol * lightning_shine * flashingfogdist; + // // vl.a *= 1.0 - sqrt(flashingfogdist); + // } + + + + + // underwater fog + if (isEyeInWater == 1){ + // color.rgb *= exp(-length(fragpos)/2*totEpsilon); + // vl.a *= (dot(exp(-length(fragpos)/1.2*totEpsilon),vec3(0.2,0.7,0.1)))*0.5+0.5; + + float fogfade = clamp(exp(-length(fragpos) /12 ) ,0.0,1.0); + float fogcolfade = clamp(exp(np3.y*1.5 - 1.5),0.0,1.0); + color.rgb *= fogfade; + color.rgb = color.rgb * (1.0 + vec3(0.0,0.1,0.2) * 12 * (1.0 - fogfade)) + (vec3(0.0,0.1,0.2) * 0.5 * (1.0 - fogfade))*fogcolfade; + + vl.a *= fogfade*0.75 +0.25; + } + /// lava. + if (isEyeInWater == 2){ + color.rgb = vec3(4.0,0.5,0.1); + } + /// powdered snow + if (isEyeInWater == 3){ + color.rgb = mix(color.rgb,vec3(10,15,20),clamp(length(fragpos)*0.5,0.,1.)); + vl.a = 0.0; + } + // blidnesss + color.rgb *= mix(1.0, clamp(1.5-pow(length(fragpos2)*(blindness*0.2),2.0),0.0,1.0), blindness); + // darkness effect + color.rgb *= mix(1.0, (1.0-darknessLightFactor*2.0) * clamp(1.0-pow(length(fragpos2)*(darknessFactor*0.07),2.0),0.0,1.0), darknessFactor); + + + // float BiomeParams = isWastes + isWarpedForest + isCrimsonForest + isSoulValley + isBasaltDelta ; + + color += vl.rgb; + gl_FragData[0].r = vl.a; + gl_FragData[1].rgb = clamp(color.rgb,0.0,68000.0); + gl_FragData[1].rgb = clamp(color,6.11*1e-5,65000.0); + + #ifdef display_LUT + gl_FragData[1].rgb = texture2D(colortex4,texcoord*0.45).rgb * 0.000035; + #endif +} diff --git a/shaders/world1/composite6.vsh b/shaders/world1/composite6.vsh new file mode 100644 index 0000000..05cecb7 --- /dev/null +++ b/shaders/world1/composite6.vsh @@ -0,0 +1,19 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + +varying vec2 texcoord; +flat varying vec3 zMults; +uniform float far; +uniform float near; +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + zMults = vec3(1.0/(far * near),far+near,far-near); + gl_Position = ftransform(); + texcoord = gl_MultiTexCoord0.xy; + +} diff --git a/shaders/world1/composite8.fsh b/shaders/world1/composite8.fsh new file mode 100644 index 0000000..dd85629 --- /dev/null +++ b/shaders/world1/composite8.fsh @@ -0,0 +1,320 @@ +#version 120 +//Temporal Anti-Aliasing + Dynamic exposure calculations (vertex shader) + +#extension GL_EXT_gpu_shader4 : enable + +#define TAA //if disabled you should increase most samples counts as I rely on TAA to filter noise + +//#define FAST_TAA //disables bicubic resampling and closest velocity, improves fps especially at high resolutions + +//TAA OPTIONS +//#define NO_CLIP //Removes all anti-ghosting techniques used and creates a sharp image (good for still screenshots) +#define BLEND_FACTOR 0.05 //[0.01 0.02 0.03 0.04 0.05 0.06 0.08 0.1 0.12 0.14 0.16] higher values = more flickering but sharper image, lower values = less flickering but the image will be blurrier +#define MOTION_REJECTION 0.5 //[0.0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.5] //Higher values=sharper image in motion at the cost of flickering +#define ANTI_GHOSTING 1.0 //[0.0 0.25 0.5 0.75 1.0] High values reduce ghosting but may create flickering +#define FLICKER_REDUCTION 0.75 //[0.0 0.25 0.5 0.75 1.0] High values reduce flickering but may reduce sharpness +#define CLOSEST_VELOCITY //improves edge quality in motion at the cost of performance + + +const int noiseTextureResolution = 32; + + +/* +const int colortex0Format = RGBA16F; // low res clouds (deferred->composite2) + low res VL (composite5->composite15) +const int colortex1Format = RGBA16; //terrain gbuffer (gbuffer->composite2) +const int colortex2Format = RGBA16F; //forward + transparencies (gbuffer->composite4) +const int colortex3Format = R11F_G11F_B10F; //frame buffer + bloom (deferred6->final) +const int colortex4Format = RGBA16F; //light values and skyboxes (everything) +const int colortex5Format = R11F_G11F_B10F; //TAA buffer (everything) +const int colortex6Format = R11F_G11F_B10F; //additionnal buffer for bloom (composite3->final) +const int colortex7Format = RGBA8; //Final output, transparencies id (gbuffer->composite4) +*/ +//no need to clear the buffers, saves a few fps +const bool colortex0Clear = false; +const bool colortex1Clear = false; +const bool colortex2Clear = true; +const bool colortex3Clear = false; +const bool colortex4Clear = false; +const bool colortex5Clear = false; +const bool colortex6Clear = false; +const bool colortex7Clear = false; + +varying vec2 texcoord; +flat varying float exposureA; +flat varying float tempOffsets; +uniform sampler2D colortex3; +uniform sampler2D colortex5; +uniform sampler2D depthtex0; + +uniform vec2 texelSize; +uniform float frameTimeCounter; +uniform float viewHeight; +uniform float viewWidth; +uniform vec3 previousCameraPosition; +uniform mat4 gbufferPreviousModelView; +#define fsign(a) (clamp((a)*1e35,0.,1.)*2.-1.) +#include "lib/projections.glsl" + + +float luma(vec3 color) { + return dot(color,vec3(0.21, 0.72, 0.07)); +} +float interleaved_gradientNoise(){ + return fract(52.9829189*fract(0.06711056*gl_FragCoord.x + 0.00583715*gl_FragCoord.y)+tempOffsets); +} +float triangularize(float dither) +{ + float center = dither*2.0-1.0; + dither = center*inversesqrt(abs(center)); + return clamp(dither-fsign(center),0.0,1.0); +} +vec3 fp10Dither(vec3 color,float dither){ + const vec3 mantissaBits = vec3(6.,6.,5.); + vec3 exponent = floor(log2(color)); + return color + dither*exp2(-mantissaBits)*exp2(exponent); +} + + +//returns the projected coordinates of the closest point to the camera in the 3x3 neighborhood +vec3 closestToCamera3x3() +{ + vec2 du = vec2(texelSize.x, 0.0); + vec2 dv = vec2(0.0, texelSize.y); + + vec3 dtl = vec3(texcoord,0.) + vec3(-texelSize, texture2D(depthtex0, texcoord - dv - du).x); + vec3 dtc = vec3(texcoord,0.) + vec3( 0.0, -texelSize.y, texture2D(depthtex0, texcoord - dv).x); + vec3 dtr = vec3(texcoord,0.) + vec3( texelSize.x, -texelSize.y, texture2D(depthtex0, texcoord - dv + du).x); + + vec3 dml = vec3(texcoord,0.) + vec3(-texelSize.x, 0.0, texture2D(depthtex0, texcoord - du).x); + vec3 dmc = vec3(texcoord,0.) + vec3( 0.0, 0.0, texture2D(depthtex0, texcoord).x); + vec3 dmr = vec3(texcoord,0.) + vec3( texelSize.x, 0.0, texture2D(depthtex0, texcoord + du).x); + + vec3 dbl = vec3(texcoord,0.) + vec3(-texelSize.x, texelSize.y, texture2D(depthtex0, texcoord + dv - du).x); + vec3 dbc = vec3(texcoord,0.) + vec3( 0.0, texelSize.y, texture2D(depthtex0, texcoord + dv).x); + vec3 dbr = vec3(texcoord,0.) + vec3( texelSize.x, texelSize.y, texture2D(depthtex0, texcoord + dv + du).x); + + vec3 dmin = dmc; + + dmin = dmin.z > dtc.z? dtc : dmin; + dmin = dmin.z > dtr.z? dtr : dmin; + + dmin = dmin.z > dml.z? dml : dmin; + dmin = dmin.z > dtl.z? dtl : dmin; + dmin = dmin.z > dmr.z? dmr : dmin; + + dmin = dmin.z > dbl.z? dbl : dmin; + dmin = dmin.z > dbc.z? dbc : dmin; + dmin = dmin.z > dbr.z? dbr : dmin; + + return dmin; +} + +//Modified texture interpolation from inigo quilez +vec4 smoothfilter(in sampler2D tex, in vec2 uv) +{ + vec2 textureResolution = vec2(viewWidth,viewHeight); + uv = uv*textureResolution + 0.5; + vec2 iuv = floor( uv ); + vec2 fuv = fract( uv ); + #ifndef SMOOTHESTSTEP_INTERPOLATION + uv = iuv + (fuv*fuv)*(3.0-2.0*fuv); + #endif + #ifdef SMOOTHESTSTEP_INTERPOLATION + uv = iuv + fuv*fuv*fuv*(fuv*(fuv*6.0-15.0)+10.0); + #endif + uv = (uv - 0.5)/textureResolution; + return texture2D( tex, uv); +} +//Due to low sample count we "tonemap" the inputs to preserve colors and smoother edges +vec3 weightedSample(sampler2D colorTex, vec2 texcoord){ + vec3 wsample = texture2D(colorTex,texcoord).rgb*exposureA; + return wsample/(1.0+luma(wsample)); + +} + + +//from : https://gist.github.com/TheRealMJP/c83b8c0f46b63f3a88a5986f4fa982b1 +vec4 SampleTextureCatmullRom(sampler2D tex, vec2 uv, vec2 texSize ) +{ + // We're going to sample a a 4x4 grid of texels surrounding the target UV coordinate. We'll do this by rounding + // down the sample location to get the exact center of our "starting" texel. The starting texel will be at + // location [1, 1] in the grid, where [0, 0] is the top left corner. + vec2 samplePos = uv * texSize; + vec2 texPos1 = floor(samplePos - 0.5) + 0.5; + + // Compute the fractional offset from our starting texel to our original sample location, which we'll + // feed into the Catmull-Rom spline function to get our filter weights. + vec2 f = samplePos - texPos1; + + // Compute the Catmull-Rom weights using the fractional offset that we calculated earlier. + // These equations are pre-expanded based on our knowledge of where the texels will be located, + // which lets us avoid having to evaluate a piece-wise function. + vec2 w0 = f * ( -0.5 + f * (1.0 - 0.5*f)); + vec2 w1 = 1.0 + f * f * (-2.5 + 1.5*f); + vec2 w2 = f * ( 0.5 + f * (2.0 - 1.5*f) ); + vec2 w3 = f * f * (-0.5 + 0.5 * f); + + // Work out weighting factors and sampling offsets that will let us use bilinear filtering to + // simultaneously evaluate the middle 2 samples from the 4x4 grid. + vec2 w12 = w1 + w2; + vec2 offset12 = w2 / (w1 + w2); + + // Compute the final UV coordinates we'll use for sampling the texture + vec2 texPos0 = texPos1 - vec2(1.0); + vec2 texPos3 = texPos1 + vec2(2.0); + vec2 texPos12 = texPos1 + offset12; + + texPos0 *= texelSize; + texPos3 *= texelSize; + texPos12 *= texelSize; + + vec4 result = vec4(0.0); + result += texture2D(tex, vec2(texPos0.x, texPos0.y)) * w0.x * w0.y; + result += texture2D(tex, vec2(texPos12.x, texPos0.y)) * w12.x * w0.y; + result += texture2D(tex, vec2(texPos3.x, texPos0.y)) * w3.x * w0.y; + + result += texture2D(tex, vec2(texPos0.x, texPos12.y)) * w0.x * w12.y; + result += texture2D(tex, vec2(texPos12.x, texPos12.y)) * w12.x * w12.y; + result += texture2D(tex, vec2(texPos3.x, texPos12.y)) * w3.x * w12.y; + + result += texture2D(tex, vec2(texPos0.x, texPos3.y)) * w0.x * w3.y; + result += texture2D(tex, vec2(texPos12.x, texPos3.y)) * w12.x * w3.y; + result += texture2D(tex, vec2(texPos3.x, texPos3.y)) * w3.x * w3.y; + + return result; +} +//approximation from SMAA presentation from siggraph 2016 +vec3 FastCatmulRom(sampler2D colorTex, vec2 texcoord, vec4 rtMetrics, float sharpenAmount) +{ + vec2 position = rtMetrics.zw * texcoord; + vec2 centerPosition = floor(position - 0.5) + 0.5; + vec2 f = position - centerPosition; + vec2 f2 = f * f; + vec2 f3 = f * f2; + + float c = sharpenAmount; + vec2 w0 = -c * f3 + 2.0 * c * f2 - c * f; + vec2 w1 = (2.0 - c) * f3 - (3.0 - c) * f2 + 1.0; + vec2 w2 = -(2.0 - c) * f3 + (3.0 - 2.0 * c) * f2 + c * f; + vec2 w3 = c * f3 - c * f2; + + vec2 w12 = w1 + w2; + vec2 tc12 = rtMetrics.xy * (centerPosition + w2 / w12); + vec3 centerColor = texture2D(colorTex, vec2(tc12.x, tc12.y)).rgb; + + vec2 tc0 = rtMetrics.xy * (centerPosition - 1.0); + vec2 tc3 = rtMetrics.xy * (centerPosition + 2.0); + vec4 color = vec4(texture2D(colorTex, vec2(tc12.x, tc0.y )).rgb, 1.0) * (w12.x * w0.y ) + + vec4(texture2D(colorTex, vec2(tc0.x, tc12.y)).rgb, 1.0) * (w0.x * w12.y) + + vec4(centerColor, 1.0) * (w12.x * w12.y) + + vec4(texture2D(colorTex, vec2(tc3.x, tc12.y)).rgb, 1.0) * (w3.x * w12.y) + + vec4(texture2D(colorTex, vec2(tc12.x, tc3.y )).rgb, 1.0) * (w12.x * w3.y ); + return color.rgb/color.a; + +} + +vec3 clip_aabb(vec3 q,vec3 aabb_min, vec3 aabb_max) + { + vec3 p_clip = 0.5 * (aabb_max + aabb_min); + vec3 e_clip = 0.5 * (aabb_max - aabb_min) + 0.00000001; + + vec3 v_clip = q - vec3(p_clip); + vec3 v_unit = v_clip.xyz / e_clip; + vec3 a_unit = abs(v_unit); + float ma_unit = max(a_unit.x, max(a_unit.y, a_unit.z)); + + if (ma_unit > 1.0) + return vec3(p_clip) + v_clip / ma_unit; + else + return q; + } +vec3 toClipSpace3Prev(vec3 viewSpacePosition) { + return projMAD(gbufferPreviousProjection, viewSpacePosition) / -viewSpacePosition.z * 0.5 + 0.5; +} + +vec3 TAA_hq(){ + //use velocity from the nearest texel from camera in a 3x3 box in order to improve edge quality in motion + #ifdef CLOSEST_VELOCITY + vec3 closestToCamera = closestToCamera3x3(); + #endif + + #ifndef CLOSEST_VELOCITY + vec3 closestToCamera = vec3(texcoord,texture2D(depthtex0,texcoord).x); + #endif + + //reproject previous frame + vec3 fragposition = toScreenSpace(closestToCamera); + fragposition = mat3(gbufferModelViewInverse) * fragposition + gbufferModelViewInverse[3].xyz + (cameraPosition - previousCameraPosition); + vec3 previousPosition = mat3(gbufferPreviousModelView) * fragposition + gbufferPreviousModelView[3].xyz; + previousPosition = toClipSpace3Prev(previousPosition); + vec2 velocity = previousPosition.xy - closestToCamera.xy; + previousPosition.xy = texcoord + velocity; + + //to reduce error propagation caused by interpolation during history resampling, we will introduce back some aliasing in motion + vec2 d = 0.5-abs(fract(previousPosition.xy*vec2(viewWidth,viewHeight)-texcoord*vec2(viewWidth,viewHeight))-0.5); + float mixFactor = dot(d,d); + float rej = mixFactor*MOTION_REJECTION; + //reject history if off-screen and early exit + if (previousPosition.x < 0.0 || previousPosition.y < 0.0 || previousPosition.x > 1.0 || previousPosition.y > 1.0) return texture2D(colortex3, texcoord).rgb; + + //Samples current frame 3x3 neighboorhood + vec3 albedoCurrent0 = texture2D(colortex3, texcoord).rgb; + vec3 albedoCurrent1 = texture2D(colortex3, texcoord + vec2(texelSize.x,texelSize.y)).rgb; + vec3 albedoCurrent2 = texture2D(colortex3, texcoord + vec2(texelSize.x,-texelSize.y)).rgb; + vec3 albedoCurrent3 = texture2D(colortex3, texcoord + vec2(-texelSize.x,-texelSize.y)).rgb; + vec3 albedoCurrent4 = texture2D(colortex3, texcoord + vec2(-texelSize.x,texelSize.y)).rgb; + vec3 albedoCurrent5 = texture2D(colortex3, texcoord + vec2(0.0,texelSize.y)).rgb; + vec3 albedoCurrent6 = texture2D(colortex3, texcoord + vec2(0.0,-texelSize.y)).rgb; + vec3 albedoCurrent7 = texture2D(colortex3, texcoord + vec2(-texelSize.x,0.0)).rgb; + vec3 albedoCurrent8 = texture2D(colortex3, texcoord + vec2(texelSize.x,0.0)).rgb; + + #ifndef NO_CLIP + //Assuming the history color is a blend of the 3x3 neighborhood, we clamp the history to the min and max of each channel in the 3x3 neighborhood + vec3 cMax = max(max(max(albedoCurrent0,albedoCurrent1),albedoCurrent2),max(albedoCurrent3,max(albedoCurrent4,max(albedoCurrent5,max(albedoCurrent6,max(albedoCurrent7,albedoCurrent8)))))); + vec3 cMin = min(min(min(albedoCurrent0,albedoCurrent1),albedoCurrent2),min(albedoCurrent3,min(albedoCurrent4,min(albedoCurrent5,min(albedoCurrent6,min(albedoCurrent7,albedoCurrent8)))))); + + + vec3 albedoPrev = FastCatmulRom(colortex5, previousPosition.xy,vec4(texelSize, 1.0/texelSize), 0.82).xyz; + vec3 finalcAcc = clamp(albedoPrev,cMin,cMax); + + + + //increases blending factor if history is far away from aabb, reduces ghosting at the cost of some flickering + float isclamped = distance(albedoPrev,finalcAcc)/luma(albedoPrev); + + //reduces blending factor if current texel is far from history, reduces flickering + float lumDiff2 = distance(albedoPrev,albedoCurrent0)/luma(albedoPrev); + lumDiff2 = 1.0-clamp(lumDiff2*lumDiff2,0.,1.)*FLICKER_REDUCTION; + + //Blend current pixel with clamped history + vec3 supersampled = mix(finalcAcc,albedoCurrent0,clamp(BLEND_FACTOR*lumDiff2+rej+isclamped*ANTI_GHOSTING+0.01,0.,1.)); + #endif + + + #ifdef NO_CLIP + vec3 albedoPrev = texture2D(colortex5, previousPosition.xy).xyz; + vec3 supersampled = mix(albedoPrev,albedoCurrent0,clamp(0.05,0.,1.)); + #endif + + //De-tonemap + return supersampled; +} + +void main() { + +/* DRAWBUFFERS:5 */ +gl_FragData[0].a = 1.0; + #ifdef TAA + vec3 color = TAA_hq(); + gl_FragData[0].rgb = clamp(fp10Dither(color,triangularize(interleaved_gradientNoise())),6.11*1e-5,65000.0); + #endif + #ifndef TAA + vec3 color = clamp(fp10Dither(texture2D(colortex3,texcoord).rgb,triangularize(interleaved_gradientNoise())),0.,65000.); + gl_FragData[0].rgb = color; + #endif + + + + + +} diff --git a/shaders/world1/composite8.vsh b/shaders/world1/composite8.vsh new file mode 100644 index 0000000..24ef8ce --- /dev/null +++ b/shaders/world1/composite8.vsh @@ -0,0 +1,17 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + + +varying vec2 texcoord; +flat varying float exposureA; +flat varying float tempOffsets; +uniform sampler2D colortex4; +uniform int frameCounter; +#include "/lib/util.glsl" +void main() { + + tempOffsets = HaltonSeq2(frameCounter%10000); + gl_Position = ftransform(); + texcoord = gl_MultiTexCoord0.xy; + exposureA = texelFetch2D(colortex4,ivec2(10,37),0).r; +} diff --git a/shaders/world1/composite9.fsh b/shaders/world1/composite9.fsh new file mode 100644 index 0000000..517bfe5 --- /dev/null +++ b/shaders/world1/composite9.fsh @@ -0,0 +1,53 @@ +#version 120 +//downsample 1st pass (half res) for bloom + +uniform sampler2D colortex5; +uniform sampler2D colortex8; +uniform vec2 texelSize; +uniform float viewWidth; +uniform float viewHeight; +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + +/* DRAWBUFFERS:3 */ +vec2 resScale = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.))/vec2(1920.,1080.); +vec2 quarterResTC = gl_FragCoord.xy*2.*resScale*texelSize; + +float emissives = texture2D(colortex8,quarterResTC).a; +if(emissives == 1.0) emissives = 0.0; +emissives *= 5; + //0.5 + gl_FragData[0] = texture2D(colortex5,quarterResTC-1.0*vec2(texelSize.x,texelSize.y))/4.*0.5; + gl_FragData[0] += texture2D(colortex5,quarterResTC+1.0*vec2(texelSize.x,texelSize.y))/4.*0.5; + gl_FragData[0] += texture2D(colortex5,quarterResTC+vec2(-1.0*texelSize.x,1.0*texelSize.y))/4.*0.5; + gl_FragData[0] += texture2D(colortex5,quarterResTC+vec2(1.0*texelSize.x,-1.0*texelSize.y))/4.*0.5; + + //0.25 + gl_FragData[0] += texture2D(colortex5,quarterResTC-2.0*vec2(texelSize.x,0.0))/2.*0.125; + gl_FragData[0] += texture2D(colortex5,quarterResTC+2.0*vec2(0.0,texelSize.y))/2.*0.125; + gl_FragData[0] += texture2D(colortex5,quarterResTC+2.0*vec2(0,-texelSize.y))/2*0.125; + gl_FragData[0] += texture2D(colortex5,quarterResTC+2.0*vec2(-texelSize.x,0.0))/2*0.125; + + //0.125 + gl_FragData[0] += texture2D(colortex5,quarterResTC-2.0*vec2(texelSize.x,texelSize.y))/4.*0.125; + gl_FragData[0] += texture2D(colortex5,quarterResTC+2.0*vec2(texelSize.x,texelSize.y))/4.*0.125; + gl_FragData[0] += texture2D(colortex5,quarterResTC+vec2(-2.0*texelSize.x,2.0*texelSize.y))/4.*0.125; + gl_FragData[0] += texture2D(colortex5,quarterResTC+vec2(2.0*texelSize.x,-2.0*texelSize.y))/4.*0.125; + + //0.125 + gl_FragData[0] += texture2D(colortex5,quarterResTC)*0.125; + + gl_FragData[0].rgb = clamp(gl_FragData[0].rgb,0.0,65000.); + + // gl_FragData[0].rgb += gl_FragData[0].rgb*emissives; + + + if (quarterResTC.x > 1.0 - 3.5*texelSize.x || quarterResTC.y > 1.0 -3.5*texelSize.y || quarterResTC.x < 3.5*texelSize.x || quarterResTC.y < 3.5*texelSize.y) gl_FragData[0].rgb = vec3(0.0); + + +} diff --git a/shaders/world1/composite9.vsh b/shaders/world1/composite9.vsh new file mode 100644 index 0000000..386f006 --- /dev/null +++ b/shaders/world1/composite9.vsh @@ -0,0 +1,17 @@ +#version 120 + +uniform float viewWidth; +uniform float viewHeight; +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + //Improves performances and makes sure bloom radius stays the same at high resolution (>1080p) + vec2 clampedRes = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.)); + gl_Position = ftransform(); + //*0.51 to avoid errors when sampling outside since clearing is disabled + gl_Position.xy = (gl_Position.xy*0.5+0.5)*0.51/clampedRes*vec2(1920.0,1080.)*2.0-1.0; +} diff --git a/shaders/world1/deferred.fsh b/shaders/world1/deferred.fsh new file mode 100644 index 0000000..34b9358 --- /dev/null +++ b/shaders/world1/deferred.fsh @@ -0,0 +1,136 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + + +//Prepares sky textures (2 * 256 * 256), computes light values and custom lightmaps +#define Ambient_Mult 1.0 //[0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.5 2.0 3.0 4.0 5.0 6.0 10.0] +#define Sky_Brightness 1.0 //[0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.5 2.0 3.0 4.0 5.0 6.0 10.0] +#define MIN_LIGHT_AMOUNT 1.0 //[0.0 0.5 1.0 1.5 2.0 3.0 4.0 5.0] +#define TORCH_AMOUNT 1.0 //[0.0 0.5 0.75 1. 1.2 1.4 1.6 1.8 2.0] +#define TORCH_R 1.0 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +#define TORCH_G 0.75 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +#define TORCH_B 0.5 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] + + +flat varying vec3 ambientUp; +flat varying vec3 ambientLeft; +flat varying vec3 ambientRight; +flat varying vec3 ambientB; +flat varying vec3 ambientF; +flat varying vec3 ambientDown; +flat varying vec3 lightSourceColor; +flat varying vec3 sunColor; +flat varying vec3 sunColorCloud; +flat varying vec3 moonColor; +flat varying vec3 moonColorCloud; +flat varying vec3 zenithColor; +flat varying vec3 avgSky; +flat varying vec2 tempOffsets; +flat varying float exposure; +flat varying float rodExposure; +flat varying float avgBrightness; +flat varying float exposureF; +flat varying float fogAmount; +flat varying float VFAmount; + +uniform sampler2D colortex4; +uniform sampler2D noisetex; + +uniform int frameCounter; +uniform float rainStrength; +uniform float eyeAltitude; +uniform vec3 sunVec; +uniform vec2 texelSize; +uniform float frameTimeCounter; +uniform mat4 gbufferProjection; +uniform mat4 gbufferProjectionInverse; +uniform mat4 gbufferPreviousProjection; +uniform mat4 gbufferModelViewInverse; +uniform mat4 gbufferModelView; +uniform mat4 shadowModelView; +uniform mat4 shadowProjection; +uniform float sunElevation; +uniform vec3 cameraPosition; +uniform float far; +uniform ivec2 eyeBrightnessSmooth; +#include "/lib/util.glsl" +#include "/lib/ROBOBO_sky.glsl" +vec3 toShadowSpaceProjected(vec3 p3){ + p3 = mat3(gbufferModelViewInverse) * p3 + gbufferModelViewInverse[3].xyz; + p3 = mat3(shadowModelView) * p3 + shadowModelView[3].xyz; + p3 = diagonal3(shadowProjection) * p3 + shadowProjection[3].xyz; + + return p3; +} +float interleaved_gradientNoise(){ + vec2 coord = gl_FragCoord.xy; + float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)+frameCounter/1.6180339887); + return noise; +} +float blueNoise(){ + return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); +} +vec4 lightCol = vec4(lightSourceColor, float(sunElevation > 1e-5)*2-1.); +const float[17] Slightmap = float[17](14.0,17.,19.0,22.0,24.0,28.0,31.0,40.0,60.0,79.0,93.0,110.0,132.0,160.0,197.0,249.0,249.0); + +void main() { +/* DRAWBUFFERS:4 */ +gl_FragData[0] = vec4(0.0); +//Lightmap for forward shading (contains average integrated sky color across all faces + torch + min ambient) +vec3 avgAmbient = (ambientUp + ambientLeft + ambientRight + ambientB + ambientF + ambientDown)/6.; +if (gl_FragCoord.x < 17. && gl_FragCoord.y < 17.){ + float torchLut = clamp(16.0-gl_FragCoord.x,0.5,15.5); + torchLut = torchLut+0.712; + float torch_lightmap = max(1.0/torchLut/torchLut - 1/16.21/16.21,0.0); + torch_lightmap = torch_lightmap*TORCH_AMOUNT*5.0; + float sky_lightmap = 0.5*150.0; + vec3 ambient = avgAmbient*sky_lightmap+torch_lightmap*vec3(TORCH_R,TORCH_G,TORCH_B)*TORCH_AMOUNT+MIN_LIGHT_AMOUNT*0.005/(exposureF+clamp(rodExposure*exposureF/10.,0.0,10000.0)); + gl_FragData[0] = vec4(ambient*Ambient_Mult,1.0); +} + +//Lightmap for deferred shading (contains only torch + min ambient) +if (gl_FragCoord.x < 17. && gl_FragCoord.y > 19. && gl_FragCoord.y < 19.+17. ){ + float torchLut = clamp(16.0-gl_FragCoord.x,0.5,15.5); + torchLut = torchLut+0.712; + float torch_lightmap = max(1.0/torchLut/torchLut - 1/16.21/16.21,0.0); + float ambient = torch_lightmap*TORCH_AMOUNT*5.; + float sky_lightmap = 0.5; + gl_FragData[0] = vec4(sky_lightmap,ambient,MIN_LIGHT_AMOUNT*0.005/(exposureF+clamp(rodExposure*exposureF/10.,0.0,10000.0)),1.0)*Ambient_Mult; +} + +//Save light values +if (gl_FragCoord.x < 1. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1 ) +gl_FragData[0] = vec4(ambientUp,1.0); +if (gl_FragCoord.x > 1. && gl_FragCoord.x < 2. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1 ) +gl_FragData[0] = vec4(ambientDown,1.0); +if (gl_FragCoord.x > 2. && gl_FragCoord.x < 3. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1 ) +gl_FragData[0] = vec4(ambientLeft,1.0); +if (gl_FragCoord.x > 3. && gl_FragCoord.x < 4. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1 ) +gl_FragData[0] = vec4(ambientRight,1.0); +if (gl_FragCoord.x > 4. && gl_FragCoord.x < 5. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1 ) +gl_FragData[0] = vec4(ambientB,1.0); +if (gl_FragCoord.x > 5. && gl_FragCoord.x < 6. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1 ) +gl_FragData[0] = vec4(ambientF,1.0); +if (gl_FragCoord.x > 6. && gl_FragCoord.x < 7. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1 ) +gl_FragData[0] = vec4(lightSourceColor,1.0); +if (gl_FragCoord.x > 7. && gl_FragCoord.x < 8. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1 ) +gl_FragData[0] = vec4(avgAmbient,1.0); + +//Sky gradient (no clouds) +const float pi = 3.141592653589793238462643383279502884197169; +if (gl_FragCoord.x > 18. && gl_FragCoord.y > 1. && gl_FragCoord.x < 18+257){ + gl_FragData[0] = vec4(vec3(1.0,0.4,0.12)*100.,1.0); +} + +//Temporally accumulate sky and light values +vec3 temp = texelFetch2D(colortex4,ivec2(gl_FragCoord.xy),0).rgb; +vec3 curr = gl_FragData[0].rgb*150.; +gl_FragData[0].rgb = clamp(mix(temp,curr,0.06),0.0,65000.); + +//Exposure values +if (gl_FragCoord.x > 10. && gl_FragCoord.x < 11. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1 ) +gl_FragData[0] = vec4(exposure,avgBrightness,exposureF,1.0); +if (gl_FragCoord.x > 14. && gl_FragCoord.x < 15. && gl_FragCoord.y > 19.+18. && gl_FragCoord.y < 19.+18.+1 ) +gl_FragData[0] = vec4(rodExposure,0.0,0.0,1.0); + +} diff --git a/shaders/world1/deferred.vsh b/shaders/world1/deferred.vsh new file mode 100644 index 0000000..2ff914b --- /dev/null +++ b/shaders/world1/deferred.vsh @@ -0,0 +1,201 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable +#define EXPOSURE_MULTIPLIER 1.0 //[0.25 0.4 0.5 0.6 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.1 1.2 1.3 1.4 1.5 2.0 3.0 4.0] +#define AUTO_EXPOSURE //Highly recommended to keep it on unless you want to take screenshots +#define Manual_exposure_value 1.0 // [0.000553 0.000581 0.000611 0.000642 0.000675 0.000710 0.000746 0.000784 0.000825 0.000867 0.000911 0.000958 0.001007 0.001059 0.001113 0.001170 0.001230 0.001294 0.001360 0.001430 0.001503 0.001580 0.001661 0.001746 0.001836 0.001930 0.002029 0.002133 0.002242 0.002357 0.002478 0.002605 0.002739 0.002879 0.003027 0.003182 0.003345 0.003517 0.003697 0.003887 0.004086 0.004296 0.004516 0.004748 0.004991 0.005247 0.005516 0.005799 0.006096 0.006409 0.006737 0.007083 0.007446 0.007828 0.008229 0.008651 0.009095 0.009561 0.010051 0.010567 0.011108 0.011678 0.012277 0.012906 0.013568 0.014264 0.014995 0.015764 0.016572 0.017422 0.018315 0.019254 0.020241 0.021279 0.022370 0.023517 0.024723 0.025991 0.027323 0.028724 0.030197 0.031745 0.033373 0.035084 0.036883 0.038774 0.040762 0.042852 0.045049 0.047358 0.049787 0.052339 0.055023 0.057844 0.060810 0.063927 0.067205 0.070651 0.074273 0.078081 0.082084 0.086293 0.090717 0.095369 0.100258 0.105399 0.110803 0.116484 0.122456 0.128734 0.135335 0.142274 0.149568 0.157237 0.165298 0.173773 0.182683 0.192049 0.201896 0.212247 0.223130 0.234570 0.246596 0.259240 0.272531 0.286504 0.301194 0.316636 0.332871 0.349937 0.367879 0.386741 0.406569 0.427414 0.449328 0.472366 0.496585 0.522045 0.548811 0.576949 0.606530 0.637628 0.670320 0.704688 0.740818 0.778800 0.818730 0.860707 0.904837 0.951229 1.0 1.051271 1.105170 1.161834 1.221402 1.284025 1.349858 1.419067 1.491824 1.568312 1.648721 1.733253 1.822118 1.915540 2.013752 2.117000 2.225540 2.339646 2.459603 2.585709 2.718281 2.857651 3.004166 3.158192 3.320116 3.490342 3.669296 3.857425 4.055199 4.263114 4.481689 4.711470 4.953032 5.206979 5.473947 5.754602 6.049647 6.359819 6.685894 7.028687 7.389056 7.767901 8.166169 8.584858 9.025013 9.487735 9.974182 10.48556 11.02317 11.58834 12.18249 ] +#define Exposure_Speed 1.0 //[0.25 0.5 0.75 1.0 1.25 1.5 1.75 2.0 2.25 2.5 2.75 3.0 4.0 5.0] +#define CLOUDS_SHADOWS +#define BASE_FOG_AMOUNT 1.0 //[0.0 0.2 0.4 0.6 0.8 1.0 1.25 1.5 1.75 2.0 3.0 4.0 5.0 10.0 20.0 30.0 50.0 100.0 150.0 200.0] Base fog amount amount (does not change the "cloudy" fog) +#define CLOUDY_FOG_AMOUNT 1.0 //[0.0 0.2 0.4 0.6 0.8 1.0 1.25 1.5 1.75 2.0 3.0 4.0 5.0] +#define FOG_TOD_MULTIPLIER 1.0 //[0.0 0.2 0.4 0.6 0.8 1.0 1.25 1.5 1.75 2.0 3.0 4.0 5.0] //Influence of time of day on fog amount +#define FOG_RAIN_MULTIPLIER 1.0 //[0.0 0.2 0.4 0.6 0.8 1.0 1.25 1.5 1.75 2.0 3.0 4.0 5.0] //Influence of rain on fog amount +flat varying vec3 ambientUp; +flat varying vec3 ambientLeft; +flat varying vec3 ambientRight; +flat varying vec3 ambientB; +flat varying vec3 ambientF; +flat varying vec3 ambientDown; +flat varying vec3 zenithColor; +flat varying vec3 sunColor; +flat varying vec3 sunColorCloud; +flat varying vec3 moonColor; +flat varying vec3 moonColorCloud; +flat varying vec3 lightSourceColor; +flat varying vec3 avgSky; +flat varying vec2 tempOffsets; +flat varying float exposure; +flat varying float avgBrightness; +flat varying float exposureF; +flat varying float rodExposure; +flat varying float fogAmount; +flat varying float VFAmount; + +uniform sampler2D colortex4; +uniform sampler2D colortex6; + +uniform mat4 gbufferModelViewInverse; +uniform vec3 sunPosition; +uniform vec2 texelSize; +uniform float rainStrength; +uniform float sunElevation; +uniform float nightVision; +uniform float frameTime; +uniform float eyeAltitude; +uniform int frameCounter; +uniform int worldTime; +vec3 sunVec = -normalize(vec3(0.8,0.8,0.2)); + + +#include "lib/sky_gradient.glsl" +#include "/lib/util.glsl" +#include "/lib/ROBOBO_sky.glsl" +vec3 rodSample(vec2 Xi) +{ + float r = sqrt(1.0f - Xi.x*Xi.y); + float phi = 2 * 3.14159265359 * Xi.y; + + return normalize(vec3(cos(phi) * r, sin(phi) * r, Xi.x)).xzy; +} +vec3 cosineHemisphereSample(vec2 Xi) +{ + float r = sqrt(Xi.x); + float theta = 2.0 * 3.14159265359 * Xi.y; + + float x = r * cos(theta); + float y = r * sin(theta); + + return vec3(x, y, sqrt(clamp(1.0 - Xi.x,0.,1.))); +} + +float luma(vec3 color) { + return dot(color,vec3(0.21, 0.72, 0.07)); +} + +vec2 tapLocation(int sampleNumber,int nb, float nbRot,float jitter) +{ + float alpha = float(sampleNumber+jitter)/nb; + float angle = (jitter+alpha) * (nbRot * 6.28); + + float ssR = alpha; + float sin_v, cos_v; + + sin_v = sin(angle); + cos_v = cos(angle); + + return vec2(cos_v, sin_v)*ssR; +} +//Low discrepancy 2D sequence, integration error is as low as sobol but easier to compute : http://extremelearning.com.au/unreasonable-effectiveness-of-quasirandom-sequences/ +vec2 R2_samples(int n){ + vec2 alpha = vec2(0.75487765, 0.56984026); + return fract(alpha * n); +} +void main() { + + gl_Position = ftransform()*0.5+0.5; + gl_Position.xy = gl_Position.xy*vec2(18.+258*2,258.)*texelSize; + gl_Position.xy = gl_Position.xy*2.-1.0; + + tempOffsets = R2_samples(frameCounter%10000); + + ambientUp = vec3(0.0); + ambientDown = vec3(0.0); + ambientLeft = vec3(0.0); + ambientRight = vec3(0.0); + ambientB = vec3(0.0); + ambientF = vec3(0.0); + avgSky = vec3(0.0); + + + + //Fake bounced sunlight + vec3 bouncedSun = 0.3 * vec3(1.0,0.7,0.85)/4000; + ambientUp += bouncedSun*clamp(-sunVec.y+1.,0.,4.0); + ambientLeft += bouncedSun*clamp(sunVec.x+1.,0.0,4.); + ambientRight += bouncedSun*clamp(-sunVec.x+1.,0.0,4.); + ambientB += bouncedSun*clamp(-sunVec.z+1.,0.0,4.); + ambientF += bouncedSun*clamp(sunVec.z+1.,0.0,4.); + ambientDown += bouncedSun*clamp(sunVec.y+1.,0.0,4.); + + + float avgLuma = 0.0; + float m2 = 0.0; + int n=100; + vec2 clampedRes = max(1.0/texelSize,vec2(1920.0,1080.)); + float avgExp = 0.0; + vec2 resScale = vec2(1920.,1080.)/clampedRes; + float v[25]; + float temp; + // 5x5 Median filter by morgan mcguire + // We take the median value of the most blurred bloom buffer + #define s2(a, b) temp = a; a = min(a, b); b = max(temp, b); + #define t2(a, b) s2(v[a], v[b]); + #define t24(a, b, c, d, e, f, g, h) t2(a, b); t2(c, d); t2(e, f); t2(g, h); + #define t25(a, b, c, d, e, f, g, h, i, j) t24(a, b, c, d, e, f, g, h); t2(i, j); + for (int i = 0; i < 5; i++){ + for (int j = 0; j < 5; j++){ + vec2 tc = 0.5 + vec2(i-2,j-2)/2.0 * 0.35; + v[i+j*5] = luma(texture2D(colortex6,tc/128. * resScale+vec2(0.484375*resScale.x+10.5*texelSize.x,.0)).rgb); + } + } + t25(0, 1, 3, 4, 2, 4, 2, 3, 6, 7); + t25(5, 7, 5, 6, 9, 7, 1, 7, 1, 4); + t25(12, 13, 11, 13, 11, 12, 15, 16, 14, 16); + t25(14, 15, 18, 19, 17, 19, 17, 18, 21, 22); + t25(20, 22, 20, 21, 23, 24, 2, 5, 3, 6); + t25(0, 6, 0, 3, 4, 7, 1, 7, 1, 4); + t25(11, 14, 8, 14, 8, 11, 12, 15, 9, 15); + t25(9, 12, 13, 16, 10, 16, 10, 13, 20, 23); + t25(17, 23, 17, 20, 21, 24, 18, 24, 18, 21); + t25(19, 22, 8, 17, 9, 18, 0, 18, 0, 9); + t25(10, 19, 1, 19, 1, 10, 11, 20, 2, 20); + t25(2, 11, 12, 21, 3, 21, 3, 12, 13, 22); + t25(4, 22, 4, 13, 14, 23, 5, 23, 5, 14); + t25(15, 24, 6, 24, 6, 15, 7, 16, 7, 19); + t25(3, 11, 5, 17, 11, 17, 9, 17, 4, 10); + t25(6, 12, 7, 14, 4, 6, 4, 7, 12, 14); + t25(10, 14, 6, 7, 10, 12, 6, 10, 6, 17); + t25(12, 17, 7, 17, 7, 10, 12, 18, 7, 12); + t24(10, 18, 12, 20, 10, 20, 10, 12); + avgExp = v[12]; // Median value + + + avgBrightness = clamp(mix(avgExp,texelFetch2D(colortex4,ivec2(10,37),0).g,0.95),0.00003051757,65000.0); + + float currentExposure = texelFetch2D(colortex4,ivec2(10,37),0).b; + float L = max(avgBrightness,1e-8); + float keyVal = 1.03-2.0/(log(L+1.0)/log(10.0)+2.0); + float targetExposure = 1.0*keyVal/L; + + float targetrodExposure = clamp(log(targetExposure*2.0+1.0)-0.1,0.0,2.0); + float currentrodExposure = texelFetch2D(colortex4,ivec2(14,37),0).r; + + targetExposure = clamp(targetExposure,2.0,3.0); + float rad = sqrt(currentExposure); + float rtarget = sqrt(targetExposure); + float dir = sign(rtarget-rad); + float dist = abs(rtarget-rad); + float maxApertureChange = 0.0032*frameTime/0.016666*Exposure_Speed * exp2(max(rad,rtarget)*0.5); + + maxApertureChange *= 1.0+nightVision*4.; + rad = rad+dir*min(dist,maxApertureChange); + + exposureF = rad*rad; + exposure=exposureF*EXPOSURE_MULTIPLIER; + + + dir = sign(targetrodExposure-currentrodExposure); + dist = abs(targetrodExposure-currentrodExposure); + maxApertureChange = 0.0032*frameTime/0.016666*Exposure_Speed * exp2(max(rad,rtarget)*0.5); + + rodExposure = currentrodExposure + dir * min(dist,maxApertureChange); + + #ifndef AUTO_EXPOSURE + exposure = Manual_exposure_value; + rodExposure = clamp(log(Manual_exposure_value*2.0+1.0)-0.1,0.0,2.0); + #endif + float modWT = (worldTime%24000)*1.0; + + float fogAmount0 = 1/3000.+FOG_TOD_MULTIPLIER*(1/180.*(clamp(modWT-11000.,0.,2000.0)/2000.+(1.0-clamp(modWT,0.,3000.0)/3000.))*(clamp(modWT-11000.,0.,2000.0)/2000.+(1.0-clamp(modWT,0.,3000.0)/3000.)) + 1/200.*clamp(modWT-13000.,0.,1000.0)/1000.*(1.0-clamp(modWT-23000.,0.,1000.0)/1000.)); + VFAmount = CLOUDY_FOG_AMOUNT*(fogAmount0*fogAmount0+FOG_RAIN_MULTIPLIER*1.8/20000.*rainStrength); + fogAmount = BASE_FOG_AMOUNT*(fogAmount0+max(FOG_RAIN_MULTIPLIER*1/15.*rainStrength , FOG_TOD_MULTIPLIER*1/50.*clamp(modWT-13000.,0.,1000.0)/1000.*(1.0-clamp(modWT-23000.,0.,1000.0)/1000.))); +} diff --git a/shaders/world1/deferred1.fsh b/shaders/world1/deferred1.fsh new file mode 100644 index 0000000..24db38d --- /dev/null +++ b/shaders/world1/deferred1.fsh @@ -0,0 +1,87 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + +//Computes volumetric clouds at variable resolution (default 1/4 res) +#define HQ_CLOUDS //Renders detailled clouds for viewport +#define CLOUDS_QUALITY 0.5 //[0.1 0.125 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.9 1.0] +#define TAA + +flat varying vec3 sunColor; +flat varying vec3 moonColor; +flat varying vec3 avgAmbient; +flat varying float tempOffsets; + +uniform sampler2D depthtex0; +uniform sampler2D noisetex; + +// uniform vec3 sunVec; +// uniform vec3 sunPosition; +uniform vec2 texelSize; +uniform float frameTimeCounter; +uniform float rainStrength; +uniform int frameCounter; +uniform mat4 gbufferProjectionInverse; +uniform mat4 gbufferModelViewInverse; +uniform mat4 gbufferModelView; +uniform vec3 cameraPosition; + +vec3 toScreenSpace(vec3 p) { + vec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); + vec3 p3 = p * 2. - 1.; + vec4 fragposition = iProjDiag * p3.xyzz + gbufferProjectionInverse[3]; + return fragposition.xyz / fragposition.w; +} + + +#include "lib/volumetricClouds.glsl" + + +float interleaved_gradientNoise(){ + vec2 coord = gl_FragCoord.xy; + float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)+frameCounter/1.6180339887); + return noise; +} +float interleaved_gradientNoise2(){ + vec2 coord = gl_FragCoord.xy; + float noise = 1-fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)+frameCounter/1.6180339887); + return noise; +} +float blueNoise(){ + return fract(texelFetch2D(noisetex, ivec2(1.0-gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); +} +float blueNoise2(){ + return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); +} +float R2_dither(){ + vec2 alpha = vec2(0.75487765, 0.56984026); + return fract(alpha.x * gl_FragCoord.x + alpha.y * gl_FragCoord.y + 1.0/1.6180339887 * frameCounter); +} +float R2_dither2(){ + vec2 alpha = vec2(0.75487765, 0.56984026); + return fract(alpha.x * (1.0-gl_FragCoord.x) + alpha.y * (1.0-gl_FragCoord.y) + 1.0/1.6180339887 * frameCounter); +} +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { +/* DRAWBUFFERS:0 */ + + + + #ifdef VOLUMETRIC_CLOUDS + vec2 halfResTC = vec2(floor(gl_FragCoord.xy)/CLOUDS_QUALITY+0.5); + + vec3 fragpos = toScreenSpace(vec3(halfResTC*texelSize,1.0)); + // vec4 currentClouds = renderClouds(fragpos,vec3(0.),R2_dither(),sunColor/150.,moonColor/150.,avgAmbient/150., blueNoise()); + + // gl_FragData[0] = currentClouds; + + + #else + gl_FragData[0] = vec4(0.0,0.0,0.0,1.0); + #endif + +} diff --git a/shaders/world1/deferred1.vsh b/shaders/world1/deferred1.vsh new file mode 100644 index 0000000..1afd63f --- /dev/null +++ b/shaders/world1/deferred1.vsh @@ -0,0 +1,21 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable +#define CLOUDS_QUALITY 0.5 //[0.1 0.125 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.9 1.0] + +flat varying vec3 sunColor; +flat varying vec3 moonColor; +flat varying vec3 avgAmbient; +flat varying float tempOffsets; + + +uniform sampler2D colortex4; +uniform int frameCounter; +#include "/lib/util.glsl" + +void main() { + tempOffsets = HaltonSeq2(frameCounter%10000); + gl_Position = ftransform(); + gl_Position.xy = (gl_Position.xy*0.5+0.5)*clamp(CLOUDS_QUALITY+0.01,0.0,1.0)*2.0-1.0; + avgAmbient = texelFetch2D(colortex4,ivec2(7,37),0).rgb; + +} diff --git a/shaders/world1/final.fsh b/shaders/world1/final.fsh new file mode 100644 index 0000000..2388d11 --- /dev/null +++ b/shaders/world1/final.fsh @@ -0,0 +1,100 @@ +#version 120 +//Vignetting, applies bloom, applies exposure and tonemaps the final image +#extension GL_EXT_gpu_shader4 : enable +//#define BICUBIC_UPSCALING //Provides a better interpolation when using a render quality different of 1.0, slower +#define CONTRAST_ADAPTATIVE_SHARPENING +#define SHARPENING 0.35 //[0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 ] +#define SATURATION 0.00 // Negative values desaturates colors, Positive values saturates color, 0 is no change [-1.0 -0.98 -0.96 -0.94 -0.92 -0.9 -0.88 -0.86 -0.84 -0.82 -0.8 -0.78 -0.76 -0.74 -0.72 -0.7 -0.68 -0.66 -0.64 -0.62 -0.6 -0.58 -0.56 -0.54 -0.52 -0.5 -0.48 -0.46 -0.44 -0.42 -0.4 -0.38 -0.36 -0.34 -0.32 -0.3 -0.28 -0.26 -0.24 -0.22 -0.2 -0.18 -0.16 -0.14 -0.12 -0.1 -0.08 -0.06 -0.04 -0.02 0.0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.2 0.22 0.24 0.26 0.28 0.3 0.32 0.34 0.36 0.38 0.4 0.42 0.44 0.46 0.48 0.5 0.52 0.54 0.56 0.58 0.6 0.62 0.64 0.66 0.68 0.7 0.72 0.74 0.76 0.78 0.8 0.82 0.84 0.86 0.88 0.9 0.92 0.94 0.96 0.98 1.0 ] +#define CROSSTALK 0.0 // Desaturates bright colors and preserves saturation in darker areas (inverted if negative). Helps avoiding almsost fluorescent colors [-1.0 -0.98 -0.96 -0.94 -0.92 -0.9 -0.88 -0.86 -0.84 -0.82 -0.8 -0.78 -0.76 -0.74 -0.72 -0.7 -0.68 -0.66 -0.64 -0.62 -0.6 -0.58 -0.56 -0.54 -0.52 -0.5 -0.48 -0.46 -0.44 -0.42 -0.4 -0.38 -0.36 -0.34 -0.32 -0.3 -0.28 -0.26 -0.24 -0.22 -0.2 -0.18 -0.16 -0.14 -0.12 -0.1 -0.08 -0.06 -0.04 -0.02 0.0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.2 0.22 0.24 0.26 0.28 0.3 0.32 0.34 0.36 0.38 0.4 0.42 0.44 0.46 0.48 0.5 0.52 0.54 0.56 0.58 0.6 0.62 0.64 0.66 0.68 0.7 0.72 0.74 0.76 0.78 0.8 0.82 0.84 0.86 0.88 0.9 0.92 0.94 0.96 0.98 1.0 ] +varying vec2 texcoord; + +uniform sampler2D colortex7; +uniform vec2 texelSize; +uniform float viewWidth; +uniform float viewHeight; +uniform float frameTimeCounter; +uniform int frameCounter; +uniform int isEyeInWater; +#include "lib/color_transforms.glsl" +#include "lib/color_dither.glsl" +#include "/lib/res_params.glsl" +vec4 SampleTextureCatmullRom(sampler2D tex, vec2 uv, vec2 texSize ) +{ + // We're going to sample a a 4x4 grid of texels surrounding the target UV coordinate. We'll do this by rounding + // down the sample location to get the exact center of our "starting" texel. The starting texel will be at + // location [1, 1] in the grid, where [0, 0] is the top left corner. + vec2 samplePos = uv * texSize; + vec2 texPos1 = floor(samplePos - 0.5) + 0.5; + + // Compute the fractional offset from our starting texel to our original sample location, which we'll + // feed into the Catmull-Rom spline function to get our filter weights. + vec2 f = samplePos - texPos1; + + // Compute the Catmull-Rom weights using the fractional offset that we calculated earlier. + // These equations are pre-expanded based on our knowledge of where the texels will be located, + // which lets us avoid having to evaluate a piece-wise function. + vec2 w0 = f * ( -0.5 + f * (1.0 - 0.5*f)); + vec2 w1 = 1.0 + f * f * (-2.5 + 1.5*f); + vec2 w2 = f * ( 0.5 + f * (2.0 - 1.5*f) ); + vec2 w3 = f * f * (-0.5 + 0.5 * f); + + // Work out weighting factors and sampling offsets that will let us use bilinear filtering to + // simultaneously evaluate the middle 2 samples from the 4x4 grid. + vec2 w12 = w1 + w2; + vec2 offset12 = w2 / (w1 + w2); + + // Compute the final UV coordinates we'll use for sampling the texture + vec2 texPos0 = texPos1 - vec2(1.0); + vec2 texPos3 = texPos1 + vec2(2.0); + vec2 texPos12 = texPos1 + offset12; + + texPos0 *= texelSize; + texPos3 *= texelSize; + texPos12 *= texelSize; + + vec4 result = vec4(0.0); + result += texture2D(tex, vec2(texPos0.x, texPos0.y)) * w0.x * w0.y; + result += texture2D(tex, vec2(texPos12.x, texPos0.y)) * w12.x * w0.y; + result += texture2D(tex, vec2(texPos3.x, texPos0.y)) * w3.x * w0.y; + + result += texture2D(tex, vec2(texPos0.x, texPos12.y)) * w0.x * w12.y; + result += texture2D(tex, vec2(texPos12.x, texPos12.y)) * w12.x * w12.y; + result += texture2D(tex, vec2(texPos3.x, texPos12.y)) * w3.x * w12.y; + + result += texture2D(tex, vec2(texPos0.x, texPos3.y)) * w0.x * w3.y; + result += texture2D(tex, vec2(texPos12.x, texPos3.y)) * w12.x * w3.y; + result += texture2D(tex, vec2(texPos3.x, texPos3.y)) * w3.x * w3.y; + + return result; +} + +void main() { + #ifdef BICUBIC_UPSCALING + vec3 col = SampleTextureCatmullRom(colortex7,texcoord,1.0/texelSize).rgb; + #else + vec3 col = texture2D(colortex7,texcoord).rgb; + #endif + + #ifdef CONTRAST_ADAPTATIVE_SHARPENING + //Weights : 1 in the center, 0.5 middle, 0.25 corners + vec3 albedoCurrent1 = texture2D(colortex7, texcoord + vec2(texelSize.x,texelSize.y)/MC_RENDER_QUALITY*0.5).rgb; + vec3 albedoCurrent2 = texture2D(colortex7, texcoord + vec2(texelSize.x,-texelSize.y)/MC_RENDER_QUALITY*0.5).rgb; + vec3 albedoCurrent3 = texture2D(colortex7, texcoord + vec2(-texelSize.x,-texelSize.y)/MC_RENDER_QUALITY*0.5).rgb; + vec3 albedoCurrent4 = texture2D(colortex7, texcoord + vec2(-texelSize.x,texelSize.y)/MC_RENDER_QUALITY*0.5).rgb; + + + vec3 m1 = -0.5/3.5*col + albedoCurrent1/3.5 + albedoCurrent2/3.5 + albedoCurrent3/3.5 + albedoCurrent4/3.5; + vec3 std = abs(col - m1) + abs(albedoCurrent1 - m1) + abs(albedoCurrent2 - m1) + + abs(albedoCurrent3 - m1) + abs(albedoCurrent3 - m1) + abs(albedoCurrent4 - m1); + float contrast = 1.0 - luma(std)/5.0; + col = col*(1.0+(SHARPENING+UPSCALING_SHARPNENING)*contrast) + - (SHARPENING+UPSCALING_SHARPNENING)/(1.0-0.5/3.5)*contrast*(m1 - 0.5/3.5*col); + #endif + + float lum = luma(col); + vec3 diff = col-lum; + col = col + diff*(-lum*CROSSTALK + SATURATION); + //col = -vec3(-lum*CROSSFADING + SATURATION); + gl_FragColor.rgb = clamp(int8Dither(col,texcoord),0.0,1.0); + //gl_FragColor.rgb = vec3(contrast); +} diff --git a/shaders/world1/final.vsh b/shaders/world1/final.vsh new file mode 100644 index 0000000..7aeb51b --- /dev/null +++ b/shaders/world1/final.vsh @@ -0,0 +1,23 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + +#define FinalR 1.0 //[0.0 0.025315 0.051271 0.077884 0.105170 0.133148 0.161834 0.191246 0.221402 0.252322 0.284025 0.316530 0.349858 0.384030 0.419067 0.454991 0.491824 0.529590 0.568312 0.608014 0.648721 0.690458 0.733253 0.777130 0.822118 0.868245 0.915540 0.964032 1.013752 1.064731 1.117000 1.170592 1.225540 1.281880 1.339646 1.398875 1.459603 1.521868 1.585709 1.651167 1.718281 1.787095 1.857651 1.929992 2.004166 2.080216 2.158192 2.238142 2.320116 2.404166 2.490342 2.578701 2.669296 2.762185 2.857425 2.955076 3.055199 3.157857 3.263114 3.371035 3.481689 3.595143 3.711470 3.830741 3.953032 4.078419 4.206979 4.338795 4.473947 4.612521 4.754602 4.900281 5.049647 5.202795 5.359819 5.520819 5.685894 5.855148 6.028687 6.206619 6.389056 6.576110 6.767901 6.964546 7.166169 7.372897 7.584858 7.802185 8.025013 8.253482 8.487735 8.727919 8.974182 9.226680 9.485569 9.751013 10.02317 10.30222 10.58834 10.88170 11.18249 ] +#define FinalG 1.0 //[0.0 0.025315 0.051271 0.077884 0.105170 0.133148 0.161834 0.191246 0.221402 0.252322 0.284025 0.316530 0.349858 0.384030 0.419067 0.454991 0.491824 0.529590 0.568312 0.608014 0.648721 0.690458 0.733253 0.777130 0.822118 0.868245 0.915540 0.964032 1.013752 1.064731 1.117000 1.170592 1.225540 1.281880 1.339646 1.398875 1.459603 1.521868 1.585709 1.651167 1.718281 1.787095 1.857651 1.929992 2.004166 2.080216 2.158192 2.238142 2.320116 2.404166 2.490342 2.578701 2.669296 2.762185 2.857425 2.955076 3.055199 3.157857 3.263114 3.371035 3.481689 3.595143 3.711470 3.830741 3.953032 4.078419 4.206979 4.338795 4.473947 4.612521 4.754602 4.900281 5.049647 5.202795 5.359819 5.520819 5.685894 5.855148 6.028687 6.206619 6.389056 6.576110 6.767901 6.964546 7.166169 7.372897 7.584858 7.802185 8.025013 8.253482 8.487735 8.727919 8.974182 9.226680 9.485569 9.751013 10.02317 10.30222 10.58834 10.88170 11.18249 ] +#define FinalB 1.0 //[0.0 0.025315 0.051271 0.077884 0.105170 0.133148 0.161834 0.191246 0.221402 0.252322 0.284025 0.316530 0.349858 0.384030 0.419067 0.454991 0.491824 0.529590 0.568312 0.608014 0.648721 0.690458 0.733253 0.777130 0.822118 0.868245 0.915540 0.964032 1.013752 1.064731 1.117000 1.170592 1.225540 1.281880 1.339646 1.398875 1.459603 1.521868 1.585709 1.651167 1.718281 1.787095 1.857651 1.929992 2.004166 2.080216 2.158192 2.238142 2.320116 2.404166 2.490342 2.578701 2.669296 2.762185 2.857425 2.955076 3.055199 3.157857 3.263114 3.371035 3.481689 3.595143 3.711470 3.830741 3.953032 4.078419 4.206979 4.338795 4.473947 4.612521 4.754602 4.900281 5.049647 5.202795 5.359819 5.520819 5.685894 5.855148 6.028687 6.206619 6.389056 6.576110 6.767901 6.964546 7.166169 7.372897 7.584858 7.802185 8.025013 8.253482 8.487735 8.727919 8.974182 9.226680 9.485569 9.751013 10.02317 10.30222 10.58834 10.88170 11.18249 ] + +varying vec2 texcoord; +flat varying vec4 exposure; +uniform sampler2D colortex4; + +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + + gl_Position = ftransform(); + texcoord = gl_MultiTexCoord0.xy; + exposure=vec4(texelFetch2D(colortex4,ivec2(10,37),0).r*vec3(FinalR,FinalG,FinalB),texelFetch2D(colortex4,ivec2(10,37),0).r); +} diff --git a/shaders/world1/gbuffers_all_solid.fsh b/shaders/world1/gbuffers_all_solid.fsh new file mode 100644 index 0000000..76e3e6c --- /dev/null +++ b/shaders/world1/gbuffers_all_solid.fsh @@ -0,0 +1,411 @@ +#extension GL_EXT_gpu_shader4 : enable +#extension GL_ARB_shader_texture_lod : enable +//#define Specular_Reflections // reflections on blocks. REQUIRES A PBR RESOURCEPACK. +//#define POM +#define POM_MAP_RES 128.0 // [16.0 32.0 64.0 128.0 256.0 512.0 1024.0] Increase to improve POM quality +#define POM_DEPTH 0.1 // [0.025 0.05 0.075 0.1 0.125 0.15 0.20 0.25 0.30 0.50 0.75 1.0] //Increase to increase POM strength +#define MAX_ITERATIONS 50 // [5 10 15 20 25 30 40 50 60 70 80 90 100 125 150 200 400] //Improves quality at grazing angles (reduces performance) +#define MAX_DIST 25.0 // [5.0 10.0 15.0 20.0 25.0 30.0 40.0 50.0 60.0 70.0 80.0 90.0 100.0 125.0 150.0 200.0 400.0] //Increases distance at which POM is calculated +//#define USE_LUMINANCE_AS_HEIGHTMAP //Can generate POM on any texturepack (may look weird in some cases) +#define Texture_MipMap_Bias -1.00 // Uses a another mip level for textures. When reduced will increase texture detail but may induce a lot of shimmering. [-5.00 -4.75 -4.50 -4.25 -4.00 -3.75 -3.50 -3.25 -3.00 -2.75 -2.50 -2.25 -2.00 -1.75 -1.50 -1.25 -1.00 -0.75 -0.50 -0.25 0.00 0.25 0.50 0.75 1.00 1.25 1.50 1.75 2.00 2.25 2.50 2.75 3.00 3.25 3.50 3.75 4.00 4.25 4.50 4.75 5.00] +#define DISABLE_ALPHA_MIPMAPS //Disables mipmaps on the transparency of alpha-tested things like foliage, may cost a few fps in some cases + + +#define SSAO // screen-space ambient occlusion. +#define texture_ao // ambient occlusion on the texture + +#define Puddle_Size 1.0 // [0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5] +#ifdef Specular_Reflections + #define Puddles // yes +#else + // #define Puddles // yes +#endif +// #define Porosity + +#ifndef USE_LUMINANCE_AS_HEIGHTMAP +#ifndef MC_NORMAL_MAP +#undef POM +#endif +#endif + +#ifdef POM +#define MC_NORMAL_MAP +#endif + +const float mincoord = 1.0/4096.0; +const float maxcoord = 1.0-mincoord; +const vec3 intervalMult = vec3(1.0, 1.0, 1.0/POM_DEPTH)/POM_MAP_RES * 1.0; + +const float MAX_OCCLUSION_DISTANCE = MAX_DIST; +const float MIX_OCCLUSION_DISTANCE = MAX_DIST*0.9; +const int MAX_OCCLUSION_POINTS = MAX_ITERATIONS; + +uniform vec2 texelSize; +uniform int framemod8; + +#ifdef POM +varying vec4 vtexcoordam; // .st for add, .pq for mul +varying vec4 vtexcoord; + +#endif +#include "/lib/res_params.glsl" +varying vec4 lmtexcoord; +varying vec4 color; +uniform float far; +varying vec4 normalMat; +#ifdef MC_NORMAL_MAP +varying vec4 tangent; +uniform float wetness; +uniform sampler2D normals; +uniform sampler2D specular; +#endif + +#ifdef POM + vec2 dcdx = dFdx(vtexcoord.st*vtexcoordam.pq)*exp2(Texture_MipMap_Bias); + vec2 dcdy = dFdy(vtexcoord.st*vtexcoordam.pq)*exp2(Texture_MipMap_Bias); +#endif + +flat varying int lightningBolt; +uniform sampler2D texture; +uniform sampler2D colortex1;//albedo(rgb),material(alpha) RGBA16 +uniform float frameTimeCounter; +uniform int frameCounter; +uniform mat4 gbufferProjectionInverse; +uniform mat4 gbufferModelView; +uniform mat4 gbufferProjection; +uniform mat4 gbufferModelViewInverse; +uniform vec3 cameraPosition; +uniform float rainStrength; +uniform sampler2D noisetex;//depth +uniform sampler2D depthtex0; +in vec3 test_motionVectors; + +varying vec4 materialMask; + +flat varying vec4 TESTMASK; + +// float interleaved_gradientNoise(){ +// return fract(52.9829189*fract(0.06711056*gl_FragCoord.x + 0.00583715*gl_FragCoord.y)+frameTimeCounter*51.9521); +// } +float interleaved_gradientNoise(){ + vec2 alpha = vec2(0.75487765, 0.56984026); + vec2 coord = vec2(alpha.x * gl_FragCoord.x,alpha.y * gl_FragCoord.y)+ 1.0/1.6180339887 * frameCounter; + float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)); + return noise; +} + +float blueNoise(){ + return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); +} +float R2_dither(){ + vec2 alpha = vec2(0.75487765, 0.56984026); + return fract(alpha.x * gl_FragCoord.x + alpha.y * gl_FragCoord.y + 1.0/1.6180339887 * frameCounter) ; +} +vec2 decodeVec2(float a){ + const vec2 constant1 = 65535. / vec2( 256., 65536.); + const float constant2 = 256. / 255.; + return fract( a * constant1 ) * constant2 ; +} +mat3 inverse(mat3 m) { + float a00 = m[0][0], a01 = m[0][1], a02 = m[0][2]; + float a10 = m[1][0], a11 = m[1][1], a12 = m[1][2]; + float a20 = m[2][0], a21 = m[2][1], a22 = m[2][2]; + + float b01 = a22 * a11 - a12 * a21; + float b11 = -a22 * a10 + a12 * a20; + float b21 = a21 * a10 - a11 * a20; + + float det = a00 * b01 + a01 * b11 + a02 * b21; + + return mat3(b01, (-a22 * a01 + a02 * a21), (a12 * a01 - a02 * a11), + b11, (a22 * a00 - a02 * a20), (-a12 * a00 + a02 * a10), + b21, (-a21 * a00 + a01 * a20), (a11 * a00 - a01 * a10)) / det; +} + +vec3 viewToWorld(vec3 viewPosition) { + vec4 pos; + pos.xyz = viewPosition; + pos.w = 0.0; + pos = gbufferModelViewInverse * pos; + return pos.xyz; +} +vec3 worldToView(vec3 worldPos) { + vec4 pos = vec4(worldPos, 0.0); + pos = gbufferModelView * pos; + return pos.xyz; +} +vec4 encode (vec3 n, vec2 lightmaps){ + n.xy = n.xy / dot(abs(n), vec3(1.0)); + n.xy = n.z <= 0.0 ? (1.0 - abs(n.yx)) * sign(n.xy) : n.xy; + vec2 encn = clamp(n.xy * 0.5 + 0.5,-1.0,1.0); + + return vec4(encn,vec2(lightmaps.x,lightmaps.y)); +} + + +#ifdef MC_NORMAL_MAP + // vec3 applyBump(mat3 tbnMatrix, vec3 bump){ + // float bumpmult = 1.0; + // bump = bump * vec3(bumpmult, bumpmult, bumpmult) + vec3(0.0f, 0.0f, 1.0f - bumpmult); + // return normalize(bump*tbnMatrix); + // } + vec3 applyBump(mat3 tbnMatrix, vec3 bump, float puddle_values){ + float bumpmult = clamp(puddle_values,0.0,1.0); + bump = bump * vec3(bumpmult, bumpmult, bumpmult) + vec3(0.0f, 0.0f, 1.0f - bumpmult); + return normalize(bump*tbnMatrix); + } +#endif + +//encoding by jodie +float encodeVec2(vec2 a){ + const vec2 constant1 = vec2( 1., 256.) / 65535.; + vec2 temp = floor( a * 255. ); + return temp.x*constant1.x+temp.y*constant1.y; +} +float encodeVec2(float x,float y){ + return encodeVec2(vec2(x,y)); +} + +#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) +#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) + +vec3 toScreenSpace(vec3 p) { + vec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); + vec3 p3 = p * 2. - 1.; + vec4 fragposition = iProjDiag * p3.xyzz + gbufferProjectionInverse[3]; + return fragposition.xyz / fragposition.w; +} +vec3 toClipSpace3(vec3 viewSpacePosition) { + return projMAD(gbufferProjection, viewSpacePosition) / -viewSpacePosition.z * 0.5 + 0.5; +} +#ifdef POM +vec4 readNormal(in vec2 coord) +{ + return texture2DGradARB(normals,fract(coord)*vtexcoordam.pq+vtexcoordam.st,dcdx,dcdy); +} +vec4 readTexture(in vec2 coord) +{ + return texture2DGradARB(texture,fract(coord)*vtexcoordam.pq+vtexcoordam.st,dcdx,dcdy); +} +#endif +float luma(vec3 color) { + return dot(color,vec3(0.21, 0.72, 0.07)); +} + + +vec3 toLinear(vec3 sRGB){ + return sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878); +} + + +const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); + + + + +// float getPuddleCoverage(vec3 samplePos){ +// float puddle = texture2D(noisetex, samplePos.xz/25000).b ; + +// return max(puddle,0.0); +// } + +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +/* RENDERTARGETS: 1,7,8,13 */ +void main() { + + #ifdef BLOCK_ENT + gl_FragData[3] = TESTMASK; + #endif + + float phi = 2 * 3.14159265359; + float noise = fract(fract(frameCounter * (1.0 / phi)) + interleaved_gradientNoise() ) ; + + vec3 normal = normalMat.xyz; + + #ifdef MC_NORMAL_MAP + vec3 tangent2 = normalize(cross(tangent.rgb,normal)*tangent.w); + mat3 tbnMatrix = mat3(tangent.x, tangent2.x, normal.x, + tangent.y, tangent2.y, normal.y, + tangent.z, tangent2.z, normal.z); + #endif + vec2 tempOffset=offsets[framemod8]; + + vec3 fragpos = toScreenSpace(gl_FragCoord.xyz*vec3(texelSize/RENDER_SCALE,1.0)-vec3(vec2(tempOffset)*texelSize*0.5,0.0)); + + + + vec3 worldpos = mat3(gbufferModelViewInverse) * fragpos + gbufferModelViewInverse[3].xyz + cameraPosition; + float lightmap = clamp( (lmtexcoord.w-0.66) * 5.0,0.,1.); + + float rainfall = 0. ; + float Puddle_shape = 0.; + float puddle_shiny = 1.; + float puddle_normal = 0.; + + #ifndef ENTITIES + #ifdef WORLD + #ifdef Puddles + rainfall = rainStrength ; + Puddle_shape = 1.0 - max(texture2D(noisetex, worldpos.xz * (0.015 * Puddle_Size)).b - (1.0-lightmap) ,0.0); + puddle_shiny = clamp( pow(1.0-Puddle_shape,2.0)*2,0.5,1.) ; + puddle_normal = clamp( pow(Puddle_shape,5.0) * 50. ,0.,1.) ; + #endif + #endif + #endif + + #ifdef POM + // vec2 tempOffset=offsets[framemod8]; + vec2 adjustedTexCoord = fract(vtexcoord.st)*vtexcoordam.pq+vtexcoordam.st; + // vec3 fragpos = toScreenSpace(gl_FragCoord.xyz*vec3(texelSize/RENDER_SCALE,1.0)-vec3(vec2(tempOffset)*texelSize*0.5,0.0)); + vec3 viewVector = normalize(tbnMatrix*fragpos); + float dist = length(fragpos); + + gl_FragDepth = gl_FragCoord.z; + + #ifdef WORLD + if (dist < MAX_OCCLUSION_DISTANCE) { + + if ( viewVector.z < 0.0 && readNormal(vtexcoord.st).a < 0.9999 && readNormal(vtexcoord.st).a > 0.00001) { + + vec3 interval = viewVector.xyz /-viewVector.z/MAX_OCCLUSION_POINTS*POM_DEPTH; + vec3 coord = vec3(vtexcoord.st, 1.0); + coord += noise*interval; + float sumVec = noise; + for (int loopCount = 0; (loopCount < MAX_OCCLUSION_POINTS) && (1.0 - POM_DEPTH + POM_DEPTH*readNormal(coord.st).a < coord.p) && coord.p >= 0.0; ++loopCount) { coord = coord+interval; sumVec += 1.0; } + + if (coord.t < mincoord) { + if (readTexture(vec2(coord.s,mincoord)).a == 0.0) { + coord.t = mincoord; + discard; + } + } + adjustedTexCoord = mix(fract(coord.st)*vtexcoordam.pq+vtexcoordam.st, adjustedTexCoord, max(dist-MIX_OCCLUSION_DISTANCE,0.0)/(MAX_OCCLUSION_DISTANCE-MIX_OCCLUSION_DISTANCE)); + + vec3 truePos = fragpos + sumVec*inverse(tbnMatrix)*interval; + // #ifdef Depth_Write_POM + gl_FragDepth = toClipSpace3(truePos).z; + // #endif + } + } + #endif + + // color + vec4 data0 = texture2DGradARB(texture, adjustedTexCoord.xy,dcdx,dcdy); + + #ifdef DISABLE_ALPHA_MIPMAPS + data0.a = texture2DGradARB(texture, adjustedTexCoord.xy,vec2(0.),vec2(0.0)).a; + #endif + + data0.rgb *= color.rgb; + float avgBlockLum = luma(texture2DLod(texture, lmtexcoord.xy,128).rgb*color.rgb); + data0.rgb = clamp(data0.rgb*pow(avgBlockLum,-0.33)*0.85,0.0,1.0); + + + #ifdef WORLD + if (data0.a > 0.1) data0.a = normalMat.a; + else data0.a = 0.0; + #endif + + #ifdef HAND + if (data0.a > 0.1) data0.a = 0.75; + else data0.a = 0.0; + #endif + + // normal + #ifdef MC_NORMAL_MAP + vec3 normalTex = texture2DGradARB(normals, adjustedTexCoord.xy, dcdx,dcdy).rgb; + normalTex.xy = normalTex.xy*2.0-1.0; + normalTex.z = clamp(sqrt(1.0 - dot(normalTex.xy, normalTex.xy)),0.0,1.0); + normal = applyBump(tbnMatrix,normalTex, mix(1.0,puddle_normal,rainfall)); + #endif + + // specular + gl_FragData[2] = texture2DGradARB(specular, adjustedTexCoord.xy,dcdx,dcdy); + + // finalize + vec4 data1 = clamp(encode(viewToWorld(normal), lmtexcoord.zw),0.,1.0); + gl_FragData[0] = vec4(encodeVec2(data0.x,data1.x),encodeVec2(data0.y,data1.y),encodeVec2(data0.z,data1.z),encodeVec2(data1.w,data0.w)); + + gl_FragData[1].a = 0.0; + + #else + // specular + vec4 specular = texture2D(specular, lmtexcoord.xy, Texture_MipMap_Bias).rgba; + vec4 specular_modded = vec4( max(specular.r,puddle_shiny), max(specular.g, puddle_shiny*0.1),specular.ba); + gl_FragData[2].rgba = mix(specular, specular_modded, rainfall); + + float porosity = specular.z >= 64.5/255.0 ? 0.0 : (specular.z*255.0/64.0)*0.65; + #ifndef Porosity + porosity = 0.4; + #endif + // normal + #ifdef MC_NORMAL_MAP + vec4 normalTex = texture2D(normals, lmtexcoord.xy, Texture_MipMap_Bias).rgba; + normalTex.xy = normalTex.xy*2.0-1.0; + normalTex.z = clamp(sqrt(1.0 - dot(normalTex.xy, normalTex.xy)),0.0,1.0) ; + normal = applyBump(tbnMatrix, normalTex.xyz, mix(1.0,puddle_normal, rainfall) ); + #endif + + // color + vec4 data0 = texture2D(texture, lmtexcoord.xy, Texture_MipMap_Bias) ; + + data0.rgb *= mix(color.rgb, vec3(0.0), max((puddle_shiny*porosity)*0.5,0) * rainfall ); + + + + float avgBlockLum = luma(texture2DLod(texture, lmtexcoord.xy,128).rgb*color.rgb); + data0.rgb = clamp(data0.rgb*pow(avgBlockLum,-0.33)*0.85,0.0,1.0); + + #ifndef ENTITIES + if(TESTMASK.r==255) data0.rgb = vec3(0); + #endif + + #ifdef DISABLE_ALPHA_MIPMAPS + data0.a = texture2DLod(texture,lmtexcoord.xy,0).a; + #endif + #ifdef WORLD + if (data0.a > 0.1) data0.a = normalMat.a; + else data0.a = 0.0; + + #endif + #ifdef HAND + if (data0.a > 0.1) data0.a = 0.75; + else data0.a = 0.0; + #endif + + // finalize + vec4 data1 = clamp(blueNoise()/255.0 + encode(viewToWorld(normal), lmtexcoord.zw),0.0,1.0); + gl_FragData[0] = vec4(encodeVec2(data0.x,data1.x), encodeVec2(data0.y,data1.y), encodeVec2(data0.z,data1.z), encodeVec2(data1.w,data0.w)); + + #ifdef WORLD + gl_FragData[1].a = 0.0; + #endif + + #endif + + + + #ifdef ENTITIES + #ifdef WORLD + gl_FragData[3].xyz = test_motionVectors; + #endif + #endif + // float z = texture2D(depthtex0,texcoord).x; + // vec3 fragpos = toScreenSpace(vec3(texcoord,z)); + // gl_FragData[0].rgb *= vec3(1- clamp( pow( length(fragpos)/far, 1), 0, 1)) ; + + + +} \ No newline at end of file diff --git a/shaders/world1/gbuffers_all_solid.vsh b/shaders/world1/gbuffers_all_solid.vsh new file mode 100644 index 0000000..1c0032e --- /dev/null +++ b/shaders/world1/gbuffers_all_solid.vsh @@ -0,0 +1,213 @@ +#extension GL_EXT_gpu_shader4 : enable +#include "/lib/res_params.glsl" +#define WAVY_PLANTS +#define WAVY_STRENGTH 1.0 //[0.1 0.25 0.5 0.75 1.0 1.25 1.5 1.75 2.0] +#define WAVY_SPEED 1.0 //[0.001 0.01 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 1.0 1.25 1.5 2.0 3.0 4.0] +#define SEPARATE_AO +//#define POM +//#define USE_LUMINANCE_AS_HEIGHTMAP //Can generate POM on any texturepack (may look weird in some cases) +// #define RTAO // I recommend turning ambientOcclusionLevel to zero with this on. like ssao, but rt, nicer, noiser, and slower. SSAO will turn OFF when this is ON +#define indirect_effect 1 // Choose what effect is applied to indirect light. [0 1 2 3] + +#define Variable_Penumbra_Shadows //Makes the shadows more blurry the more distant they are to objects (costs fps) +#define mob_SSS + +#ifndef USE_LUMINANCE_AS_HEIGHTMAP +#ifndef MC_NORMAL_MAP +#undef POM +#endif +#endif + +#ifdef POM +#define MC_NORMAL_MAP +#endif + +/* +!! DO NOT REMOVE !! +This code is from Chocapic13' shaders +Read the terms of modification and sharing before changing something below please ! +!! DO NOT REMOVE !! +*/ + +varying vec4 lmtexcoord; +varying vec4 color; +varying vec4 normalMat; +#ifdef POM +varying vec4 vtexcoordam; // .st for add, .pq for mul +varying vec4 vtexcoord; +#endif + +#ifdef MC_NORMAL_MAP + varying vec4 tangent; + attribute vec4 at_tangent; +#endif + +out vec3 test_motionVectors; +in vec3 at_velocity; + +uniform float frameTimeCounter; +const float PI48 = 150.796447372*WAVY_SPEED; +float pi2wt = PI48*frameTimeCounter; +attribute vec4 mc_Entity; +uniform int blockEntityId; +uniform int entityId; +varying vec4 materialMask; +flat varying vec4 TESTMASK; +flat varying int lightningBolt; + +uniform mat4 gbufferModelView; +uniform mat4 gbufferModelViewInverse; +attribute vec4 mc_midTexCoord; +uniform vec3 cameraPosition; +uniform vec2 texelSize; +uniform int framemod8; +const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); +#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) +#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) +vec4 toClipSpace3(vec3 viewSpacePosition) { + return vec4(projMAD(gl_ProjectionMatrix, viewSpacePosition),-viewSpacePosition.z); +} + +vec2 calcWave(in vec3 pos) { + + float magnitude = abs(sin(dot(vec4(frameTimeCounter, pos),vec4(1.0,0.005,0.005,0.005)))*0.5+0.72)*0.013; + vec2 ret = (sin(pi2wt*vec2(0.0063,0.0015)*4. - pos.xz + pos.y*0.05)+0.1)*magnitude; + + return ret; +} + +vec3 calcMovePlants(in vec3 pos) { + vec2 move1 = calcWave(pos ); + float move1y = -length(move1); + return vec3(move1.x,move1y,move1.y)*5.*WAVY_STRENGTH; +} + +vec3 calcWaveLeaves(in vec3 pos, in float fm, in float mm, in float ma, in float f0, in float f1, in float f2, in float f3, in float f4, in float f5) { + + float magnitude = abs(sin(dot(vec4(frameTimeCounter, pos),vec4(1.0,0.005,0.005,0.005)))*0.5+0.72)*0.013; + vec3 ret = (sin(pi2wt*vec3(0.0063,0.0224,0.0015)*1.5 - pos))*magnitude; + + return ret; +} + +vec3 calcMoveLeaves(in vec3 pos, in float f0, in float f1, in float f2, in float f3, in float f4, in float f5, in vec3 amp1, in vec3 amp2) { + vec3 move1 = calcWaveLeaves(pos , 0.0054, 0.0400, 0.0400, 0.0127, 0.0089, 0.0114, 0.0063, 0.0224, 0.0015) * amp1; + return move1*5.*WAVY_STRENGTH; +} +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + lmtexcoord.xy = (gl_MultiTexCoord0).xy; + + TESTMASK = vec4(normalize(gl_NormalMatrix * gl_Normal), 1.0); + + TESTMASK.r = blockEntityId == 222 ? 255 : TESTMASK.r; + + + #ifdef ENTITIES + test_motionVectors = at_velocity; + #endif + + #ifdef POM + vec2 midcoord = (gl_TextureMatrix[0] * mc_midTexCoord).st; + vec2 texcoordminusmid = lmtexcoord.xy-midcoord; + vtexcoordam.pq = abs(texcoordminusmid)*2; + vtexcoordam.st = min(lmtexcoord.xy,midcoord-texcoordminusmid); + vtexcoord.xy = sign(texcoordminusmid)*0.5+0.5; + #endif + + vec2 lmcoord = gl_MultiTexCoord1.xy/255.; + lmtexcoord.zw = lmcoord; + vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz; + color = gl_Color; + bool istopv = gl_MultiTexCoord0.t < mc_midTexCoord.t; + + #ifdef MC_NORMAL_MAP + tangent = vec4(normalize(gl_NormalMatrix *at_tangent.rgb),at_tangent.w); + #endif + + normalMat = vec4(normalize(gl_NormalMatrix *gl_Normal), 1.0); + +#ifdef ENTITIES + + #ifdef mob_SSS + #ifdef Variable_Penumbra_Shadows + normalMat.a = entityId == 1100 ? 1.0 : normalMat.a; + normalMat.a = entityId == 1200 ? 1.0 : normalMat.a; + normalMat.a = entityId == 1400 ? 1.0 : normalMat.a; + #endif + #endif + + + gl_Position = ftransform(); + +#endif + + + +#ifdef WORLD + + + normalMat = vec4(normalize(gl_NormalMatrix *gl_Normal),mc_Entity.x == 10004 || mc_Entity.x == 10003 ? 0.5 : mc_Entity.x == 10001 ? 0.6 : 1.0); + normalMat.a = mc_Entity.x == 10006 ? 0.6 : normalMat.a; + normalMat.a = mc_Entity.x == 10007 ? 0.55 : normalMat.a; + + normalMat.a = mc_Entity.x == 10005 ? 0.8 : normalMat.a; + normalMat.a = mc_Entity.x == 99 ? 0.65 : normalMat.a; + + + #ifdef WAVY_PLANTS + if ((mc_Entity.x == 10001 && istopv) && abs(position.z) < 64.0) { + vec3 worldpos = mat3(gbufferModelViewInverse) * position + gbufferModelViewInverse[3].xyz + cameraPosition; + worldpos.xyz += calcMovePlants(worldpos.xyz)*lmtexcoord.w - cameraPosition; + position = mat3(gbufferModelView) * worldpos + gbufferModelView[3].xyz; + } + + if (mc_Entity.x == 10003 && abs(position.z) < 64.0) { + vec3 worldpos = mat3(gbufferModelViewInverse) * position + gbufferModelViewInverse[3].xyz + cameraPosition; + worldpos.xyz += calcMoveLeaves(worldpos.xyz, 0.0040, 0.0064, 0.0043, 0.0035, 0.0037, 0.0041, vec3(1.0,0.2,1.0), vec3(0.5,0.1,0.5))*lmtexcoord.w - cameraPosition; + position = mat3(gbufferModelView) * worldpos + gbufferModelView[3].xyz; + } + #endif + + if (mc_Entity.x == 100 ){ + color.rgb = normalize(color.rgb)*sqrt(3.0); + normalMat.a = 0.9; + } + + gl_Position = toClipSpace3(position); + + if (color.a < 0.3) color.a = 1.0; + + #ifdef SEPARATE_AO + + #if indirect_effect == 1 || indirect_effect == 0 + lmtexcoord.z *= sqrt(color.a); + lmtexcoord.w *= color.a; + #endif + + #else + color.rgb *= color.a; + #endif + +#endif + + + #ifdef TAA_UPSCALING + gl_Position.xy = gl_Position.xy * RENDER_SCALE + RENDER_SCALE * gl_Position.w - gl_Position.w; + #endif + #ifdef TAA + gl_Position.xy += offsets[framemod8] * gl_Position.w * texelSize; + #endif +} diff --git a/shaders/world1/gbuffers_all_translucent.fsh b/shaders/world1/gbuffers_all_translucent.fsh new file mode 100644 index 0000000..d89e204 --- /dev/null +++ b/shaders/world1/gbuffers_all_translucent.fsh @@ -0,0 +1,624 @@ +// #version 120 +#extension GL_EXT_gpu_shader4 : enable + +varying vec4 lmtexcoord; +varying vec4 color; +varying vec4 normalMat; +varying vec3 binormal; +uniform sampler2D normals; +varying vec3 tangent; +varying vec4 tangent_other; +varying vec3 viewVector; +varying float dist; +#include "/lib/res_params.glsl" + +#define CLOUDS_SHADOWS +#define VL_CLOUDS_SHADOWS // Casts shadows from clouds on VL (slow) +#define SCREENSPACE_REFLECTIONS //can be really expensive at high resolutions/render quality, especially on ice +#define SSR_STEPS 30 //[10 15 20 25 30 35 40 50 100 200 400] +#define SUN_MICROFACET_SPECULAR // If enabled will use realistic rough microfacet model, else will just reflect the sun. No performance impact. +#define USE_QUARTER_RES_DEPTH // Uses a quarter resolution depth buffer to raymarch screen space reflections, improves performance but may introduce artifacts +#define saturate(x) clamp(x,0.0,1.0) +#define Dirt_Amount 0.14 //How much dirt there is in water [0.0 0.04 0.08 0.12 0.16 0.2 0.24 0.28 0.32 0.36 0.4 0.44 0.48 0.52 0.56 0.6 0.64 0.68 0.72 0.76 0.8 0.84 0.88 0.92 0.96 1.0 1.04 1.08 1.12 1.16 1.2 1.24 1.28 1.32 1.36 1.4 1.44 1.48 1.52 1.56 1.6 1.64 1.68 1.72 1.76 1.8 1.84 1.88 1.92 1.96 2.0 ] + +#define Dirt_Scatter_R 0.6 //How much dirt diffuses red [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 ] +#define Dirt_Scatter_G 0.6 //How much dirt diffuses green [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 ] +#define Dirt_Scatter_B 0.6 //How much dirt diffuses blue [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 ] + +#define Dirt_Absorb_R 1.65 //How much dirt absorbs red [0.0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.2 0.22 0.24 0.26 0.28 0.3 0.32 0.34 0.36 0.38 0.4 0.42 0.44 0.46 0.48 0.5 0.52 0.54 0.56 0.58 0.6 0.62 0.64 0.66 0.68 0.7 0.72 0.74 0.76 0.78 0.8 0.82 0.84 0.86 0.88 0.9 0.92 0.94 0.96 0.98 1.0 1.02 1.04 1.06 1.08 1.1 1.12 1.14 1.16 1.18 1.2 1.22 1.24 1.26 1.28 1.3 1.32 1.34 1.36 1.38 1.4 1.42 1.44 1.46 1.48 1.5 1.52 1.54 1.56 1.58 1.6 1.62 1.64 1.66 1.68 1.7 1.72 1.74 1.76 1.78 1.8 1.82 1.84 1.86 1.88 1.9 1.92 1.94 1.96 1.98 2.0 ] +#define Dirt_Absorb_G 1.85 //How much dirt absorbs green [0.0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.2 0.22 0.24 0.26 0.28 0.3 0.32 0.34 0.36 0.38 0.4 0.42 0.44 0.46 0.48 0.5 0.52 0.54 0.56 0.58 0.6 0.62 0.64 0.66 0.68 0.7 0.72 0.74 0.76 0.78 0.8 0.82 0.84 0.86 0.88 0.9 0.92 0.94 0.96 0.98 1.0 1.02 1.04 1.06 1.08 1.1 1.12 1.14 1.16 1.18 1.2 1.22 1.24 1.26 1.28 1.3 1.32 1.34 1.36 1.38 1.4 1.42 1.44 1.46 1.48 1.5 1.52 1.54 1.56 1.58 1.6 1.62 1.64 1.66 1.68 1.7 1.72 1.74 1.76 1.78 1.8 1.82 1.84 1.86 1.88 1.9 1.92 1.94 1.96 1.98 2.0 ] +#define Dirt_Absorb_B 2.05 //How much dirt absorbs blue [0.0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.2 0.22 0.24 0.26 0.28 0.3 0.32 0.34 0.36 0.38 0.4 0.42 0.44 0.46 0.48 0.5 0.52 0.54 0.56 0.58 0.6 0.62 0.64 0.66 0.68 0.7 0.72 0.74 0.76 0.78 0.8 0.82 0.84 0.86 0.88 0.9 0.92 0.94 0.96 0.98 1.0 1.02 1.04 1.06 1.08 1.1 1.12 1.14 1.16 1.18 1.2 1.22 1.24 1.26 1.28 1.3 1.32 1.34 1.36 1.38 1.4 1.42 1.44 1.46 1.48 1.5 1.52 1.54 1.56 1.58 1.6 1.62 1.64 1.66 1.68 1.7 1.72 1.74 1.76 1.78 1.8 1.82 1.84 1.86 1.88 1.9 1.92 1.94 1.96 1.98 2.0 ] + +#define Water_Absorb_R 0.2629 //How much water absorbs red [0.0 0.0025 0.005 0.0075 0.01 0.0125 0.015 0.0175 0.02 0.0225 0.025 0.0275 0.03 0.0325 0.035 0.0375 0.04 0.0425 0.045 0.0475 0.05 0.0525 0.055 0.0575 0.06 0.0625 0.065 0.0675 0.07 0.0725 0.075 0.0775 0.08 0.0825 0.085 0.0875 0.09 0.0925 0.095 0.0975 0.1 0.1025 0.105 0.1075 0.11 0.1125 0.115 0.1175 0.12 0.1225 0.125 0.1275 0.13 0.1325 0.135 0.1375 0.14 0.1425 0.145 0.1475 0.15 0.1525 0.155 0.1575 0.16 0.1625 0.165 0.1675 0.17 0.1725 0.175 0.1775 0.18 0.1825 0.185 0.1875 0.19 0.1925 0.195 0.1975 0.2 0.2025 0.205 0.2075 0.21 0.2125 0.215 0.2175 0.22 0.2225 0.225 0.2275 0.23 0.2325 0.235 0.2375 0.24 0.2425 0.245 0.2475 0.25 ] +#define Water_Absorb_G 0.0565 //How much water absorbs green [0.0 0.0025 0.005 0.0075 0.01 0.0125 0.015 0.0175 0.02 0.0225 0.025 0.0275 0.03 0.0325 0.035 0.0375 0.04 0.0425 0.045 0.0475 0.05 0.0525 0.055 0.0575 0.06 0.0625 0.065 0.0675 0.07 0.0725 0.075 0.0775 0.08 0.0825 0.085 0.0875 0.09 0.0925 0.095 0.0975 0.1 0.1025 0.105 0.1075 0.11 0.1125 0.115 0.1175 0.12 0.1225 0.125 0.1275 0.13 0.1325 0.135 0.1375 0.14 0.1425 0.145 0.1475 0.15 0.1525 0.155 0.1575 0.16 0.1625 0.165 0.1675 0.17 0.1725 0.175 0.1775 0.18 0.1825 0.185 0.1875 0.19 0.1925 0.195 0.1975 0.2 0.2025 0.205 0.2075 0.21 0.2125 0.215 0.2175 0.22 0.2225 0.225 0.2275 0.23 0.2325 0.235 0.2375 0.24 0.2425 0.245 0.2475 0.25 ] +#define Water_Absorb_B 0.01011 //How much water absorbs blue [0.0 0.0025 0.005 0.0075 0.01 0.0125 0.015 0.0175 0.02 0.0225 0.025 0.0275 0.03 0.0325 0.035 0.0375 0.04 0.0425 0.045 0.0475 0.05 0.0525 0.055 0.0575 0.06 0.0625 0.065 0.0675 0.07 0.0725 0.075 0.0775 0.08 0.0825 0.085 0.0875 0.09 0.0925 0.095 0.0975 0.1 0.1025 0.105 0.1075 0.11 0.1125 0.115 0.1175 0.12 0.1225 0.125 0.1275 0.13 0.1325 0.135 0.1375 0.14 0.1425 0.145 0.1475 0.15 0.1525 0.155 0.1575 0.16 0.1625 0.165 0.1675 0.17 0.1725 0.175 0.1775 0.18 0.1825 0.185 0.1875 0.19 0.1925 0.195 0.1975 0.2 0.2025 0.205 0.2075 0.21 0.2125 0.215 0.2175 0.22 0.2225 0.225 0.2275 0.23 0.2325 0.235 0.2375 0.24 0.2425 0.245 0.2475 0.25 ] +#define Texture_MipMap_Bias -1.00 // Uses a another mip level for textures. When reduced will increase texture detail but may induce a lot of shimmering. [-5.00 -4.75 -4.50 -4.25 -4.00 -3.75 -3.50 -3.25 -3.00 -2.75 -2.50 -2.25 -2.00 -1.75 -1.50 -1.25 -1.00 -0.75 -0.50 -0.25 0.00 0.25 0.50 0.75 1.00 1.25 1.50 1.75 2.00 2.25 2.50 2.75 3.00 3.25 3.50 3.75 4.00 4.25 4.50 4.75 5.00] + +#define ambient_colortype 0 // Toggle which method you want to change the color of ambient light with. [0 1] +#define ambient_temp 9000 // [1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 15000 50000] + +#define AmbientLight_R 0.91 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +#define AmbientLight_G 0.86 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] +#define AmbientLight_B 1.0 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0] + + + +#define MIN_LIGHT_AMOUNT 1.0 //[0.0 0.5 1.0 1.5 2.0 3.0 4.0 5.0] +//#define Vanilla_like_water // vanilla water texture along with shader water stuff +uniform sampler2D texture; +uniform sampler2D noisetex; +uniform sampler2DShadow shadow; +uniform sampler2D gaux2; +uniform sampler2D gaux1; +uniform sampler2D depthtex1; + +uniform vec4 lightCol; +uniform float nightVision; + +uniform vec3 sunVec; +uniform float frameTimeCounter; +uniform float lightSign; +uniform float near; +uniform float far; +uniform float moonIntensity; +uniform float sunIntensity; +uniform vec3 sunColor; +uniform vec3 nsunColor; +uniform vec3 upVec; +uniform float sunElevation; +uniform float fogAmount; +uniform vec2 texelSize; +uniform float rainStrength; +uniform float skyIntensityNight; +uniform float skyIntensity; +flat varying vec3 WsunVec; +uniform mat4 gbufferPreviousModelView; +uniform vec3 previousCameraPosition; +uniform int framemod8; +uniform sampler2D specular; +uniform int frameCounter; +uniform int isEyeInWater; + + + + + +#include "lib/Shadow_Params.glsl" +#include "lib/color_transforms.glsl" +#include "lib/projections.glsl" +#include "lib/sky_gradient.glsl" +#include "lib/waterBump.glsl" +#include "lib/clouds.glsl" +#include "lib/stars.glsl" +#include "lib/volumetricClouds.glsl" + + const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); +float interleaved_gradientNoise(float temporal){ + vec2 coord = gl_FragCoord.xy; + float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)+temporal); + return noise; +} +vec3 srgbToLinear2(vec3 srgb){ + return mix( + srgb / 12.92, + pow(.947867 * srgb + .0521327, vec3(2.4) ), + step( .04045, srgb ) + ); +} +vec3 blackbody2(float Temp) +{ + float t = pow(Temp, -1.5); + float lt = log(Temp); + + vec3 col = vec3(0.0); + col.x = 220000.0 * t + 0.58039215686; + col.y = 0.39231372549 * lt - 2.44549019608; + col.y = Temp > 6500. ? 138039.215686 * t + 0.72156862745 : col.y; + col.z = 0.76078431372 * lt - 5.68078431373; + col = clamp(col,0.0,1.0); + col = Temp < 1000. ? col * Temp * 0.001 : col; + + return srgbToLinear2(col); +} + +float blueNoise(){ + return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); +} +float invLinZ (float lindepth){ + return -((2.0*near/lindepth)-far-near)/(far-near); +} +float ld(float dist) { + return (2.0 * near) / (far + near - dist * (far - near)); +} +vec3 nvec3(vec4 pos){ + return pos.xyz/pos.w; +} + +vec4 nvec4(vec3 pos){ + return vec4(pos.xyz, 1.0); +} +vec3 rayTrace(vec3 dir,vec3 position,float dither, float fresnel, bool inwater){ + + float quality = mix(15,SSR_STEPS,fresnel); + vec3 clipPosition = toClipSpace3(position); + float rayLength = ((position.z + dir.z * far*sqrt(3.)) > -near) ? + (-near -position.z) / dir.z : far*sqrt(3.); + vec3 direction = normalize(toClipSpace3(position+dir*rayLength)-clipPosition); //convert to clip space + direction.xy = normalize(direction.xy); + + //get at which length the ray intersects with the edge of the screen + vec3 maxLengths = (step(0.,direction)-clipPosition) / direction; + float mult = min(min(maxLengths.x,maxLengths.y),maxLengths.z); + + + vec3 stepv = direction * mult / quality*vec3(RENDER_SCALE,1.0); + + + + + vec3 spos = clipPosition*vec3(RENDER_SCALE,1.0) + stepv*dither; + float minZ = clipPosition.z; + float maxZ = spos.z+stepv.z*0.5; + + spos.xy += offsets[framemod8]*texelSize*0.5/RENDER_SCALE; + + for (int i = 0; i <= int(quality); i++) { + #ifdef USE_QUARTER_RES_DEPTH + // decode depth buffer + float sp = sqrt(texelFetch2D(gaux1,ivec2(spos.xy/texelSize/4),0).w/65000.0); + sp = invLinZ(sp); + if(sp <= max(maxZ,minZ) && sp >= min(maxZ,minZ)){ + return vec3(spos.xy/RENDER_SCALE,sp); + } + spos += stepv; + #else + float sp = texelFetch2D(depthtex1,ivec2(spos.xy/texelSize),0).r; + if(sp <= max(maxZ,minZ) && sp >= min(maxZ,minZ)){ + return vec3(spos.xy/RENDER_SCALE,sp); + } + spos += stepv; + #endif + //small bias + minZ = maxZ-0.00004/ld(spos.z); + if(inwater) minZ = maxZ-0.0004/ld(spos.z); + maxZ += stepv.z; + } + + return vec3(1.1); +} + + +float facos(float sx){ + float x = clamp(abs( sx ),0.,1.); + float a = sqrt( 1. - x ) * ( -0.16882 * x + 1.56734 ); + return sx > 0. ? a : pi - a; +} + + + + + float bayer2(vec2 a){ + a = floor(a); + return fract(dot(a,vec2(0.5,a.y*0.75))); +} + +float cdist(vec2 coord) { + return max(abs(coord.s-0.5),abs(coord.t-0.5))*2.0; +} + + #define PW_DEPTH 1.0 //[0.5 1.0 1.5 2.0 2.5 3.0] + #define PW_POINTS 1 //[2 4 6 8 16 32] + #define bayer4(a) (bayer2( .5*(a))*.25+bayer2(a)) +#define bayer8(a) (bayer4( .5*(a))*.25+bayer2(a)) +#define bayer16(a) (bayer8( .5*(a))*.25+bayer2(a)) +#define bayer32(a) (bayer16(.5*(a))*.25+bayer2(a)) +#define bayer64(a) (bayer32(.5*(a))*.25+bayer2(a)) +#define bayer128(a) fract(bayer64(.5*(a))*.25+bayer2(a)) +vec3 getParallaxDisplacement(vec3 posxz, float iswater,float bumpmult,vec3 viewVec) { + float waveZ = mix(20.0,0.25,iswater); + float waveM = mix(0.0,4.0,iswater); + + vec3 parallaxPos = posxz; + vec2 vec = viewVector.xy * (1.0 / float(PW_POINTS)) * 22.0 * PW_DEPTH; + float waterHeight = getWaterHeightmap(posxz.xz, waveM, waveZ, iswater) ; + + parallaxPos.xz += waterHeight * vec; + + return parallaxPos; + +} +vec2 tapLocation(int sampleNumber,int nb, float nbRot,float jitter,float distort) +{ + float alpha = (sampleNumber+jitter)/nb; + float angle = jitter*6.28 + alpha * nbRot * 6.28; + + float sin_v, cos_v; + + sin_v = sin(angle); + cos_v = cos(angle); + + return vec2(cos_v, sin_v)*sqrt(alpha); +} +//Low discrepancy 2D sequence, integration error is as low as sobol but easier to compute : http://extremelearning.com.au/unreasonable-effectiveness-of-quasirandom-sequences/ +vec2 R2_samples(int n){ + vec2 alpha = vec2(0.75487765, 0.56984026); + return fract(alpha * n); +} +vec4 hash44(vec4 p4) +{ + p4 = fract(p4 * vec4(.1031, .1030, .0973, .1099)); + p4 += dot(p4, p4.wzxy+33.33); + return fract((p4.xxyz+p4.yzzw)*p4.zywx); +} +vec3 TangentToWorld(vec3 N, vec3 H) +{ + vec3 UpVector = abs(N.z) < 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(1.0, 0.0, 0.0); + vec3 T = normalize(cross(UpVector, N)); + vec3 B = cross(N, T); + + return vec3((T * H.x) + (B * H.y) + (N * H.z)); +} +float GGX (vec3 n, vec3 v, vec3 l, float r, float F0) { + r*=r;r*=r; + + vec3 h = l + v; + float hn = inversesqrt(dot(h, h)); + + float dotLH = clamp(dot(h,l)*hn,0.,1.); + float dotNH = clamp(dot(h,n)*hn,0.,1.); + float dotNL = clamp(dot(n,l),0.,1.); + float dotNHsq = dotNH*dotNH; + + float denom = dotNHsq * r - dotNHsq + 1.; + float D = r / (3.141592653589793 * denom * denom); + float F = F0 + (1. - F0) * exp2((-5.55473*dotLH-6.98316)*dotLH); + float k2 = .25 * r; + + return dotNL * D * F / (dotLH*dotLH*(1.0-k2)+k2); +} + + vec3 applyBump(mat3 tbnMatrix, vec3 bump){ + float bumpmult = 1.0; + bump = bump * vec3(bumpmult, bumpmult, bumpmult) + vec3(0.0f, 0.0f, 1.0f - bumpmult); + return normalize(bump*tbnMatrix); + } + +#define fsign(a) (clamp((a)*1e35,0.,1.)*2.-1.) +float triangularize(float dither) +{ + float center = dither*2.0-1.0; + dither = center*inversesqrt(abs(center)); + return clamp(dither-fsign(center),0.0,1.0); +} +vec3 fp10Dither(vec3 color,float dither){ + const vec3 mantissaBits = vec3(6.,6.,5.); + vec3 exponent = floor(log2(color)); + return color + dither*exp2(-mantissaBits)*exp2(exponent); +} +float R2_dither(){ + vec2 alpha = vec2(0.75487765, 0.56984026); + return fract(alpha.x * gl_FragCoord.x + alpha.y * gl_FragCoord.y + 1.0/1.6180339887 * frameCounter) ; +} +//encoding by jodie +float encodeVec2(vec2 a){ + const vec2 constant1 = vec2( 1., 256.) / 65535.; + vec2 temp = floor( a * 255. ); + return temp.x*constant1.x+temp.y*constant1.y; +} +float encodeVec2(float x,float y){ + return encodeVec2(vec2(x,y)); +} +vec3 viewToWorld(vec3 viewPosition) { + vec4 pos; + pos.xyz = viewPosition; + pos.w = 0.0; + pos = gbufferModelViewInverse * pos; + return pos.xyz; +} +vec3 worldToView(vec3 worldPos) { + vec4 pos = vec4(worldPos, 0.0); + pos = gbufferModelView * pos; + return pos.xyz; +} +vec4 encode (vec3 n, vec2 lightmaps){ + n.xy = n.xy / dot(abs(n), vec3(1.0)); + n.xy = n.z <= 0.0 ? (1.0 - abs(n.yx)) * sign(n.xy) : n.xy; + vec2 encn = clamp(n.xy * 0.5 + 0.5,-1.0,1.0); + + return vec4(encn,vec2(lightmaps.x,lightmaps.y)); +} + + + + +float square(float x){ + return x*x; +} +float g(float NdotL, float roughness){ + float alpha = square(max(roughness, 0.02)); + return 2.0 * NdotL / (NdotL + sqrt(square(alpha) + (1.0 - square(alpha)) * square(NdotL))); +} +float gSimple(float dp, float roughness){ + float k = roughness + 1; + k *= k/8.0; + return dp / (dp * (1.0-k) + k); +} + +vec3 GGX2(vec3 n, vec3 v, vec3 l, float r, vec3 F0) { + + float roughness = r + 1.0/255.0; // when roughness is zero it fucks up + + float alpha = square(roughness); + + + vec3 h = normalize(l + v); + + float dotLH = clamp(dot(h,l),0.,1.); + float dotNH = clamp(dot(h,n),0.,1.); + float dotNL = clamp(dot(n,l),0.,1.); + float dotNV = clamp(dot(n,v),0.,1.); + float dotVH = clamp(dot(h,v),0.,1.); + + + float D = alpha / (3.141592653589793*square(square(dotNH) * (alpha - 1.0) + 1.0)); + float G = gSimple(dotNV, roughness) * gSimple(dotNL, roughness); + vec3 F = F0 + (1. - F0) * exp2((-5.55473*dotVH-6.98316)*dotVH); + + return dotNL * F * (G * D / (4 * dotNV * dotNL + 1e-7)); +} + +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +/* RENDERTARGETS:2,7,1,11 */ +void main() { + if (gl_FragCoord.x * texelSize.x < RENDER_SCALE.x && gl_FragCoord.y * texelSize.y < RENDER_SCALE.y ) { + vec2 tempOffset=offsets[framemod8]; + float iswater = normalMat.w; + vec3 fragC = gl_FragCoord.xyz*vec3(texelSize,1.0); + vec3 fragpos = toScreenSpace(gl_FragCoord.xyz*vec3(texelSize/RENDER_SCALE,1.0)-vec3(vec2(tempOffset)*texelSize*0.5,0.0)); + gl_FragData[0] = texture2D(texture, lmtexcoord.xy)*color; + float avgBlockLum = luma(texture2DLod(texture, lmtexcoord.xy,128).rgb*color.rgb); + gl_FragData[0].rgb = clamp((gl_FragData[0].rgb)*pow(avgBlockLum,-0.33)*0.85,0.0,1.0); + + vec3 albedo = toLinear(gl_FragData[0].rgb); + + #ifndef Vanilla_like_water + if (iswater > 0.4) { + albedo = vec3(0.42,0.6,0.7); + gl_FragData[0] = vec4(0.42,0.6,0.7,0.7); + } + if (iswater > 0.9) { + gl_FragData[0] = vec4(0.0); + } + #endif + + #ifdef Vanilla_like_water + if (iswater > 0.5) { + gl_FragData[0].a = luma(albedo.rgb); + albedo = color.rgb; + } + #endif + vec2 specularstuff = texture2D(specular, lmtexcoord.xy, Texture_MipMap_Bias).rg; + + vec3 normal = normalMat.xyz; + + vec3 p3 = mat3(gbufferModelViewInverse) * fragpos + gbufferModelViewInverse[3].xyz; + mat3 tbnMatrix = mat3(tangent.x, binormal.x, normal.x, + tangent.y, binormal.y, normal.y, + tangent.z, binormal.z, normal.z); + if (iswater > 0.4){ + float bumpmult = 1.; + if (iswater > 0.9) + bumpmult = 1.; + float parallaxMult = bumpmult; + vec3 posxz = p3+cameraPosition; + posxz.xz-=posxz.y; + if (iswater < 0.9) + posxz.xz *= 3.0; + vec3 bump; + + + posxz.xyz = getParallaxDisplacement(posxz,iswater,bumpmult,normalize(tbnMatrix*fragpos)); + + bump = normalize(getWaveHeight(posxz.xz,iswater)); + + + + bump = bump * vec3(bumpmult, bumpmult, bumpmult) + vec3(0.0f, 0.0f, 1.0f - bumpmult); + + normal = normalize(bump * tbnMatrix); + }else { + vec3 normalTex = texture2D(normals, lmtexcoord.xy, Texture_MipMap_Bias).rgb; + + normalTex.xy = normalTex.xy*2.0-1.0; + normalTex.z = clamp(sqrt(1.0 - dot(normalTex.xy, normalTex.xy)),0.0,1.0); + normal = applyBump(tbnMatrix,normalTex); + } + vec4 data0 = vec4(1); + vec4 data1 = clamp( encode(viewToWorld(normal), lmtexcoord.zw),0.0,1.0); + gl_FragData[3] = vec4(encodeVec2(data0.x,data1.x), encodeVec2(data0.y,data1.y), encodeVec2(data0.z,data1.z), encodeVec2(data1.w,data0.w)); + // gl_FragData[3].a = 0.0; + + + float NdotL = lightSign*dot(normal,sunVec); + float NdotU = dot(upVec,normal); + float diffuseSun = clamp(NdotL,0.0f,1.0f); + + vec3 direct = texelFetch2D(gaux1,ivec2(6,37),0).rgb/3.1415; + + float shading = 1.0; + float cloudShadow = 1.0; + //compute shadows only if not backface + if (diffuseSun > 0.001) { + vec3 p3 = mat3(gbufferModelViewInverse) * fragpos + gbufferModelViewInverse[3].xyz; + vec3 projectedShadowPosition = mat3(shadowModelView) * p3 + shadowModelView[3].xyz; + projectedShadowPosition = diagonal3(shadowProjection) * projectedShadowPosition + shadowProjection[3].xyz; + + //apply distortion + float distortFactor = calcDistort(projectedShadowPosition.xy); + projectedShadowPosition.xy *= distortFactor; + //do shadows only if on shadow map + if (abs(projectedShadowPosition.x) < 1.0-1.5/shadowMapResolution && abs(projectedShadowPosition.y) < 1.0-1.5/shadowMapResolution){ + const float threshMul = max(2048.0/shadowMapResolution*shadowDistance/128.0,0.95); + float distortThresh = (sqrt(1.0-diffuseSun*diffuseSun)/diffuseSun+0.7)/distortFactor; + float diffthresh = distortThresh/6000.0*threshMul; + + projectedShadowPosition = projectedShadowPosition * vec3(0.5,0.5,0.5/6.0) + vec3(0.5,0.5,0.5); + + shading = 0.0; + float noise = blueNoise(); + float rdMul = 4.0/shadowMapResolution; + for(int i = 0; i < 9; i++){ + vec2 offsetS = tapLocation(i,9, 1.618,noise,0.0); + + float weight = 1.0+(i+noise)*rdMul/9.0*shadowMapResolution; + shading += shadow2D(shadow,vec3(projectedShadowPosition + vec3(rdMul*offsetS,-diffthresh*weight))).x/9.0; + } + direct *= shading; + } + + + #ifdef VOLUMETRIC_CLOUDS + #ifdef CLOUDS_SHADOWS + vec3 campos = (p3 + cameraPosition)-319 ; + // get cloud position + vec3 cloudPos = campos*Cloud_Size + WsunVec/abs(WsunVec.y) * (2250 - campos.y*Cloud_Size); + // get the cloud density and apply it + cloudShadow = getCloudDensity(cloudPos, 1); + // cloudShadow = exp(-cloudShadow*sqrt(cloudDensity)*25); + + cloudShadow = clamp(exp(-cloudShadow*10),0,1); + + // make these turn to zero when occluded by the cloud shadow + direct *= cloudShadow; + #endif + #endif + } + + + + + #if ambient_colortype == 0 + vec3 colortype = blackbody2(ambient_temp); + #else + vec3 colortype = vec3(AmbientLight_R,AmbientLight_G,AmbientLight_B) ; + #endif + + vec3 ambientLight = texture2D(gaux1,(lmtexcoord.zw*15.+0.5)*texelSize).rgb * colortype; + + direct *= (iswater > 0.9 ? 0.2: 1.0)*diffuseSun*lmtexcoord.w; + + + vec3 diffuseLight = (direct*1.5) + (ambientLight*2.5); + vec3 color = diffuseLight * albedo * 8./150./3.0 ; + + + + if (iswater > 0.0){ + + float roughness = iswater > 0.4 ? 0.0 : specularstuff.r > 0.0 ? pow(1.0-specularstuff.r,2.0) : 0.05*(1.0-gl_FragData[0].a ); + float f0 = iswater > 0.4 ? 0.02 : specularstuff.g; + if(f0 > 0.9) f0 = 0.02; + float F0 = f0; + + // float f0 = iswater > 0.1 ? 0.02 : 0.05*(1.0-gl_FragData[0].a); + // float roughness = 0.02; + // float F0 = f0; + + vec3 reflectedVector = reflect(normalize(fragpos), normal); + + + float normalDotEye = dot(normal, normalize(fragpos)); + float fresnel = pow(clamp(1.0 + normalDotEye,0.0,1.0), 5.0); + float fresnel2 = pow(clamp(1.0 + normalDotEye,0.0,1.0), 1.0); + + // gl_FragData[3].a = fresnel2; + + // snells window looking thing + if(isEyeInWater == 1 && iswater > 0.99) fresnel = clamp(pow(1.66 + normalDotEye,25),0.02,1.0); + + fresnel = mix(F0,1.0,fresnel); + + // adjust the amount of sunlight based on f0. max f0 should + color = mix(color, (ambientLight*2.5) * albedo * 8./150./3.0 , mix(1.0-roughness, F0, 0.5)); + + vec3 wrefl = mat3(gbufferModelViewInverse)*reflectedVector; + vec3 sky_c = mix(skyCloudsFromTex(wrefl,gaux1).rgb,texture2D(gaux1,(lmtexcoord.zw*15.+0.5)*texelSize).rgb*0.5,isEyeInWater); + sky_c.rgb *= lmtexcoord.w*lmtexcoord.w*255*255/240./240./150.*8./3.; + + vec4 reflection = vec4(sky_c.rgb,0.); + #ifdef SCREENSPACE_REFLECTIONS + vec3 rtPos = rayTrace(reflectedVector,fragpos.xyz, blueNoise(), fresnel, isEyeInWater == 0); + if (rtPos.z <1.){ + vec3 previousPosition = mat3(gbufferModelViewInverse) * toScreenSpace(rtPos) + gbufferModelViewInverse[3].xyz + cameraPosition-previousCameraPosition; + previousPosition = mat3(gbufferPreviousModelView) * previousPosition + gbufferPreviousModelView[3].xyz; + previousPosition.xy = projMAD(gbufferPreviousProjection, previousPosition).xy / -previousPosition.z * 0.5 + 0.5; + if (previousPosition.x > 0.0 && previousPosition.y > 0.0 && previousPosition.x < 1.0 && previousPosition.x < 1.0) { + reflection.a = 1.0; + reflection.rgb = texture2D(gaux2,previousPosition.xy).rgb; + } + } + #endif + + + if(isEyeInWater ==1 ) sky_c.rgb = color.rgb*lmtexcoord.y; + + reflection.rgb = mix(sky_c.rgb, reflection.rgb, reflection.a); + + #ifdef SUN_MICROFACET_SPECULAR + vec3 sunSpec = GGX2(normal, -normalize(fragpos), lightSign*sunVec ,roughness, vec3(f0)) * direct; + + // vec3 sunSpec = GGX(normal,-normalize(fragpos), lightSign*sunVec, rainStrength*0.2+roughness+0.05+clamp(-lightSign*0.15,0.0,1.0), f0) * texelFetch2D(gaux1,ivec2(6,37),0).rgb*8./3./150.0/3.1415 * (1.0-rainStrength*0.9); + #else + vec3 sunSpec = drawSun(dot(lightSign * sunVec,reflectedVector), 0.0,texelFetch2D(gaux1,ivec2(6,37),0).rgb,vec3(0.0))*8./3./150.0*fresnel/3.1415 * (1.0-rainStrength*0.9); + #endif + + + // vec3 albedoTint = F0 >= (230.0/255.0) ? clamp(color.rgb + fresnel,0.0,1.0) : vec3(1.0); + // reflection.rgb *= albedoTint; + // sunSpec.rgb *= albedoTint; + sunSpec *= max(cloudShadow-0.5,0.0); + + vec3 reflected = reflection.rgb*fresnel+shading*sunSpec; + + float alpha0 = gl_FragData[0].a; + + vec3 np3 = mat3(gbufferModelViewInverse) * fragpos + gbufferModelViewInverse[3].xyz + cameraPosition; + + float borderfog = clamp( pow( length(fragpos)/far, 5), 0, 1); + vec3 bordercolor = skyFromTex(np3,colortex4)/150.; + vec3 finalborderfog = clamp(fp10Dither(bordercolor*8./3.,triangularize(R2_dither())),0.0,65000.); + + // alpha0 = mix(0.0, alpha0, borderfog); + + //correct alpha channel with fresnel + gl_FragData[0].a = -gl_FragData[0].a*fresnel+gl_FragData[0].a+fresnel; + + gl_FragData[0].rgb = clamp(color/gl_FragData[0].a*alpha0*(1.0-fresnel)*0.1+reflected/gl_FragData[0].a*0.1,0.0,65100.0); + if (gl_FragData[0].r > 65000.) gl_FragData[0].rgba = vec4(0.); + + + } + else + gl_FragData[0].rgb = color*.1; + + gl_FragData[1] = vec4(albedo,iswater); + + // vec3 np3 = mat3(gbufferModelViewInverse) * fragpos + gbufferModelViewInverse[3].xyz + cameraPosition; + + // float borderfog = clamp( pow( length(fragpos)/far, 5), 0, 1); + // vec3 bordercolor = skyFromTex(np3,colortex4)/150.; + // vec3 finalborderfog = clamp(fp10Dither(bordercolor*8./3.,triangularize(R2_dither())),0.0,65000.); + + } +} diff --git a/shaders/world1/gbuffers_all_translucent.vsh b/shaders/world1/gbuffers_all_translucent.vsh new file mode 100644 index 0000000..13986e0 --- /dev/null +++ b/shaders/world1/gbuffers_all_translucent.vsh @@ -0,0 +1,112 @@ +// #version 120 +#extension GL_EXT_gpu_shader4 : enable + +#include "/lib/res_params.glsl" + + +/* +!! DO NOT REMOVE !! +This code is from Chocapic13' shaders +Read the terms of modification and sharing before changing something below please ! +!! DO NOT REMOVE !! +*/ + +varying vec4 lmtexcoord; +varying vec4 color; +varying vec4 normalMat; +varying vec3 binormal; +varying vec3 tangent; +varying float dist; +uniform mat4 gbufferModelViewInverse; +varying vec3 viewVector; +attribute vec4 at_tangent; +attribute vec4 mc_Entity; + +uniform sampler2D colortex4; +uniform vec3 sunPosition; +flat varying vec3 WsunVec; +uniform float sunElevation; + +varying vec4 tangent_other; +#define SHADOW_MAP_BIAS 0.8 + +flat varying vec4 lightCol; //main light source color (rgb),used light source(1=sun,-1=moon) + + + +uniform vec2 texelSize; +uniform int framemod8; + const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); +#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) +#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) +vec4 toClipSpace3(vec3 viewSpacePosition) { + return vec4(projMAD(gl_ProjectionMatrix, viewSpacePosition),-viewSpacePosition.z); +} +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + lmtexcoord.xy = (gl_MultiTexCoord0).xy; + vec2 lmcoord = gl_MultiTexCoord1.xy/255.; + lmtexcoord.zw = lmcoord; + + vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz; + gl_Position = toClipSpace3(position); + color = gl_Color; + float mat = 0.0; + if(mc_Entity.x == 8.0 || mc_Entity.x == 9.0) { + mat = 1.0; + + gl_Position.z -= 1e-4; + } + + + if (mc_Entity.x == 10002) mat = 0.01; + if (mc_Entity.x == 72) mat = 0.5; + // if (mc_Entity.x == 8) mat = 0.1; + + normalMat = vec4(normalize( gl_NormalMatrix*gl_Normal),mat); + + + + tangent_other = vec4(normalize(gl_NormalMatrix * at_tangent.rgb),normalMat.a); + + tangent = normalize( gl_NormalMatrix *at_tangent.rgb); + binormal = normalize(cross(tangent.rgb,normalMat.xyz)*at_tangent.w); + + mat3 tbnMatrix = mat3(tangent.x, binormal.x, normalMat.x, + tangent.y, binormal.y, normalMat.y, + tangent.z, binormal.z, normalMat.z); + + dist = length(gl_ModelViewMatrix * gl_Vertex); + + viewVector = ( gl_ModelViewMatrix * gl_Vertex).xyz; + viewVector = normalize(tbnMatrix * viewVector); + + + + #ifdef TAA_UPSCALING + gl_Position.xy = gl_Position.xy * RENDER_SCALE + RENDER_SCALE * gl_Position.w - gl_Position.w; + #endif + #ifdef TAA + gl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize; + #endif + + vec3 sc = texelFetch2D(colortex4,ivec2(6,37),0).rgb; + + + lightCol.a = float(sunElevation > 1e-5)*2-1.; + lightCol.rgb = sc; + + WsunVec = lightCol.a*normalize(mat3(gbufferModelViewInverse) *sunPosition); +} diff --git a/shaders/world1/gbuffers_armor_glint.fsh b/shaders/world1/gbuffers_armor_glint.fsh new file mode 100644 index 0000000..c931e5f --- /dev/null +++ b/shaders/world1/gbuffers_armor_glint.fsh @@ -0,0 +1,100 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + + +varying vec4 lmtexcoord; +varying vec4 color; +varying vec4 normalMat; + + +uniform sampler2D texture; + +uniform vec4 lightCol; +uniform vec3 sunVec; + +uniform vec2 texelSize; +uniform float skyIntensityNight; +uniform float skyIntensity; +uniform float sunElevation; +uniform mat4 gbufferProjectionInverse; +uniform mat4 gbufferModelViewInverse; +uniform mat4 shadowModelView; +uniform mat4 shadowProjection; + +//faster and actually more precise than pow 2.2 +vec3 toLinear(vec3 sRGB){ + return sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878); +} + +#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) +#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) +vec3 toScreenSpace(vec3 p) { + vec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); + vec3 p3 = p * 2. - 1.; + vec4 fragposition = iProjDiag * p3.xyzz + gbufferProjectionInverse[3]; + return fragposition.xyz / fragposition.w; +} +float interleaved_gradientNoise(){ + vec2 coord = gl_FragCoord.xy; + float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)); + return noise; +} + +float facos(float sx){ + float x = clamp(abs( sx ),0.,1.); + float a = sqrt( 1. - x ) * ( -0.16882 * x + 1.56734 ); + return sx > 0. ? a : 3.14159265359 - a; +} +#define SHADOW_MAP_BIAS 0.8 +float calcDistort(vec2 worlpos){ + + vec2 pos = worlpos * 1.165; + vec2 posSQ = pos*pos; + + float distb = pow(posSQ.x*posSQ.x*posSQ.x + posSQ.y*posSQ.y*posSQ.y, 1.0 / 6.0); + return 1.08695652/((1.0 - SHADOW_MAP_BIAS) + distb * SHADOW_MAP_BIAS); +} + +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +/* DRAWBUFFERS:2 */ +void main() { + + + gl_FragData[0] = texture2D(texture, lmtexcoord.xy); + + + vec3 albedo = toLinear(gl_FragData[0].rgb*color.rgb); + + vec3 normal = normalMat.xyz; + vec3 fragpos = toScreenSpace(gl_FragCoord.xyz*vec3(texelSize,1.0)); + + + + float NdotL = lightCol.a*dot(normal,sunVec); + + float diffuseSun = clamp(NdotL,0.0f,1.0f); + + vec3 direct = lightCol.rgb; + + + direct *= (diffuseSun*lmtexcoord.w)*10.; + + float torch_lightmap = ((lmtexcoord.z*lmtexcoord.z)*(lmtexcoord.z*lmtexcoord.z))*(lmtexcoord.z*20.)+lmtexcoord.z; + + vec3 ambient = (lightCol.a*sunElevation)*(-NdotL*0.45+0.9)*lightCol.rgb*0.6 + (1.2*skyIntensity)*vec3(0.65,0.7,1.)*30. + skyIntensityNight*vec3(0.09,0.1,0.15)/1.5; + + vec3 diffuseLight = (lmtexcoord.w)*ambient + vec3(1.,0.4,0.1)*torch_lightmap*0.08*1.0 + 0.0006; + + vec3 col = dot(diffuseLight,vec3(1.0/3))*albedo; + + + gl_FragData[0].rgb = col*color.a; + gl_FragData[0].a = 0.0; + + + +} diff --git a/shaders/world1/gbuffers_armor_glint.vsh b/shaders/world1/gbuffers_armor_glint.vsh new file mode 100644 index 0000000..40823aa --- /dev/null +++ b/shaders/world1/gbuffers_armor_glint.vsh @@ -0,0 +1,53 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable +#define TAA + +/* +!! DO NOT REMOVE !! +This code is from Chocapic13' shaders +Read the terms of modification and sharing before changing something below please ! +!! DO NOT REMOVE !! +*/ + +varying vec4 lmtexcoord; +varying vec4 color; +varying vec4 normalMat; +#ifdef MC_NORMAL_MAP +varying vec4 tangent; +attribute vec4 at_tangent; +#endif +uniform vec2 texelSize; +uniform int framemod8; + const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + lmtexcoord.xy = (gl_TextureMatrix[0] * gl_MultiTexCoord0).st; + + vec2 lmcoord = gl_MultiTexCoord1.xy/255.; + lmtexcoord.zw = lmcoord*lmcoord; + + gl_Position = ftransform(); + color = gl_Color; + + + #ifdef MC_NORMAL_MAP + tangent = vec4(normalize(gl_NormalMatrix *at_tangent.rgb),at_tangent.w); + #endif + + normalMat = vec4(normalize(gl_NormalMatrix *gl_Normal),1.0); + #ifdef TAA + gl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize; + #endif +} \ No newline at end of file diff --git a/shaders/world1/gbuffers_basic.fsh b/shaders/world1/gbuffers_basic.fsh new file mode 100644 index 0000000..97072f6 --- /dev/null +++ b/shaders/world1/gbuffers_basic.fsh @@ -0,0 +1,4 @@ +#version 120 + +#define WORLD +#include "gbuffers_all_solid.fsh" \ No newline at end of file diff --git a/shaders/world1/gbuffers_basic.vsh b/shaders/world1/gbuffers_basic.vsh new file mode 100644 index 0000000..5078151 --- /dev/null +++ b/shaders/world1/gbuffers_basic.vsh @@ -0,0 +1,4 @@ +#version 120 + +#define WORLD +#include "gbuffers_all_solid.vsh" \ No newline at end of file diff --git a/shaders/world1/gbuffers_beaconbeam.fsh b/shaders/world1/gbuffers_beaconbeam.fsh new file mode 100644 index 0000000..f4e7cfb --- /dev/null +++ b/shaders/world1/gbuffers_beaconbeam.fsh @@ -0,0 +1,90 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + + + +varying vec4 lmtexcoord; +varying vec4 color; +varying vec4 normalMat; + +#define SHADOW_MAP_BIAS 0.8 + +uniform sampler2D texture; + + +uniform vec4 lightCol; +uniform vec3 sunVec; +uniform vec3 upVec; + +uniform vec2 texelSize; +uniform float skyIntensityNight; +uniform float skyIntensity; +uniform float sunElevation; +uniform float rainStrength; +uniform mat4 gbufferProjectionInverse; +uniform mat4 gbufferModelViewInverse; +uniform mat4 shadowModelView; +uniform mat4 shadowProjection; + +//faster and actually more precise than pow 2.2 +vec3 toLinear(vec3 sRGB){ + return sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878); +} + +#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) +#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) +vec3 toScreenSpace(vec3 p) { + vec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); + vec3 p3 = p * 2. - 1.; + vec4 fragposition = iProjDiag * p3.xyzz + gbufferProjectionInverse[3]; + return fragposition.xyz / fragposition.w; +} +float interleaved_gradientNoise(){ + vec2 coord = gl_FragCoord.xy; + float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)); + return noise; +} + + +float facos(float sx){ + float x = clamp(abs( sx ),0.,1.); + float a = sqrt( 1. - x ) * ( -0.16882 * x + 1.56734 ); + return sx > 0. ? a : 3.14159265359 - a; +} +#define SHADOW_MAP_BIAS 0.8 +float calcDistort(vec2 worlpos){ + + vec2 pos = worlpos * 1.165; + vec2 posSQ = pos*pos; + + float distb = pow(posSQ.x*posSQ.x*posSQ.x + posSQ.y*posSQ.y*posSQ.y, 1.0 / 6.0); + return 1.08695652/((1.0 - SHADOW_MAP_BIAS) + distb * SHADOW_MAP_BIAS); +} + +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +/* DRAWBUFFERS:2 */ +void main() { + + + gl_FragData[0] = texture2D(texture, lmtexcoord.xy)*color; + gl_FragData[0].a = 1.0; + + vec3 albedo = toLinear(gl_FragData[0].rgb); + + float torch_lightmap = lmtexcoord.z; + + vec3 diffuseLight = torch_lightmap*vec3(20.,30.,50.)*2./10. ; + + vec3 color = diffuseLight*albedo; + + + gl_FragData[0].rgb = color*0.01; + + + + +} diff --git a/shaders/world1/gbuffers_beaconbeam.vsh b/shaders/world1/gbuffers_beaconbeam.vsh new file mode 100644 index 0000000..704f4ea --- /dev/null +++ b/shaders/world1/gbuffers_beaconbeam.vsh @@ -0,0 +1,54 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable +#define TAA + +/* +!! DO NOT REMOVE !! +This code is from Chocapic13' shaders +Read the terms of modification and sharing before changing something below please ! +!! DO NOT REMOVE !! +*/ + +varying vec4 lmtexcoord; +varying vec4 color; +varying vec4 normalMat; +#ifdef MC_NORMAL_MAP +varying vec4 tangent; +attribute vec4 at_tangent; +#endif + +uniform vec2 texelSize; +uniform int framemod8; + const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + lmtexcoord.xy = (gl_MultiTexCoord0).xy; + + vec2 lmcoord = gl_MultiTexCoord1.xy/255.; + lmtexcoord.zw = lmcoord; + + gl_Position = ftransform(); + color = gl_Color; + + + #ifdef MC_NORMAL_MAP + tangent = vec4(normalize(gl_NormalMatrix *at_tangent.rgb),at_tangent.w); + #endif + + normalMat = vec4(normalize(gl_NormalMatrix *gl_Normal),1.0); + #ifdef TAA + gl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize; + #endif +} \ No newline at end of file diff --git a/shaders/world1/gbuffers_block.fsh b/shaders/world1/gbuffers_block.fsh new file mode 100644 index 0000000..95943b4 --- /dev/null +++ b/shaders/world1/gbuffers_block.fsh @@ -0,0 +1,5 @@ +#version 120 + +#define BLOCK_ENT +#define WORLD +#include "gbuffers_all_solid.fsh" \ No newline at end of file diff --git a/shaders/world1/gbuffers_block.vsh b/shaders/world1/gbuffers_block.vsh new file mode 100644 index 0000000..9974256 --- /dev/null +++ b/shaders/world1/gbuffers_block.vsh @@ -0,0 +1,5 @@ +#version 120 + +#define BLOCK_ENT +#define WORLD +#include "gbuffers_all_solid.vsh" \ No newline at end of file diff --git a/shaders/world1/gbuffers_clouds.fsh b/shaders/world1/gbuffers_clouds.fsh new file mode 100644 index 0000000..563a191 --- /dev/null +++ b/shaders/world1/gbuffers_clouds.fsh @@ -0,0 +1,9 @@ +#version 120 + +/* DRAWBUFFERS:3 */ + + + +void main() { + +} diff --git a/shaders/world1/gbuffers_clouds.vsh b/shaders/world1/gbuffers_clouds.vsh new file mode 100644 index 0000000..90c4b9e --- /dev/null +++ b/shaders/world1/gbuffers_clouds.vsh @@ -0,0 +1,14 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + + +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + + gl_Position.w = -1.0; +} diff --git a/shaders/world1/gbuffers_damagedblock.fsh b/shaders/world1/gbuffers_damagedblock.fsh new file mode 100644 index 0000000..2225473 --- /dev/null +++ b/shaders/world1/gbuffers_damagedblock.fsh @@ -0,0 +1,116 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + +#define PCF + + + + +varying vec4 lmtexcoord; +varying vec4 color; +varying vec4 normalMat; + + +uniform sampler2D texture; +uniform sampler2D gaux1; +uniform vec4 lightCol; +uniform vec3 sunVec; +uniform vec3 upVec; + +uniform vec2 texelSize; +uniform float skyIntensityNight; +uniform float skyIntensity; +uniform float sunElevation; +uniform float rainStrength; +uniform mat4 gbufferProjectionInverse; +uniform mat4 gbufferModelViewInverse; +uniform mat4 shadowModelView; +uniform mat4 shadowProjection; + +//faster and actually more precise than pow 2.2 +vec3 toLinear(vec3 sRGB){ + return sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878); +} + +#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) +#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) +vec3 toScreenSpace(vec3 p) { + vec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); + vec3 p3 = p * 2. - 1.; + vec4 fragposition = iProjDiag * p3.xyzz + gbufferProjectionInverse[3]; + return fragposition.xyz / fragposition.w; +} +float interleaved_gradientNoise(float temporal){ + vec2 coord = gl_FragCoord.xy; + float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)+temporal); + return noise; +} + +#ifdef PCF +const vec2 shadowOffsets[4] = vec2[4](vec2( 0.1250, 0.0000 ), +vec2( -0.1768, -0.1768 ), +vec2( -0.0000, 0.3750 ), +vec2( 0.3536, -0.3536 ) +); +#endif +float facos(float sx){ + float x = clamp(abs( sx ),0.,1.); + float a = sqrt( 1. - x ) * ( -0.16882 * x + 1.56734 ); + return sx > 0. ? a : 3.14159265359 - a; +} + + +vec2 tapLocation(int sampleNumber, float spinAngle,int nb, float nbRot) +{ + float startJitter = (spinAngle/6.28); + float alpha = sqrt(sampleNumber + startJitter/nb ); + float angle = alpha * (nbRot * 6.28) + spinAngle*2.; + + float ssR = alpha; + float sin_v, cos_v; + + sin_v = sin(angle); + cos_v = cos(angle); + + return vec2(cos_v, sin_v)*ssR; +} +uniform int framemod8; +uniform int framecouter; + const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); + + +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +/* DRAWBUFFERS:2 */ +void main() { + + gl_FragData[0] = texture2D(texture, lmtexcoord.xy)*color; + vec2 tempOffset=offsets[framemod8]; + + if (gl_FragData[0].a>0.1){ + vec3 albedo = toLinear(gl_FragData[0].rgb); + + vec3 normal = normalMat.xyz; + + + vec3 ambient = texture2D(gaux1,(lmtexcoord.zw*15.+0.5)*texelSize).rgb; + + vec3 diffuseLight = ambient; + + + gl_FragData[0].rgb = diffuseLight*albedo*8./1500.*0.1; + } + + + +} diff --git a/shaders/world1/gbuffers_damagedblock.vsh b/shaders/world1/gbuffers_damagedblock.vsh new file mode 100644 index 0000000..4ced627 --- /dev/null +++ b/shaders/world1/gbuffers_damagedblock.vsh @@ -0,0 +1,54 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable +#define TAA + +/* +!! DO NOT REMOVE !! +This code is from Chocapic13' shaders +Read the terms of modification and sharing before changing something below please ! +!! DO NOT REMOVE !! +*/ + +varying vec4 lmtexcoord; +varying vec4 color; +varying vec4 normalMat; +#ifdef MC_NORMAL_MAP +varying vec4 tangent; +attribute vec4 at_tangent; +#endif + +uniform vec2 texelSize; +uniform int framemod8; + const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + lmtexcoord.xy = (gl_MultiTexCoord0).xy; + + vec2 lmcoord = gl_MultiTexCoord1.xy/255.; + lmtexcoord.zw = lmcoord; + + gl_Position = ftransform(); + color = gl_Color; + + + #ifdef MC_NORMAL_MAP + tangent = vec4(normalize(gl_NormalMatrix *at_tangent.rgb),at_tangent.w); + #endif + + normalMat = vec4(normalize(gl_NormalMatrix *gl_Normal),1.0); + #ifdef TAA + gl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize; + #endif +} diff --git a/shaders/world1/gbuffers_entities.fsh b/shaders/world1/gbuffers_entities.fsh new file mode 100644 index 0000000..0cd3e0d --- /dev/null +++ b/shaders/world1/gbuffers_entities.fsh @@ -0,0 +1,5 @@ +#version 120 + +#define WORLD +#define ENTITIES +#include "gbuffers_all_solid.fsh" \ No newline at end of file diff --git a/shaders/world1/gbuffers_entities.vsh b/shaders/world1/gbuffers_entities.vsh new file mode 100644 index 0000000..f4f07a4 --- /dev/null +++ b/shaders/world1/gbuffers_entities.vsh @@ -0,0 +1,6 @@ +#version 120 + + +// #define WORLD +#define ENTITIES +#include "gbuffers_all_solid.vsh" \ No newline at end of file diff --git a/shaders/world1/gbuffers_hand.fsh b/shaders/world1/gbuffers_hand.fsh new file mode 100644 index 0000000..21ac244 --- /dev/null +++ b/shaders/world1/gbuffers_hand.fsh @@ -0,0 +1,4 @@ +#version 120 + +#define HAND +#include "gbuffers_all_solid.fsh" \ No newline at end of file diff --git a/shaders/world1/gbuffers_hand.vsh b/shaders/world1/gbuffers_hand.vsh new file mode 100644 index 0000000..39504ed --- /dev/null +++ b/shaders/world1/gbuffers_hand.vsh @@ -0,0 +1,5 @@ +#version 120 + +#define WORLD +#define HAND +#include "gbuffers_all_solid.vsh" \ No newline at end of file diff --git a/shaders/world1/gbuffers_hand_water.fsh b/shaders/world1/gbuffers_hand_water.fsh new file mode 100644 index 0000000..2225473 --- /dev/null +++ b/shaders/world1/gbuffers_hand_water.fsh @@ -0,0 +1,116 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + +#define PCF + + + + +varying vec4 lmtexcoord; +varying vec4 color; +varying vec4 normalMat; + + +uniform sampler2D texture; +uniform sampler2D gaux1; +uniform vec4 lightCol; +uniform vec3 sunVec; +uniform vec3 upVec; + +uniform vec2 texelSize; +uniform float skyIntensityNight; +uniform float skyIntensity; +uniform float sunElevation; +uniform float rainStrength; +uniform mat4 gbufferProjectionInverse; +uniform mat4 gbufferModelViewInverse; +uniform mat4 shadowModelView; +uniform mat4 shadowProjection; + +//faster and actually more precise than pow 2.2 +vec3 toLinear(vec3 sRGB){ + return sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878); +} + +#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) +#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) +vec3 toScreenSpace(vec3 p) { + vec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); + vec3 p3 = p * 2. - 1.; + vec4 fragposition = iProjDiag * p3.xyzz + gbufferProjectionInverse[3]; + return fragposition.xyz / fragposition.w; +} +float interleaved_gradientNoise(float temporal){ + vec2 coord = gl_FragCoord.xy; + float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)+temporal); + return noise; +} + +#ifdef PCF +const vec2 shadowOffsets[4] = vec2[4](vec2( 0.1250, 0.0000 ), +vec2( -0.1768, -0.1768 ), +vec2( -0.0000, 0.3750 ), +vec2( 0.3536, -0.3536 ) +); +#endif +float facos(float sx){ + float x = clamp(abs( sx ),0.,1.); + float a = sqrt( 1. - x ) * ( -0.16882 * x + 1.56734 ); + return sx > 0. ? a : 3.14159265359 - a; +} + + +vec2 tapLocation(int sampleNumber, float spinAngle,int nb, float nbRot) +{ + float startJitter = (spinAngle/6.28); + float alpha = sqrt(sampleNumber + startJitter/nb ); + float angle = alpha * (nbRot * 6.28) + spinAngle*2.; + + float ssR = alpha; + float sin_v, cos_v; + + sin_v = sin(angle); + cos_v = cos(angle); + + return vec2(cos_v, sin_v)*ssR; +} +uniform int framemod8; +uniform int framecouter; + const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); + + +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +/* DRAWBUFFERS:2 */ +void main() { + + gl_FragData[0] = texture2D(texture, lmtexcoord.xy)*color; + vec2 tempOffset=offsets[framemod8]; + + if (gl_FragData[0].a>0.1){ + vec3 albedo = toLinear(gl_FragData[0].rgb); + + vec3 normal = normalMat.xyz; + + + vec3 ambient = texture2D(gaux1,(lmtexcoord.zw*15.+0.5)*texelSize).rgb; + + vec3 diffuseLight = ambient; + + + gl_FragData[0].rgb = diffuseLight*albedo*8./1500.*0.1; + } + + + +} diff --git a/shaders/world1/gbuffers_hand_water.vsh b/shaders/world1/gbuffers_hand_water.vsh new file mode 100644 index 0000000..68dc1b7 --- /dev/null +++ b/shaders/world1/gbuffers_hand_water.vsh @@ -0,0 +1,56 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable +#define TAA + +/* +!! DO NOT REMOVE !! +This code is from Chocapic13' shaders +Read the terms of modification and sharing before changing something below please ! +!! DO NOT REMOVE !! +*/ + +varying vec4 lmtexcoord; +varying vec4 color; +varying vec4 normalMat; +#ifdef MC_NORMAL_MAP +varying vec4 tangent; +attribute vec4 at_tangent; +#endif + + + +uniform vec2 texelSize; +uniform int framemod8; + const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + lmtexcoord.xy = (gl_MultiTexCoord0).xy; + + vec2 lmcoord = gl_MultiTexCoord1.xy/255.; + lmtexcoord.zw = lmcoord; + + gl_Position = ftransform(); + color = gl_Color; + + + #ifdef MC_NORMAL_MAP + tangent = vec4(normalize(gl_NormalMatrix *at_tangent.rgb),at_tangent.w); + #endif + + normalMat = vec4(normalize(gl_NormalMatrix *gl_Normal),1.0); + #ifdef TAA + gl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize; + #endif +} diff --git a/shaders/world1/gbuffers_skybasic.fsh b/shaders/world1/gbuffers_skybasic.fsh new file mode 100644 index 0000000..563a191 --- /dev/null +++ b/shaders/world1/gbuffers_skybasic.fsh @@ -0,0 +1,9 @@ +#version 120 + +/* DRAWBUFFERS:3 */ + + + +void main() { + +} diff --git a/shaders/world1/gbuffers_skybasic.vsh b/shaders/world1/gbuffers_skybasic.vsh new file mode 100644 index 0000000..90c4b9e --- /dev/null +++ b/shaders/world1/gbuffers_skybasic.vsh @@ -0,0 +1,14 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + + +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + + gl_Position.w = -1.0; +} diff --git a/shaders/world1/gbuffers_skytextured.fsh b/shaders/world1/gbuffers_skytextured.fsh new file mode 100644 index 0000000..8ad1592 --- /dev/null +++ b/shaders/world1/gbuffers_skytextured.fsh @@ -0,0 +1,24 @@ +#version 120 + +/* +!! DO NOT REMOVE !! +This code is from Chocapic13' shaders +Read the terms of modification and sharing before changing something below please ! +!! DO NOT REMOVE !! +*/ + +/* DRAWBUFFERS:1 */ + +varying vec4 color; +varying vec2 texcoord; +//faster and actually more precise than pow 2.2 +vec3 toLinear(vec3 sRGB){ + return sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878); +} + +uniform sampler2D texture; +void main() { + + gl_FragData[0] = texture2D(texture,texcoord.xy)*color; + gl_FragData[0].rgb = gl_FragData[0].rgb*gl_FragData[0].a; +} diff --git a/shaders/world1/gbuffers_skytextured.vsh b/shaders/world1/gbuffers_skytextured.vsh new file mode 100644 index 0000000..2c401c5 --- /dev/null +++ b/shaders/world1/gbuffers_skytextured.vsh @@ -0,0 +1,36 @@ +#version 120 +#define TAA + +/* +!! DO NOT REMOVE !! +This code is from Chocapic13' shaders +Read the terms of modification and sharing before changing something below please ! +!! DO NOT REMOVE !! +*/ + +varying vec4 color; +varying vec2 texcoord; + +uniform vec2 texelSize; +uniform int framemod8; + const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); +void main() { + texcoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).st; + + + + color = gl_Color; + + gl_Position = ftransform(); + #ifdef TAA + gl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize; + #endif +} + diff --git a/shaders/world1/gbuffers_spidereyes.fsh b/shaders/world1/gbuffers_spidereyes.fsh new file mode 100644 index 0000000..aa3de8b --- /dev/null +++ b/shaders/world1/gbuffers_spidereyes.fsh @@ -0,0 +1,32 @@ +#version 120 + +/* +!! DO NOT REMOVE !! +This code is from Chocapic13' shaders +Read the terms of modification and sharing before changing something below please ! +!! DO NOT REMOVE !! +*/ + + +varying vec4 color; +varying vec2 texcoord; + +uniform sampler2D texture; +vec3 toLinear(vec3 sRGB){ + return sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878); +} +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + vec4 albedo = texture2D(texture, texcoord); + + albedo *= color; + albedo.rgb = toLinear(albedo.rgb)*0.33; +/* DRAWBUFFERS:2 */ + gl_FragData[0] = albedo; + +} diff --git a/shaders/world1/gbuffers_spidereyes.vsh b/shaders/world1/gbuffers_spidereyes.vsh new file mode 100644 index 0000000..cdc23a4 --- /dev/null +++ b/shaders/world1/gbuffers_spidereyes.vsh @@ -0,0 +1,36 @@ +#version 120 +#define TAA + +/* +!! DO NOT REMOVE !! +This code is from Chocapic13' shaders +Read the terms of modification and sharing before changing something below please ! +!! DO NOT REMOVE !! +*/ + +varying vec4 color; +varying vec2 texcoord; + +uniform vec2 texelSize; +uniform int framemod8; + const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); +void main() { + + + texcoord = (gl_MultiTexCoord0).xy; + color = gl_Color; + + gl_Position = ftransform(); + + #ifdef TAA + gl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize; + #endif + +} \ No newline at end of file diff --git a/shaders/world1/gbuffers_terrain.fsh b/shaders/world1/gbuffers_terrain.fsh new file mode 100644 index 0000000..97072f6 --- /dev/null +++ b/shaders/world1/gbuffers_terrain.fsh @@ -0,0 +1,4 @@ +#version 120 + +#define WORLD +#include "gbuffers_all_solid.fsh" \ No newline at end of file diff --git a/shaders/world1/gbuffers_terrain.vsh b/shaders/world1/gbuffers_terrain.vsh new file mode 100644 index 0000000..5078151 --- /dev/null +++ b/shaders/world1/gbuffers_terrain.vsh @@ -0,0 +1,4 @@ +#version 120 + +#define WORLD +#include "gbuffers_all_solid.vsh" \ No newline at end of file diff --git a/shaders/world1/gbuffers_textured.fsh b/shaders/world1/gbuffers_textured.fsh new file mode 100644 index 0000000..2225473 --- /dev/null +++ b/shaders/world1/gbuffers_textured.fsh @@ -0,0 +1,116 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + +#define PCF + + + + +varying vec4 lmtexcoord; +varying vec4 color; +varying vec4 normalMat; + + +uniform sampler2D texture; +uniform sampler2D gaux1; +uniform vec4 lightCol; +uniform vec3 sunVec; +uniform vec3 upVec; + +uniform vec2 texelSize; +uniform float skyIntensityNight; +uniform float skyIntensity; +uniform float sunElevation; +uniform float rainStrength; +uniform mat4 gbufferProjectionInverse; +uniform mat4 gbufferModelViewInverse; +uniform mat4 shadowModelView; +uniform mat4 shadowProjection; + +//faster and actually more precise than pow 2.2 +vec3 toLinear(vec3 sRGB){ + return sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878); +} + +#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) +#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) +vec3 toScreenSpace(vec3 p) { + vec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); + vec3 p3 = p * 2. - 1.; + vec4 fragposition = iProjDiag * p3.xyzz + gbufferProjectionInverse[3]; + return fragposition.xyz / fragposition.w; +} +float interleaved_gradientNoise(float temporal){ + vec2 coord = gl_FragCoord.xy; + float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)+temporal); + return noise; +} + +#ifdef PCF +const vec2 shadowOffsets[4] = vec2[4](vec2( 0.1250, 0.0000 ), +vec2( -0.1768, -0.1768 ), +vec2( -0.0000, 0.3750 ), +vec2( 0.3536, -0.3536 ) +); +#endif +float facos(float sx){ + float x = clamp(abs( sx ),0.,1.); + float a = sqrt( 1. - x ) * ( -0.16882 * x + 1.56734 ); + return sx > 0. ? a : 3.14159265359 - a; +} + + +vec2 tapLocation(int sampleNumber, float spinAngle,int nb, float nbRot) +{ + float startJitter = (spinAngle/6.28); + float alpha = sqrt(sampleNumber + startJitter/nb ); + float angle = alpha * (nbRot * 6.28) + spinAngle*2.; + + float ssR = alpha; + float sin_v, cos_v; + + sin_v = sin(angle); + cos_v = cos(angle); + + return vec2(cos_v, sin_v)*ssR; +} +uniform int framemod8; +uniform int framecouter; + const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); + + +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +/* DRAWBUFFERS:2 */ +void main() { + + gl_FragData[0] = texture2D(texture, lmtexcoord.xy)*color; + vec2 tempOffset=offsets[framemod8]; + + if (gl_FragData[0].a>0.1){ + vec3 albedo = toLinear(gl_FragData[0].rgb); + + vec3 normal = normalMat.xyz; + + + vec3 ambient = texture2D(gaux1,(lmtexcoord.zw*15.+0.5)*texelSize).rgb; + + vec3 diffuseLight = ambient; + + + gl_FragData[0].rgb = diffuseLight*albedo*8./1500.*0.1; + } + + + +} diff --git a/shaders/world1/gbuffers_textured.vsh b/shaders/world1/gbuffers_textured.vsh new file mode 100644 index 0000000..51f3fd7 --- /dev/null +++ b/shaders/world1/gbuffers_textured.vsh @@ -0,0 +1,74 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + +#define TAA +#define WAVY_PLANTS +#define WAVY_STRENGTH 1.0 //[0.1 0.25 0.5 0.75 1.0 1.25 1.5 1.75 2.0] +#define WAVY_SPEED 1.0 //[0.001 0.01 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 1.0 1.25 1.5 2.0 3.0 4.0] +#define SEPARATE_AO +//#define POM +//#define USE_LUMINANCE_AS_HEIGHTMAP //Can generate POM on any texturepack (may look weird in some cases) + +#ifndef USE_LUMINANCE_AS_HEIGHTMAP +#ifndef MC_NORMAL_MAP +#undef POM +#endif +#endif + +#ifdef POM +#define MC_NORMAL_MAP +#endif + +/* +!! DO NOT REMOVE !! +This code is from Chocapic13' shaders +Read the terms of modification and sharing before changing something below please ! +!! DO NOT REMOVE !! +*/ + +varying vec4 lmtexcoord; +varying vec4 color; +varying vec4 normalMat; + + +uniform vec2 texelSize; +uniform int framemod8; + const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); +#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) +#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) +vec4 toClipSpace3(vec3 viewSpacePosition) { + return vec4(projMAD(gl_ProjectionMatrix, viewSpacePosition),-viewSpacePosition.z); +} + + +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + lmtexcoord.xy = (gl_MultiTexCoord0).xy; + + vec2 lmcoord = gl_MultiTexCoord1.xy/255.; + lmtexcoord.zw = lmcoord; + + vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz; + + color = gl_Color; + + normalMat = vec4(normalize(gl_NormalMatrix *gl_Normal),0.0); + + gl_Position = toClipSpace3(position); + + #ifdef TAA + gl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize; + #endif +} diff --git a/shaders/world1/gbuffers_textured_lit.fsh b/shaders/world1/gbuffers_textured_lit.fsh new file mode 100644 index 0000000..2225473 --- /dev/null +++ b/shaders/world1/gbuffers_textured_lit.fsh @@ -0,0 +1,116 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + +#define PCF + + + + +varying vec4 lmtexcoord; +varying vec4 color; +varying vec4 normalMat; + + +uniform sampler2D texture; +uniform sampler2D gaux1; +uniform vec4 lightCol; +uniform vec3 sunVec; +uniform vec3 upVec; + +uniform vec2 texelSize; +uniform float skyIntensityNight; +uniform float skyIntensity; +uniform float sunElevation; +uniform float rainStrength; +uniform mat4 gbufferProjectionInverse; +uniform mat4 gbufferModelViewInverse; +uniform mat4 shadowModelView; +uniform mat4 shadowProjection; + +//faster and actually more precise than pow 2.2 +vec3 toLinear(vec3 sRGB){ + return sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878); +} + +#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) +#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) +vec3 toScreenSpace(vec3 p) { + vec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); + vec3 p3 = p * 2. - 1.; + vec4 fragposition = iProjDiag * p3.xyzz + gbufferProjectionInverse[3]; + return fragposition.xyz / fragposition.w; +} +float interleaved_gradientNoise(float temporal){ + vec2 coord = gl_FragCoord.xy; + float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)+temporal); + return noise; +} + +#ifdef PCF +const vec2 shadowOffsets[4] = vec2[4](vec2( 0.1250, 0.0000 ), +vec2( -0.1768, -0.1768 ), +vec2( -0.0000, 0.3750 ), +vec2( 0.3536, -0.3536 ) +); +#endif +float facos(float sx){ + float x = clamp(abs( sx ),0.,1.); + float a = sqrt( 1. - x ) * ( -0.16882 * x + 1.56734 ); + return sx > 0. ? a : 3.14159265359 - a; +} + + +vec2 tapLocation(int sampleNumber, float spinAngle,int nb, float nbRot) +{ + float startJitter = (spinAngle/6.28); + float alpha = sqrt(sampleNumber + startJitter/nb ); + float angle = alpha * (nbRot * 6.28) + spinAngle*2.; + + float ssR = alpha; + float sin_v, cos_v; + + sin_v = sin(angle); + cos_v = cos(angle); + + return vec2(cos_v, sin_v)*ssR; +} +uniform int framemod8; +uniform int framecouter; + const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); + + +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +/* DRAWBUFFERS:2 */ +void main() { + + gl_FragData[0] = texture2D(texture, lmtexcoord.xy)*color; + vec2 tempOffset=offsets[framemod8]; + + if (gl_FragData[0].a>0.1){ + vec3 albedo = toLinear(gl_FragData[0].rgb); + + vec3 normal = normalMat.xyz; + + + vec3 ambient = texture2D(gaux1,(lmtexcoord.zw*15.+0.5)*texelSize).rgb; + + vec3 diffuseLight = ambient; + + + gl_FragData[0].rgb = diffuseLight*albedo*8./1500.*0.1; + } + + + +} diff --git a/shaders/world1/gbuffers_textured_lit.vsh b/shaders/world1/gbuffers_textured_lit.vsh new file mode 100644 index 0000000..68dc1b7 --- /dev/null +++ b/shaders/world1/gbuffers_textured_lit.vsh @@ -0,0 +1,56 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable +#define TAA + +/* +!! DO NOT REMOVE !! +This code is from Chocapic13' shaders +Read the terms of modification and sharing before changing something below please ! +!! DO NOT REMOVE !! +*/ + +varying vec4 lmtexcoord; +varying vec4 color; +varying vec4 normalMat; +#ifdef MC_NORMAL_MAP +varying vec4 tangent; +attribute vec4 at_tangent; +#endif + + + +uniform vec2 texelSize; +uniform int framemod8; + const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + lmtexcoord.xy = (gl_MultiTexCoord0).xy; + + vec2 lmcoord = gl_MultiTexCoord1.xy/255.; + lmtexcoord.zw = lmcoord; + + gl_Position = ftransform(); + color = gl_Color; + + + #ifdef MC_NORMAL_MAP + tangent = vec4(normalize(gl_NormalMatrix *at_tangent.rgb),at_tangent.w); + #endif + + normalMat = vec4(normalize(gl_NormalMatrix *gl_Normal),1.0); + #ifdef TAA + gl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize; + #endif +} diff --git a/shaders/world1/gbuffers_water.fsh b/shaders/world1/gbuffers_water.fsh new file mode 100644 index 0000000..5d6f344 --- /dev/null +++ b/shaders/world1/gbuffers_water.fsh @@ -0,0 +1,334 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + +varying vec4 lmtexcoord; +varying vec4 color; +varying vec4 normalMat; +varying vec3 binormal; +varying vec3 tangent; +varying vec3 viewVector; +varying float dist; +#define SCREENSPACE_REFLECTIONS //can be really expensive at high resolutions/render quality, especially on ice +#define SSR_STEPS 30 //[10 15 20 25 30 35 40 50 100 200 400] +#define SUN_MICROFACET_SPECULAR // If enabled will use realistic rough microfacet model, else will just reflect the sun. No performance impact. +#define saturate(x) clamp(x,0.0,1.0) + +uniform sampler2D texture; +uniform sampler2D noisetex; +uniform sampler2D gaux2; +uniform sampler2D gaux1; +uniform sampler2D depthtex1; + +uniform vec4 lightCol; +uniform vec3 sunVec; +uniform float frameTimeCounter; +uniform float lightSign; +uniform float near; +uniform float far; +uniform float moonIntensity; +uniform float sunIntensity; +uniform vec3 sunColor; +uniform vec3 nsunColor; +uniform vec3 upVec; +uniform float sunElevation; +uniform float fogAmount; +uniform vec2 texelSize; +uniform float rainStrength; +uniform float skyIntensityNight; +uniform float skyIntensity; +uniform mat4 gbufferPreviousModelView; +uniform vec3 previousCameraPosition; +uniform int framemod8; +uniform int frameCounter; +uniform int isEyeInWater; +#include "lib/color_transforms.glsl" +#include "lib/projections.glsl" +#include "lib/sky_gradient.glsl" +#include "lib/waterBump.glsl" +#include "lib/clouds.glsl" +#include "lib/stars.glsl" + const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); +float interleaved_gradientNoise(float temporal){ + vec2 coord = gl_FragCoord.xy; + float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y)+temporal); + return noise; +} +float blueNoise(){ + return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter); +} +float invLinZ (float lindepth){ + return -((2.0*near/lindepth)-far-near)/(far-near); +} +float ld(float dist) { + return (2.0 * near) / (far + near - dist * (far - near)); +} +vec3 nvec3(vec4 pos){ + return pos.xyz/pos.w; +} + +vec4 nvec4(vec3 pos){ + return vec4(pos.xyz, 1.0); +} +vec3 rayTrace(vec3 dir,vec3 position,float dither, float fresnel){ + + float quality = mix(15,SSR_STEPS,fresnel); + vec3 clipPosition = toClipSpace3(position); + float rayLength = ((position.z + dir.z * far*sqrt(3.)) > -near) ? + (-near -position.z) / dir.z : far*sqrt(3.); + vec3 direction = normalize(toClipSpace3(position+dir*rayLength)-clipPosition); //convert to clip space + direction.xy = normalize(direction.xy); + + //get at which length the ray intersects with the edge of the screen + vec3 maxLengths = (step(0.,direction)-clipPosition) / direction; + float mult = min(min(maxLengths.x,maxLengths.y),maxLengths.z); + + + vec3 stepv = direction * mult / quality; + + + + + vec3 spos = clipPosition + stepv*dither; + float minZ = clipPosition.z; + float maxZ = spos.z+stepv.z*0.5; + spos.xy+=offsets[framemod8]*texelSize*0.5; + //raymarch on a quarter res depth buffer for improved cache coherency + + + for (int i = 0; i < int(quality+1); i++) { + + float sp=texelFetch2D(depthtex1,ivec2(spos.xy/texelSize),0).x; + + if(sp <= max(maxZ,minZ) && sp >= min(maxZ,minZ)){ + return vec3(spos.xy,sp); + + } + spos += stepv; + //small bias + minZ = maxZ-0.00004/ld(spos.z); + maxZ += stepv.z; + } + + return vec3(1.1); +} + + +float facos(float sx){ + float x = clamp(abs( sx ),0.,1.); + float a = sqrt( 1. - x ) * ( -0.16882 * x + 1.56734 ); + return sx > 0. ? a : pi - a; +} + + + + + float bayer2(vec2 a){ + a = floor(a); + return fract(dot(a,vec2(0.5,a.y*0.75))); +} + +float cdist(vec2 coord) { + return max(abs(coord.s-0.5),abs(coord.t-0.5))*2.0; +} + + #define PW_DEPTH 1.0 //[0.5 1.0 1.5 2.0 2.5 3.0] + #define PW_POINTS 1 //[2 4 6 8 16 32] + #define bayer4(a) (bayer2( .5*(a))*.25+bayer2(a)) +#define bayer8(a) (bayer4( .5*(a))*.25+bayer2(a)) +#define bayer16(a) (bayer8( .5*(a))*.25+bayer2(a)) +#define bayer32(a) (bayer16(.5*(a))*.25+bayer2(a)) +#define bayer64(a) (bayer32(.5*(a))*.25+bayer2(a)) +#define bayer128(a) fract(bayer64(.5*(a))*.25+bayer2(a)) +vec3 getParallaxDisplacement(vec3 posxz, float iswater,float bumpmult,vec3 viewVec) { + float waveZ = mix(20.0,0.25,iswater); + float waveM = mix(0.0,4.0,iswater); + + vec3 parallaxPos = posxz; + vec2 vec = viewVector.xy * (1.0 / float(PW_POINTS)) * 22.0 * PW_DEPTH; + float waterHeight = getWaterHeightmap(posxz.xz, waveM, waveZ, iswater) * 0.5; +parallaxPos.xz += waterHeight * vec; + + return parallaxPos; + +} +vec2 tapLocation(int sampleNumber,int nb, float nbRot,float jitter,float distort) +{ + float alpha = (sampleNumber+jitter)/nb; + float angle = jitter*6.28 + alpha * nbRot * 6.28; + + float sin_v, cos_v; + + sin_v = sin(angle); + cos_v = cos(angle); + + return vec2(cos_v, sin_v)*sqrt(alpha); +} +//Low discrepancy 2D sequence, integration error is as low as sobol but easier to compute : http://extremelearning.com.au/unreasonable-effectiveness-of-quasirandom-sequences/ +vec2 R2_samples(int n){ + vec2 alpha = vec2(0.75487765, 0.56984026); + return fract(alpha * n); +} +vec4 hash44(vec4 p4) +{ + p4 = fract(p4 * vec4(.1031, .1030, .0973, .1099)); + p4 += dot(p4, p4.wzxy+33.33); + return fract((p4.xxyz+p4.yzzw)*p4.zywx); +} +vec3 TangentToWorld(vec3 N, vec3 H) +{ + vec3 UpVector = abs(N.z) < 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(1.0, 0.0, 0.0); + vec3 T = normalize(cross(UpVector, N)); + vec3 B = cross(N, T); + + return vec3((T * H.x) + (B * H.y) + (N * H.z)); +} +float GGX (vec3 n, vec3 v, vec3 l, float r, float F0) { + r*=r;r*=r; + + vec3 h = l + v; + float hn = inversesqrt(dot(h, h)); + + float dotLH = clamp(dot(h,l)*hn,0.,1.); + float dotNH = clamp(dot(h,n)*hn,0.,1.); + float dotNL = clamp(dot(n,l),0.,1.); + float dotNHsq = dotNH*dotNH; + + float denom = dotNHsq * r - dotNHsq + 1.; + float D = r / (3.141592653589793 * denom * denom); + float F = F0 + (1. - F0) * exp2((-5.55473*dotLH-6.98316)*dotLH); + float k2 = .25 * r; + + return dotNL * D * F / (dotLH*dotLH*(1.0-k2)+k2); +} + +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +/* DRAWBUFFERS:27 */ +void main() { + + vec2 tempOffset=offsets[framemod8]; + float iswater = normalMat.w; + vec3 fragC = gl_FragCoord.xyz*vec3(texelSize,1.0); + vec3 fragpos = toScreenSpace(gl_FragCoord.xyz*vec3(texelSize,1.0)-vec3(vec2(tempOffset)*texelSize*0.5,0.0)); + gl_FragData[0] = texture2D(texture, lmtexcoord.xy)*color; + vec3 albedo = toLinear(gl_FragData[0].rgb); + if (iswater > 0.4) { + albedo = vec3(0.42,0.6,0.7); + gl_FragData[0] = vec4(0.42,0.6,0.7,0.7); + } + if (iswater > 0.9) { + gl_FragData[0] = vec4(0.0); + } + + + + + vec3 normal = normalMat.xyz; + + vec3 p3 = mat3(gbufferModelViewInverse) * fragpos + gbufferModelViewInverse[3].xyz; + mat3 tbnMatrix = mat3(tangent.x, binormal.x, normal.x, + tangent.y, binormal.y, normal.y, + tangent.z, binormal.z, normal.z); + if (iswater > 0.4){ + float bumpmult = 1.; + if (iswater > 0.9) + bumpmult = 1.; + float parallaxMult = bumpmult; + vec3 posxz = p3+cameraPosition; + posxz.xz-=posxz.y; + if (iswater < 0.9) + posxz.xz *= 3.0; + vec3 bump; + + + posxz.xyz = getParallaxDisplacement(posxz,iswater,bumpmult,normalize(tbnMatrix*fragpos)); + + bump = normalize(getWaveHeight(posxz.xz,iswater)); + + + + bump = bump * vec3(bumpmult, bumpmult, bumpmult) + vec3(0.0f, 0.0f, 1.0f - bumpmult); + + normal = normalize(bump * tbnMatrix); + } + + + vec3 diffuseLight = texture2D(gaux1,(lmtexcoord.zw*15.+0.5)*texelSize).rgb; + vec3 color = diffuseLight*albedo*8./150./3.; + + + if (iswater > 0.0){ + float f0 = iswater > 0.1? 0.02 : 0.05*(1.0-gl_FragData[0].a); + + float roughness = 0.02; + + float emissive = 0.0; + float F0 = f0; + + vec3 reflectedVector = reflect(normalize(fragpos), normal); + float normalDotEye = dot(normal, normalize(fragpos)); + float fresnel = pow(clamp(1.0 + normalDotEye,0.0,1.0), 5.0); + fresnel = mix(F0,1.0,fresnel); + if (iswater > 0.4){ + fresnel = fresnel*0.87+0.04; //faking additionnal roughness to the water + roughness = 0.1; + } + + + + vec3 wrefl = mat3(gbufferModelViewInverse)*reflectedVector; + vec4 sky_c = skyCloudsFromTex(wrefl,gaux1)*(1.0-isEyeInWater); + sky_c.rgb *= lmtexcoord.w*lmtexcoord.w*255*255/240./240./150.*8./3.; + + + + + + vec4 reflection = vec4(sky_c.rgb,0.); + #ifdef SCREENSPACE_REFLECTIONS + vec3 rtPos = rayTrace(reflectedVector,fragpos.xyz,blueNoise(), fresnel); + if (rtPos.z <1.){ + + vec4 fragpositionPrev = gbufferProjectionInverse * vec4(rtPos*2.-1.,1.); + fragpositionPrev /= fragpositionPrev.w; + + vec3 sampleP = fragpositionPrev.xyz; + fragpositionPrev = gbufferModelViewInverse * fragpositionPrev; + + + + vec4 previousPosition = fragpositionPrev + vec4(cameraPosition-previousCameraPosition,0.); + previousPosition = gbufferPreviousModelView * previousPosition; + previousPosition = gbufferPreviousProjection * previousPosition; + previousPosition.xy = previousPosition.xy/previousPosition.w*0.5+0.5; + reflection.a = 1.0; + reflection.rgb = texture2D(gaux2,previousPosition.xy).rgb; + } + #endif + reflection.rgb = mix(sky_c.rgb, reflection.rgb, reflection.a); + vec3 reflected= reflection.rgb*fresnel; + + + float alpha0 = gl_FragData[0].a; + + //correct alpha channel with fresnel + gl_FragData[0].a = -gl_FragData[0].a*fresnel+gl_FragData[0].a+fresnel; + gl_FragData[0].rgb =clamp(color/gl_FragData[0].a*alpha0*(1.0-fresnel)*0.1+reflected/gl_FragData[0].a*0.1,0.0,65100.0); + if (gl_FragData[0].r > 65000.) gl_FragData[0].rgba = vec4(0.); + } + else + gl_FragData[0].rgb = color*0.1; + + gl_FragData[1] = vec4(albedo,iswater); + +} diff --git a/shaders/world1/gbuffers_water.vsh b/shaders/world1/gbuffers_water.vsh new file mode 100644 index 0000000..ec64b46 --- /dev/null +++ b/shaders/world1/gbuffers_water.vsh @@ -0,0 +1,89 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + +#define TAA + + +/* +!! DO NOT REMOVE !! +This code is from Chocapic13' shaders +Read the terms of modification and sharing before changing something below please ! +!! DO NOT REMOVE !! +*/ + +varying vec4 lmtexcoord; +varying vec4 color; + varying vec4 normalMat; +varying vec3 binormal; +varying vec3 tangent; +varying float dist; +uniform mat4 gbufferModelViewInverse; +varying vec3 viewVector; +attribute vec4 at_tangent; +attribute vec4 mc_Entity; + +#define SHADOW_MAP_BIAS 0.8 + + +uniform vec2 texelSize; +uniform int framemod8; + const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); +#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) +#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) +vec4 toClipSpace3(vec3 viewSpacePosition) { + return vec4(projMAD(gl_ProjectionMatrix, viewSpacePosition),-viewSpacePosition.z); +} +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + lmtexcoord.xy = (gl_MultiTexCoord0).xy; + vec2 lmcoord = gl_MultiTexCoord1.xy/255.; + lmtexcoord.zw = lmcoord; + + vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz; + gl_Position = toClipSpace3(position); + color = gl_Color; + float mat = 0.0; + if(mc_Entity.x == 8.0 || mc_Entity.x == 9.0) { + mat = 1.0; + gl_Position.z -= 1e-4; + } + + + if(mc_Entity.x == 79.0) mat = 0.5; + if (mc_Entity.x == 10002) mat = 0.0001; + normalMat = vec4(normalize( gl_NormalMatrix*gl_Normal),mat); + + + + + tangent = normalize( gl_NormalMatrix *at_tangent.rgb); + binormal = normalize(cross(tangent.rgb,normalMat.xyz)*at_tangent.w); + + mat3 tbnMatrix = mat3(tangent.x, binormal.x, normalMat.x, + tangent.y, binormal.y, normalMat.y, + tangent.z, binormal.z, normalMat.z); + + dist = length(gl_ModelViewMatrix * gl_Vertex); + + viewVector = ( gl_ModelViewMatrix * gl_Vertex).xyz; + viewVector = normalize(tbnMatrix * viewVector); + + + + #ifdef TAA + gl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize; + #endif + +} diff --git a/shaders/world1/gbuffers_weather.fsh b/shaders/world1/gbuffers_weather.fsh new file mode 100644 index 0000000..f169e8b --- /dev/null +++ b/shaders/world1/gbuffers_weather.fsh @@ -0,0 +1,49 @@ +#version 120 + + +varying vec4 lmtexcoord; +varying vec4 color; + +uniform sampler2D texture; +uniform sampler2D gaux1; +uniform vec4 lightCol; +uniform vec3 sunVec; + +uniform vec2 texelSize; +uniform float skyIntensityNight; +uniform float skyIntensity; +uniform float rainStrength; + +uniform mat4 gbufferProjectionInverse; + +#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) +#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) +vec3 toLinear(vec3 sRGB){ + return sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878); +} + + +vec3 toScreenSpaceVector(vec3 p) { + vec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); + vec3 p3 = p * 2. - 1.; + vec4 fragposition = iProjDiag * p3.xyzz + gbufferProjectionInverse[3]; + return normalize(fragposition.xyz); +} +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { +/* DRAWBUFFERS:2 */ + gl_FragData[0] = texture2D(texture, lmtexcoord.xy)*color; + gl_FragData[0].a = clamp(gl_FragData[0].a -0.1,0.0,1.0)*0.5; + vec3 albedo = toLinear(gl_FragData[0].rgb*color.rgb); + vec3 ambient = texture2D(gaux1,(lmtexcoord.zw*15.+0.5)*texelSize).rgb; + + gl_FragData[0].rgb = dot(albedo,vec3(1.0))*ambient*10./3.0/150.*0.1; + + + +} diff --git a/shaders/world1/gbuffers_weather.vsh b/shaders/world1/gbuffers_weather.vsh new file mode 100644 index 0000000..b7c44aa --- /dev/null +++ b/shaders/world1/gbuffers_weather.vsh @@ -0,0 +1,44 @@ +#version 120 +#define TAA + +/* +!! DO NOT REMOVE !! +This code is from Chocapic13' shaders +Read the terms of modification and sharing before changing something below please ! +!! DO NOT REMOVE !! +*/ + +varying vec4 lmtexcoord; +varying vec4 color; + +uniform vec2 texelSize; +uniform int framemod8; + const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + + lmtexcoord.xy = (gl_MultiTexCoord0).xy; + + vec2 lmcoord = gl_MultiTexCoord1.xy/255.; + lmtexcoord.zw = lmcoord*lmcoord; + + + gl_Position = ftransform(); + + color = gl_Color; + #ifdef TAA + gl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize; + #endif +} \ No newline at end of file diff --git a/shaders/world1/lib/ACES.glsl b/shaders/world1/lib/ACES.glsl new file mode 100644 index 0000000..d9d6ce7 --- /dev/null +++ b/shaders/world1/lib/ACES.glsl @@ -0,0 +1,382 @@ +#define log10(x) log(x) / log(10.0) + + struct ColorCorrection { + float saturation; + float vibrance; + vec3 lum; + float contrast; + float contrastMidpoint; + + vec3 gain; + vec3 lift; + vec3 InvGamma; +} m; + + +float sigmoid_shaper(float x) { // Sigmoid function in the range 0 to 1 spanning -2 to +2. + float t = max(1.0 - abs(0.5 * x), 0.0); + float y = 1.0 + sign(x) * (1.0 - t * t); + + return 0.5 * y; +} + +float rgb_2_saturation(vec3 rgb) { + float minrgb = min(min(rgb.r, rgb.g), rgb.b); + float maxrgb = max(max(rgb.r, rgb.g), rgb.b); + + return (max(maxrgb, 1e-10) - max(minrgb, 1e-10)) / max(maxrgb, 1e-2); +} + +float rgb_2_yc(vec3 rgb) { // Converts RGB to a luminance proxy, here called YC. YC is ~ Y + K * Chroma. + float ycRadiusWeight = 1.75; + float r = rgb[0]; float g = rgb[1]; float b = rgb[2]; + float chroma = sqrt(b * (b - g) + g * (g - r) + r * (r - b)); + + return (b + g + r + ycRadiusWeight * chroma) / 3.0; +} + +float glow_fwd(float ycIn, float glowGainIn, float glowMid) { + float glowGainOut; + + if (ycIn <= 2.0 / 3.0 * glowMid) { + glowGainOut = glowGainIn; + } else if ( ycIn >= 2.0 * glowMid) { + glowGainOut = 0; + } else { + glowGainOut = glowGainIn * (glowMid / ycIn - 0.5); + } + + return glowGainOut; +} + +float rgb_2_hue(vec3 rgb) { // Returns a geometric hue angle in degrees (0-360) based on RGB values. + float hue; + if (rgb[0] == rgb[1] && rgb[1] == rgb[2]) { // For neutral colors, hue is undefined and the function will return a quiet NaN value. + hue = 0; + } else { + hue = (180.0 / 3.1415) * atan(2.0 * rgb[0] - rgb[1] - rgb[2], sqrt(3.0) * (rgb[1] - rgb[2])); // flip due to opengl spec compared to hlsl + } + + if (hue < 0.0) + hue = hue + 360.0; + + return clamp(hue, 0.0, 360.0); +} + +float center_hue(float hue, float centerH) { + float hueCentered = hue - centerH; + + if (hueCentered < -180.0) { + hueCentered += 360.0; + } else if (hueCentered > 180.0) { + hueCentered -= 360.0; + } + + return hueCentered; +} + +// Transformations between CIE XYZ tristimulus values and CIE x,y +// chromaticity coordinates +vec3 XYZ_2_xyY( vec3 XYZ ) { + float divisor = max(XYZ[0] + XYZ[1] + XYZ[2], 1e-10); + + vec3 xyY = XYZ.xyy; + xyY.rg = XYZ.rg / divisor; + + return xyY; +} + +vec3 xyY_2_XYZ(vec3 xyY) { + vec3 XYZ = vec3(0.0); + XYZ.r = xyY.r * xyY.b / max(xyY.g, 1e-10); + XYZ.g = xyY.b; + XYZ.b = (1.0 - xyY.r - xyY.g) * xyY.b / max(xyY.g, 1e-10); + + return XYZ; +} + +mat3 ChromaticAdaptation( vec2 src_xy, vec2 dst_xy ) { + // Von Kries chromatic adaptation + + // Bradford + const mat3 ConeResponse = mat3( + vec3(0.8951, 0.2664, -0.1614), + vec3(-0.7502, 1.7135, 0.0367), + vec3(0.0389, -0.0685, 1.0296) + ); + const mat3 InvConeResponse = mat3( + vec3(0.9869929, -0.1470543, 0.1599627), + vec3(0.4323053, 0.5183603, 0.0492912), + vec3(-0.0085287, 0.0400428, 0.9684867) + ); + + vec3 src_XYZ = xyY_2_XYZ( vec3( src_xy, 1 ) ); + vec3 dst_XYZ = xyY_2_XYZ( vec3( dst_xy, 1 ) ); + + vec3 src_coneResp = src_XYZ * ConeResponse; + vec3 dst_coneResp = dst_XYZ * ConeResponse; + + mat3 VonKriesMat = mat3( + vec3(dst_coneResp[0] / src_coneResp[0], 0.0, 0.0), + vec3(0.0, dst_coneResp[1] / src_coneResp[1], 0.0), + vec3(0.0, 0.0, dst_coneResp[2] / src_coneResp[2]) + ); + + return (ConeResponse * VonKriesMat) * InvConeResponse; +} + +/******************************************************************************* + - Color CorrectionUE4 Style + ******************************************************************************/ + + // Accurate for 1000K < Temp < 15000K +// [Krystek 1985, "An algorithm to calculate correlated colour temperature"] +vec2 PlanckianLocusChromaticity(float Temp) { + float u = ( 0.860117757f + 1.54118254e-4f * Temp + 1.28641212e-7f * Temp*Temp ) / ( 1.0f + 8.42420235e-4f * Temp + 7.08145163e-7f * Temp*Temp ); + float v = ( 0.317398726f + 4.22806245e-5f * Temp + 4.20481691e-8f * Temp*Temp ) / ( 1.0f - 2.89741816e-5f * Temp + 1.61456053e-7f * Temp*Temp ); + + float x = 3.0*u / ( 2.0*u - 8.0*v + 4.0 ); + float y = 2.0*v / ( 2.0*u - 8.0*v + 4.0 ); + + return vec2(x, y); +} + + vec2 D_IlluminantChromaticity(float Temp) { + // Accurate for 4000K < Temp < 25000K + // in: correlated color temperature + // out: CIE 1931 chromaticity + // Correct for revision of Plank's law + // This makes 6500 == D65 + Temp *= 1.4388 / 1.438; + + float x = Temp <= 7000 ? + 0.244063 + ( 0.09911e3 + ( 2.9678e6 - 4.6070e9 / Temp ) / Temp ) / Temp : + 0.237040 + ( 0.24748e3 + ( 1.9018e6 - 2.0064e9 / Temp ) / Temp ) / Temp; + + float y = -3 * x*x + 2.87 * x - 0.275; + + return vec2(x,y); +} + +vec2 PlanckianIsothermal( float Temp, float Tint ) { + float u = ( 0.860117757f + 1.54118254e-4f * Temp + 1.28641212e-7f * Temp*Temp ) / ( 1.0f + 8.42420235e-4f * Temp + 7.08145163e-7f * Temp*Temp ); + float v = ( 0.317398726f + 4.22806245e-5f * Temp + 4.20481691e-8f * Temp*Temp ) / ( 1.0f - 2.89741816e-5f * Temp + 1.61456053e-7f * Temp*Temp ); + + float ud = ( -1.13758118e9f - 1.91615621e6f * Temp - 1.53177f * Temp*Temp ) / pow( 1.41213984e6f + 1189.62f * Temp + Temp*Temp, 2.0 ); + float vd = ( 1.97471536e9f - 705674.0f * Temp - 308.607f * Temp*Temp ) / pow( 6.19363586e6f - 179.456f * Temp + Temp*Temp , 2.0); //don't pow2 this + + vec2 uvd = normalize( vec2( u, v ) ); + + // Correlated color temperature is meaningful within +/- 0.05 + u += -uvd.y * Tint * 0.05; + v += uvd.x * Tint * 0.05; + + float x = 3*u / ( 2*u - 8*v + 4 ); + float y = 2*v / ( 2*u - 8*v + 4 ); + + return vec2(x,y); +} + +vec3 WhiteBalance(vec3 LinearColor) { + const float WhiteTemp = float(WHITE_BALANCE); + const float WhiteTint = 0.0; + vec2 SrcWhiteDaylight = D_IlluminantChromaticity( WhiteTemp ); + vec2 SrcWhitePlankian = PlanckianLocusChromaticity( WhiteTemp ); + + vec2 SrcWhite = WhiteTemp < 4000 ? SrcWhitePlankian : SrcWhiteDaylight; + const vec2 D65White = vec2(0.31270, 0.32900); + + // Offset along isotherm + vec2 Isothermal = PlanckianIsothermal( WhiteTemp, WhiteTint ) - SrcWhitePlankian; + SrcWhite += Isothermal; + + mat3x3 WhiteBalanceMat = ChromaticAdaptation( SrcWhite, D65White ); + WhiteBalanceMat = (sRGB_2_XYZ_MAT * WhiteBalanceMat) * XYZ_2_sRGB_MAT; + + return LinearColor * WhiteBalanceMat * 1.0; +} + +/******************************************************************************* + - ACES Fimic Curve Approx. + ******************************************************************************/ + +// ACES settings +const float FilmSlope = Film_Slope; //0.90 +const float FilmToe = Film_Toe; //0.55 +const float FilmShoulder = Film_Shoulder; //0.25 +const float FilmBlackClip = Black_Clip; +const float FilmWhiteClip = White_Clip; +const float BlueCorrection = Blue_Correction; +const float ExpandGamut = Gamut_Expansion; + +vec3 FilmToneMap(vec3 LinearColor) { + const mat3 AP0_2_sRGB = (AP0_2_XYZ_MAT * D60_2_D65_CAT) * XYZ_2_sRGB_MAT; + const mat3 AP1_2_sRGB = (AP1_2_XYZ_MAT * D60_2_D65_CAT) * XYZ_2_sRGB_MAT; + + const mat3 AP0_2_AP1 = AP0_2_XYZ_MAT * XYZ_2_AP1_MAT; + const mat3 AP1_2_AP0 = AP1_2_XYZ_MAT * XYZ_2_AP0_MAT; + + vec3 ColorAP1 = LinearColor * AP0_2_AP1; + float LumaAP1 = dot( ColorAP1, AP1_RGB2Y ); + + vec3 ChromaAP1 = ColorAP1 / LumaAP1; + + float ChromaDistSqr = dot( ChromaAP1 - 1, ChromaAP1 - 1 ); + float ExpandAmount = ( 1 - exp2( -4 * ChromaDistSqr ) ) * ( 1 - exp2( -4 * ExpandGamut * LumaAP1*LumaAP1 ) ); + + const mat3 Wide_2_XYZ_MAT = mat3( + vec3(0.5441691, 0.2395926, 0.1666943), + vec3(0.2394656, 0.7021530, 0.0583814), + vec3(-0.0023439, 0.0361834, 1.0552183) + ); + + const mat3 Wide_2_AP1 = Wide_2_XYZ_MAT * XYZ_2_AP1_MAT; + const mat3 ExpandMat = AP1_2_sRGB * Wide_2_AP1; + + vec3 ColorExpand = ColorAP1 * ExpandMat; + ColorAP1 = mix(ColorAP1, ColorExpand, ExpandAmount); + + const mat3 BlueCorrect = mat3( + vec3(0.9404372683, -0.0183068787, 0.0778696104), + vec3(0.0083786969, 0.8286599939, 0.1629613092), + vec3(0.0005471261, -0.0008833746, 1.0003362486) + ); + const mat3 BlueCorrectInv = mat3( + vec3(1.06318, 0.0233956, -0.0865726), + vec3(-0.0106337, 1.20632, -0.19569), + vec3(-0.000590887, 0.00105248, 0.999538) + ); + + const mat3 BlueCorrectAP1 = (AP1_2_AP0 * BlueCorrect) * AP0_2_AP1; + const mat3 BlueCorrectInvAP1 = (AP1_2_AP0 * BlueCorrectInv) * AP0_2_AP1; + + // Blue correction + ColorAP1 = mix(ColorAP1, ColorAP1 * BlueCorrectAP1, BlueCorrection); + + vec3 ColorAP0 = LinearColor * AP1_2_AP0; + + // "Glow" module constants + const float RRT_GLOW_GAIN = 0.05; + const float RRT_GLOW_MID = 0.08; + + float saturation = rgb_2_saturation(ColorAP0); + float ycIn = rgb_2_yc(ColorAP0); + float s = sigmoid_shaper((saturation - 0.4) * 5.0); + float addedGlow = 1.0 + glow_fwd(ycIn, RRT_GLOW_GAIN * s, RRT_GLOW_MID) * 3; + ColorAP0 *= addedGlow; + + // --- Red modifier --- // + const float RRT_RED_SCALE = 0.99; + const float RRT_RED_PIVOT = 0.22; + const float RRT_RED_HUE = 0.15; + const float RRT_RED_WIDTH = 135.0; + float hue = rgb_2_hue(ColorAP0); + float centeredHue = center_hue(hue, RRT_RED_HUE); + float hueWeight = pow(smoothstep(0.0, 1.0, 1.0 - abs(2.0 * centeredHue / RRT_RED_WIDTH)), 2.0); + + ColorAP0.r += hueWeight * saturation * (RRT_RED_PIVOT - ColorAP0.r) * (1.0 - RRT_RED_SCALE); + + // Use ACEScg primaries as working space + vec3 WorkingColor = ColorAP0 * AP0_2_AP1_MAT * 1.2; + WorkingColor = max(vec3(0.0), WorkingColor) * 1.1; + WorkingColor = mix(vec3(dot(WorkingColor, AP1_RGB2Y)), WorkingColor, 0.96); // Pre desaturate + + const float ToeScale = 1.0 + FilmBlackClip - FilmToe; + const float ShoulderScale = 1.0 + FilmWhiteClip - FilmShoulder; + + const float InMatch = in_Match; + const float OutMatch = Out_Match; + + float ToeMatch = 0.0; + if(FilmToe > 0.8) { + // 0.18 will be on straight segment + ToeMatch = (1.0 - FilmToe - OutMatch) / FilmSlope + log10(InMatch); + } else { + // 0.18 will be on toe segment + // Solve for ToeMatch such that input of InMatch gives output of OutMatch. + const float bt = (OutMatch + FilmBlackClip) / ToeScale - 1.0; + ToeMatch = log10(InMatch) - 0.5 * log((1.0 + bt) / (1.0 - bt)) * (ToeScale / FilmSlope); + } + + float StraightMatch = (1.0 - FilmToe) / FilmSlope - ToeMatch; + float ShoulderMatch = FilmShoulder / FilmSlope - StraightMatch; + + vec3 LogColor = log10(WorkingColor); + vec3 StraightColor = FilmSlope * (LogColor + StraightMatch); + + vec3 ToeColor = (-FilmBlackClip) + (2.0 * ToeScale) / (1.0 + exp((-2.0 * FilmSlope / ToeScale) * (LogColor - ToeMatch))); + vec3 ShoulderColor = (1.0 + FilmWhiteClip) - (2.0 * ShoulderScale) / (1.0 + exp(( 2.0 * FilmSlope / ShoulderScale) * (LogColor - ShoulderMatch))); + + for(int i = 0; i < 1; ++i) { + ToeColor[i] = LogColor[i] < ToeMatch ? ToeColor[i] : StraightColor[i]; + ShoulderColor[i] = LogColor[i] > ShoulderMatch ? ShoulderColor[i] : StraightColor[i]; + } + + vec3 t = clamp((LogColor - ToeMatch) / (ShoulderMatch - ToeMatch), 0.0, 1.0); + t = ShoulderMatch < ToeMatch ? 1.0 - t : t; + t = (3.0 - 2.0 * t) * t * t; + + vec3 ToneColor = mix(ToeColor, ShoulderColor, t); + ToneColor = mix(vec3(dot(ToneColor, AP1_RGB2Y)), ToneColor, 0.93); // Post desaturate + + ToneColor = mix(ToneColor, ToneColor * BlueCorrectInvAP1, BlueCorrection); + + // Returning positive AP1 values + return max(vec3(0.0), ToneColor * AP1_2_sRGB); +} + +vec3 Saturation(vec3 color, ColorCorrection m) { + float grey = dot(color, m.lum); + return grey + m.saturation * (color - grey); +} + +vec3 Vibrance(vec3 color, ColorCorrection m) { + float maxColor = max(color.r, max(color.g, color.b)); + float minColor = min(color.r, min(color.g, color.b)); + + float colorSaturation = maxColor - minColor; + + float grey = dot(color, m.lum); + color = mix(vec3(grey), color, 1.0 + m.vibrance * (1.0 - sign(m.vibrance) * colorSaturation)); + + return color; +} + +vec3 LiftGammaGain(vec3 v, ColorCorrection m) { + vec3 lerpV = clamp(pow(v, m.InvGamma), 0.0, 1.0); + return m.gain * lerpV + m.lift * (1.0 - lerpV); +} + +float LogContrast(float x, const float eps, float logMidpoint, float contrast) { + float logX = log2(x + eps); + float adjX = (logX - logMidpoint) / contrast + logMidpoint; + + return max(exp2(adjX) - eps, 0.0); +} + +vec3 Contrast(vec3 color, ColorCorrection m) { + const float contrastEpsilon = 1e-5; + + vec3 ret; + ret.x = LogContrast(color.x, contrastEpsilon, log2(0.18), m.contrast); + ret.y = LogContrast(color.y, contrastEpsilon, log2(0.18), m.contrast); + ret.z = LogContrast(color.z, contrastEpsilon, log2(0.18), m.contrast); + + return ret; +} + +vec3 srgbToLinear(vec3 srgb) { + return mix( + srgb * 0.07739938080495356, // 1.0 / 12.92 = ~0.07739938080495356 + pow(0.947867 * srgb + 0.0521327, vec3(2.4)), + step(0.04045, srgb) + ); +} + +vec3 linearToSrgb(vec3 linear) { + return mix( + linear * 12.92, + pow(linear, vec3(0.416666666667)) * 1.055 - 0.055, // 1.0 / 2.4 = ~0.416666666667 + step(0.0031308, linear) + ); +} diff --git a/shaders/world1/lib/ACESSPL.glsl b/shaders/world1/lib/ACESSPL.glsl new file mode 100644 index 0000000..81c4ffd --- /dev/null +++ b/shaders/world1/lib/ACESSPL.glsl @@ -0,0 +1,115 @@ +#define log10(x) log(x) / log(10.0) + + +struct SegmentedSplineParams_c5 { + float coefsLow[6]; // coefs for B-spline between minPoint and midPoint (units of log luminance) + float coefsHigh[6]; // coefs for B-spline between midPoint and maxPoint (units of log luminance) + vec2 minPoint; // {luminance, luminance} linear extension below this + vec2 midPoint; // {luminance, luminance} + vec2 maxPoint; // {luminance, luminance} linear extension above this + float slopeLow; // log-log slope of low linear extension + float slopeHigh; // log-log slope of high linear extension +}; + +struct SegmentedSplineParams_c9 { + float coefsLow[10]; // coefs for B-spline between minPoint and midPoint (units of log luminance) + float coefsHigh[10]; // coefs for B-spline between midPoint and maxPoint (units of log luminance) + float slopeLow; // log-log slope of low linear extension + float slopeHigh; // log-log slope of high linear extension +}; + +const mat3 M = mat3( + 0.5, -1.0, 0.5, + -1.0, 1.0, 0.5, + 0.5, 0.0, 0.0 +); + +float segmented_spline_c5_fwd(float x) { + const SegmentedSplineParams_c5 C = SegmentedSplineParams_c5( + float[6] ( -4.0000000000, -4.0000000000, -3.1573765773, -0.4852499958, 1.8477324706, 1.8477324706 ), + float[6] ( -0.7185482425, 2.0810307172, 3.6681241237, 4.0000000000, 4.0000000000, 4.0000000000 ), + vec2(0.18*exp2(-15.0), 0.0001), + vec2(0.18, 4.8), + vec2(0.18*exp2(18.0), 10000.), + 0.0, + 0.0 + ); + + const int N_KNOTS_LOW = 4; + const int N_KNOTS_HIGH = 4; + + // Check for negatives or zero before taking the log. If negative or zero, + // set to ACESMIN.1 + float xCheck = x <= 0 ? exp2(-14.0) : x; + + float logx = log10( xCheck); + float logy; + + if (logx <= log10(C.minPoint.x)) { + logy = logx * C.slopeLow + (log10(C.minPoint.y) - C.slopeLow * log10(C.minPoint.x)); + } else if ((logx > log10(C.minPoint.x)) && (logx < log10(C.midPoint.x))) { + float knot_coord = (N_KNOTS_LOW-1) * (logx-log10(C.minPoint.x))/(log10(C.midPoint.x)-log10(C.minPoint.x)); + int j = int(knot_coord); + float t = knot_coord - float(j); + + vec3 cf = vec3( C.coefsLow[ j], C.coefsLow[ j + 1], C.coefsLow[ j + 2]); + + vec3 monomials = vec3(t * t, t, 1.0); + logy = dot( monomials, M * cf); + } else if ((logx >= log10(C.midPoint.x)) && (logx < log10(C.maxPoint.x))) { + float knot_coord = (N_KNOTS_HIGH - 1) * (logx - log10(C.midPoint.x)) / (log10(C.maxPoint.x) - log10(C.midPoint.x)); + int j = int(knot_coord); + float t = knot_coord - float(j); + + vec3 cf = vec3(C.coefsHigh[j], C.coefsHigh[j + 1], C.coefsHigh[j + 2]); + vec3 monomials = vec3(t * t, t, 1.0); + + logy = dot(monomials, M * cf); + } else { + logy = logx * C.slopeHigh + (log10(C.maxPoint.y) - C.slopeHigh * log10(C.maxPoint.x)); + } + + return pow(10.0, logy); +} + +float segmented_spline_c9_fwd( float x, const SegmentedSplineParams_c9 C, const mat3x2 toningPoints) { + const int N_KNOTS_LOW = 8; + const int N_KNOTS_HIGH = 8; + + // Check for negatives or zero before taking the log. If negative or zero, + // set to OCESMIN. + float xCheck = x <= 0 ? 1e-4 : x; + + vec2 minPoint = toningPoints[0]; + vec2 midPoint = toningPoints[1]; + vec2 maxPoint = toningPoints[2]; + + float logx = log10(xCheck); + float logy; + + if (logx <= log10(minPoint.x)) { + logy = logx * C.slopeLow + (log10(minPoint.y) - C.slopeLow * log10(minPoint.x)); + } else if ((logx > log10(minPoint.x)) && (logx < log10(midPoint.x))) { + float knot_coord = (N_KNOTS_LOW - 1) * (logx - log10(minPoint.x)) / (log10(midPoint.x) - log10(minPoint.x)); + int j = int(knot_coord); + float t = knot_coord - float(j); + + vec3 cf = vec3(C.coefsLow[j], C.coefsLow[j + 1], C.coefsLow[j + 2]); + vec3 monomials = vec3(t * t, t, 1.0); + + logy = dot(monomials, M * cf); + } else if ((logx >= log10(midPoint.x)) && (logx < log10(maxPoint.x))) { + float knot_coord = (N_KNOTS_HIGH - 1) * (logx - log10(midPoint.x)) / (log10(maxPoint.x) - log10(midPoint.x)); + int j = int(knot_coord); + float t = knot_coord - float(j); + + vec3 cf = vec3(C.coefsHigh[j], C.coefsHigh[j + 1], C.coefsHigh[j + 2]); + vec3 monomials = vec3(t * t, t, 1.0); + + logy = dot(monomials, M * cf); + } else { + logy = logx * C.slopeHigh + (log10(maxPoint.y) - C.slopeHigh * log10(maxPoint.x)); + } + + return pow(10.0, logy); +} \ No newline at end of file diff --git a/shaders/world1/lib/ACEST.glsl b/shaders/world1/lib/ACEST.glsl new file mode 100644 index 0000000..f8693d7 --- /dev/null +++ b/shaders/world1/lib/ACEST.glsl @@ -0,0 +1,63 @@ + +const mat3 sRGB_2_XYZ_MAT = mat3( // Linear sRGB to XYZ color space + vec3(0.4124564, 0.3575761, 0.1804375), + vec3(0.2126729, 0.7151522, 0.0721750), + vec3(0.0193339, 0.1191920, 0.9503041) +); + +const mat3 XYZ_2_sRGB_MAT = mat3( //XYZ to linear sRGB Color Space + vec3(3.2409699419, -1.5373831776, -0.4986107603), + vec3(-0.9692436363, 1.8759675015, 0.0415550574), + vec3(0.0556300797, -0.2039769589, 1.0569715142) +); + +const mat3 D65_2_D60_CAT = mat3( // D65 to D60 White Point + vec3(1.01303, 0.00610531, -0.014971), + vec3(0.00769823, 0.998165, -0.00503203), + vec3(-0.00284131, 0.00468516, 0.924507) +); + +const mat3 D60_2_D65_CAT = mat3( //D60 to D65 White Point + vec3(0.987224, -0.00611327, 0.0159533), + vec3(-0.00759836, 1.00186, 0.00533002), + vec3(0.00307257, -0.00509595, 1.08168) +); + +const mat3 XYZ_2_AP0_MAT = mat3( // XYZ to ACEScg Color Space + vec3(1.0498110175, 0.0000000000,-0.0000974845), + vec3(-0.4959030231, 1.3733130458, 0.0982400361), + vec3(0.0000000000, 0.0000000000, 0.9912520182) +); + +const mat3 AP0_2_XYZ_MAT = mat3( // ACEScg to XYZ Color Space + vec3(0.9525523959, 0.0000000000, 0.0000936786), + vec3(0.3439664498, 0.7281660966,-0.0721325464), + vec3(0.0000000000, 0.0000000000, 1.0088251844) +); + +const mat3 XYZ_2_AP1_MAT = mat3( // XYZ to ACEStoning Color Space + vec3(1.6410233797, -0.3248032942, -0.2364246952), + vec3(-0.6636628587, 1.6153315917, 0.0167563477), + vec3(0.0117218943, -0.0082844420, 0.9883948585) +); + +const mat3 AP1_2_XYZ_MAT = mat3( // ACEStoning to XYZ Color Space + vec3(0.6624541811, 0.1340042065, 0.1561876870), + vec3(0.2722287168, 0.6740817658, 0.0536895174), + vec3(-0.0055746495, 0.0040607335, 1.0103391003) +); + +const mat3 AP0_2_AP1_MAT = mat3( // ACEScg to ACEStoneing Color Space + vec3(1.4514393161, -0.2365107469, -0.2149285693), + vec3(-0.0765537734, 1.1762296998, -0.0996759264), + vec3(0.0083161484, -0.0060324498, 0.9977163014) +); + +const mat3 AP1_2_AP0_MAT = mat3( // ACEStoning to ACEScg Color Space + vec3(0.6954522414, 0.1406786965, 0.1638690622), + vec3(0.0447945634, 0.8596711185, 0.0955343182), + vec3(-0.0055258826, 0.0040252103, 1.0015006723) +); + +const vec3 AP1_RGB2Y = vec3(0.2722287168, 0.6740817658, 0.0536895174); // Desaturation Coeff +const mat3 sRGB_2_AP0 = (sRGB_2_XYZ_MAT * D65_2_D60_CAT) * XYZ_2_AP0_MAT; \ No newline at end of file diff --git a/shaders/world1/lib/ROBOBO_sky.glsl b/shaders/world1/lib/ROBOBO_sky.glsl new file mode 100644 index 0000000..ef8fcfd --- /dev/null +++ b/shaders/world1/lib/ROBOBO_sky.glsl @@ -0,0 +1,157 @@ +const float sunAngularSize = 0.533333; +const float moonAngularSize = 0.516667; + +//Sky coefficients and heights + +#define airNumberDensity 2.5035422e25 +#define ozoneConcentrationPeak 8e-6 +const float ozoneNumberDensity = airNumberDensity * ozoneConcentrationPeak; +#define ozoneCrossSection vec3(4.51103766177301e-21, 3.2854797958699e-21, 1.96774621921165e-22) + +#define sky_planetRadius 6731e3 + +#define sky_atmosphereHeight 110e3 +#define sky_scaleHeights vec2(8.0e3, 1.2e3) + +#define sky_mieg 0.80 //[0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 ] +#define sky_coefficientRayleighR 5.8 //[0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5.0 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6.0 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7.0 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8.0 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9.0 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10.0 ] +#define sky_coefficientRayleighG 1.35 //[0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5.0 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6.0 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7.0 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8.0 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9.0 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10.0 ] +#define sky_coefficientRayleighB 3.31 //[0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5.0 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6.0 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7.0 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8.0 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9.0 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10.0 ] + +#define sky_coefficientRayleigh vec3(sky_coefficientRayleighR*1e-6, sky_coefficientRayleighG*1e-5, sky_coefficientRayleighB*1e-5) + + +#define sky_coefficientMieR 3.0 //[0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5.0 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6.0 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7.0 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8.0 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9.0 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10.0 ] +#define sky_coefficientMieG 3.0 //[0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5.0 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6.0 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7.0 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8.0 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9.0 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10.0 ] +#define sky_coefficientMieB 3.0 //[0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5.0 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6.0 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7.0 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8.0 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9.0 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10.0 ] + +#define sky_coefficientMie vec3(sky_coefficientMieR*1e-6, sky_coefficientMieG*1e-6, sky_coefficientMieB*1e-6) // Should be >= 2e-6 +const vec3 sky_coefficientOzone = (ozoneCrossSection * (ozoneNumberDensity * 1.e-6)); // ozone cross section * (ozone number density * (cm ^ 3)) + +const vec2 sky_inverseScaleHeights = 1.0 / sky_scaleHeights; +const vec2 sky_scaledPlanetRadius = sky_planetRadius * sky_inverseScaleHeights; +const float sky_atmosphereRadius = sky_planetRadius + sky_atmosphereHeight; +const float sky_atmosphereRadiusSquared = sky_atmosphereRadius * sky_atmosphereRadius; + +#define sky_coefficientsScattering mat2x3(sky_coefficientRayleigh, sky_coefficientMie) +const mat3 sky_coefficientsAttenuation = mat3(sky_coefficientRayleigh, sky_coefficientMie * 1.11, sky_coefficientOzone); // commonly called the extinction coefficient + +#define sun_illuminance 128000.0 //[10000.0 20000.0 30000.0 40000.0 50000.0 60000.0 70000.0 80000.0 90000.0 100000.0 110000.0 120000.0 130000.0 140000.0 160000.0] +#define moon_illuminance 60.0 //[0.0 10.0 20.0 30.0 40.0 50.0 60.0 70.0 80.0 90.0 100.0 1000.0 10000.0 100000.0] + +#define sunColorR 1.0 //[0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 ] +#define sunColorG 0.9 //[0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 ] +#define sunColorB 0.81 //[0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 ] + +#define sunColorBase (vec3(sunColorR,sunColorG,sunColorB) * sun_illuminance) +//#define sunColorBase blackbody(5778) * sun_illuminance +#define moonColorR 1.0 //[0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 ] +#define moonColorG 0.9 //[0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 ] +#define moonColorB 0.81 //[0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 ] + +#define moonColorBase (vec3(moonColorR, moonColorG, moonColorB) * moon_illuminance ) //Fake Purkinje effect + +float sky_rayleighPhase(float cosTheta) { + const vec2 mul_add = vec2(0.1, 0.28) * rPI; + return cosTheta * mul_add.x + mul_add.y; // optimized version from [Elek09], divided by 4 pi for energy conservation +} + +float sky_miePhase(float cosTheta, const float g) { + float gg = g * g; + return (gg * -0.25 + 0.25) * rPI * pow(-(2.0 * g) * cosTheta + (gg + 1.0), -1.5); +} + +vec2 sky_phase(float cosTheta, const float g) { + return vec2(sky_rayleighPhase(cosTheta), sky_miePhase(cosTheta, g)); +} + +vec3 sky_density(float centerDistance) { + vec2 rayleighMie = exp(centerDistance * -sky_inverseScaleHeights + sky_scaledPlanetRadius); + + // Ozone distribution curve by Sergeant Sarcasm - https://www.desmos.com/calculator/j0wozszdwa + float ozone = exp(-max(0.0, (35000.0 - centerDistance) - sky_planetRadius) * (1.0 / 5000.0)) + * exp(-max(0.0, (centerDistance - 35000.0) - sky_planetRadius) * (1.0 / 15000.0)); + return vec3(rayleighMie, ozone); +} + +vec3 sky_airmass(vec3 position, vec3 direction, float rayLength, const float steps) { + float stepSize = rayLength * (1.0 / steps); + vec3 increment = direction * stepSize; + position += increment * 0.5; + + vec3 airmass = vec3(0.0); + for (int i = 0; i < steps; ++i, position += increment) { + airmass += sky_density(length(position)); + } + + return airmass * stepSize; +} +vec3 sky_airmass(vec3 position, vec3 direction, const float steps) { + float rayLength = dot(position, direction); + rayLength = rayLength * rayLength + sky_atmosphereRadiusSquared - dot(position, position); + if (rayLength < 0.0) return vec3(0.0); + rayLength = sqrt(rayLength) - dot(position, direction); + + return sky_airmass(position, direction, rayLength, steps); +} + +vec3 sky_opticalDepth(vec3 position, vec3 direction, float rayLength, const float steps) { + return sky_coefficientsAttenuation * sky_airmass(position, direction, rayLength, steps); +} +vec3 sky_opticalDepth(vec3 position, vec3 direction, const float steps) { + return sky_coefficientsAttenuation * sky_airmass(position, direction, steps); +} + +vec3 sky_transmittance(vec3 position, vec3 direction, const float steps) { + return exp2(-sky_opticalDepth(position, direction, steps) * rLOG2); +} + + + +vec3 calculateAtmosphere(vec3 background, vec3 viewVector, vec3 upVector, vec3 sunVector, vec3 moonVector, out vec2 pid, out vec3 transmittance, const int iSteps, float noise) { + const int jSteps = 4; + + vec3 viewPosition = (sky_planetRadius + eyeAltitude) * upVector; + + vec2 aid = rsi(viewPosition, viewVector, sky_atmosphereRadius); + if (aid.y < 0.0) {transmittance = vec3(1.0); return vec3(0.0);} + + pid = rsi(viewPosition, viewVector, sky_planetRadius * 0.998); + bool planetIntersected = pid.y >= 0.0; + + vec2 sd = vec2((planetIntersected && pid.x < 0.0) ? pid.y : max(aid.x, 0.0), (planetIntersected && pid.x > 0.0) ? pid.x : aid.y); + + float stepSize = (sd.y - sd.x) * (1.0 / iSteps); + vec3 increment = viewVector * stepSize; + vec3 position = viewVector * sd.x + viewPosition; + position += increment * (0.34*noise); + vec2 phaseSun = sky_phase(dot(viewVector, sunVector ), sky_mieg); + vec2 phaseMoon = sky_phase(dot(viewVector, moonVector), sky_mieg); + + vec3 scatteringSun = vec3(0.0); + vec3 scatteringMoon = vec3(0.0); + vec3 scatteringAmbient = vec3(0.0); + transmittance = vec3(1.0); + + for (int i = 0; i < iSteps; ++i, position += increment) { + vec3 density = sky_density(length(position)); + if (density.y > 1e35) break; + vec3 stepAirmass = density * stepSize; + vec3 stepOpticalDepth = sky_coefficientsAttenuation * stepAirmass; + + vec3 stepTransmittance = exp2(-stepOpticalDepth * rLOG2); + vec3 stepTransmittedFraction = clamp01((stepTransmittance - 1.0) / -stepOpticalDepth); + vec3 stepScatteringVisible = transmittance * stepTransmittedFraction; + + scatteringSun += sky_coefficientsScattering * (stepAirmass.xy * phaseSun ) * stepScatteringVisible * sky_transmittance(position, sunVector, jSteps); + scatteringMoon += sky_coefficientsScattering * (stepAirmass.xy * phaseMoon) * stepScatteringVisible * sky_transmittance(position, moonVector, jSteps); + // Nice way to fake multiple scattering. + scatteringAmbient += sky_coefficientsScattering * stepAirmass.xy * stepScatteringVisible; + + transmittance *= stepTransmittance; + } + + vec3 scattering = scatteringSun * sunColorBase + scatteringAmbient * background + scatteringMoon*moonColorBase; + + return scattering; +} diff --git a/shaders/world1/lib/Shadow_Params.glsl b/shaders/world1/lib/Shadow_Params.glsl new file mode 100644 index 0000000..7556167 --- /dev/null +++ b/shaders/world1/lib/Shadow_Params.glsl @@ -0,0 +1,22 @@ +const float ambientOcclusionLevel = 0.3; //[0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 ] +const float sunPathRotation = -35; //[-90 -89 -88 -87 -86 -85 -84 -83 -82 -81 -80 -79 -78 -77 -76 -75 -74 -73 -72 -71 -70 -69 -68 -67 -66 -65 -64 -63 -62 -61 -60 -59 -58 -57 -56 -55 -54 -53 -52 -51 -50 -49 -48 -47 -46 -45 -44 -43 -42 -41 -40 -39 -38 -37 -36 -35 -34 -33 -32 -31 -30 -29 -28 -27 -26 -25 -24 -23 -22 -21 -20 -19 -18 -17 -16 -15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 ] + +const int shadowMapResolution = 3172; //Will probably crash at 16 384 [512 768 1024 1536 2048 3172 4096 8192 16384] +const float shadowDistance = 150; //[32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 ] Not linear at all when shadowDistanceRenderMul is set to -1.0, 175.0 is enough for 40 render distance +const float shadowDistanceRenderMul = -1.0; //[-1.0 1.0] Can help to increase shadow draw distance when set to -1.0, at the cost of performance + + +const float k = 1.8; +const float d0 = 0.04; +const float d1 = 0.61; +float a = exp(d0); +float b = (exp(d1)-a)*shadowDistance/128.0; + +vec4 BiasShadowProjection(in vec4 projectedShadowSpacePosition) { + float distortFactor = log(length(projectedShadowSpacePosition.xy)*b+a)*k; + projectedShadowSpacePosition.xy /= distortFactor; + return projectedShadowSpacePosition; +} +float calcDistort(vec2 worldpos){ + return 1.0/(log(length(worldpos)*b+a)*k); +} diff --git a/shaders/world1/lib/clouds.glsl b/shaders/world1/lib/clouds.glsl new file mode 100644 index 0000000..abd35ef --- /dev/null +++ b/shaders/world1/lib/clouds.glsl @@ -0,0 +1,16 @@ +vec3 cloud2D(vec3 fragpos,vec3 col){ + vec3 wpos = fragpos; + float wind = frameTimeCounter/200.; + vec2 intersection = ((2000.0-cameraPosition.y)*wpos.xz*inversesqrt(wpos.y+cameraPosition.y/512.-50./512.) + cameraPosition.xz+wind)/40000.; + + + float phase = pow(clamp(dot(fragpos,sunVec),0.,1.),2.)*0.5+0.5; + + float fbm = clamp((texture2D(noisetex,intersection*vec2(1.,1.5)).a + texture2D(noisetex,intersection*vec2(2.,7.)+wind*0.4).a/2.)-0.5*(1.0-rainStrength),0.,1.) ; + + + + + return mix(col,6.*(vec3(0.9,1.2,1.5)*skyIntensityNight*0.02*(1.0-rainStrength*0.9)+17.*phase*nsunColor*skyIntensity*0.7*(1.0-rainStrength*0.9)),0.0*(fbm*fbm)*(fbm*fbm)*(fbm*clamp(wpos.y*0.9,0.,1.))); + +} \ No newline at end of file diff --git a/shaders/world1/lib/color_dither.glsl b/shaders/world1/lib/color_dither.glsl new file mode 100644 index 0000000..73c4960 --- /dev/null +++ b/shaders/world1/lib/color_dither.glsl @@ -0,0 +1,46 @@ +//using white noise for color dithering : gives a somewhat more "filmic" look when noise is visible +float nrand( vec2 n ) +{ + return fract(sin(dot(n.xy, vec2(12.9898, 78.233)))* 43758.5453); +} + +float triangWhiteNoise( vec2 n ) +{ + + float t = fract( frameTimeCounter ); + float rnd = nrand( n + 0.07*t ); + + float center = rnd*2.0-1.0; + rnd = center*inversesqrt(abs(center)); + rnd = max(-1.0,rnd); + return rnd-sign(center); +} + +vec3 fp10Dither(vec3 color,vec2 tc01){ + float dither = triangWhiteNoise(tc01); + const vec3 mantissaBits = vec3(6.,6.,5.); + vec3 exponent = floor(log2(color)); + return color + dither*exp2(-mantissaBits)*exp2(exponent); +} + +vec3 fp16Dither(vec3 color,vec2 tc01){ + float dither = triangWhiteNoise(tc01); + const vec3 mantissaBits = vec3(10.); + vec3 exponent = floor(log2(color)); + return color + dither*exp2(-mantissaBits)*exp2(exponent); +} + +vec3 int8Dither(vec3 color,vec2 tc01){ + float dither = triangWhiteNoise(tc01); + return color + dither*exp2(-8.0); +} + +vec3 int10Dither(vec3 color,vec2 tc01){ + float dither = triangWhiteNoise(tc01); + return color + dither*exp2(-10.0); +} + +vec3 int16Dither(vec3 color,vec2 tc01){ + float dither = triangWhiteNoise(tc01); + return color + dither*exp2(-16.0); +} \ No newline at end of file diff --git a/shaders/world1/lib/color_transforms.glsl b/shaders/world1/lib/color_transforms.glsl new file mode 100644 index 0000000..4813ff4 --- /dev/null +++ b/shaders/world1/lib/color_transforms.glsl @@ -0,0 +1,131 @@ +//faster and actually more precise than pow 2.2 +vec3 toLinear(vec3 sRGB){ + return sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878); +} + +float luma(vec3 color) { + return dot(color,vec3(0.299, 0.587, 0.114)); +} +vec3 ToneMap_Hejl2015(in vec3 hdr) +{ + vec4 vh = vec4(hdr*0.85, 3.0); //0 + vec4 va = (1.75 * vh) + 0.05; //0.05 + vec4 vf = ((vh * va + 0.004f) / ((vh * (va + 0.55f) + 0.0491f))) - 0.0821f+0.000633604888; //((0+0.004)/((0*(0.05+0.55)+0.0491)))-0.0821 + return vf.xyz / vf.www; +} +const mat3 ACESInputMat = +mat3(0.59719, 0.35458, 0.04823, + 0.07600, 0.90834, 0.01566, + 0.02840, 0.13383, 0.83777 +); + +// ODT_SAT => XYZ => D60_2_D65 => sRGB +const mat3 ACESOutputMat = +mat3( 1.60475, -0.53108, -0.07367, + -0.10208, 1.10813, -0.00605, + -0.00327, -0.07276, 1.07602 +); +vec3 LinearTosRGB(in vec3 color) +{ + vec3 x = color * 12.92f; + vec3 y = 1.055f * pow(clamp(color,0.0,1.0), vec3(1.0f / 2.4f)) - 0.055f; + + vec3 clr = color; + clr.r = color.r < 0.0031308f ? x.r : y.r; + clr.g = color.g < 0.0031308f ? x.g : y.g; + clr.b = color.b < 0.0031308f ? x.b : y.b; + + return clr; +} +vec3 HableTonemap(vec3 linearColor) { + // A = shoulder strength + const float A = 0.22; + // B = linear strength + const float B = 0.3; + // C = linear angle + const float C = 0.1; + // D = toe strength + const float D = 0.4; + // E = toe numerator + const float E = 0.025; + // F = toe denominator + const float F = 0.30; + // Note: E / F = toe angle + // linearWhite = linear white point value + + vec3 x = linearColor*2.8; + vec3 color = ((x * (A * x + C * B) + D * E) / (x * (A * x + B) + D * F)) - E / F; + + const float W = 11.2; + const float white = ((W * (A * W + C * B) + D * E) / (W * (A * W + B) + D * F)) - E / F; + + return color / white; +} + +vec3 reinhard(vec3 x){ +x *= 1.66; +return x/(1.0+x); +} +vec3 ACESFilm( vec3 x ) +{ + x *= 0.23/0.267; + float a = 2.51f; + float b = 0.03f; + float c = 2.43f; + float d = 0.59f; + float e = 0.14f; + return (x*(a*x+b))/(x*(c*x+d)+e); +} + +// From https://www.shadertoy.com/view/WdjSW3 +vec3 Tonemap_Lottes(vec3 x) { + // Lottes 2016, "Advanced Techniques and Optimization of HDR Color Pipelines" + const float a = 1.7; + const float d = 0.92; + const float hdrMax = 3.0; + const float midIn = 0.2475; + const float midOut = 0.267; + + // Can be precomputed + const float b = + (-pow(midIn, a) + pow(hdrMax, a) * midOut) / + ((pow(hdrMax, a * d) - pow(midIn, a * d)) * midOut); + const float c = + (pow(hdrMax, a * d) * pow(midIn, a) - pow(hdrMax, a) * pow(midIn, a * d) * midOut) / + ((pow(hdrMax, a * d) - pow(midIn, a * d)) * midOut); + + return pow(x,vec3(a)) / (pow(x, vec3(a * d)) * b + c); +} +// From https://www.shadertoy.com/view/WdjSW3 +vec3 Tonemap_Uchimura(vec3 x, float P, float a, float m, float l, float c, float b) { + // Uchimura 2017, "HDR theory and practice" + // Math: https://www.desmos.com/calculator/gslcdxvipg + // Source: https://www.slideshare.net/nikuque/hdr-theory-and-practicce-jp + float l0 = ((P - m) * l) / a; + float L0 = m - m / a; + float L1 = m + (1.0 - m) / a; + float S0 = m + l0; + float S1 = m + a * l0; + float C2 = (a * P) / (P - S1); + float CP = -C2 / P; + + vec3 w0 = 1.0 - smoothstep(0.0, m, x); + vec3 w2 = step(m + l0, x); + vec3 w1 = 1.0 - w0 - w2; + + vec3 T = m * pow(x / m, vec3(c)) + b; + vec3 S = P - (P - S1) * exp(CP * (x - S0)); + vec3 L = m + a * (x - m); + + return T * w0 + L * w1 + S * w2; +} + +vec3 Tonemap_Uchimura(vec3 x) { + const float P = 1.0; // max display brightness + const float a = 1.0; // contrast + const float m = 0.22; // linear section start + const float l = 0.4; // linear section length + const float c = 1.33; // black + const float b = 0.0; // pedestal + return Tonemap_Uchimura(x, P, a, m, l, c, b); +} diff --git a/shaders/world1/lib/composite3.fsh b/shaders/world1/lib/composite3.fsh new file mode 100644 index 0000000..cb2a2ba --- /dev/null +++ b/shaders/world1/lib/composite3.fsh @@ -0,0 +1,78 @@ +#version 120 +//Horizontal bilateral blur for volumetric fog + Forward rendered objects + Draw volumetric fog +#extension GL_EXT_gpu_shader4 : enable + + + +varying vec2 texcoord; +flat varying vec3 zMults; +uniform sampler2D depthtex0; +uniform sampler2D colortex3; +uniform sampler2D colortex2; +uniform sampler2D colortex0; + +uniform int frameCounter; +uniform float far; +uniform float near; +uniform int isEyeInWater; + +uniform vec2 texelSize; +float ld(float depth) { + return 1.0 / (zMults.y - depth * zMults.z); // (-depth * (far - near)) = (2.0 * near)/ld - far - near +} + +vec4 BilateralUpscale(sampler2D tex, sampler2D depth,vec2 coord,float frDepth){ + vec4 vl = vec4(0.0); + float sum = 0.0; + mat3x3 weights; + ivec2 posD = ivec2(coord/2.0)*2; + ivec2 posVl = ivec2(coord/2.0); + float dz = zMults.x; + ivec2 pos = (ivec2(gl_FragCoord.xy+frameCounter) % 3 ); + //pos = ivec2(1,-1); + + ivec2 tcDepth = posD + ivec2(-2,-2) + pos*2; + float dsample = ld(texelFetch2D(depth,tcDepth,0).r); + float w = abs(dsample-frDepth) < dz ? 1.0 : 1e-5; + vl += texelFetch2D(tex,posVl+ivec2(-1)+pos,0)*w; + sum += w; + + tcDepth = posD + ivec2(-2,0) + pos*2; + dsample = ld(texelFetch2D(depth,tcDepth,0).r); + w = abs(dsample-frDepth) < dz ? 1.0 : 1e-5; + vl += texelFetch2D(tex,posVl+ivec2(-1,0)+pos,0)*w; + sum += w; + + tcDepth = posD + ivec2(0) + pos*2; + dsample = ld(texelFetch2D(depth,tcDepth,0).r); + w = abs(dsample-frDepth) < dz ? 1.0 : 1e-5; + vl += texelFetch2D(tex,posVl+ivec2(0)+pos,0)*w; + sum += w; + + tcDepth = posD + ivec2(0,-2) + pos*2; + dsample = ld(texelFetch2D(depth,tcDepth,0).r); + w = abs(dsample-frDepth) < dz ? 1.0 : 1e-5; + vl += texelFetch2D(tex,posVl+ivec2(0,-1)+pos,0)*w; + sum += w; + + return vl/sum; +} + +void main() { +/* DRAWBUFFERS:0 */ + + //3x3 bilateral upscale from half resolution + float frDepth = ld(texture2D(depthtex0,texcoord).x); + vec4 vl = BilateralUpscale(colortex0,depthtex0,gl_FragCoord.xy,frDepth); + + vec3 color = texture2D(colortex3,texcoord).rgb; + vec4 transparencies = texture2D(colortex2,texcoord); + color = color*(1.0-transparencies.a)+transparencies.rgb*10.; + + color *= vl.a; + color += vl.rgb; + + gl_FragData[0].rgb = clamp(color,6.11*1e-5,65000.0); + + gl_FragData[0].a = vl.a; +} diff --git a/shaders/world1/lib/composite3.vsh b/shaders/world1/lib/composite3.vsh new file mode 100644 index 0000000..05cecb7 --- /dev/null +++ b/shaders/world1/lib/composite3.vsh @@ -0,0 +1,19 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + +varying vec2 texcoord; +flat varying vec3 zMults; +uniform float far; +uniform float near; +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + zMults = vec3(1.0/(far * near),far+near,far-near); + gl_Position = ftransform(); + texcoord = gl_MultiTexCoord0.xy; + +} diff --git a/shaders/world1/lib/projections.glsl b/shaders/world1/lib/projections.glsl new file mode 100644 index 0000000..72ab381 --- /dev/null +++ b/shaders/world1/lib/projections.glsl @@ -0,0 +1,55 @@ +uniform mat4 gbufferProjection; +uniform mat4 gbufferProjectionInverse; +uniform mat4 gbufferPreviousProjection; +uniform mat4 gbufferModelViewInverse; +uniform mat4 gbufferModelView; +uniform mat4 shadowModelView; +uniform mat4 shadowProjection; + +uniform vec3 cameraPosition; + + +#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) +#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) + +vec3 toClipSpace3(vec3 viewSpacePosition) { + return projMAD(gbufferProjection, viewSpacePosition) / -viewSpacePosition.z * 0.5 + 0.5; +} + +vec3 toScreenSpace(vec3 p) { + vec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); + vec3 p3 = p * 2. - 1.; + vec4 fragposition = iProjDiag * p3.xyzz + gbufferProjectionInverse[3]; + return fragposition.xyz / fragposition.w; +} + +vec3 toScreenSpaceVector(vec3 p) { + vec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); + vec3 p3 = p * 2. - 1.; + vec4 fragposition = iProjDiag * p3.xyzz + gbufferProjectionInverse[3]; + return normalize(fragposition.xyz); +} + +vec3 toWorldSpace(vec3 p3){ + p3 = mat3(gbufferModelViewInverse) * p3 + gbufferModelViewInverse[3].xyz; + return p3; +} + +vec3 toWorldSpaceCamera(vec3 p3){ + p3 = mat3(gbufferModelViewInverse) * p3 + gbufferModelViewInverse[3].xyz; + return p3 + cameraPosition; +} + +vec3 toShadowSpace(vec3 p3){ + p3 = mat3(gbufferModelViewInverse) * p3 + gbufferModelViewInverse[3].xyz; + p3 = mat3(shadowModelView) * p3 + shadowModelView[3].xyz; + return p3; +} + +vec3 toShadowSpaceProjected(vec3 p3){ + p3 = mat3(gbufferModelViewInverse) * p3 + gbufferModelViewInverse[3].xyz; + p3 = mat3(shadowModelView) * p3 + shadowModelView[3].xyz; + p3 = diagonal3(shadowProjection) * p3 + shadowProjection[3].xyz; + + return p3; +} diff --git a/shaders/world1/lib/sky_gradient.glsl b/shaders/world1/lib/sky_gradient.glsl new file mode 100644 index 0000000..559faf3 --- /dev/null +++ b/shaders/world1/lib/sky_gradient.glsl @@ -0,0 +1,84 @@ +#define DRAW_SUN //if not using custom sky +#define SKY_BRIGHTNESS_DAY 1.0 //[0.0 0.5 0.75 1. 1.2 1.4 1.6 1.8 2.0] +#define SKY_BRIGHTNESS_NIGHT 1.0 //[0.0 0.5 0.75 1. 1.2 1.4 1.6 1.8 2.0] +#define ffstep(x,y) clamp((y - x) * 1e35,0.0,1.0) +vec3 drawSun(float cosY, float sunInt,vec3 nsunlight,vec3 inColor){ + return inColor+nsunlight/0.0008821203*pow(smoothstep(cos(0.0093084168595*3.2),cos(0.0093084168595*1.8),cosY),3.)*0.62; +} +const float pi = 3.141592653589793238462643383279502884197169; +vec2 sphereToCarte(vec3 dir) { + float lonlat = atan(-dir.x, -dir.z); + return vec2(lonlat * (0.5/pi) +0.5,0.5*dir.y+0.5); +} +vec3 skyFromTex(vec3 pos,sampler2D sampler){ + vec2 p = sphereToCarte(pos); + return texture2D(sampler,p*texelSize*256.+vec2(18.5,1.5)*texelSize).rgb; +} +float w0(float a) +{ + return (1.0/6.0)*(a*(a*(-a + 3.0) - 3.0) + 1.0); +} + +float w1(float a) +{ + return (1.0/6.0)*(a*a*(3.0*a - 6.0) + 4.0); +} + +float w2(float a) +{ + return (1.0/6.0)*(a*(a*(-3.0*a + 3.0) + 3.0) + 1.0); +} + +float w3(float a) +{ + return (1.0/6.0)*(a*a*a); +} + +float g0(float a) +{ + return w0(a) + w1(a); +} + +float g1(float a) +{ + return w2(a) + w3(a); +} + +float h0(float a) +{ + return -1.0 + w1(a) / (w0(a) + w1(a)); +} + +float h1(float a) +{ + return 1.0 + w3(a) / (w2(a) + w3(a)); +} + +vec4 texture2D_bicubic(sampler2D tex, vec2 uv) +{ + vec4 texelSize = vec4(texelSize,1.0/texelSize); + uv = uv*texelSize.zw; + vec2 iuv = floor( uv ); + vec2 fuv = fract( uv ); + + float g0x = g0(fuv.x); + float g1x = g1(fuv.x); + float h0x = h0(fuv.x); + float h1x = h1(fuv.x); + float h0y = h0(fuv.y); + float h1y = h1(fuv.y); + + vec2 p0 = (vec2(iuv.x + h0x, iuv.y + h0y) - 0.5) * texelSize.xy; + vec2 p1 = (vec2(iuv.x + h1x, iuv.y + h0y) - 0.5) * texelSize.xy; + vec2 p2 = (vec2(iuv.x + h0x, iuv.y + h1y) - 0.5) * texelSize.xy; + vec2 p3 = (vec2(iuv.x + h1x, iuv.y + h1y) - 0.5) * texelSize.xy; + + return g0(fuv.y) * (g0x * texture2D(tex, p0) + + g1x * texture2D(tex, p1)) + + g1(fuv.y) * (g0x * texture2D(tex, p2) + + g1x * texture2D(tex, p3)); +} +vec4 skyCloudsFromTex(vec3 pos,sampler2D sampler){ + vec2 p = sphereToCarte(pos); + return texture2D(sampler,p*texelSize*256.+vec2(18.5+257.,1.5)*texelSize); +} diff --git a/shaders/world1/lib/specular.glsl b/shaders/world1/lib/specular.glsl new file mode 100644 index 0000000..2ee4cdb --- /dev/null +++ b/shaders/world1/lib/specular.glsl @@ -0,0 +1,334 @@ +//#define Specular_Reflections // reflections on blocks. REQUIRES A PBR RESOURCEPACK. +#define Screen_Space_Reflections // toggle screenspace reflections. if you want normal performance but still want a bit of shiny, the sun reflection stays on when this is turned off. +#define Sky_reflection // just in case you dont want it i guess +// #define Rough_reflections // turns the roughness GGXVNDF ON. sizable performance impact, and introduces alot of noise. + +#define Sun_specular_Strength 3 // increase for more sparkles [1 2 3 4 5 6 7 8 9 10] +#define reflection_quality 30 // adjust the quality of the screenspace reflections. [6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 ] +#define Roughness_Threshold 1.5 // using a curve on the roughness, make the reflections more or less visible on rough surfaces. good for hiding noise on rough materials [1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 ] + +// #define SCREENSHOT_MODE // go render mode and accumulate frames for as long as you want for max image quality. + +uniform sampler2D gaux1; +uniform int framemod8; + +const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.), + vec2(-1.,3.)/8., + vec2(5.0,1.)/8., + vec2(-3,-5.)/8., + vec2(-5.,5.)/8., + vec2(-7.,-1.)/8., + vec2(3,7.)/8., + vec2(7.,-7.)/8.); + + +// sun specular stuff +float square(float x){ + return x*x; +} +float g(float NdotL, float roughness){ + float alpha = square(max(roughness, 0.02)); + return 2.0 * NdotL / (NdotL + sqrt(square(alpha) + (1.0 - square(alpha)) * square(NdotL))); +} +float gSimple(float dp, float roughness){ + float k = roughness + 1; + k *= k/8.0; + return dp / (dp * (1.0-k) + k); +} +vec3 GGX2(vec3 n, vec3 v, vec3 l, float r, vec3 F0) { + + float roughness = r; // when roughness is zero it fucks up + + float alpha = square(roughness) + 1e-4; + + + vec3 h = normalize(l + v); + + float dotLH = clamp(dot(h,l),0.,1.); + float dotNH = clamp(dot(h,n),0.,1.); + float dotNL = clamp(dot(n,l),0.,1.); + float dotNV = clamp(dot(n,v),0.,1.); + float dotVH = clamp(dot(h,v),0.,1.); + + + float D = alpha / (3.141592653589793*square(square(dotNH) * (alpha - 1.0) + 1.0)); + float G = gSimple(dotNV, roughness) * gSimple(dotNL, roughness); + vec3 F = F0 + (1. - F0) * exp2((-5.55473*dotVH-6.98316)*dotVH); + + return dotNL * F * (G * D / (4 * dotNV * dotNL + 1e-7)); +} + + +// other shit +float invLinZ (float lindepth){ + return -((2.0*near/lindepth)-far-near)/(far-near); +} +vec3 toClipSpace3(vec3 viewSpacePosition) { + return projMAD(gbufferProjection, viewSpacePosition) / -viewSpacePosition.z * 0.5 + 0.5; +} +float linZ(float depth) { + return (2.0 * near) / (far + near - depth * (far - near)); + // l = (2*n)/(f+n-d(f-n)) + // f+n-d(f-n) = 2n/l + // -d(f-n) = ((2n/l)-f-n) + // d = -((2n/l)-f-n)/(f-n) + +} +void frisvad(in vec3 n, out vec3 f, out vec3 r){ + if(n.z < -0.9) { + f = vec3(0.,-1,0); + r = vec3(-1, 0, 0); + } else { + float a = 1./(1.+n.z); + float b = -n.x*n.y*a; + f = vec3(1. - n.x*n.x*a, b, -n.x) ; + r = vec3(b, 1. - n.y*n.y*a , -n.y); + } +} +mat3 CoordBase(vec3 n){ + vec3 x,y; + frisvad(n,x,y); + return mat3(x,y,n); +} +float unpackRoughness(float x){ + float r = 1.0 - x; + return clamp(r*r,0,1); +} +vec2 R2_samples_spec(int n){ + vec2 alpha = vec2(0.75487765, 0.56984026); + return fract(alpha * n); +} + +vec3 sampleGGXVNDF(vec3 V_, float alpha_x, float alpha_y, float U1, float U2, bool ishand){ + // stretch view + vec3 V = normalize(vec3(alpha_x * V_.x, alpha_y * V_.y, V_.z)); + // orthonormal basis + vec3 T1 = (V.z < 0.9999) ? normalize(cross(V, vec3(0,0,1))) : vec3(1,0,0); + vec3 T2 = cross(T1, V); + // sample point with polar coordinates (r, phi) + float a = 1.0 / (1.0 + V.z); + float r = sqrt(U1); + float phi = (U2 -near) ? + (-near -position.z) / dir.z : far*sqrt(3.); + vec3 direction = normalize(toClipSpace3(position+dir*rayLength)-clipPosition); //convert to clip space + direction.xy = normalize(direction.xy); + + //get at which length the ray intersects with the edge of the screen + vec3 maxLengths = (step(0.,direction)-clipPosition) / direction; + float mult = min(min(maxLengths.x,maxLengths.y),maxLengths.z); + + vec3 stepv = direction * mult / quality*vec3(1,1,1.0); + // if(hand) dither *= 0.1 ; + vec3 spos = clipPosition*vec3(1,1,1.0) + stepv*dither; + + float minZ = spos.z+stepv.z; + float maxZ = spos.z+stepv.z; + + spos.xy += TAA_Offset*texelSize*0.5/1; + + // for (int i = 0; i <= int(quality); i++) { + + // // decode depth buffer + // vec2 testthing = hand ? spos.xy*texelSize : spos.xy/texelSize/4.0; // fix for ssr on hand + + // float sp = sqrt(texelFetch2D(gaux1,ivec2(spos.xy/texelSize/4.0),0).w/65000.0); + + // sp = invLinZ(sp); + + // if(sp <= max(maxZ,minZ) && sp >= min(maxZ,minZ) ) return vec3(spos.xy/1,sp); + + // spos += stepv; + + // //small bias + // float biasamount = 0.00015; + // if(hand) biasamount = 0.01; + // // minZ = maxZ-clamp(fres*0.0004 ,0.00004,0.0004) / ld(spos.z); + // minZ = maxZ-biasamount / ld(spos.z); + + // maxZ += stepv.z; + + // } + for (int i = 0; i < int(quality+1); i++) { + + vec2 testthing = hand ? spos.xy : spos.xy/texelSize; // fix for ssr on hand + float sp=texelFetch2D(depthtex1,ivec2(testthing),0).x; + + if(sp <= max(maxZ,minZ) && sp >= min(maxZ,minZ)){ + return vec3(spos.xy,sp); + + } + spos += stepv; + //small bias + float biasamount = 0.00015; + if(hand) biasamount = 0.01; + // minZ = maxZ-clamp(fres*0.0004 ,0.00004,0.0004) / ld(spos.z); + minZ = maxZ-biasamount / ld(spos.z); + maxZ += stepv.z; + } + + return vec3(1.1); +} + +vec3 mix_vec3(vec3 X, vec3 Y, float A){ + return X * (1.0 - A) + Y * A; +} +float mix_float(float X, float Y, float A){ + return X * (1.0 - A) + Y * A; +} + + +// vec3 gaussblur( vec4 colorout, vec2 texcoord ) +// { +// float Pi = 6.28318530718; // Pi*2 + +// // GAUSSIAN BLUR SETTINGS {{{ +// float Directions = 16.0; // BLUR DIRECTIONS (Default 16.0 - More is better but slower) +// float Quality = 3.0; // BLUR QUALITY (Default 4.0 - More is better but slower) +// float Size = 50.0; // BLUR SIZE (Radius) +// // GAUSSIAN BLUR SETTINGS }}} + +// vec2 Radius = Size/vec2(1920,1080); + +// // Normalized pixel coordinates (from 0 to 1) +// vec2 uv = texcoord/vec2(1920,1080); +// // Pixel colour +// vec4 Color = texture2D(colortex3, texcoord); + +// // Blur calculations +// for( float d=0.0; d 0.01; + + if (Roughness_Threshold == 1.0){ hasReflections = roughness > -1; NdotV = -1.0;} + + + vec3 SunReflection = diffuse * GGX2(normal, -np3, sunPos, roughness, f0) * sunCol; + + vec4 Reflections = vec4(0.0); + #ifdef Screen_Space_Reflections + if ( hasReflections && NdotV <= 0.0) { // Skip SSR if ray contribution is low + #ifdef SCREENSHOT_MODE + float rayQuality = reflection_quality; + #else + float rayQuality = mix_float(reflection_quality,0.0,sqrt(roughness)); // Scale quality with ray contribution + #endif + vec3 rtPos = rayTraceSpeculars( mat3(gbufferModelView) * L,fragpos.xyz, noise.b, rayQuality, hand, fresnel); + if (rtPos.z < 1. ){ // Reproject on previous frame + vec3 previousPosition = mat3(gbufferModelViewInverse) * toScreenSpace(rtPos) + gbufferModelViewInverse[3].xyz + cameraPosition-previousCameraPosition; + previousPosition = mat3(gbufferPreviousModelView) * previousPosition + gbufferPreviousModelView[3].xyz; + previousPosition.xy = projMAD(gbufferPreviousProjection, previousPosition).xy / -previousPosition.z * 0.5 + 0.5; + if (previousPosition.x > 0.0 && previousPosition.y > 0.0 && previousPosition.x < 1.0 && previousPosition.x < 1.0) { + Reflections.a = 1.0; + Reflections.rgb = texture2D(colortex5,previousPosition.xy).rgb; + } + } + } + #endif + + // check if the f0 is within the metal ranges, then tint by albedo if it's true. + vec3 Metals = f0.y > 229.5/255.0 ? clamp(albedo + fresnel,0.0,1.0) : vec3(1.0); + Reflections.rgb *= Metals; + + // apply all reflections to the lighting + Reflections_Final += Reflections.rgb * luma(rayContrib); + + // interpolate between the albedos and reflections using the roughness value instead of the sampling. + float visibilityFactor = clamp(exp2((pow(roughness,3.0) / f0.y) * -4),0,1); + #ifdef Rough_reflections + Output = hand ? mix_vec3(Output, Reflections_Final, visibilityFactor) : Reflections_Final; + #else + Output = mix_vec3(Output, Reflections_Final, visibilityFactor); + #endif + Output += SunReflection; +} \ No newline at end of file diff --git a/shaders/world1/lib/stars.glsl b/shaders/world1/lib/stars.glsl new file mode 100644 index 0000000..38d3cbf --- /dev/null +++ b/shaders/world1/lib/stars.glsl @@ -0,0 +1,48 @@ +//Original star code : https://www.shadertoy.com/view/Md2SR3 , optimised + + + +// Return random noise in the range [0.0, 1.0], as a function of x. +float hash12(vec2 p) +{ + vec3 p3 = fract(vec3(p.xyx) * 0.1031); + p3 += dot(p3, p3.yzx + 19.19); + return fract((p3.x + p3.y) * p3.z); +} +// Convert Noise2d() into a "star field" by stomping everthing below fThreshhold to zero. +float NoisyStarField( in vec2 vSamplePos, float fThreshhold ) +{ + float StarVal = hash12( vSamplePos ); + StarVal = clamp(StarVal/(1.0 - fThreshhold) - fThreshhold/(1.0 - fThreshhold),0.0,1.0); + + return StarVal; +} + +// Stabilize NoisyStarField() by only sampling at integer values. +float StableStarField( in vec2 vSamplePos, float fThreshhold ) +{ + // Linear interpolation between four samples. + // Note: This approach has some visual artifacts. + // There must be a better way to "anti alias" the star field. + float fractX = fract( vSamplePos.x ); + float fractY = fract( vSamplePos.y ); + vec2 floorSample = floor( vSamplePos ); + float v1 = NoisyStarField( floorSample, fThreshhold ); + float v2 = NoisyStarField( floorSample + vec2( 0.0, 1.0 ), fThreshhold ); + float v3 = NoisyStarField( floorSample + vec2( 1.0, 0.0 ), fThreshhold ); + float v4 = NoisyStarField( floorSample + vec2( 1.0, 1.0 ), fThreshhold ); + + float StarVal = v1 * ( 1.0 - fractX ) * ( 1.0 - fractY ) + + v2 * ( 1.0 - fractX ) * fractY + + v3 * fractX * ( 1.0 - fractY ) + + v4 * fractX * fractY; + return StarVal; +} + +float stars(vec3 fragpos){ + + float elevation = clamp(fragpos.y,0.,1.); + vec2 uv = fragpos.xz/(1.+elevation); + + return StableStarField(uv*700.,0.999)/4.*(0.3-0.3*rainStrength); +} diff --git a/shaders/world1/lib/texFiltering.glsl b/shaders/world1/lib/texFiltering.glsl new file mode 100644 index 0000000..7d58676 --- /dev/null +++ b/shaders/world1/lib/texFiltering.glsl @@ -0,0 +1,19 @@ +vec4 smoothfilter(in sampler2D tex, in vec2 uv, in vec2 textureResolution) +{ + uv = uv*textureResolution + 0.5; + vec2 iuv = floor( uv ); + vec2 fuv = fract( uv ); + uv = iuv + (fuv*fuv)*(3.0-2.0*fuv); + uv = uv/textureResolution - 0.5/textureResolution; + return texture2D( tex, uv); +} + +float shadowsmoothfilter(in sampler2DShadow tex, in vec3 uv,in float textureResolution) +{ + uv.xy = uv.xy*textureResolution + 0.5; + vec2 iuv = floor( uv.xy ); + vec2 fuv = fract( uv.xy ); + uv.xy = iuv + (fuv*fuv)*(3.0-2.0*fuv); + uv.xy = uv.xy/textureResolution - 0.5/textureResolution; + return shadow2D( tex, uv).x; +} diff --git a/shaders/world1/lib/util.glsl b/shaders/world1/lib/util.glsl new file mode 100644 index 0000000..f701920 --- /dev/null +++ b/shaders/world1/lib/util.glsl @@ -0,0 +1,196 @@ +#define TIME_MULT 1.0 +#define TIME (frameTimeCounter * TIME_MULT) + +const float PI = acos(-1.0); +const float TAU = PI * 2.0; +const float hPI = PI * 0.5; +const float rPI = 1.0 / PI; +const float rTAU = 1.0 / TAU; + +const float PHI = sqrt(5.0) * 0.5 + 0.5; +const float rLOG2 = 1.0 / log(2.0); + +const float goldenAngle = TAU / PHI / PHI; + +#define clamp01(x) clamp(x, 0.0, 1.0) +#define max0(x) max(x, 0.0) +#define min0(x) min(x, 0.0) +#define max3(a) max(max(a.x, a.y), a.z) +#define min3(a) min(min(a.x, a.y), a.z) +#define max4(a, b, c, d) max(max(a, b), max(c, d)) +#define min4(a, b, c, d) min(min(a, b), min(c, d)) + +#define fsign(x) (clamp01(x * 1e35) * 2.0 - 1.0) +#define fstep(x,y) clamp01((y - x) * 1e35) + +#define diagonal2(m) vec2((m)[0].x, (m)[1].y) +#define diagonal3(m) vec3(diagonal2(m), m[2].z) +#define diagonal4(m) vec4(diagonal3(m), m[2].w) + +#define transMAD(mat, v) (mat3(mat) * (v) + (mat)[3].xyz) +#define projMAD(mat, v) (diagonal3(mat) * (v) + (mat)[3].xyz) + +#define encodeColor(x) (x * 0.00005) +#define decodeColor(x) (x * 20000.0) + +#define cubeSmooth(x) (x * x * (3.0 - 2.0 * x)) + +#define lumCoeff vec3(0.2125, 0.7154, 0.0721) + +float facos(const float sx){ + float x = clamp(abs( sx ),0.,1.); + float a = sqrt( 1. - x ) * ( -0.16882 * x + 1.56734 ); + return sx > 0. ? a : PI - a; + //float c = clamp(-sx * 1e35, 0., 1.); + //return c * pi + a * -(c * 2. - 1.); //no conditional version +} + + +vec2 sincos(float x){ + return vec2(sin(x), cos(x)); +} + +vec2 circlemap(float i, float n){ + return sincos(i * n * goldenAngle) * sqrt(i); +} + +vec3 circlemapL(float i, float n){ + return vec3(sincos(i * n * goldenAngle), sqrt(i)); +} + +vec3 calculateRoughSpecular(const float i, const float alpha2, const int steps) { + + float x = (alpha2 * i) / (1.0 - i); + float y = i * float(steps) * 64.0 * 64.0 * goldenAngle; + + float c = inversesqrt(x + 1.0); + float s = sqrt(x) * c; + + return vec3(cos(y) * s, sin(y) * s, c); +} + +vec3 clampNormal(vec3 n, vec3 v){ + float NoV = clamp( dot(n, -v), 0., 1. ); + return normalize( NoV * v + n ); +} + +vec3 srgbToLinear(vec3 srgb){ + return mix( + srgb / 12.92, + pow(.947867 * srgb + .0521327, vec3(2.4) ), + step( .04045, srgb ) + ); +} + +vec3 linearToSRGB(vec3 linear){ + return mix( + linear * 12.92, + pow(linear, vec3(1./2.4) ) * 1.055 - .055, + step( .0031308, linear ) + ); +} + + + +vec3 blackbody(float Temp) +{ + float t = pow(Temp, -1.5); + float lt = log(Temp); + + vec3 col = vec3(0.0); + col.x = 220000.0 * t + 0.58039215686; + col.y = 0.39231372549 * lt - 2.44549019608; + col.y = Temp > 6500. ? 138039.215686 * t + 0.72156862745 : col.y; + col.z = 0.76078431372 * lt - 5.68078431373; + col = clamp01(col); + col = Temp < 1000. ? col * Temp * 0.001 : col; + + return srgbToLinear(col); +} + +float calculateHardShadows(float shadowDepth, vec3 shadowPosition, float bias) { + if(shadowPosition.z >= 1.0) return 1.0; + + return 1.0 - fstep(shadowDepth, shadowPosition.z - bias); +} + +vec3 genUnitVector(vec2 xy) { + xy.x *= TAU; xy.y = xy.y * 2.0 - 1.0; + return vec3(sincos(xy.x) * sqrt(1.0 - xy.y * xy.y), xy.y); +} + +vec2 rotate(vec2 x, float r){ + vec2 sc = sincos(r); + return mat2(sc.x, -sc.y, sc.y, sc.x) * x; +} + +vec3 cartToSphere(vec2 coord) { + coord *= vec2(TAU, PI); + vec2 lon = sincos(coord.x) * sin(coord.y); + return vec3(lon.x, 2.0/PI*coord.y-1.0, lon.y); +} + +vec2 sphereToCart(vec3 dir) { + float lonlat = atan(-dir.x, -dir.z); + return vec2(lonlat * rTAU +0.5,0.5*dir.y+0.5); +} + +mat3 getRotMat(vec3 x,vec3 y){ + float d = dot(x,y); + vec3 cr = cross(y,x); + + float s = length(cr); + + float id = 1.-d; + + vec3 m = cr/s; + + vec3 m2 = m*m*id+d; + vec3 sm = s*m; + + vec3 w = (m.xy*id).xxy*m.yzz; + + return mat3( + m2.x, w.x-sm.z, w.y+sm.y, + w.x+sm.z, m2.y, w.z-sm.x, + w.y-sm.y, w.z+sm.x, m2.z + ); +} + +// No intersection if returned y component is < 0.0 +vec2 rsi(vec3 position, vec3 direction, float radius) { + float PoD = dot(position, direction); + float radiusSquared = radius * radius; + + float delta = PoD * PoD + radiusSquared - dot(position, position); + if (delta < 0.0) return vec2(-1.0); + delta = sqrt(delta); + + return -PoD + vec2(-delta, delta); +} +float HaltonSeq3(int index) + { + float r = 0.; + float f = 1.; + int i = index; + while (i > 0) + { + f /= 3.0; + r += f * (i % 3); + i = int(i / 3.0); + } + return r; + } +float HaltonSeq2(int index) + { + float r = 0.; + float f = 1.; + int i = index; + while (i > 0) + { + f /= 2.0; + r += f * (i % 2); + i = int(i / 2.0); + } + return r; + } diff --git a/shaders/world1/lib/volumetricClouds.glsl b/shaders/world1/lib/volumetricClouds.glsl new file mode 100644 index 0000000..0f538e2 --- /dev/null +++ b/shaders/world1/lib/volumetricClouds.glsl @@ -0,0 +1,342 @@ +#define VOLUMETRIC_CLOUDS// if you don't like the noise on the default cloud settings, turn up the cloud samples. if that hurts performance too much, turn down the clouds quality. + +#define cloud_LevelOfDetail 1 // Number of fbm noise iterations for on-screen clouds (-1 is no fbm) [-1 0 1 2 3 4 5 6 7 8] +#define cloud_ShadowLevelOfDetail 0 // Number of fbm noise iterations for the shadowing of on-screen clouds (-1 is no fbm) [-1 0 1 2 3 4 5 6 7 8] +#define cloud_LevelOfDetailLQ 1 // Number of fbm noise iterations for reflected clouds (-1 is no fbm) [-1 0 1 2 3 4 5 6 7 8] +#define cloud_ShadowLevelOfDetailLQ 0 // Number of fbm noise iterations for the shadowing of reflected clouds (-1 is no fbm) [-1 0 1 2 3 4 5 6 7 8] +#define minRayMarchSteps 20 // Number of ray march steps towards zenith for on-screen clouds [20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 105 110 115 120 125 130 135 140 145 150 155 160 165 170 175 180 185 190 195 200] +#define maxRayMarchSteps 30 // Number of ray march steps towards horizon for on-screen clouds [5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 105 110 115 120 125 130 135 140 145 150 155 160 165 170 175 180 185 190 195 200] +#define minRayMarchStepsLQ 10 // Number of ray march steps towards zenith for reflected clouds [5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100] +#define maxRayMarchStepsLQ 30 // Number of ray march steps towards horizon for reflected clouds [ 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100] +#define cloudMieG 0.5 // Values close to 1 will create a strong peak of luminance around the sun and weak elsewhere, values close to 0 means uniform fog. [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 ] +#define cloudMieG2 0.9 // Multiple scattering approximation. Values close to 1 will create a strong peak of luminance around the sun and weak elsewhere, values close to 0 means uniform fog. [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 ] +#define cloudMie2Multiplier 0.7 // Multiplier for multiple scattering approximation [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 ] + +#define Cloud_top_cutoff 1.0 // the cutoff point on the top part of the cloud. [ 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.5 3.0 4 5 6 7 8 9] +#define Cloud_base_cutoff 5.0 // the cutoff point on the base of the cloud. [0.1 1 2 4 6 8 10 12 14 16 18 20] + + +#ifdef HQ_CLOUDS +int maxIT_clouds = minRayMarchSteps; +int maxIT = maxRayMarchSteps; +#else +int maxIT_clouds = minRayMarchStepsLQ; +int maxIT = maxRayMarchStepsLQ; +#endif + + + +uniform vec3 sunPosition; + + +#define cloudCoverage 0.4 // Cloud coverage [ 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0] +// #define Rain_coverage 0.8 // how much the coverage of the clouds change during rain [ 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 3.0 4.0 5.0] + +/////// shape +#define cloudDensity 0.0514 // Cloud Density, 0.04-0.06 is around irl values [0.0010 0.0011 0.0013 0.0015 0.0017 0.0020 0.0023 0.0026 0.0030 0.0034 0.0039 0.0045 0.0051 0.0058 0.0067 0.0077 0.0088 0.0101 0.0115 0.0132 0.0151 0.0173 0.0199 0.0228 0.0261 0.0299 0.0342 0.0392 0.0449 0.0514 0.0589 0.0675 0.0773 0.0885 0.1014 0.1162 0.1331 0.1524 0.1746 0.2000 0.3 0.35 0.4 0.45 0.5 0.6 0.7 0.8 0.9 1.0] +#define fbmAmount2 1 // Amount of noise added to the cloud shape [0.00 0.02 0.04 0.06 0.08 0.10 0.12 0.14 0.16 0.18 0.20 0.22 0.24 0.26 0.28 0.30 0.32 0.34 0.36 0.38 0.40 0.42 0.44 0.46 0.48 0.50 0.52 0.54 0.56 0.58 0.60 0.62 0.64 0.66 0.68 0.70 0.72 0.74 0.76 0.78 0.80 0.82 0.84 0.86 0.88 0.90 0.92 0.94 0.96 0.98 1.00 1.02 1.04 1.06 1.08 1.10 1.12 1.14 1.16 1.18 1.20 1.22 1.24 1.26 1.28 1.30 1.32 1.34 1.36 1.38 1.40 1.42 1.44 1.46 1.48 1.50 1.52 1.54 1.56 1.58 1.60 1.62 1.64 1.66 1.68 1.70 1.72 1.74 1.76 1.78 1.80 1.82 1.84 1.86 1.88 1.90 1.92 1.94 1.96 1.98 2.00 2.02 2.04 2.06 2.08 2.10 2.12 2.14 2.16 2.18 2.20 2.22 2.24 2.26 2.28 2.30 2.32 2.34 2.36 2.38 2.40 2.42 2.44 2.46 2.48 2.50 2.52 2.54 2.56 2.58 2.60 2.62 2.64 2.66 2.68 2.70 2.72 2.74 2.76 2.78 2.80 2.82 2.84 2.86 2.88 2.90 2.92 2.94 2.96 2.98 3.00] +#define fbmPower1 3.00 // Higher values increases high frequency details of the cloud shape [1.0 1.50 1.52 1.54 1.56 1.58 1.60 1.62 1.64 1.66 1.68 1.70 1.72 1.74 1.76 1.78 1.80 1.82 1.84 1.86 1.88 1.90 1.92 1.94 1.96 1.98 2.00 2.02 2.04 2.06 2.08 2.10 2.12 2.14 2.16 2.18 2.20 2.22 2.24 2.26 2.28 2.30 2.32 2.34 2.36 2.38 2.40 2.42 2.44 2.46 2.48 2.50 2.52 2.54 2.56 2.58 2.60 2.62 2.64 2.66 2.68 2.70 2.72 2.74 2.76 2.78 2.80 2.82 2.84 2.86 2.88 2.90 2.92 2.94 2.96 2.98 3.00 3.02 3.04 3.06 3.08 3.10 3.12 3.14 3.16 3.18 3.20 3.22 3.24 3.26 3.28 3.30 3.32 3.34 3.36 3.38 3.40 3.42 3.44 3.46 3.48 3.50 3.52 3.54 3.56 3.58 3.60 3.62 3.64 3.66 3.68 3.70 3.72 3.74 3.76 3.78 3.80 3.82 3.84 3.86 3.88 3.90 3.92 3.94 3.96 3.98 4.00 5. 6. 7. 8. 9. 10.] +#define fbmPower2 1.50 // Lower values increases high frequency details of the cloud shape [1.00 1.50 1.52 1.54 1.56 1.58 1.60 1.62 1.64 1.66 1.68 1.70 1.72 1.74 1.76 1.78 1.80 1.82 1.84 1.86 1.88 1.90 1.92 1.94 1.96 1.98 2.00 2.02 2.04 2.06 2.08 2.10 2.12 2.14 2.16 2.18 2.20 2.22 2.24 2.26 2.28 2.30 2.32 2.34 2.36 2.38 2.40 2.42 2.44 2.46 2.48 2.50 2.52 2.54 2.56 2.58 2.60 2.62 2.64 2.66 2.68 2.70 2.72 2.74 2.76 2.78 2.80 2.82 2.84 2.86 2.88 2.90 2.92 2.94 2.96 2.98 3.00 3.02 3.04 3.06 3.08 3.10 3.12 3.14 3.16 3.18 3.20 3.22 3.24 3.26 3.28 3.30 3.32 3.34 3.36 3.38 3.40 3.42 3.44 3.46 3.48 3.50 3.52 3.54 3.56 3.58 3.60 3.62 3.64 3.66 3.68 3.70 3.72 3.74 3.76 3.78 3.80 3.82 3.84 3.86 3.88 3.90 3.92 3.94 3.96 3.98 4.00 5. 6. 7. 8. 9. 10.] + +/////// lighting +#define Shadow_brightness 0.5 // how dark / bright you want the shadowed part of the clouds to be. low values can look weird. [ 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 3.0 4.0 5.0 6.0] +#define self_shadow_samples 3.0 // amount of interations for cloud self shadows. longer/shorter cloud self shadows. [ 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0] + +#define Cloud_Size 35 // [1 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100] +#define Cloud_Height 319 // [-300 -290 -280 -270 -260 -250 -240 -230 -220 -210 -200 -190 -180 -170 -160 -150 -140 -130 -120 -110 -100 -90 -80 -70 -60 -50 -40 -30 -20 -10 0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 250 260 270 280 290 300 310 319 320] + +// #define Dynamic_weather // a + +#define Dynamic_sky_day -1 // -1 MEANS THIS IS OFF. select which day of the 8 to the clouds should take shape in [0 1 2 3 4 5 6 7 ] + +#define Dynamic_Sky // day 1: partly cloudy. day 2: really cloudy, misty. day 3: mostly clear. day 4: cloudy. day 5: cloudy again. day 6: scattered clouds. day 7: partly cloudy. day 8: clear +#define High_Altitude_Clouds // a layer of clouds way up yonder + +/////// other +#define Puddle_size 5 // size of puddles [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 191 20 21 22 23 24 25] +#define Puddle_Coverage 0.7 // the amount of cround the puddles cover [ 0.50 0.49 0.48 0.47 0.46 0.45 0.44 0.44 0.43 0.42 0.41 0.40 0.39 0.38 0.37 0.36 0.35 0.34 0.33 0.32 0.31 0.30 0.29 0.28 0.27 0.26 0.25 0.24 0.23 0.22 0.21 0.20 0.19 0.18 0.17 0.16 0.15 0.14 0.13 0.12 0.11 0.10 0.09 0.08 0.07 0.06 0.05 0.04 0.03 0.02 0.01 0.0] +#define flip_the_clouds 1 // what was once above is now below [1 -1] +#define cloud_speed 1 // how [ 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 2.0 3.0 5.0 10.0 25.0 50.0 100.0 200.0] + + +#ifdef HQ_CLOUDS +const int cloudLoD = cloud_LevelOfDetail; +const int cloudShadowLoD = cloud_ShadowLevelOfDetail; +#else +const int cloudLoD = cloud_LevelOfDetailLQ; +const int cloudShadowLoD = cloud_ShadowLevelOfDetailLQ; +#endif + + + +uniform sampler2D colortex4;//Skybox + +uniform float wetness; + +uniform vec4 Moon_Weather_properties; + + + +// David Hoskins' Hash without Sine https://www.shadertoy.com/view/4djSRW +vec3 hash31(float p) +{ + vec3 p3 = fract(vec3(p) * vec3(.1031, .1030, .0973)); + p3 += dot(p3, p3.yzx+33.33); + return fract((p3.xxy+p3.yzz)*p3.zyx); +} + + +float speed = floor(frameTimeCounter); +vec3 rand_pos = hash31(speed) * 6.28; + +vec3 lighting_pos = vec3(sin(1.57 + rand_pos.x), sin(rand_pos.y), sin(rand_pos.z)); +// vec3 lighting_pos = vec3(1,3 , 1); + +vec3 lightSource = normalize(lighting_pos); +vec3 viewspace_sunvec = mat3(gbufferModelView) * lightSource; +vec3 WsunVec = normalize(mat3(gbufferModelViewInverse) * viewspace_sunvec); + + +float timing = dot(lighting_pos, vec3(1.0)); +float flash = max(sin(frameTimeCounter*5) * timing,0.0); + +vec3 srgbToLinear(vec3 srgb){ + return mix( + srgb / 12.92, + pow(.947867 * srgb + .0521327, vec3(2.4) ), + step( .04045, srgb ) + ); +} + + +vec3 blackbody(float Temp) +{ + float t = pow(Temp, -1.5); + float lt = log(Temp); + + vec3 col = vec3(0.0); + col.x = 220000.0 * t + 0.58039215686; + col.y = 0.39231372549 * lt - 2.44549019608; + col.y = Temp > 6500. ? 138039.215686 * t + 0.72156862745 : col.y; + col.z = 0.76078431372 * lt - 5.68078431373; + col = clamp(col,0,1); + col = Temp < 1000. ? col * Temp * 0.001 : col; + + return srgbToLinear(col); +} +// vec3 SunCol = vec3(1 ,0.3 ,0.8) ; +vec3 SunCol = vec3(0.25 ,0.5 ,1.0)*flash * blackbody( rand_pos.y* 2000); +// vec3 SunCol = vec3(0.0); + + + + +float cloud_height = 1500.; +float maxHeight = 4000.; + +//3D noise from 2d texture +float densityAtPos(in vec3 pos){ + pos /= 18.; + pos.xz *= 0.5; + vec3 p = floor(pos); + vec3 f = fract(pos); + vec2 uv = p.xz + f.xz + p.y * vec2(0.0,193.0); + vec2 coord = uv / 512.0; + + //Te y channel has an offset to avoid using two textures fetches + vec2 xy = texture2D(noisetex, coord).yx; + + return mix(xy.r,xy.g, f.y); +} + +float CloudLarge = 1.0; +float CloudSmall = 1.0; +float coverage = 1.0; +float cloudshape = 0; + +// vec2 cloud_movement = vec2( sin(frameTimeCounter/2000)*2 ,-cos(frameTimeCounter/2000)*2) * MOVEMENT; +vec3 cloud_movement1 = vec3(frameTimeCounter)*0.1 ; + +//Cloud without 3D noise, is used to exit early lighting calculations if there is no cloud +float cloudCov(in vec3 pos,vec3 samplePos){ + + CloudLarge = texture2D(noisetex, samplePos.xz/22500 + frameTimeCounter/500. ).b*2.0; + + coverage = CloudLarge +0.5; + float mult = max( (4000.0-pos.y) / 1000, 0); + + cloudshape = coverage - mult ; + + return cloudshape; +} + + +//Erode cloud with 3d Perlin-worley noise, actual cloud value +float cloudVol(in vec3 pos,in vec3 samplePos,in float cov, in int LoD){ + float noise = 0.0 ; + float totalWeights = 0.0; + float pw = log(fbmPower1); + float pw2 = log(fbmPower2); + + float swirl = (1-texture2D(noisetex, samplePos.xz/5000 ).b)*8; + + for (int i = 0; i <= LoD; i++){ + float weight = exp(-i*pw2); + + noise += weight - densityAtPos(samplePos *(8. )* exp(i*pw) )*weight ; + totalWeights += weight ; + } + + noise /= totalWeights; + noise = noise*noise; + noise *= clamp(1.0 - cloudshape,0.0,1.0); + float cloud = max(cov-noise*noise*(1.)*fbmAmount2,0.0); + + return cloud; +} + +float getCloudDensity(in vec3 pos, in int LoD){ + vec3 samplePos = pos*vec3(1.0,1./48.,1.0)/4 - frameTimeCounter/2; + float coverageSP = cloudCov(pos,samplePos); + if (coverageSP > 0.001) { + if (LoD < 0) return max(coverageSP - 0.27*fbmAmount2,0.0); + return cloudVol(pos,samplePos,coverageSP, LoD); + } else return 0.0; +} +//Mie phase function +float phaseg(float x, float g){ + float gg = g * g; + return (gg * -0.25 + 0.25) * pow(-2.0 * (g * x) + (gg + 1.0), -1.5) /3.14; +} + + +vec3 startOffset = vec3(0); +vec4 renderClouds(vec3 fragpositi, vec3 color,float dither,vec3 sunColor,vec3 moonColor,vec3 avgAmbient,float dither2) { + + + #ifndef VOLUMETRIC_CLOUDS + return vec4(0.0,0.0,0.0,1.0); + #endif + + //project pixel position into projected shadowmap space + vec4 fragposition = gbufferModelViewInverse*vec4(fragpositi,1.0); + + vec3 worldV = normalize(fragposition.rgb); + float VdotU = worldV.y; + + // worldV.y += 0.1 ; + + + //project view origin into projected shadowmap space + vec4 start = (gbufferModelViewInverse*vec4(0.0,0.0,0.,1.)); + vec3 dV_view = worldV; + + vec3 progress_view = dV_view*dither+cameraPosition; + + float testdither = dither ; + float vL = 0.0; + float total_extinction = 1.0; + + maxIT_clouds = int(clamp( maxIT_clouds /sqrt(exp2(VdotU)),0.0, maxIT*1.0)); + float distW = length(worldV); + worldV = normalize(worldV)*100000. + cameraPosition; //makes max cloud distance not dependant of render distance + dV_view = normalize(dV_view); + // maxHeight = maxHeight * (1+testCloudheight_variation); + + int Flip_clouds = 1; + if (worldV.y < cloud_height) Flip_clouds = -1; + //setup ray to start at the start of the cloud plane and end at the end of the cloud plane + dV_view *= max(maxHeight - cloud_height, 0.0)/dV_view.y/(maxIT_clouds); + startOffset = dV_view*testdither; + + vec3 camPos = Flip_clouds*(cameraPosition); + + progress_view = (startOffset) + camPos + dV_view*((cloud_height)-camPos.y)/dV_view.y ; + + + + + + + float shadowStep = 240.; + vec3 dV_Sun = Flip_clouds * normalize( mat3(gbufferModelViewInverse) * viewspace_sunvec ) * shadowStep; + + + float mult = length(dV_view); + + + color = vec3(0.0); + + total_extinction = 1.0; + float SdotV = dot(normalize(viewspace_sunvec), normalize(fragpositi)); + + float mieDay = phaseg(SdotV, 0.8); + float mie2 = phaseg(SdotV, 0.5); + + + // vec3 SunCol = vec3(1.0,0.5,0.5) * flashing ; + + vec3 sunContribution = mieDay*SunCol*3.14; + + + // float darkness = texture2D(noisetex, progress_view.xz/120500).b; + // vec3 skyCol0 = (avgAmbient*4.0*3.1415*8/3.0 ) ; + vec3 skyCol0 = gl_Fog.color.rgb * 0.01; + + for(int i=0;i 0.0001){ + float muS = cloud*densityofclouds; + float muE = cloud*densityofclouds; + + float muEshD = 0.0; + if (sunContribution.g > 1e-5){ + for (int j=0; j < 3; j++){ + + vec3 shadowSamplePos = progress_view + dV_Sun * ((j+0.5) + (j *2)) ; + // get the cloud density and apply it + if (shadowSamplePos.y < maxHeight){ + float cloudS = getCloudDensity(shadowSamplePos, cloudShadowLoD); + muEshD += cloudS*densityofclouds*shadowStep; + } + } + } + + float powder = muE * 100; // powder.... + + float sunShadow = exp(-muEshD*0.25); // this simulates the direct light, and the scattering of it + + float front_lit = sunShadow; + float back_lit = pow(muS*(cloud+muE), max(1-cloud*2,0.0)*2); + + float innerSeams = mix(front_lit, back_lit*0.5, clamp(mie2,0.,1.) ) ; + + vec3 SunCloud_lighting = sunContribution * innerSeams * mie2; + vec3 AmbientCloud_Lighting = skyCol0 * powder ; + + + + vec3 S = SunCloud_lighting + AmbientCloud_Lighting ; // combine all the combined + + vec3 Sint= (S - S * exp(-mult*muE)) / muE; + color += max(muS*Sint*total_extinction,0.0); + total_extinction *= max(exp(-muE*mult),0); + + if (total_extinction < 1e-5) break; + } + progress_view += dV_view; + } + + // vec3 normView = normalize(dV_view); + // // Assume fog color = sky gradient at long distance + // vec3 fogColor = skyFromTex(normView, colortex4)/150.; + // float dist = (cloud_height - cameraPosition.y)/normalize(dV_view).y; + // float fog = exp(-dist/15000.0*(1.0+rainCloudwetness*8.)); + + float cosY = normalize(dV_view).y; + return mix(vec4(color,clamp(total_extinction*(1.0+1/250.)-1/250.,0.0,1.0)),vec4(0.0,0.0,0.0,1.0), 1-smoothstep(0.02,0.15,cosY)); +} diff --git a/shaders/world1/lib/volumetricFog.glsl b/shaders/world1/lib/volumetricFog.glsl new file mode 100644 index 0000000..83212d0 --- /dev/null +++ b/shaders/world1/lib/volumetricFog.glsl @@ -0,0 +1,118 @@ +#define VL_SAMPLES2 6 //[4 6 8 10 12 14 16 20 24 30 40 50] +#define Ambient_Mult 1.0 //[0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.5 2.0 3.0 4.0 5.0 6.0 10.0] +#define SEA_LEVEL 70 //[0 10 20 30 40 50 60 70 80 90 100 110 120 130 150 170 190] //The volumetric light uses an altitude-based fog density, this is where fog density is the highest, adjust this value according to your world. +#define ATMOSPHERIC_DENSITY 1.0 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 4.0 5.0 7.5 10.0 12.5 15.0 20.] +#define fog_mieg1 0.40 //[0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.75 0.8 0.85 0.9 0.95 1.0] +#define fog_mieg2 0.10 //[0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.75 0.8 0.85 0.9 0.95 1.0] +#define fog_coefficientRayleighR 5.8 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0] +#define fog_coefficientRayleighG 1.35 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0] +#define fog_coefficientRayleighB 3.31 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0] + +#define fog_coefficientMieR 3.0 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0] +#define fog_coefficientMieG 3.0 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0] +#define fog_coefficientMieB 3.0 //[0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0] + +#define Underwater_Fog_Density 1.0 //[0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.5 2.0 3.0 4.0] + +float phaseRayleigh(float cosTheta) { + const vec2 mul_add = vec2(0.1, 0.28) /acos(-1.0); + return cosTheta * mul_add.x + mul_add.y; // optimized version from [Elek09], divided by 4 pi for energy conservation +} +float cloudVol2(in vec3 pos){ + + vec3 samplePos = pos*vec3(1.0,1./16.,1.0)+frameTimeCounter*vec3(0.5,0.,0.5)*5.; + float coverage = mix(exp2(-(pos.y-SEA_LEVEL)*(pos.y-SEA_LEVEL)/10000.),1.0,rainStrength*0.5); + float noise = densityAtPos(samplePos*12.); + float unifCov = exp2(-max(pos.y-SEA_LEVEL,0.0)/50.); + + float cloud = pow(clamp(coverage-noise-0.76,0.0,1.0),2.)*1200./0.23/(coverage+0.01)*VFAmount*600+unifCov*60.*fogAmount; + +return cloud; +} + +mat2x3 getVolumetricRays(float dither,vec3 fragpos) { + + //project pixel position into projected shadowmap space + vec3 wpos = mat3(gbufferModelViewInverse) * fragpos + gbufferModelViewInverse[3].xyz; + vec3 fragposition = mat3(shadowModelView) * wpos + shadowModelView[3].xyz; + fragposition = diagonal3(shadowProjection) * fragposition + shadowProjection[3].xyz; + + + + //project view origin into projected shadowmap space + vec3 start = toShadowSpaceProjected(vec3(0.)); + + + //rayvector into projected shadow map space + //we can use a projected vector because its orthographic projection + //however we still have to send it to curved shadow map space every step + vec3 dV = (fragposition-start); + vec3 dVWorld = (wpos-gbufferModelViewInverse[3].xyz); + + float maxLength = min(length(dVWorld),256.0)/length(dVWorld); + dV *= maxLength; + dVWorld *= maxLength; + + //apply dither + vec3 progress = start.xyz; + vec3 progressW = gbufferModelViewInverse[3].xyz+cameraPosition; + vec3 vL = vec3(0.); + + float SdotV = dot(sunVec,normalize(fragpos))*lightCol.a; + float dL = length(dVWorld); + //Mie phase + somewhat simulates multiple scattering (Horizon zero down cloud approx) + float mie = max(phaseg(SdotV,fog_mieg1),1.0/13.0); + float rayL = phaseRayleigh(SdotV); + // wpos.y = clamp(wpos.y,0.0,1.0); + + vec3 ambientCoefs = dVWorld/dot(abs(dVWorld),vec3(1.)); + + vec3 ambientLight = ambientUp*clamp(ambientCoefs.y,0.,1.); + ambientLight += ambientDown*clamp(-ambientCoefs.y,0.,1.); + ambientLight += ambientRight*clamp(ambientCoefs.x,0.,1.); + ambientLight += ambientLeft*clamp(-ambientCoefs.x,0.,1.); + ambientLight += ambientB*clamp(ambientCoefs.z,0.,1.); + ambientLight += ambientF*clamp(-ambientCoefs.z,0.,1.); + + vec3 skyCol0 = ambientLight*2.*eyeBrightnessSmooth.y/vec3(240.)*Ambient_Mult*2.0/PI; + vec3 sunColor = lightCol.rgb; + + vec3 rC = vec3(fog_coefficientRayleighR*1e-6, fog_coefficientRayleighG*1e-5, fog_coefficientRayleighB*1e-5); + vec3 mC = vec3(fog_coefficientMieR*1e-6, fog_coefficientMieG*1e-6, fog_coefficientMieB*1e-6); + + + float mu = 1.0; + float muS = 1.0*mu; + vec3 absorbance = vec3(1.0); + float expFactor = 11.0; + for (int i=0;i FLICKER_REDUCTION BLEND_FACTOR ANTI_GHOSTING MOTION_REJECTION CLOSEST_VELOCITY NO_CLIP + +screen.Lighting= [Torch] [Sky] [Ambient] +screen.Torch = TORCH_R TORCH_G TORCH_B TORCH_AMOUNT +screen.Sky=[Sky_coefficients] [Sun_and_Moon_Colors] sunPathRotation +screen.Sky_coefficients = Sky_Brightness sky_mieg sky_coefficientRayleighR sky_coefficientRayleighG sky_coefficientRayleighB sky_coefficientMieR sky_coefficientMieG sky_coefficientMieB +screen.Sun_and_Moon_Colors = sunColorR sunColorG sunColorB sun_illuminance moonColorR moonColorG moonColorB moon_illuminance +screen.Ambient = MIN_LIGHT_AMOUNT SEPARATE_AO ambientOcclusionLevel Ambient_Mult + +screen.Shading = DISABLE_ALPHA_MIPMAPS [Shadows] [POM] BICUBIC_UPSCALING CONTRAST_ADAPTATIVE_SHARPENING SHARPENING +screen.Shadows = [Filtering] SCREENSPACE_CONTACT_SHADOWS shadowMapResolution CLOUDS_SHADOWS CLOUDS_SHADOWS_STRENGTH shadowDistanceRenderMul shadowDistance SHADOW_FRUSTRUM_CULLING CAVE_LIGHT_LEAK_FIX SSAO SSAO_SAMPLES SHADOW_DISABLE_ALPHA_MIPMAPS Stochastic_Transparent_Shadows +screen.Filtering = Variable_Penumbra_Shadows VPS_Search_Samples Min_Shadow_Filter_Radius Max_Shadow_Filter_Radius Max_Filter_Depth SHADOW_FILTER_SAMPLE_COUNT +screen.POM = POM_MAP_RES POM POM_DEPTH MAX_ITERATIONS MAX_DIST USE_LUMINANCE_AS_HEIGHTMAP +screen.Camera = EXPOSURE_MULTIPLIER Exposure_Speed AUTO_EXPOSURE Manual_exposure_value BLOOM_STRENGTH FinalR FinalG FinalB [Tonemapping] [DepthOfField] [Purkinje_effect] +screen.Purkinje_effect = Purkinje_strength Purkinje_strength Purkinje_R Purkinje_G Purkinje_B Purkinje_Multiplier +screen.Tonemapping = TONEMAP USE_ACES_COLORSPACE_APPROXIMATION SATURATION CROSSTALK +screen.DepthOfField = DOF HQ_DOF HEXAGONAL_BOKEH AUTOFOCUS focal aperture MANUAL_FOCUS FAR_BLUR_ONLY +texture.noise=texture/noises.png + +separateAo=true + + +beacon.beam.depth=true +rain.depth=false + +variable.float.texelSizeX = 1.0/viewWidth +variable.float.texelSizeY = 1.0/viewHeight +uniform.vec2.texelSize=vec2(texelSizeX,texelSizeY) + +uniform.int.framemod8 = frameCounter%8 + +variable.float.normSunVec = sqrt(sunPosition.x*sunPosition.x+sunPosition.y*sunPosition.y+sunPosition.z*sunPosition.z) +variable.float.normUpVec = sqrt(upPosition.x*upPosition.x+upPosition.y*upPosition.y+upPosition.z*upPosition.z) + +variable.float.sunPosX = sunPosition.x/normSunVec +variable.float.sunPosY = sunPosition.y/normSunVec +variable.float.sunPosZ = sunPosition.z/normSunVec + +uniform.vec3.sunVec=vec3(sunPosX,sunPosY,sunPosZ) + +variable.float.upPosX = upPosition.x/normUpVec +variable.float.upPosY = upPosition.y/normUpVec +variable.float.upPosZ = upPosition.z/normUpVec + +uniform.vec3.upVec=vec3(upPosX,upPosY,upPosZ) +uniform.float.sunElevation = sunPosX*upPosX+sunPosY*upPosY+sunPosZ*upPosZ +uniform.float.lightSign = clamp(sunElevation * 1000000000000000000, 0.0, 1.0) * 2.0 - 1.0 + +#Max angle at frustrum diagonal +variable.float.maxAngle = atan(1.0 / gbufferProjection.1.1 * sqrt(1.0+(aspectRatio * aspectRatio))) +uniform.float.cosFov = cos(maxAngle) +variable.float.viewDirX = gbufferModelViewInverse.2.0 +variable.float.viewDirY = gbufferModelViewInverse.2.1 +variable.float.viewDirZ = gbufferModelViewInverse.2.2 +variable.float.normView = sqrt(viewDirX*viewDirX + viewDirY*viewDirY + viewDirZ*viewDirZ) +variable.float.shViewDirX = (shadowModelView.0.0 * viewDirX + shadowModelView.1.0 * viewDirY + shadowModelView.2.0 * viewDirZ)/normView +variable.float.shViewDirY = (shadowModelView.0.1 * viewDirX + shadowModelView.1.1 * viewDirY + shadowModelView.2.1 * viewDirZ)/normView +variable.float.shViewDirZ = (shadowModelView.0.2 * viewDirX + shadowModelView.1.2 * viewDirY + shadowModelView.2.2 * viewDirZ)/normView + +uniform.vec3.shadowViewDir = vec3(shViewDirX, shViewDirY, shViewDirZ) + +variable.float.shStartX = (shadowModelView.0.0 * gbufferModelViewInverse.3.0 + shadowModelView.1.0 * gbufferModelViewInverse.3.1 + shadowModelView.2.0 * gbufferModelViewInverse.3.2) +variable.float.shStartY = (shadowModelView.0.1 * gbufferModelViewInverse.3.0 + shadowModelView.1.1 * gbufferModelViewInverse.3.1 + shadowModelView.2.1 * gbufferModelViewInverse.3.2) +variable.float.shStartZ = (shadowModelView.0.2 * gbufferModelViewInverse.3.0 + shadowModelView.1.2 * gbufferModelViewInverse.3.1 + shadowModelView.2.2 * gbufferModelViewInverse.3.2) + +uniform.vec3.shadowCamera = vec3(shStartX + shadowModelView.3.0 + shViewDirX*2., shStartY + shadowModelView.3.1 + shViewDirY*2., shStartZ + shadowModelView.3.2 + shViewDirZ*2.0) + + +variable.float.wSunX = (gbufferModelViewInverse.0.0 * sunPosX + gbufferModelViewInverse.1.0 * sunPosY + gbufferModelViewInverse.2.0 * sunPosZ) +variable.float.wSunY = (gbufferModelViewInverse.0.1 * sunPosX + gbufferModelViewInverse.1.1 * sunPosY + gbufferModelViewInverse.2.1 * sunPosZ) +variable.float.wSunZ = (gbufferModelViewInverse.0.2 * sunPosX + gbufferModelViewInverse.1.2 * sunPosY + gbufferModelViewInverse.2.2 * sunPosZ) + +variable.float.shSunX = (shadowModelView.0.0 * wSunX + shadowModelView.1.0 * wSunY + shadowModelView.2.0 * wSunZ) +variable.float.shSunY = (shadowModelView.0.1 * wSunX + shadowModelView.1.1 * wSunY + shadowModelView.2.1 * wSunZ) +variable.float.shSunZ = (shadowModelView.0.2 * wSunX + shadowModelView.1.2 * wSunY + shadowModelView.2.2 * wSunZ) + +uniform.vec3.shadowLightVec = vec3(lightSign*shSunX, lightSign*shSunY, lightSign*shSunZ) + +uniform.float.shadowMaxProj = 150.0/abs(sunPosY) diff --git a/shaders/world1/texture/composite4.fsh b/shaders/world1/texture/composite4.fsh new file mode 100644 index 0000000..fccda4b --- /dev/null +++ b/shaders/world1/texture/composite4.fsh @@ -0,0 +1,37 @@ +#version 120 +//Horizontal bilateral blur for volumetric fog + Forward rendered objects + Draw volumetric fog +#extension GL_EXT_gpu_shader4 : enable + + + +varying vec2 texcoord; +flat varying vec3 zMults; +uniform sampler2D depthtex0; +uniform sampler2D colortex3; +uniform sampler2D colortex2; +uniform sampler2D colortex0; + +uniform int frameCounter; +uniform float far; +uniform float near; +uniform int isEyeInWater; + +uniform vec2 texelSize; +float ld(float depth) { + return 1.0 / (zMults.y - depth * zMults.z); // (-depth * (far - near)) = (2.0 * near)/ld - far - near +} + + +void main() { +/* DRAWBUFFERS:3 */ + vec3 color = texture2D(colortex3,texcoord).rgb; + vec4 transparencies = texture2D(colortex2,texcoord); + color = color*(1.0-transparencies.a)+transparencies.rgb*10.; + + vec4 vl = texture2D(colortex0,texcoord); + + color *= vl.a; + color += vl.rgb; + + gl_FragData[0].rgb = clamp(color,6.11*1e-5,65000.0); +} diff --git a/shaders/world1/texture/composite4.vsh b/shaders/world1/texture/composite4.vsh new file mode 100644 index 0000000..e6e3e92 --- /dev/null +++ b/shaders/world1/texture/composite4.vsh @@ -0,0 +1,19 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable + +varying vec2 texcoord; +flat varying vec3 zMults; +uniform float far; +uniform float near; +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + +void main() { + zMults = vec3((far * near)*2.0,far+near,far-near); + gl_Position = ftransform(); + texcoord = gl_MultiTexCoord0.xy; + +} diff --git a/shaders/world1/texture/noises.png b/shaders/world1/texture/noises.png new file mode 100644 index 0000000000000000000000000000000000000000..6236ff19990bb213e4ec6f6a51df1fc13138e582 GIT binary patch literal 695035 zcmV(?K-a&CP)`LruBDH&$HOq&D%Nl%Yj~kG z^><0!nd4yOE0o_$&Iq1$XOO2+qB z>*b9229f(KJamk{Va8|J^*@>2$~Bp058uG;lR>^MO&%fMy~qCV-^}FFHGM1rc3#2G~OHH`*L~F+1%>dUQv5pnZ3@+ar3b{ z&Lgs`zsRn?G{>X$J$m=6Ii59Nj>gmL`2Feq_(Ourjzvzo+_NBe5YbJixwS)V+W_WGa41Qlr z+(hV*qW+rV{>5;=v--)E>AO`tj;lRxUSjOuWjFpw_B@!$&olcO_N;H?$$QEC59z<# zc@=IJl&9_CFJ-|c-C~tR|w9cOsqjntU;8U5qCiD0HYIezbnKIc;W_O_@Kzl+-bDYCsXGLJ3(-xY&8>$G7% z{^_uMjklpH-|+HTnKtP5$rM($9LJ?I-td>bqCB z9{->z^|z(%?~K+zRogG4=KcMNZc|HNtmwJw@y)%*zv*1J8+-KGs>vfVa=pG8Zq~Q$ zc-)k`$IWbio-7|(eKJ0@&`49)8l$KBjB}k6+u2iA%^Z9vvpJ!!!!>FhUSUr>0JG00 zP2C)o1y%C;(o8J#w(^Lk1_AR z0rf?@?rC?M*US}r_ZRfpuQw*v>!Q87k2wy@_~_RiA6myuJcr|A<>1=VPdQWF#G2}c zFVGF&&}Lz`M7=`)i_iu7Js-k^hL84|TVp(Q3rx@-Utcjei35 zKTr-y4m; zN$7P-a|^{s6W##%7&Kl4Mn3}`g(iNCCccIS8=>}_M4W;8PoVxF$mOu_hI|~4FUS2f ztVgNkcIx0kx~Y#bo-zmH!JHZmo>Vunapc5mV(KUex>9s8ObHwQ89uAuAoqvsQ3zXCbB z7V7n&nJ}IQ-v1@Me*okm5GMjpLc1xNfh6xuxYrEV7W^~Ni2=t4&Fu|(Q)rJQ&WCnYXrF`O$!5wglHo0tiLI)K zd-ookWydb04~(iW;C4|8|7UrPjNBuGUDCrdoMkyhY+!fW2hCono>rB=s`yjA*{O5x zT(Y|}+}(>tzfR4%G9q6W%>}|c!{CKbv##8JO3ICKzG0OelI9}`3xMu~SV6@7xS44U ze`)HKsqU33pJNZES@Ap3{|WNTV&bo8w2tjfO#fR)dy*OK0-*d$G#vSNVnv*2xm{7=DlY&Bgc`IWCpUVaj@2 zXnc$5myz>m*{{fD4-qc}TpgLuMK-?=w@-)Li!+!l4V*ynQ@ERtXf_}?7saUzt9{TutT9gu_(?h@~0!>CP%)W#4go-t$27rX4yV_R(EX< zqL#x8b@?JbQKJ61aecbbEm%@}N0zIV{*9_PP&S)2ZtrRFQ-%0`fd^%7AY*T3tW6G| zC+lNmTuk~9U`~r?9Ny37tW^Cy&vUWxS}{_ZPC?`?xiF z2KAppagoODR#B%eSC}$i(ZuqFc)AexM+^=XQy)>&?4xKuR;o`fe($SA-K(W=tx7IV zl#K{&=or6}8eN^PmsZNk)e}co`pZ+Akt$DS(?joV zE6rLBy|*&z7fn(wCUClYiN{ zuGYbuo&9$8Xa+gnpR9-D{6kiql2uRlHGkgQ*Hrn9TIy5P-D>I4H}GIf!3M?c51Z7# zOKqn|d9eWjPmc$FK7B4Og$KMIj{?G5ac%@Plj9$c{xIRAudEbg!BmLP3-$no0nCiPYgawX$~ja6N&cMs4j#&1I53fxe+&WLi+<~&w_S2 z>`ifQ4*E2B0#?c!wj72Mx|ybfY-q@PIf4=GlZI45A! zg7yovLC~Bd21iMQ2VroB;HQWe(p;MOvJ`7(vY@lx1ir)!z9qCUQMM&?Ea4vzc`=da zQQ{d&+(4FBF~7vkZ_r?F+@B7)7?fMUXM&aj-wpl=bXS9(1bzTJd!Xj0}g_FVVptD2q>!6)8>}3k&1~GL>7`y~JqevH}heyF| z=fIT5lZoF}2D?|QgXY$QrFA`b`3DEXGerQ+L1hj5MKrU2xT)V zekz(raV!sdF4J>V>QU9*=Mw!>87qXfbU1z+%8i53^+n8#Xy=jYyhvYmj4!ojy@rNI zNdBaxCu&D^cp!n z4)Fuf0gzWfws&$((ovMlFpPjM~Z%8WHD%!SJ8L3zN`6>E$)?jz6dO0Lp1`p>u>&gh!<>!UI_ zc`^p`PpZtErRJ(xG4)gL$8g6Hxkb`nAl|)N;WH@1H&f%IQ@T3cFIUOk2!5~VZ=jhq z9o}2On%s=&9+T?&L9AP7?rFMqMw7#Pi_0xVtX&j)7TRl~c)oCRic&LF`?Hn4T>S54 zMYn7yFSgn)qr5a2tuDpStoU+O`*YR7g9PLT1_d~ux`nhzRkXbJ5Yr90XR<052r<;!v@mHSowH~PFHYrkJquEenc>UWYx^IN%fQNK?^e@Li*Uhek6lh>u|^KyO$ z_dA(W$zp!?Qc@o88xXc872YVXka)^yF7ZdRdLZ?#VPZTaC+LMUkdMIuJZHe;3P);O=zlOm+ zsNDj^;wYwJuEFsb_~XFlNXr9zVf_i0yP!P*4Gu=bKf+)EH2f?~`2%$G!f1WyZv-6- z90$1=E*n5Q1h0vj-B5chYJZI4T%>Oi@g3CMO~h_c&&B;-WS$D#k5~r$6`55dx(!0z zv!Sw3s9h+OKMdF1i(~tu_A1eSAN4CDEe8GhhHI?u+UoI)Bsb{QJZ5<%$Y;f1RjhBJ z_zL1$7}v_D?ZOL$fkW%mZ~3=x>2M6v|;x9)adu zQaUa8H>sL(bya(MFW&Cu$9lzfJ>IdB!=(Ny>AzIz&#KA|tK3$xmP0Ez z#=BXQD@fy?g~qFgMyrL!6OH;K8+AJtO}S8i%{-V!gC8R zt?0i_^vkQ%Jrwn@5_xN*e63OU^P=vzq3)1m%XRgetdK7 zM@wcM?Ok)Ua_`Zl)$cEu%=%RF{`btRM;+r;joOU(UaGcL{XR*~YjcXz)6?G685d>_ z56+x8$vO3(&e@Jg4tEdKZ|ZfO`eqOH!}F;V zi%^>x&h{jGxU117Nj($t9ff=b&IGxJp>GK>i{}1ve@F}=o8+Vt9{IG}GPwLCM+{?a)S9v?;t*N;$m5@bD7D`wN2w3e9Q7Wr@hRqtxb%wx2k) z$>z>MvTRH2(O9oF=I15jov6*RQR5W#`fBuL*;1RylI_)vx$KaN6X-^%s%_^h8#FL}J@Mn|l#JQ7$sk=rCFWpAWIP``qehotG#Twk5v=`*KQ#kI9eSvQ-(leH-u)iT&PWB5$Q@RW?<2{7?E zZm%@)5sQ^Gd{vUWRrRN&yB}9Pccpo=MtfDNnOfCcXqB@mJqnsIccoo<&aV7N_q_6v%qKHX%yPMeym zt#L_Phi5c(@cGh}4NLExqtEr!_wOll2<3Z3{g>nY!xW<#CF*01^1>p|2zC30#@9&Q zg`!?1`R$-g7g`NzAe9{?KLg`EVYHZe=Rxz%S=RgaLVpl+8^dS=)NM)l7}UH+(4y`W z#P~%RZGpNsz&k;12h0TRfY~4C=WzQVZvTeLW<+~FCAOyMTFPJxVrqkir=W5ZD#yYw zVYV4~wz=^X@bF}4PJ{RyZh9OiLAeCQJ*b(9rkp^`eg>L4J27~Y(q2vs|A{8HhKXxY zyE2M7fnO2vRn!Iy_Cn3Cpe%^m*-^6+YM&&AD^kkWDX|qX*q4ZnDf$^vUP5ss5Xe75 zahp`82l`E8pWdcU9%S?Apbo}^esD=!%MEQUD-Lp4S_VI8@GcGhSHY)B{Ru(cLU;`Q znb6IS^F*1O!{sl9=ExxK4f`Qkw<+~F&gJp=VBCMj#49*A0k4bmBIsw}&d?wHfllfi z(EXsJK+i$xV6YWTyavNZMA=t(9jF_L+|-nvO#9cSBR`&Wrzh<EuXpS>lBFQ-`e6F{5uJ*AB>pAOxg_b~hoAK$8 z8=Jb1$$vl|it87H?%!s72cETxG;1e$^oHGk+p5b$`H1m!=(aZXE}J!gvusuZ?{0h* z)RFC76E9tz*H*e!6P89gTPnwgST^YQ7X9L~KP%!S(Oe0dj{Gv}PllWqv?Pw(5vSUG zm(cb^teYBK=Ey58ua`8drQ>F+u9_O3nAGhuvKXUVON z-^4l&bPZW9vw0)QOA_B`>rfNRW{#Ildkbgt<*b7TGY4-v%hjg&SgQTJGv{!!iZkYL z>Q?%=i14a}c7ws^Y+Xb4$GbMSx|Z8r2e+xVGccP9eFStpG;2Y#G_<=yxeMjW{~r-9 zZ?UmMU#{U-6!~vdP6=_R=syqj$EGJxs`QA$@@Y7qRlbR@;BGqU$yQ*pSMu8EtH+G{-W%b zQ|5)#atoC|P`J%Fxb$a^8r~YWoHuS_ zwQ-~C#?c%*R;!@M&_LAL=2BdJmaP z5p0Jz3;XY?-aE2h8rdHq;)$p{9*Uhy>5d9%zL4IP^L|oSB7G70X=l!DYc3Jrz}i)r zw+6X4iU;k9&C>Pfk>kII^A6nHU=5GYh`*uyvsC`8Xnt8V*aHR!$~+GJz{FCvU$^V> zC||JI!T9?jmJDgRLR@b6jMXm+%`~F<9HAwxZf?i;nHv4Wj=ElrTsY)|LS^O9#KJ;r zS}cHL1*yJfy4j%H(9SQW%g?I@Gi1FB&AnFhvl={5Rd(*895*H(7)y_gDa-V(H}$G~Yw|2r4h5!2ziGH;U7NN1$AU+wE}sHf~OX_!#m*WL*Zu(kSME{*zE| zguE8F*TV42c*<3HuqbX8C7aKpauYN&(eOqTuc3Y`qFjl65snpcyh-JFVmJ@fbJ6Gv z1XmEvH!0ef(AQ9VC{gxA<7-eJ1X`77zmDT5x!x3xf3?;ft#oD^Wv^E8Vo|*&R6i-2 zedX9y=5e`yQQ|5h?oV`Y!l9MAE#v`M3)wmi`&CK(WqKzal0)lfVJ`6bLP5L-ey74!or$3eRhcn9M@7|)gTb5uA! z>9>dcU(+$#!Nm7Xc^-0E)1D-n--|je@SH*aH{owVeFP3qiA#7;GcOOOOki z?&_+tKoUQ%tf>T&6A&7|MIQofU7Wm6WCV%<=`O=0|k zR96kOvRvK?@)$|0LEetK7ex2FAg>5~1L%{8KUpkcHOFL>-D+@6Rb3}lPDt~AHT#2; z{#4ViW7XqPyE*tTQuC~dn@u?tmwD{r&9?V2{&3Q-8hD1qmyI^Fnq|!UN8;wsWZvnl zt2)cU&Tndn)O9}S$J(+ z_b*ZZobp-)K3T}^3R)+Wr-!s*A6`FW{7UuYVlZ9;=W3MP4D_5;mU8AFGvnzrKTGQ6 z>H4?Kd?AyIYc`A4EbrFJ*Q@Il6)l^J1uEV%6|X1$cG^!nxEc9bRF{B$S2;hXWIkoH z2RV2SH~(?!E$r_Yzk>SPpt}_6#&RAD-UmDb@(9!Y809^Va%cvt*N8tkv}aJi9Q1oa z{Sx?KJGOvkVO(!h)_q8wfxQsUkK($#>=~rz!M+LVg1F8_#5rVn%h9Z;DBGcSdeHu` zp;@hUY~Pmtyw>r{)@8xs_Ls5_lXV{+Od|&`igul#98lc+M%gSMRlilX%aP4GWd7DJ zr&-;0hMSBJ&eXQ5nx@)**u9T))ykv~z#IYH_w0DdwLC%}chd7GcUmd?b{^_rB@u5} zgC#1>uBiPk(j}>UsaO1@3%@@u`tGRkopGt3>>97pHTCc=#s~Eg8)q5rnWcR;qj@34 z&uzUFnHS>za+F_(*c0;;RV^UAp6EUvnSYY|-;k_gmDgCN4IEvq`qYb#7I!BF8-TU~8!!XX_A~$7;4m1i7Wq zJEGlG#Dh|t6SQ9`=qWMywP+6%+yHfF+s`GsHk0eDI31S*u&#mj&r-WvsBD7RTk@W% z{J$dKUX=G0_0NX7uS@w`M_H^!^Tmwj2BLi=6kCY$6=>d+`xV1=TNq8l@2_o-K9?E0 zh$$DN!7^4^*rA=P^pT!8v$L=1%r%|aqlZH~$41r733i@nu?UKXLHh`QH0%q)TBxC! zqj-2mp*c?~+X`J=tn-Vxvt;fdvxdy~Y+au4Eu>d7I7OwqAWHW@6h7f-mY4Ld(U>xGB z67QDyDp78bdAujq470u%za;4!1uYroAQ21V_?zL*3WtTtd8m2V;w&`2qDo63-(&UD zkZ(cpIEo)(?E&@MC|1L43akvi4dQm-WypshZZhSEhSMrqQsjPSv`Ldpe%)weh|ht( z2lMtkm=9y0kH<@r{RJqt$7MTbIoDA(waZGG^@55v%kc5l<>aC=cdGmn_qT!e z1Z|RLr%HVxspllQdAh$g8J&~z!>BnBnmI-H5X!BsZcUL7i1x~$JW*UOkaVlmUm_-_ zi~bi-?}W(%r22>z?^^MED*jQUeW6BvwuXP)qvI<+JEe^s`Ug4r>&Wr%N)8{ytQ4VL zi8#*cR!zDcOtW&Lr%k_tRo8RWOB}x3Q66>-m$&-eQ?rf@xZBRB?1|^Z;POB}D)K`m zx)X|K9a_|{UKrjHZm*TbFNwOUh_|7hZra_f!8umBP#P~G@_M4*ChT8Xd2~nzg#1L{ z)kEctKzZaE)eA@X!aC!Chj-H{XHnRgL)eF`DAk+QRYI;5>lDjP&RGQKO1?+M!eJ{e`~UA zQ*y9qWVuTd#a^ zPe1WF`oX87*Un_#4gHU8t(nfdUG=j1_?bJ_%$~X2vurxPnhee_F?d+1(~)m-#A8Wp z+vBfvG&9GFnd8VSy6}r#Fkcs5qmNvnHg)UT#2#6iCy25T)R}U=qFVngbD7lMA~;IU z9|%4n`xLpJgSx%&_z37fX4mrx=A+aF2^OdHAEl1xRJ4!C-Y%qrBl1)Q{}tsHsk|lh z?{NHFIeb|72I!uHZgIKZqx5ld`>+|`6XZj()(f}a3Dt)JZzMNQ$Yoc#y(Bz58kbFi z<};!^Blmk|=3OPrQH^;v#e-I}C6tqG7D46XQu|ej1&Mr6(#KNG??QT`sBTc`HwpT0 zq5f^F-sR9SS=zlEKCr6pDu#aya^J{q7d*Zfmw%c3N}4U?_C7J&PQ-ARjIwhUUhAb# z^yF5(yRG~5%s%;0Z+)a@d^V-uCq5AQKopM)=4;Tmi~UMtmTrkt8)BaVPYFIM@)?n@ z7w6%{dQNV>B+5BPYgKU{k>{qglcGMOCg)Wt2P^6xp}ZdQ6wxiJ^txf~C-TeCpJm>g zDUBb7er>3~RCZ4*C)cBnwzfxGHtxQS`|E@LY#1+T>RqNDT{XHJfil%ju-oMzItO_rbG2L6!@s z+-d3-karV44R}&+o&a_P&1J_bSkocz27Uux4&pQ%-^Z~Q+3bzu3y^z$VD!!Mh^-KZ zBE62v4TyP>HblM+X=kJvL~{cXOCoMTaWeP{oY!LRhP(mk#vl)G#T-M$?nC0}p>*|7 z{d_IsZxrX9g}guvkF@GlNnOQ`tt>BK_j@Gy)ij?%!|Q;PWIVpVwe45E?jDKgmfMG6ZrU8#2K8KsngZ2PF1HKh>8kFmx zTm#LTrrABoEkyknE7b4)q>ruN3VKNxN67 z+@0v>rr80S?MyiVytm<5QTK&;3DY zt|ku;ji}S5x{Z~Kpj_JIeb8-d%12GPKq^lL-YBS-$+trWKJukrdbqcKSCvoUvaQ0u4cDv5xK`HfLAgaS{Hs;pwffDh(FQ1YCj3`|`G{Od zg+Eiu&5n3IRhLa>ZJw(8D>z1K)+{P3Hi{LSsGAgxKV39hGt})8=(>OnaeYqCX9Y_` zw=LA|438UMY;pm8kgiVy-2~oRu%xUVK`TLX6L>xFH$YEY&EKqM8OvK)xl}5)O|=W8 z$|6br$uKAGuZpaHbmo?kb%mPsSI+SR>HcGBb}-FqDNT2jBOUG5S=c=zXAm3({h7Gm zj$~Os!x&m3u3zExlvuj^uJ8yUMVkQd;l@{H{si3b2fhQ<27MyAHSKQn$*F#G7Cq%6?BKxDl|^!JSjfbeBARdal-*_a0$-ix>T2$<=Ijn_(@|!O#kswjJ$vcVp7MN+GIx#kBU#G) zE^#Ko^&*bK?NxyukIWrIxuPiF#d_BE1CIQRBfm!W`@r~CG~OBI0f@N~H=y_i>JLKw zLum9Lsoxc15s0_JO9{RJgKvp=P1NJUd0r4V1lcyDFahZc`Hc}m2h6WcF%H~$t5Okr_uawL)OVu;Q<(5KuJ{2pN@>GgVDO@HEmR7{a zDLIYk=S%WMk-HStcZza7ssBFe&T#k)hZd;OzTo2BQ}INYOR@J<#Dk=+Fn%uWz0!l- zU~nfI{@c->l1+K7Mm$r4U3C3!3sW=xIDSsBu4Um`^t7 z^A#A3Vmm3Pm$W4)NxRD zBD4$W8_*t$2WykV!*TviO#TDucPM{@%GEGDA9)S%c5?n5$IDoYK=Y7kW?=mrya=wV zkg*@+T2NL&!{_keSTykDD8Df(Z-=$@o|J<)1ue>a)jr;@K! zO{`^_v#fHHRThK6TBz(89-STTmI`%8iaY@4&z$w@>d|8G{$2Ly%xXTHF6Ti1VN?HO z`<`^Y1N1!@o`|%T-G2k(FHpV&u>&wa#2wJ=2Jte)3ZP4jzYFz9s6R5gw}HWtz1lOK1M~^_0Ky>w2B@{@izr8N}H4LTcLV7)r?+?Y|qIkv? z+XQ_PXz!Snl?>=Z*k*z+0pd;o8wxQBh}8q>D$@2ea8?4p0<^V3PYTUX#IinE)&=8r z5N86`SG1l^Tf5MD7V2}Sy)IOPfR;5(^$rQ`_gKWLl=q?P?q=-=npMNe>SMBbKFyCI z(;&0PB`I-VOFSxNenl&%fy;&oyjW~}4@;+}RPCG%r)TqB6TNq0v#VLz&4>*NzmaMi z3}8HA8v=X|;MG7JCA1FR!6i9 zlC}O*NJlBO7F@kh+s&wBs3O)DQ{Nz;DvWmxoC9%Fu;oBEjD3Un1hO4Lb_dui#N%8xzDO4qarYXSU(34I(oRKb zlq0_wNS8ZXK6X}{2lLTl8bhS#h?Y%_m~0l)4Y-cLK#GqLF;ggi43y7^@;X(f0s0QW zYk;pP#X~}RLdeem{`CLKlyiY}3&2|-oh@QKm0qOM1yuDI!Sx9{kHib4^#V9vvYjEH zpx{ah>?GJ}g2saJQAduPw?S0TA{wvI^No<*1LSN-!%ckH9E;5TG85l3Rl|(D%V;a6 zls{A|qeNZ+v-@Q}Le~BYnGYxYAftYz#g9gw4BDhHeIVwYXnGsOEU;~?SU!g^8fQzRkRyNSj@KOJ=LkDeKyM&Eh18F#-ZwRR zn)u&JaehNQy;A(MA@obsu?f1$A{K(0ENMEV%ZONN@}WRX5Os}+_ssOUF?ySEa5CIR z`d(z|M*4j~b1JZGdt-eznO`FOA)x*oY&#chyOV6rCCas=<``{qApL=8dE0~srFc(j z-bA$RAow67dIi$!fjBPUKRU`sf$D~U-zYT)1NEbj9)r?EL^TDnKSTKd$ku~$PqLZ` z*rf=5*3n2$$HK51sQIAv0&H7|M*`dfNRNW8Q^9f)=<~qz2H3cv14-0+knTmOJIF0y z={`yyNcBF5(hW%KfIg|?9I$y{<3z~%fxbDI&VDY3mzrdDsrzG{SKH=-3uS(VTn7Av6V*y_uip8?h6|4`Fn%|qs zc1fD+(gMKW3izV}z96t0V0Q>|?~eV5}mPI|F5v5GHu!a~;iFh3acsUNy122l@MyeF4M= zCO=cqX<)1=_=|##18gl*OcQV-!Cf4hO_fnVIe^e%Ag&4J^MbicAT18?1_w6`#Pwjg zge(V=K9aCa40a);HyIp5>2_oLMNBr!l7DN79~kwbStq#8b`~ZVC#~g?s3{t&KT>&^spEc(86%rHefdetbYJ~Troo7gAnc4 zA@no@>r(juL-k)$iwJE>rTqcxBG{!tT@Y4J4J(^QvL_?e&x`dmKx;!d5#Z-cJVAl6 zATA3vPA1c0!qx$FYCtQBoB+diL_7$lUjcgtNOC%o!xe=LWgWMnRZ-LkxjESUf z>L?`PX-I2;em{Wk$h3u6ZA&)iz?yTY`aGnvEdysGs(s;U1l(4I8c#yY{R}jIH0m%j z^vJCGCM>s4LhIg%dE-P|$ACvH@(?SnMm@hidi&;tHxhm{Go^=cnmuDx5!|a6W3gUqv@XM310O zmar3qiy?aq!1)4~1bL`K=NH;pHSu5#w${SVwb->po*Gfz*#d@bVWC~D*g^(QG1=k9{1a2lBwFrcXzni7!$eFs>hr`H zNwyCJ{W=;aGx0~JMpszl0a6!|x*hQ2#n@Kx_W?{7aFI|wEMkpNwFvOTK^q!Kk2-io zq3u`59}3H;nzluu&2i;HVa?|wuq7DXfpR3}11a3Wz)X{_&%(qkTa*z`SHSBTx~-Bw zYtnRMi~_N9$TkVs5s;k$q>Tvm0O|)weM$0KTIykzdzr<`wEAo^HX}-3pm_xJ+i0M9 z8WDE_{;m-B3hgV)+D3!^JP>PBsUOJQ3A=r->xGj)|81lkEoZ-+0 zkbVZrP(Z(ixSy2QgRmAtFF|R0sP#NVwK7m`O*FyhWtdxex&k1M2v*Be+KA5fWrg+k-&u# zx|pIDU~dxq258QN%32Bffrz6NTq59+LcLxPn-yYH_FZ5ZebdgNlU|FO|xfuGqJTw-&_P z1<}2*eO0GTaH|gtYn~z1y(IMy<7^ie{4cNii(tD*_@@vr3-P*Sa{#+a%tr!c41nGs z=0Nr-z`ui9EYqDZze`r$mT4v!n-O?M(l98tMA(&J8X?2=5cU%69-`%JA$ow=156V@ zI#@pr;Vl@~0rJs=E&=gZ8h3_aACFe3ftXe$D8LPXsxfns?nl74B=4;KZpCSC~-Z)UI6hEfK^4TD&VO={znM!hN7RM zK1GU2h{ilc%R+ffMB!|?Zie$+mGqc`8%jDLSiTMO?Ub|<%qGHkpQz3PP7lP=g0iqM zrWWHZ#q6Zo?8=&H)CFU)&8G1faKRQH0s(U30@st1MYX2|Xm;_nbogW^w& zvKHLVf#-YasVl-3(elw`OE)TwqwGgQUlQeB09TScn1(;Y{AHxH4RRWyY-=FdC|GPI z`eP!#7wp$y?qkZc1=~tm?TwTP`5Sl1M9B(={-@)?Qsf3j(XtaL;c_Q@)}4fPSGY9+{i2w|~2V@5b0V8D+lpBQTB$g8r7IARWBjh zmmtckP(BoD=?Qguo2X_2jST@C59n*iHv@bzBK8ApC}=Z5JppU}2up{6JOzxWVH${t z&pMj_)g&-~3#9oFM*?;`#Gj$^J)i?2ZUsxP(&8kTzY20^K(7ec8o)+?9}Mynq%;z; zGZ5;Iu+A`ah3sTRwFtD;06pA68DVoW{o9xh%80uw`34yno0MPA^1o;Kxa7^3Q)%9o ziucRK?x{Rat30okquM{IG2ei9$=^l_w$!QD3S)7y+=rIOkbVl;eu6PB741Z#I+H5v zLiL>>_7rWS09GM*Drrx4pnK&d6RtJ!_@q2TvbWhmPFx10*#Z{?>{&;C4yc9;x;%9CN~6_Se#8OD}ljJY4svXK1U z#j@Z3QE7$$gtbg`%lm?9DJ-?as?JE&7^LbxSh@?bV3i zHj&yCXj|ZFTN+ySYpCr%3LmN9YoRzjRL_vg&w}?6{L(;K94xaOWwgtug?Npi_hj_~ zrFzfEZGZFBJSYsW1nnQ7z9nJ>$d7^eG$UmM4}km~0FR5+P9WC=;}x3Cfu%h_Jpkfj zlHbwdJtPfgvh$eI5llRu*=8~2Gc2>K<+wd3+b1P^Bw0E)Wv*yB4z$c!ObX`GYPtDr z%Kok;A7zH&W@#(4))unU_r^|F8-M>~;)>16Iz3()M^|PWWy^17OCRS{?U1bHootP> zvNi6?Y#p6YO-af(TC{FpzWm1YPFJxs&OmAWfyK^e&6lmjlH~DL62D7GZcN)6*qPFe z7HLZIYG!hqncR<0rO0YO(n^`j!u8;J9YuA4)EMPT6T-N$CqCpELzL6HO6hhPP8a>E zpbmD%?@OwGs;hEkUE$w#=HYdw>YTb1t5z$PPH;)ETqhVaiq@QW! zB%1%1tPh6jyQ#V$$|vyXO!xiiF#yFrRpBre{KVQ0X3el-XS1Y_&DoiubtylWD#t^b zO7Jg)?PkQYMm1TOe_H zWbTEE!%^8tRs2HPb_hdXH;r-AsR8@D*fJkz0I)S6bD?pWSREhMI6K&Sn_Ek3uw|rM zE`^Ox3-a~_xY5P=p?Fczd>hgHH(VpE#NNp@Fgahy?q@clbZe;0uAnn2>eh<-G?{ix z$nP1mQ#K85M>34%GKc?Q2u@AqL-*ioJ|_s6zBBj)cxIZ-H?YuyqO9*nzAL2KXG+rT_pS07*naR9ZU$b{$mS zh5QIe3k>yn7220ps;{X~k83FIt>leL&8>2@-&2+58;#=2Hwu5>sO^PDohCF&UcOQ6 z-iENKQdySK9Gh4VGB&51)dOJ~OtW4v>j|?nN&aZC*9^Elp&V!`_fqjQBDEp-Uq$H| zu8YF!=M?o*5!y;&(;*vbVP{#O-6GC0MK=Ni$aFeT%@WfJ049Tc9keN6-W}}p0N8jA zO#cVATnx5M0jn#(*1N#;LPk zKP*ER(MAJ}2Vm7JK>7i|r%)UNR{O)NJs@oX;bn-=0sH{4wE!Co#carrf^a*;IgmXD z*(iuZ!E%=5hXHnk!0+W{rdYlUVqsC*Iw^V>%h#Zf2jX4{CknZDAUzD|XjA*SkgZ3h ztr(gF)_oG1+k|{$S{w}e_JMSYkY{x8=G=&2cZWX-#Icg58RHEqUKVh~-7rc2ib z>>MCoGq(REl-`6c1i7WiRRVm1(D6+1nn7F9@D5UJrQF;ita)^pZ5q^WQgtbW%@n_l zlcl*r<7}X16sSwUd@_h@i5LgAT>Yko`m97z9xv?W6KDC}W*eo4&x z0?VyQEH^ECr>nElONrJw(eE*fOK951*tjgQWmiLEMN{i#rp9oK#s;R=^(~fvn_A%= zC_SX$WCX5f#PKQG*P!BbgZHx_Fup3}(hH;pmZ1_9Rt{21pX}g0WezyOkat5BIx~yG8yzAVLk??&%ij1)Ep`9g0l;Y_G0Zb zt;GMO!kJe18H)9nmwxUzo6g%Q96@q_T3$`$w}9Ox=xe9_K&8b1CYxdy<&Oh;SHd$c zp5ly)-2C$hju31YsJfF%H<;4aNg5uGA0VDC>h}S^IRe*5a9)%c99|z8&JhtdHDFK3 z^G}MF>lOK8sf>UyNkT7xF9Wy{H)_Df80 zg~4AW%hj}4WWWJ5jiT^xN?+2Na~NqhXipK<_Ke12%9ez*mX!9E*$rWM04eriDu*TW z0pxF6i|yTo_A{Y+6GZzNLfdmv`#nPYWTE|+0B#WS_W>;q#TdbR3tBl;HVEpdU^z#` zL{JmRm;}_ffo*F7@gWpTMSmQM2ZTI8uotNK6v3esE>h%q2zw3U$5i#Yp|Kv7?gDTq zzRPDk4y0|Nx-(S24`>!p9tX>%K>GqjdJ;lciUT3s4W?=T%dX!B zZ~)}T0Nfto>%&q{SegsNld#5jfL#WbJ|GVvY-J%`iNJM;#*K8IL~FdpNVfvKSc+{s zJP*DT5PyP2pQPqanad8U=xbEO)mhjrOQ$9IqU7}t*~{YO_%hWTnCo;`Rp&!0x33$j zFHdM&$r$5FUKz4M3EGL^>0tA1uv`h2UWWLzp!M&C@j^gHOU+dv%~II)h?uE}Cm7L- z@IMmi8KRn&m|h08uTj^CzCgqPn12NLVIe(ErK<(xTi1z{2;ZSu9nAZd_ z3(Qjho6-@jaxhSy&uCyDFirw}cYx;t)>pzOinuJ4UL}^>7+hgkSf^=jtv3g&t3>sL z@dsF^yTQgSAl3qK2qKLI>`cIZf^Zl-EdZ)70DcIRJ%DmP;0FP}Edc5h01N`k-vE9E za0#Hd#J3{P0kn-Ft~JI9MhzwFTd2B^=z9cx)c@A;$ABH_uu&1}3*a?U zD>Gs|qyYh6S@J$fwi=k91nmnWPBUs0Q}kzwwPfY~NYO7C(}L|c1=lzXz5Ev z%ZxC8&7f}telAoG1?&l-d=Si&MD+}CI-#clt^qcl0PJKAQT_F%KV7tCy;iA@Cenm4YjPZsq`_m9+0Gk0j(~j>!kD@ z6t5zhdqDLY5ch@BYY=9`d^Lof0O&?QR|0$xOxMwTGECplxIPotV~XBLe4eH+NWH}r zKU>lo$?W-THayYpw^Uuqj6q20uQHn}YF}9Wt&t-E_J?@7LU)977>ETz>I}7>m(=n_ zCF`A)Zp~b7jbu31%=<9KCb0Y{*_dZ&z00Dtt3~w+(YTMX{14FYE`hh+h_J47JZ#P% z=)M~xt~TWZ$?^*mx3$cpOnA?X3&?yig+~=-Yk3(S&VC;0D2x07y)jCG7Z~;d5E}_P z+YKLj!oww{E|ED4N&hCx6d_*~^5dLkvP;|6v>$5d=^FZ>iSk_yyRQlC<>1L7&Y&HZE&%ul5pmTIh?Y8%1Y zj%UFP7OoSnrQvB{0DqTpbID$i{7kWZkAQCj<)M;28nQP`ekh}D9MJv>fX^NFNzk4Q z#B(C%BGPJ9T0(FW0>detYAi2!_$k47CJ={4=vt3-nHT)(9tVd?23K&1Gcq!lDi6tJm~UJP=P$Ud*xw~09l}xjZ zc`GO#An=($UdtnXUqag!*H}mW=g@Dj2=z#Sucxpp%sZ`{ywe5AeX|s4Y*HL(Xuq5& z2a`UM#IG=Q1>znE=R)O32#Z0xAIx6^xB<`+LYb<-364BaOp8QK0HeQIeLb!1G4j8Q z#J2kdKO@vW5o*o@+n*BJUkNs!36$4`c+*i91ax`;LqhgY0FQ^-e+*%tP`$a-oCw4v zlBN-Hj?{jH&>SLSA1Q4kG^PU8rxXu@VgRM*6m}BCSE1AuvI|Ys14;Q5LaRYBOh_w3 ztvkAwTMw$PM^vMs<^BrT45+;?(RLQhUxn&FBJ?thJ3)>Qv2*=&36*x&_r#M74PMU=_xQeIY%bfh+M}$x!B>kSeNX1W{x~1qjbxx z?=a{&z-|_zi_3Qs@U+zY8LFpIWl=)ezOZ>)t=4l2IMn4whP*GL-i;C67}1&1Cniiv zNTbQtOU%l>DfyWpE{GIog=~)yt`W;0C|f|_04jYzG!7&i{RzAU=xo3~5coI@Pk`0m zKsyP{CqU^RP+SiA`Wdaf5-Lvs>I3AFLRuEcV-R_NDQ`nHJ^>r=2dcjY`Gd%dVAUBg zTZq(hE7<93P~9Qi4)7$ve}tMx!*Dayco)&SCZJhh84A_I!1j}X-^K#vLBRgmA%rN8 z16T)Yxqz_wK>G(kz61E(K|oqtz+IBkT;^LwV~E7LUpJ| zTuS(^kOn~7Nx~9iyw_n9^PUEslg&TQ^o+AlJvQvnh4~c z6mMkkYKj98S_|QQW%Yd_u59GvWLjc|ZE2WDtG@+HFA?tG?#_76(Ok~OFDx+IX!8-i zClotN`VPXCA4Z?}=d?#% z{4Ao`-_^cv1P%;wKPffA>&O1rZZw3!%hKXK~T2<^=pW72_tTk;&7?HSt_4NKAsULrxG)AU60Ond|-82 z$4a#-oS(vZhXp?->@5JZ1&t2*hZMJ=VzE%V1oD<9UJ=4c7CxBK-h*n+gt33H>Ji{e zAV-4nHz2-M_&f;fLUuST9{|?Jg6bpU6Bqlt@OlZ{Q#|eHZmWBTY-a_J#trUV>Losl z#J=Hamx#1i1Xhyr(*m9s)8HTn2eCuY`idGD#5F;#=ir<`c`)dw0r@qdx{b^;iF~VB zx*kz&g-BNgILZ+diZrbV+eg&*2e^vRzP%}3lOjJ=g`Jtg&Pnp4O!bzgG|zzd6YN?d z_JX0CWa|i8HB@#Am9;4APS$II<i~ zfwt9z7zSWLp#B3@o&(B(p?EW(gIqB%pm_m(7s`Wzjg><l4@c_RCH5~GB2we=T$3k`;RDB7w{s&n85@@+ip_b8LOHTk>5jsVd zJ_mRv*y$yxECt$@LS;jQ&j#Xt7@qXC^kr znD~P+_N4OXLB9=ZUsWo5Q_;i1rzFIug*v20d~IlMYG~QI8GH=UyfakqM8#Pqz6o(T zQ<|Ar?hK2!0$L@QKMdy1PQB%@i3M2X!I_jzqpF>W{60{qke)@<+d!O}(UOjU;ycLq0_7bU zjL=s^Jc!VPigE{|zKG#R80|jFZ>9N@G=GpORsv&y*nC3Zbpan)R6a_;z6M@J! z4U!I$;-(~=0qJFndZS>O?$W#>`>!egiL%`Q`z*lw63X;Mybs#5V0sI(0`M_G-9+^W z#RCQPfP!TsODy}yBTf>yK+yf7?JeUL(6Vt#|Cy+$7c0fBGOZNmvz+xBg}$E~{u<1E z1)d^cejtVv=pL6YDAI@s@8;h8(Y^U`gfEa|D1-fBm`>xHbbE@1A4rU|gkOw}FH9|m zOPU1d=kokHgKw)ta`KFnHiv99ftd{bgS44QxCjYHo8^58+r!xY8d6*iOI=_%i{_JQ z@o2KxJt4*<_?wB?Hd+3YnLTV~+tRo)lT9VLBWV3eI|zt}AkGT#jSv}@iwl*ma9 zrVlIYbY(-W{j=qDQc7bj+dEA07nu(g`EICnL$GxhqVXNAaRRL|7go(=G#&->#x(4n zOlKyhiAmK6lRrsM<3YPl&TGWjmhcyd(v_%pMR0sXI>hDIn)oo)=qA|#5t_*G&XSFn z;ZRTZzBASO9M$> zZb+NJu$0j4X1E+)E+p+C%6_3?AmD#R)cdQ%4&iZvdGla-8B32XEcj{m@?I|W=eZeO zt*%E~@%<1uLC_dU$Ku`}zu|0gpxq`;>F*Hy$iGW<)Hdx+dTfUg~VrN}lcO5F+?s~4s<3vq-Ke|GX~7ru#T zJ`sWET>8aTofb@21sgw#c9u-fM8fT1xYm(33E;?3^b+#;fV~YgPX=O)Xp@{a7qreq zV~MF+0_MX+domQm!hC#5{Kk#9hvmz}`Xr*7oRI%nk@G6@@0od5qaA8&8D?x9no#B@ za{bJ76oFNM^rqk!1pMDY8wuHZj5rT$J4n={!Ioo{a<3pqh;cPgUIeiZp{;<<=xcY=>e(r_v|Q}##6 zW`*pmqI80*I?W@`4y0AUv=+k8hqZ44VHHHW1Z)g}T6%#k3!&<1sM;E6tOD2?Kyx9C z$B->ogZVWeRs=B|to|j~9Z;DI`IQKr4f8orbLS4UPe&oRKf#p=t`6a1hF?i*?nzc( z!qTH)b4}Q9Us^0XBC&jt5d$(}euiJ1)qY_Waa!`SAV>XecAT0${c7P`o3M(37boOJ zM4oC$7n@3VAbnx7XMp<0N;V?}j>~M$clmm?JMWMlelv@{>ZGN$O`5`%$uqfNd}FGeY+o(3MPsVAv666&;)Hhc0;Zo;Ysqb~9U**8{!S>9`?j0`P z$gFpOz1x&I(5*ZGloJShioj1yF%F351l=a&Vad8tu-*~ue%z`zr0Rd;Q{8)n93{q< zf^SOtN3ibMvi}~I*8M0=XQW|bl1C(Sc3A$tCPyW;oLF`iIWnQQ19^8K?+Wmn09H%s z50Uw~DyJg`e22tGuzC=fvuJvV&~8*Y-LlMaHsb_;1DS6}VmGAT5&S5EV+7n!VH$$B znetx->_FlY2-lIk)6zaN*=mM39<&uf+e@YsX*rRm-x~D?2Ul@6BOT>Er|sdckfK__=|5iZ(`Uz9KqLH0b-H!_Idd>s;Poz}t;+U2~gc?$6M9 zF&M`uu~MqpDA9ZhHLJn~{MD@UCo@}u9-o8UiR4NS{H~tCU74K zYp3u;3QwjmG+;+&_@hz#9!PdZCpt@{H^(Q-R;2xm?c zK9}ibu{>hxyzT0HuEh7hD2!nRnBQb~T9&~ceSdZKu4~9=-Ex+vCKs#e6Qhb`y$AS+{=3_#BEZ|-#K1=n6WcHTH=w7A3sf@mZ7<`TB3?-YLsC?MKeE>gS zvI88rOzH1IHXP#J63=DwIun*HYWH%*7!w|V$~RKq^_c^1bM+lx)wffNzWpl7h?JcU z>JP}?RIrYP>29d=Ayj?|aaTb9fO1DD7Zb1xSl1)?Ei6Yu`72Ndg7z-h_bkz#EW~|~ zmH^^5AZ|x$3#3j%gLu3_?A|Cg z@1R|^qy95W_EswylRfMCp4!;eJm9h$4b2Y5z6&Ye-NYw2@6+}$z|SZ>Zqnh9Zijee zGRFq>iK+V!V{S^|G6@q?xK8QcA^4UOe}{ZF#8X6jLeAY1@ky$;c_!vh%XQ539I5Sq zGDyI>%J?=F9}#gl)qBOz%%C;jz{?GAn}JehXVHb}IwOn|gZY4fu}Iqq$;ApfaVIin zLL33{bddK#Wgz6YLA*eT2|zvu#kXL72;y28ZUV415GO$0y^ww<5;KtPY_LuMVmmP2 z0`n8_e;+`YI1f(Iy&7m2hH?QYSEqVYAngX(&yku5<4b^l1e9GNoDXPSKp!CEX;^s+ z>{}D4-%!2fjroX+0}FCu1D@dW#hu)p7B4aDE(A6Nxe=jz$Q(&(b!U87kUuNb%8ha1 zMsYGlBd4cdi4-5B7S6+Sf?2Z%OyUJ($d1nZl@c50xW9f*?yI4INZ zP-r%*U5mt{GOPsJF<^5Z#dkfMZD{^FON^R0(PTR{t0m$6@#dHv_)QQ z8OxFSoZx3}Hr*WCxqJm;z%(G%26K{72a&!P+3Z5r`3=6JqwMFj{R^;bfxTZ~XS;BT zq3>0|-jT{HV*kU5=20nrEwq1?I6`VJHME zCHPOur!(S@s60cV)iZkAWX5?0e~-e_5`Lw`N};$pGVhMmdzo4Vz%iiC65=jMYiH)f z%-*t@xof8XIN0}0V!$z}<`bolm6zpZofUxcSz4@Yo{x~Y8kK{I{EI2>bj!aPayDV7 zLgnv>dM? zgqBVCV`&_n^o0VsVJ5E@ZCQZZkopAVOZ4Uh8rP@UituJ#dHG4Wy_e2~)BVOYUnZ(9VF4pll2iAHe)mF%M4H#p$_H7k-ndVy~P-sC5}_cv*r0Kn!QCd zADa5^bd|%rHXA$hYgfGJ$rsEq%?*n;;e;X<%%h>YC;4hQr*pnZghm55wb!d{TJM7HN;@*yg3XSQRh_8}sVGStHX zj!)Se$UG;}t^#pANPA0liZZTLXkmr_Mp=fK$~Q#cKdAY(cI2jpI>vzC0X!D66)B$# z`D~;=n9|Ro+}M)8E9flg$}3EI2WbmIKX^Iv2fr!$(Mm1)J|sG00PIl_&t&pTpsWCv ztr2l7pbMeg2#mFX_H?NCQwVDVdlW2bATKM>+KKd zLlDEEJecag*|N8pA#XP17bcxy<_S_9!~g&w07*naRBIaJ4MYFRhTdmn|0r7fR$;qL zhp}#lab1Hrvq8H}qwl|H)Ei$?k67|SPv6(l4>H+6vhxaPM}hTr$o~y-dC0D(G?3Dv zCd{F7Gf>+L99$7g6a7DhdKXKbe`J=mQoU=G&G}3Y&(Lp?xiDxe$#A9UhbB5(r?h!y zTpt;Wfcc1^+Y|UA6$b_CrY0ZfvOy$n6nHDGSsC89J)35Km1Z=X`WU@kU7mjw+J7YM zaHWn$>iL4E4ngLcNM8`*a-gpP;38yhg2Zt!ECS`-V9W%2FTw3rSaTELhXJ@9iNQ!) z8KIR?dv`$k43;}0b4joq4a8nx{TmRgLisd^e*##UvgM)jJXCjp@D5O>A^k|Od=A)S zAcjJC2joz|PKSCkp?VO|eoeM(nYd+vol=lH7v}p8|J;G;M0*s~eHYNSkk15iU$QsN zX$KZ--)k4~srOJ?i--;}oB=su+ zBSd=x-i)U>)4&xB{3F$FJ&)zy%p&Z3h=+!9EkdgbST$L;3+Wl6eFSPAhU!o#7dP0S zLUvz8-Hh-R2_FRbK2m;)#2Lu`B^dp00Ns~T1I8Q5O;DaJ#2!hkAJ9ov?b4yS(^B7m zkon(1(!U1_b8irER>;3d@mL9GLcPhUcr1l~R@9$V__`I?GQcwuyeOoDrFxKn>m^JM z#3_k(>16*E$?ir0og{E6hzlrlJ0?a!noim^2782wCuC)0n%!@P{}{P5$q8V&3FNpC z?~%$m6h|U+4`v=@5j$JtN~A6^Ywq^M%`U9w@)fD(rFoq3dL4j$D0|xGp+FZUxTcd& z72v~$II)56P}Et(#eXpEYA|NPI#(u|->2&2P`s7d`xN2`Wana+z0?u@)q%a!flX~- zlMC!#huv@BT|jILn0%w`oB$dv|qBa2YOrrkU zGrlRzlN>ys>RSfc9H+p`sCAH4`_Q`iDqFnIR(GNDPF8)%=#7VZv#Gw_fE)wX$4Fn8 zVBKyYcm?xk@-8c(HlrqIgDG){!+L0L`< zvm4U*d=L*Nu})C;iheGMzkv3>n2&ScAV|S$DR~KNpM9UgE$a+pb6#6yYs{A7%1GDePvlMGd@* zvh}GrR={XcvtjjZ$)7Okr$W24kPAUJozVV7K1$$YN`IX<%ft3kJYC%bVoN0VK=4$iKB9DpW4_Z0e0o8@BlkeUf8ekj#D4Yo!uP-k_b>?`1_gm0JN_VbQn z|0$yLBp6G9HWA{#Kr9Ef9{~Cp(B1%YJjh>3x`WaPDE0=hBH&L!dIhXA!1zBfCxW&* zEcOH25oCO2&~q-WT%;X5xw#upCYo&w_8((?#;kv3vfbFIUp46evJc(O8^zFuda6;p zSJdv%sLpWl-=1Zbsm!44BNI;s$~eFe6!@KFn=1936k|>GK3DfeS3E<;17KV!#x7)R z1GMX<_*SOQi!4iJ+QLdb%e3zz^_IYqFgr-*KNfWdh<`z45s0G@njq$$1`Ri9kQIz_ z`KQXhIflL)Q+@X)o2%r_Z|DQQgZFK%;^R=_0F-i}d3`O>P6686kiA2Ybyh*avIyJ< z>NFsR0`*g%y&tTHfw3V}cL(wu(5ApK3|_~>v?o{w0r@ym$07Vy)OZBYFQC5dpzk|!mWU;uSFo!vE ziK5;JSFBNFKeMzAKVV7kFJ3E^NRE=lmIyh(2GdzN8nAM-QCHNW>~_&2LT);;@M<HBFVq;_dlI%ai zP>-av6oMlG8!Ppe33hKYl)VA13gFo!Ck5&`Rda_$b}xzOu9ewcP1*m$ME~Nc+&O_m zLR=uypHk|Qj666~4}@%TmHv?8sS=)mxTR!!r?ieTHj{9dlm|k+)u?tQD0d~w8UkOG zG=;*+5S}*Z8D@O#kylIkhAh8I;!3mJip+)Jwg)Wt0_|leMK>7I6_ z!PWrdAi#G|c7C7gof2xV%Jjb}ximFkephFyj{MY)a9Rhrs)2?$a;Ae{Q@JFC_k*l0KbL#I)a}r;Z`tiH|ixLXBu!B!GVxJn(2!Iv8H6_Qsrog?0YDFfN?hvYX}?#mEV!M z2B`f2Tm-XwXt|=O&mcQNvLg~)5XfVNSPIG`l(9WjZvwQBj9&(ubwWHYgs&vNDEL3Y zTo}mhB+NkiJ;>%ZfEy5g%sl#ASqdja@Rh9kw?GsxjVogn1uAZNk2kXT*- z?MqO5$nbNyts9Q9VYybg4XrHy5z3VSW)Qjs7T>Y76ItR~cy0^pjwa`hX0~rL;xQto znCj7%y#q_u>0auXB5he3*wrOh(o8XB+Y@SNoL-4?)}w>Ws83e<8}>1p6w1^%DGVV!+UZFR$b#pgn-BcLRAG3IE1+W#Q?U#I3yGW6~=wQm{gRe+vKi(iVpYaB7n)0T1a z^MZ1l#227=hRPKQo|aa2m)SOQ3`@rT#@s|G+gbYjV!UI}`;;DFax$~|KTo_&4Vaes zgDnyRE>7#)H(9PsYfgl9j)0fV=9l8i$lroM#g$GS$;|I1fYF`YHy+9^#XgTp9U&|l_^bjUMlQNY~*jd zw1Pq73H$~qmrLc00Cz}flSF3~$WJ2Xn`P+yv!Fazkc$_^zyh4-@7De{vb~aOSEuUYRJ=~aOt3xz)H{Uuh0=cl*;YvZH4;-~_(1fv04yc&RS7Gn z+1_Cq8Ri}~VBcV8qYA&jW?4GKl|@Y>@;oG7aPg0VU5D)4!&0s`s}~r%Yna*tDK0yY z_UG@Y^*5|GquFZ*qKzlBZI8|9&I)wb1M3t~pBU=bME`KW{%FuEgx(>`0bu?G#MS^8 z0&^;;^I`cing4?GNEr7ee0546A+@ih^MrT}h;I|RLDIR9o)PO#NjpAi7Y6*?6o;gm z8-Q{VXtzRk4P-AOwV8r5mA;+n@eTTyaOJ`3cgi~8&ga5(6rNrE8o-q__{eR2fR{%Z( zVya+ALB1-KpCIe9uzC)ZgCW};Id>P(ZwGlhpp${#VxR^CWf7phK-6m-d3jMR(!4k<_;;{m#BYnb!Suk+fuzx$vT6`_zH?&rhPD!| zo<`ZLAT9;UKPx*or*Sn|-3b=6L5zbsYl+QH00+bTEtvg=X4jhgQAk_XvvYjrd^aWf zK2G{-m7E0Po-{ieW=q3j3M_`m`X__k$ALNp$Zr9B;aGhAL+0iAS{T5CFuM;dvq9br zxPhHZVVw(5Y%Ge-K*=sjJs7T;Fxv~}lY!FAqdD;y0Q*6CIDnU+oCEYW2fDj~^+ljP zmZ-1)|E+%mK`svHSTg=d=wdVfn|o)Lm%j7O zoBgcdDl2&{U2D-bk)HR!^AuPuX7#+r>fpxe@{QGQR#;Jv6btexh!Y2-!UJ^^Vw0}vS zSyBUwa@7uSMZJL^5h-ZezM62NN$ zW(#$pMEA^4Z}&iVWa#?~L;a^_b`Mna4pH>qtJ-}pYWKm2xw}SuKdQ$6o~_Y6y+$@| z%#Sy5;atWi^*uqX^ z*xwj7#1b1j?HeOEG}`-QXK&I!AownTT_78;^nD;+inNE6c0I!GVB!d?xrK*algPQy4&&2T8%l}>1!8sb}Z_=UetGHQFB#;=Ej0@c|o&DK^fr0P=}^F zcnQH?ATaLNFxXGjWQieO`pgB{iyq?zYf)3*E#v zH(_mmhFF zg1U>;L1aEd*DWkLkRE%$Z4S&N#~n$%CbKI+-Y(M-F#JHq`Q+_U>A6!newuDS3@?Yv zI{!=So0VQJPq(S*<-D}AY*-ob|2+p!3(XjzvrRe=NYDA@@nn{|PZkV`;)iG9_$az8 z9AjkMLuPM^Hb`dki?&PBhs$_%Y_N`)3-?J-*<-J2#qJI;#IHSwCqqXB6UTrxtc*IPzaEt!v61EHTGICwb~`CWZr_ z6a1Lq9YE)PV7{qBc?jU90PZnqH5ZR|VLFAKi98UfSAo4t!R|L=dl^h;8gZDjzU+vr z4SAqRmzwafiF-54?o3>bXn&#XKB?&a2+E%TJjiKQSOzt0Ms-+TZeV*CltmjfdlvMq zSTNv=g3i%}<*&|WKezH@f;Sp$n!!$X@n8qGHrZXK=D$>DbI7(9@Qz?lO57))TN79~ zVY`d*Gg&(g78k=f8Ds&uifDfVnkOJ`3*1= zpxy>z9in%Pqux-^&g!stUWdK!JIpIPX5TmF8#bOV6z`68>kTujH#zf?2Kk>3+QT~P z-rSeHk2@KYI~k)(aCC`MJ^d9+A8+74Oq^rzxm43ZVmqXkqjIjR9pUKz)YZSFp*PN0 z{|@Fxusj0fSV0#E>IiWwp<9SJfavWAw0{CLL$s3Q>@=((%a3KDq;^c=K%u-PHM3G> zqm=(%YR;lMBOT3Yt^r#Zng@)29gT;>%GI#GMdZG}T>r?@uA1K7oNOOS)?0oiHh^2cEJuXqf5Ezf7#oNxhPhop!WA)3% z^R8m`wZc5X*#6Maf105;lgQ18d=la?p)XQDdNeiPuBmcVs5vskw?kY%gw2!~MPVri zt}bjIY}k3CflY0IRT}BCM)6gndRdeC(Z6I?)ye*I1Kpn_>aEJ$O&JFu+pAD} zOJ%grXLKK_wYx}-?vW95+ZydoHFZ+0`A9@NHB-Zs%_-7=3zeOk>HQJhIz#tlKw0Be zMDIC7|7c{p2{LY1>L~;dvam^rW);-(1gn2daW|tqV&o`NX9HRr;Cvv5OPwv0%}*un zC!wcQtMqG?wgv(RSYR8Ec-)l-7vSfO@wLYM?~VB;?#;mBjoj@(qrGd!6^y*mz?lXt zj1(a`k*4O`HBb66Qm>KrOo zfV8Nj6O|a7ft6Hks;XV4%pWS^^^EwfGENEg?iIUN1MRy~`*@G=T$5xzI;}h%^z%byr<6aDvWt>7H?6)apLg{y{h_b@J)&bO1kxy%j)?FoT%Q##{-J{JUux9J~d&_~n z^I`Qq81^#qCO1uV_Lg_FGYy(R@k^rINtM^Ajv;*sB|lW=-I?)w2op%W<+T46>l@dw zZ)n3ZuAqF-sGL^NH>OeF2}R`=hu`6_o1D7Ym=6#(ioiWCUhDAvi)>q$-DZjB2wWp* zVS#5#8WD)~Q!zfM`;(X;)@iaj0ptcUECp&;Q1bzH8&ocb_zW^$1nTWzoe!)lfb|8i z-2<4r3fO%V=-vg?Jpl{=@)<*KRYxq_PBF(w-*shhRGdh+9Q}G}ZT)M0qXECMLCC zT24;l63I3bTq#>Wv$-_0vmMm8q^m4tDz_Rs=Nii)q$jQ12X>y9H7%U?%kwT-d!2>U#&Khhb$mSj+))XSkg|Pxp$oka-}i_co*MgJ{l2@Lj0+7Vtj-co>Lx0sMU) zPr!}>Y-J!W1@dIbPGsh?W_sBYpOL;Gi7_(%PF9ah$C~N6C`&vE%L$^EBeV{c&su6> zPLDBw3g5w0%18z zAJQa$0mV)xA6nqIH^jjWdLxTse=qeukKRAbbQytPgZK}`Prx_`%1K6TV3EJFs9z!C z26!xv@MA%nRA84B+FOM&t57>TvAv;uN?{7s{T9@7BCbrFoJ8M^k@jL*9U|urFs=Y#JEA^g z;8PYFNyRDzz9z8-Y5S7-D5=Rrd}PQkNjwBkqQHz9D3Q140fJ^|V{q4qBjwh?eJgfS)!W#$H^SQc5Y zRoXKW4iNMB^g1$#^{UFmDu1o2?Amd3E?AxTL|%CN+Sq- z%Z%Sau^hp{K)ILX7%}&U^PjNxIuH{?JtoWdllfVqGcIV`i@Ac-+#_*gK_?}(ami@iV_2-=#YW|O?1 zuwM}zNZVU2Qay$?l5zVbcIl^E^5&9(+M-uHqWV?Y-w-MXL1g(;Wcfxp?S!WKJ3q!r(Af^gB zN+=ISHXDTe$Fyc$S>O6@IL*y2cIFf(E|+uxfr&N*MBNZ`CgIRx-SOwI15vI^1rMvQ?0`z>H!OL{OEtC{NNMjhpd-xYMX zgyI$mZ-jgYrELlJwgU1}AismO5z^*BdIRDiKrRK=CxCnz>fH+Ooe5zbSiJ_)Oi0tn z=1{6G?HRu*-kx00`>0{w)R?w!&|9FvfZHAVn5e5lTy&l)J=b>HpNllflP`L5yvwe4 zG-nu^Ly2Z7vhP;G-kP_*D0hp^Ft8jzVkj7U!rCoT?a`^66XerOY>c$oQu!rP_kx@S z;6pR+L2?+0Tao8Dz5oCq07*naRDs?s>HAd@@n>hg?#N>-xeUbDCEG~pUx~53kY{DK zyDI>TKy<$`Q5vv3(HUsuzN9Xr`N2@BAu3Uf@!RcC}RdwWS_Y#t$-MI+zO~ z`8wFF1>jY%dy8Ya4JX0NX>bjM=XjW10JEz=KMPj=3HtId`xD&%1=BEi-4krT0sBV- zxg$U!<3On01Q918V+_>073!V^R)f_EusR&py_?kEfbu_}dsBar{12Y|F#iyWnhei9M@Ddgsic)_M$5t}?3>N4Hqrk~s=W|dTV&jV zh>5CsaMpTI*8U@Eox4v&cZnLkYpQxrwZgkCnzJjLvjTiqDA!3oBeNWm>3c_Dj|g?6 z@`>7NqiAEbtahZLc@h7QrMrCCvpBi{e$LEZ_mj{56Vzr8wEZqe z?d*}&Z%}r|fj#%a%8u}IjI47P*qoj$kH|W=BzyiSYMc;fB=Dxh;UaHL_;*sd4dN1} zT(tO{xRR$ez#61n$dmHOM)3JJNV_LIg&83a^ z^mM#)OyiopDcvVa(VfM8iaS3x=T~NSB@Jhqv7?`^;sN1W=&MGdioAx{ElCOHoK&h}71qn4#eDS+QmYCuGL2 z%I*T0ZGWllm#B9F?a5MiBdGgysy##5&XLlSDXaqNHYNrmv_2xAMC5nMJY1<|6LCf| z_Xx+|s+Xayaa?Qsre!?ZvQ>*Xt5xjUs@=0D{+-$EtMG|TjW)D@GxiN}@4eXU*N2SV z>9lqrs8J$r6yhnMUP5)Rq3XU=ybr{|vidh#ebY?G8f~PL2N~^agKi{nHDQw>oCs;E zgujFKIJ{I8dryTYq;obIx0m7KbX}f?IjWU&!)&D__elE4Bv(nx1(O+RIy;=7hUL1I z`JW&LrrB|6etMFR1Ti&eXIJ>Q6*fneZ56UPQoL8t`)S-K-Omi;GT|{WTq}jy=&;g+ z`2^7yO4|9L{R^}YKu!g75*b5f`WkNM$oUZpZkOfpu=oquj;CR$vAKrOEXF*A)IZGH zKRCM2Iocas@k_~Ey=3lPB2IE~R);(kL+wQNDPt25#=M2te!Z43m(2Z_9cXcq?R zCt&>+%n?Z+0N8XuTN?5VLtWF+{>NDlDi&Y3@hLZZm7bef$xY2T)huUo=43NnVr7$xE09+yFHbP#J%nyUHyqK4O zxj3j}L2W47iXwjtp*n^qzC`M<9`ki#{)SA=)MotTcMl_+3gSYZ41Ts zraG>u^$yzI8vHt_!x{T@tbMOx-y0r~T&$f@SbufIYNk5E6kmAeY@X~_GOuh> zpSn8lIQmU?_6#%jyg}jO3rwN)*Vj9jRg0T%3e_C z-%vT9;8rC2k^Fn2wkpHWS?<8zOid!f#o03;$HY1__ z_nW+H(q1Nejq3b`oMn5m-+?eYSk!-o*iYY)}2Vs*u+g6Hq@$x z{U2HhZ^4MZld9V5 zt8{3~azjflS6LPclre&q1GoZUcLH{x68B`pl&l&Nwf+iJ_}zI;ftd3WHQdCVYp>3(0Jb8K-V^~FC2WRfV;b} zf00%z(uhL*&KYmd?4|p8GMto*PffZxr0WD+pVF3co(1RONc^6r7m%70(0Bl20e_dU z>kK;CfZGjq3K9DN9G1xKB|n;3Uox~~MJ@{EzRb>gO#d3mCsVkYiMasmF3Y{s+xJuL zQ$qKziS}(p_hl)rhWMruFJ)qgLMKbHE5vnOc`1~qBI*W+y0k*8OWY-ii76cyu;W7Z z-$PAV1gGJ`5D2%l>P(qeq?-@)c0Usq~ziR28g_Z zj?d+sQ_g$fco58`L2V`Iu%w;}*d{4_oY3h)4wT9@f~}FjAH(!n7?!V$XDZ^`AmELqtI z;`adW191;ncL3{QA|3JwtmC%eFMLuB))R`gNAzW|6@i=LOGwL zyA%AG&`~D5OmS^0Clk%*U~`h>H;S5K(qRtVV9dW8aF@fDaB8%Ob3uPd^rwi*NN_DK&}GRyQsczknKLmJRhNbg|Z-sb71%Yrq@uoYJu}o7=8q7KFB{t;&o7W zBkG$#-@UNr2eADH-n$me9)Rf+uy;qO_a30gxT{jd=1vMpmGz^u7vCe2G;LkWY&7lp6?t(6iD5)Px=+4HlPLn=& zVT>^9LjaG-?C6BwJyVKnH(|zH%Dh{FQ)S!Ql+{%`XdbTL3I~+0Hz!Rae zfaL2WxvR*Zl0G%SVLy)13xoU!hD)Jb1k$=x z`xgfPMbqC|eGsfW0ftY_ahfH5EYgV`X-G$$)_@PVY^*0=w5L7>qb?IkUon+8~ zBz`aEG$S5N+GQrLoZ<&bPEO`JGT#K$LPU%vauB3*0FD890;Si9+})6WqiP?OPfI)x z$;+YoJGDz2DL9CyWb(2^%P|t3x6e(XA`;$7O%nE8-@17MEh>4?-OP3E{g6B z$~s=DDGJP*!QskSgUVf@oF9snk-0ol^C@{|(!Wk{WDpkxuuKKEsN$zJ`D#rZTw$xW zYF?=LFUDF3<`iNG0&HK)S<87IZ58`_lHZkVMj`kg7z5>IY z#+*pzb;h`mtWT1XLP$ljJ=XDHW5=D$I1Ok$BVJOPi7P;8ql_5m!{hUve6 zeFEtDL_0#Tby9X(QiEmsFr_yWzI}>w2Qhy&+*7FsTg2_bSVYKEA>J)vNW#|%bT$j< zq1NhK;qjq>wS>+_$!1E(#ssiK6%MZA@im*pBehnhE|BsX0bhW81jZFX?Jl;z2kToP z?gyITQXYW7s&M{*jC;U5LX2f-^?NFI1^o?UY(c9_k?mGQ9s+Q6z|TOI2}*9I%-4i? zAkj`Vbzc(N?WJ~@)cp~eXCrM;!WX0YsR=&|hPz!n6VmB`O$N%sCM-_HON31~aW10` zHI$2u_<@X}V0}KRW77O(v+_e&e3&TbNqAnuii!S1z|OR^at+g#X0$!55ReQUyNuo%N^CnD>PQm&rhf+npl@FWVO zAiN4RcL=^t!u~4cPKM@TLmp#jH#Oz}BlmRLg`zzpVz^UFCu~%r8Ip?M1Km+jI~wY~ zhSUQ920(QcaK>X$cM`098ti=p>>Cf}$6#(vYfp98?>pJ|kB*gL9oLZ^aAjMlqT}^030`Cwx zn(PiT#IC0J(xbDE)H$ALb|U;KqUT6M&t#xH$ix9mZVC7gqK^|Xr=+KtxEh8*n7Lwl zIk9XG)PE@Pm6&_VdcOo>Z&+t1xL*v%)B@)1(%J&-*C=3HQRBA_?G?i--p3G)H) z-Xq|47TEkA=w1xXZ$xJ`W9R1rTeT3M7htGC^Bc9JvG15-nx`?0X<*AXvN1&(VcEAoz&nNJ$)tY_ z%ZHKm90rENG&Py;$@m6M8+gVYCHaM?z2UT792n%V8%%r%viSvV3e^Xkv1KxDc3^DE zHVJ7-WNe1nto$fqHmPWZw^^EMD80Syp* zQK4)DU{fJKNtTbrn3A%Q0>=sVte~?&9WTQW3FDQzM$lSP{Y=sm%H|9uE@a|iCcn36 zzG~d=>ZCU5B*%Bi6B_350=v?{V;JqP=5-|tzsVCnd*-^9T!YfGP#!Ak5fT4Q+2jNt z3uxD*-I^#L3-%+S?@cz5!utfip|lf_9|Ca)6hA__grt)tU4rah32AYlJ;l;j5zEm~ zXD((l3BlV@{RqZyo}@a@6Y*DCeI2L+fZiQby~k(v?jg4C2<>%}!Qq76Myfvw*0v?g< z7Rg=~IA;ZSB#*^nNPun)v}BzsrTJD|2j$#-FVS%xQNx>8E46Kn-Z=SsOlrru7)lvLm4mc1jC?H`qS zJW~rJZ3oC7m0@=g69m03#TkaUn$VGyy+qkvrgFbY3zGJnk)IlyX~uF1(GCLo?n}hq zlYTR;a|fC0i#jF6)f3nm=8H)^i&8!q$ssTu0gH`9Eh_l)P|vL{enQJ*TzO`(cGbqU zcZYbqA%-;4xh3$q(^og(5vaa`sblCY>3rO7(wZ3DK~@iG-P*isICv;IIufP_;q(=?*>r! zUqHN1w6}nDMKI5C#;(ORf5+?a9``{#!cjfYstxkP4(!hb&3X=h$$>LmF^V25(&_=U z+<>%Ojdg;t?^S0##pvsRv9e4L%KEPh^Hl(BDCxkNj4|#5+dIK}lZf8|Ww3yI|NjEG z2Vs{bv~PlsJ9LGB*&r^4-tSRz2^6l2(tQi1{TT(X!t1|by?+Ah zZa~`)$}=Hb2jah=xI=(u>kL7v9W(+b}p^ zLus~z_1sPCcRe}F&tT_Kpb)TApu8K%BVoBFSg)nEJJa$n#{9^cHyU|}BbPVfJR;v= z_El4kV`62h?@Ow?7gR3*;&LITAmcVEPm*|V%6}K|*MdF2t=4acYW~--&RO#Q2h*B) z3(LmEn*AHIEsI${cfRh<`@L{-ar<9WbWX?Zg2u|SZg|?M^BrX+V{;>)aAnj!xqjNgk2(mlHlL z;BzPJuSp)8@S13jN|Zr~o^2AHza+RS$VY%&+t@Xtj&zZ3U z+ZbN!P=|M@PkP8ZdsyG=pkChq$2PF93hMK2@h5W}Y?dpSNU*V4Vfz|DiG~R)!LiEVHvqhqIZr&cacQjv56V$Nx$rw`t^Bb@A0bLjaB>ZQEf-6 ztxuzNry{$*p<*PHTT_}9$WsOWPPD_)_)EIo9B#v-*wMAv&0#pZdd^yj!vlVHfR@0N zq{aw1PqGP;H9{FGa;U5x0`D6G{}u8X3&877vK$Te{R!xu4d^=!>YD-8bC59~GtY6g zuQ}?~g}I`Wiy6xW1V@s%8_X>swgO&G>f`jhI9&Ut^SW@mB}&;Z+&nB+Pm6VAnoY!M zNh~k-V^#2uI@miKyFHt7L>B)w3Qle?)O}N2P3s!na}iCoGg>Zh{a2W8z0#qLnBzC^~ywA!CmwR7U&U*yIW#c&zw=D zog49v20c?7^xweMdCK71Qa%wXKc#%L1YS*G(ID;*vmt3dS=PJ{<3?isS;V-R2WE6q z-Sd^*tEBdAWba{6dnr)wfcm;X-}gY@8PJUNpuRJau^F?SXxVpd$@bzNwJ-Nb3-yD} z=~25~5BkRTu#W10r+3i#sX-a-$g3RjYk?*epnrjX(V*F)A@*$ob`n(oEOAx|XG0h%b z*nLNuv7IoZmAW^F^4d^*mKg_S{cv<^r`g z)H@ygWpl9o5Efs9u?f8086N+FH{ZZJCxP{PAdW-!eFbU_2u~n8L*aE2JibNP03de) zY!85Eg7}oFhrsd%%+7-49dI27Hot@S`x)TlfNu|Ieo$M$Vox%61bRk5%^yL13UH91 zdlG&bU|%Bb&y3~@3*VMezctIJjat-^_fh&0zfxmR;F| zuCQ2`%?0{R5H3~VzKpm%tM8W8S69Wes`*Za?-|vv%4$m^@(v4~nPCfMt|a z5&cQf5<)#n>^%s`kA>zDB#uSe6s7J&*y{+p9nqYK?0X%GxsN2WYID=14#&iI;K+SoO%{dci%H@T)4Z!z8UI^19A+|}zT|wI@jbF>OqM&yK zoD2GQWG-Q>3!BAqurdmz9S+Z(<;?_Hc_Ue;hxn&RY!eyB)QoFeVW~E4vzj))LWeRn zg2?f(TnE;ECEB$TUXplNM(m!}y*w=MO6Cr#<)1*FLdy}P{w}k5V7aKMHDr2N%q2k$ zpP60ZQJ|g{>-y=sL!Q&qyLYD5MP$4g#9p8+D`90N{w?#}QrHENSCid0gm@aVp-8?! zaYLZI19f&pv@0uOk^&2<+F@+%23Brl6>pjRRZ?$)xSObpQ+YFKM;UOn(FYoOM!7mq zJDL>?{28u!VOrh{a}b)F(m=?6P?qha_7))?1#qOSd?oTAQhR~TMkyZ?s=G4dO+c$l zJ^;lBGyM{l{Hi2BX~20JaC`Uigf0PR6kGE z=}_D!#ScIo4z;s^z0;xgC7?SA=njE$B})4k@{Iz$+gSUT2K7H3)+IX88Px;s*~2)o z2OQZbH*~c-x_oC-9%`y1T{h0q8DePOGAOU9zx=i4`f*qXTEL3g@>da9o(I*9fc7aUA4B5Li1-f5zd$+& zY_9`nj0I*4C1MtU&p|c}%-cXM46{*iKM!u#z}X*W^T9BNmOU^X3oBd0nr}d^0%BoM zOM^H9h>e8!5zzc(oNVk)bhe8-TNtz~fn6yaMzs$>^*Aawrtm1F|3ZGUYmi`>j{K-`r8kIq80JdcQ8cv$R>WP_gnxW6h|>%7evheB;`?l=gqc z>+D|gy;AD3rI;7@Tike@S#yC|=P?={0pE2X3B+mrO`!kiWA|WqJ^=*`Be+$J{l)h&2KqhWOYHTWh&8!Dy;)D=xZI!pR zz)oHH$t}vhRb{qFe<}hGM%C6)ZDh9mC0d>sEgy;&inh!b-Okck%MPmi4O;ApYU5OG zKBb=|bUsMy9G2GEDy_4>tl3z`2h;M_WP4UHA5GfpNzReP;G}*|XtaPM1>OMgT#|>A zcDETnrRAB%db}}48S6aGc+T10Xy`lI&|T4~Lks-H#xS{uIKD&e)`OhUFwSU{t2M%n z1-81w2D+6q&HPF;O*6|6o%){}9(0uL91T2sW_XslEO{tZzGvEQ5GP6Yio`=8`vBRj z$80vREL*yCh$AjD)D;2#1+aO9oL}hfCiaa1>$xJPO16^3Z4h>c0*fFtMxg=97?o;w zOm(*o^!+jP>vF08UXl6BY8n6gOflm)we87j^K;bhZxwwP3+*Xex(7+!e@mDq;VmFL zV7JGtuj|&^zgV}wQg^7#~NB3uCoCQ`lONK=JBJd^= zyMR~=rr{{Qtx6MFntfE7B~_YP-;+XZyG-&+~{!z4o2rwO(X3{%BPbz4Z;P zZI-hrd(8Zj)OZp<8S^Bk-Dqsax%u^OWkX}<=VG1Ty7^n~c)|+)YXu|de1yiN)mv!s zHpqu%{9MRWz`6%5e?!lsVO$4Rt`IT15T_+jLp&rDwJ_CsG~W~;735sLsU6S zXl75?{=r-+EYJJ@eGZ=`v7CU76B;GNQi;4xip`+*3L?$|+P@KfFN*CDpm!Od?^Y{a32at!yvK%$*|rt4Los(~gMn z@3J;mDSO^R_8jf#f1KgBTNq}UVCsK1vvU)Z_dtF;z_WxhM(F8EWweBK6ZP0++fB=< z>9{eOkBT}&)Ip?Af%#UlGD2=o%J3M>HZM#pBFmM5`bQ|fhw2Mp420=VC_WO!KSRj_ z;TQwc!a)52s>dMe+fcm#X~SWq1M5Bn3p?Eih&WbAM2$DC|6_OcR>rC4ZT+sSrOx z@(q%^6IvY>%M0Zes^4i;Yy{-1f}InLU8Ls7NWa5me>K@0F1<_hO=vub=9j?zBss>* zum!AKF7%s5_=|)+LFMm=yw>Ssoq1JZxzrukyXmmv&6ADUMaB3-LD_-OpP_auDc+{A z7sZEDWeVW08uLU)xx!U8@UZ1PG@WLnX};~u&R3U*+snGw>G3Ev*#2b8v8 z+DN5ML~0F_y=61W&J{^NmuU-A+!^x805?JMP{H<1ar+dOQ8r^$n=i8E0%~*TZ1F}` zZlJb#18p-GT3gUsEz4RzWX0Z0Tb8ihU}b5rOasf4AjiY<0vRUC^69h~E9y&88-kn- z;4}z7lX0^_8<4o($OTBhmgMpv9u@pgl|G&7~}&0+yQ8IKpz3Q3K)Bcv4enf1?(W?tzzB^=w>1} zgkn`CrXl&$%)WUpqs)P+cHva-`5C?IXS6$J%y>i5J5J$WBAZv0v8Y&A7jX_Ow?v~a zS#YboJSwwkpoSzcS0c|$S5hG{9L)bnnKTD6b<#v)h7J%9QFx%9~oziS2G5+y~3J zS~8Ca>6=I$5Rr>1eSlI&BlQwOufQ-KsWC+T)hs?B@prJZRRV8QoPgl2viKD2P6g~D z(DzWyAtZ*w@^4_AA=G7sxHeTU6KtrYRRJw7#Ft{EQ={MxWK4So$XU%F7BqYisj;sVzWX#Q`{am!zTt_ zY2eWWuP3=MStgU6Q_1omEJxAnb0)pwERUKnmWmgUWsy|blCXINUpQgExcGttXBOk^ zZnmCT*^JEFiSDsL+z7-`MEig%9);Q|hIVd4{KnX>9*m)sW>4T{DX#=H7sO3XzN`Z~ z7U1`d;@$>zLPM?DNJ|&R{zZ7Nq;_hE%NuZ+2KI76zTnVnPApl-Wg2pYLLcjF?zSv1 zBFo=k&7=g@PW9X$+5g=Z{f;BFe`R;1kmmq+6~L`P_h?x61SuZ^Fe{|nV9j3@wv1%U zMB4ro#!xw!D1&CY9XwIe<4ijPXa)%Vo=KJ)lXwU46(R1(@b#JHX=cwmhJH)aW*b5M z_DHDz!OEWPNgGVq)q(>PT*@g*ep!&Q5rp$VT>Jl6&x@e%3NIg_^jwEhrlYa_;C?QMHGujE6!(GkB&hE_ zWVsU7{~s`&2Fnqkb_Mc}Kpa45ZAi00@fp~+3D~X+;0CDgEgfV?=}_K)#AUFu zHiYlMW?7&t1^5bJvp=ZOMD7K2KLFw(B&G>=nbS4HotWA4cdBoR0ADq5qOpC9)^|M(gJ8{Ka9>;Od_*?uN}XK+ z-U!wW4cfx!S2@eOZk>qK*eR39;L zh#7~v`DI2;H0j?=Jjjgwko=p%E(9qY+wz)mJS{W_Iqt$%u zVt=-Ni&yRJVMiF69cea*7JnDY9^A4CMf^{-j*8}~inRP!dXw1b8 zIK*k2JMoa2FHGWMkoODa7^(9h)SaIh&p~(}nZuc}u|>VvgqJ*dj8{9<(Rs{Ko-}BC zSN+^nuQljAGc3l$jsM5enLmC#W^Mes&bi;8Z_H+7A4{YmQ4%tiBoY-8Su&A5k;pQZ zq{tQ_B#i7bg)GS~(O8l#sS!rjFt%oxsqg1~-{*RM==mSc4`+Fu>qV6v0o*|8Jd}9K zj4Pdd*`Y2Le8=3E!MIS=ejtw)8b=0wi()O?TQvSEra@pe60kEN9LlhxfwZG&y@=Lh zg?zYB))TaEkT(mqgT(J8&ZIC4s*i@sSVep#Sr-NVqo_BHl8+75pOjd6Wt8R@k@Js{ zS58!3wOob$5skBjI3+CKFX9R%Ok<_PQDKa{I!dmkVmUhCXGw8PfUkvNv*P94!n|jp z?O0$tM(FPfoF{27MRRvW>*jEzlQ*npUWv4RH^IZjv2MVucvJf_6q&Y8NS{Mk?PI*V6E^DZG9a zuHG>2P2d|b2Ge2;DmzsTYmdsmL9!3wTn8Q<1Fc;`_O}ST5YBH{w5tV{Sm8-dd@IC0 z3_ISaUEJa@Qm=sVog@Ff2=Bl&2NrWlO#|{os~;tGdBfPA6M?i>>dH`BPf+W`gG%)Sba|iRu9c`+{XdkuO1M zDMDu;^cbRkUnNE;@FfcFK=!qieJL`pMc5+2d(x_BfHGDpeTcFHUfZqYQV0AN#CkW0n z;3SuR0`j&7ZJD4aocbgg?{#v86UPxc+`x;exS6QVBieik{^}euZAOcM=5e8e8@e@S zn(`xv)=3b$Gprj74@E&IFZ|X+>p1kKlUF$#Z#%1b#`*>W?lI*Ku5ve|lPJAw%HM>_ zWlo(_pa-+Ce*x|bU||9F5aMire=t-XlJH~$=v<*(RsnylWRF&88In++;Htk*D7}){ z)s=2dN*$8o77sj8g)gWAFEzq8tiq1>uw58w1j3dmbY~Fn7N(aA(?<-O0L%Sht3D1k zp8(6AASTJMwNRE*(NWU(U}G*=?gGmcfE!45VaT2e>7!73)}%wEYPbT|Lvatox>Zr(_Q~8dnsd9hLqpw0SO+ zrikTbQMU;(67ao%`a(i?5&AllMC(>C!j1l5Aq2&OnTne+JL2U(F z`2@LYCo9s2&Ha>qYhf?PeGz(AXQ$0vH~lahZ7@V%FTjEe~+!9}}%D zfhiD|3;qU_X9CSRKs^{j55l%EvvugPKRy0Q=K(am4aIZ?t{2i4A-`XYZ-wTz67QAx za6orMeiLPDBRBvh_lIHx$fZO&hwz;Z{+OZkHmSdhT~nmT5NSTcXVp7zy}ihU(9zG~U#5v0;tv0)D^10|@k{%K3=+0n#imb`x|ffZm`DhNYiD3SQ2JHS zo-N21Wi)>@lnVhY5$whQ*CApU$lr$f?vc{-QI*%C(tVMlQzQ+Ol|FQvLe{?!r5%B- zVX*>Lyrs&Qt11hS@&<4_3x<9I7E0I*vUUu+*bSqQ^#z%pGuSYJOA$QIh^@^q)J$K4 z`2b%HY|%DYc&P^jgsAJ9@m+dGt8P(M0-W>Ws)9{@*-%}+rY{< z!MFyr8^L-y(E3-PbsSMIAmeR9uaKHgpraAv8O^r|-bvvD!ncNWzC!P-@Iz%=sM2^? zMHfd=vB;aM_;r%E4e}%shlxB~D(4YpZh+$n9WR!Cg3T9k6&Rlb`5>4c2J3^t*cps< z!8j>U-z3CtqSh8MIS`|T@+F`vC>|#9(g0o!#7j~+Fl1XvY6r#nCT#+hixKE%Vm}wo zb=YSHAK|cV3^B%FlPRu6@lBvw2sRET8_VcbcLO^(Y@k~j=LP3c&EZtqPf<>T%K0jJ z7h`N~%o|w5QWI`B=m#_FZPa8(nNgsh9q3Bva}&-B;Rgx(2JlINb};ZYBlj%OWks>j zfN2FWnkbVUwsi%bP(hnCz&9)S(u#3X1~Lk?a}BFGlb_D87X-4DubIma8dW%R)ym{4>b*gX#`O9vNt}6S2lHL`!F>I!R0; z!8Jbwesw9)mVz8`2Vh8hn;&3RPo z5)^wB%$p#%7$|!K`57p^3G+7*X(5bjL;e8V4h6~)U>pl;jE1lAB8-2gm6K`eLza!m z=m?a-pmruTfJiq3jXMe71kmGvt`?%3jQ7d76jt^Z8_U4o+$rWkKt2QX?+j@_&^8nO zF&Pe!^DSB4LRKFu)GxzgZCUvS&hu%0j1d=+r7c;mBy<(f{2FL(ZD?*Rw4NiC&Jg}V za1f0fz}X8a#=-Cf$frR*A!w4MK`Q!O$d^DXJ5hQb@|%J9Lb9$9pFyZ60*8Y3CE3!A zumdO@WU`|SJk$`=JnW*XG-k6@AEM|-6h6=Fe`KllRq+p_;00xDp*poijZUcf3ThpX z+OI|SX9>!@o%DM8{C1w4CmfSHHz0T`QFb?!YmN4pn@vmP zQHgP~BOl{L7c=bxYxWnL=LMT%q*#Q&Eeu^{#KA`1L*k#7@sP=$G~o^w?E#dDARdC_ z1gOyyitnT{0n+wTj5pZVfQ_d3p2;t?X!#3E<7_f@G3tBJ9-^h&h;$E;7C|i^P;I_u zG)`vlIE1!k#IXz>grbe1W?!NH3sCk2V!TXUAoe2dd!USBlr2=Whl+iIZ2wY;hf9ew zODP`~fKpbT5qZ_SQCc^QTyGS0eq1$fQHi5NW&J?(55pDVFS1wRDFOXaq=jK{&tk+9~|Ff4+_d%@OArPis$%1eQIPXJp0O5Qubj$w8o&2}Yy znSjMq*#nAeOuT`}+ZWbT34KbGpMyFmh<;@54aWLFy@?PP1>)L3eMLd}QNV+O)(VyD zguE$*Nn|=j!aD)2C@P(b^!HNy-3WUHQKnic@3YjKB6PSFZ?{_9W4l=RGNb?1qI_?# z`%T=HvV}zBWzv77>r5j%I(<*4k8-vQHS%uC9zk#%te#KV7hD~oJb<=xZ5H0i;Qmx~ zpON1gG}=(#=7?{IxLCj`0c{nCSpuI6;44Ep(vjCIi2V!7=>_?*jQV~3CU zKPQyC6Y7Dhn*p1iP%li#y$p63;n!0bNpMTb22j?=#eqre*nrxpwc*~%9JgkVjTuf zW@r;e+KizN7W~*k?HJsXk^TtaNTFIlq@h5XD6RQRpk+nChK1Uk1N`bwLiHS2T`6#h zOrHwr4yk2JC`~4Cvw=^V;$}(fht!+0ccj!&Qa2%e2v*O^$}>vQTZwxs@jZDS3RgQ= z9FWSo|9-2Z3l0vKMHV06HDeNEpV$aV}tIf;M$E8LW{& z`HU*_0H2Adt_Sn_@c0`%p8|^wLB0raD%IK+;m09-7er$SXhTt=FX%mh#uUi+q|(}u ztq-JkAnXa_Ls0w!mJS5Vwls7l8_&|TA*errItz&2KpYQgD(P0YEE z97n*|SI{yrA0((P$r)hj3gqcf?nl@PlN|(T1W@*daXehl%gg67O@O5b0d5V%wh+ca z@hMgIWURW^B5t-wT_R#H2%Qj(M}(vL9j4*I=-cc9P-iuI|u*dh<|!mpJv3ppmE zU>9XfQt=<6q~CdAkH~Sfay*U9Zqf9SYT8w(bs94lF&f*#cr>l_g~u0k>rD5>NcN7B zT@{Hxn&s_eWjTRPKwb~ZYf+j{pN|@ z!A>)wgN471;wOUXVxZavvRg!bDda%wm8J&3;3H5 zP7CHQL9~@HO@R)Gn1sT^k=dWYafCi0>g&jQ2Ds{4pxh$)J}Nje@WMw;& z7Y1-O#fL~f1;-WectT$O4v$me_z2XyCf(=q`z*9Csk1?wEpl!UQ-eA$$YnC@Btv_d zcBGenFf0mG15CJC)WrZ!gY0BD|E!90WV{K&I53WfVFb(`AmbibvppG4t%j1Dr->`S zk^XlzwQ5r-e;bO=A?pudBdETEk&h?xd=l*le}kck7CefwDS*F?D7_RqBT70p3c8gX zS6FWOBWphgIeyQu_X+Mn$9nKI9rS?&FQUp5h!`DF<^XX$;lCyFK1AM%EMJlQ7_dJ} zu_c6|q4Gf>Mi!L*q5N_vj+XRBDDNU+5Y*^MaR!)Y1>)TzyjTlIm4e43M^|QTn~J_d zDWg%!#Vpv+3dR%Kos3UNpG9gO5o;ULRR&wzh&kqEbGQ7r6xAEa_=Hgt4CztQhahk# zh#Mh00rKqtJBVC)CL?b}G&>vW2Mzf}s(GEMen{e;PTSaJ+b6{L39(;79G+0#N@&h-=sJVHMWvTOT_B}_ z&>H`y8k?GIimM#vvMpSGn8Ri}eSeatgXx=qEdbaSp+5w4zDc_~ql;kk0Nn`L5t2@! zp%1~EApQ+S7a(G1hQ49w8HGk6;$sx;h2TFSzQM4oEW8t=TwtLeSXy?Z>MoF25Bk^P_IgQpC>#&Tb8mP(RPH_CJ}aqeb1m2$2=H#e zrvv3cSnJtvZVcMSpq&WVPC(TYsLlkVH(1{d>PlF=2hY7>&Cjh*Mz(#;J61XVL z#)6zjw?|-n%BcN8y-GAE5%zZ=HYCd?Fgt9$sS{~y`+z8|ss5}qCStg#O zNDD!H4djg#)k0o7QuWYP^t z*n+7{rRQldEe3EMprKIi&d}Y4dVsOHh0*4_#Z(8caFi1rxYdpG%`_6uOTwySLCmIN z8-yQI@Ym+&h=E`nkh5T{7|on-GzoFUkJz~>6_B!M3Yoo|Q_9k!`M zpStn_M&5&HbcNDKinOat>x-HsXdj@AK&k(U!q2Q&XBBLXqEU+S2%=0;l(~p<2b6yX z$|Gc%K=KX}zYsi4Q4L1nbt-Ws>vET}zCq!iq?iyY|12u+WR=&8%ArzzMx}YEO3X&a zG!;D=LN`IfWidWr_sP8ZfIUO; zpKy&u#xT*w1mbs6eUd`wqiAo*9}!k{lwmyBTmJtTCd_>U5L!cc~XV+9#Q!)y#ax-sEdB-@^eBa!S*R_a5ugGn1C^1wiR z3fKXZuS;SOExLgAIp`BbA55~NQ4ctj<-KoNeF`TD=0we}u(bgiSZY%Wizpm=AaI^dw&|S(%msvkZKbsE;9{hmbcG zbYOw5Vc7M6KPj>|h*Lo90OZrbyqzi5F=&cQ(-6AB#CrqSU8pZLuDUTE`Hu`vV#M~0{3Amn8C3^_cZSkzps^FM#x9iq z8EE+pmBpd=OJCQm7 z@O_}ha75J?vO7@lJ}h?XVTiyFWE@6MT}2-y+H#_tL~vh&A57H8 zg1VKSzBTtj?yaNDn=jC+%Vd5`P+NuNO~T{gFzz2_eS*WPeULGp8v_`1AwhH0pXZc@3FifN3p zpCRvT#8hL9BlAKc-)3lTW=#7TF_7*(;i-?AJp$?($pP^IK8MP1M1G5r*JZ?QkRJiH{1vh(Q8=g+o5<{MGW+q&jl&SQQq-rgcmw1mK@AAQ zM1nma97Es$LcK!u2u0o|q%TDtA@DGvd2dncEK@xW(DqP$F4)>jSoNG#o|f!5$rgv~ z$RZmafzPG*M8Z>&eH4my6fqQqohec|H6W{MD+(64ur*KkhZ1S zV+3v`(bbGwI@7R(II2>;a{})+YkXnG(`4lqDUS%0&OqrU#5bV2{y(p9GEnvd>hFj= zgsK;r%KnaWEQmhAG=k(kQj8De*-#k?l~bs=)DT@lF{Y@Dg`yvT^9cJ)OlKObuOpw~ zirpO8(ZCxGjgw6Fg-Husw#0?q9GYxsbD*K+J<6U3Vkg2^tma$d-;n(S@>!5ghB%h8 zok^TTXp~V`BycOrzGIXf06iVzRzb`##wnD2Eu|f!wDdyp50qmf@~Rt9Y_>}MjB>hB zB^?1(Payn$sEkJB?G?Hl!G{s)e8`^>e6p18SESuU`$oh7na!2qkRUG?*k8o%5u zu^}5PSU-S$3476$?gwy(G2SuaBV*pssrL-Loyb3c{5+`T#k6r4UxE2~@|N#P!ak9z zhaH^Lz2N+|)@+X*vgQWsv2C0M0VuG=Gn6r7NL5~{jH;Z{prVvc{hm&#q|y75*g&N1p%((fmIAkFtMOBv3I zu$T;wJ?QxuFdwygGmw5qHu@21AmFb;)eOnTE3ksW6B#&`(szm?2`5C@f)YA2M?Nm1 zd1K_}Pl|jbN{m9Vdz3aOMyxS6a^sT7=_cjIuF6%7?1Pbg7INb(Mw|DkH5z2gEwIKx zOg@l__nC7AQ=G!2p-8p>DLt>`dnsX)aNSFCm6eHQ2e+u)ai=-Yann>c zTwzpKGdyp}mN2E)kkT1&bb#wE814c6ThfiPVzQn|oKS(6Bw~}w^k295&}r*B?N3e{ z>CP|QN==VBG;D0f+uhR>$*R+wzEMKD-Ow0AwTO`hKxt!%??=Sl5%^4j%~Uu_#bzPf zc_^_Za+#;x+)sIBUzPvORjGegDV-GB7ZHcCWM?V;n6)W0PGCk))=^NGmr(MBD*22+ z{c@;zWl{Z6QJz^;|0l}IB@wL?mFuP=Pk>@O0LOv4L)2L!_Lgy0IOl}>A|*RbDYZe> zG85IB_o8aq70C}qN|WK~T)8b3^`=aHifKNOq`B{|H`$VtV|R&C&=3c+eYw9L3@Yvwan8zdbNVahe?hke1O9bb)+qm z{A~~0(<2ULw;x| zLGCNmX9~?V#oQ`HA0aM<@|HqttMuO)q1Mhqy|2(*2sH;o`F;fFKv*EfTqstC{Fe+{ zRHR{{cv_*?5!wPp)2whk%kfppU@^~OM}6|_z+s_!VO z*9^3d7V2N5)(55fCa7K?YQ6yFU;lq(_j0ISNv$$O>vN3eSn7X2gRSQPHDRrv8B0%R zIm1!6OK9zskcTJ6tBJVN$=#FbmWtT7g}kr9#?Ogswp48Sy_>I-jMuqWv)x;Ma$n;? zTATgNs^u^{oQ4fRJPfnWG>kIF5u`68eKM8TfSQjAd6iTSW5lHl-Ns^Iv6(D!zDhj` z5udB5@9O#}|MXJcu!4ITF~Uk2#i*STV9~L$AM`#@x*EcE6sJHo0I+LCJ71Rih54``4hi!sv-@vzvQx5aRCY`Y z$Jt8k770H`vi?fdJ_*)l4_M1QApQ!hu?^VzC5%g9ycX2`WGpn4kKD@LbnH%#TSe{^ z;Z6I6}L?*cIf< zkj!TLIN{2;&L$gW@v?yGpnuq`y&|BBdpvbXkNB z3}FnJ4>jryQX@or6V~#KJYNL&^TYgLCyxl^-3)dEm`|mZhhh37$xY4lH>03LIRr`aDXcodz3S2-h<(TZ0G9ToePZNjvMe#r$410Fgk2!n1j^p0Fr30c zi1-I1ZnCiL6?S=)bSA?GvY;a(j%C4B%zmro^s#c8rh=OkEj^&d!L;;8(wg#^EY~`8 z-6g|(xt|bT2AKOFWq!L%cZTu3aE+5Sj}c=Q;d4CrzM1XnKrd%L)_@L1JV>cMQ4Rp@ z3whcD9y`Iy{W4r6Vspq}Lg6le-3Qs>l&=R_4+u|^{DdmqDJ`Rw4H5Y&2$K$1&Hz52z5aYnS9f9sHyB5JoDA*1q&Q*?& zk?Ub9t=lNC`cx$@Rq^*B>+On}Quz>p%Md()@}&&^o)JeN)Pc%d67?Vw7l83+Lw?_s z=UFuOx2QLZC^Mn5HBkDKnntrTDennzvJC%_^9GrZ7t?vcbgrz?5!PlKc*|+D>S}oT z3Xbn#=|Vt*#q#TrCP~^S5W5uWiIDB3sP2LL9C(`(;W2{V>=r~fqxX^}f66*$X)4-GiYREAoK z6i|0UR}ywTm3}f}Z!q62<1e7bBeOSYO9@>{D-%G?1M*vd+C!R%68}Ldry`pBLU{uz zb)oEKNfQw^RV8(dn#)VBXCinGtol}rVMaa^jPHWzQE2NK8WTwVM3z2e-l|yq*+ZWM z%lT6C2B1D#YF;ii*KxGo0hQ5?mJ4;te^a%@QFV3M zXa{ai;E9B92v~P9zNbn*viY5mwv*JU5Pve-n?_7BmbPwrfrlm=w8WS z>1?oC4$}`XK1Pcd9ra_*`Yvi$I@|}q($g@`2O6IO>92r3Ltxx$o1py~(Xu^C_>JCL!R+sXxG>0{KUhVmR)ZAw@VBF!?c@hRc+NnAvWo8a11-g<;m z?h4P>)AAUjPIciE3w>ZLyIA-WfKQR)HK-f|;G$sZOzH|UR=~>RGK>Q4VvuJ;8U@Bz zg2qMYNs-rr(avb6$glviPYFFLU^fePu;5o#ygS3cu~N;p)$fFpBGNS|jYCnYO;ETK zLIKg^fFtJCB>5N?}++99a! zqJ0S3<3>M_NJHIA??fH#w8NdgyRqzJz!HOIK^Q974RUma*L~p4aWcFh>Ji9~191_k zs{!o*aTkR5htl>am?ZgZNe?KvM8KU2-KdB!6~3NI>V#q)6lE_&3_-+ZqW=W=(_-}& zkX}}#rxew@LYfCO|3&0m4Z1+mX9``bl6xx3?aFab8y5cWdY zR}$W4v2_rBCkpRDunYc=rSp8-vO2!@S~L5)A2h{YqOn&j*b7!LVvSunV)7=D=ee&vv)&K<{)73nk2z+qb)L|=Ab$_Wb)Zfq zV`re&|VD2X$kdDVTJ#z(H=;*#ppOhMMuG~38*81+y&sJVjd3i zII)}xcHV)?RRaD1#Cm`p2lH|!2SI$#()J|meUlFn$^ersk>Ptq*dhp<2H8x=Zpk=+)BrzAU1>PTsr{Tjl4Osp?ye`Z}2$)6SVVpV;V(GDQEAlTVN4aPS&OIo*)E8)J&G9%tmQT=nK) z-!h~g1a%nMy_LWwfPMnH51P7f%~7(qzca)gKpi8rLyg!@Joxt=?WSbhLuC$+zqA9QfdD! z?`|Zky(0c2;zqFjBhd~f@+B8fcJc29d(=?&H~P~C8%}T&1FO-NH~N({-<@Vpn&k#& zafwm88aRw74OC8nc#`BZGRoJHoTSXZGwJ~hjb?BwwD~P+dyi^&KDB+nS8cb*+U~4c zPg8Jig}uy*9V~J~hUT@3#;Tpf)*fJM_b7O?Qvb`0jY4%us{LiC`%Gx|6_GzblKJyp zh~5seuR!q#gpCq*ZNmG>{MT~7FPo;#rgKaaJ~xsC#BOQK8p0eA({gaot+V#^MKA@WIboW{T8_G4_60dm|4fb zX$HTL@^2_R73%B&^qfkS_btnU7Jk0f<_2cJ$&~L4=C@*e2m?iX0A?dmcrDz1g5z76 z#-w4#qQEY558(jj=x#hTChJ!)=i`0dro}+PV(6@lfML@H$ z;2j~a7h?xNhe8@d;Sqx!Vki%|%3+qx^A>K5auUKV#g?7dd(y8@`kL%LN8&#cF1)&rHfH$wkr@Ja^OX4JzVJ%seJ zNFR!923VBm5I+B$a9uuv$a5&Y4#wHA?%lBVDp>m+tZ!#yOf%vkQY#aB%oO)fb%G&} zHFdXh^8}2Z(v2M{d%L9#g5a2yP{9CFcAYG`;|Gz~+aKz_F6Ch|}_mBseCBx5L7#<%DV)Ukwk1HT~sf4YPF3mch#MoK*fP_zB7KRkGP3s9#jXxdEMDfe$Nu?v^&PH6C2a-=%SsocqD;Kspzo z8(_GvFndPG%9ns11L8uEV?eG620^VFOw4i|wsr@~@I7}tW^MsWTCER#Vy8_<$a9gXar0=0LM z{s^u2dGon0r_X&Qv$Gt45y)6$4tf)#i2RPg;zZ{TqC8LVZm6t*Y@S2rR}J| zuT-&y5Ff~}Ea3wIzC<>k681Yo-3HVc&<+#JDKI-p;8&nN06UXl{nmu(Lh$D&fqEa5 zg9P0s;59)Xi~0|!DKec5>+UV5q3slTO-8I?(O$w9pP;p?(AE)ZZJgR1CgCCxU%_G&h+SYg4Q}_rc?OFu zi$>3=;4C;Mz<7w5JAzybEZc%MgUqo;-_nV_ir0nQvA(%)%fb<~oMDzbkU1K{N(elQ z%uj{~&>coLTplcr1{&ns5e`&m+1UTJm=p`Icon zEu-Fxs+p{D5~96>!HrOx+mYN0sY950kIAtN`!^$JDDb0%vB?-3hE0+_H4V#&-KBuu zN2%V6EW5iZyN4>;}97R5_3zS zK9Rsb#dez5eIt=~LA(>$^E%aB2(<%{^(h3NL6)_UzMA0UrT81zuC1!o(rmD@T{DBf zR^+}JaXc$uf!RI)??~~7H2+D&bFw%av~y+68%a)uwZmoFlZKzbT+O6kWnzVZ{g?2K zfY@H_I|#;Qp>n6B&!IY!&`g6(HE=qGbqxGHR3<9g#C#L*cWb*^k z??dLsi24&U)(7GqvHnJuE6CcbRc3E5^xh|QX94j=s@{;%t|Hc1V%{X?d;)hRxjleA zgcuFlv4sBs*$ApEg=kJ=@OjkOospxc+y%r?pnJ1`AB6Il$WI6@LijWTR&!ttM?Pi1 z5vF!tX0C6lU%9#?OmQrsbHMx>mUqJN6HP0E^=zVd92tWstR?w1Mw~3Q{S9?b%I`Ea z&nmq?GCo3Ld1kXK(!WI5Ll#)WGB>1h6ABv>Sc{15iJU-a9Mj(>%A=0>YoqqkMx0gB z?`uqlIB=GWf3~dKSz>X9@5a;t$aY(*ZU^OgOkG0w{Zw-o(+4u`LS}wV)$^(LI1}G8 z@nJ`d5ZnEeu>>u5hHw$G-3sh(DC!C*W`cPEh(8N?9N7LE*1H&3M-#Y%ghj%=P$#{N<{ zqF6NBByv$O7l!8^GOP*XUhw=YO5O^$i)ePh|Mei3hw@U0>q5oFW>IabRfwTu1&3Jl#X3q1WdMIk& zc0#iq)H4Fe6`=f%$?r_vw@m%MfyyC}EsnJ7l+CvY|4zx35c{HTj2YN08+TRMgR_dOYz-S3S2^=mq{bl$c#geizKy2Pkt6wGJ)I=_s)L}FX1#mvuJ|o73qMe}1d<0Cxkh0;F%1@o+}p z!BO+mT5Vse{x)h(Q=6}6&B0Q>G>1dLr9oRqre)xofPyJ1{&y4}gC^gBYkSZS6fqji zuR-o(wC~MqWN|E3Tr-Pfe=q!<61CU%5X*VJ4aHQ5y>WEZ5Gg%i8t49ReQ;zX|~Iz-@z*VCZ>13l9%^nwztfFNBYJvE)Vhz(Z?prmnl6E*?bv^ ziK)7dfE|&xJW{J8@gBtI0hOHG+AtJ*G3$Fs|5T}Y6xvb|ODg&{%8ao>z9MTs zg7<9%{5({geTmRrUaI3{b%@yAJ5l!&^pt=TK)YYm^D-?%YBEf#06CPx)kw|91r3J9PRw=?ft5@>r%Roekp4UaFCgpzMtK!s zuUhINOO7$wN=8g1@F|(2sP-xfixTB>OARQ(ppsa>iM|~hFUJ@5JKCXV4LaPF`!dT; zOurejvB>xWvdfYF1X3RWm;h-ZDh@^B5~kk*aVU{rI_$Cny8ytJpxy~~N05DcC)>-! z_Vxq@5dJ>dUIOYckT1jHIk7tltm9yK1H_v~3~*xM0!%65yM;KRflg{vUv9`x3get& zakaY^HRl94e?;*&aC7NMmeUmfDVi24q)cMr0= z9}y=S@-74375p$ER|D*(Id89T=-|qPwlv@ZL(Xt;q@kP*#KnNU8L(pm8rCva1#+KY zy9vn!K)o;WQjx2Xae%B&0r`NyajAA#W-O7((J3F9%DqC(Zy`OOu&>1OS^_Hu^8HFp ztF*^k*itRAbyY5qmUl31OUp8osp$%P70FW+d2$-g^k$WzOB1oN8AsCj0E(*v z%St?Mp3`V?sac!=Y6PI;AbUNt+?m;#FVm(8d7OaVL9R=dAwW3@V1<>YW_u>!@_o~TfNoT{?gdDim~q;XFg?y_1$wK3#VG~&C%GZ=-^nEd<-RDwZh}g^rf*q z)7Y+I$cu=)0p#;=?3mtnTb6d~EV;V8?nQ5hx#c$QT)U8uJ8`^|2OIJ+Krd7H8PaV^ z%~E1BrFMeq7RvTSWc#Et|B-o8-SvRwh$-luUFG?z1;Q&x#Jwwt=%Q_fnu{3&F3O< zpF!tSF@x%R2-*Hj=^4(+eq03QY6SZm{7BN@rg<;jkAiD4TKyEPuafy4p(CNZQ_|;3 zu9LwPGJH2>^Ct-BLAj?vV@x=YiNeIy%vg!)E`zMMBjRsaySry}Cq#{o91P^PAXiA*e#x?5 z!Y8Dc{nE=V*)-=x({o%jJ)^R8*2vQHM|o$Qtm&`PoUPJ%RNgF~)|?bYdz zh|Yb8xqhkanU85Nnfwlm&T*DLf>G{5_<<1j72|EO`+Qp4q}8ufx<#dXf?Qjs@h(v( zh+GTg9-uyv=}Z(0xDTQGlJN2|%nzdbHKfin#&ga*z<|T3JbcdVK03j%3I9jJH&1YU zildNx)Dp7viI$zEO!lRzInvbgE>-Sl;&vuZoTDGkvy#~a;_QkzAXGoA85>399ue)) zS?jZk`h~J@Uf@5Ei2oT5^vw|3Q>EN2758U!PgQjPo;8lm)ZR!e3gI3iFCoPiOnxwd6p#WSZkbeUN$Y?fP^;cTP6ceeW!=06(R=7rX;$SyC!I-c0fGQY6Q ze|zS_o;uM{Z!y+!<~WB%2b#&7fxpPswaii`pO7?BpMD{C* zUzgCno|PW;OJ;PD^$@5&CB=!#*dl|IQaL^{?+nFpRo#;!b6N;LNVC5td(Q>h)5zY< ziP;Aceg7f)_B8x&J?8(GVa|Tj6m!i9g4P|y*}oEN$YLk4y%&Zp=(yROx4GewLXPZ^ zmvx9sJK(7e*wbOo*8o$Bm9rY}4ENHn*Gn_j8Xv^cyo3hhQDTUB`>1yv-xiIU@r}yFMh%Oa zkDJ6YMRsYCA6TT{IdPz)S&HB^!XE{F2Qj`Cv3;^Em&7@9pj7PAcqoi3i<~X$#uQ!- z=!M9f7GNv&+b=QqZJ}TMF)-KoN*_{{M^^CRR-D*{PpQ)X0^R8_T~G6i;C2+f=O^=i zcR782GrNK0!Nr9q4b6Xr@_-Cy%Jo`$>?r^F445_&`yP_TQHgdZLYI+#u%K0>+F!u~ z1-o7JSHQ9YpzXl=7?{_CWlf+t2lQ7^a3j1v4X-cFvE0?`px&9t-itx*Lp9&c5y3Qf zGTYaYe3i0GW!Qtj(G-tjaz6`u&#Zi6z$6NXBRh*QbeUiiD0`O~zcl5>giSW!R!GlD z@qN~qki@kau`wbaP_?~DJV2`_k=+&CdY5zQc89&;z)~i*gqDW1hQzf4SSN^4VLE}{ zzD>sz6`N+IEUBh^2*>s5y=Mlsd4TU%*ff(ihuOGfJZ@HhqQwTXc5R^^O}0-u>W`Lq z(-Vh!=INGo0}6*oI0CXwA-h%5{*k!}rMmzeD8zO`cY+kFW%3W1S|)R@2bk91R31il z_JuTE;*%!4$ZYp#>PA+s$+lh7S~~)*PhsF-Cf=fRW5Om7c8_2i yNUa~SuZo9zB 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Ƴ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℞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

      Yi2^SGZ6h!TfpHNG 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

        r`*%wWjg2o<3!FDJr@VHqPU9k#`#ewcI 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≫vUQb#-F!u*zClQN@?MP)=TWr=6%kyA9OtVAX{4{qPh3q*r z<>#h2R}i0pyacev1Ed$maPHL_ zw}R?Wq7DJ_X+R$XdI|D-kTw{Mzku;R&{+_)8Gz3R<)W~71gZ}Jogb*q+e97(v(sU| zIlVan?mNia4`6jMG5eD`2C%tj;fecRqS}pJ`MN`w7sDpS@vxg7cWPC#Zcf&}5xAbJ zivw6e@@;|g2H=|l!Hy8M^u`!;08q0IP+!8tAYAkqey`0rF_cPWpttWUey zbjq%#{6fj!lkgCs2LNm>VN@nQDVA%AK3?GNN^Zi$VyxWW!&kB7N(TSVg)v1~tH|$l z+0&FiOz}O)ZiVc0Dn`3-Il(t6n`A5px;Sr9b4Jl`K5tMCYoHyS@qtsf(l`g*mJ)G) ziiZbnM6zcvR92#z;k3?Q+?pvxwvT7N;n3hBjx*^a%lwG2yF}gz@LWmbnDxKR-ZdbO z5p$S~XQbspK|3|&%QG>F%%OljQS$ewv8Bkpl zP3NSK05DFT1 zg=-WXd&9IMT&uwF4;c;&!@rVtgjjk-+fjyFWOjoLKc{QgbZwD^w}sh?VRlTKeJA(b z)47FQl=+~vqM)x4Dto5<<&+(lwCB_6@8mN*z3*+6`fE5Y%fhe1c|{mUrL&XtMP)V@ zXgdkqPQ-r&Ob|6WT?@!{xC(ZMV+T3!gLAl94x{Diw7Mp(`&WAV3axvIS>FZDUndv* zdUm7UR~pq{n$!s;^VcH0RDdg;dd-mU8S<}G`@Lmd*s{`UeawO#6E89dL{2240qiQE zSy$o|NP808%0PG3b6j;#GIk)^Z^`cO!0td;9SFm!MlR*1JDlA`9PI@LT|@CYqC7>F zU#ZUJNWV$Rqm}tiX50&55fU#rZT(_Br#0*u(6F3ZP)eh6enHRVMm;YTm0unHpu?s( zb&oNxChP(NAGtW$;j7aH@VsWufmem75&Mm`d zp#BbOCSbclx==il}MGmioL4Cp%(sC@v=2J$vT_aR4I(?ML+ zLHExc#>ftH=Z4t1vAnRczGn;n_cCYSznyuE)Bf0qCpD_md$PM`6ZN=GV3Q_otCHm{ z&mxnz2EIq&SHk~6G^ z$XE^_y`hzJ!Ol0b<{xkllIQ%g_GOvY5u=FuLGbwjI}EUwz­iy+Pg%T8eDLy+%) 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%0A4os% z^p{v0+Pn&bakgHB`~dVDs2|`m728O;hFGL<^X*Uq*j+ z#n2ZpG#`vPPafJv*;`FrIngyPRQm96z1A+jCfSXwH@PwoHTI+HuSqwwU3AUHaybk) zKR13P>0Myzq=3zYo)p@mQh!nyIW*ipA9QQW@qN%~_FzJygOl=*DLVs~n0mMAJz>`$ zI=!XEg+@yxWjUL%qsxwF7ydxxnkHs7x%{Zdq@FACaTvKAx^s-*NqF4ER%U1&GtD2W z*|VeFHa)Uvy4-K#R$yGiHH*?Y+hq({x{fMzvIniqF$^pPE0a8Ed=d$Ie_T;Br*|A?ZPh^N4mj%3x+k-ei?ajed;sNL!N?Ru1!iJ?44stbg;G^F>0u9KJv z9K(1303ZNKL_t(eXuQZ{!@fK4l40*C>usw!%+XslBOb_7523K88vR&B_fm8N;k`${ z5cP^te^axti0!4id=x&X=r1aDK1EKDe1Jkb1^wTL%hn~Eg+uizb#-3IUpV~XMR~tVe>vGu#N7k{W4qp*<_*QCr z47Hmtor~fak2MjO50IX<>s0XFM$0*RS7sB-P|A!cO{(NN;qK!u>kpJ(E-ITA>#w4@ zOf;W_%ie+i8tVQU;?+PiVJ=2_7s?5RvS^|Q3hjJUp0xdhGG}R2Z!7q=BIXPDx6Buq z^U`@;#q)-=zvL^e;jgV`Z$&dlIFAq7y_7i(#LS5wt8TZg{$``!JF!RaPVF4-ktx`d>JPK1|Bxxc98H z_m170(TYtiuPJg#!MSlHqD6+pNzhl z&o1Llv%k^vspjeG_;ISfYrc6&=y^q{(zI{k-ky$F0_8(-gyEa7hOY1X>2Yp(0sK8Cw> zf%j27L)9IYevHe?%E3jU{81?W9%>eo20wLaCs}p+q;7(n*DBqWxY-Wc2~ZD%c)@gM zLVFVo)YqD86GPaPLBO;qeqn7I<%M>~8lC_Y~ zPjGp_5wj#*5N0~kuTi;NUAalEKA?+t=$d!kF*jY#@5+v(U%}qS#2Ax18@~$7C70cV zt}&X`)`E%l70fPp5WE|-&zU;WG>d>g6Lk$}e`36#Y2HZUU87@y+(zUMf?o=qVswdM zMySUcb~oiBh#!oCHhjI|Ba`oemp3uRXnE-N6kbZ^?nqxRbG^h41RH|?gJLmCT#o!W z>A#W8=bD?*wR^+Rl4LCIEPu<=oaAU`arCcq#74OJl-l1APjihtbicB|#Fo+w|H zXx_<)wL)wZbf*S+Ny?{K^$Fw+iRLrM&{)DRqHZk2hSuODXyzxilcL;9EsI+0n4NA= za)(uyk$lu>?!G;R$jb=+Zuu6w+s~o#MA=Mgjxgl~!wj~6XV<^sdbw)%X4Lk+=;|F& zV`31SM(A9nZzb#1%5DYK`ViHBri)iBjzKxa*3VHn33&ri7XelVehA%@rk-y6nDGQu zE`>M{@)?=um6}KRfpETJ>xIZNXEyzVM01qHJQ3OjYhyWnN5(mknmdy3gjq|D4@L7` zS(}LXZJ6_dcBcQKnCFz@V$oeL@-m?f0``@2WjQ|z*RP86w~?F`_8(>6=HLNGvq2VJ zpTWOfVmC@TS&g?=)N>SCTI!xNgMDRvj(c;9=E*3rol9IvDeF+Qj>2z*d}yJZ5cC%* znfnFxm!fVi5B74le>6G1nj47R54A5!F-0z0Dw}$RErl`Egi&BQ3pK|!;4p&TG{uiQM1az3G>uy&Ek0?s&G5l4t-(V%&}*td}N zB%F&!`i=&!EoPA-T^KZ1$z@At^MY%95!rn$GqZ_RQ$7^saZ>xTqT5sIo+i2%oH?bs zo>%?fk2?QrYVm)6ivN8%44yOjsGWP->`9jC61FqVsTo5{7|)h;C!u<>>E6KYeYl;3 zhwl|5kChy`qj7zyNv=!tW+XETor1U<@^VyO3u198mIye-^#5gg=LGRWL0d}wRm7OL ztXL-_x6P>Q)DmMIy#*Y-`>f_UQ~n^Af0DgzME|%Xj|o^o- z@@~_8Gcvx`az=XS1$$@);3Z;ki^(_1^0$nkB{E~qEO}G9`BBol(!|cjZ%DpY%H3qX zf;bSBgHvo~ytS=OA(lk>vDICW;jtNmHBvg#(f!o4^TEiG^6+YSu$5fDAGEW{b)U#` za%AsrYJDQ=V85*GP0C!?t}~muE$CxY-!@!f>p*Ah4a^)_HY+Mu6y>=QI$Nb4j@si> zb)FjS&BVwJR(+>N^9K56dNlG2=pTaWU&!ut)PCDB`~`e76?MPCLp$RB`=s`y=F5=B z8=b7^odk@vcxlvq%oBD!)XIrgtc83M%9WAd0AB|A7b_R7(x$2YCRP2hh31WhX>RZ3 zw~um8vj#b4dqpk7d||w??cWRa0h5ZU^eh8f~5r$13hF|2yzR^cfcQt z`i98cL_8*#6LX5}RV80b#`-9ZMA|1PXN2@uim#;R6UfUU--~?^W>?T*LNB7;{?eEm zLd}ga5@5wwXy6I##l*_Rslc;g8s}^$AU0HjNXB~RZ*?$A~ z{|fy*O#H)mHPh^4ya(h0;EzRq5#;TaI6#yyMyKdJ*m6b z(c2cqHX`SPW^sAU{K}!zk(NaMQr1eKslfD7o+aA-M7<4sK=Ol6&0*6hlmlgMVCNN*Kpg-FJQ2RnqzJaT*}>#xGQ;#`Vk2c?&f z%)2A~ZkSENY*fhqlVW~LM>tqgQSXbW$2xqAL%S+ig{B^$;4G+@h;CiXX0qmz%0X)4 zP@4YoG`)>fV#SEEVo~!>;eMsu!U8f?Q{}b8ewk!&;e) zWyrV$^Ao$-@PEh7SakZb}gm1N1^w0Ls_*@HV=4H)*oUNpe&4sP9>YCv-$$1XST~# z4Vpd88FqIM438taeR20iy1Txry}il$c&WpWHy)m^`kVLg@Q=;NMW~yU)SqL`fy?eV zceMMbRrThp(qdN3WpxjkcCs~C#@U{XeXPtM8t0Ok`JhwRX4Pv&{Gq^kl8+meyf{s& z+uA&6_3k$1T~SsF@$-Tn7R_PO(9VuBYZgym3#U``rHdYSlx?j3hozi&c*raA}6O-Qu4i5QI!8wv%%j8#7jkn6B zHRFO*vvE>>1?4sJpnjd)N4h38S-N>_!9CbvM+)9 zmKe+{kE{YY4$AqW*-XTFz$}7yOnC%6*XR)EILLXSu59Xzke?ZzGG`-15|77StCigB2_il>pKdS6q6VtR^1mB zajJ>0Al4N+TIdeJQbH4ix5Pdg@{3U&pUH;TK|26nf))cGB={QQ5K*QIy$X3J^!JB+ z2Kuv_X>TxNZcc`NQ{lB1AChpP>{|ofD4IKnX|^NUIbGUkD1+}3^&y3>4)XKH^}b4Z zUDl>hXBLC?0#8I`G1Oh)h?5m{6X^e1E<30;SBg9v^dVWMMAm!4Ia@g24Cl{e&ai!v zJ$M+pRg4dmV_!V&1kAxWAHmHe?8$Pj&uE#@quAp~A7j^v4lm~Lt&-0WWsz_*T{u=z zdLGrfwd7+YEgDfyR_f0GUG>wW*fWXc6?G%wiB9HD$3(k%gDhW!{Wa+~A6qA&?y96IWvl}_IpK83Lj@6?wS=s$enG?wV@v8kbRO>6zbw7(5>qad< zSC+Y=mK~LG3N?08=37etN!5Q<>f&%27iNPXHLcnO8qQKM(ni@Vjty=uw}CCcnQdiOQ-w=9lrRQb8GnZ?fStp5C2 zJX4LjfRsBW?NfHXu8a+pu^HCEX)beWs;xQF+?`d+xYH-pd{Wj#nK^O(75g~R-b?1O zq{dNo5?wPp9ZQkk0yhUZdJ|DhP5Dou-b<2?arhbJ-B4W=)$co+Sxs*nX__}f)2`d7 zH>FX$+LUr=QL|v7JW?o6DeGy}<^tnW5`S0lq$yLZ{sdH>4wXMjER1v{XuPr>Q<77Q z%2Gw~p&T>Fy-VzPROyd#{Z(=KppyH9^U22DVy4?Q8BD1$vU_-Nb7cE$sBT@Gn>XKeIR!w=ZJ-F*S0w>0KjwS6J+YaxJL)n86X&;5@4v3;rE0kCHk; zRd*o$Sz?)RjEgA0mg4M?7X(%j&8>Dh4(U#bIf|HC6bFTxqfmc>Bc91%D;3@2CKhwy zrHrzTHO(DnXeY9Fsk6U^J+wz=z9)De>k}mlDBI6eIf7arr0xFTb})CDex~&{N%tn( zU|~kZwvLmAci)iG+QflUdX3J z(1f&Q6wMH!Unyc`BBv$VzmHzW_1khcU3f4@$&s^44u+$)TSOgf7j!(qZh+%e5&H$@MM<~ddbFJTV=dxr3OTeNInA}yX)lcWtq)55 z){3Q0b9<@He@bPWND&?9M=cLVHuuVf&#Xg$MbP`?!2LGs{HF*pxrLS5U8Ok>(TO})M{_;*s*O3K%!`B=p3 z68j0J3O*Ek8pIAk^aAe`^yDo80`WxVgII&>^MvPKd7AD{9;ysh^Y@#OGn;-beO`QjArYZJ{rGS zqFptjdo7gbl~RWkwTY(wr$l|WgeDdAS|KMD{G*bwdXuqbWVceu_WeRTHB{#j`Ff~3 zS`1GwzB!E?bYxwP)MRD+ShcpQ-C9v=QT6mu>%LKad#N6d^e0jttCE|k$p@n63rkbp zDNUJBLc2!fp%LA|in>*ZD-=wYcvtc&Qap-u1NeT(-&l3dRD9rQ?shZ_E3_=)yOMv4 z^-~<3GZuCBA4^X&N7Af<%K>uvPGnqIYVY@@>n&8e=EPF_7dN%pyJR^lvP_QJY!F@S z6`k)YZEjP#?#k%eX`*XSP}eOPo$rf|3!>G*(M1_W$;OdUHHgZtkzOFoVTh$DbyYQW zGxc))Xre~x9j2x?K1%Np73~nAnfx zxvgLHL{DC{31(~*$A?%fLdQqMMG8%?h+jx?K!|S#o)U1c6c6EYqBF*4=IpiWPN<#F ztgQ}k$KTaC)bS5>`4iRd9@TD=x_Yp>`i8n3rYi@#D_c368!JNxrTRk_{~`RE3L_Lw zqv2?Z?{L%u9lj4WJA}s!dVK4sAy50gK4W(8slRiN-qQ_nRs(+w$A#gtqEZ*h&9CL& zY0%ry^pD2PSh;s?xPNiU{(~iZgQ(@>sAauUdml#jzhAO{Mr6MU_vTf`!65AXbQDco zZ^>+bnQmt@Evez>%zsZ$hIdTb>8jhes@t7wcE3onnEV>r)1Y1?ajcYw1@#I-7l+Ef zBDgvtPc4ye6t(?e_@tm)S#DR7yX}FSMVVb@5Yky8Z(J0IhkBcY`{xVYDQRxGSx^j} zC3=rZELS3SDkXL=5l58p;!%8#ioaCP+tVwBUhjB%{nKd1e1|gaOo}lxNMr63)9egG zEpDz!dv0f3of)&Z>Ibgn)9iX5)~Y+IymXf$>v}i_uB>Xqw!y#_O{afWc zJ~IAD=u+fo)8#$XyTvN&5M?*3d69_w2=23c^$(oUQJGGseZsb_k?ksAZOvzfd zRbCJe?g)mzA2GaO@Snp&!@nm6H>$MbXzHI!Q-7wW-K3OQgvbZ1?oVmXs;Mu8o~qLP zNjb}uE1{Vpw@ae`9^xFcw%k1Fss(_J8NK#5#4$b6*Eo+*)&pdA46&+0<3y|>Vh5XB zGUGZ|{~4N1?cRyFxf(Zr!b3MY`&&8VJ*N-B{voMr$np_YAK*M^6nf;jC7y+xh&jx) z`Ovj@PHoEyYV$81;jS2|*K07cKHcEQ)Uu<|9^jpT{}bLU7>u{uv7+0?)V;y?nOwoJ zQ&Oi(`(4w`VR8@LJOcTe@G63r4Eu<92+Ay?*$i~HXpVwd1$-xXM~Ig}?}Oh29vAf$ z!RnC5Lfsj1CBw=_o15mlpz|PJGW9f5XEAl-(JxE=rzo3(4*)+D@M@UlBXvo1&ALHs z7B2V7@eiaMoaGnk=JRx1VD~=8{Tp!{2;7A0*~+{vvaS`GpGEa*(Z(mrvYIGgMRsqf z*3IaA6CDSt<&o@sn6j=5buzTaU{6f+71UY(2Su6*db=2(4t32+9VhC_qRs+&dQ$H; z?e0lE&eVNGy*2QfhSLJS1iDa;1%;0my+=h^&Uio5+sTw2M~Q_xL&QUZ4^7?7c+#lp zFE2NoX!N~Ak0jco;u|XYTqWPF)L&HROo0yp&xLGvL2Ijf-*NJSzYP#NWY_+zemi5*)3f@x7onSL#ixFa18SL*e5D9R_Omk zJcF5y%&BA?uj+ZDu&`8a3-qK?3y^wNsegv`nX;Tf)xNH|yt}%R+Wei`x^T4qy*eIH z^<=ePCkDI}ZG5P%*;~mEFMlrX-+pA%G^y>c6>)wqf+FmIO^dfI=sQ=fa85gP5qiPF?Wm3&SX}^)G zlSAwlY9@w2m2VZIWn^UqTH;2*~D&tgNIj&^p0|K zv1n$LhR#RKkGds9JG-Rafl7K4xw}j`@(O(OGxXmp&^JdxT@>e7x!oMMGmpxkb!Aa6 z6J9;27sxrkTz@F?aa=x?+h5?p#7sEb5sl~D6d1QR3bKZv-%QBI*SGfgv*roSsqvo|rc zuQX=ubo01t?=$GHk?#M^;i*(^&n)k`E4NVl57Wg*baAe`SjV-0c#|4>NE-7IF?58Z zc?ofXB0nSQSx5^?Lo)>4Me0tLe1(D=tF&{fye4TzM{Fv^i9|g`kxz%3!wN&Y1obS* zlhN>NX82Xn?goRUz~2Q{#Gb>h7lym7B6E^DpGxPo+_k@;YhR@69#{3JI8L|9mxv`o zJS=%-5qp|k(%C&)=_X0KS<1_k;RmGQ%jMylgKuV#h7VNfzI5r1qN$HkJXa}o62-3& z`4`iEYiFN)v7GnG0lOgm=F-$%8N6m<_tdqekulR3#;A*SWNg^#!G^~GPw)rv4kT*p9rmKVhy8}jMp`>6lg=EDI&&- z@*2c!g1>~dVx-nDHI55>p;VWpcwX1C2w5g8%W}@1hYWh8hk#mr}4v( zD<<7jVt6?-a-12=kPMD8gO!qY9#LN~{+-bZcKpHAi9!8RXk8IIi@4b65Yzj<(O$-X z09_)=D&W~oJ2r{U6P8I>K53q+=!l9I?8p}?gL^w-mx@-c)Isbr2L+xu-_qs+xgtwZhhr))qKtwPOd__li7MW^u!)5UKT+NvlQ6Zu$}N0qD&Tq^s|O3tEsvMcYp z^|=gu6m6^@ZF7mbSUqalSZyq?HYP{st5joKrH+<4BFs+Va$%597Ud*``l#JaMc1j( z+bW!`5*rg`X46~D#BpifO0%mOT#a&OiAPoPVKsS!nr?;Yb+?p;UzDPqnkakq=)Kt3 z^Os}?N!vp?((rOMtE8AoDlemQK5%79O9KC}y}i{fi{t9dvaD41L?gFie;V!`W9P5P z`d4>c?Jh4&*X2mwwBvAROo%M+Q(4XFA7p6Pt|?Ea$}>VMN?J-~&&KXV42K^Nvo({^}P<{vfiO8E;bvcX4rkUidhgpN2O`c|V zSJ~|kOuM;NZ#VfTT+efk{DvIa9lM2k5Ok-CZvN30N=^yKwn9@Pd)rF!c%(m53)iK4}7^v{5p z9dW!vOOEoOH6zNcB%K=KxS*U6u!zV9aK3A|AK}6FxO+#$Ay|u!Hc)+YeAI7_jygC~ zwa%=rj&)aGQJ0(1#TTl+0muASY-!~gif^VW+L@)YKX`^z`&+qQA@Q`-onQ6Mv#2{L zqPtM)UX5t~N_4kT1~WzE{wjWrQlC<(ub})B|7Q5NU@#K zPmH%l?b*`s&QkYJ(cFT^%#C}iJL`KkGdSZG*Rrf#KepPNAeVu>*w&-Y@_%%>9$owA zZ0o8X)c0t8w`%jSU2lebAM(edJ{IKmNQa}cA&RrZ+=BfNyL-jtjcJZfI3i)Tq`qde ztLdIIgAYKf1FMPNd4kPFT|FpEie^2b!$t4%z(0h1(R7!L($n%PQOAmQHE3^u?s&uI zf|VhTfw)NMJK$}NpMx?7_zvTJO!IQ0bpp0BItQ3j#B(CX3(Xhkt4N<1)L$rgmoDGP zCU1$3w;l04OGg_XCdv;5Gsv2#+FebTU#W}j)iEPo@247+DN1cY)-9>^17&jxwOoVs zs2nGbE+F0m@_-~?5c#ZV<_cKbbaNTb8O=85PA17ZI zc)m1`1bI-v(Sf%q_z}Safv*9kA9csa3`T!8btcH&jpv2t@=-Rq&##m{I(kcXG%Hkm zex)wl(Vp4TuHMr7PDhzq>8?$>7fjs}b0m)2oH0k3$HVcJ+)pSoJbuwm4 zyLW#mHV>B#?AQY5Ue3X0b~^*_PjC@SjDuAC%8XeomKnQoTeD{E-LDph5F}wRxkua!AzX zWp(}Us^bV{{ZPq0|1T~@=J^!+ zAw7t>xe^Onx`W_26~9fBKTs3@iKhE~X*jDX@pw^h_M*CAvCfX#d>oWxux3f}F)}|F z9D3#)RhiQ_Ocq+_h*!$+f&-EpX1r0A}XsB2NYywf+P;yB}9y0T7o`5>t& zQMHIFbEw8|6CIm{ozrnv(!4I`7m()=`R^$8MRn|qaAh|Bf39f$EXSI_ z21qNW>dcm=pg1#Wwn*hZsj^F=iD@R)$`%Q~u5e~5PfxeUItSZ3+uecJg!hB`H88Je zP6${j$VJ17T5K4^)~%DLz7tHm2mWA#II#*uiIw;;m5J zg!@+z)2y30?Q1LX(^9^}n*pQ=#%t$t#YU zHuwVRIm97BU5fB0jyT!T{|faNwwk9*tZ2m^NIN6OODqBtw;agqm6434;4X%{BBZ%R5BL@2s-qpdz68E88Owqk(=go=c z60x5ZHzoOa6C=N|+Ko-~uFMHRvqjJ@5Xzt9x;2jN?fzD{KbN!2U^h1rUMEUk5!AZ_ zJstSNP`+!`V@$UL^e%wreQ35c`I705!Fg$rX9oS*}8$HuIaA`hL#){oKDlzVp}l@0{y8*Y!Tvd7k^eU-#7^ zT@tXp12#N>;X=Fwl$n72K-dDp_93((QN|hS_X%ET(CY?$2*hJTy+ml;1XytcvEpZ< zbqdhByHL6ddKgGA3YaHgE5SMm;v% z=N$omCa&k&lg1^#

        7xLRe^ds^chWcqk^f2h3YV(L(6Tn^s))T6GglZkNJ-fe9o)cpC zHo{-JDB#lrY0rYjfi>*F8f9t?Evr!;X+ldg?4<&B4wPO%84bn$5qg{j-y>`bM!Fd) zQy{wou%khH4{jIG(*aC&D3W)iw~nTj22s6Zh3`7^#fI3M(p&&rDdJ>=-c-R~S@a4^ ze%?aYGJKq((MiZhMCccq`T>nK0nHNP5x_P9aCji@3FL`DbBqv23H2yNOFyV_qQome zZ3f^4Q9p|6|37BI)}TEm@Kn%xfiWE{Yr=3F-S&ptV@Tc^m2C^h5Lo;J#sLC*062uw zXawgA_6)(<0QUv>7NE^&WpzTYnBpG_E@QE)JT%LL_c`--M!as!s{lBRN=p#FHHuDE zUH+_^cc|%e(aQ6znL041H(1gtC^~`>M*=$5q?0XpofppZqSZWfu|qF7HPgVCX|@b* zec_V@snbUm`F^MZbmAO&NQX%!SN09mU=k*iCMGOI05rO-Gb21?VgCN;BKT5WARsO9t+z zrwL?BCs_N9W!0ntP7dPo0_#x3kshU&N*RLUvsrk%M;z->cK3n@40^)Ap^y!MFprAY zsdx_JNgz%XtF37*uMu1e;CO%?1NA?FyhT8}Qh8ko*9Y)cflbS*MwRgKCG7Mz8Li&B zV8w&c*66x`uwzMkgutJH*p$K&gI+VlD~Ws{MZD)|p64aML{$@L*bP>;kzw;7ehO3X zZ21ghYfnS@C8%%2@+KYI)3p!GMuFuJu=IuDZCbowEH4`U9=G=0&06}?{48_c%Y?~D zWt7~z%3Au!>`5}M2R7a?wwx&XP@?gx_`Bm|?cXb&PNZ6%MoK3s^7NwC`B45b!k!7Q zKO!5~61qC&RCP4+XMwkYybMe;#QHR2zSU3<2DOmnc{Cduv;#>y)_?~={z>HLVm=G3 z7t*S`NbN(`e+SAKNUuOK36ZZNbeP&S!|Mp1NHt$aw64oipJt_;;}M6OupxmbKzjtn z7iqRWB8Gsin-I8N@ErhKmCzPs96;6!ffc(2>UAyhYk}qqVsoij{-Ma*OZfnxIe=&m zG30@SP5`tnXsZEno{+~1aWG{QpsHuU)^XN*6gE#V+TVm~gu(WAOJiO3Ie~R3?I-0^ z752VVjgsss1-pWAiiJIIRvt3weiNttk6V6~#Frp{NvfurY*(p#AeBiF|7=lSW0YPN z(XGu8WyiCiJxlqCrSwza7M1cGqI@OsJq4FZ?1!R%ur#MJ=PAndSIqe_1jhjF2SAPW zf@KpScOmP3vbYguBg4vUGCf43of(=7mTQEV5>S^Ah6lJofPDn+A>arBTL9VvXbv;P zUx4ZzBJBs{i-G2v1}-(=a6|bNSn;*cd{rL2B0B!|h zY+FKsI}_<(gD!BCZ;0}EfFl81BGd;9D~1`C&k3~l0{(kKV8yCMD+UIZe$hJ3IAn;X*mf*)w`I|=JY*sFp+E>yP*aWPOH```QO94KoGJ}2P!6g0Li@aZ+I zXAOU~iR!c_>Ju{R?F;mZPDs zTAxgx8TpV@#yDF$P;n9z-7WHdmNnIjzvA#!jQJq5*o@%YkPb%ZMr3ZQ8tb6O6tto< zTBEnMatr3_ES9o?6juV(CjdH7v8jih?nRq>E+<;x3RijBp?i%wh~zZVE|%H1bpIBf zrpWmZBwt4JOG&&26 zi(Ib`=96gplS%(aJ4fVQ4D=PU#XQJV-XEq*kq<$XNA*G;OD&-=U^p+LAX<4s(#N!T)bm0R^4^r$e`2Z?iO6Xvq zd?08xh@k{dCpj5Nr=u+qvxn5^5>c+oY7U^HmjbJm@N-L~mr7LQa`9aX_)I}`2$VB{ zdY-ZMB`1f3s@a0N2xUDIyP5bWhqiWbQwJVPQLb|608{#e@NNXR5@UxT4lgWM8|psB z)^3IvRp_I`${uq43|D_Reg-)f`u4%y%P(~(lPF~jwO6&2|bYFZY4id zUTssDZYyZ_8PWccK+8Ksbuw5D1*;*l>TFZvd3sB4sG6%#zZ{JTIm#0VtQuJHp;-UP zs83V&mEI)P#gN|-OJ_kFI`J}~;|Y90;tf!p1PyJ=G3ytyoM!ZHAZEjwPsw-&ST+Xu zM=*|q;!ZKvgvvjm)=m+*m(*M=;$y%Mfy#ai9c;mYE?wX#?-^sVxrT}9B$%B5ayZ%C z1EuwGll~QKd^7M;zJ|=qm;nLby{AyP|Mn6x&^a?kJ^`mwdHy{fwgSfN0)E@lC+H0(QC(PlrWU zSUp|L*U7kq*wBDI4#YhGz9dQ)0JEraAYeU#>ItFR zn&8Gj?1Hwb>VBZ!j976~+qG;*E=nfF)md?-t7O2s8W?*Bi{eRf;rtjz(^NP;jbO zhH|hYc6DfLgKnk#Tm*+A$4r=ZkmYOS%`JrdCTL?xJJF~SB%U$aL8PXVoNCbB7U=Dv zPpx1VBX@W9T|E9u%E=VE`&az@;1?&PU!&vKM`>v5Chr_ zW*QE~b%M^6I1{j^1s)N?qEMM_;Hv?nBE5SEJBkJT7t006dWzsoe(D?@QBfR3DuKEt^wwwUF91phOuY^7A~=9 z+1zE1In>#}^(j6=VJRXuQQ;1#eH5B@8Jhf;HF1qKu_kMKAAvIg`$1?-7C4A1>$$9} zWgKZaKX1Vc4cL+7=>|xLb}zNE$B3fiQmv#3?|mBG@9N)P)VKuts^- z8W`X$=|r#6Tb}GycXV(2Nh>`N%_CLR8O5##%bs9-Pm8k|+Et2O3^75%Rso(A%3m4E zEdY0tV%H-4ld!Ky8!xwy1$!REm^PplK99h@QSecu{9CEL01-2W5># z_A8P7D3mmpN{5)rI0F|GXkhTh9TOcNoTFsQ#bf~-FHxhOL=sh7W2KkN4zH{IL zhaPg^eh)4(D_>AoD-!d+l9%(7$71(#kSD9n(wB4&pykudS|`x*)#iE-o^Phrn~?SK zwAO{hf2Nq0KVVuh-u2&ZuI6oqa;kZL-%>r>Qh7Cbv?Rwj$uYz&E_CJ_3~>nMPa|69 zD_XWzq)Q^WYcN(0;@hBKM5JjhztLr1x%eJsHyO}Eskez!89u|pVbUcA3?nq1$X{8M zQz-Od*exjhPT4+1wmGUXM>SqljS?F~`xY^KMq+DT{IxkVm#n>-?RlljQl?NcF1n)?>o+Xi(6S3>&| z_1!@ICXwGWgeq?7o^&@N`duU(bYpkPa*G zDBx}Z-X6eU!6yb9KL>vILqYqi3aXURfx4`}eSQiIQtDvl$ zD?Xm3alhrpBFohw%rs_oM8=iOI*ox#2yO`4Zz9f?#Q-r66v`?_(HYc#$2t!;7TU#Zx;KQaVEWb*HXF_#`j^>DzG#K#v5R^8U%6X_4z3RnZ z_QFA4aFk{4;@SS~*}k{17YVz}m`2ikGkVJmR_&f;vNKrmO{8=jQko$5Vd1_>82%ep zj+K=ISmD3cu%}W>`m4A2A5tUTni{^1S3Jd%mYefly1LQg=eErOXM=GdP%b3PNK)I< zN(ZB!HP{gb4L6m6RIG#0ek%DZl^7iIn+t4mfmRE{Tv4wCa7%!@hIn8J+*(SEELndq z*;-5H<|rHs*jr$A0GL(<;%uNSA_5fpIeBi9MwryqRZTIibcJE%(bUSf0xSQFXul_; zv5!UjpHgld?3rhH-MH85_8WTL{$?-jes#2*Zm>t&qQdDFps^g_Mo`=gsX_UMkdLIQ zi6kzjX;%<;0r^-#=S#6~QT$AY-lcatn{2KxV<(W`^6p9~!+yl^QMDuONzo!GOy-ls#5cTnp<|{ZTGH#5_ z+mNvtvvszN)vVSSvJ8}B&j?*Y`ganKpzJsV9s+O&kX{0+izzMxZ8lX_rdrQHXltt4 zl3{mII1_zAl(hcLy9sGnJ=mK=T&1IvVKsuzoXdM$lMl1 zyRya~QEM3LaxHT6eHAW5sb(Vl4hYkrSOqGhsWg~EA4*dcWh0idzD3^HRC*Ax0Kz~4 z2a3(DWO;r#M#*ERVtI2=T>}_S#W4tVf$}K~+m+$FQ|WYw?-0EFe;NFn2yA33_Ylob z39JdktpYCww40EI0;LCl+XC2;zWr zT8FTS0AC=m7144C!2^i06`*$jy8}q?3F$~7HWA971LzvyNr3%JsLmpMZNfVO{wpJW z$-1!=CG}&rHE7nIeY1Ofq zo+_|U3B5p+4Gd*hLeB#JlVBGDHjKdEiPV$8&VUUPyjOv*Q^2DN;!gpd9^mBxbQN?g zVZR!x?JKBvg?PGx-bvu@4)$#`+v-IXUQn{1os*wjtLj+54TbU!&}k?&(k^P`odh(V2YrxW2ZAY}WN96`PlZ<<;nnpZz5wmdqW1*-RnaB|@v>mU zV17OwLzwsilZ~*1gPG6?&H-@tg5x(*??Gj}$P)rFgDC4#aX(d`M8-K34mHKMjJTPh zekgHlD34;~6QOcis9si(H%M&k=WV9u;Rstfz}rHlQ-qxp?$^n6gUlAm(imCHlBrXW z-wXa%!KX?5t4TY1#9}}nlK6pH13=6m8}}3KzM!h(sdNgW8m!V7CTo9m&^r{Q5fMH- zq8b{x<@Tt5_haOh#zs_|27Q3&6NP$@wqcY#h4dG|zhuNRg>4I9F~D^}yam~b04pI* z7fSy?87Jju5&1Xf<~7VKW>~3*SjiKq`gWpuy&(?(gaH68001BWNklrCk|^Xe#1D{Y%B4^39)n_3QGG|xh5 z?xn2TO5Ip5a+wf;>k#EzXvL~h>;6!4JE(a%WBCw^)*}q9ovFMVW$P+zOccBrwJ%o9 zJDGH=I}assD&@Z^cm++H$uz(fj}*n06#9btNW$e3JHY%@P#*(vAELa2h_?|j7t#g{ zoy^cqC}nq)G(jrM1V2{L#vu*@Y(I(rL_vRKuA%JrEAsuSh$u2`6!@ejJT1)AfP;MicL)zV!($6JKT`E5j@*qV@&F1h&e==VZd_$HWA96 z07eK{Nw7@-+lcVX1inf5{cKBooY7`{04!2g?N;nQaur-a`3{5ZeMgg7CRS`Vc5<3)L1v+$p4w13nqR9{@d0 za2p^F0b)2%Uj)Q>g5wAcCaS)KKLF@SpdKt}`!+U(t^hQYD1!{?3n85fq&E|6a)oqo z0~%gI+a&Nyhwp9he?uG*k%p8~^|g|=WB6}%;P?of!iesSycl8A8GIdxabz3`<*6uT z9~E7KVoO!Dh^3qWHJ2i|nS!UQ__m6egwS_D>JRGF5Ox%*nE|{UQiljk5^+4C%M{uZ z1s^i|2-N8)W?ZSFUs#%dKq-$B)hRIUE2IbRGcypM4 z592N*z6bGl61UM}ZJI428tX{51%Tm#JsC)AQGRa;eNOocu$W55AHX=*iN_tbz7cbb zv52%2MLZ+vSBmq^>}o63u?CxBp~Db-1;wsnDPJ+`E9TtQa@=CU=@d6o=p!l4h=}1r5?x=);O!1oBoQLeCwI(Z!(EsQj2k8OOq|B7PwA z9Z>y>B43?K*(4KljP=20vAwl9=(iI1oW$$pIs_IQz_bBO57PJ~O}oO>FWkRINgoI7 z4Tt7JT+5^(P<85-sbO+<2$t zcBhuo?wCUV#f|$F+R=dBNN5@0LlG?}AnZd#xsy@ehHwRGj~cWOh#kbZED#-~yi`&5 zLA3Tn{AU*8Kl`Gr_=#o3MW*I-Lvx;?xn~=;JElThU5E+B@}R4HEky6O_@8|N_>)1r zA=p%)aX+b9G@QXyEwGfHOBHWRRehHyt!0jpG`#}GtY8@%z&06ip|h-?t(;NZ_7B&t zVOlC;35*+>@pyMT&t2cT#oyfXYo40#r({DdrSFh%4ia|?YxID%e^_jPo=}}D_-;Yo zEaD$x>IQ#jA$mC;8XmQZ^}T7>XBRjgN(#wt;# zNu^->B6bbovJjqD=mkc3pMeKisvE5MNS2swrF6B>o-8_?1&3R(g|cx3&jz>&V11xy zhrqcijjK>v)>p2+Q1(5L8zT|z)?{h-21_;8N}A=_AGVw>Po?_3m39+dRbN9T(gzuI zr3vS`FxJCP@uJ#FeU#-De`IMsP2~v`?=yHi!uo-Jsc7xxI3`>Sk8_IQ_QLeA$cbXP z8c-&5mPvD59PPqZE<4vy4K&y_22M8MH-oAKTxhUG4jo`9*ATeFz=H{_XW*GY+K})w z49N}le+HaMU?l=K2)swYUPAg+XgNl09)kevDZsk})(Y6|f*%i{7oa{4?C-!N2m3j= z&|!xg(B8mv2+Rkt8IZ04s%ZdM7OW#-LxI$TNKX^^z<~QqX;qW;HR)Sdb*RgBaO6RT z@_?gUkWdCV@;``tp+N)N{0-~}_;o;|y&;{}c3=A)pz8_!3g8k#KN9K=s2h=w2b!+} z(M8C63C+=g{EbjP5#l!itpctBYzM*b6dD7C_D=|DxL_*@Hc7Az1)Lg)+uBOAnhyi< zmw-@I;n3wl_HO8`9$#797VqEIhaTiMKA33g!xJGue8sDhneLBCdrXWG{PSnQ~8 zFqGw_{zcD$g!%C5MY?yT>n1b%g-myWwjJP)BD4`BrdV($3wj~*2xjzFQ9l&+M%aNW z{<^}pmvF6QM*+UOf;ULkPx2!L`#Qt{3S5V<8(8=sW}Jy^Q&g8GvQ|OO(^;^K3F)5kD>LB>zu@ibF;oC)Kt;&I^`6hB}!o3&WuBY)dvRYwi znL)HTRgGdaIxrf4L-DInY<)%=!|;Dw;6jfwBn5s=utOYZ@6;*|zt3o^8SGt$-)hk~ zAVuT9Ui=p?*6>`N=5<=snje^s>{ht%>AyqYRc(_z&;GQUFPiK72EnC=O$o<;JD+3=0LYD~7uW>|%@ zETvKA)tNNC0IT-`%aH&-27D&vf1^qtQ@$ffcbV~gvsl$xR+z=BWI3CRgFt-M_H&w- zlu(MW!wa-&VH^>V7c|F*^2QK1MQ||!yC~~+m3)zM*)pP>FU7DBE>U=2Kof}a8BPBt z>&wX%^9^~1o31lz5DmwYekoWz3RFKr=@Ld`bt^4@^4zkK*H&4srg^j7EtXquwA}a` zqopI&7(rDvkUoRbM8QWW{MAr;G=i%}*nAZqq2ePUn<>~-Deef>XGmqHBHy4=4~(*W zaFqW%76$Yfr9%xj4exr(iHBy<^s5Gof(Wi3Vp1cfj(?RAo*(@zItL`y#cjrlF z)!}abxto@_;VMhElUF|4ll_<~KPgq|fmHcitI{-2)l{aI#MFKs(n^OYwQrIC?oy@p z_sbj8m8$npHC~ms92VB{d9n0kFr8kIa#l5_DE&TE-2t_mMWmUGc$dM!DXIOBq1+{y zP8MtdAIYX0wyk3tZ(UhR#+_S6Cgr!t|Qe=~YGg zIHGlal=4Yrj4g%pqu?U~^GqB=^HD~d0Mj4=Jt1C;D1B7Nm!#c7X#kYBL%{(^*c;wZB7*c;jEFhu}ppO8(6F?7Z)35ghuquG( z4Vvb#E=1K6(7ghd0(ObO^@O}_Kz|nSfZ&}4e@4i&g!E61?)|f!G_dXhzZtaO#F*r;|&@HX zC`%1G+2F4`I90%of*&AYKY-r>WfY)}fFA`^%L3dRs22$34xv6;D7yjW9s*y2{2<`B zgZ2%9(WiFnR{uYmG^!(MFj9yA|v#EBIe+f+z1D&Wxy+&m$z<-lm7ISf!2 z!FDmVoW+vwWcF{7F_O9Nt{M-*@`gY>FXctBa)V&oNNH?Dxtpc#j9hP}g7q0`Fr>?% zG8$^_tcc&BbOd0#0$P>Q4iKKB;w1~bYUUGU?f)R=w}5;;BCn39PqMJjk^N+dUjkf4 z=nxaHpwK|X?1+3c!=Gc6cNltv;tYZJfaP_PGmJh3NK*h_V&KsxTg}9MA^Xw-0}0!h zY|LdeHbnS0Qo1<8dop4zk8+1XR|2^sP);T7T_>(}Lq~J%Lf|K|yf4~&PaEBFG?KA~}eQaKK(%z|S-dJH1D3ds{dek0gl zq%^EeqQU`G^re~?6Z+ItW*WJJ(gYBQmW?9Iqp-3*J&sqxt%}AQ65m0=20%HCz@34-0TpkA%H#-5 ziQq#Fo&d%zhWceP|I-v#Qd&I)JEX8zEYcxRTD=5k<>0XLM}1p zzY%eP#IF(D4aKfvPW>so?Z{_a=Q=06OOfD)esT8!*rw~Z>Q3{DoWbCu(}~rOAFFFLY~CXYh;=M>PA>x z4A?pp?x$irGWrsFAIh5`>J3rrIHc$!Z)_&&8bJq(jV18vEOYDN?th2-_q1|hu)YD% zY)ZozF#w^nAb$k%b0NPTOc%rK91>f!9VWeP!9Osn^Q82eO5+0LMmuF6h-`>?=LVB>Iic#(Jh|bpx+*aHu1`bi|FWc!MAL2 z14>V*dRMgFCGP~K+aZpD$}B(wMeRlEAftA4#!^Sz=88LAeul~CTk-EeyBFX)3{4^J zL=zSpbh-gg8u$gl4FO#d;5q@@m$2>uTLf^tA^uMAaKbtR{3BrB3Vs?;y(ws{5IYF` zlVF1deJzwRLi`|<1^=6{ClfxEu&oVtGJ*9C7-UcfLi7FyBf7awir_;6)@XA8`}V8+0S#6N&r+k)H(exj@)na8-xK2-uX+UPN34=x0EE1Y9K8iw50l(6up8Q>5gri0*M#jI z@Ua1OYcu$1VSp0>T?ybz5_^#L3CvCgwGhINP+ZBt^(G7g_!EH7{-34u{`-48-~Vx( z=k4zpVvod(y<(&U4PsUrl-gVEtq7&|E^U+he!s8t zJib5NpC7J2;Tn(YJdWp+;1+;g3SeGCTrxoNK1+i`cHgoXjgs%cL`v_cy z>J4T1Ca7gq^MWgn`n z#Av@zG#4QJc4Quwil?c15fL9#zCF>dX6S9|ULP>zYn1kbaRbm+f|~V_?H-KgatoW^ zf~Q;cWmtIxtAE9w9fe-ri0U)YO`{cDs*?3x|>OS%vtx6dZP*LT)=e;`DjBd)lj1v_LeE^ zPIjw%lX)PFyQVdd8#=2H?M0+78CG{sud9Z~)M{8Itz4PLsq$u}EahJ;{uv6#srV)+ z?Xzmyui?$P@MdxI_6d3U1qz42b(vgWCb>_VKP~ttfNv|sh6+BP700I8njjw~%1wrH z2!!bwxWkCG0gmzchKyd8+5b4zn*)sHU>XX?>h$cwV`G@+gXJC|9sAVEr&I&{kk;x zRcU%xxQEPb4l^9-%$uATS)jhcdbcy?G^@`U>(++)A)!r~+!Lw!k+C&1Zer$*P^?2> zx`3YxI1Wlec`McZ9N9e-Q8&)O_X=E?Ri{SHsS&(PX;(m8nQ8xF*hxtHGeYNE)uUE% zoAr2&)$)+l=2(j|j%qdpn_0B-bF%XQQKnM(Go>Fr{5`Lo1H5+jvO4%>?+yCQYiE?# zL6=)}KJn<>>e>F=vrIAh3niOw$ugH`bCzebpvzu#VJ?^cThb5p^zk0}tw#=H_QKSA zn#L=|W-8bW2Yo%!w;I63+Ma3UCz-7ihWFFB7)-x2%Rz3sx*(2n=rotz?P~9}Y=1?x zKR5VqF@WAZ(d7#o_(uar7jQmDUS-HF4K|aou>%@fKLaS66Fig9`vgWAv@B6?1>#yD zUl8I=0s9JeOrqIGurq}GL8zw)bt<4^{tt%>1N#m9lwdJ5mlEYZ!Ve~z{ek8gpo{}J z1K`zy|4}F=__6@+AGpMM0g;zGxU|FHE@;niG*=mnj@-|n-HDiw$O{Ntn($?ba-h)s zTCjZuTNm)70lx@n{z5dX5%`IS7Y6E#^*kb91vm^)zmOXW^#Y*|1L7AzUQg5+LOn;o z?gZB-Y+s}AOZufozr|2~G;k`Rl?ZhJnZPedJCIiXM7K-nwieBgAiWZN#GrEx{KNnd z+=}2wfSmy37lwGPKurUl*g#h`$YBMzq(IL*u%p9vH`w9^?N9daP4?eG(|533!Pu<^ zy=TbPk$D=D4qUVOV*;0p@63pC_8DiES40@ZegF)Ls=AVkbJdEeF z*yk*M4vKGpVvED`Bw3Dv`3gk2gYezRa-y+4-qe0>Y93+whm2+s#-O37ofA?0YJ~lb zX~$BmCi~Ihqdcwg#5=B7-GuuMHk#Rf#O$oj?A*c_bT*?o&?g5^7pyX~x3+O&CYZ zw1-Sbh&EnqM}nPCWX-{HUl+yBL1X7yV+(k(i>%;MbEcW58*^O}s{lM4$_JQO(=sPn z^k(zuf7w;HHE<3G(io$l`X_z}<3%L^%S3t1<5l;iS8nkZ- zU%}9BZt9%YWczv(gRg30@CK#&@)oikf^1AGzg0FXD#|!T^FfOHWZJqB z%}Wu@HWBSFBHDvfWg!hzn5Pq(3B|g~*h`@^Gjj9n#W7KHkEp%vm9wrDW>Vj`f6vu_wV{76Lw7$zZw*6z-H?BC+UJdzAKJpB+9EZj zj%%#{gW~;{6!va+vzN^}Uz@d`!O9%4_ISDn7IRsPSJ-e_l;%>FK~J%Cu3#xo zvniKaQ~v2q=Q3{x-{?)dvp4O}yp-uyn)$6Mzhu)Ki%xkQt*@%qW@dv=RCs+BJeDPo z36HhHvMc_juzS>g1-i7xFW`@_P<*I4Mpe(kV^x84A`s;c3lzYrfEuAUI5RjbZ%?KZ}no|xp99pyh+pN@ZJk7n9Uj+ zWli2skH=_v6j^U0>VuZLwPYOQtecwRZmPZu_I8oQ-WhgFqAXBVzF=ZCnmwimH^S{)IllhgcFnLPy0r>x*9gb%0NJ#ar- zW^WSB6F}XH8CO{HRm#pa*nBjfj?&&k)9#kM0cair?Fy+bfyCm>=2%9%F?xemQmrgPHVzJRU&~cW;l@ZiZPOgztQwhnC%Ldn;h4t|udmkpt6F<)0>=sY9mGo%<#nWAMcHSdO(b-fNsCgsfKiXoxVy}k1G%PX zXA-s{6dPH__XzEb)D{4~5pzLUcPmMM_%d6IT6&$1JjY0Mws%VZ-=4&ZmTc#7_dL?PM$m}$k?=LG$%9`y#pHt)! zN!!?%7XthT>0?0O8!YSmA1-@aG1nvY5{b*e*b=Z?0ev~}L)5#UnY$bF8qyB4wRt)b|L~T~n$%h2qDm`gx%49maWO&3&LPMcQi)U0o8l zEBWh8e+A7l-OG6{R-%QL-g)8;CY9AGQcQl zzD;z#4RmiZ*usDfH^l*lzQ2OAju!gAMAkc{SP1IgCF)Uf(C5)nKdtyga~tB0HCTE_p!9w~+a2XivqKhN)6J$i%UuaO$Hmd9 zc*inES;aEu{*s(KnDMP7UH~vdz{dzYhb}fMX;=s<953Q&5l_MJFLP~RC7&vV_mbAD_-a|R0z zN3myE__=$WN$-1@7OMjBg`vLXsnbj3G9~j-^WJzy+y%$Mf}Rg>_f+RhW?R1?DROT}V+8vWY`zt9VlvN2)`!#bH5H%6!XqtXO%$IG zIp{S+d!o!%A@C^`Yg+aXwa~66eooVGS;`||^P^ckjl^_P-$?vMXwOF41ZMLTqg@`g z`8RsyJ9W#Js?Ar5b|li*lK3%Hu0)n)nVioue_>f?xb&5!-|ZP2GjlzrK4Iz~Oe_d+ zDvHeomJfmUMWFXMgr}AIg(5G=(CG?ImGq2Ezm(gKazB#94o>Y+5WjNyTCTE;%l0w& z3WhSwP(C5b&Q!S=YE}bmyoo;xM1Vsvuz6+xd!Q%l;BAQhJJ_58~2wDh;r-a-M zh|>f;E7(xNeggOh0*_)~jRY{2;EM#WGH^Qr%K`Bi(EmQbZ2+AKXiq?^0GOQMBSblY z;5vX0N%(PspCa&GAlC(QcL8f)0DrtJkk10W8-Umiz@h;DV$d@NOb56+V9x=5voPp2 zXS0OBaipFJYCpnP4EEMHa<2qFHrWD!G7ZW_2Szo1Su(x_V+t+Kg6T*gj|2DuXbS`7 zRX|q}xiAn90(pQzUlUjX(BuLhSHMXQJKIra7|O+l-V%nm*wFtT(6=7Zw=~e(vp{Q6 z`qUNgO7)10-s_1RX6aj!o%u;$rJ`<_bV|K$t{)fn36X}Y8fV0O6VS?&Q99rnf|J!J)Gf}q+zE77KLmilgpsm zACR^t(*Fe5WJ1qVyo&ODEn~E08BWD08TNp+>wwM1pbv*^RmlH=us6~3``EJwtk=2C zYG+&4W@Xg!P*y&t?B1!2)l+3zMcExuMl0fIv0j{JGi3NeR+dWRd1*OH)OMiOB6%5U z6OFO5k&n`vk7>>O^yYn;PD!gbrTKbf`6Fn5B(Ncon*nj$08}a8rusIpj5mz=o&l#& zJeJDCh~90oz6X@`amk)f^}d7rMyh_M>>nBGewh&~W_CA8b>9o*(n7fzCmHaMb^HY2j(!#KMqCCd}_>S~r$<9GUyE9=UfxJ|}3JGkdswt>^5n(@=%3h)J zmZvR=()>Vczb2Zk44soa%PN+9#gaEz#PdvyLB{?7P7`d&puYh4hav9m;93P-!@%Dg zd4L(WqVsYy&INLMz}5%KUsITFu$v8f80!5+*}EvSyQQ*!zEoXLutNZwPWT}Pf5Xu} zC}@#Hyky{lhL{G#b3`3$=$}UP-$(SnC-g>2^$IXJ z*)}(8pE1LRX1OmtuV&G+X!C4qdpBp>za)!aKrdGsJ6F5(X)69{(!rj#O?d2WhG}W` z1c|=^^+;KMH+lPCmiCoW${vk#Tye~7+#f66p4&9dl+x(*rq#bn<7bq@Uz%sf ztUJsYi#Nor1-PzBZq}sDSyCH%)}9B9(nmzx#;gw@^I1gfgsA^v?T%rsZ=v>9VC_yu z2=joxwJcF#fota3*SoXoU-3QHQX6Fml@ z>Aw!8uB=AStK=D3VuGyBn-;4HF-Ov#NVBuD@k_JGS#X_Xj-MLx=mz|<06!G*O_vwX zvZ2dPE-J%a?G6QHZC6>xWD^aX*AU+q)C3D^hd{f6i*GB75<1qS}ZfD-{62%w)Z0_AI<*6y0egT1Da#t0m0t@FhU0r_PxQcFlg6-1HyN4_;5$gXUNM4eot@{KsNySgpltG zzM0_L5AgQ~Js=EPS!l)sr2@QIuu(!eU$6xM+giX_ASVdAIbqWUe+%#h2|MxsLW*Mn zyGCpd72ApQvN{a+(|9+$oC>$)>2@UDkE4}qVS_G#b+#fqr-1F@ux1ZhS&L?mk-UrG z6@U$gY(=UJHsK;lBMGhn@UH}ZaA?;8O=@7bHt?q!_{|0WKmq@sBPJMne>QagNc2Ai z^tL1FM__%)P1l*nYt9~xy2#KxOAX!&+4&w}-=X4Xs&Nu}aX));yw$p#M?Ky$Huub} zOnTfUu3T&kC zZG;sxFLvWpH?3OeUaWb>-9}qs&m2qB^Cvid4KE+ln+}~*=v>cCv%BS{ z&ia%i{^Q88uKdP;-y761bPMf&e!$iH7kVoQ`QL%jU2Y8U41kLXnL_`Z!pwJs|NIE_ooeVCMEq|(L*K(h|C&H|XHxAz z<>#z+O2w|thPTOiwG8Wu zoKMi(0w;y+noKT}>F+7ZP72JP757BtDp9j$e|)ZPyi*eGvvT{hghi6=0*PE&!u3r1 z%*+l##;0PrTEJpb-%3#3mx^74cudIQBL4s@TbXyRq__8)`^DzANwM-(VRKC(FDY#9 za?fMwdWhclzC8a7HsgRnA3OSwHep9ky=ED6Tj*U2-^IfBW5yClU6L8kBJ20c-UrJ1 z>k_#flQSuMlxZtj`eaZ3B~!bm;@_G1Kt!Gsq1&=@d4!#y#D)|l4&$Y@)tQf}7xs2|A81WI(z9#Y| z5KqgsluC|=$L+8@MAZ61o&v=ejNF2~*aGnNVRo|p@<~7s5xPsLw+K2$&|!f7MC1}g9zy6dg8wASt^ltS_&QK03VKuERKRZnn$HFQ zmB8D9cplK)KyFRM76j)a@CU-51T>bwMu1Nu@?H+G1&$`{RRX&K{!hRc6L5Y48x!#& zP+t(VxPUVWz65Ylz;_hdS1`Z=m;_*|U=IN~ZGbtzGX`{^cyR!Bf@g>_#-L$Dv!tP1 zME0);)@PHptt^MadmF)UJ52M6_BiNg3h^8nn+bLR(oaX0Pmtv(Wj+bTD+z83X?c)a z3*|8&*8wmA@au)ka{qq&*^a7q*fV&HFMu9#xLyN)qk_VzMmf2ecO9H$rwg(hfs5e?aD; z5J!v6n^bcj%oid29SbgIp)FXs4tm-Jo(sd8FNx+VroT?(y`U{5<_C$ml*V&Gy-bz| z06zx8Sj)VInTr|xd_sRD^DF~~y6iS8S7X}4jCKZPCqcXm^yLNLR`kyRznyCSAJuGc zDx)di3Gkgj?m}`MQ9FS7tW>`nm^JgK44bAbcMHvmVoXfOuykFjf{8Mm0ctprUzs$I zDKB&JT!&rfwA0M|TbiB*W2v-Un#Suvd;--EB>RNoB+I%vvp$H7UC7*m)MS#Ik~Yo| zH_&>U)4H#Lu??X4rMx1kA5rzZqJF{bdrh@(W=35rGuBDPWhvYt`QI4jGlY+{Y?ns1 z2f8}%CHyiY&T_`}#{4e;aX^m0Y5UR2?WSDch$BQ>)QJhfoSRn9fbn)3UZL?48jmK+ zFu|@<)@_ybGzDIT#bUC!U*zMU9U$_B0fQ%(m#{WulOSE6*}Ffpx2n{fDcC&&oB-Sm z@K})RllX^;Lm(VX;O_=ZH)1s^X8}1z(qk!It*obJ_B{ageFF7;4)k9I#ALwcCpb>1 z7XiHyM0`y2A4GHybkvhEpsqg)=zRjzlR@i7?3!Feq#mxuR;z-=PkHip?Rq5KW9 zbGE|fl;a$wZI9%oru>4)f79*Ha$PEqe?-v;Iu?=hg0${8POL&=3g|bW_}*;dYk96M zuls>oFX3;Jnn>8`g!T|(%S7y#$Tg(=RI2+xbrdtFGk7DaZHem7qx!k%`i1D`|J08u zn#Juji_7OMJ`uBQw7ShhKF5$_zZ0w%L`}oGqJ0DNFGW9HC~GJEVZm2QmG6YMPx7OH zd{)#)avrAA4nx!V*qhFwrL<3$(!Aez6Ro$?TPt@r?n4{5-AZA9@jSx4j&QRr%sM9< z>_r1EDDtaI@`952aEX}DYCXVeY{r^*F`^*5XCnH3q1tb#^*5;KW8e)&y~(rxq>{Z; zJ-VlQ)|EXhEVUn__gmI{ot2BT@?ch+pV!_N7QGWau(5?!HRZtso`GQmn>YYX zIE&6^(SOk7XqMcRUJsyUL)O0l{SOFuRp@*!E1RqE?&BQ!e$ozsQEYYWYO zf>sxL#|ZH{5px;p2qG6Y;7SAkpFvj;{E}!V5Wa+g2RJy^f#n^V;)s)oGJ?QAfNm#| zQw9DI@NW|3Z;A3lqWNv2Juorov_x}Ag1=7KMFRpNwgT@Ia#}*;6MRPCNq{dv*q?}U zsId&8``K{pf?@}#`2HxER|Wg2!Om!S7z*~M=V&^RtS7kX9ui{=XdYGUn2|?H`Fmv=l5ZiK38?K< z)Uq>bSxVLRL)sHivmDiVpJ;z=EHm7iYF75KQhsUX)6Ck*#?Cv2&N+^9nWryp!v0L& z32`Kd&F4pckf+orTdNftR3O~+rZ*JVWxJn_18M&sRy9w2Ij;Xf}vbU0= z|NV@eHfV2ovuYYn ztMp9+<$J05PSKf=wR2tc%AVQ9PtlKF?X&lz-(QPazE;j`4vkrDjhQy4&cur`6BDC9 z7V_B_J?_bneVni<$>ticnOEl9ie*k&vsQv*le}1H&k;KPfXy$)Vltkb-V)v!>ZKh~ z8b7EhwtZ9Vtj6t|*8PRX^<-oGte6iku5H{k$Q&^9+l+0W(e@_F;trfr6w7(`z3$na zY*CM6t%ovtn;_~H$oh(+`x&Ahi_9aLImxm&-7)Kyg1#S%V)mjsq-5UdiH$w90aH&} z*ryEp(t=+x@dpMDp|BZH4ilO`By6J8{6XscOd7N*a_}f-`#jUWr#Ovi%Ujwamd%`& z&B=!5CBkke+AXQhNtVq}W^*;8*^_n9itNpHBYK^mv)e9c-8QV->}5UPU_Jebm7iJo zGYsF1p~9MBHRmYNKfg!!NSAG3Xnsqh!Sx1;zD85`XVX2~n%-Adw2gc0W8PcQthb3V z_9S}?5?ukf0xB1X{yVu&LFsL39)pYJ$YOlI&_)z$6K8DWR@ZTI3r9P?u(`|WXBzB$ z13#y7c`8mZ#To|v&L9}-mIRI#G*i%g3HvlrPDzwDq0<4)P2g8V4l(GD1IhV(lwk9J zf}I5j9!A)z1};nF;Y4rU0cL>xAe1?T=IBK0LODF4*%C2X$k_?W5U(5R*M|6+A*K*| zaR4RkKLU0)AOKj;!T&m}&w#@Xe1O1@fHneRLISTRnui0WKj9Aq{11tCkkBlaXs%D# zq6zCJ?CyjON^q}4ZW&Ntg4+#L0r?!klZ~9)jC-(@GufaYt{vK^C zkEYJUQs-sK_vqTmh-J)hIcb{_z86uhAb2sE_n6^OINyfZ#xNTXVv?vY3H?Oaxdu#k z_4F zc2P#VR#tAIiV0b*KS+kB=`JGvN zo|R6&mG-aZ%}Dq5B)4X!vpnwbpP6hn6W65h0mLJb+#10y!%twfJFKTAy_dUqtsi>e zI8VE_WGq@TpYh}<3!KQz(G(AY{2HkIMQU!6%5y@q0noXD?Cfc1|48@|gwGANGm!0B z%5sk?rbop&S=DCEzU<`=s-iM~g6YsKdAwT9oegeP$1s0mc|*=C@Qo6>FM&pxk3{y4iOd%xxMGB+MCwFEvmWZ8-y;UyuN-u%vYe7~ zOO>rc%^Nk#3z0gdMt9Z7{>7wvjb!&_`b#N36N%qM=68E^Eb$j-dLpi=?7k-~>5zagZNnR+F`2Zi#QV2c1a2;c?= zKgVH97jkze4s~L&0d7eDG*jQNnRNuRe-p*bDT-O+GwU6pI68e2^jB|njx{A&YylKbl_Ow2Jk9PGc?!%&(90O}!RxXN zK91H|2i8eh=g~xaL&Dw>+x^mJzb|bN1Em|VMN@W*vYedJE*{n9if*1C{keDT*MYSk zpVdAe9)12|^tD<0Y;5%DnCRDI(Vy=|FD8_z<x`Qexs~c$m$`mx*rfLOR>5#p9VM_^chC&MvoVW`l>M=CHOpK z7fGFQDcl?AeO8r+xynyHYu0eX{o%SMq%W#sG?AYG<>vw)mzpJ^LGwg(4um?pAlgr8 zWmA|IlW`T0OG-Re@Pol-2Z+l7gEyD-7Bc>(&@QCi0+b<8`zfNli?AQiv;EjDmspoe zv&*$n^)4zFlK3d0l_~vT$m0iyd~vfO*QMz^I(C9_dr*Is*JtT<3G?nI?saW59OsNT ziQef_Z;04kI??@>nZprv4|(5{DQ%nXQ($>D4dcl %Xwxw4s#^wgS`JdVVU#(cv} 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 P00000NkvXXu0mjfdVlSA literal 0 HcmV?d00001 diff --git a/shaders/world1/texture/noises.png.mcmeta b/shaders/world1/texture/noises.png.mcmeta new file mode 100644 index 0000000..33f3199 --- /dev/null +++ b/shaders/world1/texture/noises.png.mcmeta @@ -0,0 +1,7 @@ +{ + "texture": + { + "blur": true, + "clamp": false + } +} \ No newline at end of file