diff --git a/ForDevelopers.EN.md b/ForDevelopers.EN.md index afe395e5..a0a24d3a 100644 --- a/ForDevelopers.EN.md +++ b/ForDevelopers.EN.md @@ -62,10 +62,10 @@ Buffers are used and assigned in the following way: - noisetex: Stores the water normals in two channels, with the third component being calculated at runtime. (RG8) - colortex0: Bluenoise (not loaded). (R8) - colortex1: Main buffer. When DOF is active, it is four channels, with the fourth channel storing the scene depth for antialiasing and to avoid sudden focus changes due to camera shake. (Without DOF: R11F_G11F_B10F, with DOF: RGBA16) - - colortex2: Stores the "blocky" cloud map. (R8) + - colortex2: Unused. (R8) - colortex3: Stores the history used for temporal sampling. When DOF is active, it is four channels, with the fourth channel storing the scene depth for antialiasing and to avoid sudden focus changes due to camera shake. (Without DOF: R11F_G11F_B10F, with DOF: RGBA16) - gaux1: Stores a version of the scene that will be used for screen-space reflections and refractions. After it is used for that, it is used as an auxiliary to store the scene's bloom. (R11F_G11F_B10F) - - gaux2: Stores the cloud map in "natural" format. (R8) + - gaux2: Stores the cloud map. (R8) - gaux3: Stores the historical value of the scene's auto-exposure. The auto-exposure value is obtained by doing a weighted average with the value of this channel and the calculated one in the current scene to create a gradual transition of auto-exposure over time. Yes, it is excessive to use an entire buffer to store a single floating-point value, but it is what it is. It is only used if the default auto-exposure method is used. (R16F) - gaux4: Stores the color of the sky (without clouds or other objects) to give the color that should be used in the fog (yes, the fog is always the color of the "sky"). This way, objects are blurred and blended with the sky in the distance. diff --git a/ParaDesarrolladores.ES.md b/ParaDesarrolladores.ES.md index 7776f45b..9320da43 100644 --- a/ParaDesarrolladores.ES.md +++ b/ParaDesarrolladores.ES.md @@ -63,10 +63,10 @@ Los buffers son utilizados y asignados de la siguiente manera: - noisetex: Almacena las normales del agua en dos canales, el tercer componente es calculado al momento. (RG8) - colortex0: Ruido azul (no cargado). (R8) - colortex1: Buffer principal. Cuando está actvo el DOF, es de cuatro canales, donde el cuarto canal almacena la profundidad de la escena para ser también suavizada por el antialias, y así evitar problemas en cambios de enfoque súbitos por la sacudida de la cámara. (Sin DOF: R11F_G11F_B10F, con DOF: RGBA16) -- colortex2: Almacena el mapa para las nubes en formato "blocky". (R8) +- colortex2: Sin usar. (R8) - colortex3: Aquí se almacena el historial empleado por el muestreo temporal. Cuando está actvo el DOF, es de cuatro canales, donde el cuarto canal almacena la profundidad de la escena para ser también suavizada por el antialias, y así evitar problemas en cambios de enfoque súbitos por la sacudida de la cámara. (Sin DOF: R11F_G11F_B10F, con DOF: RGBA16) - gaux1: Aquí se almacena una versión de la escena que será empleada en los reflejos y refracciones de espacio de pantalla. Después de ser empleado para ello, se utiliza como auxiliar para almacenar el bloom de la escena. (R11F_G11F_B10F) -- gaux2: Almacena el mapa para las nubes en formato "natural". (R8) +- gaux2: Almacena el mapa para las nubes. (R8) - gaux3: Almacena el valor histórico de autoexposición de la escena. El valor de autoexposición se obtiene haciendo un promedio ponderado con el valor de este canal y el calculado en la escena actual, a fin de hacer una transición de autoexposición gradual en el tiempo. Sí, es un exceso usar un buffer entero para guardar un único valor flotante, pero es lo que hay. Sólo es usado si se usa el método de autoexposición predeterminado. (R16F) - gaux4: Almacena el color del cielo (sin nubes ni otros objetos), para otorgar el color que deberá emplearse en la niebla (sí, la niebla siempre es del color del "cielo"). De esta forma, los objetos se difuminan y confunden con el cielo a la distancia. diff --git a/README.md b/README.md index 70b12e42..681d5698 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # MakeUp - Code High performance Minecraft shader (Java). -## Version: 9.0 +## Version: 9.1c ### This version works in Optifine and Iris 1.5.1 or higher. @@ -29,7 +29,6 @@ High performance Minecraft shader (Java). * You can use the shader without restrictions. * You can fork the shader from: [https://github.com/javiergcim/MakeUpUltraFast](https://github.com/javiergcim/MakeUpUltraFast) * You can modify this shader for any purpose. -* If you modify or use the shader please add a credit, and the official URLs if possible: [https://www.planetminecraft.com/mod/makeup-ultra-fast-shader/](https://www.planetminecraft.com/mod/makeup-ultra-fast-shader/), [https://www.curseforge.com/minecraft/customization/makeup-ultra-fast-shader](https://www.curseforge.com/minecraft/customization/makeup-ultra-fast-shader) and/or [https://github.com/javiergcim/MakeUpUltraFast](https://github.com/javiergcim/MakeUpUltraFast) +* If you modify or use the shader please add a credit, and the official URLs if possible: [https://modrinth.com/shader/makeup-ultra-fast-shaders](https://modrinth.com/shader/makeup-ultra-fast-shaders), [https://www.planetminecraft.com/mod/makeup-ultra-fast-shader/](https://www.planetminecraft.com/mod/makeup-ultra-fast-shader/), [https://www.curseforge.com/minecraft/customization/makeup-ultra-fast-shader](https://www.curseforge.com/minecraft/customization/makeup-ultra-fast-shader) and/or [https://github.com/javiergcim/MakeUpUltraFast](https://github.com/javiergcim/MakeUpUltraFast) Notification is not required, but would be appreciated. - diff --git a/shaders/block.properties b/shaders/block.properties index 1e24e8bf..26138f97 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -3,29 +3,29 @@ #if MC_VERSION >= 11300 # GRASS LIKE ENTITIES - block.10031 = minecraft:cherry_sapling minecraft:torchflower minecraft:short_grass minecraft:grass minecraft:fern minecraft:seagrass biomesoplenty:dune_grass biomesoplenty:dead_grass biomesoplenty:desert_grass biomesoplenty:sprout biomesoplenty:bush environmental:mycelium_sprouts upgrade_aquatic:blue_pickerelweed upgrade_aquatic:purple_pickerelweed byg:beach_grass byg:clover_patch byg:flower_patch byg:horseweed byg:leaf_pile byg:prairie_grass byg:reeds byg:short_beach_grass byg:short_grass byg:tall_prairie_grass byg:weed_grass byg:wilted_grass byg:winter_grass ecotones:clover ecotones:reeds ecotones:sandy_grass ecotones:short_grass terrestria:cattail terrestria:dead_grass terrestria:sakura_leaf_pile terrestria:tall_cattail wildworld:acacia_leaf_pile wildworld:birch_leaf_pile wildworld:dark_oak_leaf_pile wildworld:jungle_leaf_pile wildworld:oak_leaf_pile wildworld:spruce_leaf_pile biomesoplenty:bush minecraft:nether_sprouts minecraft:warped_roots minecraft:crimson_roots projectvibrantjourneys:beach_grass projectvibrantjourneys:short_grass minecraft:oak_sapling minecraft:spruce_sapling minecraft:birch_sapling minecraft:jungle_sapling minecraft:acacia_sapling minecraft:dark_oak_sapling minecraft:dead_bush minecraft:dandelion minecraft:poppy minecraft:blue_orchid minecraft:allium minecraft:azure_bluet minecraft:red_tulip minecraft:orange_tulip minecraft:white_tulip minecraft:pink_tulip minecraft:oxeye_daisy minecraft:cornflower minecraft:lily_of_the_valley minecraft:wither_rose minecraft:sweet_berry_bush biomesoplenty:rose biomesoplenty:violet biomesoplenty:lavender biomesoplenty:wildflower biomesoplenty:orange_cosmos biomesoplenty:pink_daffodil biomesoplenty:pink_hibiscus biomesoplenty:glowflower biomesoplenty:wilted_lily biomesoplenty:burning_blossom atmospheric:rosewood_sapling atmospheric:morado_sapling atmospheric:yucca_sapling atmospheric:kousa_sapling atmospheric:aspen_sapling atmospheric:grimwood_sapling atmospheric:warm_monkey_brush atmospheric:hot_monkey_brush atmospheric:scalding_monkey_brush atmospheric:yucca_flower atmospheric:gilia autumnity:red_maple_sapling autumnity:orange_maple_sapling autumnity:yellow_maple_sapling autumnity:maple_sapling autumnity:autumn_crocus earthmobsmod:buttercup environmental:willow_sapling environmental:cherry_sapling environmental:pink_wisteria_sapling environmental:blue_wisteria_sapling environmental:purple_wisteria_sapling environmental:white_wisteria_sapling farmersdelight:wild_cabbages farmersdelight:wild_onions farmersdelight:wild_tomatoes farmersdelight:wild_carrots farmersdelight:wild_potatoes farmersdelight:wild_beetroots neapolitan:small_banana_frond neapolitan:banana_frond neapolitan:large_banana_frond upgrade_aquatic:river_sapling upgrade_aquatic:beachgrass upgrade_aquatic:white_searocket upgrade_aquatic:pink_searocket environmental:cattail environmental:cartwheel environmental:bluebell environmental:violet environmental:dianthus environmental:red_lotus_flower environmental:white_lotus_flower environmental:yellow_hibiscus environmental:orange_hibiscus environmental:red_hibiscus environmental:pink_hibiscus environmental:magenta_hibiscus environmental:purple_hibiscus buzzier_bees:buttercup buzzier_bees:white_clover buzzier_bees:pink_clover neapolitan:strawberry_pips biomesoplenty:origin_sapling biomesoplenty:flowering_oak_sapling biomesoplenty:rainbow_birch_sapling biomesoplenty:yellow_autumn_sapling biomesoplenty:orange_autumn_sapling biomesoplenty:maple_sapling biomesoplenty:fir_sapling biomesoplenty:redwood_sapling biomesoplenty:white_cherry_sapling biomesoplenty:pink_cherry_sapling biomesoplenty:mahogany_sapling biomesoplenty:jacaranda_sapling biomesoplenty:palm_sapling biomesoplenty:willow_sapling biomesoplenty:dead_sapling biomesoplenty:magic_sapling biomesoplenty:umbran_sapling biomesoplenty:hellbark_sapling astralsorcery:glow_flower botania:white_mystical_flower botania:gray_mystical_flower botania:orange_mystical_flower botania:magenta_mystical_flower botania:light_blue_mystical_flower botania:light_gray_mystical_flower botania:yellow_mystical_flower botania:lime_mystical_flower botania:pink_mystical_flower botania:cyan_mystical_flower botania:purple_mystical_flower botania:blue_mystical_flower botania:brown_mystical_flower botania:green_mystical_flower botania:red_mystical_flower botania:black_mystical_flower botania:white_mushroom botania:orange_mushroom botania:magenta_mushroom botania:light_blue_mushroom botania:yellow_mushroom botania:lime_mushroom botania:pink_mushroom botania:gray_mushroom botania:light_gray_mushroom botania:cyan_mushroom botania:purple_mushroom botania:blue_mushroom botania:brown_mushroom botania:green_mushroom botania:red_mushroom botania:black_mushroom botania:hydroangeas botania:manastar botania:pure_daisy botania:endoflame botania:thermalily botania:rosa_arcana botania:munchdew botania:entropinnyum botania:kekimurus botania:gourmaryllis botania:narslimmus botania:spectrolus botania:dandelifeon botania:rafflowsia botania:shulk_me_not botania:bellethorn botania:bellethorn_chibi botania:bergamute botania:dreadthorn botania:heisei_dream botania:tigerseye botania:jaded_amaranthus botania:orechid botania:fallen_kanade botania:exoflame botania:agricarnation botania:agricarnation_chibi botania:hopperhock botania:hopperhock_chibi botania:tangleberrie botania:jiyuulia botania:rannuncarpus botania:rannuncarpus_chibi botania:hyacidus botania:pollidisiac botania:clayconia botania:clayconia_chibi botania:loonium botania:daffomill botania:vinculotus botania:spectranthemum botania:medumone botania:marimorphosis botania:marimorphosis_chibi botania:bubbell botania:bubbell_chibi botania:solegnolia botania:solegnolia_chibi botania:orechid_ignem terrestria:tiny_cactus pamhc2trees:apple_sapling pamhc2trees:avocado_sapling pamhc2trees:candlenut_sapling pamhc2trees:cherry_sapling pamhc2trees:chestnut_sapling pamhc2trees:gooseberry_sapling pamhc2trees:lemon_sapling pamhc2trees:nutmeg_sapling pamhc2trees:orange_sapling pamhc2trees:peach_sapling pamhc2trees:pear_sapling pamhc2trees:plum_sapling pamhc2trees:walnut_sapling pamhc2trees:spiderweb_sapling pamhc2trees:hazelnut_sapling pamhc2trees:pawpaw_sapling pamhc2trees:soursop_sapling pamhc2trees:almond_sapling pamhc2trees:apricot_sapling pamhc2trees:banana_sapling pamhc2trees:cashew_sapling pamhc2trees:cinnamon_sapling pamhc2trees:coconut_sapling pamhc2trees:date_sapling pamhc2trees:dragonfruit_sapling pamhc2trees:durian_sapling pamhc2trees:fig_sapling pamhc2trees:grapefruit_sapling pamhc2trees:lime_sapling pamhc2trees:mango_sapling pamhc2trees:olive_sapling pamhc2trees:papaya_sapling pamhc2trees:paperbark_sapling pamhc2trees:pecan_sapling pamhc2trees:peppercorn_sapling pamhc2trees:persimmon_sapling pamhc2trees:pistachio_sapling pamhc2trees:pomegranate_sapling pamhc2trees:starfruit_sapling pamhc2trees:vanillabean_sapling pamhc2trees:breadfruit_sapling pamhc2trees:guava_sapling pamhc2trees:jackfruit_sapling pamhc2trees:lychee_sapling pamhc2trees:passionfruit_sapling pamhc2trees:rambutan_sapling pamhc2trees:tamarind_sapling pamhc2trees:maple_sapling pamhc2trees:pinenut_sapling byg:purple_bulbis_anomaly byg:blue_bulbis_anomaly byg:embur_wart byg:cryptic_bramble biomesoplenty:glowshroom biomesoplenty:toadstool biomesoplenty:rose biomesoplenty:violet biomesoplenty:lavender biomesoplenty:wildflower biomesoplenty:orange_cosmos biomesoplenty:pink_daffodil biomesoplenty:pink_hibiscus biomesoplenty:glowflower biomesoplenty:wilted_lily biomesoplenty:burning_blossom biomesoplenty:mangrove_root biomesoplenty:reed biomesoplenty:sprout biomesoplenty:bush pamhc2crops:aridgarden pamhc2crops:frostgarden pamhc2crops:shadedgarden pamhc2crops:soggygarden pamhc2crops:tropicalgarden pamhc2crops:windygarden pamhc2crops:pamamaranthcrop pamhc2crops:pambarleycrop pamhc2crops:pambeancrop pamhc2crops:pamchickpeacrop pamhc2crops:pamcorncrop pamhc2crops:pamlentilcrop pamhc2crops:pammilletcrop pamhc2crops:pamoatcrop pamhc2crops:pamquinoacrop pamhc2crops:pamricecrop pamhc2crops:pamryecrop pamhc2crops:pamsoybeancrops pamhc2crops:pamcottoncrop pamhc2crops:pamflaxcrop pamhc2crops:pamkenafcrop pamhc2crops:pamjutecrop pamhc2crops:pamsisalcrop pamhc2crops:pamartichokecrop pamhc2crops:pamasparaguscrop pamhc2crops:pambellpeppercrop pamhc2crops:pambroccolicrop pamhc2crops:pambrusselsproutcrop pamhc2crops:pamcabbagecrop pamhc2crops:pamcauliflowercrop pamhc2crops:pamcelerycrop pamhc2crops:pamchilipeppercrop pamhc2crops:pamcucumbercrop pamhc2crops:pameggplantcrop pamhc2crops:pamkalecrops pamhc2crops:pamlettucecrop pamhc2crops:pamokracrop pamhc2crops:pampeascrop pamhc2crops:pamspinachcrop pamhc2crops:pamtomatillocrop pamhc2crops:pamtomatocrop pamhc2crops:pamwintersquashcrop pamhc2crops:pamzucchinicrop pamhc2crops:pamarrowrootcrop pamhc2crops:pamcassavacrop pamhc2crops:pamgarliccrop pamhc2crops:pamjicamacrop pamhc2crops:pamleekcrop pamhc2crops:pamkohlrabicrop pamhc2crops:pamonioncrop pamhc2crops:pamparsnipcrop pamhc2crops:pampeanutcrop pamhc2crops:pamradishcrop pamhc2crops:pamrhubarbcrop pamhc2crops:pamrutabagacrop pamhc2crops:pamscallioncrop pamhc2crops:pamsweetpotatocrop pamhc2crops:pamtarocrop pamhc2crops:pamturnipcrop pamhc2crops:pamwaterchestnutcrop pamhc2crops:pamblackberrycrop pamhc2crops:pamblueberrycrop pamhc2crops:pamcactusfruitcrop pamhc2crops:pamcandleberrycrop pamhc2crops:pamcantaloupecrop pamhc2crops:pamcranberrycrop pamhc2crops:pamelderberrycrop pamhc2crops:pamgrapecrop pamhc2crops:pamgreengrapecrop pamhc2crops:pamhuckleberrycrop pamhc2crops:pamjuniperberrycrop pamhc2crops:pamkiwicrop pamhc2crops:pammullberrycrop pamhc2crops:pampineapplecrop pamhc2crops:pamraspberrycrop pamhc2crops:pamstrawberrycrop pamhc2crops:pamcoffeebeancrop pamhc2crops:pamtealeafcrop pamhc2crops:pamagavecrop pamhc2crops:pamwhitemushroomcrop pamhc2crops:pamgingercrop pamhc2crops:pamsesamecrop pamhc2crops:pamspiceleafcrop pamhc2crops:pammustardcrop byg:lament_sprouts byg:synthian_fungus byg:blue_glowcane byg:pink_glowcane byg:purple_glowcane byg:red_glowcane byg:warped_bush byg:blue_glowshroom byg:purple_glowshroom byg:scorched_bush byg:soul_shroom byg:soul_shroom_spore_end byg:death_cap byg:weeping_roots byg:nether_bristle byg:synthian_sprout byg:synthian_roots byg:hanging_synthian_roots byg:embur_sprouts byg:embur_roots byg:ivis_roots byg:ivis_sprout byg:bulbis_sprouts byg:ether_bush byg:thereal_bellflower byg:nightshade_sprouts byg:nightshade_roots byg:oddity_bush byg:shulkren_fungus byg:vermillion_sculk_tendrils byg:vermillion_sculk_growth byg:green_mushroom byg:weeping_milkcap byg:wood_blewit byg:black_puff byg:crimson_berry_bush byg:blueberry_bush byg:nightshade_berry_bush byg:winter_succulent byg:allium_flower_bush byg:alpine_bellflower byg:amaranth byg:angelica byg:begonia byg:bistort byg:black_rose byg:blue_sage byg:california_poppy byg:crocus byg:cyan_amaranth byg:cyan_rose byg:cyan_tulip byg:daffodil byg:fairy_slipper byg:firecracker_flower_bush byg:green_tulip byg:guzmania byg:incan_lily byg:iris byg:kovan_flower byg:lazarus_bellflower byg:lolipop_flower byg:magenta_amaranth byg:magenta_tulip byg:orange_amaranth byg:orange_daisy byg:osiria_rose byg:peach_leather_flower byg:pink_allium byg:pink_allium_flower_bush byg:pink_anemone byg:pink_daffodil byg:pink_orchid byg:protea_flower byg:purple_amaranth byg:purple_orchid byg:purple_sage byg:purple_tulip byg:red_cornflower byg:red_orchid byg:richea byg:rose byg:snowdrops byg:silver_vase_flower byg:torch_ginger byg:violet_leather_flower byg:white_anemone byg:white_sage byg:white_cyclamen byg:winter_rose byg:winter_scilla byg:yellow_daffodil byg:yellow_tulip byg:horseweed byg:winter_cyclamen cutecore:cherry_leaf_litter cutecore:cherry_wood_sapling cutecore:wisteria_sapling cutecore:wisteria_leaf_litter cutecore:lemon_leaf_litter cutecore:lemon_sapling cutecore:hyacinth cutecore:lotus_flower cutecore:violets cutecore:pink_rose cutecore:white_rose cutecore:rose cutecore:forget_me_nots cutecore:pink_carnation cutecore:red_carnation cutecore:white_carnation forbidden_arcanus:yellow_orchid forbidden_arcanus:golden_orchid immersiveengineering:hemp:growth=bottom0 immersiveengineering:hemp:growth=bottom1 immersiveengineering:hemp:growth=bottom2 immersiveengineering:hemp:growth=bottom3 simplefarming:apple_sapling simplefarming:apricot_sapling simplefarming:banana_sapling simplefarming:cherry_sapling simplefarming:mango_sapling simplefarming:olive_sapling simplefarming:orange_sapling simplefarming:pear_sapling simplefarming:plum_sapling simplefarming:barley_crop simplefarming:cassava_crop simplefarming:corn_crop simplefarming:cotton_crop simplefarming:cross_crop simplefarming:cucumber_crop simplefarming:cumin_plant simplefarming:eggplant_crop simplefarming:ginger_crop simplefarming:honeydew_crop simplefarming:kenaf_crop simplefarming:lettuce_crop simplefarming:oat_crop simplefarming:onion_crop simplefarming:pea_crop simplefarming:peanut_crop simplefarming:pepper_crop simplefarming:quinoa_plant simplefarming:radish_crop simplefarming:rice_crop simplefarming:rye_crop simplefarming:scrop simplefarming:hcrop simplefarming:marshmallow_crop simplefarming:sunflower_plant simplefarming:sorghum_crop simplefarming:soybean_crop simplefarming:spinach_crop simplefarming:sweet_potato_crop simplefarming:tomato_crop simplefarming:turnip_crop simplefarming:wild_crop simplefarming:yam_crop simplefarming:zucchini_crop byg:aspen_sapling byg:baobab_sapling byg:blue_enchanted_sapling byg:green_enchanted_sapling byg:pink_cherry_sapling byg:white_cherry_sapling byg:cika_sapling byg:cypress_sapling byg:ebony_sapling byg:ether_sapling byg:fir_sapling byg:aspen_sapling byg:holly_berry_sapling byg:holly_sapling byg:jacaranda_sapling byg:flowering_jacaranda_sapling byg:indigo_jacaranda_sapling byg:indigo_flowering_jacaranda_sapling byg:lament_sapling byg:mahogany_sapling byg:mangrove_sapling byg:maple_sapling byg:red_maple_sapling byg:silver_maple_sapling byg:nightshade_sapling byg:flowering_nightshade_sapling byg:palm_sapling byg:palo_verde_sapling byg:flowering_palo_verde_sapling byg:pine_sapling byg:rainbow_eucalyptus_sapling byg:redwood_sapling byg:pine_sapling byg:skyris_sapling byg:green_apple_skyris_sapling byg:willow_sapling byg:witch_hazel_sapling byg:blooming_witch_hazel_sapling byg:zelkova_sapling byg:withering_oak_sapling byg:araucaria_sapling byg:blue_spruce_sapling byg:brown_birch_sapling byg:brown_oak_sapling byg:zelkova_sapling byg:brown_zelkova_sapling byg:joshua_sapling byg:ripe_joshua_sapling byg:orange_birch_sapling byg:orange_oak_sapling byg:orange_spruce_sapling byg:orchard_sapling byg:flowering_orchard_sapling byg:ripe_orchard_sapling byg:red_birch_sapling byg:red_oak_sapling byg:red_spruce_sapling byg:yellow_birch_sapling byg:yellow_spruce_sapling byg:green_mushroom occultism:otherworld_sapling_natural occultism:otherworld_sapling integrateddynamics:menril_sapling projectvibrantjourneys:glowcap projectvibrantjourneys:crimson_nettle projectvibrantjourneys:warped_nettle twilightforest:mayapple + block.10031 = minecraft:cherry_sapling minecraft:torchflower minecraft:short_grass minecraft:grass minecraft:fern minecraft:seagrass biomesoplenty:dune_grass biomesoplenty:dead_grass biomesoplenty:desert_grass biomesoplenty:sprout biomesoplenty:bush environmental:mycelium_sprouts upgrade_aquatic:blue_pickerelweed upgrade_aquatic:purple_pickerelweed byg:beach_grass byg:clover_patch byg:flower_patch byg:horseweed byg:leaf_pile byg:prairie_grass byg:reeds byg:short_beach_grass byg:short_grass byg:tall_prairie_grass byg:weed_grass byg:wilted_grass byg:winter_grass ecotones:clover ecotones:reeds ecotones:sandy_grass ecotones:short_grass terrestria:cattail terrestria:dead_grass terrestria:sakura_leaf_pile terrestria:tall_cattail wildworld:acacia_leaf_pile wildworld:birch_leaf_pile wildworld:dark_oak_leaf_pile wildworld:jungle_leaf_pile wildworld:oak_leaf_pile wildworld:spruce_leaf_pile biomesoplenty:bush minecraft:nether_sprouts minecraft:warped_roots minecraft:crimson_roots projectvibrantjourneys:beach_grass projectvibrantjourneys:short_grass minecraft:oak_sapling minecraft:spruce_sapling minecraft:birch_sapling minecraft:jungle_sapling minecraft:acacia_sapling minecraft:dark_oak_sapling minecraft:dead_bush minecraft:dandelion minecraft:poppy minecraft:blue_orchid minecraft:allium minecraft:azure_bluet minecraft:red_tulip minecraft:orange_tulip minecraft:white_tulip minecraft:pink_tulip minecraft:oxeye_daisy minecraft:cornflower minecraft:lily_of_the_valley minecraft:wither_rose minecraft:sweet_berry_bush biomesoplenty:rose biomesoplenty:violet biomesoplenty:lavender biomesoplenty:wildflower biomesoplenty:orange_cosmos biomesoplenty:pink_daffodil biomesoplenty:pink_hibiscus biomesoplenty:glowflower biomesoplenty:wilted_lily biomesoplenty:burning_blossom atmospheric:rosewood_sapling atmospheric:morado_sapling atmospheric:yucca_sapling atmospheric:kousa_sapling atmospheric:aspen_sapling atmospheric:grimwood_sapling atmospheric:warm_monkey_brush atmospheric:hot_monkey_brush atmospheric:scalding_monkey_brush atmospheric:yucca_flower atmospheric:gilia autumnity:red_maple_sapling autumnity:orange_maple_sapling autumnity:yellow_maple_sapling autumnity:maple_sapling autumnity:autumn_crocus earthmobsmod:buttercup environmental:willow_sapling environmental:cherry_sapling environmental:pink_wisteria_sapling environmental:blue_wisteria_sapling environmental:purple_wisteria_sapling environmental:white_wisteria_sapling farmersdelight:wild_cabbages farmersdelight:wild_onions farmersdelight:wild_tomatoes farmersdelight:wild_carrots farmersdelight:wild_potatoes farmersdelight:wild_beetroots neapolitan:small_banana_frond neapolitan:banana_frond neapolitan:large_banana_frond upgrade_aquatic:river_sapling upgrade_aquatic:beachgrass upgrade_aquatic:white_searocket upgrade_aquatic:pink_searocket environmental:cattail environmental:cartwheel environmental:bluebell environmental:violet environmental:dianthus environmental:red_lotus_flower environmental:white_lotus_flower environmental:yellow_hibiscus environmental:orange_hibiscus environmental:red_hibiscus environmental:pink_hibiscus environmental:magenta_hibiscus environmental:purple_hibiscus buzzier_bees:buttercup buzzier_bees:white_clover buzzier_bees:pink_clover neapolitan:strawberry_pips biomesoplenty:origin_sapling biomesoplenty:flowering_oak_sapling biomesoplenty:rainbow_birch_sapling biomesoplenty:yellow_autumn_sapling biomesoplenty:orange_autumn_sapling biomesoplenty:maple_sapling biomesoplenty:fir_sapling biomesoplenty:redwood_sapling biomesoplenty:white_cherry_sapling biomesoplenty:pink_cherry_sapling biomesoplenty:mahogany_sapling biomesoplenty:jacaranda_sapling biomesoplenty:palm_sapling biomesoplenty:willow_sapling biomesoplenty:dead_sapling biomesoplenty:magic_sapling biomesoplenty:umbran_sapling biomesoplenty:hellbark_sapling astralsorcery:glow_flower botania:white_mystical_flower botania:gray_mystical_flower botania:orange_mystical_flower botania:magenta_mystical_flower botania:light_blue_mystical_flower botania:light_gray_mystical_flower botania:yellow_mystical_flower botania:lime_mystical_flower botania:pink_mystical_flower botania:cyan_mystical_flower botania:purple_mystical_flower botania:blue_mystical_flower botania:brown_mystical_flower botania:green_mystical_flower botania:red_mystical_flower botania:black_mystical_flower botania:white_mushroom botania:orange_mushroom botania:magenta_mushroom botania:light_blue_mushroom botania:yellow_mushroom botania:lime_mushroom botania:pink_mushroom botania:gray_mushroom botania:light_gray_mushroom botania:cyan_mushroom botania:purple_mushroom botania:blue_mushroom botania:brown_mushroom botania:green_mushroom botania:red_mushroom botania:black_mushroom botania:hydroangeas botania:manastar botania:pure_daisy botania:endoflame botania:thermalily botania:rosa_arcana botania:munchdew botania:entropinnyum botania:kekimurus botania:gourmaryllis botania:narslimmus botania:spectrolus botania:dandelifeon botania:rafflowsia botania:shulk_me_not botania:bellethorn botania:bellethorn_chibi botania:bergamute botania:dreadthorn botania:heisei_dream botania:tigerseye botania:jaded_amaranthus botania:orechid botania:fallen_kanade botania:exoflame botania:agricarnation botania:agricarnation_chibi botania:hopperhock botania:hopperhock_chibi botania:tangleberrie botania:jiyuulia botania:rannuncarpus botania:rannuncarpus_chibi botania:hyacidus botania:pollidisiac botania:clayconia botania:clayconia_chibi botania:loonium botania:daffomill botania:vinculotus botania:spectranthemum botania:medumone botania:marimorphosis botania:marimorphosis_chibi botania:bubbell botania:bubbell_chibi botania:solegnolia botania:solegnolia_chibi botania:orechid_ignem terrestria:tiny_cactus pamhc2trees:apple_sapling pamhc2trees:avocado_sapling pamhc2trees:candlenut_sapling pamhc2trees:cherry_sapling pamhc2trees:chestnut_sapling pamhc2trees:gooseberry_sapling pamhc2trees:lemon_sapling pamhc2trees:nutmeg_sapling pamhc2trees:orange_sapling pamhc2trees:peach_sapling pamhc2trees:pear_sapling pamhc2trees:plum_sapling pamhc2trees:walnut_sapling pamhc2trees:spiderweb_sapling pamhc2trees:hazelnut_sapling pamhc2trees:pawpaw_sapling pamhc2trees:soursop_sapling pamhc2trees:almond_sapling pamhc2trees:apricot_sapling pamhc2trees:banana_sapling pamhc2trees:cashew_sapling pamhc2trees:cinnamon_sapling pamhc2trees:coconut_sapling pamhc2trees:date_sapling pamhc2trees:dragonfruit_sapling pamhc2trees:durian_sapling pamhc2trees:fig_sapling pamhc2trees:grapefruit_sapling pamhc2trees:lime_sapling pamhc2trees:mango_sapling pamhc2trees:olive_sapling pamhc2trees:papaya_sapling pamhc2trees:paperbark_sapling pamhc2trees:pecan_sapling pamhc2trees:peppercorn_sapling pamhc2trees:persimmon_sapling pamhc2trees:pistachio_sapling pamhc2trees:pomegranate_sapling pamhc2trees:starfruit_sapling pamhc2trees:vanillabean_sapling pamhc2trees:breadfruit_sapling pamhc2trees:guava_sapling pamhc2trees:jackfruit_sapling pamhc2trees:lychee_sapling pamhc2trees:passionfruit_sapling pamhc2trees:rambutan_sapling pamhc2trees:tamarind_sapling pamhc2trees:maple_sapling pamhc2trees:pinenut_sapling byg:purple_bulbis_anomaly byg:blue_bulbis_anomaly byg:embur_wart byg:cryptic_bramble biomesoplenty:glowshroom biomesoplenty:toadstool biomesoplenty:rose biomesoplenty:violet biomesoplenty:lavender biomesoplenty:wildflower biomesoplenty:orange_cosmos biomesoplenty:pink_daffodil biomesoplenty:pink_hibiscus biomesoplenty:glowflower biomesoplenty:wilted_lily biomesoplenty:burning_blossom biomesoplenty:mangrove_root biomesoplenty:reed biomesoplenty:sprout biomesoplenty:bush pamhc2crops:aridgarden pamhc2crops:frostgarden pamhc2crops:shadedgarden pamhc2crops:soggygarden pamhc2crops:tropicalgarden pamhc2crops:windygarden pamhc2crops:pamamaranthcrop pamhc2crops:pambarleycrop pamhc2crops:pambeancrop pamhc2crops:pamchickpeacrop pamhc2crops:pamcorncrop pamhc2crops:pamlentilcrop pamhc2crops:pammilletcrop pamhc2crops:pamoatcrop pamhc2crops:pamquinoacrop pamhc2crops:pamricecrop pamhc2crops:pamryecrop pamhc2crops:pamsoybeancrops pamhc2crops:pamcottoncrop pamhc2crops:pamflaxcrop pamhc2crops:pamkenafcrop pamhc2crops:pamjutecrop pamhc2crops:pamsisalcrop pamhc2crops:pamartichokecrop pamhc2crops:pamasparaguscrop pamhc2crops:pambellpeppercrop pamhc2crops:pambroccolicrop pamhc2crops:pambrusselsproutcrop pamhc2crops:pamcabbagecrop pamhc2crops:pamcauliflowercrop pamhc2crops:pamcelerycrop pamhc2crops:pamchilipeppercrop pamhc2crops:pamcucumbercrop pamhc2crops:pameggplantcrop pamhc2crops:pamkalecrops pamhc2crops:pamlettucecrop pamhc2crops:pamokracrop pamhc2crops:pampeascrop pamhc2crops:pamspinachcrop pamhc2crops:pamtomatillocrop pamhc2crops:pamtomatocrop pamhc2crops:pamwintersquashcrop pamhc2crops:pamzucchinicrop pamhc2crops:pamarrowrootcrop pamhc2crops:pamcassavacrop pamhc2crops:pamgarliccrop pamhc2crops:pamjicamacrop pamhc2crops:pamleekcrop pamhc2crops:pamkohlrabicrop pamhc2crops:pamonioncrop pamhc2crops:pamparsnipcrop pamhc2crops:pampeanutcrop pamhc2crops:pamradishcrop pamhc2crops:pamrhubarbcrop pamhc2crops:pamrutabagacrop pamhc2crops:pamscallioncrop pamhc2crops:pamsweetpotatocrop pamhc2crops:pamtarocrop pamhc2crops:pamturnipcrop pamhc2crops:pamwaterchestnutcrop pamhc2crops:pamblackberrycrop pamhc2crops:pamblueberrycrop pamhc2crops:pamcactusfruitcrop pamhc2crops:pamcandleberrycrop pamhc2crops:pamcantaloupecrop pamhc2crops:pamcranberrycrop pamhc2crops:pamelderberrycrop pamhc2crops:pamgrapecrop pamhc2crops:pamgreengrapecrop pamhc2crops:pamhuckleberrycrop pamhc2crops:pamjuniperberrycrop pamhc2crops:pamkiwicrop pamhc2crops:pammullberrycrop pamhc2crops:pampineapplecrop pamhc2crops:pamraspberrycrop pamhc2crops:pamstrawberrycrop pamhc2crops:pamcoffeebeancrop pamhc2crops:pamtealeafcrop pamhc2crops:pamagavecrop pamhc2crops:pamwhitemushroomcrop pamhc2crops:pamgingercrop pamhc2crops:pamsesamecrop pamhc2crops:pamspiceleafcrop pamhc2crops:pammustardcrop byg:lament_sprouts byg:synthian_fungus byg:blue_glowcane byg:pink_glowcane byg:purple_glowcane byg:red_glowcane byg:warped_bush byg:blue_glowshroom byg:purple_glowshroom byg:scorched_bush byg:soul_shroom byg:soul_shroom_spore_end byg:death_cap byg:weeping_roots byg:nether_bristle byg:synthian_sprout byg:synthian_roots byg:hanging_synthian_roots byg:embur_sprouts byg:embur_roots byg:ivis_roots byg:ivis_sprout byg:bulbis_sprouts byg:ether_bush byg:thereal_bellflower byg:nightshade_sprouts byg:nightshade_roots byg:oddity_bush byg:shulkren_fungus byg:vermillion_sculk_tendrils byg:vermillion_sculk_growth byg:green_mushroom byg:weeping_milkcap byg:wood_blewit byg:black_puff byg:crimson_berry_bush byg:blueberry_bush byg:nightshade_berry_bush byg:winter_succulent byg:allium_flower_bush byg:alpine_bellflower byg:amaranth byg:angelica byg:begonia byg:bistort byg:black_rose byg:blue_sage byg:california_poppy byg:crocus byg:cyan_amaranth byg:cyan_rose byg:cyan_tulip byg:daffodil byg:fairy_slipper byg:firecracker_flower_bush byg:green_tulip byg:guzmania byg:incan_lily byg:iris byg:kovan_flower byg:lazarus_bellflower byg:lolipop_flower byg:magenta_amaranth byg:magenta_tulip byg:orange_amaranth byg:orange_daisy byg:osiria_rose byg:peach_leather_flower byg:pink_allium byg:pink_allium_flower_bush byg:pink_anemone byg:pink_daffodil byg:pink_orchid byg:protea_flower byg:purple_amaranth byg:purple_orchid byg:purple_sage byg:purple_tulip byg:red_cornflower byg:red_orchid byg:richea byg:rose byg:snowdrops byg:silver_vase_flower byg:torch_ginger byg:violet_leather_flower byg:white_anemone byg:white_sage byg:white_cyclamen byg:winter_rose byg:winter_scilla byg:yellow_daffodil byg:yellow_tulip byg:horseweed byg:winter_cyclamen cutecore:cherry_leaf_litter cutecore:cherry_wood_sapling cutecore:wisteria_sapling cutecore:wisteria_leaf_litter cutecore:lemon_leaf_litter cutecore:lemon_sapling cutecore:hyacinth cutecore:lotus_flower cutecore:violets cutecore:pink_rose cutecore:white_rose cutecore:rose cutecore:forget_me_nots cutecore:pink_carnation cutecore:red_carnation cutecore:white_carnation forbidden_arcanus:yellow_orchid forbidden_arcanus:golden_orchid immersiveengineering:hemp:growth=bottom0 immersiveengineering:hemp:growth=bottom1 immersiveengineering:hemp:growth=bottom2 immersiveengineering:hemp:growth=bottom3 simplefarming:apple_sapling simplefarming:apricot_sapling simplefarming:banana_sapling simplefarming:cherry_sapling simplefarming:mango_sapling simplefarming:olive_sapling simplefarming:orange_sapling simplefarming:pear_sapling simplefarming:plum_sapling simplefarming:barley_crop simplefarming:cassava_crop simplefarming:corn_crop simplefarming:cotton_crop simplefarming:cross_crop simplefarming:cucumber_crop simplefarming:cumin_plant simplefarming:eggplant_crop simplefarming:ginger_crop simplefarming:honeydew_crop simplefarming:kenaf_crop simplefarming:lettuce_crop simplefarming:oat_crop simplefarming:onion_crop simplefarming:pea_crop simplefarming:peanut_crop simplefarming:pepper_crop simplefarming:quinoa_plant simplefarming:radish_crop simplefarming:rice_crop simplefarming:rye_crop simplefarming:scrop simplefarming:hcrop simplefarming:marshmallow_crop simplefarming:sunflower_plant simplefarming:sorghum_crop simplefarming:soybean_crop simplefarming:spinach_crop simplefarming:sweet_potato_crop simplefarming:tomato_crop simplefarming:turnip_crop simplefarming:wild_crop simplefarming:yam_crop simplefarming:zucchini_crop byg:aspen_sapling byg:baobab_sapling byg:blue_enchanted_sapling byg:green_enchanted_sapling byg:pink_cherry_sapling byg:white_cherry_sapling byg:cika_sapling byg:cypress_sapling byg:ebony_sapling byg:ether_sapling byg:fir_sapling byg:aspen_sapling byg:holly_berry_sapling byg:holly_sapling byg:jacaranda_sapling byg:flowering_jacaranda_sapling byg:indigo_jacaranda_sapling byg:indigo_flowering_jacaranda_sapling byg:lament_sapling byg:mahogany_sapling byg:mangrove_sapling byg:maple_sapling byg:red_maple_sapling byg:silver_maple_sapling byg:nightshade_sapling byg:flowering_nightshade_sapling byg:palm_sapling byg:palo_verde_sapling byg:flowering_palo_verde_sapling byg:pine_sapling byg:rainbow_eucalyptus_sapling byg:redwood_sapling byg:pine_sapling byg:skyris_sapling byg:green_apple_skyris_sapling byg:willow_sapling byg:witch_hazel_sapling byg:blooming_witch_hazel_sapling byg:zelkova_sapling byg:withering_oak_sapling byg:araucaria_sapling byg:blue_spruce_sapling byg:brown_birch_sapling byg:brown_oak_sapling byg:zelkova_sapling byg:brown_zelkova_sapling byg:joshua_sapling byg:ripe_joshua_sapling byg:orange_birch_sapling byg:orange_oak_sapling byg:orange_spruce_sapling byg:orchard_sapling byg:flowering_orchard_sapling byg:ripe_orchard_sapling byg:red_birch_sapling byg:red_oak_sapling byg:red_spruce_sapling byg:yellow_birch_sapling byg:yellow_spruce_sapling byg:green_mushroom occultism:otherworld_sapling_natural occultism:otherworld_sapling integrateddynamics:menril_sapling projectvibrantjourneys:glowcap projectvibrantjourneys:crimson_nettle projectvibrantjourneys:warped_nettle twilightforest:mayapple deeperdarker:echo_sapling create_dd:rubber_sapling vegandelight:wild_soybean # CROPS LIKE ENTITIES - block.10059 = minecraft:wheat minecraft:carrots minecraft:potatoes minecraft:beetroots + block.10059 = minecraft:wheat minecraft:carrots minecraft:potatoes minecraft:beetroots farmersdelight:cabbages farmersdelight:budding_tomatoes farmersdelight:onions vegandelight:soybean_crop # LOWER-HALF ENTITIES - block.10175 = minecraft:pitcher_plant:half=lower minecraft:sunflower:half=lower minecraft:lilac:half=lower minecraft:tall_grass:half=lower minecraft:large_fern:half=lower minecraft:rose_bush:half=lower minecraft:peony:half=lower minecraft:tall_seagrass:half=lower atmospheric:water_hyacinth:half=lower atmospheric:tall_yucca_flower:half=lower environmental:tall_cattail:half=lower environmental:pink_delphinium:half=lower environmental:blue_delphinium:half=lower environmental:purple_delphinium:half=lower environmental:white_delphinium:half=lower environmental:bird_of_paradise:half=lower environmental:giant_tall_grass:half=lower farmersdelight:wild_rice:half=lower upgrade_aquatic:flowering_rush:half=lower upgrade_aquatic:tall_beachgrass:half=lower upgrade_aquatic:tall_blue_pickerelweed:half=lower upgrade_aquatic:tall_purple_pickerelweed:half=lower biomesoplenty:barley:half=lower biomesoplenty:goldenrod:half=lower biomesoplenty:blue_hydrangea:half=lower biomesoplenty:watergrass:half=lower botania:white_double_flower:half=lower botania:orange_double_flower:half=lower botania:magenta_double_flower:half=lower botania:light_blue_double_flower:half=lower botania:yellow_double_flower:half=lower botania:lime_double_flower:half=lower botania:pink_double_flower:half=lower botania:gray_double_flower:half=lower botania:light_gray_double_flower:half=lower botania:cyan_double_flower:half=lower botania:purple_double_flower:half=lower botania:blue_double_flower:half=lower botania:brown_double_flower:half=upper botania:green_double_flower:half=upper botania:red_double_flower:half=upper botania:black_double_flower:half=lower biomesoplenty:reed:half=lower biomesoplenty:cattail:half=lower byg:tall_crimson_roots:half=lower byg:tall_ether_grass:half=lower byg:reeds:half=lower byg:tall_prairie_grass:half=lower byg:tall_allium:half=lower byg:azalea:half=lower byg:tall_pink_allium:half=lower moreflowerbushes:purple_hibiscus:half=lower moreflowerbushes:mountain_laurel:half=lower moreflowerbushes:larkspur:half=lower moreflowerbushes:golden_shower:half=lower moreflowerbushes:fuchsia:half=lower moreflowerbushes:butterfly_weed:half=lower moreflowerbushes:blue_sage:half=lower moreflowerbushes:blue_hortensia:half=lower byg:japanese_orchid:half=lower byg:delphinium:half=lower byg:foxglove:half=lower cutecore:pink_rosebush:half=lower cutecore:white_rosebush:half=lower cutecore:pink_hydrangeas:half=lower cutecore:blue_hydrangeas:half=lower cutecore:purple_hydrangeas:half=lower + block.10175 = minecraft:pitcher_plant:half=lower minecraft:sunflower:half=lower minecraft:lilac:half=lower minecraft:tall_grass:half=lower minecraft:large_fern:half=lower minecraft:rose_bush:half=lower minecraft:peony:half=lower minecraft:tall_seagrass:half=lower atmospheric:water_hyacinth:half=lower atmospheric:tall_yucca_flower:half=lower environmental:tall_cattail:half=lower environmental:pink_delphinium:half=lower environmental:blue_delphinium:half=lower environmental:purple_delphinium:half=lower environmental:white_delphinium:half=lower environmental:bird_of_paradise:half=lower environmental:giant_tall_grass:half=lower farmersdelight:wild_rice:half=lower upgrade_aquatic:flowering_rush:half=lower upgrade_aquatic:tall_beachgrass:half=lower upgrade_aquatic:tall_blue_pickerelweed:half=lower upgrade_aquatic:tall_purple_pickerelweed:half=lower biomesoplenty:barley:half=lower biomesoplenty:goldenrod:half=lower biomesoplenty:blue_hydrangea:half=lower biomesoplenty:watergrass:half=lower botania:white_double_flower:half=lower botania:orange_double_flower:half=lower botania:magenta_double_flower:half=lower botania:light_blue_double_flower:half=lower botania:yellow_double_flower:half=lower botania:lime_double_flower:half=lower botania:pink_double_flower:half=lower botania:gray_double_flower:half=lower botania:light_gray_double_flower:half=lower botania:cyan_double_flower:half=lower botania:purple_double_flower:half=lower botania:blue_double_flower:half=lower botania:brown_double_flower:half=upper botania:green_double_flower:half=upper botania:red_double_flower:half=upper botania:black_double_flower:half=lower biomesoplenty:reed:half=lower biomesoplenty:cattail:half=lower byg:tall_crimson_roots:half=lower byg:tall_ether_grass:half=lower byg:reeds:half=lower byg:tall_prairie_grass:half=lower byg:tall_allium:half=lower byg:azalea:half=lower byg:tall_pink_allium:half=lower moreflowerbushes:purple_hibiscus:half=lower moreflowerbushes:mountain_laurel:half=lower moreflowerbushes:larkspur:half=lower moreflowerbushes:golden_shower:half=lower moreflowerbushes:fuchsia:half=lower moreflowerbushes:butterfly_weed:half=lower moreflowerbushes:blue_sage:half=lower moreflowerbushes:blue_hortensia:half=lower byg:japanese_orchid:half=lower byg:delphinium:half=lower byg:foxglove:half=lower cutecore:pink_rosebush:half=lower cutecore:white_rosebush:half=lower cutecore:pink_hydrangeas:half=lower cutecore:blue_hydrangeas:half=lower cutecore:purple_hydrangeas:half=lower farmersdelight:rice create_bic_bit:sunflowerstem:half=lower # UPPER-HALF ENTITIES - block.10176 = minecraft:pitcher_plant:half=upper minecraft:sunflower:half=upper minecraft:lilac:half=upper minecraft:tall_grass:half=upper minecraft:large_fern:half=upper minecraft:rose_bush:half=upper minecraft:peony:half=upper minecraft:tall_seagrass:half=upper atmospheric:water_hyacinth:half=upper atmospheric:tall_yucca_flower:half=upper environmental:tall_cattail:half=upper environmental:pink_delphinium:half=upper environmental:blue_delphinium:half=upper environmental:purple_delphinium:half=upper environmental:white_delphinium:half=upper environmental:bird_of_paradise:half=upper environmental:giant_tall_grass:half=upper farmersdelight:wild_rice:half=upper upgrade_aquatic:flowering_rush:half=upper upgrade_aquatic:tall_beachgrass:half=upper upgrade_aquatic:tall_blue_pickerelweed:half=upper upgrade_aquatic:tall_purple_pickerelweed:half=upper biomesoplenty:barley:half=upper biomesoplenty:goldenrod:half=upper biomesoplenty:blue_hydrangea:half=upper biomesoplenty:watergrass:half=upper botania:white_double_flower:half=upper botania:orange_double_flower:half=upper botania:magenta_double_flower:half=upper botania:light_blue_double_flower:half=upper botania:yellow_double_flower:half=upper botania:lime_double_flower:half=upper botania:pink_double_flower:half=upper botania:gray_double_flower:half=upper botania:light_gray_double_flower:half=upper botania:cyan_double_flower:half=upper botania:purple_double_flower:half=upper botania:blue_double_flower:half=upper botania:brown_double_flower:half=upper botania:green_double_flower:half=upper botania:red_double_flower:half=upper botania:black_double_flower:half=upper biomesoplenty:reed:half=upper biomesoplenty:cattail:half=upper byg:tall_crimson_roots:half=upper byg:tall_ether_grass:half=upper byg:reeds:half=upper byg:tall_prairie_grass:half=upper byg:tall_allium:half=upper byg:azalea:half=upper byg:tall_pink_allium:half=upper moreflowerbushes:purple_hibiscus:half=upper moreflowerbushes:mountain_laurel:half=upper moreflowerbushes:larkspur:half=upper moreflowerbushes:golden_shower:half=upper moreflowerbushes:fuchsia:half=upper moreflowerbushes:butterfly_weed:half=upper moreflowerbushes:blue_sage:half=upper moreflowerbushes:blue_hortensia:half=upper byg:japanese_orchid:half=upper byg:delphinium:half=upper byg:foxglove:half=upper cutecore:pink_rosebush:half=upper cutecore:white_rosebush:half=upper cutecore:pink_hydrangeas:half=upper cutecore:blue_hydrangeas:half=upper cutecore:purple_hydrangeas:half=upper + block.10176 = minecraft:pitcher_plant:half=upper minecraft:sunflower:half=upper minecraft:lilac:half=upper minecraft:tall_grass:half=upper minecraft:large_fern:half=upper minecraft:rose_bush:half=upper minecraft:peony:half=upper minecraft:tall_seagrass:half=upper atmospheric:water_hyacinth:half=upper atmospheric:tall_yucca_flower:half=upper environmental:tall_cattail:half=upper environmental:pink_delphinium:half=upper environmental:blue_delphinium:half=upper environmental:purple_delphinium:half=upper environmental:white_delphinium:half=upper environmental:bird_of_paradise:half=upper environmental:giant_tall_grass:half=upper farmersdelight:wild_rice:half=upper upgrade_aquatic:flowering_rush:half=upper upgrade_aquatic:tall_beachgrass:half=upper upgrade_aquatic:tall_blue_pickerelweed:half=upper upgrade_aquatic:tall_purple_pickerelweed:half=upper biomesoplenty:barley:half=upper biomesoplenty:goldenrod:half=upper biomesoplenty:blue_hydrangea:half=upper biomesoplenty:watergrass:half=upper botania:white_double_flower:half=upper botania:orange_double_flower:half=upper botania:magenta_double_flower:half=upper botania:light_blue_double_flower:half=upper botania:yellow_double_flower:half=upper botania:lime_double_flower:half=upper botania:pink_double_flower:half=upper botania:gray_double_flower:half=upper botania:light_gray_double_flower:half=upper botania:cyan_double_flower:half=upper botania:purple_double_flower:half=upper botania:blue_double_flower:half=upper botania:brown_double_flower:half=upper botania:green_double_flower:half=upper botania:red_double_flower:half=upper botania:black_double_flower:half=upper biomesoplenty:reed:half=upper biomesoplenty:cattail:half=upper byg:tall_crimson_roots:half=upper byg:tall_ether_grass:half=upper byg:reeds:half=upper byg:tall_prairie_grass:half=upper byg:tall_allium:half=upper byg:azalea:half=upper byg:tall_pink_allium:half=upper moreflowerbushes:purple_hibiscus:half=upper moreflowerbushes:mountain_laurel:half=upper moreflowerbushes:larkspur:half=upper moreflowerbushes:golden_shower:half=upper moreflowerbushes:fuchsia:half=upper moreflowerbushes:butterfly_weed:half=upper moreflowerbushes:blue_sage:half=upper moreflowerbushes:blue_hortensia:half=upper byg:japanese_orchid:half=upper byg:delphinium:half=upper byg:foxglove:half=upper cutecore:pink_rosebush:half=upper cutecore:white_rosebush:half=upper cutecore:pink_hydrangeas:half=upper cutecore:blue_hydrangeas:half=upper cutecore:purple_hydrangeas:half=upper farmersdelight:rice_panicles create_bic_bit:sunflowerstem:half=upper # LEAVES - block.10018 = minecraft:cherry_leaves minecraft:oak_leaves minecraft:spruce_leaves minecraft:birch_leaves minecraft:jungle_leaves minecraft:acacia_leaves minecraft:dark_oak_leaves minecraft:azalea_leaves minecraft:azalea_leaves_flowers minecraft:flowering_azalea_leaves minecraft:mangrove_leaves biomesoplenty:origin_leaves biomesoplenty:flowering_oak_leaves biomesoplenty:rainbow_birch_leaves biomesoplenty:yellow_autumn_leaves biomesoplenty:orange_autumn_leaves biomesoplenty:maple_leaves biomesoplenty:fir_leaves biomesoplenty:redwood_leaves biomesoplenty:mahogany_leaves biomesoplenty:palm_leaves biomesoplenty:willow_leaves biomesoplenty:dead_leaves biomesoplenty:magic_leaves biomesoplenty:umbran_leaves biomesoplenty:hellbark_leaves biomesoplenty:pink_cherry_leaves biomesoplenty:white_cherry_leaves biomesoplenty:jacaranda_leaves quark:blue_blossom_leaves quark:lavender_blossom_leaves quark:orange_blossom_leaves quark:pink_blossom_leaves quark:yellow_blossom_leaves atmospheric:rosewood_leaves atmospheric:morado_leaves atmospheric:flowering_morado_leaves atmospheric:yucca_leaves atmospheric:kousa_leaves atmospheric:aspen_leaves atmospheric:grimwood_leaves autumnity:red_maple_leaves autumnity:orange_maple_leaves autumnity:yellow_maple_leaves autumnity:maple_leaves environmental:willow_leaves environmental:cherry_leaves environmental:pink_wisteria_leaves environmental:blue_wisteria_leaves environmental:purple_wisteria_leaves environmental:white_wisteria_leaves environmental:pink_hanging_wisteria_leaves environmental:blue_hanging_wisteria_leaves environmental:purple_hanging_wisteria_leaves environmental:white_hanging_wisteria_leaves environmental:hanging_willow_leaves upgrade_aquatic:river_leaves byg:aspen_leaves byg:araucaria_leaves byg:baobab_leaves byg:blooming_witch_hazel_leaves byg:blue_enchanted_leaves byg:blue_spruce_leaves byg:brown_birch_leaves byg:brown_oak_leaves byg:brown_zelkova_leaves byg:cika_leaves byg:cypress_leaves byg:ebony_leaves byg:fir_leaves byg:flowering_orchard_leaves byg:flowering_nightshade_leaves byg:flowering_palo_verde_leaves byg:green_apple_skyris_leaves byg:green_enchanted_leaves byg:holly_berry_leaves byg:holly_leaves byg:indigo_jacaranda_leaves byg:jacaranda_leaves byg:joshua_leaves byg:mahogany_leaves byg:mangrove_leaves byg:maple_leaves byg:orange_birch_leaves byg:orange_oak_leaves byg:orange_spruce_leaves byg:orchard_leaves byg:palo_verde_leaves byg:pine_leaves byg:pink_cherry_leaves byg:rainbow_eucalyptus_leaves byg:red_birch_leaves byg:red_maple_leaves byg:red_oak_leaves byg:red_spruce_leaves byg:redwood_leaves byg:ripe_joshua_leaves byg:ripe_orchard_leaves byg:silver_maple_leaves byg:skyris_leaves byg:white_cherry_leaves byg:willow_leaves byg:witch_hazel_leaves byg:yellow_birch_leaves byg:yellow_spruce_leaves byg:zelkova_leaves ecotones:hazel_leaves sakurarosea:alt_sakura_leaves sakurarosea:sakura_leaves sakurarosea:white_sakura_leaves terrestria:cypress_leaves terrestria:dark_japanese_maple_leaves terrestria:hemlock_leaves terrestria:japanese_maple_leaves terrestria:japanese_maple_shrub_leaves terrestria:jungle_palm_leaves terrestria:rainbow_eucalyptus_leaves terrestria:redwood_leaves terrestria:rubber_leaves terrestria:sakura_leaves terrestria:willow_leaves terrestria:yucca_palm_leaves traverse:brown_autumnal_leaves traverse:fir_leaves traverse:orange_autumnal_leaves traverse:red_autumnal_leaves traverse:yellow_autumnal_leaves vanillaenhanced:redwood_leaves wild_explorer:autumn_oak_leaves wild_explorer:autumn_birch_leaves wild_explorer:pink_cherry_oak_leaves wild_explorer:white_cherry_oak_leaves wild_explorer:palm_leaves cutecore:cherry_wood_leaves cutecore:cherry_wood_leaves_fruit cutecore:wisteria_leaves cutecore:lemon_leaves cutecore:lemon_leaves_fruiting dynamictrees:jungle_leaves dynamictrees:oak_leaves dynamictrees:spruce_leaves dynamictrees:dark_oak_leaves dynamictrees:acacia_leaves dynamictrees:birch_leaves simplefarming:apple_leaves simplefarming:apricot_leaves simplefarming:banana_leaves simplefarming:cherry_leaves simplefarming:mango_leaves simplefarming:olive_leaves simplefarming:orange_leaves simplefarming:pear_leaves simplefarming:plum_leaves mythicbotany:dreamwood_leaves undergarden:smogstem_leaves undergarden:wigglewood_leaves occultism:otherworld_leaves occultism:otherworld_leaves_natural integrateddynamics:menril_leaves extlights:xmas_leaves extlights:xmas_leaves_bulb extlights:xmas_leaves_bulb_red extlights:xmas_leaves_bulb_green extlights:xmas_leaves_bulb_blue extlights:xmas_leaves_bulb_blinking_redgreen extlights:xmas_leaves_bulb_blinking_redblue extlights:xmas_leaves_bulb_blinking_greenblue extlights:xmas_leaves_bulb_blinking_rgb extlights:xmas_leaves_bulb_smooth_redgreen extlights:xmas_leaves_bulb_smooth_redblue extlights:xmas_leaves_bulb_smooth_greenblue extlights:xmas_leaves_bulb_smooth_rgb techreborn:rubber_leaves blockus:legacy_leaves blockus:white_oak_leaves architects_palette:twisted_leaves twilightforest:twilight_oak_leaves twilightforest:canopy_leaves twilightforest:mangrove_leaves twilightforest:dark_leaves twilightforest:time_leaves twilightforest:transformation_leaves twilightforest:mining_leaves twilightforest:sorting_leaves twilightforest:giant_leaves twilightforest:thorn_leaves + block.10018 = minecraft:cherry_leaves minecraft:oak_leaves minecraft:spruce_leaves minecraft:birch_leaves minecraft:jungle_leaves minecraft:acacia_leaves minecraft:dark_oak_leaves minecraft:pale_oak_leaves minecraft:azalea_leaves minecraft:azalea_leaves_flowers minecraft:flowering_azalea_leaves minecraft:mangrove_leaves biomesoplenty:origin_leaves biomesoplenty:flowering_oak_leaves biomesoplenty:rainbow_birch_leaves biomesoplenty:yellow_autumn_leaves biomesoplenty:orange_autumn_leaves biomesoplenty:maple_leaves biomesoplenty:fir_leaves biomesoplenty:redwood_leaves biomesoplenty:mahogany_leaves biomesoplenty:palm_leaves biomesoplenty:willow_leaves biomesoplenty:dead_leaves biomesoplenty:magic_leaves biomesoplenty:umbran_leaves biomesoplenty:hellbark_leaves biomesoplenty:pink_cherry_leaves biomesoplenty:white_cherry_leaves biomesoplenty:jacaranda_leaves quark:blue_blossom_leaves quark:lavender_blossom_leaves quark:orange_blossom_leaves quark:pink_blossom_leaves quark:yellow_blossom_leaves atmospheric:rosewood_leaves atmospheric:morado_leaves atmospheric:flowering_morado_leaves atmospheric:yucca_leaves atmospheric:kousa_leaves atmospheric:aspen_leaves atmospheric:grimwood_leaves autumnity:red_maple_leaves autumnity:orange_maple_leaves autumnity:yellow_maple_leaves autumnity:maple_leaves environmental:willow_leaves environmental:cherry_leaves environmental:pink_wisteria_leaves environmental:blue_wisteria_leaves environmental:purple_wisteria_leaves environmental:white_wisteria_leaves environmental:pink_hanging_wisteria_leaves environmental:blue_hanging_wisteria_leaves environmental:purple_hanging_wisteria_leaves environmental:white_hanging_wisteria_leaves environmental:hanging_willow_leaves upgrade_aquatic:river_leaves byg:aspen_leaves byg:araucaria_leaves byg:baobab_leaves byg:blooming_witch_hazel_leaves byg:blue_enchanted_leaves byg:blue_spruce_leaves byg:brown_birch_leaves byg:brown_oak_leaves byg:brown_zelkova_leaves byg:cika_leaves byg:cypress_leaves byg:ebony_leaves byg:fir_leaves byg:flowering_orchard_leaves byg:flowering_nightshade_leaves byg:flowering_palo_verde_leaves byg:green_apple_skyris_leaves byg:green_enchanted_leaves byg:holly_berry_leaves byg:holly_leaves byg:indigo_jacaranda_leaves byg:jacaranda_leaves byg:joshua_leaves byg:mahogany_leaves byg:mangrove_leaves byg:maple_leaves byg:orange_birch_leaves byg:orange_oak_leaves byg:orange_spruce_leaves byg:orchard_leaves byg:palo_verde_leaves byg:pine_leaves byg:pink_cherry_leaves byg:rainbow_eucalyptus_leaves byg:red_birch_leaves byg:red_maple_leaves byg:red_oak_leaves byg:red_spruce_leaves byg:redwood_leaves byg:ripe_joshua_leaves byg:ripe_orchard_leaves byg:silver_maple_leaves byg:skyris_leaves byg:white_cherry_leaves byg:willow_leaves byg:witch_hazel_leaves byg:yellow_birch_leaves byg:yellow_spruce_leaves byg:zelkova_leaves ecotones:hazel_leaves sakurarosea:alt_sakura_leaves sakurarosea:sakura_leaves sakurarosea:white_sakura_leaves terrestria:cypress_leaves terrestria:dark_japanese_maple_leaves terrestria:hemlock_leaves terrestria:japanese_maple_leaves terrestria:japanese_maple_shrub_leaves terrestria:jungle_palm_leaves terrestria:rainbow_eucalyptus_leaves terrestria:redwood_leaves terrestria:rubber_leaves terrestria:sakura_leaves terrestria:willow_leaves terrestria:yucca_palm_leaves traverse:brown_autumnal_leaves traverse:fir_leaves traverse:orange_autumnal_leaves traverse:red_autumnal_leaves traverse:yellow_autumnal_leaves vanillaenhanced:redwood_leaves wild_explorer:autumn_oak_leaves wild_explorer:autumn_birch_leaves wild_explorer:pink_cherry_oak_leaves wild_explorer:white_cherry_oak_leaves wild_explorer:palm_leaves cutecore:cherry_wood_leaves cutecore:cherry_wood_leaves_fruit cutecore:wisteria_leaves cutecore:lemon_leaves cutecore:lemon_leaves_fruiting dynamictrees:jungle_leaves dynamictrees:oak_leaves dynamictrees:spruce_leaves dynamictrees:dark_oak_leaves dynamictrees:acacia_leaves dynamictrees:birch_leaves simplefarming:apple_leaves simplefarming:apricot_leaves simplefarming:banana_leaves simplefarming:cherry_leaves simplefarming:mango_leaves simplefarming:olive_leaves simplefarming:orange_leaves simplefarming:pear_leaves simplefarming:plum_leaves mythicbotany:dreamwood_leaves undergarden:smogstem_leaves undergarden:wigglewood_leaves occultism:otherworld_leaves occultism:otherworld_leaves_natural integrateddynamics:menril_leaves extlights:xmas_leaves extlights:xmas_leaves_bulb extlights:xmas_leaves_bulb_red extlights:xmas_leaves_bulb_green extlights:xmas_leaves_bulb_blue extlights:xmas_leaves_bulb_blinking_redgreen extlights:xmas_leaves_bulb_blinking_redblue extlights:xmas_leaves_bulb_blinking_greenblue extlights:xmas_leaves_bulb_blinking_rgb extlights:xmas_leaves_bulb_smooth_redgreen extlights:xmas_leaves_bulb_smooth_redblue extlights:xmas_leaves_bulb_smooth_greenblue extlights:xmas_leaves_bulb_smooth_rgb techreborn:rubber_leaves blockus:legacy_leaves blockus:white_oak_leaves architects_palette:twisted_leaves twilightforest:twilight_oak_leaves twilightforest:canopy_leaves twilightforest:mangrove_leaves twilightforest:dark_leaves twilightforest:time_leaves twilightforest:transformation_leaves twilightforest:mining_leaves twilightforest:sorting_leaves twilightforest:giant_leaves twilightforest:thorn_leaves tfc:wood/leaves/acacia tfc:wood/leaves/ash tfc:wood/leaves/aspen tfc:wood/leaves/birch tfc:wood/leaves/blackwood tfc:wood/leaves/chestnut tfc:wood/leaves/douglas_fir tfc:wood/leaves/hickory tfc:wood/leaves/kapok tfc:wood/leaves/mangrove tfc:wood/leaves/maple tfc:wood/leaves/oak tfc:wood/leaves/palm tfc:wood/leaves/pine tfc:wood/leaves/rosewood tfc:wood/leaves/sequoia tfc:wood/leaves/spruce tfc:wood/leaves/sycamore tfc:wood/leaves/white_cedar tfc:wood/leaves/willow tfc:plant/cherry_leaves tfc:plant/green_apple_leaves tfc:plant/lemon_leaves tfc:plant/olive_leaves tfc:plant/orange_leaves tfc:plant/peach_leaves tfc:plant/plum_leaves tfc:plant/red_apple_leaves deeperdarker:echo_leaves create_dd:rubber_leaves # NO-WAVEABLE SMALL ELEMENTS - block.10032 = sugar_cane tube_coral brain_coral fire_coral bubble_coral horn_coral dead_tube_coral dead_brain_coral dead_fire_coral dead_bubble_coral dead_horn_coral tube_coral_fan brain_coral_fan fire_coral_fan bubble_coral_fan horn_coral_fan dead_tube_coral_fan dead_brain_coral_fan dead_fire_coral_fan dead_bubble_coral_fan dead_horn_coral_fan nether_wart + block.10032 = sugar_cane tube_coral brain_coral fire_coral bubble_coral horn_coral dead_tube_coral dead_brain_coral dead_fire_coral dead_bubble_coral dead_horn_coral tube_coral_fan brain_coral_fan fire_coral_fan bubble_coral_fan horn_coral_fan dead_tube_coral_fan dead_brain_coral_fan dead_fire_coral_fan dead_bubble_coral_fan dead_horn_coral_fan nether_wart tfc:plant/athyrium_fern tfc:plant/canna tfc:plant/goldenrod tfc:plant/pampas_grass tfc:plant/perovskia tfc:plant/rose tfc:plant/beachgrass tfc:plant/bluegrass tfc:plant/bromegrass tfc:plant/fountain_grass tfc:plant/manatee_grass tfc:plant/orchard_grass tfc:plant/ryegrass tfc:plant/scutch_grass tfc:plant/star_grass tfc:plant/timothy_grass tfc:plant/raddia_grass tfc:plant/allium tfc:plant/anthurium tfc:plant/arrowhead tfc:plant/badderlocks tfc:plant/barrel_cactus tfc:plant/blood_lily tfc:plant/blue_ginger tfc:plant/blue_orchid tfc:plant/bur_reed tfc:plant/butterfly_milkweed tfc:plant/black_orchid tfc:plant/calendula tfc:plant/cattail tfc:plant/cobblestone_lichen tfc:plant/coontail tfc:plant/cordgrass tfc:plant/dandelion tfc:plant/dead_bush tfc:plant/desert_flame tfc:plant/duckweed tfc:plant/eel_grass tfc:plant/field_horsetail tfc:plant/foxglove tfc:plant/grape_hyacinth tfc:plant/green_algae tfc:plant/gutweed tfc:plant/guzmania tfc:plant/heliconia tfc:plant/heather tfc:plant/hibiscus tfc:plant/houstonia tfc:plant/kangaroo_paw tfc:plant/king_fern tfc:plant/labrador_tea tfc:plant/lady_fern tfc:plant/laminaria tfc:plant/licorice_fern tfc:plant/artists_conk tfc:plant/lily_of_the_valley tfc:plant/lilac tfc:plant/lotus tfc:plant/maiden_pink tfc:plant/marigold tfc:plant/meads_milkweed tfc:plant/milfoil tfc:plant/morning_glory tfc:plant/philodendron tfc:plant/moss tfc:plant/nasturtium tfc:plant/ostrich_fern tfc:plant/oxeye_daisy tfc:plant/phragmite tfc:plant/pickerelweed tfc:plant/pistia tfc:plant/poppy tfc:plant/primrose tfc:plant/pulsatilla tfc:plant/red_algae tfc:plant/reindeer_lichen tfc:plant/red_sealing_wax_palm tfc:plant/sacred_datura tfc:plant/sagebrush tfc:plant/sago tfc:plant/saguaro_fruit tfc:plant/sapphire_tower tfc:plant/sargassum tfc:plant/sea_lavender tfc:plant/sea_palm tfc:plant/silver_spurflower tfc:plant/snapdragon_pink tfc:plant/snapdragon_red tfc:plant/snapdragon_white tfc:plant/snapdragon_yellow tfc:plant/strelitzia tfc:plant/switchgrass tfc:plant/sword_fern tfc:plant/tall_fescue_grass tfc:plant/toquilla_palm tfc:plant/trillium tfc:plant/tropical_milkweed tfc:plant/tulip_orange tfc:plant/tulip_pink tfc:plant/tulip_red tfc:plant/tulip_white tfc:plant/turtle_grass tfc:plant/vriesea tfc:plant/water_canna tfc:plant/white_water_lily tfc:plant/purple_water_lily tfc:plant/yellow_water_lily tfc:plant/water_taro tfc:plant/yucca tfc:plant/hanging_vines_plant tfc:plant/hanging_vines tfc:plant/spanish_moss_plant tfc:plant/spanish_moss tfc:plant/liana_plant tfc:plant/liana tfc:plant/tree_fern_plant tfc:plant/tree_fern tfc:plant/arundo_plant tfc:plant/arundo tfc:plant/dry_phragmite_plant tfc:plant/dry_phragmite tfc:plant/winged_kelp_plant tfc:plant/winged_kelp tfc:plant/leafy_kelp_plant tfc:plant/leafy_kelp tfc:plant/giant_kelp_plant tfc:plant/giant_kelp_flower tfc:plant/ivy tfc:plant/jungle_vines tfc:plant/saguaro_plant tfc:plant/saguaro tfc:plant/golden_bamboo tfc:plant/golden_bamboo_sapling tfc:wild_crop/barley tfc:wild_crop/oat tfc:wild_crop/rye tfc:wild_crop/maize tfc:wild_crop/wheat tfc:wild_crop/rice tfc:wild_crop/beet tfc:wild_crop/cabbage tfc:wild_crop/carrot tfc:wild_crop/garlic tfc:wild_crop/green_bean tfc:wild_crop/potato tfc:wild_crop/onion tfc:wild_crop/soybean tfc:wild_crop/squash tfc:wild_crop/sugarcane tfc:wild_crop/tomato tfc:wild_crop/jute tfc:wild_crop/papyrus tfc:wild_crop/pumpkin tfc:wild_crop/melon tfc:wild_crop/red_bell_pepper tfc:wild_crop/yellow_bell_pepper tfc:plant/snowberry_bush tfc:plant/bunchberry_bush tfc:plant/gooseberry_bush tfc:plant/cloudberry_bush tfc:plant/strawberry_bush tfc:plant/wintergreen_berry_bush tfc:plant/cranberry_bush # REFLECTIVE - block.10008 = minecraft:water minecraft:flowing_water subwild:water_puddle - block.10079 = ice slime_block white_stained_glass orange_stained_glass magenta_stained_glass light_blue_stained_glass yellow_stained_glass lime_stained_glass pink_stained_glass gray_stained_glass light_gray_stained_glass cyan_stained_glass purple_stained_glass blue_stained_glass brown_stained_glass green_stained_glass red_stained_glass black_stained_glass white_stained_glass_pane orange_stained_glass_pane magenta_stained_glass_pane light_blue_stained_glass_pane yellow_stained_glass_pane lime_stained_glass_pane pink_stained_glass_pane gray_stained_glass_pane light_gray_stained_glass_pane cyan_stained_glass_pane purple_stained_glass_pane blue_stained_glass_pane brown_stained_glass_pane green_stained_glass_pane red_stained_glass_pane black_stained_glass_pane tinted_glass + block.10008 = minecraft:water minecraft:flowing_water subwild:water_puddle tfc:fluid/finite_fresh_water tfc:fluid/fresh_water tfc:fluid/finite_salt_water tfc:fluid/salt_water tfc:fluid/finite_river_water tfc:fluid/river_water tfc:fluid/spring_water tfc:fluid/finite_spring_water + block.10079 = ice slime_block white_stained_glass orange_stained_glass magenta_stained_glass light_blue_stained_glass yellow_stained_glass lime_stained_glass pink_stained_glass gray_stained_glass light_gray_stained_glass cyan_stained_glass purple_stained_glass blue_stained_glass brown_stained_glass green_stained_glass red_stained_glass black_stained_glass white_stained_glass_pane orange_stained_glass_pane magenta_stained_glass_pane light_blue_stained_glass_pane yellow_stained_glass_pane lime_stained_glass_pane pink_stained_glass_pane gray_stained_glass_pane light_gray_stained_glass_pane cyan_stained_glass_pane purple_stained_glass_pane blue_stained_glass_pane brown_stained_glass_pane green_stained_glass_pane red_stained_glass_pane black_stained_glass_pane tinted_glass deeperdarker:soundproof_glass naturalist:crimson_froglass naturalist:verdant_froglass naturalist:azure_froglass naturalist:crimson_froglass_pane naturalist:verdant_froglass_pane naturalist:azure_froglass_pane createframed:white_stained_framed_glass_door createframed:white_stained_framed_glass_trapdoor createframed:white_stained_tiled_glass createframed:white_stained_tiled_glass_pane createframed:white_stained_framed_glass createframed:white_stained_framed_glass_pane createframed:horizontal_white_stained_framed_glass createframed:horizontal_white_stained_framed_glass_pane createframed:vertical_white_stained_framed_glass createframed:vertical_white_stained_framed_glass_pane createframed:light_gray_stained_framed_glass_door createframed:light_gray_stained_framed_glass_trapdoor createframed:light_gray_stained_tiled_glass createframed:light_gray_stained_tiled_glass_pane createframed:light_gray_stained_framed_glass createframed:light_gray_stained_framed_glass_pane createframed:horizontal_light_gray_stained_framed_glass createframed:horizontal_light_gray_stained_framed_glass_pane createframed:vertical_light_gray_stained_framed_glass createframed:vertical_light_gray_stained_framed_glass_pane createframed:gray_stained_framed_glass_door createframed:gray_stained_framed_glass_trapdoor createframed:gray_stained_tiled_glass createframed:gray_stained_tiled_glass_pane createframed:gray_stained_framed_glass createframed:gray_stained_framed_glass_pane createframed:horizontal_gray_stained_framed_glass createframed:horizontal_gray_stained_framed_glass_pane createframed:vertical_gray_stained_framed_glass createframed:vertical_gray_stained_framed_glass_pane createframed:black_stained_framed_glass_door createframed:black_stained_framed_glass_trapdoor createframed:black_stained_tiled_glass createframed:black_stained_tiled_glass_pane createframed:black_stained_framed_glass createframed:black_stained_framed_glass_pane createframed:horizontal_black_stained_framed_glass createframed:horizontal_black_stained_framed_glass_pane createframed:vertical_black_stained_framed_glass createframed:vertical_black_stained_framed_glass_pane createframed:brown_stained_framed_glass_door createframed:brown_stained_framed_glass_trapdoor createframed:brown_stained_tiled_glass createframed:brown_stained_tiled_glass_pane createframed:brown_stained_framed_glass createframed:brown_stained_framed_glass_pane createframed:horizontal_brown_stained_framed_glass createframed:horizontal_brown_stained_framed_glass_pane createframed:vertical_brown_stained_framed_glass createframed:vertical_brown_stained_framed_glass_pane createframed:red_stained_framed_glass_door createframed:red_stained_framed_glass_trapdoor createframed:red_stained_tiled_glass createframed:red_stained_tiled_glass_pane createframed:red_stained_framed_glass createframed:red_stained_framed_glass_pane createframed:horizontal_red_stained_framed_glass createframed:horizontal_red_stained_framed_glass_pane createframed:vertical_red_stained_framed_glass createframed:vertical_red_stained_framed_glass_pane createframed:orange_stained_framed_glass_door createframed:orange_stained_framed_glass_trapdoor createframed:orange_stained_tiled_glass createframed:orange_stained_tiled_glass_pane createframed:orange_stained_framed_glass createframed:orange_stained_framed_glass_pane createframed:horizontal_orange_stained_framed_glass createframed:horizontal_orange_stained_framed_glass_pane createframed:vertical_orange_stained_framed_glass createframed:vertical_orange_stained_framed_glass_pane createframed:yellow_stained_framed_glass_door createframed:yellow_stained_framed_glass_trapdoor createframed:yellow_stained_tiled_glass createframed:yellow_stained_tiled_glass_pane createframed:yellow_stained_framed_glass createframed:yellow_stained_framed_glass_pane createframed:horizontal_yellow_stained_framed_glass createframed:horizontal_yellow_stained_framed_glass_pane createframed:vertical_yellow_stained_framed_glass createframed:vertical_yellow_stained_framed_glass_pane createframed:lime_stained_framed_glass_door createframed:lime_stained_framed_glass_trapdoor createframed:lime_stained_tiled_glass createframed:lime_stained_tiled_glass_pane createframed:lime_stained_framed_glass createframed:lime_stained_framed_glass_pane createframed:horizontal_lime_stained_framed_glass createframed:horizontal_lime_stained_framed_glass_pane createframed:vertical_lime_stained_framed_glass createframed:vertical_lime_stained_framed_glass_pane createframed:green_stained_framed_glass_door createframed:green_stained_framed_glass_trapdoor createframed:green_stained_tiled_glass createframed:green_stained_tiled_glass_pane createframed:green_stained_framed_glass createframed:green_stained_framed_glass_pane createframed:horizontal_green_stained_framed_glass createframed:horizontal_green_stained_framed_glass_pane createframed:vertical_green_stained_framed_glass createframed:vertical_green_stained_framed_glass_pane createframed:cyan_stained_framed_glass_door createframed:cyan_stained_framed_glass_trapdoor createframed:cyan_stained_tiled_glass createframed:cyan_stained_tiled_glass_pane createframed:cyan_stained_framed_glass createframed:cyan_stained_framed_glass_pane createframed:horizontal_cyan_stained_framed_glass createframed:horizontal_cyan_stained_framed_glass_pane createframed:vertical_cyan_stained_framed_glass createframed:vertical_cyan_stained_framed_glass_pane createframed:light_blue_stained_framed_glass_door createframed:light_blue_stained_framed_glass_trapdoor createframed:light_blue_stained_tiled_glass createframed:light_blue_stained_tiled_glass_pane createframed:light_blue_stained_framed_glass createframed:light_blue_stained_framed_glass_pane createframed:horizontal_light_blue_stained_framed_glass createframed:horizontal_light_blue_stained_framed_glass_pane createframed:vertical_light_blue_stained_framed_glass createframed:vertical_light_blue_stained_framed_glass_pane createframed:blue_stained_framed_glass_door createframed:blue_stained_framed_glass_trapdoor createframed:blue_stained_tiled_glass createframed:blue_stained_tiled_glass_pane createframed:blue_stained_framed_glass createframed:blue_stained_framed_glass_pane createframed:horizontal_blue_stained_framed_glass createframed:horizontal_blue_stained_framed_glass_pane createframed:vertical_blue_stained_framed_glass createframed:vertical_blue_stained_framed_glass_pane createframed:purple_stained_framed_glass_door createframed:purple_stained_framed_glass_trapdoor createframed:purple_stained_tiled_glass createframed:purple_stained_tiled_glass_pane createframed:purple_stained_framed_glass createframed:purple_stained_framed_glass_pane createframed:horizontal_purple_stained_framed_glass createframed:horizontal_purple_stained_framed_glass_pane createframed:vertical_purple_stained_framed_glass createframed:vertical_purple_stained_framed_glass_pane createframed:magenta_stained_framed_glass_door createframed:magenta_stained_framed_glass_trapdoor createframed:magenta_stained_tiled_glass createframed:magenta_stained_tiled_glass_pane createframed:magenta_stained_framed_glass createframed:magenta_stained_framed_glass_pane createframed:horizontal_magenta_stained_framed_glass createframed:horizontal_magenta_stained_framed_glass_pane createframed:vertical_magenta_stained_framed_glass createframed:vertical_magenta_stained_framed_glass_pane createframed:pink_stained_framed_glass_door createframed:pink_stained_framed_glass_trapdoor createframed:pink_stained_tiled_glass createframed:pink_stained_tiled_glass_pane createframed:pink_stained_framed_glass createframed:pink_stained_framed_glass_pane createframed:horizontal_pink_stained_framed_glass createframed:horizontal_pink_stained_framed_glass_pane createframed:vertical_pink_stained_framed_glass createframed:vertical_pink_stained_framed_glass_pane # EMMISIVE (LIKE GLOWSTONE) - block.10089 = glowstone shroomlight torch wall_torch redstone_torch redstone_wall_torch jack_o_lantern redstone_lamp lantern sea_lantern soul_lantern soul_torch soul_wall_torch + block.10089 = ochre_froglight verdant_froglight pearlescent_froglight glowstone shroomlight torch wall_torch redstone_torch redstone_wall_torch jack_o_lantern redstone_lamp lantern sea_lantern soul_lantern soul_torch soul_wall_torch cataclysm:void_lantern_block deeperdarker:sculk_gleam # NEW EMMISIVE block.10090 = magma_block end_root campfire:lit=true soul_campfire:lit=true beacon betterendforge:mossy_glowshroom_hymenophore betterendforge:mossy_glowshroom_fur betterendforge:blue_vine_lantern betterendforge:blue_vine_fur betterendforge::lumecorn:shape=light_top_middle betterendforge::lumecorn:shape=light_middle betterendforge::lumecorn:shape=light_bottom betterendforge::purple_polypore betterendforge::bulb_vine:shape=bottom @@ -34,13 +34,13 @@ block.10213 = soul_fire # METAL-LIKE - block.10400 = iron_block iron_trapdoor gold_block emerald_block lapis_block diamond_block copper_block exposed_copper weathered_copper oxidized_copper cut_copper exposed_cut_copper weathered_cut_copper oxidized_cut_copper cut_copper_stairs exposed_cut_copper_stairs weathered_cut_copper_stairs oxidized_cut_copper_stairs cut_copper_slab exposed_cut_copper_slab weathered_cut_copper_slab oxidized_cut_copper_slab waxed_cut_copper_slab waxed_weathered_cut_copper_slab waxed_weathered_copper waxed_exposed_copper waxed_copper_block waxed_oxidized_cut_copper_slab waxed_weathered_cut_copper_slab waxed_exposed_cut_copper_slab waxed_cuyt_copper_slab waxed_oxidized_copper waxed_cut_copper waxed_exposed_cut_copper waxed_weathered_cut_copper waxed_oxidized_cut_copper waxed_cut_copper_stairs waxed_exposed_cut_copper_stairs waxed_weathered_cut_copper_stairs waxed_oxidized_cut_copper_stairs heavy_weighted_pressure_plate light_weighted_pressure_plate + block.10400 = iron_block iron_trapdoor gold_block emerald_block lapis_block diamond_block copper_block exposed_copper weathered_copper oxidized_copper cut_copper exposed_cut_copper weathered_cut_copper oxidized_cut_copper cut_copper_stairs exposed_cut_copper_stairs weathered_cut_copper_stairs oxidized_cut_copper_stairs cut_copper_slab exposed_cut_copper_slab weathered_cut_copper_slab oxidized_cut_copper_slab waxed_cut_copper_slab waxed_weathered_cut_copper_slab waxed_weathered_copper waxed_exposed_copper waxed_copper_block waxed_oxidized_cut_copper_slab waxed_weathered_cut_copper_slab waxed_exposed_cut_copper_slab waxed_cuyt_copper_slab waxed_oxidized_copper waxed_cut_copper waxed_exposed_cut_copper waxed_weathered_cut_copper waxed_oxidized_cut_copper waxed_cut_copper_stairs waxed_exposed_cut_copper_stairs waxed_weathered_cut_copper_stairs waxed_oxidized_cut_copper_stairs heavy_weighted_pressure_plate light_weighted_pressure_plate iron_bars tfc:metal/anvil/bismuth tfc:metal/block/bismuth tfc:metal/bars/bismuth tfc:metal/trapdoor/bismuth tfc:metal/block/bismuth_stairs tfc:block/metal/block/bismuth_slab tfc:block/metal/block/bismuth_slab_top tfc:metal/anvil/bismuth_bronze tfc:metal/block/bismuth_bronze tfc:metal/bars/bismuth_bronze tfc:metal/trapdoor/bismuth_bronze tfc:metal/block/bismuth_bronze_stairs tfc:block/metal/block/bismuth_bronze_slab tfc:block/metal/block/bismuth_bronze_slab_top tfc:metal/anvil/black_bronze tfc:metal/block/black_bronze tfc:metal/bars/black_bronze tfc:metal/trapdoor/black_bronze tfc:metal/block/black_bronze_stairs tfc:block/metal/block/black_bronze_slab tfc:block/metal/block/black_bronze_slab_top tfc:metal/anvil/bronze tfc:metal/block/bronze tfc:metal/bars/bronze tfc:metal/trapdoor/bronze tfc:metal/block/bronze_stairs tfc:block/metal/block/bronze_slab tfc:block/metal/block/bronze_slab_top tfc:metal/anvil/brass tfc:metal/block/brass tfc:metal/bars/brass tfc:metal/trapdoor/brass tfc:metal/block/brass_stairs tfc:block/metal/block/brass_slab tfc:block/metal/block/brass_slab_top tfc:metal/anvil/copper tfc:metal/block/copper tfc:metal/bars/copper tfc:metal/trapdoor/copper tfc:metal/block/copper_stairs tfc:block/metal/block/copper_slab tfc:block/metal/block/copper_slab_top tfc:metal/anvil/gold tfc:metal/block/gold tfc:metal/bars/gold tfc:metal/trapdoor/gold tfc:metal/block/gold_stairs tfc:block/metal/block/gold_slab tfc:block/metal/block/gold_slab_top tfc:metal/anvil/nickel tfc:metal/block/nickel tfc:metal/bars/nickel tfc:metal/trapdoor/nickel tfc:metal/block/nickel_stairs tfc:block/metal/block/nickel_slab tfc:block/metal/block/nickel_slab_top tfc:metal/anvil/rose_gold tfc:metal/block/rose_gold tfc:metal/bars/rose_gold tfc:metal/trapdoor/rose_gold tfc:metal/block/rose_gold_stairs tfc:block/metal/block/rose_gold_slab tfc:block/metal/block/rose_gold_slab_top tfc:metal/anvil/silver tfc:metal/block/silver tfc:metal/bars/silver tfc:metal/trapdoor/silver tfc:metal/block/silver_stairs tfc:block/metal/block/silver_slab tfc:block/metal/block/silver_slab_top tfc:metal/anvil/tin tfc:metal/block/tin tfc:metal/bars/tin tfc:metal/trapdoor/tin tfc:metal/block/tin_stairs tfc:block/metal/block/tin_slab tfc:block/metal/block/tin_slab_top tfc:metal/anvil/zinc tfc:metal/block/zinc tfc:metal/bars/zinc tfc:metal/trapdoor/zinc tfc:metal/block/zinc_stairs tfc:block/metal/block/zinc_slab tfc:block/metal/block/zinc_slab_top tfc:metal/anvil/sterling_silver tfc:metal/block/sterling_silver tfc:metal/bars/sterling_silver tfc:metal/trapdoor/sterling_silver tfc:metal/block/sterling_silver_stairs tfc:block/metal/block/sterling_silver_slab tfc:block/metal/block/sterling_silver_slab_top tfc:metal/anvil/wrought_iron tfc:metal/block/wrought_iron tfc:metal/bars/wrought_iron tfc:metal/trapdoor/wrought_iron tfc:metal/block/wrought_iron_stairs tfc:block/metal/block/wrought_iron_slab tfc:block/metal/block/wrought_iron_slab_top tfc:metal/anvil/cast_iron tfc:metal/block/cast_iron tfc:metal/bars/cast_iron tfc:metal/trapdoor/cast_iron tfc:metal/block/cast_iron_stairs tfc:block/metal/block/cast_iron_slab tfc:block/metal/block/cast_iron_slab_top tfc:metal/anvil/pig_iron tfc:metal/block/pig_iron tfc:metal/bars/pig_iron tfc:metal/trapdoor/pig_iron tfc:metal/block/pig_iron_stairs tfc:block/metal/block/pig_iron_slab tfc:block/metal/block/pig_iron_slab_top tfc:metal/anvil/steel tfc:metal/block/steel tfc:metal/bars/steel tfc:metal/trapdoor/steel tfc:metal/block/steel_stairs tfc:block/metal/block/steel_slab tfc:block/metal/block/steel_slab_top tfc:metal/anvil/black_steel tfc:metal/block/black_steel tfc:metal/bars/black_steel tfc:metal/trapdoor/black_steel tfc:metal/block/black_steel_stairs tfc:block/metal/block/black_steel_slab tfc:block/metal/block/black_steel_slab_top tfc:metal/anvil/blue_steel tfc:metal/block/blue_steel tfc:metal/bars/blue_steel tfc:metal/trapdoor/blue_steel tfc:metal/block/blue_steel_stairs tfc:block/metal/block/blue_steel_slab tfc:block/metal/block/blue_steel_slab_top tfc:metal/anvil/red_steel tfc:metal/block/red_steel tfc:metal/bars/red_steel tfc:metal/trapdoor/red_steel tfc:metal/block/red_steel_stairs tfc:block/metal/block/red_steel_slab tfc:block/metal/block/red_steel_slab_top tfc:metal/anvil/weak_steel tfc:metal/block/weak_steel tfc:metal/bars/weak_steel tfc:metal/trapdoor/weak_steel tfc:metal/block/weak_steel_stairs tfc:block/metal/block/weak_steel_slab tfc:block/metal/block/weak_steel_slab_top tfc:metal/anvil/weak_blue_steel tfc:metal/block/weak_blue_steel tfc:metal/bars/weak_blue_steel tfc:metal/trapdoor/weak_blue_steel tfc:metal/block/weak_blue_steel_stairs tfc:block/metal/block/weak_blue_steel_slab tfc:block/metal/block/weak_blue_steel_slab_top tfc:metal/anvil/weak_red_steel tfc:metal/block/weak_red_steel tfc:metal/bars/weak_red_steel tfc:metal/trapdoor/weak_red_steel tfc:metal/block/weak_red_steel_stairs tfc:block/metal/block/weak_red_steel_slab tfc:block/metal/block/weak_red_steel_slab_top tfc:metal/anvil/high_carbon_steel tfc:metal/block/high_carbon_steel tfc:metal/bars/high_carbon_steel tfc:metal/trapdoor/high_carbon_steel tfc:metal/block/high_carbon_steel_stairs tfc:block/metal/block/high_carbon_steel_slab tfc:block/metal/block/high_carbon_steel_slab_top tfc:metal/anvil/high_carbon_black_steel tfc:metal/block/high_carbon_black_steel tfc:metal/bars/high_carbon_black_steel tfc:metal/trapdoor/high_carbon_black_steel tfc:metal/block/high_carbon_black_steel_stairs tfc:block/metal/block/high_carbon_black_steel_slab tfc:block/metal/block/high_carbon_black_steel_slab_top tfc:metal/anvil/high_carbon_blue_steel tfc:metal/block/high_carbon_blue_steel tfc:metal/bars/high_carbon_blue_steel tfc:metal/trapdoor/high_carbon_blue_steel tfc:metal/block/high_carbon_blue_steel_stairs tfc:block/metal/block/high_carbon_blue_steel_slab tfc:block/metal/block/high_carbon_blue_steel_slab_top tfc:metal/anvil/high_carbon_red_steel tfc:metal/block/high_carbon_red_steel tfc:metal/bars/high_carbon_red_steel tfc:metal/trapdoor/high_carbon_red_steel tfc:metal/block/high_carbon_red_steel_stairs tfc:block/metal/block/high_carbon_red_steel_slab tfc:block/metal/block/high_carbon_red_steel_slab_top tfc:metal/anvil/bismuth tfc:metal/block/bismuth tfc:metal/bars/bismuth tfc:metal/trapdoor/bismuth tfc:metal/block/bismuth_stairs tfc:block/metal/block/bismuth_slab tfc:block/metal/block/bismuth_slab_top create:copper_ladder create:brass_ladder create:copper_scaffolding create:brass_scaffolding create:brass_block create:copper_bars create:brass_bars create:smart_chute create:fluid_tank create:steam_whistle create:steam_engine create:spout create:hose_pulley create:item_drain create:train_casing create:smart_fluid_pipe create:fluid_pipe create:mechanical_pump create:copper_valve_handle create:fluid_valve create:mechanical_crafter create:sequenced_gearshift create:flywheel create:rotation_speed_controller create:mechanical_arm create:railway_casing create:controls create:brass_funnel create:brass_tunnel create:content_observer create:stockpile_switch create:redstone_link create:pulse_repeater create:pulse_extender create:peculiar_bell create_jetpack:jetpack create_enchantment_industry:printer create_enchantment_industry:disenchanter cataclysm:ancient_metal_block cataclysm:cursium_block cataclysm:enderite_block cataclysm:witherite_block cataclysm:ignitium_block cataclysm:mechanical_fusion_anvil cataclysm:emp cataclysm:black_steel_block create_dd:furnace_engine create_dd:bore_block create_dd:industrial_fan create_dd:hydraulic_press create_dd:item_stockpile create_dd:fluid_reservoir create_dd:dark_metal_block create_dd:dark_metal_plating create_dd:dark_metal_block_slab create_dd:dark_metal_block_stairs create_dd:dark_metal_bricks create_dd:dark_metal_brick_slab create_dd:dark_metal_brick_stairs create:zinc_block create:industrial_iron_block create:train_door create:chute create:item_vault create:haunted_bell minecraft:netherite_block create_jetpack:netherite_jetpack createutilities:void_steel_block createutilities:void_steel_scaffolding createutilities:void_casing createutilities:void_steel_bars createutilities:void_steel_ladder createutilities:void_motor createutilities:void_chest createutilities:void_tank createutilities:void_battery railways:smokestack_caboosestyle railways:smokestack_long railways:smokestack_coalburner railways:smokestack_oilburner railways:smokestack_streamlined railways:smokestack_woodburner railways:fuel_tank railways:portable_fuel_interface create_power_loader:empty_brass_chunk_loader create_power_loader:brass_chunk_loader create_connected:empty_fan_catalyst create_connected:fan_blasting_catalyst create_connected:fan_smoking_catalyst create_connected:fan_splashing_catalyst create_connected:fan_haunting_catalyst create_connected:sequenced_pulse_generator create_connected:item_silo create_things_and_misc:card_reader create_things_and_misc:card_press create_things_and_misc:sprinkler create_things_and_misc:brass_tiles create_things_and_misc:brass_tiles_slab create_things_and_misc:brass_tiles_stair create_things_and_misc:brass_bricks create_things_and_misc:brass_brick_slab create_things_and_misc:brass_brick_stairs vintageimprovements:vanadium_block createcasing:brass_shaft createcasing:creative_casing create_dd:stargaze_singularity_scaffolding create_dd:stargaze_singularity_block create_dd:stargaze_singularity_casing create_dd:mithril_scaffolding create_dd:mithril_block create_dd:mithril_casing create_dd:bronze_scaffolding create_dd:bronze_block create_dd:bronze_casing create_dd:steel_scaffolding create_dd:steel_block create_dd:steel_casing create_dd:industrial_iron_block create_dd:industrial_casing create_dd:tin_scaffolding create_dd:tin_block create_dd:chromatic_block create_dd:refined_radiance_scaffolding create_dd:refined_radiance_block create_dd:refined_radiance_casing create_dd:shadow_steel_scaffolding create_dd:shadow_steel_block create_dd:shadow_steel_casing create_dd:blaze_gold_scaffolding create_dd:blaze_gold_block create_dd:blaze_gold_casing create_dd:hydraulic_scaffolding create_dd:hydraulic_casing create_dd:overburden_scaffolding create_dd:overburden_casing create_dd:train_scaffolding create_dd:zinc_scaffolding create_dd:industrial_scaffolding create_dd:netherite_scaffolding create_dd:bronze_saw create_dd:bronze_drill createbigcannons:big_cartridge createbigcannons:cast_iron_block createbigcannons:nethersteel_block createbigcannons:basin_foundry_lid createbigcannons:wrought_iron_drop_mortar_end createbigcannons:wrought_iron_cannon_end createbigcannons:wrought_iron_cannon_chamber create_dd:flywheel railways:slashed_locometal railways:riveted_locometal railways:locometal_pillar railways:locometal_smokebox railways:plated_locometal railways:flat_slashed_locometal railways:flat_riveted_locometal railways:brass_wrapped_locometal railways:copper_wrapped_locometal railways:iron_wrapped_locometal railways:locometal_boiler railways:brass_wrapped_locometal_boiler railways:copper_wrapped_locometal_boiler railways:iron_wrapped_locometal_boiler railways:white_slashed_locometal railways:white_riveted_locometal railways:white_locometal_pillar railways:white_locometal_smokebox railways:white_plated_locometal railways:white_flat_slashed_locometal railways:white_flat_riveted_locometal railways:white_brass_wrapped_locometal railways:white_copper_wrapped_locometal railways:white_iron_wrapped_locometal railways:white_locometal_boiler railways:white_brass_wrapped_locometal_boiler railways:white_copper_wrapped_locometal_boiler railways:white_iron_wrapped_locometal_boiler railways:light_gray_slashed_locometal railways:light_gray_riveted_locometal railways:light_gray_locometal_pillar railways:light_gray_locometal_smokebox railways:light_gray_plated_locometal railways:light_gray_flat_slashed_locometal railways:light_gray_flat_riveted_locometal railways:light_gray_brass_wrapped_locometal railways:light_gray_copper_wrapped_locometal railways:light_gray_iron_wrapped_locometal railways:light_gray_locometal_boiler railways:light_gray_brass_wrapped_locometal_boiler railways:light_gray_copper_wrapped_locometal_boiler railways:light_gray_iron_wrapped_locometal_boiler railways:gray_slashed_locometal railways:gray_riveted_locometal railways:gray_locometal_pillar railways:gray_locometal_smokebox railways:gray_plated_locometal railways:gray_flat_slashed_locometal railways:gray_flat_riveted_locometal railways:gray_brass_wrapped_locometal railways:gray_copper_wrapped_locometal railways:gray_iron_wrapped_locometal railways:gray_locometal_boiler railways:gray_brass_wrapped_locometal_boiler railways:gray_copper_wrapped_locometal_boiler railways:gray_iron_wrapped_locometal_boiler railways:black_slashed_locometal railways:black_riveted_locometal railways:black_locometal_pillar railways:black_locometal_smokebox railways:black_plated_locometal railways:black_flat_slashed_locometal railways:black_flat_riveted_locometal railways:black_brass_wrapped_locometal railways:black_copper_wrapped_locometal railways:black_iron_wrapped_locometal railways:black_locometal_boiler railways:black_brass_wrapped_locometal_boiler railways:black_copper_wrapped_locometal_boiler railways:black_iron_wrapped_locometal_boiler railways:brown_slashed_locometal railways:brown_riveted_locometal railways:brown_locometal_pillar railways:brown_locometal_smokebox railways:brown_plated_locometal railways:brown_flat_slashed_locometal railways:brown_flat_riveted_locometal railways:brown_brass_wrapped_locometal railways:brown_copper_wrapped_locometal railways:brown_iron_wrapped_locometal railways:brown_locometal_boiler railways:brown_brass_wrapped_locometal_boiler railways:brown_copper_wrapped_locometal_boiler railways:brown_iron_wrapped_locometal_boiler railways:red_slashed_locometal railways:red_riveted_locometal railways:red_locometal_pillar railways:red_locometal_smokebox railways:red_plated_locometal railways:red_flat_slashed_locometal railways:red_flat_riveted_locometal railways:red_brass_wrapped_locometal railways:red_copper_wrapped_locometal railways:red_iron_wrapped_locometal railways:red_locometal_boiler railways:red_brass_wrapped_locometal_boiler railways:red_copper_wrapped_locometal_boiler railways:red_iron_wrapped_locometal_boiler railways:orange_slashed_locometal railways:orange_riveted_locometal railways:orange_locometal_pillar railways:orange_locometal_smokebox railways:orange_plated_locometal railways:orange_flat_slashed_locometal railways:orange_flat_riveted_locometal railways:orange_brass_wrapped_locometal railways:orange_copper_wrapped_locometal railways:orange_iron_wrapped_locometal railways:orange_locometal_boiler railways:orange_brass_wrapped_locometal_boiler railways:orange_copper_wrapped_locometal_boiler railways:orange_iron_wrapped_locometal_boiler railways:yellow_slashed_locometal railways:yellow_riveted_locometal railways:yellow_locometal_pillar railways:yellow_locometal_smokebox railways:yellow_plated_locometal railways:yellow_flat_slashed_locometal railways:yellow_flat_riveted_locometal railways:yellow_brass_wrapped_locometal railways:yellow_copper_wrapped_locometal railways:yellow_iron_wrapped_locometal railways:yellow_locometal_boiler railways:yellow_brass_wrapped_locometal_boiler railways:yellow_copper_wrapped_locometal_boiler railways:yellow_iron_wrapped_locometal_boiler railways:lime_slashed_locometal railways:lime_riveted_locometal railways:lime_locometal_pillar railways:lime_locometal_smokebox railways:lime_plated_locometal railways:lime_flat_slashed_locometal railways:lime_flat_riveted_locometal railways:lime_brass_wrapped_locometal railways:lime_copper_wrapped_locometal railways:lime_iron_wrapped_locometal railways:lime_locometal_boiler railways:lime_brass_wrapped_locometal_boiler railways:lime_copper_wrapped_locometal_boiler railways:lime_iron_wrapped_locometal_boiler railways:green_slashed_locometal railways:green_riveted_locometal railways:green_locometal_pillar railways:green_locometal_smokebox railways:green_plated_locometal railways:green_flat_slashed_locometal railways:green_flat_riveted_locometal railways:green_brass_wrapped_locometal railways:green_copper_wrapped_locometal railways:green_iron_wrapped_locometal railways:green_locometal_boiler railways:green_brass_wrapped_locometal_boiler railways:green_copper_wrapped_locometal_boiler railways:green_iron_wrapped_locometal_boiler railways:cyan_slashed_locometal railways:cyan_riveted_locometal railways:cyan_locometal_pillar railways:cyan_locometal_smokebox railways:cyan_plated_locometal railways:cyan_flat_slashed_locometal railways:cyan_flat_riveted_locometal railways:cyan_brass_wrapped_locometal railways:cyan_copper_wrapped_locometal railways:cyan_iron_wrapped_locometal railways:cyan_locometal_boiler railways:cyan_brass_wrapped_locometal_boiler railways:cyan_copper_wrapped_locometal_boiler railways:cyan_iron_wrapped_locometal_boiler railways:light_blue_slashed_locometal railways:light_blue_riveted_locometal railways:light_blue_locometal_pillar railways:light_blue_locometal_smokebox railways:light_blue_plated_locometal railways:light_blue_flat_slashed_locometal railways:light_blue_flat_riveted_locometal railways:light_blue_brass_wrapped_locometal railways:light_blue_copper_wrapped_locometal railways:light_blue_iron_wrapped_locometal railways:light_blue_locometal_boiler railways:light_blue_brass_wrapped_locometal_boiler railways:light_blue_copper_wrapped_locometal_boiler railways:light_blue_iron_wrapped_locometal_boiler railways:blue_slashed_locometal railways:blue_riveted_locometal railways:blue_locometal_pillar railways:blue_locometal_smokebox railways:blue_plated_locometal railways:blue_flat_slashed_locometal railways:blue_flat_riveted_locometal railways:blue_brass_wrapped_locometal railways:blue_copper_wrapped_locometal railways:blue_iron_wrapped_locometal railways:blue_locometal_boiler railways:blue_brass_wrapped_locometal_boiler railways:blue_copper_wrapped_locometal_boiler railways:blue_iron_wrapped_locometal_boiler railways:purple_slashed_locometal railways:purple_riveted_locometal railways:purple_locometal_pillar railways:purple_locometal_smokebox railways:purple_plated_locometal railways:purple_flat_slashed_locometal railways:purple_flat_riveted_locometal railways:purple_brass_wrapped_locometal railways:purple_copper_wrapped_locometal railways:purple_iron_wrapped_locometal railways:purple_locometal_boiler railways:purple_brass_wrapped_locometal_boiler railways:purple_copper_wrapped_locometal_boiler railways:purple_iron_wrapped_locometal_boiler railways:magenta_slashed_locometal railways:magenta_riveted_locometal railways:magenta_locometal_pillar railways:magenta_locometal_smokebox railways:magenta_plated_locometal railways:magenta_flat_slashed_locometal railways:magenta_flat_riveted_locometal railways:magenta_brass_wrapped_locometal railways:magenta_copper_wrapped_locometal railways:magenta_iron_wrapped_locometal railways:magenta_locometal_boiler railways:magenta_brass_wrapped_locometal_boiler railways:magenta_copper_wrapped_locometal_boiler railways:magenta_iron_wrapped_locometal_boiler railways:pink_slashed_locometal railways:pink_riveted_locometal railways:pink_locometal_pillar railways:pink_locometal_smokebox railways:pink_plated_locometal railways:pink_flat_slashed_locometal railways:pink_flat_riveted_locometal railways:pink_brass_wrapped_locometal railways:pink_copper_wrapped_locometal railways:pink_iron_wrapped_locometal railways:pink_locometal_boiler railways:pink_brass_wrapped_locometal_boiler railways:pink_copper_wrapped_locometal_boiler railways:pink_iron_wrapped_locometal_boiler create:copper_shingles create:copper_shingle_stairs create:copper_shingle_slab create:waxed_copper_shingles create:waxed_copper_shingle_stairs create:waxed_copper_shingle_slab create:exposed_copper_shingles create:exposed_copper_shingle_stairs create:exposed_copper_shingle_slab create:waxed_exposed_copper_shingles create:waxed_exposed_copper_shingle_stairs create:waxed_exposed_copper_shingle_slab create:weathered_copper_shingles create:weathered_copper_shingle_stairs create:weathered_copper_shingle_slab create:waxed_weathered_copper_shingles create:waxed_weathered_copper_shingle_stairs create:waxed_weathered_copper_shingle_slab create:oxidized_copper_shingles create:oxidized_copper_shingle_stairs create:oxidized_copper_shingle_slab create:waxed_oxidized_copper_shingles create:waxed_oxidized_copper_shingle_stairs create:waxed_oxidized_copper_shingle_slab create:copper_tiles create:copper_tile_stairs create:copper_tile_slab create:waxed_copper_tiles create:waxed_copper_tile_stairs create:waxed_copper_tile_slab create:exposed_copper_tiles create:exposed_copper_tile_stairs create:exposed_copper_tile_slab create:waxed_exposed_copper_tiles create:waxed_exposed_copper_tile_stairs create:waxed_exposed_copper_tile_slab create:weathered_copper_tiles create:weathered_copper_tile_stairs create:weathered_copper_tile_slab create:waxed_weathered_copper_tiles create:waxed_weathered_copper_tile_stairs create:waxed_weathered_copper_tile_slab create:oxidized_copper_tiles create:oxidized_copper_tile_stairs create:oxidized_copper_tile_slab create:waxed_oxidized_copper_tiles create:waxed_oxidized_copper_tile_stairs create:waxed_oxidized_copper_tile_slab create_dd:steel_polished_block create_dd:steel_polished_stairs create_dd:steel_polished_slab create_dd:steel_tiled_block create_dd:steel_tiled_stairs create_dd:steel_tiled_slab create_dd:zinc_polished_block create_dd:zinc_polished_stairs create_dd:zinc_polished_slab create_dd:zinc_tiled_block create_dd:zinc_tiled_stairs create_dd:zinc_tiled_slab create_dd:bronze_polished_block create_dd:bronze_polished_stairs create_dd:bronze_polished_slab create_dd:bronze_tiled_block create_dd:bronze_tiled_stairs create_dd:bronze_tiled_slab createbigcannons:cast_iron_sliding_breech createbigcannons:unbored_cast_iron_sliding_breech createbigcannons:incomplete_cast_iron_sliding_breech createbigcannons:cast_iron_quickfiring_breech createbigcannons:cast_iron_screw_breech createbigcannons:unbored_cast_iron_screw_breech createbigcannons:incomplete_cast_iron_screw_breech createbigcannons:cast_iron_cannon_end createbigcannons:cast_iron_autocannon_breech createbigcannons:unbored_cast_iron_autocannon_breech createbigcannons:incomplete_cast_iron_autocannon_breech createbigcannons:cast_iron_autocannon_recoil_spring createbigcannons:unbored_cast_iron_autocannon_recoil_spring createbigcannons:incomplete_cast_iron_autocannon_recoil_spring createbigcannons:cast_iron_autocannon_barrel createbigcannons:unbored_cast_iron_autocannon_barrel createbigcannons:very_small_cast_iron_cannon_layer createbigcannons:small_cast_iron_cannon_layer createbigcannons:medium_cast_iron_cannon_layer createbigcannons:large_cast_iron_cannon_layer createbigcannons:very_large_cast_iron_cannon_layer createbigcannons:unbored_very_small_cast_iron_cannon_layer createbigcannons:unbored_small_cast_iron_cannon_layer createbigcannons:unbored_medium_cast_iron_cannon_layer createbigcannons:unbored_large_cast_iron_cannon_layer createbigcannons:unbored_very_large_cast_iron_cannon_layer createbigcannons:cast_iron_cannon_barrel createbigcannons:built_up_cast_iron_cannon_barrel createbigcannons:cast_iron_cannon_chamber createbigcannons:built_up_cast_iron_cannon_chamber createbigcannons:thick_cast_iron_cannon_chamber createbigcannons:bronze_sliding_breech createbigcannons:unbored_bronze_sliding_breech createbigcannons:incomplete_bronze_sliding_breech createbigcannons:bronze_quickfiring_breech createbigcannons:bronze_screw_breech createbigcannons:unbored_bronze_screw_breech createbigcannons:incomplete_bronze_screw_breech createbigcannons:bronze_cannon_end createbigcannons:bronze_autocannon_breech createbigcannons:unbored_bronze_autocannon_breech createbigcannons:incomplete_bronze_autocannon_breech createbigcannons:bronze_autocannon_recoil_spring createbigcannons:unbored_bronze_autocannon_recoil_spring createbigcannons:incomplete_bronze_autocannon_recoil_spring createbigcannons:bronze_autocannon_barrel createbigcannons:unbored_bronze_autocannon_barrel createbigcannons:very_small_bronze_cannon_layer createbigcannons:small_bronze_cannon_layer createbigcannons:medium_bronze_cannon_layer createbigcannons:large_bronze_cannon_layer createbigcannons:very_large_bronze_cannon_layer createbigcannons:unbored_very_small_bronze_cannon_layer createbigcannons:unbored_small_bronze_cannon_layer createbigcannons:unbored_medium_bronze_cannon_layer createbigcannons:unbored_large_bronze_cannon_layer createbigcannons:unbored_very_large_bronze_cannon_layer createbigcannons:bronze_cannon_barrel createbigcannons:built_up_bronze_cannon_barrel createbigcannons:bronze_cannon_chamber createbigcannons:built_up_bronze_cannon_chamber createbigcannons:thick_bronze_cannon_chamber createbigcannons:steel_sliding_breech createbigcannons:unbored_steel_sliding_breech createbigcannons:incomplete_steel_sliding_breech createbigcannons:steel_quickfiring_breech createbigcannons:steel_screw_breech createbigcannons:unbored_steel_screw_breech createbigcannons:incomplete_steel_screw_breech createbigcannons:steel_cannon_end createbigcannons:steel_autocannon_breech createbigcannons:unbored_steel_autocannon_breech createbigcannons:incomplete_steel_autocannon_breech createbigcannons:steel_autocannon_recoil_spring createbigcannons:unbored_steel_autocannon_recoil_spring createbigcannons:incomplete_steel_autocannon_recoil_spring createbigcannons:steel_autocannon_barrel createbigcannons:unbored_steel_autocannon_barrel createbigcannons:very_small_steel_cannon_layer createbigcannons:small_steel_cannon_layer createbigcannons:medium_steel_cannon_layer createbigcannons:large_steel_cannon_layer createbigcannons:very_large_steel_cannon_layer createbigcannons:unbored_very_small_steel_cannon_layer createbigcannons:unbored_small_steel_cannon_layer createbigcannons:unbored_medium_steel_cannon_layer createbigcannons:unbored_large_steel_cannon_layer createbigcannons:unbored_very_large_steel_cannon_layer createbigcannons:steel_cannon_barrel createbigcannons:built_up_steel_cannon_barrel createbigcannons:steel_cannon_chamber createbigcannons:built_up_steel_cannon_chamber createbigcannons:thick_steel_cannon_chamber createbigcannons:nethersteel_sliding_breech createbigcannons:unbored_nethersteel_sliding_breech createbigcannons:incomplete_nethersteel_sliding_breech createbigcannons:nethersteel_quickfiring_breech createbigcannons:nethersteel_screw_breech createbigcannons:unbored_nethersteel_screw_breech createbigcannons:incomplete_nethersteel_screw_breech createbigcannons:nethersteel_cannon_end createbigcannons:nethersteel_autocannon_breech createbigcannons:unbored_nethersteel_autocannon_breech createbigcannons:incomplete_nethersteel_autocannon_breech createbigcannons:nethersteel_autocannon_recoil_spring createbigcannons:unbored_nethersteel_autocannon_recoil_spring createbigcannons:incomplete_nethersteel_autocannon_recoil_spring createbigcannons:nethersteel_autocannon_barrel createbigcannons:unbored_nethersteel_autocannon_barrel createbigcannons:very_small_nethersteel_cannon_layer createbigcannons:small_nethersteel_cannon_layer createbigcannons:medium_nethersteel_cannon_layer createbigcannons:large_nethersteel_cannon_layer createbigcannons:very_large_nethersteel_cannon_layer createbigcannons:unbored_very_small_nethersteel_cannon_layer createbigcannons:unbored_small_nethersteel_cannon_layer createbigcannons:unbored_medium_nethersteel_cannon_layer createbigcannons:unbored_large_nethersteel_cannon_layer createbigcannons:unbored_very_large_nethersteel_cannon_layer createbigcannons:nethersteel_cannon_barrel createbigcannons:built_up_nethersteel_cannon_barrel createbigcannons:nethersteel_cannon_chamber createbigcannons:built_up_nethersteel_cannon_chamber createbigcannons:thick_nethersteel_cannon_chamber createcasing:brass_mixer createcasing:brass_press createcasing:brass_depot createcasing:copper_mixer createcasing:copper_press createcasing:copper_depot createcasing:railway_gearbox createcasing:railway_encased_chain_drive createcasing:railway_adjustable_chain_gearshift createcasing:railway_mixer createcasing:railway_press createcasing:railway_depot createcasing:creative_gearbox createcasing:creative_encased_chain_drive createcasing:creative_adjustable_chain_gearshift createcasing:creative_mixer createcasing:creative_press createcasing:creative_depot createcasing:industrial_iron_gearbox createcasing:industrial_iron_encased_chain_drive createcasing:industrial_iron_adjustable_chain_gearshift createcasing:industrial_iron_mixer createcasing:industrial_iron_press createcasing:industrial_iron_depot createdeco:brass_coinstack createdeco:brass_bars createdeco:brass_bars_overlay createdeco:brass_mesh_fence createdeco:brass_hull createdeco:brass_catwalk createdeco:brass_catwalk_stairs createdeco:brass_catwalk_railing createdeco:brass_support_wedge createdeco:brass_support createdeco:brass_sheet_metal createdeco:brass_door createdeco:locked_brass_door createdeco:brass_trapdoor createdeco:red_brass_lamp createdeco:green_brass_lamp createdeco:blue_brass_lamp createdeco:yellow_brass_lamp createdeco:iron_coinstack createdeco:iron_bars createdeco:iron_bars_overlay createdeco:iron_mesh_fence createdeco:iron_hull createdeco:iron_catwalk createdeco:iron_catwalk_stairs createdeco:iron_catwalk_railing createdeco:iron_support_wedge createdeco:iron_support createdeco:iron_sheet_metal createdeco:iron_door createdeco:locked_iron_door createdeco:iron_trapdoor createdeco:red_iron_lamp createdeco:green_iron_lamp createdeco:blue_iron_lamp createdeco:yellow_iron_lamp createdeco:copper_coinstack createdeco:copper_bars createdeco:copper_bars_overlay createdeco:copper_mesh_fence createdeco:copper_hull createdeco:copper_catwalk createdeco:copper_catwalk_stairs createdeco:copper_catwalk_railing createdeco:copper_support_wedge createdeco:copper_support createdeco:copper_sheet_metal createdeco:copper_door createdeco:locked_copper_door createdeco:copper_trapdoor createdeco:red_copper_lamp createdeco:green_copper_lamp createdeco:blue_copper_lamp createdeco:yellow_copper_lamp createdeco:industrial_iron_coinstack createdeco:industrial_iron_bars createdeco:industrial_iron_bars_overlay createdeco:industrial_iron_mesh_fence createdeco:industrial_iron_hull createdeco:industrial_iron_catwalk createdeco:industrial_iron_catwalk_stairs createdeco:industrial_iron_catwalk_railing createdeco:industrial_iron_support_wedge createdeco:industrial_iron_support createdeco:industrial_iron_sheet_metal createdeco:industrial_iron_door createdeco:locked_industrial_iron_door createdeco:industrial_iron_trapdoor createdeco:red_industrial_iron_lamp createdeco:green_industrial_iron_lamp createdeco:blue_industrial_iron_lamp createdeco:yellow_industrial_iron_lamp createdeco:zinc_coinstack createdeco:zinc_bars createdeco:zinc_bars_overlay createdeco:zinc_mesh_fence createdeco:zinc_hull createdeco:zinc_catwalk createdeco:zinc_catwalk_stairs createdeco:zinc_catwalk_railing createdeco:zinc_support_wedge createdeco:zinc_support createdeco:zinc_sheet_metal createdeco:zinc_door createdeco:locked_zinc_door createdeco:zinc_trapdoor createdeco:red_zinc_lamp createdeco:green_zinc_lamp createdeco:blue_zinc_lamp createdeco:yellow_zinc_lamp # SAND-LIKE - block.10410 = sand red_sand dirt_path + block.10410 = sand red_sand dirt_path gravel suspicious_gravel suspicious_sand white_concrete_powder light_gray_concrete_powder gray_concrete_powder black_concrete_powder brown_concrete_powder red_concrete_powder orange_concrete_powder yellow_concrete_powder lime_concrete_powder green_concrete_powder cyan_concrete_powder light_blue_concrete_powder blue_concrete_powder purple_concrete_powder magenta_concrete_powder pink_concrete_powder coarse_dirt # FABRIC-LIKE - block.10440 = white_carpet orange_carpet magenta_carpet light_blue_carpet yellow_carpet lime_carpet pink_carpet gray_carpet light_gray_carpet cyan_carpet purple_carpet blue_carpet brown_carpet green_carpet red_carpet black_carpet white_wool orange_wool magenta_wool light_blue_wool yellow_wool lime_wool pink_wool gray_wool light_gray_wool cyan_wool purple_wool blue_wool brown_wool green_wool red_wool black_wool + block.10440 = white_carpet orange_carpet magenta_carpet light_blue_carpet yellow_carpet lime_carpet pink_carpet gray_carpet light_gray_carpet cyan_carpet purple_carpet blue_carpet brown_carpet green_carpet red_carpet black_carpet white_wool orange_wool magenta_wool light_blue_wool yellow_wool lime_wool pink_wool gray_wool light_gray_wool cyan_wool purple_wool blue_wool brown_wool green_wool red_wool black_wool estrogen:moth_wool estrogen:quilted_moth_wool estrogen:moth_wool_carpet estrogen:quilted_moth_wool_carpet farmersdelight:canvas_rug farmersdelight:full_tatami_mat farmersdelight:half_tatami_mat farmersdelight:tatami sophisticated_backpacks:backpack create_dd:blueprint_block create_dd:blueprint_carpet create_dd:mysterious_blueprint_carpet handcrafted:acacia_couch handcrafted:birch_couch handcrafted:bamboo_couch handcrafted:cherry_couch handcrafted:crimson_couch handcrafted:dark_oak_couch handcrafted:jungle_couch handcrafted:mangrove_couch handcrafted:oak_couch handcrafted:spruce_couch handcrafted:warped_couch handcrafted:acacia_fancy_bed handcrafted:birch_fancy_bed handcrafted:bamboo_fancy_bed handcrafted:cherry_fancy_bed handcrafted:crimson_fancy_bed handcrafted:dark_oak_fancy_bed handcrafted:jungle_fancy_bed handcrafted:mangrove_fancy_bed handcrafted:oak_fancy_bed handcrafted:spruce_fancy_bed handcrafted:warped_fancy_bed create:white_seat interiors:white_chair interiors:white_floor_chair create:light_gray_seat interiors:light_gray_chair interiors:light_gray_floor_chair create:gray_seat interiors:gray_chair interiors:gray_floor_chair create:black_seat interiors:black_chair interiors:black_floor_chair create:brown_seat interiors:brown_chair interiors:brown_floor_chair create:red_seat interiors:red_chair interiors:red_floor_chair create:orange_seat interiors:orange_chair interiors:orange_floor_chair create:yellow_seat interiors:yellow_chair interiors:yellow_floor_chair create:lime_seat interiors:lime_chair interiors:lime_floor_chair create:green_seat interiors:green_chair interiors:green_floor_chair create:cyan_seat interiors:cyan_chair interiors:cyan_floor_chair create:light_blue_seat interiors:light_blue_chair interiors:light_blue_floor_chair create:blue_seat interiors:blue_chair interiors:blue_floor_chair create:purple_seat interiors:purple_chair interiors:purple_floor_chair create:magenta_seat interiors:magenta_chair interiors:magenta_floor_chair create:pink_seat interiors:pink_chair interiors:pink_floor_chair #else # WAVING ENTITIES @@ -62,13 +62,13 @@ block.10032 = reeds sugar_cane tube_coral brain_coral fire_coral bubble_coral horn_coral dead_tube_coral dead_brain_coral dead_fire_coral dead_bubble_coral dead_horn_coral tube_coral_fan brain_coral_fan fire_coral_fan bubble_coral_fan horn_coral_fan dead_tube_coral_fan dead_brain_coral_fan dead_fire_coral_fan dead_bubble_coral_fan dead_horn_coral_fan sapling nether_wart # NEW EMMISIVE - block.10090 = magma soul_fire fire flowing_lava lava end_root campfire:lit=true soul_campfire:lit=true beacon betterendforge:mossy_glowshroom_hymenophore betterendforge:mossy_glowshroom_fur betterendforge:blue_vine_lantern betterendforge:blue_vine_fur betterendforge::lumecorn:shape=light_top_middle betterendforge::lumecorn:shape=light_middle betterendforge::lumecorn:shape=light_bottom betterendforge::purple_polypore betterendforge::bulb_vine:shape=bottom + block.10090 = magma fire flowing_lava lava end_root beacon betterendforge:mossy_glowshroom_hymenophore betterendforge:mossy_glowshroom_fur betterendforge:blue_vine_lantern betterendforge:blue_vine_fur betterendforge::lumecorn:shape=light_top_middle betterendforge::lumecorn:shape=light_middle betterendforge::lumecorn:shape=light_bottom betterendforge::purple_polypore betterendforge::bulb_vine:shape=bottom # FAKE EMMISORS block.10213 = soul_fire # METAL-LIKE - block.10400 = iron_block gold_block emerald_block lapis_block diamond_block copper_block exposed_copper weathered_copper oxidized_copper cut_copper exposed_cut_copper weathered_cut_copper oxidized_cut_copper cut_copper_stairs exposed_cut_copper_stairs weathered_cut_copper_stairs oxidized_cut_copper_stairs cut_copper_slab exposed_cut_copper_slab weathered_cut_copper_slab oxidized_cut_copper_slab waxed_cut_copper_slab waxed_weathered_cut_copper_slab waxed_weathered_copper waxed_exposed_copper waxed_copper_block waxed_oxidized_cut_copper_slab waxed_weathered_cut_copper_slab waxed_exposed_cut_copper_slab waxed_cuyt_copper_slab waxed_oxidized_copper waxed_cut_copper waxed_exposed_cut_copper waxed_weathered_cut_copper waxed_oxidized_cut_copper waxed_cut_copper_stairs waxed_exposed_cut_copper_stairs waxed_weathered_cut_copper_stairs waxed_oxidized_cut_copper_stairs + block.10400 = iron_block gold_block emerald_block lapis_block diamond_block # SAND-LIKE block.10410 = sand red_sand dirt_path diff --git a/shaders/common/basic_blocks_fragment.glsl b/shaders/common/basic_blocks_fragment.glsl index e95de96b..fa3ecf69 100644 --- a/shaders/common/basic_blocks_fragment.glsl +++ b/shaders/common/basic_blocks_fragment.glsl @@ -1,14 +1,15 @@ #include "/lib/config.glsl" -/* Config, uniforms, ins, outs */ +/* Uniforms, ins, outs */ varying vec4 tint_color; varying vec2 texcoord; varying vec3 basic_light; -void main() { - vec4 block_color = tint_color; +// MAIN FUNCTION ------------------ - block_color.rgb *= basic_light; +void main() { + vec4 block_color = tint_color; + block_color.rgb *= basic_light; - #include "/src/writebuffers.glsl" + #include "/src/writebuffers.glsl" } diff --git a/shaders/common/basic_blocks_vertex.glsl b/shaders/common/basic_blocks_vertex.glsl index e695394a..3fac7671 100644 --- a/shaders/common/basic_blocks_vertex.glsl +++ b/shaders/common/basic_blocks_vertex.glsl @@ -1,62 +1,59 @@ #include "/lib/config.glsl" +/* Color utils */ + #ifdef THE_END - #include "/lib/color_utils_end.glsl" + #include "/lib/color_utils_end.glsl" #elif defined NETHER - #include "/lib/color_utils_nether.glsl" + #include "/lib/color_utils_nether.glsl" #else - #include "/lib/color_utils.glsl" + #include "/lib/color_utils.glsl" #endif +/* Uniforms */ + uniform float rainStrength; uniform mat4 gbufferProjectionInverse; #if defined SHADOW_CASTING && !defined NETHER - uniform mat4 gbufferModelViewInverse; + uniform mat4 gbufferModelViewInverse; #endif +/* Ins / Outs */ + varying vec4 tint_color; varying vec2 texcoord; varying vec3 basic_light; +/* Utility functions */ + #include "/lib/luma.glsl" #include "/lib/basic_utils.glsl" #if AA_TYPE > 0 - #include "/src/taa_offset.glsl" + #include "/src/taa_offset.glsl" #endif +// MAIN FUNCTION ------------------ + void main() { - #include "/src/basiccoords_vertex.glsl" - #include "/src/position_vertex.glsl" - tint_color = gl_Color; - - // vec2 lmcoord = (gl_TextureMatrix[1] * gl_MultiTexCoord1).xy * 1.0323886639676114; - - // vec2 basic_light_2 = (max(lmcoord, vec2(0.065)) - vec2(0.065)) * 1.06951871657754; - - basic_light = day_blend( - LIGHT_SUNSET_COLOR, - LIGHT_DAY_COLOR, - LIGHT_NIGHT_COLOR - ); - - basic_light = mix( - basic_light, - ZENITH_SKY_RAIN_COLOR * luma(basic_light), - rainStrength - ); - - vec2 illumination = clamp(abs(lmcoord), 0.0, 1.0); // Fix lines without correct illumination data - illumination.y = (max(illumination.y, 0.065) - 0.065) * 1.06951871657754; - - #if defined UNKNOWN_DIM - vec3 candle_color = - CANDLE_BASELIGHT * ((illumination.x * illumination.x) + pow(illumination.x * 1.205, 6.0)) * 2.75; - #else - vec3 candle_color = - CANDLE_BASELIGHT * ((illumination.x * illumination.x) + pow(illumination.x * 1.165, 6.0)); - #endif - - basic_light += candle_color; + #include "/src/basiccoords_vertex.glsl" + #include "/src/position_vertex.glsl" + tint_color = gl_Color; + + basic_light = day_blend(LIGHT_SUNSET_COLOR, LIGHT_DAY_COLOR, LIGHT_NIGHT_COLOR); + basic_light = mix(basic_light, ZENITH_SKY_RAIN_COLOR * luma(basic_light), rainStrength); + + vec2 illumination = clamp(abs(lmcoord), 0.0, 1.0); // Fix lines without correct illumination data + illumination.y = (max(illumination.y, 0.065) - 0.065) * 1.06951871657754; + + #if defined UNKNOWN_DIM + vec3 candle_color = + CANDLE_BASELIGHT * ((illumination.x * illumination.x) + pow(illumination.x * 1.205, 6.0)) * 2.75; + #else + vec3 candle_color = + CANDLE_BASELIGHT * ((illumination.x * illumination.x) + pow(illumination.x * 1.165, 6.0)); + #endif + + basic_light += candle_color; } diff --git a/shaders/common/clouds_blocks_fragment.glsl b/shaders/common/clouds_blocks_fragment.glsl index 25b3e617..4624cfdd 100644 --- a/shaders/common/clouds_blocks_fragment.glsl +++ b/shaders/common/clouds_blocks_fragment.glsl @@ -1,34 +1,38 @@ #include "/lib/config.glsl" -/* Config, uniforms, ins, outs */ +/* Uniforms */ + uniform sampler2D tex; uniform float far; uniform float blindness; #if MC_VERSION >= 11900 - uniform float darknessFactor; - uniform float darknessLightFactor; + uniform float darknessFactor; + uniform float darknessLightFactor; #endif #if V_CLOUDS == 0 || defined UNKNOWN_DIM - uniform float pixel_size_x; - uniform float pixel_size_y; - uniform sampler2D gaux4; + uniform float pixel_size_x; + uniform float pixel_size_y; + uniform sampler2D gaux4; #endif -// Varyings (per thread shared variables) +/* Ins / Outs */ + #if V_CLOUDS == 0 || defined UNKNOWN_DIM - varying vec2 texcoord; - varying vec4 tint_color; + varying vec2 texcoord; + varying vec4 tint_color; #endif +// Main function --------- + void main() { - #if V_CLOUDS == 0 || defined UNKNOWN_DIM - vec4 block_color = texture2D(tex, texcoord) * tint_color; - #include "/src/cloudfinalcolor.glsl" - #include "/src/writebuffers.glsl" - #elif MC_VERSION <= 11300 - vec4 block_color = vec4(0.0); - #include "/src/writebuffers.glsl" - #endif + #if V_CLOUDS == 0 || defined UNKNOWN_DIM + vec4 block_color = texture2D(tex, texcoord) * tint_color; + #include "/src/cloudfinalcolor.glsl" + #include "/src/writebuffers.glsl" + #elif MC_VERSION <= 11300 + vec4 block_color = vec4(0.0); + #include "/src/writebuffers.glsl" + #endif } diff --git a/shaders/common/clouds_blocks_vertex.glsl b/shaders/common/clouds_blocks_vertex.glsl index 1758924f..b6063d27 100644 --- a/shaders/common/clouds_blocks_vertex.glsl +++ b/shaders/common/clouds_blocks_vertex.glsl @@ -1,33 +1,40 @@ #include "/lib/config.glsl" -/* Config, uniforms, ins, outs */ +/* Uniforms */ + uniform mat4 gbufferProjectionInverse; #if V_CLOUDS == 0 || defined UNKNOWN_DIM - uniform float rainStrength; + uniform float rainStrength; #endif #if defined SHADOW_CASTING && !defined NETHER - uniform mat4 gbufferModelViewInverse; + uniform mat4 gbufferModelViewInverse; #endif +/* Ins / Outs */ + #if V_CLOUDS == 0 || defined UNKNOWN_DIM - varying vec2 texcoord; - varying vec4 tint_color; + varying vec2 texcoord; + varying vec4 tint_color; #endif +/* Utility functions */ + #if AA_TYPE > 0 - #include "/src/taa_offset.glsl" + #include "/src/taa_offset.glsl" #endif #if V_CLOUDS == 0 || defined UNKNOWN_DIM - #include "/lib/luma.glsl" + #include "/lib/luma.glsl" #endif +// MAIN FUNCTION ------------------ + void main() { - #if V_CLOUDS == 0 || defined UNKNOWN_DIM - texcoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy; - tint_color = gl_Color; - #endif - #include "/src/position_vertex.glsl" + #if V_CLOUDS == 0 || defined UNKNOWN_DIM + texcoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy; + tint_color = gl_Color; + #endif + #include "/src/position_vertex.glsl" } diff --git a/shaders/common/composite1_fragment.glsl b/shaders/common/composite1_fragment.glsl index e8c25f98..a2c82702 100644 --- a/shaders/common/composite1_fragment.glsl +++ b/shaders/common/composite1_fragment.glsl @@ -1,66 +1,66 @@ -/* Config, uniforms, ins, outs */ #include "/lib/config.glsl" +#ifdef DOF + const bool colortex1MipmapEnabled = true; +#endif + +#ifdef BLOOM + const bool gaux1MipmapEnabled = true; +#endif + +/* Uniforms */ + uniform sampler2D colortex1; uniform sampler2D gaux1; uniform float inv_aspect_ratio; #ifdef DOF - uniform float centerDepthSmooth; - uniform float pixel_size_x; - uniform float pixel_size_y; - uniform float viewWidth; - uniform float viewHeight; - uniform float fov_y_inv; + uniform float centerDepthSmooth; + uniform float pixel_size_x; + uniform float pixel_size_y; + uniform float viewWidth; + uniform float viewHeight; + uniform float fov_y_inv; #endif -#ifdef DOF - const bool colortex1MipmapEnabled = true; -#endif +/* Ins / Outs */ -// Varyings (per thread shared variables) varying vec2 texcoord; #include "/lib/bloom.glsl" +/* Utility functions */ + #if defined BLOOM || defined DOF - #include "/lib/dither.glsl" + #include "/lib/dither.glsl" #endif #ifdef DOF - #include "/lib/blur.glsl" + #include "/lib/blur.glsl" #endif -#ifdef BLOOM - const bool gaux1MipmapEnabled = true; -#endif +// MAIN FUNCTION ------------------ void main() { - vec4 block_color = texture2D(colortex1, texcoord); + vec4 block_color = texture2D(colortex1, texcoord); + + #if defined BLOOM || defined DOF + #if AA_TYPE > 0 + float dither = shifted_eclectic_r_dither(gl_FragCoord.xy); + #else + float dither = semiblue(gl_FragCoord.xy); + #endif + #endif + + #ifdef DOF + block_color.rgb = noised_blur(block_color, colortex1, texcoord, DOF_STRENGTH, dither); + #endif - #if defined BLOOM || defined DOF - #if AA_TYPE > 0 - float dither = shifted_eclectic_makeup_dither(gl_FragCoord.xy); - #else - float dither = semiblue(gl_FragCoord.xy); + #ifdef BLOOM + vec3 bloom = mipmap_bloom(gaux1, texcoord, dither); + block_color.rgb += bloom; #endif - #endif - - #ifdef DOF - block_color.rgb = noised_blur( - block_color, - colortex1, - texcoord, - DOF_STRENGTH, - dither - ); - #endif - - #ifdef BLOOM - vec3 bloom = mipmap_bloom(gaux1, texcoord, dither); - block_color.rgb += bloom; - #endif - - /* DRAWBUFFERS:1 */ - gl_FragData[0] = block_color; + + /* DRAWBUFFERS:1 */ + gl_FragData[0] = block_color; } diff --git a/shaders/common/composite1_vertex.glsl b/shaders/common/composite1_vertex.glsl index 7b2940f9..6fadd410 100644 --- a/shaders/common/composite1_vertex.glsl +++ b/shaders/common/composite1_vertex.glsl @@ -1,9 +1,12 @@ #include "/lib/config.glsl" -/* Config, uniforms, ins, outs */ +/* Ins / Outs */ + varying vec2 texcoord; +// MAIN FUNCTION ------------------ + void main() { - gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; - texcoord = gl_MultiTexCoord0.xy; + gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; + texcoord = gl_MultiTexCoord0.xy; } diff --git a/shaders/common/composite2_fragment.glsl b/shaders/common/composite2_fragment.glsl index bfd844b3..ab7e2e40 100644 --- a/shaders/common/composite2_fragment.glsl +++ b/shaders/common/composite2_fragment.glsl @@ -1,100 +1,110 @@ +#include "/lib/config.glsl" + #if MC_VERSION < 11300 - const bool colortex0Clear = false; - const bool colortex1Clear = false; - const bool colortex2Clear = false; - const bool colortex3Clear = false; - const bool gaux1Clear = false; - const bool gaux2Clear = false; - const bool gaux3Clear = false; - const bool gaux4Clear = false; + const bool colortex0Clear = false; + const bool colortex1Clear = false; + const bool colortex2Clear = false; + const bool colortex3Clear = false; + const bool gaux1Clear = false; + const bool gaux2Clear = false; + const bool gaux3Clear = false; + const bool gaux4Clear = false; #endif -/* Config, uniforms, ins, outs */ -#include "/lib/config.glsl" +/* Uniforms */ -// 'Global' constants from system uniform sampler2D colortex1; - #if AA_TYPE > 0 || defined MOTION_BLUR - uniform sampler2D colortex3; // TAA past averages - uniform float pixel_size_x; - uniform float pixel_size_y; - uniform mat4 gbufferProjectionInverse; - uniform mat4 gbufferProjection; - uniform mat4 gbufferModelViewInverse; - uniform vec3 cameraPosition; - uniform vec3 previousCameraPosition; - uniform mat4 gbufferPreviousProjection; - uniform mat4 gbufferPreviousModelView; - uniform sampler2D depthtex0; - uniform float frameTime; + uniform sampler2D colortex3; // TAA past averages + uniform float pixel_size_x; + uniform float pixel_size_y; + uniform mat4 gbufferProjectionInverse; + uniform mat4 gbufferProjection; + uniform mat4 gbufferModelViewInverse; + uniform vec3 cameraPosition; + uniform vec3 previousCameraPosition; + uniform mat4 gbufferPreviousProjection; + uniform mat4 gbufferPreviousModelView; + uniform sampler2D depthtex0; + uniform float frameTime; #endif -// Varyings (per thread shared variables) +/* Ins / Outs */ + varying vec2 texcoord; +/* Utility functions */ + #if AA_TYPE > 0 || defined MOTION_BLUR - #include "/lib/projection_utils.glsl" - #include "/lib/past_projection_utils.glsl" + #include "/lib/projection_utils.glsl" #endif #ifdef MOTION_BLUR - #include "/lib/dither.glsl" - #include "/lib/motion_blur.glsl" + #include "/lib/dither.glsl" + #include "/lib/motion_blur.glsl" #endif #if AA_TYPE > 0 - #include "/lib/luma.glsl" - #include "/lib/fast_taa.glsl" + #include "/lib/luma.glsl" + #include "/lib/fast_taa.glsl" #endif +// MAIN FUNCTION ------------------ + void main() { - vec4 block_color = texture2D(colortex1, texcoord); - - // Precalc past position and velocity - #if AA_TYPE > 0 || defined MOTION_BLUR - // Reproyección del cuadro anterior - float z_depth = texture2D(depthtex0, texcoord).r; - vec2 texcoord_past; - vec3 curr_view_pos; - vec3 curr_feet_player_pos; - vec3 prev_feet_player_pos; - vec3 prev_view_pos; - vec2 final_pos; - - if (z_depth < 0.56) { - texcoord_past = texcoord; - } else { - curr_view_pos = vec3(vec2(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y) * (texcoord * 2.0 - 1.0) + gbufferProjectionInverse[3].xy, gbufferProjectionInverse[3].z); - curr_view_pos /= (gbufferProjectionInverse[2].w * (z_depth * 2.0 - 1.0) + gbufferProjectionInverse[3].w); - curr_feet_player_pos = mat3(gbufferModelViewInverse) * curr_view_pos + gbufferModelViewInverse[3].xyz; - - prev_feet_player_pos = z_depth > 0.56 ? curr_feet_player_pos + cameraPosition - previousCameraPosition : curr_feet_player_pos; - prev_view_pos = mat3(gbufferPreviousModelView) * prev_feet_player_pos + gbufferPreviousModelView[3].xyz; - final_pos = vec2(gbufferPreviousProjection[0].x, gbufferPreviousProjection[1].y) * prev_view_pos.xy + gbufferPreviousProjection[3].xy; - texcoord_past = (final_pos / -prev_view_pos.z) * 0.5 + 0.5; - } - - #endif - - #ifdef MOTION_BLUR - // "Velocidad" - vec2 velocity = texcoord - texcoord_past; - block_color.rgb = motion_blur(block_color.rgb, z_depth, velocity, colortex1); - #endif - - #if AA_TYPE > 0 - #ifdef DOF - block_color = fast_taa_depth(block_color, texcoord_past); + vec4 block_color = texture2D(colortex1, texcoord); + + // Precalc past position and velocity + #if AA_TYPE > 0 || defined MOTION_BLUR + // Retrojection of previous frame + float z_depth = texture2D(depthtex0, texcoord).r; + vec2 texcoord_past; + vec3 curr_view_pos; + vec3 curr_feet_player_pos; + vec3 prev_feet_player_pos; + vec3 prev_view_pos; + vec2 final_pos; + + if(z_depth < 0.56) { + texcoord_past = texcoord; + } else { + curr_view_pos = + vec3(vec2(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y) * (texcoord * 2.0 - 1.0) + gbufferProjectionInverse[3].xy, gbufferProjectionInverse[3].z); + curr_view_pos /= (gbufferProjectionInverse[2].w * (z_depth * 2.0 - 1.0) + gbufferProjectionInverse[3].w); + curr_feet_player_pos = mat3(gbufferModelViewInverse) * curr_view_pos + gbufferModelViewInverse[3].xyz; + + prev_feet_player_pos = + z_depth > 0.56 ? curr_feet_player_pos + cameraPosition - previousCameraPosition : curr_feet_player_pos; + prev_view_pos = mat3(gbufferPreviousModelView) * prev_feet_player_pos + gbufferPreviousModelView[3].xyz; + final_pos = + vec2(gbufferPreviousProjection[0].x, gbufferPreviousProjection[1].y) * prev_view_pos.xy + gbufferPreviousProjection[3].xy; + texcoord_past = (final_pos / -prev_view_pos.z) * 0.5 + 0.5; + } + + #endif + + #ifdef MOTION_BLUR + // "Speed" + vec2 velocity = texcoord - texcoord_past; + block_color.rgb = motion_blur(block_color.rgb, z_depth, velocity, colortex1); + #endif + + #if AA_TYPE > 0 + #ifdef DOF + block_color = fast_taa_depth(block_color, texcoord_past); + #else + block_color.rgb = fast_taa(block_color.rgb, texcoord_past); + #endif + + // Black splat fix test + block_color = clamp(block_color, vec4(0.0), vec4(100.0)); + + /* DRAWBUFFERS:13 */ + gl_FragData[0] = block_color; // colortex1 + gl_FragData[1] = block_color; // To TAA averages #else - block_color.rgb = fast_taa(block_color.rgb, texcoord_past); + /* DRAWBUFFERS:1 */ + gl_FragData[0] = block_color; // colortex1 #endif - /* DRAWBUFFERS:13 */ - gl_FragData[0] = block_color; // colortex1 - gl_FragData[1] = block_color; // To TAA averages - #else - /* DRAWBUFFERS:1 */ - gl_FragData[0] = block_color; // colortex1 - #endif } diff --git a/shaders/common/composite2_vertex.glsl b/shaders/common/composite2_vertex.glsl index ff00cd37..5266c0be 100644 --- a/shaders/common/composite2_vertex.glsl +++ b/shaders/common/composite2_vertex.glsl @@ -1,9 +1,12 @@ #include "/lib/config.glsl" -/* Config, uniforms, ins, outs */ +/* Ins / Outs */ + varying vec2 texcoord; +// MAIN FUNCTION ------------------ + void main() { - gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; - texcoord = gl_MultiTexCoord0.xy; + gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; + texcoord = gl_MultiTexCoord0.xy; } \ No newline at end of file diff --git a/shaders/common/composite_fragment.glsl b/shaders/common/composite_fragment.glsl index d7c9df3f..39aa72ba 100644 --- a/shaders/common/composite_fragment.glsl +++ b/shaders/common/composite_fragment.glsl @@ -1,14 +1,18 @@ -/* Config, uniforms, ins, outs */ #include "/lib/config.glsl" +const bool colortex1MipmapEnabled = true; + +/* Color utils */ #ifdef THE_END - #include "/lib/color_utils_end.glsl" + #include "/lib/color_utils_end.glsl" #elif defined NETHER - #include "/lib/color_utils_nether.glsl" + #include "/lib/color_utils_nether.glsl" #else - #include "/lib/color_utils.glsl" + #include "/lib/color_utils.glsl" #endif +/* Uniforms */ + uniform sampler2D colortex1; uniform float far; uniform float near; @@ -19,270 +23,217 @@ uniform int isEyeInWater; uniform ivec2 eyeBrightnessSmooth; #if MC_VERSION >= 11900 - uniform float darknessFactor; + uniform float darknessFactor; #endif #if VOL_LIGHT == 1 && !defined NETHER - uniform sampler2D depthtex1; - uniform vec3 sunPosition; - uniform vec3 moonPosition; - uniform float light_mix; - uniform mat4 gbufferProjectionInverse; - uniform mat4 gbufferModelViewInverse; - uniform mat4 gbufferModelView; - uniform float vol_mixer; + uniform sampler2D depthtex1; + uniform vec3 sunPosition; + uniform vec3 moonPosition; + uniform float light_mix; + uniform mat4 gbufferProjectionInverse; + uniform mat4 gbufferModelViewInverse; + uniform mat4 gbufferModelView; + uniform float vol_mixer; #endif #if VOL_LIGHT == 2 && defined SHADOW_CASTING && !defined NETHER - uniform float light_mix; - uniform mat4 gbufferProjectionInverse; - uniform mat4 gbufferModelViewInverse; - uniform mat4 gbufferModelView; - uniform float vol_mixer; - uniform vec3 shadowLightPosition; - uniform mat4 shadowModelView; - uniform mat4 shadowProjection; - uniform sampler2DShadow shadowtex1; - - #if defined COLORED_SHADOW - uniform sampler2DShadow shadowtex0; - uniform sampler2D shadowcolor0; - #endif + uniform float light_mix; + uniform mat4 gbufferProjectionInverse; + uniform mat4 gbufferModelViewInverse; + uniform mat4 gbufferModelView; + uniform float vol_mixer; + uniform vec3 shadowLightPosition; + uniform mat4 shadowModelView; + uniform mat4 shadowProjection; + uniform sampler2DShadow shadowtex1; + + #if defined COLORED_SHADOW + uniform sampler2DShadow shadowtex0; + uniform sampler2D shadowcolor0; + #endif #endif +/* Ins / Outs */ + varying vec2 texcoord; varying vec3 direct_light_color; varying float exposure; #if VOL_LIGHT == 1 && !defined NETHER - varying vec3 vol_light_color; - varying vec2 lightpos; - varying vec3 astro_pos; + varying vec3 vol_light_color; + varying vec2 lightpos; + varying vec3 astro_pos; #endif #if VOL_LIGHT == 2 && defined SHADOW_CASTING && !defined NETHER - varying vec3 vol_light_color; + varying vec3 vol_light_color; #endif #if (VOL_LIGHT == 1 && !defined NETHER) || (VOL_LIGHT == 2 && defined SHADOW_CASTING && !defined NETHER) - varying mat4 modeli_times_projectioni; + varying mat4 modeli_times_projectioni; #endif +/* Utility functions */ + #include "/lib/basic_utils.glsl" #include "/lib/depth.glsl" #ifdef BLOOM - #include "/lib/luma.glsl" + #include "/lib/luma.glsl" #endif #if VOL_LIGHT == 1 && !defined NETHER - #include "/lib/dither.glsl" - #include "/lib/volumetric_light.glsl" + #include "/lib/dither.glsl" + #include "/lib/volumetric_light.glsl" #endif #if VOL_LIGHT == 2 && defined SHADOW_CASTING && !defined NETHER - #include "/lib/dither.glsl" - #include "/lib/volumetric_light.glsl" + #include "/lib/dither.glsl" + #include "/lib/volumetric_light.glsl" #endif -#if !defined SIMPLE_AUTOEXP - const bool colortex1MipmapEnabled = true; -#endif +// MAIN FUNCTION ------------------ void main() { - vec4 block_color = texture2D(colortex1, texcoord); - float d = texture2D(depthtex0, texcoord).r; - float linear_d = ld(d); - - vec2 eye_bright_smooth = vec2(eyeBrightnessSmooth); - - // Depth to distance - float screen_distance = - 2.0 * near * far / (far + near - (2.0 * d - 1.0) * (far - near)); - - // "Niebla" submarina - if (isEyeInWater == 1) { - float water_absorption = (1.0 / -((screen_distance * WATER_ABSORPTION) + 1.0)) + 1.0; - - block_color.rgb = mix( - block_color.rgb, - WATER_COLOR * direct_light_color * ((eye_bright_smooth.y * .8 + 48) * 0.004166666666666667), - water_absorption); - - } else if (isEyeInWater == 2) { - block_color = mix( - block_color, - vec4(1.0, .1, 0.0, 1.0), - clamp(sqrt(linear_d * far * 0.125), 0.0, 1.0) - ); - } - - #if MC_VERSION >= 11900 - if ((blindness > .01 || darknessFactor > .01) && linear_d > 0.999) { - block_color.rgb = vec3(0.0); - } - #else - if (blindness > .01 && linear_d > 0.999) { - block_color.rgb = vec3(0.0); - } - #endif - - #if (VOL_LIGHT == 1 && !defined NETHER) || (VOL_LIGHT == 2 && defined SHADOW_CASTING && !defined NETHER) - #if AA_TYPE > 0 - float dither = shifted_eclectic_makeup_dither(gl_FragCoord.xy); - #else - float dither = semiblue(gl_FragCoord.xy); - #endif - #endif - - #if VOL_LIGHT == 1 && !defined NETHER - #if defined THE_END - float vol_light = 0.1; - if (d > 0.9999) { - vol_light = 0.5; - } - #else - float vol_light = ss_godrays(dither); - #endif + vec4 block_color = texture2D(colortex1, texcoord); + float d = texture2D(depthtex0, texcoord).r; + float linear_d = ld(d); - vec4 center_world_pos = - modeli_times_projectioni * (vec4(0.5, 0.5, 1.0, 1.0) * 2.0 - 1.0); - vec3 center_view_vector = normalize(center_world_pos.xyz); - - vec4 world_pos = - modeli_times_projectioni * (vec4(texcoord, 1.0, 1.0) * 2.0 - 1.0); - vec3 view_vector = normalize(world_pos.xyz); - - #if defined THE_END - // Fixed light source position in sky for intensity calculation - vec3 intermediate_vector = normalize((gbufferModelViewInverse * gbufferModelView * vec4(0.0, 0.89442719, 0.4472136, 0.0)).xyz); - float vol_intensity = clamp( - dot( - center_view_vector, - intermediate_vector - ), - 0.0, - 1.0 - ); - - vol_intensity *= clamp( - dot( - view_vector, - intermediate_vector - ), - 0.0, - 1.0 - ); - - vol_intensity *= 0.666; - - block_color.rgb += (vol_light_color * vol_light * vol_intensity * 2.0); - #else - // Light source position for intensity calculation - vec3 intermediate_vector = normalize((gbufferModelViewInverse * vec4(astro_pos, 0.0)).xyz); - float vol_intensity = clamp(dot(center_view_vector, intermediate_vector), 0.0, 1.0); - clamp(dot(center_view_vector, intermediate_vector), 0.0, 1.0); - vol_intensity *= dot( - view_vector, - intermediate_vector - ); - vol_intensity = - pow(clamp(vol_intensity, 0.0, 1.0), vol_mixer) * 0.5 * abs(light_mix * 2.0 - 1.0); - - block_color.rgb = - mix(block_color.rgb, vol_light_color * vol_light, vol_intensity * (vol_light * 0.5 + 0.5) * (1.0 - rainStrength)); - #endif - #endif + vec2 eye_bright_smooth = vec2(eyeBrightnessSmooth); - #if VOL_LIGHT == 2 && defined SHADOW_CASTING && !defined NETHER - #if defined COLORED_SHADOW - vec3 vol_light = get_volumetric_color_light(dither, screen_distance, modeli_times_projectioni); - #else - float vol_light = get_volumetric_light(dither, screen_distance, modeli_times_projectioni); - #endif + // Depth to distance + float screen_distance = linear_d * far; - // Ajuste de intensidad + // Underwater fog + if(isEyeInWater == 1) { + float water_absorption = clamp(-pow((-linear_d + 1.0), (2.0 + (WATER_ABSORPTION * 4.0))) + 1.0, 0.0, 1.0); + + block_color.rgb = + mix(block_color.rgb, WATER_COLOR * direct_light_color * ((eye_bright_smooth.y * .8 + 48) * 0.004166666666666667), water_absorption); - vec4 world_pos = - modeli_times_projectioni * (vec4(texcoord, 1.0, 1.0) * 2.0 - 1.0); - vec3 view_vector = normalize(world_pos.xyz); + } else if(isEyeInWater == 2) { + block_color = mix(block_color, vec4(1.0, .1, 0.0, 1.0), clamp(sqrt(linear_d * far * 0.125), 0.0, 1.0)); + } - #if defined THE_END - // Fixed light source position in sky for intensity calculation - float vol_intensity = - dot( - view_vector, - normalize((gbufferModelViewInverse * gbufferModelView * vec4(0.0, 0.89442719, 0.4472136, 0.0)).xyz) - ); + #if MC_VERSION >= 11900 + if((blindness > .01 || darknessFactor > .01) && linear_d > 0.999) { + block_color.rgb = vec3(0.0); + } #else - // Light source position for intensity calculation - float vol_intensity = - dot( - view_vector, - normalize((gbufferModelViewInverse * vec4(shadowLightPosition, 0.0)).xyz) - ); + if(blindness > .01 && linear_d > 0.999) { + block_color.rgb = vec3(0.0); + } #endif - #if defined THE_END - vol_intensity = - ((square_pow(clamp((vol_intensity + .666667) * 0.6, 0.0, 1.0)) * 0.5)); - block_color.rgb += (vol_light_color * vol_light * vol_intensity * 2.0); - #else - vol_intensity = - pow(clamp((vol_intensity + 0.5) * 0.666666666666666, 0.0, 1.0), vol_mixer) * 0.6 * abs(light_mix * 2.0 - 1.0); + #if (VOL_LIGHT == 1 && !defined NETHER) || (VOL_LIGHT == 2 && defined SHADOW_CASTING && !defined NETHER) + #if AA_TYPE > 0 + float dither = shifted_eclectic_r_dither(gl_FragCoord.xy); + #else + float dither = semiblue(gl_FragCoord.xy); + #endif + #endif - block_color.rgb = - mix(block_color.rgb, vol_light_color * vol_light, vol_intensity * (vol_light * 0.5 + 0.5) * (1.0 - rainStrength)); + #if VOL_LIGHT == 1 && !defined NETHER + #if defined THE_END + float vol_light = 0.1; + if(d > 0.9999) { + vol_light = 0.5; + } + #else + float vol_light = ss_godrays(dither); + #endif + + vec4 center_world_pos = modeli_times_projectioni * (vec4(0.5, 0.5, 1.0, 1.0) * 2.0 - 1.0); + vec3 center_view_vector = normalize(center_world_pos.xyz); + + vec4 world_pos = modeli_times_projectioni * (vec4(texcoord, 1.0, 1.0) * 2.0 - 1.0); + vec3 view_vector = normalize(world_pos.xyz); + + #if defined THE_END + // Fixed light source position in sky for intensity calculation + vec3 intermediate_vector = + normalize((gbufferModelViewInverse * gbufferModelView * vec4(0.0, 0.89442719, 0.4472136, 0.0)).xyz); + float vol_intensity = + clamp(dot(center_view_vector, intermediate_vector), 0.0, 1.0); + + vol_intensity *= clamp(dot(view_vector, intermediate_vector), 0.0, 1.0); + + vol_intensity *= 0.666; + + block_color.rgb += (vol_light_color * vol_light * vol_intensity * 2.0); + #else + // Light source position for depth based godrays intensity calculation + vec3 intermediate_vector = + normalize((gbufferModelViewInverse * vec4(astro_pos, 0.0)).xyz); + float vol_intensity = + clamp(dot(center_view_vector, intermediate_vector), 0.0, 1.0); + vol_intensity *= dot(view_vector, intermediate_vector); + vol_intensity = + pow(clamp(vol_intensity, 0.0, 1.0), vol_mixer) * 0.5 * abs(light_mix * 2.0 - 1.0); + + block_color.rgb = + mix(block_color.rgb, vol_light_color * vol_light, vol_intensity * (vol_light * 0.5 + 0.5) * (1.0 - rainStrength)); + #endif #endif - #endif - - // Dentro de la nieve - #ifdef BLOOM - if (isEyeInWater == 3) { - block_color.rgb = mix( - block_color.rgb, - vec3(0.7, 0.8, 1.0) / exposure, - clamp(screen_distance * .5, 0.0, 1.0) - ); - } - #else - if (isEyeInWater == 3) { - block_color.rgb = mix( - block_color.rgb, - vec3(0.85, 0.9, 0.6), - clamp(screen_distance * .5, 0.0, 1.0) - ); - } - #endif - #ifdef BLOOM - // Bloom source - #ifdef SIMPLE_AUTOEXP - float bloom_luma = - smoothstep(0.825, 1.0, luma(block_color.rgb * exposure)) * 0.4; - #else - float bloom_luma = - smoothstep(0.85, 1.0, luma(block_color.rgb * exposure)) * 0.5; + #if VOL_LIGHT == 2 && defined SHADOW_CASTING && !defined NETHER + #if defined COLORED_SHADOW + vec3 vol_light = get_volumetric_color_light(dither, screen_distance, modeli_times_projectioni); + #else + float vol_light = get_volumetric_light(dither, screen_distance, modeli_times_projectioni); + #endif + + // Volumetric intensity adjustments + + vec4 world_pos = modeli_times_projectioni * (vec4(texcoord, 1.0, 1.0) * 2.0 - 1.0); + vec3 view_vector = normalize(world_pos.xyz); + + #if defined THE_END + // Fixed light source position in sky for volumetrics intensity calculation (The End) + float vol_intensity = dot(view_vector, normalize((gbufferModelViewInverse * gbufferModelView * vec4(0.0, 0.89442719, 0.4472136, 0.0)).xyz)); + #else + // Light source position for volumetrics intensity calculation + float vol_intensity = dot(view_vector, normalize((gbufferModelViewInverse * vec4(shadowLightPosition, 0.0)).xyz)); + #endif + + #if defined THE_END + vol_intensity = + ((square_pow(clamp((vol_intensity + .666667) * 0.6, 0.0, 1.0)) * 0.5)); + block_color.rgb += (vol_light_color * vol_light * vol_intensity * 2.0); + #else + vol_intensity = + pow(clamp((vol_intensity + 0.5) * 0.666666666666666, 0.0, 1.0), vol_mixer) * 0.6 * abs(light_mix * 2.0 - 1.0); + + block_color.rgb = + mix(block_color.rgb, vol_light_color * vol_light, vol_intensity * (vol_light * 0.5 + 0.5) * (1.0 - rainStrength)); + #endif #endif - #if defined SIMPLE_AUTOEXP - /* DRAWBUFFERS:14 */ - gl_FragData[0] = block_color; - gl_FragData[1] = block_color * bloom_luma; + // Dentro de la nieve + #ifdef BLOOM + if(isEyeInWater == 3) { + block_color.rgb = + mix(block_color.rgb, vec3(0.7, 0.8, 1.0) / exposure, clamp(screen_distance * .5, 0.0, 1.0)); + } #else - /* DRAWBUFFERS:146 */ - gl_FragData[0] = block_color; - gl_FragData[1] = block_color * bloom_luma; - gl_FragData[2] = vec4(exposure, 0.0, 0.0, 0.0); + if(isEyeInWater == 3) { + block_color.rgb = + mix(block_color.rgb, vec3(0.85, 0.9, 0.6), clamp(screen_distance * .5, 0.0, 1.0)); + } #endif - #else - #if defined SIMPLE_AUTOEXP - /* DRAWBUFFERS:1 */ - gl_FragData[0] = block_color; + + #ifdef BLOOM + // Bloom source + float bloom_luma = smoothstep(0.85, 1.0, luma(block_color.rgb * exposure)) * 0.5; + + /* DRAWBUFFERS:146 */ + gl_FragData[0] = block_color; + gl_FragData[1] = block_color * bloom_luma; + gl_FragData[2] = vec4(exposure, 0.0, 0.0, 0.0); #else - /* DRAWBUFFERS:16 */ - gl_FragData[0] = block_color; - gl_FragData[1] = vec4(exposure, 0.0, 0.0, 0.0); + /* DRAWBUFFERS:16 */ + gl_FragData[0] = block_color; + gl_FragData[1] = vec4(exposure, 0.0, 0.0, 0.0); #endif - #endif } \ No newline at end of file diff --git a/shaders/common/composite_vertex.glsl b/shaders/common/composite_vertex.glsl index 6e3962fa..f624efb5 100644 --- a/shaders/common/composite_vertex.glsl +++ b/shaders/common/composite_vertex.glsl @@ -1,139 +1,115 @@ -/* Config, uniforms, ins, outs */ #include "/lib/config.glsl" +/* Color utils */ + #ifdef THE_END - #include "/lib/color_utils_end.glsl" + #include "/lib/color_utils_end.glsl" #else - #include "/lib/color_utils.glsl" + #include "/lib/color_utils.glsl" #endif +/* Uniforms */ + uniform float rainStrength; uniform ivec2 eyeBrightnessSmooth; #if (VOL_LIGHT == 1 && !defined NETHER) || (VOL_LIGHT == 2 && defined SHADOW_CASTING && !defined NETHER) - uniform int isEyeInWater; + uniform int isEyeInWater; #endif - #if VOL_LIGHT == 1 && !defined NETHER - uniform float light_mix; - uniform vec3 sunPosition; - uniform vec3 moonPosition; - uniform mat4 gbufferProjection; + uniform float light_mix; + uniform vec3 sunPosition; + uniform vec3 moonPosition; + uniform mat4 gbufferProjection; #endif #if (VOL_LIGHT == 1 && !defined NETHER) || (VOL_LIGHT == 2 && defined SHADOW_CASTING && !defined NETHER) - uniform mat4 gbufferModelViewInverse; - uniform mat4 gbufferProjectionInverse; + uniform mat4 gbufferModelViewInverse; + uniform mat4 gbufferProjectionInverse; #endif -#if !defined SIMPLE_AUTOEXP - uniform sampler2D colortex1; - uniform sampler2D gaux3; - uniform float viewWidth; - uniform float viewHeight; - uniform float frameTime; -#endif +uniform sampler2D colortex1; +uniform sampler2D gaux3; +uniform float viewWidth; +uniform float viewHeight; +uniform float frameTime; + +/* Ins / Outs */ varying vec2 texcoord; varying vec3 direct_light_color; #if (VOL_LIGHT == 1 && !defined NETHER) || (VOL_LIGHT == 2 && defined SHADOW_CASTING && !defined NETHER) - varying vec3 vol_light_color; // Flat + varying vec3 vol_light_color; // Flat #endif varying float exposure; // Flat #if VOL_LIGHT == 1 && !defined NETHER - varying vec2 lightpos; // Flat - varying vec3 astro_pos; // Flat + varying vec2 lightpos; // Flat + varying vec3 astro_pos; // Flat #endif #if (VOL_LIGHT == 1 && !defined NETHER) || (VOL_LIGHT == 2 && defined SHADOW_CASTING && !defined NETHER) - varying mat4 modeli_times_projectioni; + varying mat4 modeli_times_projectioni; #endif +/* Utility functions */ + #include "/lib/luma.glsl" -void main() { - gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; - texcoord = gl_MultiTexCoord0.xy; +// MAIN FUNCTION ------------------ - vec2 eye_bright_smooth = vec2(eyeBrightnessSmooth); +void main() { + gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; + texcoord = gl_MultiTexCoord0.xy; - direct_light_color = day_blend( - LIGHT_SUNSET_COLOR, - LIGHT_DAY_COLOR, - LIGHT_NIGHT_COLOR - ); + vec2 eye_bright_smooth = vec2(eyeBrightnessSmooth); - direct_light_color = mix( - direct_light_color, - ZENITH_SKY_RAIN_COLOR * luma(direct_light_color), - rainStrength - ); + direct_light_color = day_blend(LIGHT_SUNSET_COLOR, LIGHT_DAY_COLOR, LIGHT_NIGHT_COLOR); + direct_light_color = mix(direct_light_color, ZENITH_SKY_RAIN_COLOR * luma(direct_light_color), rainStrength); - // Exposure - #if !defined UNKNOWN_DIM - #if defined SIMPLE_AUTOEXP + // Exposure + #if !defined UNKNOWN_DIM + float mipmap_level = log2(min(viewWidth, viewHeight)) - 1.0; - float exposure_coef = day_blend_float( - EXPOSURE_SUNSET, - EXPOSURE_DAY, - EXPOSURE_NIGHT - ); + vec3 exposure_col = texture2DLod(colortex1, vec2(0.5), mipmap_level).rgb; + exposure_col += texture2DLod(colortex1, vec2(0.25), mipmap_level).rgb; + exposure_col += texture2DLod(colortex1, vec2(0.75), mipmap_level).rgb; + exposure_col += texture2DLod(colortex1, vec2(0.25, 0.75), mipmap_level).rgb; + exposure_col += texture2DLod(colortex1, vec2(0.75, 0.25), mipmap_level).rgb; - float candle_bright = eye_bright_smooth.x * 0.0003125; // (0.004166666666666667 * 0.075) + exposure = clamp(luma(exposure_col), 0.0005, 100.0); - exposure = - ((eye_bright_smooth.y * 0.004166666666666667) * exposure_coef) + candle_bright; + float prev_exposure = texture2D(gaux3, vec2(0.5)).r; - // Map from 1.0 - 0.0 to 1.0 - 3.4 - exposure = (exposure * -2.4) + 3.4; + exposure = (exp(-exposure) * 3.03) + 0.6; + exposure = mix(exposure, prev_exposure, exp(-frameTime * 1.25)); #else - float mipmap_level = log2(min(viewWidth, viewHeight)) - 1.0; + exposure = 1.0; + #endif - vec3 exposure_col = texture2DLod(colortex1, vec2(0.5), mipmap_level).rgb; - exposure_col += texture2DLod(colortex1, vec2(0.25), mipmap_level).rgb; - exposure_col += texture2DLod(colortex1, vec2(0.75), mipmap_level).rgb; - exposure_col += texture2DLod(colortex1, vec2(0.25, 0.75), mipmap_level).rgb; - exposure_col += texture2DLod(colortex1, vec2(0.75, 0.25), mipmap_level).rgb; + #if (VOL_LIGHT == 1 && !defined NETHER) || (VOL_LIGHT == 2 && defined SHADOW_CASTING && !defined NETHER) + float vol_attenuation; + if(isEyeInWater == 0) { + vol_attenuation = 1.0; + } else { + vol_attenuation = 0.1 + (eye_bright_smooth.y * 0.002); + } - exposure = clamp(luma(exposure_col), 0.0005, 100.0); + vol_light_color = day_blend(LIGHT_SUNSET_COLOR, LIGHT_DAY_COLOR, LIGHT_NIGHT_COLOR) * 1.2 * vol_attenuation; + #endif - float prev_exposure = texture2D(gaux3, vec2(0.5)).r; + #if VOL_LIGHT == 1 && !defined NETHER + astro_pos = sunPosition * step(0.5, light_mix) * 2.0 + moonPosition; + vec4 tpos = vec4(astro_pos, 1.0) * gbufferProjection; + tpos = vec4(tpos.xyz / tpos.w, 1.0); + vec2 pos1 = tpos.xy / tpos.z; + lightpos = pos1 * 0.5 + 0.5; + #endif - exposure = (exp(-exposure) * 3.03) + 0.6; - exposure = mix(exposure, prev_exposure, exp(-frameTime * 1.25)); + #if (VOL_LIGHT == 1 && !defined NETHER) || (VOL_LIGHT == 2 && defined SHADOW_CASTING && !defined NETHER) + modeli_times_projectioni = gbufferModelViewInverse * gbufferProjectionInverse; #endif - #else - exposure = 1.0; - #endif - - #if (VOL_LIGHT == 1 && !defined NETHER) || (VOL_LIGHT == 2 && defined SHADOW_CASTING && !defined NETHER) - float vol_attenuation; - if (isEyeInWater == 0) { - vol_attenuation = 1.0; - } else { - vol_attenuation = 0.1 + (eye_bright_smooth.y * 0.002); - } - - vol_light_color = day_blend( - LIGHT_SUNSET_COLOR, - LIGHT_DAY_COLOR, - LIGHT_NIGHT_COLOR - ) * 1.2 * vol_attenuation; - #endif - - #if VOL_LIGHT == 1 && !defined NETHER - astro_pos = sunPosition * step(0.5, light_mix) * 2.0 + moonPosition; - vec4 tpos = vec4(astro_pos, 1.0) * gbufferProjection; - tpos = vec4(tpos.xyz / tpos.w, 1.0); - vec2 pos1 = tpos.xy / tpos.z; - lightpos = pos1 * 0.5 + 0.5; - #endif - - #if (VOL_LIGHT == 1 && !defined NETHER) || (VOL_LIGHT == 2 && defined SHADOW_CASTING && !defined NETHER) - modeli_times_projectioni = gbufferModelViewInverse * gbufferProjectionInverse; - #endif } diff --git a/shaders/common/damage_fragment.glsl b/shaders/common/damage_fragment.glsl index f11f3f40..ebe8c606 100644 --- a/shaders/common/damage_fragment.glsl +++ b/shaders/common/damage_fragment.glsl @@ -1,14 +1,17 @@ -/* Exits */ #include "/lib/config.glsl" -/* Config, uniforms, ins, outs */ +/* Uniforms */ + uniform sampler2D tex; +/* Ins / Outs */ + varying vec2 texcoord; +// MAIN FUNCTION ------------------ + void main() { - // Toma el color puro del bloque - vec4 block_color = texture2D(tex, texcoord); + vec4 block_color = texture2D(tex, texcoord); - #include "/src/writebuffers.glsl" + #include "/src/writebuffers.glsl" } diff --git a/shaders/common/damage_vertex.glsl b/shaders/common/damage_vertex.glsl index c236a6a6..d8ed7e75 100644 --- a/shaders/common/damage_vertex.glsl +++ b/shaders/common/damage_vertex.glsl @@ -1,20 +1,27 @@ #include "/lib/config.glsl" +/* Uniforms */ + uniform mat4 gbufferProjectionInverse; +/* Ins / Outs */ + varying vec2 texcoord; varying float var_fog_frag_coord; +/* Utility functions */ + #if AA_TYPE > 0 - #include "/src/taa_offset.glsl" + #include "/src/taa_offset.glsl" #endif +// MAIN FUNCTION ------------------ + void main() { - texcoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy; + texcoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy; - gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; - vec3 viewPos = gl_Position.xyz / gl_Position.w; - vec4 homopos = gbufferProjectionInverse * vec4(viewPos, 1.0); - viewPos = homopos.xyz / homopos.w; - gl_FogFragCoord = length(viewPos.xyz); + gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; + vec4 homopos = gbufferProjectionInverse * vec4(gl_Position.xyz / gl_Position.w, 1.0); + vec3 viewPos = homopos.xyz / homopos.w; + gl_FogFragCoord = length(viewPos.xyz); } \ No newline at end of file diff --git a/shaders/common/deferred_fragment.glsl b/shaders/common/deferred_fragment.glsl index 7e8328af..e229ab6e 100644 --- a/shaders/common/deferred_fragment.glsl +++ b/shaders/common/deferred_fragment.glsl @@ -1,14 +1,17 @@ -/* Config, uniforms, ins, outs */ #include "/lib/config.glsl" +/* Color utils */ + #ifdef THE_END - #include "/lib/color_utils_end.glsl" + #include "/lib/color_utils_end.glsl" #elif defined NETHER - #include "/lib/color_utils_nether.glsl" + #include "/lib/color_utils_nether.glsl" #else - #include "/lib/color_utils.glsl" + #include "/lib/color_utils.glsl" #endif +/* Uniforms */ + uniform sampler2D colortex1; uniform ivec2 eyeBrightnessSmooth; uniform int isEyeInWater; @@ -19,33 +22,31 @@ uniform float blindness; uniform float rainStrength; uniform sampler2D gaux3; -#if CLOUD_VOL_STYLE == 1 && V_CLOUDS != 0 - uniform sampler2D colortex2; -#elif V_CLOUDS != 0 - uniform sampler2D gaux2; +#if V_CLOUDS != 0 + uniform sampler2D gaux2; #endif #ifdef NETHER - uniform vec3 fogColor; + uniform vec3 fogColor; #endif #if AO == 1 - uniform float inv_aspect_ratio; - uniform float fov_y_inv; + uniform float inv_aspect_ratio; + uniform float fov_y_inv; #endif #if V_CLOUDS != 0 && !defined UNKNOWN_DIM - uniform sampler2D noisetex; - uniform vec3 cameraPosition; - uniform vec3 sunPosition; - - #if defined DISTANT_HORIZONS - uniform sampler2D dhDepthTex0; - uniform float dhNearPlane; - uniform float dhFarPlane; - uniform float viewWidth; - uniform float viewHeight; - #endif + uniform sampler2D noisetex; + uniform vec3 cameraPosition; + uniform vec3 sunPosition; + + #if defined DISTANT_HORIZONS + uniform sampler2D dhDepthTex0; + uniform float dhNearPlane; + uniform float dhFarPlane; + uniform float viewWidth; + uniform float viewHeight; + #endif #endif uniform mat4 gbufferModelViewInverse; @@ -54,164 +55,145 @@ uniform float pixel_size_x; uniform float pixel_size_y; #if AO == 1 || (V_CLOUDS != 0 && !defined UNKNOWN_DIM) - uniform mat4 gbufferProjection; - uniform float frameTimeCounter; + uniform mat4 gbufferProjection; + uniform float frameTimeCounter; #endif +/* Ins / Outs */ + varying vec2 texcoord; varying vec3 up_vec; // Flat #if (V_CLOUDS != 0 && !defined UNKNOWN_DIM) && !defined NO_CLOUDY_SKY - varying float umbral; - varying vec3 cloud_color; - varying vec3 dark_cloud_color; + varying float umbral; + varying vec3 cloud_color; + varying vec3 dark_cloud_color; #endif #if AO == 1 - varying float fog_density_coeff; + varying float fog_density_coeff; #endif +/* Utility functions */ + #include "/lib/depth.glsl" #include "/lib/luma.glsl" #ifdef DISTANT_HORIZONS - #include "/lib/depth_dh.glsl" + #include "/lib/depth_dh.glsl" #endif #if AO == 1 || (V_CLOUDS != 0 && !defined UNKNOWN_DIM) - #include "/lib/dither.glsl" + #include "/lib/dither.glsl" #endif #if AO == 1 - #include "/lib/ao.glsl" + #include "/lib/ao.glsl" #endif #if (V_CLOUDS != 0 && !defined UNKNOWN_DIM) - #include "/lib/projection_utils.glsl" - - #ifdef THE_END - #include "/lib/volumetric_clouds_end.glsl" - #else - #include "/lib/volumetric_clouds.glsl" - #endif - + #include "/lib/projection_utils.glsl" + + #ifdef THE_END + #include "/lib/volumetric_clouds_end.glsl" + #else + #include "/lib/volumetric_clouds.glsl" + #endif #endif +// MAIN FUNCTION ------------------ + void main() { - vec4 block_color = texture2D(colortex1, texcoord); - float d = texture2D(depthtex0, texcoord).r; - float linear_d = ld(d); + vec4 block_color = texture2D(colortex1, texcoord); + float d = texture2D(depthtex0, texcoord).r; + float linear_d = ld(d); - vec2 eye_bright_smooth = vec2(eyeBrightnessSmooth); + vec2 eye_bright_smooth = vec2(eyeBrightnessSmooth); - vec3 view_vector = vec3(1.0); + vec3 view_vector = vec3(1.0); + + #if AO == 1 || (V_CLOUDS != 0 && !defined UNKNOWN_DIM) + #if AA_TYPE > 0 + float dither = shifted_eclectic_r_dither(gl_FragCoord.xy); + #else + float dither = semiblue(gl_FragCoord.xy); + #endif + #endif + + #if (V_CLOUDS != 0 && !defined UNKNOWN_DIM) && !defined NO_CLOUDY_SKY + if(linear_d > 0.9999) { // Only sky + vec4 world_pos = gbufferModelViewInverse * gbufferProjectionInverse * (vec4(texcoord, 1.0, 1.0) * 2.0 - 1.0); + view_vector = normalize(world_pos.xyz); + + #ifdef THE_END + float bright = dot(view_vector, vec3(0.0, 0.89442719, 0.4472136)); + bright = clamp((bright * 2.0) - 1.0, 0.0, 1.0); + bright *= bright * bright * bright; + #else + float bright = dot(view_vector, normalize((gbufferModelViewInverse * vec4(sunPosition, 0.0)).xyz)); + bright = clamp(bright * bright * bright, 0.0, 1.0); + #endif + + #ifdef THE_END + #ifdef END_CLOUDS + block_color.rgb = get_end_cloud(view_vector, block_color.rgb, bright, dither, cameraPosition, CLOUD_STEPS_AVG); + #endif + #else + block_color.rgb = get_cloud(view_vector, block_color.rgb, bright, dither, cameraPosition, CLOUD_STEPS_AVG, umbral, cloud_color, dark_cloud_color); + #endif + } - #if AO == 1 || (V_CLOUDS != 0 && !defined UNKNOWN_DIM) - #if AA_TYPE > 0 - float dither = shifted_eclectic_makeup_dither(gl_FragCoord.xy); #else - float dither = semiblue(gl_FragCoord.xy); + #if defined NETHER + #if !defined DISTANT_HORIZONS + if(linear_d > 0.9999) { // Only sky + block_color = vec4(mix(fogColor * 0.1, vec3(1.0), 0.04), 1.0); + } + #endif + #elif !defined NETHER && !defined THE_END + if(linear_d > 0.9999 && isEyeInWater == 1) { // Only sky and water + vec4 screen_pos = vec4(gl_FragCoord.xy * vec2(pixel_size_x, pixel_size_y), gl_FragCoord.z, 1.0); + vec4 fragposition = gbufferProjectionInverse * (screen_pos * 2.0 - 1.0); + + vec4 world_pos = gbufferModelViewInverse * vec4(fragposition.xyz, 0.0); + view_vector = normalize(world_pos.xyz); + } + #endif #endif - #endif - - #if (V_CLOUDS != 0 && !defined UNKNOWN_DIM) && !defined NO_CLOUDY_SKY - if (linear_d > 0.9999) { // Only sky - vec4 world_pos = - gbufferModelViewInverse * gbufferProjectionInverse * (vec4(texcoord, 1.0, 1.0) * 2.0 - 1.0); - view_vector = normalize(world_pos.xyz); - - #ifdef THE_END - float bright = - dot(view_vector, vec3(0.0, 0.89442719, 0.4472136)); - bright = clamp((bright * 2.0) - 1.0, 0.0, 1.0); - bright *= bright * bright * bright; - #else - float bright = - dot( - view_vector, - normalize((gbufferModelViewInverse * vec4(sunPosition, 0.0)).xyz) - ); - bright = clamp(bright * bright * bright, 0.0, 1.0); - #endif - - #ifdef THE_END - #ifdef END_CLOUDS - // block_color = vec4(ZENITH_DAY_COLOR, 1.0); - block_color.rgb = - get_end_cloud(view_vector, block_color.rgb, bright, dither, cameraPosition, CLOUD_STEPS_AVG); + + #if AO == 1 + // AO distance attenuation + #if defined NETHER + if(NETHER_FOG_DISTANCE == 0) { + linear_d = sqrt(linear_d); + } else { + float screen_distance = 2.0 * near * far / (far + near - (2.0 * d - 1.0) * (far - near)); + linear_d = screen_distance / NETHER_SIGHT; + } #endif - #else - block_color.rgb = - get_cloud(view_vector, block_color.rgb, bright, dither, cameraPosition, CLOUD_STEPS_AVG, umbral, cloud_color, dark_cloud_color); - #endif - } + float ao_att = + pow(clamp(linear_d * 1.6, 0.0, 1.0), mix(fog_density_coeff, 1.0, rainStrength)); - #else - #if defined THE_END - if (linear_d > 0.9999) { // Only sky - // block_color = vec4(ZENITH_DAY_COLOR, 1.0); - } - #elif defined NETHER - #if !defined DISTANT_HORIZONS - if (linear_d > 0.9999) { // Only sky - block_color = vec4(mix(fogColor * 0.1, vec3(1.0), 0.04), 1.0); - } - #endif - #elif !defined NETHER - if (linear_d > 0.9999 && isEyeInWater == 1) { // Only sky and water - vec4 screen_pos = - vec4( - gl_FragCoord.xy * vec2(pixel_size_x, pixel_size_y), - gl_FragCoord.z, - 1.0 - ); - vec4 fragposition = gbufferProjectionInverse * (screen_pos * 2.0 - 1.0); - - vec4 world_pos = gbufferModelViewInverse * vec4(fragposition.xyz, 0.0); - view_vector = normalize(world_pos.xyz); - } - #endif - #endif - - #if AO == 1 - // AO distance attenuation - #if defined NETHER - if (NETHER_FOG_DISTANCE == 0) { - linear_d = sqrt(linear_d); - } else { - float screen_distance = 2.0 * near * far / (far + near - (2.0 * d - 1.0) * (far - near)); - linear_d = screen_distance / NETHER_SIGHT; - } + float final_ao = mix(dbao(dither), 1.0, ao_att); + block_color.rgb *= final_ao; + // block_color = vec4(vec3(final_ao), 1.0); + // block_color = vec4(vec3(linear_d), 1.0); #endif - float ao_att = pow( - clamp(linear_d * 1.6, 0.0, 1.0), - mix(fog_density_coeff, 1.0, rainStrength) - ); - - float final_ao = mix(dbao(dither), 1.0, ao_att); - block_color.rgb *= final_ao; - // block_color = vec4(vec3(final_ao), 1.0); - // block_color = vec4(vec3(linear_d), 1.0); - #endif - - #if defined THE_END || defined NETHER - #define NIGHT_CORRECTION 1.0 - #else - #define NIGHT_CORRECTION day_blend_float(1.0, 1.0, 0.1) - #endif - - // Cielo bajo el agua - if (isEyeInWater == 1) { - if (linear_d > 0.9999) { - block_color.rgb = mix( - NIGHT_CORRECTION * WATER_COLOR * ((eye_bright_smooth.y * .8 + 48) * 0.004166666666666667), - block_color.rgb, - max(clamp(view_vector.y - 0.1, 0.0, 1.0), rainStrength) - ); + + #if defined THE_END || defined NETHER + #define NIGHT_CORRECTION 1.0 + #else + #define NIGHT_CORRECTION day_blend_float(1.0, 1.0, 0.1) + #endif + + // Underwater sky + if(isEyeInWater == 1) { + if(linear_d > 0.9999) { + block_color.rgb = mix(NIGHT_CORRECTION * WATER_COLOR * ((eye_bright_smooth.y * .8 + 48) * 0.004166666666666667), block_color.rgb, max(clamp(view_vector.y - 0.1, 0.0, 1.0), rainStrength)); + } } - } - /* DRAWBUFFERS:14 */ - gl_FragData[0] = vec4(block_color.rgb, d); - gl_FragData[1] = block_color; + /* DRAWBUFFERS:14 */ + gl_FragData[0] = vec4(block_color.rgb, d); + gl_FragData[1] = block_color; } \ No newline at end of file diff --git a/shaders/common/deferred_vertex.glsl b/shaders/common/deferred_vertex.glsl index dc92661c..59515d37 100644 --- a/shaders/common/deferred_vertex.glsl +++ b/shaders/common/deferred_vertex.glsl @@ -1,55 +1,59 @@ -/* Config, uniforms, ins, outs */ #include "/lib/config.glsl" +/* Color utils */ + #ifdef THE_END - #include "/lib/color_utils_end.glsl" + #include "/lib/color_utils_end.glsl" #elif defined NETHER - #include "/lib/color_utils_nether.glsl" + #include "/lib/color_utils_nether.glsl" #else - #include "/lib/color_utils.glsl" + #include "/lib/color_utils.glsl" #endif +/* Uniforms */ uniform mat4 gbufferModelView; #if (V_CLOUDS != 0 && !defined UNKNOWN_DIM) && !defined NO_CLOUDY_SKY - uniform float rainStrength; + uniform float rainStrength; #endif +/* Ins / Outs */ + varying vec2 texcoord; varying vec3 up_vec; #if (V_CLOUDS != 0 && !defined UNKNOWN_DIM) && !defined NO_CLOUDY_SKY - varying float umbral; - varying vec3 cloud_color; - varying vec3 dark_cloud_color; + varying float umbral; + varying vec3 cloud_color; + varying vec3 dark_cloud_color; #endif #if AO == 1 - varying float fog_density_coeff; + varying float fog_density_coeff; #endif +/* Utility functions */ + #if (V_CLOUDS != 0 && !defined UNKNOWN_DIM) && !defined NO_CLOUDY_SKY - #include "/lib/luma.glsl" + #include "/lib/luma.glsl" #endif + // MAIN FUNCTION ------------------ + void main() { - gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; - texcoord = gl_MultiTexCoord0.xy; - up_vec = normalize(gbufferModelView[1].xyz); - - #if AO == 1 - #if (VOL_LIGHT == 1 && !defined NETHER) || (VOL_LIGHT == 2 && defined SHADOW_CASTING && !defined NETHER) - fog_density_coeff = FOG_DENSITY * FOG_ADJUST; - #else - fog_density_coeff = day_blend_float( - FOG_SUNSET, - FOG_DAY, - FOG_NIGHT - ) * FOG_ADJUST; + gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; + texcoord = gl_MultiTexCoord0.xy; + up_vec = normalize(gbufferModelView[1].xyz); + + #if AO == 1 + #if (VOL_LIGHT == 1 && !defined NETHER) || (VOL_LIGHT == 2 && defined SHADOW_CASTING && !defined NETHER) + fog_density_coeff = FOG_DENSITY * FOG_ADJUST; + #else + fog_density_coeff = day_blend_float(FOG_SUNSET, FOG_DAY, FOG_NIGHT) * FOG_ADJUST; + #endif #endif - #endif - #if (V_CLOUDS != 0 && !defined UNKNOWN_DIM) && !defined NO_CLOUDY_SKY - #include "/lib/volumetric_clouds_vertex.glsl" - #endif + #if (V_CLOUDS != 0 && !defined UNKNOWN_DIM) && !defined NO_CLOUDY_SKY + #include "/lib/volumetric_clouds_vertex.glsl" + #endif } \ No newline at end of file diff --git a/shaders/common/final_fragment.glsl b/shaders/common/final_fragment.glsl index 20dac26c..6b35fb9a 100644 --- a/shaders/common/final_fragment.glsl +++ b/shaders/common/final_fragment.glsl @@ -1,4 +1,3 @@ -/* Config, uniforms, ins, outs */ #include "/lib/config.glsl" // Do not remove comments. It works! @@ -57,12 +56,12 @@ const bool gaux2Clear = false; const bool gaux3Clear = false; const bool gaux4Clear = false; -// 'Global' constants from system +/* Uniforms */ #ifdef DEBUG_MODE - uniform sampler2D shadowtex1; - uniform sampler2D shadowcolor0; - uniform sampler2D colortex3; + uniform sampler2D shadowtex1; + uniform sampler2D shadowcolor0; + uniform sampler2D colortex3; #endif uniform sampler2D gaux3; @@ -70,77 +69,82 @@ uniform sampler2D colortex1; uniform float viewWidth; #if AA_TYPE == 3 - uniform float pixel_size_x; - uniform float pixel_size_y; + uniform float pixel_size_x; + uniform float pixel_size_y; #endif -// Varyings (per thread shared variables) +/* Ins / Outs */ + varying vec2 texcoord; varying float exposure; +/* Utility functions */ + #if AA_TYPE == 3 - #include "/lib/post.glsl" + #include "/lib/post.glsl" #endif #include "/lib/basic_utils.glsl" #include "/lib/tone_maps.glsl" #ifdef COLOR_BLINDNESS - #include "/lib/color_blindness.glsl" + #include "/lib/color_blindness.glsl" #endif #if CHROMA_ABER == 1 - #include "/lib/aberration.glsl" + #include "/lib/aberration.glsl" #endif +// MAIN FUNCTION ------------------ + void main() { - #if CHROMA_ABER == 1 - vec3 block_color = color_aberration(); - #else - vec3 block_color = texture2D(colortex1, texcoord).rgb; - #if AA_TYPE == 3 - block_color = sharpen(colortex1, block_color, texcoord); + #if CHROMA_ABER == 1 + vec3 block_color = color_aberration(); + #else + vec3 block_color = texture2D(colortex1, texcoord).rgb; + #if AA_TYPE == 3 + block_color = sharpen(colortex1, block_color, texcoord); + #endif + #endif + + block_color *= vec3(exposure); + + #if defined UNKNOWN_DIM + block_color = custom_sigmoid_alt(block_color); + #else + block_color = custom_sigmoid(block_color); + #endif + + // Color-grading ----- + // DEVELOPER: If your post processing effect only involves the current pixel, + // it can be placed here. For example: + + // Saturation: + // float actual_luma = luma(block_color); + // block_color = mix(vec3(actual_luma), block_color, 1.5); + + // Color-blindness correction + #ifdef COLOR_BLINDNESS + block_color = color_blindness(block_color); + #endif + + #ifdef DEBUG_MODE + // vec3 block_color; + if(texcoord.x < 0.5 && texcoord.y < 0.5) { + block_color = texture2D(shadowtex1, texcoord * 2.0).rrr; + } else if(texcoord.x >= 0.5 && texcoord.y >= 0.5) { + block_color = vec3(texture2D(gaux3, vec2(0.5)).r * 0.25); + } else if(texcoord.x < 0.5 && texcoord.y >= 0.5) { + block_color = texture2D(colortex1, ((texcoord - vec2(0.0, 0.5)) * 2.0)).rgb; + } else if(texcoord.x >= 0.5 && texcoord.y < 0.5) { + block_color = texture2D(shadowcolor0, ((texcoord - vec2(0.5, 0.0)) * 2.0)).rgb; + } else { + block_color = vec3(0.5); + } + + gl_FragData[0] = vec4(block_color, 1.0); + + #else + gl_FragData[0] = vec4(block_color, 1.0); #endif - #endif - - block_color *= vec3(exposure); - - #if defined UNKNOWN_DIM - block_color = custom_sigmoid_alt(block_color); - #else - block_color = custom_sigmoid(block_color); - #endif - - // Color-grading --- - // DEVELOPER: If your post processing effect only involves the current pixel, - // it can be placed here. For example, Saturation: - - // Saturation - // float actual_luma = luma(block_color); - // block_color = mix(vec3(actual_luma), block_color, 1.5); - - // Color-blindness correction - #ifdef COLOR_BLINDNESS - block_color = color_blindness(block_color); - #endif - - #ifdef DEBUG_MODE - // vec3 block_color; - if (texcoord.x < 0.5 && texcoord.y < 0.5) { - block_color = texture2D(shadowtex1, texcoord * 2.0).rrr; - } else if (texcoord.x >= 0.5 && texcoord.y >= 0.5) { - block_color = vec3(texture2D(gaux3, vec2(0.5)).r * 0.25); - } else if (texcoord.x < 0.5 && texcoord.y >= 0.5) { - block_color = texture2D(colortex1, ((texcoord - vec2(0.0, 0.5)) * 2.0)).rgb; - } else if (texcoord.x >= 0.5 && texcoord.y < 0.5) { - block_color = texture2D(shadowcolor0, ((texcoord - vec2(0.5, 0.0)) * 2.0)).rgb; - } else { - block_color = vec3(0.5); - } - - gl_FragColor = vec4(block_color, 1.0); - - #else - gl_FragColor = vec4(block_color, 1.0); - #endif } \ No newline at end of file diff --git a/shaders/common/final_vertex.glsl b/shaders/common/final_vertex.glsl index 43e38399..fb3e3422 100644 --- a/shaders/common/final_vertex.glsl +++ b/shaders/common/final_vertex.glsl @@ -1,55 +1,35 @@ -/* Config, uniforms, ins, outs */ #include "/lib/config.glsl" -/* Config, uniforms, ins, outs */ +/* Color utils */ + #ifdef THE_END - #include "/lib/color_utils_end.glsl" + #include "/lib/color_utils_end.glsl" #elif defined NETHER - #include "/lib/color_utils_nether.glsl" + #include "/lib/color_utils_nether.glsl" #else - #include "/lib/color_utils.glsl" + #include "/lib/color_utils.glsl" #endif -uniform ivec2 eyeBrightnessSmooth; +/* Uniforms */ -#if !defined SIMPLE_AUTOEXP - uniform sampler2D gaux3; - uniform float viewWidth; -#endif +uniform sampler2D gaux3; + +/* Ins / Outs */ varying vec2 texcoord; varying float exposure; - #include "/lib/luma.glsl" +#include "/lib/luma.glsl" void main() { - gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; - texcoord = gl_MultiTexCoord0.xy; - - vec2 eye_bright_smooth = vec2(eyeBrightnessSmooth); - - // Tonemaping --- - // x: Block, y: Sky --- - #if !defined UNKNOWN_DIM - #if defined SIMPLE_AUTOEXP - - float exposure_coef = day_blend_float( - EXPOSURE_SUNSET, - EXPOSURE_DAY, - EXPOSURE_NIGHT - ); - - float candle_bright = eye_bright_smooth.x * 0.0003125; // (0.004166666666666667 * 0.075) - - exposure = - ((eye_bright_smooth.y * 0.004166666666666667) * exposure_coef) + candle_bright; + gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; + texcoord = gl_MultiTexCoord0.xy; - // Map from 1.0 - 0.0 to 1.0 - 3.4 - exposure = (exposure * -2.4) + 3.4; + // Tonemaping --- + // x: Block, y: Sky --- + #if !defined UNKNOWN_DIM + exposure = texture2D(gaux3, vec2(0.5)).r; #else - exposure = texture2D(gaux3, vec2(0.5)).r; + exposure = 1.0; #endif - #else - exposure = 1.0; - #endif } diff --git a/shaders/common/glint_blocks_fragment.glsl b/shaders/common/glint_blocks_fragment.glsl index 26cafce3..3876edd0 100644 --- a/shaders/common/glint_blocks_fragment.glsl +++ b/shaders/common/glint_blocks_fragment.glsl @@ -1,14 +1,19 @@ #include "/lib/config.glsl" -/* Config, uniforms, ins, outs */ +/* Uniforms */ + uniform sampler2D tex; +/* Ins / Outs */ + varying vec2 texcoord; varying vec4 tint_color; +// MAIN FUNCTION ------------------ + void main() { - // Toma el color puro del bloque - vec4 block_color = texture2D(tex, texcoord) * tint_color * 0.5; + // Toma el color puro del bloque + vec4 block_color = texture2D(tex, texcoord) * tint_color * 0.5; - #include "/src/writebuffers.glsl" + #include "/src/writebuffers.glsl" } \ No newline at end of file diff --git a/shaders/common/glint_blocks_vertex.glsl b/shaders/common/glint_blocks_vertex.glsl index 9feaf4f0..d826b44a 100644 --- a/shaders/common/glint_blocks_vertex.glsl +++ b/shaders/common/glint_blocks_vertex.glsl @@ -1,19 +1,24 @@ #include "/lib/config.glsl" -/* Config, uniforms, ins, outs */ +/* Uniforms */ + uniform mat4 gbufferModelViewInverse; uniform mat4 gbufferProjectionInverse; +/* Ins / Outs */ + varying vec2 texcoord; varying vec4 tint_color; #if AA_TYPE > 0 - #include "/src/taa_offset.glsl" + #include "/src/taa_offset.glsl" #endif +// MAIN FUNCTION ------------------ + void main() { - #include "/src/basiccoords_vertex.glsl" - #include "/src/position_vertex.glsl" + #include "/src/basiccoords_vertex.glsl" + #include "/src/position_vertex.glsl" - tint_color = gl_Color; + tint_color = gl_Color; } diff --git a/shaders/common/line_blocks_fragment.glsl b/shaders/common/line_blocks_fragment.glsl index f6db7822..2238c24c 100644 --- a/shaders/common/line_blocks_fragment.glsl +++ b/shaders/common/line_blocks_fragment.glsl @@ -1,12 +1,13 @@ -/* Config, uniforms, ins, outs */ -#define NO_SHADOWS +/* Utility functions */ #include "/lib/config.glsl" +/* Ins / Outs */ + varying vec4 tint_color; void main() { - vec4 block_color = tint_color; + vec4 block_color = tint_color; - #include "/src/writebuffers.glsl" + #include "/src/writebuffers.glsl" } diff --git a/shaders/common/line_blocks_vertex.glsl b/shaders/common/line_blocks_vertex.glsl index 54a619c6..edaf0547 100644 --- a/shaders/common/line_blocks_vertex.glsl +++ b/shaders/common/line_blocks_vertex.glsl @@ -1,38 +1,29 @@ #include "/lib/config.glsl" +/* Uniforms */ + uniform float viewHeight; uniform float viewWidth; +/* Ins / Outs */ + varying vec4 tint_color; +/* Utility functions */ + #if AA_TYPE > 1 - #include "/src/taa_offset.glsl" + #include "/src/taa_offset.glsl" #endif -vec4 mu_ftransform() -{ - float lineWidth = 1.75; - vec2 screenSize = vec2(viewWidth, viewHeight); - mat4 VIEW_SCALE = mat4(mat3(1.0 - 0.00390625)); - mat4 tempmat = gl_ProjectionMatrix * VIEW_SCALE * gl_ModelViewMatrix; - vec4 linePosStart = tempmat * gl_Vertex; - vec4 linePosEnd = tempmat * vec4(gl_Vertex.xyz + gl_Normal, 1.0); - vec3 ndc1 = linePosStart.xyz / linePosStart.w; - vec3 ndc2 = linePosEnd.xyz / linePosEnd.w; - vec2 lineScreenDirection = normalize((ndc2.xy - ndc1.xy) * screenSize); - vec2 lineOffset = vec2(-lineScreenDirection.y, lineScreenDirection.x) * lineWidth / screenSize; - if (lineOffset.x < 0.0) - lineOffset *= -1.0; - if (gl_VertexID % 2 == 0) - return vec4((ndc1 + vec3(lineOffset, 0.0)) * linePosStart.w, linePosStart.w); - else - return vec4((ndc1 - vec3(lineOffset, 0.0)) * linePosStart.w, linePosStart.w); -} +#include "/lib/mu_ftransform.glsl" + +// MAIN FUNCTION ------------------ void main() { - tint_color = gl_Color; - gl_Position = mu_ftransform(); - #if AA_TYPE > 1 - gl_Position.xy += taa_offset * gl_Position.w; - #endif + tint_color = gl_Color; + gl_Position = mu_ftransform(); + + #if AA_TYPE > 1 + gl_Position.xy += taa_offset * gl_Position.w; + #endif } diff --git a/shaders/common/prepare_fragment.glsl b/shaders/common/prepare_fragment.glsl index 552699dd..b90a83aa 100644 --- a/shaders/common/prepare_fragment.glsl +++ b/shaders/common/prepare_fragment.glsl @@ -1,56 +1,57 @@ -/* Config, uniforms, ins, outs */ #include "/lib/config.glsl" +/* Color utils */ + #ifdef THE_END - #include "/lib/color_utils_end.glsl" + #include "/lib/color_utils_end.glsl" #elif defined NETHER - #include "/lib/color_utils_nether.glsl" + #include "/lib/color_utils_nether.glsl" #else - #include "/lib/color_utils.glsl" + #include "/lib/color_utils.glsl" #endif -/* Config, uniforms, ins, outs */ +/* Uniforms */ + uniform mat4 gbufferProjectionInverse; uniform float pixel_size_x; uniform float pixel_size_y; uniform float rainStrength; +/* Ins / Outs */ + varying vec3 up_vec; varying vec3 hi_sky_color; varying vec3 low_sky_color; +/* Utility functions */ + #include "/lib/dither.glsl" -void main() { - #if defined THE_END || defined NETHER - vec3 block_color = ZENITH_DAY_COLOR; - #else +// MAIN FUNCTION ------------------ - #if AA_TYPE > 0 - float dither = shifted_dither13(gl_FragCoord.xy); +void main() { + #if defined THE_END || defined NETHER + vec3 block_color = ZENITH_DAY_COLOR; #else - float dither = dither13(gl_FragCoord.xy); - #endif - dither = (dither - .5) * 0.0625; - - vec4 fragpos = gbufferProjectionInverse * - ( - vec4( - gl_FragCoord.xy * vec2(pixel_size_x, pixel_size_y), - gl_FragCoord.z, - 1.0 - ) * 2.0 - 1.0 - ); - vec3 nfragpos = normalize(fragpos.xyz); - float n_u = clamp(dot(nfragpos, up_vec) + dither, 0.0, 1.0); - vec3 block_color = mix( - low_sky_color, - hi_sky_color, - sqrt(n_u) - ); - - #endif - - #include "/src/writebuffers.glsl" + #if AA_TYPE > 0 + float dither = shifted_dither13(gl_FragCoord.xy); + #else + float dither = dither13(gl_FragCoord.xy); + #endif + + dither = (dither - .5) * 0.0625; + + vec4 fragpos = + gbufferProjectionInverse * + (vec4(gl_FragCoord.xy * vec2(pixel_size_x, pixel_size_y), gl_FragCoord.z, 1.0) * 2.0 - 1.0); + vec3 nfragpos = normalize(fragpos.xyz); + float n_u = clamp(dot(nfragpos, up_vec) + dither, 0.0, 1.0); + vec3 block_color = + mix(low_sky_color, hi_sky_color, smoothstep(0.0, 1.0, pow(n_u, 0.333))); + + block_color = xyz_to_rgb(block_color); + #endif + + #include "/src/writebuffers.glsl" } \ No newline at end of file diff --git a/shaders/common/prepare_vertex.glsl b/shaders/common/prepare_vertex.glsl index e9ffaa66..c51bb3fc 100644 --- a/shaders/common/prepare_vertex.glsl +++ b/shaders/common/prepare_vertex.glsl @@ -1,28 +1,37 @@ -/* Config, uniforms, ins, outs */ #include "/lib/config.glsl" +/* Color utils */ + #ifdef THE_END - #include "/lib/color_utils_end.glsl" + #include "/lib/color_utils_end.glsl" #elif defined NETHER - #include "/lib/color_utils_nether.glsl" + #include "/lib/color_utils_nether.glsl" #else - #include "/lib/color_utils.glsl" + #include "/lib/color_utils.glsl" #endif -/* Config, uniforms, ins, outs */ +/* Uniforms */ + uniform mat4 gbufferModelView; uniform float rainStrength; +/* Ins / Outs */ + varying vec3 up_vec; varying vec3 hi_sky_color; varying vec3 low_sky_color; +/* Utility functions */ + #include "/lib/luma.glsl" +// MAIN FUNCTION ------------------ + void main() { - gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; + gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; + + #include "/src/hi_sky.glsl" + #include "/src/low_sky.glsl" - #include "/src/sky_color_vertex.glsl" - - up_vec = normalize(gbufferModelView[1].xyz); + up_vec = normalize(gbufferModelView[1].xyz); } diff --git a/shaders/common/shadow_fragment.glsl b/shaders/common/shadow_fragment.glsl index ee692e55..f02adc11 100644 --- a/shaders/common/shadow_fragment.glsl +++ b/shaders/common/shadow_fragment.glsl @@ -1,20 +1,27 @@ #include "/lib/config.glsl" +/* Uniforms */ + uniform sampler2D tex; +/* Ins / Outs */ + varying vec2 texcoord; #ifdef COLORED_SHADOW - varying float is_water; + varying float is_water; #endif +// MAIN FUNCTION ------------------ + void main() { - #ifdef COLORED_SHADOW - if (is_water > 0.98) discard; // Is water - #endif + #ifdef COLORED_SHADOW + if(is_water > 0.98) + discard; // Is water + #endif - vec4 block_color = texture2D(tex, texcoord); + vec4 block_color = texture2D(tex, texcoord); - /* DRAWBUFFERS:0 */ - gl_FragData[0] = block_color; + /* DRAWBUFFERS:0 */ + gl_FragData[0] = block_color; } diff --git a/shaders/common/shadow_vertex.glsl b/shaders/common/shadow_vertex.glsl index 3ef69cc0..d446ffcb 100644 --- a/shaders/common/shadow_vertex.glsl +++ b/shaders/common/shadow_vertex.glsl @@ -1,35 +1,41 @@ #include "/lib/config.glsl" +/* Uniforms */ + uniform mat4 shadowProjection; uniform mat4 shadowProjectionInverse; uniform mat4 shadowModelView; uniform mat4 shadowModelViewInverse; +/* Ins / Outs */ + varying vec2 texcoord; #ifdef COLORED_SHADOW - varying float is_water; + varying float is_water; #endif attribute vec4 mc_Entity; +// MAIN FUNCTION ------------------ + void main() { - texcoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy; + texcoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy; + + vec4 position = shadowModelViewInverse * shadowProjectionInverse * gl_ModelViewProjectionMatrix * gl_Vertex; + gl_Position = shadowProjection * shadowModelView * position; - vec4 position = shadowModelViewInverse * shadowProjectionInverse * gl_ModelViewProjectionMatrix * gl_Vertex; - gl_Position = shadowProjection * shadowModelView * position; + float dist = length(gl_Position.xy); + float distortFactor = dist * SHADOW_DIST + (1.0 - SHADOW_DIST); - float dist = length(gl_Position.xy); - float distortFactor = dist * SHADOW_DIST + (1.0 - SHADOW_DIST); - - gl_Position.xy *= 1.0 / distortFactor; - gl_Position.z = gl_Position.z * 0.2; + gl_Position.xy *= 1.0 / distortFactor; + gl_Position.z = gl_Position.z * 0.2; - #ifdef COLORED_SHADOW - is_water = 0.0; + #ifdef COLORED_SHADOW + is_water = 0.0; - if (mc_Entity.x == ENTITY_WATER) { - is_water = 1.0; - } - #endif + if(mc_Entity.x == ENTITY_WATER) { + is_water = 1.0; + } + #endif } diff --git a/shaders/common/skybasic_fragment.glsl b/shaders/common/skybasic_fragment.glsl index 01d1a68d..f70dd866 100644 --- a/shaders/common/skybasic_fragment.glsl +++ b/shaders/common/skybasic_fragment.glsl @@ -1,93 +1,92 @@ #include "/lib/config.glsl" +/* Color utils */ + #ifdef THE_END - #include "/lib/color_utils_end.glsl" + #include "/lib/color_utils_end.glsl" #elif defined NETHER - #include "/lib/color_utils_nether.glsl" + #include "/lib/color_utils_nether.glsl" #else - #include "/lib/color_utils.glsl" + #include "/lib/color_utils.glsl" #endif -/* Config, uniforms, ins, outs */ +/* Uniforms */ + uniform sampler2D gaux4; uniform float pixel_size_x; uniform float pixel_size_y; #ifdef NETHER - uniform vec3 fogColor; + uniform vec3 fogColor; #endif #if MC_VERSION < 11604 - uniform mat4 gbufferProjectionInverse; - uniform float viewWidth; - uniform float viewHeight; - uniform float rainStrength; -#endif + uniform mat4 gbufferProjectionInverse; + uniform float viewWidth; + uniform float viewHeight; + uniform float rainStrength; +#endif + +/* Ins / Outs */ #if MC_VERSION < 11604 - varying vec3 up_vec; - varying vec3 hi_sky_color; - varying vec3 low_sky_color; + varying vec3 up_vec; + varying vec3 hi_sky_color; + varying vec3 low_sky_color; #endif varying vec4 star_data; +/* Utility functions */ + #if MC_VERSION < 11604 - #include "/lib/dither.glsl" + #include "/lib/dither.glsl" #endif +// MAIN FUNCTION ------------------ + void main() { - #if defined THE_END - #if MC_VERSION < 11604 - vec4 background_color = vec4(ZENITH_DAY_COLOR, 1.0); - #endif - vec4 block_color = vec4(0.0, 0.0, 0.0, 1.0); - #elif defined NETHER // Unused - #if MC_VERSION < 11604 - vec4 background_color = vec4(mix(fogColor * 0.1, vec3(1.0), 0.04), 1.0); - #endif - vec4 block_color = vec4(mix(fogColor * 0.1, vec3(1.0), 0.04), 1.0); - #else - #if MC_VERSION < 11604 - #if AA_TYPE > 0 - float dither = shifted_dither13(gl_FragCoord.xy); - #else - float dither = dither13(gl_FragCoord.xy); - #endif - - dither = (dither - .5) * 0.0625; - - vec4 fragpos = gbufferProjectionInverse * - ( - vec4( - gl_FragCoord.xy * vec2(pixel_size_x, pixel_size_y), - gl_FragCoord.z, - 1.0 - ) * 2.0 - 1.0 - ); - vec3 nfragpos = normalize(fragpos.xyz); - float n_u = clamp(dot(nfragpos, up_vec) + dither, 0.0, 1.0); - vec4 background_color = vec4( - mix( - low_sky_color, - hi_sky_color, - sqrt(n_u) - ), - 1.0); + #if defined THE_END + #if MC_VERSION < 11604 + vec4 background_color = vec4(ZENITH_DAY_COLOR, 1.0); + #endif + vec4 block_color = vec4(0.0, 0.0, 0.0, 1.0); + #elif defined NETHER // Unused + #if MC_VERSION < 11604 + vec4 background_color = vec4(mix(fogColor * 0.1, vec3(1.0), 0.04), 1.0); + #endif + vec4 block_color = vec4(mix(fogColor * 0.1, vec3(1.0), 0.04), 1.0); #else + #if MC_VERSION < 11604 + #if AA_TYPE > 0 + float dither = shifted_dither13(gl_FragCoord.xy); + #else + float dither = dither13(gl_FragCoord.xy); + #endif - // Toma el color puro del bloque - vec4 background_color = texture2D(gaux4, gl_FragCoord.xy * vec2(pixel_size_x, pixel_size_y)); - #endif + dither = (dither - .5) * 0.0625; + + vec4 fragpos = + gbufferProjectionInverse * + (vec4(gl_FragCoord.xy * vec2(pixel_size_x, pixel_size_y), gl_FragCoord.z, 1.0) * 2.0 - 1.0); + vec3 nfragpos = normalize(fragpos.xyz); + float n_u = clamp(dot(nfragpos, up_vec) + dither, 0.0, 1.0); + vec4 background_color = vec4(mix(low_sky_color, hi_sky_color, smoothstep(0.0, 1.0, pow(n_u, 0.333))), 1.0); + background_color.rgb = xyz_to_rgb(background_color.rgb); + #else + + // Toma el color puro del bloque + vec4 background_color = texture2D(gaux4, gl_FragCoord.xy * vec2(pixel_size_x, pixel_size_y)); + #endif - vec4 block_color = star_data; + vec4 block_color = star_data; - block_color = mix(background_color, block_color, block_color); + block_color = mix(background_color, block_color, block_color); - #if MC_VERSION >= 11604 - block_color.a = star_data.a; + #if MC_VERSION >= 11604 + block_color.a = star_data.a; + #endif #endif - #endif - #include "/src/writebuffers.glsl" + #include "/src/writebuffers.glsl" } diff --git a/shaders/common/skybasic_vertex.glsl b/shaders/common/skybasic_vertex.glsl index a41bb9ff..12396b75 100644 --- a/shaders/common/skybasic_vertex.glsl +++ b/shaders/common/skybasic_vertex.glsl @@ -1,57 +1,64 @@ #include "/lib/config.glsl" +/* Color utils */ + #if MC_VERSION < 11604 - #ifdef THE_END - #include "/lib/color_utils_end.glsl" - #elif defined NETHER - #include "/lib/color_utils_nether.glsl" - #else - #include "/lib/color_utils.glsl" - #endif + #ifdef THE_END + #include "/lib/color_utils_end.glsl" + #elif defined NETHER + #include "/lib/color_utils_nether.glsl" + #else + #include "/lib/color_utils.glsl" + #endif #endif -/* Config, uniforms, ins, outs */ +/* Uniforms */ + uniform mat4 gbufferModelView; #if MC_VERSION < 11604 - uniform float rainStrength; + uniform float rainStrength; #endif +/* Ins / Outs */ + #if MC_VERSION < 11604 - varying vec3 up_vec; - varying vec3 hi_sky_color; - varying vec3 low_sky_color; + varying vec3 up_vec; + varying vec3 hi_sky_color; + varying vec3 low_sky_color; #endif varying vec4 star_data; +/* Utility functions */ + #if AA_TYPE > 0 - #include "/src/taa_offset.glsl" + #include "/src/taa_offset.glsl" #endif #if MC_VERSION < 11604 - #include "/lib/luma.glsl" + #include "/lib/luma.glsl" #endif +// MAIN FUNCTION ------------------ + void main() { - gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; + gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; - #if AA_TYPE > 0 - gl_Position.xy += taa_offset * gl_Position.w; - #endif + #if AA_TYPE > 0 + gl_Position.xy += taa_offset * gl_Position.w; + #endif - star_data = - vec4( - float( - gl_Color.r == gl_Color.g && + star_data = vec4( + float(gl_Color.r == gl_Color.g && gl_Color.g == gl_Color.b && - gl_Color.r > 0.0 - ) * gl_Color.r + gl_Color.r > 0.0) * gl_Color.r ); - #if MC_VERSION < 11604 - up_vec = normalize(gbufferModelView[1].xyz); + #if MC_VERSION < 11604 + up_vec = normalize(gbufferModelView[1].xyz); - #include "/src/sky_color_vertex.glsl" - #endif + #include "/src/hi_sky.glsl" + #include "/src/low_sky.glsl" + #endif } diff --git a/shaders/common/skytextured_fragment.glsl b/shaders/common/skytextured_fragment.glsl index 5e5b2288..766f73c1 100644 --- a/shaders/common/skytextured_fragment.glsl +++ b/shaders/common/skytextured_fragment.glsl @@ -1,39 +1,45 @@ #include "/lib/config.glsl" +/* Color utils */ + #ifdef THE_END - #include "/lib/color_utils_end.glsl" + #include "/lib/color_utils_end.glsl" #elif defined NETHER - #include "/lib/color_utils_nether.glsl" + #include "/lib/color_utils_nether.glsl" #else - #include "/lib/color_utils.glsl" + #include "/lib/color_utils.glsl" #endif -// 'Global' constants from system +/* Uniforms */ + uniform sampler2D tex; #ifdef NETHER - uniform vec3 fogColor; + uniform vec3 fogColor; #endif -// Varyings (per thread shared variables) +/* Ins / Outs */ + varying vec2 texcoord; varying vec4 tint_color; varying float sky_luma_correction; // Flat +// MAIN FUNCTION ------------------ + void main() { - #if defined THE_END - vec4 block_color = vec4(ZENITH_DAY_COLOR, 1.0); - vec3 background_color = ZENITH_DAY_COLOR; - #elif defined NETHER // Unused - vec4 background_color_full = vec4(mix(fogColor * 0.1, vec3(1.0), 0.04), 1.0); - vec3 background_color = background_color_full.rgb; - vec4 block_color = vec4(background_color, 1.0); - #else - // Toma el color puro del bloque - vec4 block_color = texture2D(tex, texcoord) * tint_color; - - block_color.rgb *= sky_luma_correction; - #endif - - #include "/src/writebuffers.glsl" + #if defined THE_END + vec4 block_color = vec4(ZENITH_DAY_COLOR, 1.0); + vec3 background_color = ZENITH_DAY_COLOR; + #elif defined NETHER // Unused + vec4 background_color_full = vec4(mix(fogColor * 0.1, vec3(1.0), 0.04), 1.0); + vec3 background_color = background_color_full.rgb; + vec4 block_color = vec4(background_color, 1.0); + #else + // Toma el color puro del bloque + vec4 block_color = texture2D(tex, texcoord) * tint_color; + + block_color.rgb *= sky_luma_correction; + #endif + + #include "/src/writebuffers.glsl" } diff --git a/shaders/common/skytextured_vertex.glsl b/shaders/common/skytextured_vertex.glsl index 4292d303..10006b1e 100644 --- a/shaders/common/skytextured_vertex.glsl +++ b/shaders/common/skytextured_vertex.glsl @@ -1,42 +1,46 @@ #include "/lib/config.glsl" +/* Color utils */ + #ifdef THE_END - #include "/lib/color_utils_end.glsl" + #include "/lib/color_utils_end.glsl" #elif defined NETHER - #include "/lib/color_utils_nether.glsl" + #include "/lib/color_utils_nether.glsl" #else - #include "/lib/color_utils.glsl" + #include "/lib/color_utils.glsl" #endif +/* Ins / Outs */ + varying vec2 texcoord; varying vec4 tint_color; varying float sky_luma_correction; #if AA_TYPE > 0 - #include "/src/taa_offset.glsl" + #include "/src/taa_offset.glsl" #endif +/* Utility functions */ + #include "/lib/luma.glsl" +// MAIN FUNCTION ------------------ + void main() { - texcoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy; - tint_color = gl_Color; - - sky_luma_correction = luma(day_blend( - LIGHT_SUNSET_COLOR, - LIGHT_DAY_COLOR, - LIGHT_NIGHT_COLOR - )); - - #if (VOL_LIGHT == 1 && !defined NETHER) || (VOL_LIGHT == 2 && defined SHADOW_CASTING && !defined NETHER) - sky_luma_correction = 3.5 / ((sky_luma_correction * -2.5) + 3.5); - #else - sky_luma_correction = 1.5 / ((sky_luma_correction * -2.5) + 3.5); - #endif - - gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; - - #if AA_TYPE > 0 - gl_Position.xy += taa_offset * gl_Position.w; - #endif + texcoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy; + tint_color = gl_Color; + + sky_luma_correction = luma(day_blend(LIGHT_SUNSET_COLOR, LIGHT_DAY_COLOR, LIGHT_NIGHT_COLOR)); + + #if (VOL_LIGHT == 1 && !defined NETHER) || (VOL_LIGHT == 2 && defined SHADOW_CASTING && !defined NETHER) + sky_luma_correction = 3.5 / ((sky_luma_correction * -2.5) + 3.5); + #else + sky_luma_correction = 1.5 / ((sky_luma_correction * -2.5) + 3.5); + #endif + + gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; + + #if AA_TYPE > 0 + gl_Position.xy += taa_offset * gl_Position.w; + #endif } diff --git a/shaders/common/solid_blocks_fragment.glsl b/shaders/common/solid_blocks_fragment.glsl index 4c5190e7..73326683 100644 --- a/shaders/common/solid_blocks_fragment.glsl +++ b/shaders/common/solid_blocks_fragment.glsl @@ -1,16 +1,18 @@ #include "/lib/config.glsl" -uniform float viewWidth; -uniform float viewHeight; -uniform int frameCounter; +// MAIN FUNCTION ------------------ #if defined THE_END - #include "/lib/color_utils_end.glsl" + #include "/lib/color_utils_end.glsl" #elif defined NETHER - #include "/lib/color_utils_nether.glsl" + #include "/lib/color_utils_nether.glsl" #endif -/* Config, uniforms, ins, outs */ +/* Uniforms */ + +uniform float viewWidth; +uniform float viewHeight; +uniform int frameCounter; uniform sampler2D tex; uniform int isEyeInWater; uniform float nightVision; @@ -20,49 +22,50 @@ uniform float pixel_size_x; uniform float pixel_size_y; uniform sampler2D gaux4; - #if defined DISTANT_HORIZONS - uniform float dhNearPlane; - uniform float far; + uniform float dhNearPlane; + uniform float far; #endif #if defined GBUFFER_ENTITIES - uniform int entityId; - uniform vec4 entityColor; + uniform int entityId; + uniform vec4 entityColor; #endif #ifdef NETHER - uniform vec3 fogColor; + uniform vec3 fogColor; #endif #if defined SHADOW_CASTING - uniform sampler2DShadow shadowtex1; - #if defined COLORED_SHADOW - uniform sampler2DShadow shadowtex0; - uniform sampler2D shadowcolor0; - #endif + uniform sampler2DShadow shadowtex1; + #if defined COLORED_SHADOW + uniform sampler2DShadow shadowtex0; + uniform sampler2D shadowcolor0; + #endif #endif uniform float blindness; #if MC_VERSION >= 11900 - uniform float darknessFactor; - uniform float darknessLightFactor; + uniform float darknessFactor; + uniform float darknessLightFactor; #endif #ifdef MATERIAL_GLOSS - // Optifine menu bug workaround. Don't remove + // Don't remove #endif #if defined MATERIAL_GLOSS && !defined NETHER - uniform int worldTime; - uniform vec3 moonPosition; - uniform vec3 sunPosition; - #if defined THE_END - uniform mat4 gbufferModelView; - #endif + uniform int worldTime; + uniform vec3 moonPosition; + uniform vec3 sunPosition; + #if defined THE_END + uniform mat4 gbufferModelView; + #endif #endif +/* Ins / Outs */ + varying vec2 texcoord; varying vec4 tint_color; varying float frog_adjust; @@ -72,163 +75,159 @@ varying float direct_light_strength; varying vec3 omni_light; #if defined GBUFFER_TERRAIN || defined GBUFFER_HAND - varying float emmisive_type; + varying float emmisive_type; #endif #ifdef FOLIAGE_V - varying float is_foliage; + varying float is_foliage; #endif #if defined SHADOW_CASTING && !defined NETHER - varying vec3 shadow_pos; - varying float shadow_diffuse; + varying vec3 shadow_pos; + varying float shadow_diffuse; #endif #if defined MATERIAL_GLOSS && !defined NETHER - varying vec3 flat_normal; - varying vec3 sub_position3; - varying vec2 lmcoord_alt; - varying float gloss_factor; - varying float gloss_power; - varying float luma_factor; - varying float luma_power; + varying vec3 flat_normal; + varying vec3 sub_position3; + varying vec2 lmcoord_alt; + varying float gloss_factor; + varying float gloss_power; + varying float luma_factor; + varying float luma_power; #endif +/* Utility functions */ + #if (defined SHADOW_CASTING && !defined NETHER) || defined DISTANT_HORIZONS - #include "/lib/dither.glsl" + #include "/lib/dither.glsl" #endif #if defined SHADOW_CASTING && !defined NETHER - #include "/lib/shadow_frag.glsl" + #include "/lib/shadow_frag.glsl" #endif #include "/lib/luma.glsl" #if defined MATERIAL_GLOSS && !defined NETHER - #include "/lib/material_gloss_fragment.glsl" + #include "/lib/material_gloss_fragment.glsl" #endif void main() { - #if (defined SHADOW_CASTING && !defined NETHER) || defined DISTANT_HORIZONS - #if AA_TYPE > 0 - float dither = shifted_makeup_dither(gl_FragCoord.xy); - #else - float dither = r_dither(gl_FragCoord.xy); + #if (defined SHADOW_CASTING && !defined NETHER) || defined DISTANT_HORIZONS + #if AA_TYPE > 0 + float dither = shifted_dither13(gl_FragCoord.xy); + // float dither = shifted_eclectic_dither13(gl_FragCoord.xy); + #else + float dither = r_dither(gl_FragCoord.xy); + #endif #endif - #endif - // Avoid render in DH transition - #ifdef DISTANT_HORIZONS - float t = far - dhNearPlane; - float sup = t * TRANSITION_SUP; - float inf = t * TRANSITION_INF; - float umbral = (gl_FogFragCoord - (dhNearPlane + inf)) / (far - sup - inf - dhNearPlane); - if (umbral > dither) { - discard; - return; - } - #endif - - // Toma el color puro del bloque - #if defined GBUFFER_ENTITIES - #if BLACK_ENTITY_FIX == 1 - vec4 block_color = texture2D(tex, texcoord); - if (block_color.a < 0.1 && entityId != 10101) { // Black entities bug workaround - discard; - } - block_color *= tint_color; - #else - vec4 block_color = texture2D(tex, texcoord) * tint_color; + // Avoid render in DH transition + #ifdef DISTANT_HORIZONS + float t = far - dhNearPlane; + float sup = t * TRANSITION_DH_SUP; + float inf = t * TRANSITION_DH_INF; + float umbral = (gl_FogFragCoord - (dhNearPlane + inf)) / (far - sup - inf - dhNearPlane); + if(umbral > dither) { + discard; + return; + } #endif - #else - vec4 block_color = texture2D(tex, texcoord) * tint_color; - #endif - - float block_luma = luma(block_color.rgb); - - vec3 final_candle_color = candle_color; - #if defined GBUFFER_TERRAIN || defined GBUFFER_HAND - if (emmisive_type > 0.5) { - final_candle_color *= block_luma * 1.5; - } - #endif - - #ifdef GBUFFER_WEATHER - block_color.a *= .5; - #endif - - #if defined GBUFFER_ENTITIES - // Thunderbolt render - if (entityId == 10101){ - block_color.a = 1.0; - } - #endif - - #if defined SHADOW_CASTING && !defined NETHER - #if defined COLORED_SHADOW - vec3 shadow_c = get_colored_shadow(shadow_pos, dither); - shadow_c = mix(shadow_c, vec3(1.0), shadow_diffuse); + + // Toma el color puro del bloque + #if defined GBUFFER_ENTITIES + #if BLACK_ENTITY_FIX == 1 + vec4 block_color = texture2D(tex, texcoord); + if(block_color.a < 0.1 && entityId != 10101) { // Black entities bug workaround + discard; + } + block_color *= tint_color; + #else + vec4 block_color = texture2D(tex, texcoord) * tint_color; + #endif #else - float shadow_c = get_shadow(shadow_pos, dither); - shadow_c = mix(shadow_c, 1.0, shadow_diffuse); + vec4 block_color = texture2D(tex, texcoord) * tint_color; + #endif + + float block_luma = luma(block_color.rgb); + + vec3 final_candle_color = candle_color; + #if defined GBUFFER_TERRAIN || defined GBUFFER_HAND + if(emmisive_type > 0.5) { + final_candle_color *= block_luma * 1.5; + } + #endif + + #ifdef GBUFFER_WEATHER + block_color.a *= .5; #endif - #else - float shadow_c = abs((light_mix * 2.0) - 1.0); - #endif - - #if defined GBUFFER_BEACONBEAM - block_color.rgb *= 1.5; - #elif defined GBUFFER_ENTITY_GLOW - block_color.rgb = clamp(vec3(luma(block_color.rgb)) * vec3(0.75, 0.75, 1.5), vec3(0.3), vec3(1.0)); - #else - #if defined MATERIAL_GLOSS && !defined NETHER - float final_gloss_power = gloss_power; - block_luma *= luma_factor; - - if (luma_power < 0.0) { // Metallic - final_gloss_power -= (block_luma * 73.334); - } else { - block_luma = pow(block_luma, luma_power); - } - - float material_gloss_factor = - material_gloss( - reflect(normalize(sub_position3), flat_normal), - lmcoord_alt, - final_gloss_power, - flat_normal - ) * gloss_factor; - - float material = material_gloss_factor * block_luma; - vec3 real_light = - omni_light + - (shadow_c * ((direct_light_color * direct_light_strength) + (direct_light_color * material))) * (1.0 - (rainStrength * 0.75)) + - final_candle_color; + + #if defined GBUFFER_ENTITIES + // Thunderbolt render + if(entityId == 10101) { + block_color.a = 1.0; + } + #endif + + #if defined SHADOW_CASTING && !defined NETHER + #if defined COLORED_SHADOW + vec3 shadow_c = get_colored_shadow(shadow_pos, dither); + shadow_c = mix(shadow_c, vec3(1.0), shadow_diffuse); + #else + float shadow_c = get_shadow(shadow_pos, dither); + shadow_c = mix(shadow_c, 1.0, shadow_diffuse); + #endif #else - vec3 real_light = - omni_light + - (shadow_c * direct_light_color * direct_light_strength) * (1.0 - (rainStrength * 0.75)) + - final_candle_color; + float shadow_c = abs((light_mix * 2.0) - 1.0); #endif - block_color.rgb *= mix(real_light, vec3(1.0), nightVision * 0.125); - block_color.rgb *= mix(vec3(1.0, 1.0, 1.0), vec3(NV_COLOR_R, NV_COLOR_G, NV_COLOR_B), nightVision); - #endif + #if defined GBUFFER_BEACONBEAM + block_color.rgb *= 1.5; + #elif defined GBUFFER_ENTITY_GLOW + block_color.rgb = + clamp(vec3(luma(block_color.rgb)) * vec3(0.75, 0.75, 1.5), vec3(0.3), vec3(1.0)); + #else + #if defined MATERIAL_GLOSS && !defined NETHER + float final_gloss_power = gloss_power; + block_luma *= luma_factor; + + if(luma_power < 0.0) { // Metallic + final_gloss_power -= (block_luma * 73.334); + } else { + block_luma = pow(block_luma, luma_power); + } + + float material_gloss_factor = material_gloss(reflect(normalize(sub_position3), flat_normal), lmcoord_alt, final_gloss_power, flat_normal) * gloss_factor; + + float material = material_gloss_factor * block_luma; + vec3 real_light = omni_light + + (shadow_c * ((direct_light_color * direct_light_strength) + (direct_light_color * material))) * (1.0 - (rainStrength * 0.75)) + + final_candle_color; + #else + vec3 real_light = omni_light + + (shadow_c * direct_light_color * direct_light_strength) * (1.0 - (rainStrength * 0.75)) + + final_candle_color; + #endif + + block_color.rgb *= mix(real_light, vec3(1.0), nightVision * 0.125); + block_color.rgb *= mix(vec3(1.0, 1.0, 1.0), vec3(NV_COLOR_R, NV_COLOR_G, NV_COLOR_B), nightVision); + #endif - #if defined GBUFFER_ENTITIES - if (entityId == 10101) { - // Thunderbolt render - block_color = vec4(1.0, 1.0, 1.0, 0.5); - } else { - block_color.rgb = mix(block_color.rgb, entityColor.rgb, entityColor.a * .75); - } - #endif + #if defined GBUFFER_ENTITIES + if(entityId == 10101) { + // Thunderbolt render + block_color = vec4(1.0, 1.0, 1.0, 0.5); + } else { + block_color.rgb = mix(block_color.rgb, entityColor.rgb, entityColor.a * .75); + } + #endif - #if MC_VERSION < 11300 && defined GBUFFER_TEXTURED - block_color.rgb *= 1.5; - #endif + #if MC_VERSION < 11300 && defined GBUFFER_TEXTURED + block_color.rgb *= 1.5; + #endif - block_color.rgba = clamp(block_color, vec4(0.0), vec4(100.0)); + block_color.rgba = clamp(block_color, vec4(0.0), vec4(100.0)); - #include "/src/finalcolor.glsl" - #include "/src/writebuffers.glsl" + #include "/src/finalcolor.glsl" + #include "/src/writebuffers.glsl" } diff --git a/shaders/common/solid_blocks_vertex.glsl b/shaders/common/solid_blocks_vertex.glsl index e1d91dc2..c56d8cc8 100644 --- a/shaders/common/solid_blocks_vertex.glsl +++ b/shaders/common/solid_blocks_vertex.glsl @@ -1,19 +1,19 @@ #include "/lib/config.glsl" -// uniform int worldTime; -// uniform int frameCounter; -uniform float viewWidth; -uniform float viewHeight; +/* Color utils */ #if defined THE_END - #include "/lib/color_utils_end.glsl" + #include "/lib/color_utils_end.glsl" #elif defined NETHER - #include "/lib/color_utils_nether.glsl" + #include "/lib/color_utils_nether.glsl" #else - #include "/lib/color_utils.glsl" + #include "/lib/color_utils.glsl" #endif -/* Config, uniforms, ins, outs */ +/* Uniforms */ + +uniform float viewWidth; +uniform float viewHeight; uniform vec3 sunPosition; uniform int isEyeInWater; uniform float light_mix; @@ -23,42 +23,44 @@ uniform ivec2 eyeBrightnessSmooth; uniform mat4 gbufferProjectionInverse; #ifdef DISTANT_HORIZONS - uniform int dhRenderDistance; + uniform int dhRenderDistance; #endif #ifdef DYN_HAND_LIGHT - uniform int heldItemId; - uniform int heldItemId2; + uniform int heldItemId; + uniform int heldItemId2; #endif #ifdef UNKNOWN_DIM - uniform sampler2D lightmap; + uniform sampler2D lightmap; #endif #if defined FOLIAGE_V || defined THE_END || defined NETHER - uniform mat4 gbufferModelView; + uniform mat4 gbufferModelView; #endif #if defined FOLIAGE_V || defined SHADOW_CASTING || (defined MATERIAL_GLOSS && !defined NETHER) - uniform mat4 gbufferModelViewInverse; + uniform mat4 gbufferModelViewInverse; #endif #if defined MATERIAL_GLOSS && !defined NETHER - uniform int worldTime; - uniform vec3 moonPosition; + uniform int worldTime; + uniform vec3 moonPosition; #endif #if defined SHADOW_CASTING && !defined NETHER - uniform mat4 shadowModelView; - uniform mat4 shadowProjection; - uniform vec3 shadowLightPosition; + uniform mat4 shadowModelView; + uniform mat4 shadowProjection; + uniform vec3 shadowLightPosition; #endif #if WAVING == 1 - uniform vec3 cameraPosition; - uniform float frameTimeCounter; + uniform vec3 cameraPosition; + uniform float frameTimeCounter; #endif +/* Ins / Outs */ + varying vec2 texcoord; varying vec4 tint_color; varying float frog_adjust; @@ -68,103 +70,115 @@ varying float direct_light_strength; varying vec3 omni_light; #if defined GBUFFER_TERRAIN || defined GBUFFER_HAND - varying float emmisive_type; + varying float emmisive_type; #endif #ifdef FOLIAGE_V - varying float is_foliage; + varying float is_foliage; #endif #if defined SHADOW_CASTING && !defined NETHER - varying vec3 shadow_pos; - varying float shadow_diffuse; + varying vec3 shadow_pos; + varying float shadow_diffuse; #endif #if defined MATERIAL_GLOSS && !defined NETHER - varying vec3 flat_normal; - varying vec3 sub_position3; - varying vec2 lmcoord_alt; - varying float gloss_factor; - varying float gloss_power; - varying float luma_factor; - varying float luma_power; + varying vec3 flat_normal; + varying vec3 sub_position3; + varying vec2 lmcoord_alt; + varying float gloss_factor; + varying float gloss_power; + varying float luma_factor; + varying float luma_power; #endif #if defined FOLIAGE_V || defined GBUFFER_TERRAIN || defined GBUFFER_HAND || (defined MATERIAL_GLOSS && !defined NETHER) - attribute vec4 mc_Entity; + attribute vec4 mc_Entity; #endif #if WAVING == 1 - attribute vec2 mc_midTexCoord; + attribute vec2 mc_midTexCoord; #endif +/* Utility functions */ + #if AA_TYPE > 0 - #include "/src/taa_offset.glsl" + #include "/src/taa_offset.glsl" #endif #include "/lib/basic_utils.glsl" #if defined SHADOW_CASTING && !defined NETHER - #include "/lib/shadow_vertex.glsl" + #include "/lib/shadow_vertex.glsl" #endif #if WAVING == 1 - #include "/lib/vector_utils.glsl" + #include "/lib/vector_utils.glsl" #endif #include "/lib/luma.glsl" +// MAIN FUNCTION ------------------ + void main() { - vec2 eye_bright_smooth = vec2(eyeBrightnessSmooth); - - #include "/src/basiccoords_vertex.glsl" - #include "/src/position_vertex.glsl" - #include "/src/light_vertex.glsl" - #include "/src/fog_vertex.glsl" - - #if defined GBUFFER_TERRAIN || defined GBUFFER_HAND - emmisive_type = 0.0; - if (mc_Entity.x == ENTITY_EMMISIVE || mc_Entity.x == ENTITY_S_EMMISIVE) { - emmisive_type = 1.0; - } - #endif - - #if defined SHADOW_CASTING && !defined NETHER - #include "/src/shadow_src_vertex.glsl" - #endif - - #if defined FOLIAGE_V && !defined NETHER - #ifdef SHADOW_CASTING - if (is_foliage > .2) { - direct_light_strength = mix(direct_light_strength, original_direct_light_strength, clamp((gl_Position.z / SHADOW_LIMIT) * 2.0 - 0.5, 0.0, 1.0)); - } + vec2 eye_bright_smooth = vec2(eyeBrightnessSmooth); + vec3 hi_sky_color; + float visible_sky; + + #include "/src/basiccoords_vertex.glsl" + #include "/src/position_vertex.glsl" + #include "/src/hi_sky.glsl" + #include "/src/light_vertex.glsl" + #include "/src/fog_vertex.glsl" + + #if defined GBUFFER_TERRAIN || defined GBUFFER_HAND + emmisive_type = 0.0; + if(mc_Entity.x == ENTITY_EMMISIVE || mc_Entity.x == ENTITY_S_EMMISIVE) { + emmisive_type = 1.0; + } + #endif + + #if defined SHADOW_CASTING && !defined NETHER + #include "/src/shadow_src_vertex.glsl" + #endif + + #if defined FOLIAGE_V && !defined NETHER + #ifdef SHADOW_CASTING + if(is_foliage > .2) { + direct_light_strength = + mix( + direct_light_strength, + far_direct_light_strength, + clamp((gl_Position.z / SHADOW_LIMIT) * 2.0 - 0.5, 0.0, 1.0) + ); + } + #endif + #endif + + #if defined MATERIAL_GLOSS && !defined NETHER + luma_factor = 1.0; + luma_power = 2.0; + gloss_power = 6.0; + gloss_factor = 1.05; + + if(mc_Entity.x == ENTITY_SAND) { // Sand-like block + luma_power = 4.0; + } else if(mc_Entity.x == ENTITY_METAL) { // Metal-like block + luma_factor = 1.35; + luma_power = -1.0; // Metallic + gloss_power = 100.0; + } else if(mc_Entity.x == ENTITY_FABRIC) { // Fabric-like blocks + gloss_power = 3.0; + gloss_factor = 0.1; + } + + flat_normal = normal; + sub_position3 = sub_position.xyz; + + lmcoord_alt = lmcoord; + #endif + + #if defined GBUFFER_ENTITY_GLOW + gl_Position.z *= 0.01; #endif - #endif - - #if defined MATERIAL_GLOSS && !defined NETHER - luma_factor = 1.0; - luma_power = 2.0; - gloss_power = 6.0; - gloss_factor = 1.05; - - if (mc_Entity.x == ENTITY_SAND) { // Sand-like block - luma_power = 4.0; - } else if (mc_Entity.x == ENTITY_METAL) { // Metal-like block - luma_factor = 1.35; - luma_power = -1.0; // Metallic - gloss_power = 100.0; - } else if (mc_Entity.x == ENTITY_FABRIC) { // Fabric-like blocks - gloss_power = 3.0; - gloss_factor = 0.1; - } - - flat_normal = normal; - sub_position3 = sub_position.xyz; - - lmcoord_alt = lmcoord; - #endif - - #if defined GBUFFER_ENTITY_GLOW - gl_Position.z *= 0.01; - #endif } diff --git a/shaders/common/solid_dh_blocks_fragment.glsl b/shaders/common/solid_dh_blocks_fragment.glsl index 606a3c5f..b2637778 100644 --- a/shaders/common/solid_dh_blocks_fragment.glsl +++ b/shaders/common/solid_dh_blocks_fragment.glsl @@ -1,5 +1,7 @@ #include "/lib/config.glsl" +/* Uniforms */ + uniform float light_mix; uniform float nightVision; uniform float rainStrength; @@ -13,9 +15,11 @@ uniform vec3 cameraPosition; uniform int dhRenderDistance; #ifdef NETHER - uniform vec3 fogColor; + uniform vec3 fogColor; #endif +/* Ins / Outs */ + varying vec2 texcoord; varying vec4 tint_color; varying vec3 direct_light_color; @@ -25,52 +29,56 @@ varying vec3 omni_light; varying vec4 position; varying float frog_adjust; +/* Utility functions */ + #include "/lib/luma.glsl" #include "/lib/dither.glsl" +// MAIN FUNCTION ------------------ + void main() { - #if AA_TYPE > 0 - float dither = shifted_makeup_dither(gl_FragCoord.xy); - #else - float dither = r_dither(gl_FragCoord.xy); - #endif - - // Avoid render in DH transition - float t = far - dhNearPlane; - float sup = t * TRANSITION_DH_SUP; - float inf = t * TRANSITION_DH_INF; - float view_dist = length(position.xyz); - float umbral = (view_dist - (dhNearPlane + inf)) / (far - sup - inf - dhNearPlane); - if (umbral < dither || view_dist > dhRenderDistance) { - discard; - return; - } - - vec4 block_color = tint_color; - - // Synthetic pseudo-texture - vec3 synth_pos = (position.xyz + cameraPosition) * 6.0; - synth_pos = floor(synth_pos + 0.01); - float synth_noise = (hash13(synth_pos) - 0.5) * 0.1; - block_color.rgb += vec3(synth_noise); - block_color.rgb = clamp(block_color.rgb, vec3(0.0), vec3(1.0)); - - float block_luma = luma(tint_color.rgb); - - vec3 final_candle_color = candle_color; - - float shadow_c = abs((light_mix * 2.0) - 1.0); - - vec3 real_light = - omni_light + - (shadow_c * direct_light_color * direct_light_strength) * (1.0 - (rainStrength * 0.75)) + - final_candle_color; - - block_color.rgb *= mix(real_light, vec3(1.0), nightVision * 0.125); - block_color.rgb *= mix(vec3(1.0, 1.0, 1.0), vec3(NV_COLOR_R, NV_COLOR_G, NV_COLOR_B), nightVision); - - block_color.rgba = clamp(block_color, vec4(0.0), vec4(100.0)); - - #include "/src/finalcolor_dh.glsl" - #include "/src/writebuffers.glsl" + #if AA_TYPE > 0 + float dither = shifted_r_dither(gl_FragCoord.xy); + #else + float dither = r_dither(gl_FragCoord.xy); + #endif + + // Avoid render in DH transition + float t = far - dhNearPlane; + float sup = t * TRANSITION_DH_SUP; + float inf = t * TRANSITION_DH_INF; + float view_dist = length(position.xyz); + float umbral = (view_dist - (dhNearPlane + inf)) / (far - sup - inf - dhNearPlane); + if (umbral < dither || view_dist > dhRenderDistance) { + discard; + return; + } + + vec4 block_color = tint_color; + + // Synthetic pseudo-texture + vec3 synth_pos = (position.xyz + cameraPosition) * 6.0; + synth_pos = floor(synth_pos + 0.01); + float synth_noise = (hash13(synth_pos) - 0.5) * 0.1; + block_color.rgb += vec3(synth_noise); + block_color.rgb = clamp(block_color.rgb, vec3(0.0), vec3(1.0)); + + float block_luma = luma(tint_color.rgb); + + vec3 final_candle_color = candle_color; + + float shadow_c = abs((light_mix * 2.0) - 1.0); + + vec3 real_light = + omni_light + + (shadow_c * direct_light_color * direct_light_strength) * (1.0 - (rainStrength * 0.75)) + + final_candle_color; + + block_color.rgb *= mix(real_light, vec3(1.0), nightVision * 0.125); + block_color.rgb *= mix(vec3(1.0, 1.0, 1.0), vec3(NV_COLOR_R, NV_COLOR_G, NV_COLOR_B), nightVision); + + block_color.rgba = clamp(block_color, vec4(0.0), vec4(100.0)); + + #include "/src/finalcolor_dh.glsl" + #include "/src/writebuffers.glsl" } diff --git a/shaders/common/solid_dh_blocks_vertex.glsl b/shaders/common/solid_dh_blocks_vertex.glsl index db9d866b..ce317823 100644 --- a/shaders/common/solid_dh_blocks_vertex.glsl +++ b/shaders/common/solid_dh_blocks_vertex.glsl @@ -1,14 +1,17 @@ #include "/lib/config.glsl" +/* Color utils */ + #if defined THE_END - #include "/lib/color_utils_end.glsl" + #include "/lib/color_utils_end.glsl" #elif defined NETHER - #include "/lib/color_utils_nether.glsl" + #include "/lib/color_utils_nether.glsl" #else - #include "/lib/color_utils.glsl" + #include "/lib/color_utils.glsl" #endif -/* Config, uniforms, ins, outs */ +/* Uniforms */ + uniform ivec2 eyeBrightnessSmooth; uniform mat4 dhProjection; uniform mat4 gbufferModelView; @@ -21,13 +24,15 @@ uniform float rainStrength; uniform mat4 gbufferProjectionInverse; #ifdef DISTANT_HORIZONS - uniform int dhRenderDistance; + uniform int dhRenderDistance; #endif #ifdef UNKNOWN_DIM - uniform sampler2D lightmap; + uniform sampler2D lightmap; #endif +/* Ins / Outs */ + varying vec2 texcoord; varying vec4 tint_color; varying vec3 direct_light_color; @@ -37,20 +42,24 @@ varying vec3 omni_light; varying vec4 position; varying float frog_adjust; +/* Utility functions */ + #if AA_TYPE > 0 - #include "/src/taa_offset.glsl" + #include "/src/taa_offset.glsl" #endif #include "/lib/basic_utils.glsl" #include "/lib/luma.glsl" +// MAIN FUNCTION ------------------ + void main() { - vec2 eye_bright_smooth = vec2(eyeBrightnessSmooth); - vec3 hi_sky_color; - vec3 low_sky_color; - - #include "/src/basiccoords_vertex_dh.glsl" - #include "/src/position_vertex_dh.glsl" - #include "/src/sky_color_vertex.glsl" - #include "/src/light_vertex_dh.glsl" + vec2 eye_bright_smooth = vec2(eyeBrightnessSmooth); + float visible_sky; + vec3 hi_sky_color; + + #include "/src/basiccoords_vertex_dh.glsl" + #include "/src/position_vertex_dh.glsl" + #include "/src/hi_sky.glsl" + #include "/src/light_vertex_dh.glsl" } diff --git a/shaders/common/solid_dh_water_fragment.glsl b/shaders/common/solid_dh_water_fragment.glsl index 12b1c9ed..90629ad9 100644 --- a/shaders/common/solid_dh_water_fragment.glsl +++ b/shaders/common/solid_dh_water_fragment.glsl @@ -1,14 +1,17 @@ #include "/lib/config.glsl" +/* Color utils */ + #ifdef THE_END - #include "/lib/color_utils_end.glsl" + #include "/lib/color_utils_end.glsl" #elif defined NETHER - #include "/lib/color_utils_nether.glsl" + #include "/lib/color_utils_nether.glsl" #else - #include "/lib/color_utils.glsl" + #include "/lib/color_utils.glsl" #endif -/* Config, uniforms, ins, outs */ +/* Uniforms */ + uniform sampler2D tex; uniform float pixel_size_x; uniform float pixel_size_y; @@ -37,31 +40,31 @@ uniform float dhFarPlane; uniform vec3 cameraPosition; uniform int dhRenderDistance; -#if CLOUD_VOL_STYLE == 1 && V_CLOUDS != 0 - uniform sampler2D colortex2; -#elif V_CLOUDS != 0 - uniform sampler2D gaux2; +#if V_CLOUDS != 0 + uniform sampler2D gaux2; #endif #ifdef NETHER - uniform vec3 fogColor; + uniform vec3 fogColor; #endif #if defined SHADOW_CASTING && !defined NETHER - uniform sampler2DShadow shadowtex1; - #if defined COLORED_SHADOW - uniform sampler2DShadow shadowtex0; - uniform sampler2D shadowcolor0; - #endif + uniform sampler2DShadow shadowtex1; + #if defined COLORED_SHADOW + uniform sampler2DShadow shadowtex0; + uniform sampler2D shadowcolor0; + #endif #endif uniform float blindness; #if MC_VERSION >= 11900 - uniform float darknessFactor; - uniform float darknessLightFactor; + uniform float darknessFactor; + uniform float darknessLightFactor; #endif +/* Ins / Outs */ + varying vec2 texcoord; varying vec4 tint_color; varying vec3 direct_light_color; @@ -81,6 +84,8 @@ varying vec2 lmcoord; varying float block_type; varying float frog_adjust; +/* Utility functions */ + #include "/lib/projection_utils.glsl" #include "/lib/basic_utils.glsl" #include "/lib/dither.glsl" @@ -89,170 +94,140 @@ varying float frog_adjust; #include "/lib/luma.glsl" void main() { - #if AA_TYPE > 0 - float dither = shifted_makeup_dither(gl_FragCoord.xy); - #else - float dither = r_dither(gl_FragCoord.xy); - #endif - // Avoid render in DH transition - float t = far - dhNearPlane; - float sup = t * TRANSITION_DH_SUP; - float inf = t * TRANSITION_DH_INF; - float view_dist = length(position.xyz); - float umbral = (view_dist - (dhNearPlane + inf)) / (far - sup - inf - dhNearPlane); - - float d = texture2D(depthtex0, vec2(gl_FragCoord.x / viewWidth, gl_FragCoord.y / viewHeight)).r; - float linear_d = ld(d); - - if (umbral < dither || linear_d < 0.9999 || view_dist > dhRenderDistance) { - discard; - return; - } - - #if defined VANILLA_WATER || WATER_TEXTURE == 1 - vec4 block_color = vec4(0.1); - // Synthetic water texture - vec3 synth_pos = (position.xyz + cameraPosition) * 2.0; - synth_pos = floor(synth_pos + 0.01); - float synth_noise = (hash13(synth_pos) * 0.2) + 0.4; - block_color.rgb += vec3(synth_noise); - #else - vec4 block_color; - #endif - - vec2 eye_bright_smooth = vec2(eyeBrightnessSmooth); - - vec3 real_light; - - #ifdef VANILLA_WATER - vec3 water_normal_base = vec3(0.0, 0.0, 1.0); - #else - vec3 world_pos = position.xyz + cameraPosition; - vec3 water_normal_base = normal_waves_dh(world_pos.xzy); - #endif - - vec3 surface_normal; - if (block_type < DH_BLOCK_WATER + 0.5 && block_type > DH_BLOCK_WATER - 0.5) { // Water - surface_normal = get_normals(water_normal_base, fragposition); - } else { - surface_normal = get_normals(vec3(0.0, 0.0, 1.0), fragposition); - } - - float normal_dot_eye = dot(surface_normal, normalize(fragposition)); - float fresnel = square_pow(1.0 + normal_dot_eye); - - vec3 reflect_water_vec = reflect(fragposition, surface_normal); - vec3 norm_reflect_water_vec = normalize(reflect_water_vec); - - vec3 sky_color_reflect; - if (isEyeInWater == 0 || isEyeInWater == 2) { - sky_color_reflect = mix( - low_sky_color, - hi_sky_color, - sqrt(clamp(dot(norm_reflect_water_vec, up_vec), 0.0001, 1.0)) - ); - } else { - sky_color_reflect = - hi_sky_color * .5 * ((eye_bright_smooth.y * .8 + 48) * 0.004166666666666667); - } - - if (block_type < DH_BLOCK_WATER + 0.5 && block_type > DH_BLOCK_WATER - 0.5) { // Water + vec2 eye_bright_smooth = vec2(eyeBrightnessSmooth); + vec3 real_light; + + #if AA_TYPE > 0 + float dither = shifted_r_dither(gl_FragCoord.xy); + #else + float dither = r_dither(gl_FragCoord.xy); + // dither = 1.0; + #endif + // Avoid render in DH transition + float t = far - dhNearPlane; + float sup = t * TRANSITION_DH_SUP; + float inf = t * TRANSITION_DH_INF; + float view_dist = length(position.xyz); + float umbral = (view_dist - (dhNearPlane + inf)) / (far - sup - inf - dhNearPlane); + + float d = texture2D(depthtex0, vec2(gl_FragCoord.x / viewWidth, gl_FragCoord.y / viewHeight)).r; + float linear_d = ld(d); + + if(umbral < dither || linear_d < 0.9999 || view_dist > dhRenderDistance) { + discard; + return; + } + #ifdef VANILLA_WATER - float shadow_c = abs((light_mix * 2.0) - 1.0); + vec3 water_normal_base = vec3(0.0, 0.0, 1.0); + #else + vec3 world_pos = position.xyz + cameraPosition; + vec3 water_normal_base = normal_waves_dh(world_pos.xzy); + #endif + + vec3 surface_normal; + if(block_type < DH_BLOCK_WATER + 0.5 && block_type > DH_BLOCK_WATER - 0.5) { // Water + surface_normal = get_normals(water_normal_base, fragposition); + } else { + surface_normal = get_normals(vec3(0.0, 0.0, 1.0), fragposition); + } + + float normal_dot_eye = dot(surface_normal, normalize(fragposition)); + float fresnel = square_pow(1.0 + normal_dot_eye); + + vec3 reflect_water_vec = reflect(fragposition, surface_normal); + vec3 norm_reflect_water_vec = normalize(reflect_water_vec); + + vec3 sky_color_reflect; + if(isEyeInWater == 0 || isEyeInWater == 2) { + sky_color_reflect = mix(low_sky_color, hi_sky_color, sqrt(clamp(dot(norm_reflect_water_vec, up_vec), 0.0001, 1.0))); + } else { + sky_color_reflect = hi_sky_color * .5 * ((eye_bright_smooth.y * .8 + 48) * 0.004166666666666667); + } + + sky_color_reflect = xyz_to_rgb(sky_color_reflect); + + #if !defined VANILLA_WATER && WATER_TEXTURE == 1 + vec4 block_color = vec4(0.1); + // Synthetic water texture + vec3 synth_pos = (position.xyz + cameraPosition) * 8.0; + synth_pos = floor(synth_pos + 0.01); + float noise = hash13(synth_pos); + noise *= noise; + noise *= noise; + noise *= noise; + float synth_noise = (noise * 0.3) + 0.5; + block_color.rgb += vec3(synth_noise); + #elif defined VANILLA_WATER + // Synthetic water texture + vec3 synth_pos = (position.xyz + cameraPosition) * 8.0; + synth_pos = floor(synth_pos + 0.01); + float noise = hash13(synth_pos); + noise *= noise; + noise *= noise; + float synth_noise = (noise * 0.227) + 0.773; + vec4 block_color = vec4(vec3(synth_noise), tint_color.a); + #else + vec4 block_color; + #endif - float fresnel_tex = luma(block_color.rgb); + if(block_type < DH_BLOCK_WATER + 0.5 && block_type > DH_BLOCK_WATER - 0.5) { // Water + #ifdef VANILLA_WATER + float shadow_c = abs((light_mix * 2.0) - 1.0); - real_light = - omni_light + - (direct_light_strength * shadow_c * direct_light_color) * (1.0 - rainStrength * 0.75) + - candle_color; + float fresnel_tex = luma(block_color.rgb); - real_light *= (fresnel_tex * 2.0) - 0.25; + real_light = omni_light + + (direct_light_strength * shadow_c * direct_light_color) * (1.0 - rainStrength * 0.75) + + candle_color; - block_color.rgb *= mix(real_light, vec3(1.0), nightVision * .125) * tint_color.rgb; + real_light *= (fresnel_tex * 2.0) - 0.25; - block_color.rgb = water_shader_dh( - fragposition, - surface_normal, - block_color.rgb, - sky_color_reflect, - norm_reflect_water_vec, - fresnel, - visible_sky, - dither, - direct_light_color - ); + block_color.rgb *= mix(real_light, vec3(1.0), nightVision * .125) * tint_color.rgb; - block_color.a = sqrt(block_color.a); + block_color.rgb = water_shader_dh(fragposition, surface_normal, block_color.rgb, sky_color_reflect, norm_reflect_water_vec, fresnel, visible_sky, dither, direct_light_color); + block_color.a = sqrt(block_color.a); #else + #if WATER_TEXTURE == 1 + float water_texture = luma(block_color.rgb); + #else + float water_texture = 1.0; + #endif - #if WATER_TEXTURE == 1 - float water_texture = luma(block_color.rgb); - #else - float water_texture = 1.0; - #endif - - real_light = - omni_light + - (direct_light_strength * direct_light_color) * (1.0 - rainStrength * 0.75) + - candle_color; + real_light = omni_light + + (direct_light_strength * visible_sky * direct_light_color) * (1.0 - rainStrength * 0.75) + + candle_color; - #if defined NETHER || defined THE_END #if WATER_COLOR_SOURCE == 0 - block_color.rgb = water_texture * real_light * WATER_COLOR; + block_color.rgb = water_texture * real_light * WATER_COLOR; #elif WATER_COLOR_SOURCE == 1 - block_color.rgb = 0.3 * water_texture * real_light * tint_color.rgb; + block_color.rgb = 0.3 * water_texture * real_light * tint_color.rgb; #endif - #else - #if WATER_COLOR_SOURCE == 0 - block_color.rgb = water_texture * real_light * visible_sky * WATER_COLOR; - #elif WATER_COLOR_SOURCE == 1 - block_color.rgb = 0.3 * water_texture * real_light * visible_sky * tint_color.rgb; + + block_color = vec4(refraction(fragposition, block_color.rgb, water_normal_base), 1.0); + + #if WATER_TEXTURE == 1 + fresnel = clamp(fresnel * (water_texture * water_texture + 0.5), 0.0, 1.0); #endif - #endif - - block_color = vec4( - refraction( - fragposition, - block_color.rgb, - water_normal_base - ), - 1.0 - ); - - #if WATER_TEXTURE == 1 - fresnel = clamp(fresnel * (water_texture * water_texture + 0.5), 0.0, 1.0); - #endif - - block_color.rgb = water_shader_dh( - fragposition, - surface_normal, - block_color.rgb, - sky_color_reflect, - norm_reflect_water_vec, - fresnel, - visible_sky, - dither, - direct_light_color - ); + + block_color.rgb = water_shader_dh(fragposition, surface_normal, block_color.rgb, sky_color_reflect, norm_reflect_water_vec, fresnel, visible_sky, dither, direct_light_color); #endif - } else { // Otros translúcidos + } else { // Otros translúcidos - block_color *= tint_color; + block_color = tint_color; - float shadow_c = abs((light_mix * 2.0) - 1.0); + float shadow_c = abs((light_mix * 2.0) - 1.0); - real_light = - omni_light + - (direct_light_strength * shadow_c * direct_light_color) * (1.0 - rainStrength * 0.75) + - candle_color; + real_light = omni_light + + (direct_light_strength * shadow_c * direct_light_color) * (1.0 - rainStrength * 0.75) + + candle_color; - block_color.rgb *= mix(real_light, vec3(1.0), nightVision * .125); - } + block_color.rgb *= mix(real_light, vec3(1.0), nightVision * .125); + } - #include "/src/finalcolor_dh.glsl" - #include "/src/writebuffers.glsl" + #include "/src/finalcolor_dh.glsl" + #include "/src/writebuffers.glsl" } diff --git a/shaders/common/solid_dh_water_vertex.glsl b/shaders/common/solid_dh_water_vertex.glsl index 5b6eb514..f59b4fe3 100644 --- a/shaders/common/solid_dh_water_vertex.glsl +++ b/shaders/common/solid_dh_water_vertex.glsl @@ -1,14 +1,17 @@ #include "/lib/config.glsl" +/* Color utils */ + #if defined THE_END - #include "/lib/color_utils_end.glsl" + #include "/lib/color_utils_end.glsl" #elif defined NETHER - #include "/lib/color_utils_nether.glsl" + #include "/lib/color_utils_nether.glsl" #else - #include "/lib/color_utils.glsl" + #include "/lib/color_utils.glsl" #endif -/* Config, uniforms, ins, outs */ +/* Uniforms */ + uniform ivec2 eyeBrightnessSmooth; uniform mat4 dhProjection; uniform mat4 gbufferModelView; @@ -21,13 +24,15 @@ uniform float rainStrength; uniform mat4 gbufferProjectionInverse; #ifdef DISTANT_HORIZONS - uniform int dhRenderDistance; + uniform int dhRenderDistance; #endif #ifdef UNKNOWN_DIM - uniform sampler2D lightmap; + uniform sampler2D lightmap; #endif +/* Ins / Outs */ + varying vec2 texcoord; varying vec4 tint_color; varying vec3 direct_light_color; @@ -47,30 +52,36 @@ varying vec2 lmcoord; varying float block_type; varying float frog_adjust; +/* Utility functions */ + #if AA_TYPE > 0 - #include "/src/taa_offset.glsl" + #include "/src/taa_offset.glsl" #endif #include "/lib/basic_utils.glsl" #include "/lib/luma.glsl" +// MAIN FUNCTION ------------------ + void main() { - vec2 eye_bright_smooth = vec2(eyeBrightnessSmooth); - #include "/src/basiccoords_vertex_dh.glsl" - #include "/src/position_vertex_dh.glsl" - #include "/src/sky_color_vertex.glsl" - #include "/src/light_vertex_dh.glsl" - - vec4 position2 = gl_ModelViewMatrix * gl_Vertex; - fragposition = position2.xyz; - - binormal = normalize(gbufferModelView[2].xyz); - tangent = normalize(gbufferModelView[0].xyz); - water_normal = normal; - - up_vec = normalize(gbufferModelView[1].xyz); - - if (dhMaterialId == DH_BLOCK_WATER) { // Water - block_type = float(DH_BLOCK_WATER); - } + vec2 eye_bright_smooth = vec2(eyeBrightnessSmooth); + + #include "/src/basiccoords_vertex_dh.glsl" + #include "/src/position_vertex_dh.glsl" + #include "/src/hi_sky.glsl" + #include "/src/low_sky.glsl" + #include "/src/light_vertex_dh.glsl" + + vec4 position2 = gl_ModelViewMatrix * gl_Vertex; + fragposition = position2.xyz; + + binormal = normalize(gbufferModelView[2].xyz); + tangent = normalize(gbufferModelView[0].xyz); + water_normal = normal; + + up_vec = normalize(gbufferModelView[1].xyz); + + if(dhMaterialId == DH_BLOCK_WATER) { // Water + block_type = float(DH_BLOCK_WATER); + } } diff --git a/shaders/common/spidereyes_blocks_fragment.glsl b/shaders/common/spidereyes_blocks_fragment.glsl index d6182155..129bb089 100644 --- a/shaders/common/spidereyes_blocks_fragment.glsl +++ b/shaders/common/spidereyes_blocks_fragment.glsl @@ -1,13 +1,18 @@ #include "/lib/config.glsl" -/* Config, uniforms, ins, outs */ +/* Uniforms */ + uniform sampler2D tex; +/* Ins / Outs */ + varying vec2 texcoord; +// MAIN FUNCTION ------------------ + void main() { - // Toma el color puro del bloque - vec4 block_color = texture2D(tex, texcoord); + // Toma el color puro del bloque + vec4 block_color = texture2D(tex, texcoord); - #include "/src/writebuffers.glsl" + #include "/src/writebuffers.glsl" } diff --git a/shaders/common/spidereyes_blocks_vertex.glsl b/shaders/common/spidereyes_blocks_vertex.glsl index f9d064b9..e7961447 100644 --- a/shaders/common/spidereyes_blocks_vertex.glsl +++ b/shaders/common/spidereyes_blocks_vertex.glsl @@ -1,20 +1,27 @@ #include "/lib/config.glsl" -/* Config, uniforms, ins, outs */ +/* Uniforms */ + uniform mat4 gbufferProjectionInverse; #if defined SHADOW_CASTING && !defined NETHER - uniform mat4 gbufferModelViewInverse; + uniform mat4 gbufferModelViewInverse; #endif +/* Ins / Outs */ + varying vec2 texcoord; +/* Utility functions */ + #if AA_TYPE > 0 - #include "/src/taa_offset.glsl" + #include "/src/taa_offset.glsl" #endif +// MAIN FUNCTION ------------------ + void main() { - texcoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy; + texcoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy; - #include "/src/position_vertex.glsl" + #include "/src/position_vertex.glsl" } \ No newline at end of file diff --git a/shaders/common/water_blocks_fragment.glsl b/shaders/common/water_blocks_fragment.glsl index f4d3b5e1..413d07e3 100644 --- a/shaders/common/water_blocks_fragment.glsl +++ b/shaders/common/water_blocks_fragment.glsl @@ -1,14 +1,17 @@ #include "/lib/config.glsl" +/* Color utils */ + #ifdef THE_END - #include "/lib/color_utils_end.glsl" + #include "/lib/color_utils_end.glsl" #elif defined NETHER - #include "/lib/color_utils_nether.glsl" + #include "/lib/color_utils_nether.glsl" #else - #include "/lib/color_utils.glsl" + #include "/lib/color_utils.glsl" #endif -/* Config, uniforms, ins, outs */ +/* Uniforms */ + uniform sampler2D tex; uniform float pixel_size_x; uniform float pixel_size_y; @@ -32,45 +35,45 @@ uniform ivec2 eyeBrightnessSmooth; uniform sampler2D gaux4; #if defined DISTANT_HORIZONS - uniform float dhNearPlane; - uniform float dhFarPlane; - uniform sampler2D dhDepthTex1; + uniform float dhNearPlane; + uniform float dhFarPlane; + uniform sampler2D dhDepthTex1; #endif -#if CLOUD_VOL_STYLE == 1 && V_CLOUDS != 0 - uniform sampler2D colortex2; -#elif V_CLOUDS != 0 - uniform sampler2D gaux2; +#if V_CLOUDS != 0 + uniform sampler2D gaux2; #endif #ifdef NETHER - uniform vec3 fogColor; + uniform vec3 fogColor; #endif #if defined SHADOW_CASTING && !defined NETHER - uniform sampler2DShadow shadowtex1; - #if defined COLORED_SHADOW - uniform sampler2DShadow shadowtex0; - uniform sampler2D shadowcolor0; - #endif + uniform sampler2DShadow shadowtex1; + #if defined COLORED_SHADOW + uniform sampler2DShadow shadowtex0; + uniform sampler2D shadowcolor0; + #endif #endif #ifdef CLOUD_REFLECTION - // Don't remove (Optifine bug?) + // Don't remove #endif #if defined CLOUD_REFLECTION && (V_CLOUDS != 0 && !defined UNKNOWN_DIM) && !defined NETHER - uniform vec3 cameraPosition; - uniform mat4 gbufferModelViewInverse; + uniform vec3 cameraPosition; + uniform mat4 gbufferModelViewInverse; #endif uniform float blindness; #if MC_VERSION >= 11900 - uniform float darknessFactor; - uniform float darknessLightFactor; + uniform float darknessFactor; + uniform float darknessLightFactor; #endif +/* Ins / Outs */ + varying vec2 texcoord; varying vec2 lmcoord; varying vec4 tint_color; @@ -91,235 +94,183 @@ varying vec3 hi_sky_color; varying vec3 low_sky_color; #if defined SHADOW_CASTING && !defined NETHER - varying vec3 shadow_pos; - varying float shadow_diffuse; + varying vec3 shadow_pos; + varying float shadow_diffuse; #endif #if (V_CLOUDS != 0 && !defined UNKNOWN_DIM) && !defined NO_CLOUDY_SKY - varying float umbral; - varying vec3 cloud_color; - varying vec3 dark_cloud_color; + varying float umbral; + varying vec3 cloud_color; + varying vec3 dark_cloud_color; #endif +/* Utility functions */ + #include "/lib/projection_utils.glsl" #include "/lib/basic_utils.glsl" #include "/lib/dither.glsl" #include "/lib/water.glsl" #if defined SHADOW_CASTING && !defined NETHER - #include "/lib/shadow_frag.glsl" + #include "/lib/shadow_frag.glsl" #endif #include "/lib/luma.glsl" #if defined CLOUD_REFLECTION && (V_CLOUDS != 0 && !defined UNKNOWN_DIM) && !defined NETHER - #include "/lib/volumetric_clouds.glsl" + #include "/lib/volumetric_clouds.glsl" #endif +// MAIN FUNCTION ------------------ + void main() { - #if SHADOW_TYPE == 1 || defined DISTANT_HORIZONS || (defined CLOUD_REFLECTION && (V_CLOUDS != 0 && !defined UNKNOWN_DIM) && !defined NETHER) || SSR_TYPE > 0 - #if AA_TYPE > 0 - float dither = shifted_r_dither(gl_FragCoord.xy); + vec2 eye_bright_smooth = vec2(eyeBrightnessSmooth); + + #if SHADOW_TYPE == 1 || defined DISTANT_HORIZONS || (defined CLOUD_REFLECTION && (V_CLOUDS != 0 && !defined UNKNOWN_DIM) && !defined NETHER) || SSR_TYPE > 0 + #if AA_TYPE > 0 + float dither = shifted_r_dither(gl_FragCoord.xy); + #else + float dither = r_dither(gl_FragCoord.xy); + // dither = 0.0; + #endif #else - float dither = r_dither(gl_FragCoord.xy); + float dither = 1.0; #endif - #else - float dither = 1.0; - #endif - - vec4 block_color = texture2D(tex, texcoord); - - vec2 eye_bright_smooth = vec2(eyeBrightnessSmooth); - - vec3 real_light; - - #ifdef VANILLA_WATER - vec3 water_normal_base = vec3(0.0, 0.0, 1.0); - #else - vec3 water_normal_base = normal_waves(worldposition.xzy); - #endif - - vec3 surface_normal; - if (block_type > 2.5) { // Water - surface_normal = get_normals(water_normal_base, fragposition); - } else { - surface_normal = get_normals(vec3(0.0, 0.0, 1.0), fragposition); - } - - float normal_dot_eye = dot(surface_normal, normalize(fragposition)); - float fresnel = square_pow(1.0 + normal_dot_eye); - - vec3 reflect_water_vec = reflect(fragposition, surface_normal); - vec3 norm_reflect_water_vec = normalize(reflect_water_vec); - - vec3 sky_color_reflect; - if (isEyeInWater == 0 || isEyeInWater == 2) { - sky_color_reflect = mix( - low_sky_color, - hi_sky_color, - sqrt(clamp(dot(norm_reflect_water_vec, up_vec), 0.0001, 1.0)) - ); - } else { - sky_color_reflect = - hi_sky_color * .5 * ((eye_bright_smooth.y * .8 + 48) * 0.004166666666666667); - } - - #if defined CLOUD_REFLECTION && (V_CLOUDS != 0 && !defined UNKNOWN_DIM) && !defined NETHER - sky_color_reflect = get_cloud( - normalize((gbufferModelViewInverse * vec4(reflect_water_vec * far, 1.0)).xyz), - sky_color_reflect, - 0.0, - dither, - worldposition.xyz, - int(CLOUD_STEPS_AVG * 0.5), - umbral, - cloud_color, - dark_cloud_color - ); - #endif - - if (block_type > 2.5) { // Water + + // vec4 block_color = texture2D(tex, texcoord); + vec4 block_color; + vec3 real_light; + #ifdef VANILLA_WATER - #if defined SHADOW_CASTING && !defined NETHER - #if defined COLORED_SHADOW - vec3 shadow_c = get_colored_shadow(shadow_pos, dither); - shadow_c = mix(shadow_c, vec3(1.0), shadow_diffuse); - #else - float shadow_c = get_shadow(shadow_pos, dither); - shadow_c = mix(shadow_c, 1.0, shadow_diffuse); - #endif - #else - float shadow_c = abs((light_mix * 2.0) - 1.0); - #endif + vec3 water_normal_base = vec3(0.0, 0.0, 1.0); + #else + vec3 water_normal_base = normal_waves(worldposition.xzy); + #endif + + vec3 surface_normal; + if(block_type > 2.5) { // Water + surface_normal = get_normals(water_normal_base, fragposition); + } else { + surface_normal = get_normals(vec3(0.0, 0.0, 1.0), fragposition); + } - float fresnel_tex = luma(block_color.rgb); + float normal_dot_eye = dot(surface_normal, normalize(fragposition)); + float fresnel = square_pow(1.0 + normal_dot_eye); - real_light = - omni_light + - (direct_light_strength * shadow_c * direct_light_color) * (1.0 - rainStrength * 0.75) + - candle_color; + vec3 reflect_water_vec = reflect(fragposition, surface_normal); + vec3 norm_reflect_water_vec = normalize(reflect_water_vec); - real_light *= (fresnel_tex * 2.0) - 0.25; + vec3 sky_color_reflect; + if(isEyeInWater == 0 || isEyeInWater == 2) { + sky_color_reflect = mix(low_sky_color, hi_sky_color, sqrt(clamp(dot(norm_reflect_water_vec, up_vec), 0.0001, 1.0))); + } else { + sky_color_reflect = hi_sky_color * .5 * ((eye_bright_smooth.y * .8 + 48) * 0.004166666666666667); + } - block_color.rgb *= mix(real_light, vec3(1.0), nightVision * .125) * tint_color.rgb; + sky_color_reflect = xyz_to_rgb(sky_color_reflect); - block_color.rgb = water_shader( - fragposition, - surface_normal, - block_color.rgb, - sky_color_reflect, - norm_reflect_water_vec, - fresnel, - visible_sky, - dither, - direct_light_color - ); + #if defined CLOUD_REFLECTION && (V_CLOUDS != 0 && !defined UNKNOWN_DIM) && !defined NETHER + sky_color_reflect = get_cloud(normalize((gbufferModelViewInverse * vec4(reflect_water_vec * far, 1.0)).xyz), sky_color_reflect, 0.0, dither, worldposition.xyz, int(CLOUD_STEPS_AVG * 0.5), umbral, cloud_color, dark_cloud_color); + #endif + if(block_type > 2.5) { // Water + #ifdef VANILLA_WATER + block_color = texture2D(tex, texcoord); + #if defined SHADOW_CASTING && !defined NETHER + #if defined COLORED_SHADOW + vec3 shadow_c = get_colored_shadow(shadow_pos, dither); + shadow_c = mix(shadow_c, vec3(1.0), shadow_diffuse); + #else + float shadow_c = get_shadow(shadow_pos, dither); + shadow_c = mix(shadow_c, 1.0, shadow_diffuse); + #endif + #else + float shadow_c = abs((light_mix * 2.0) - 1.0); + #endif + + float fresnel_tex = luma(block_color.rgb); + + real_light = omni_light + + (direct_light_strength * shadow_c * direct_light_color) * (1.0 - rainStrength * 0.75) + + candle_color; + + real_light *= (fresnel_tex * 2.0) - 0.25; + + block_color.rgb *= mix(real_light, vec3(1.0), nightVision * .125) * tint_color.rgb; + + block_color.rgb = water_shader(fragposition, surface_normal, block_color.rgb, sky_color_reflect, norm_reflect_water_vec, fresnel, visible_sky, dither, direct_light_color); + + block_color.a = sqrt(block_color.a); + #else + #if WATER_TEXTURE == 1 + block_color = texture2D(tex, texcoord); + float water_texture = luma(block_color.rgb); + #else + float water_texture = 1.0; + #endif + + real_light = omni_light + + (direct_light_strength * visible_sky * direct_light_color) * (1.0 - rainStrength * 0.75) + + candle_color; + + #if WATER_COLOR_SOURCE == 0 + block_color.rgb = water_texture * real_light * WATER_COLOR; + #elif WATER_COLOR_SOURCE == 1 + block_color.rgb = 0.3 * water_texture * real_light * tint_color.rgb; + #endif + + block_color = vec4(refraction(fragposition, block_color.rgb, water_normal_base), 1.0); + + #if WATER_TEXTURE == 1 + water_texture += 0.25; + water_texture *= water_texture; + water_texture *= water_texture; + fresnel = clamp(fresnel * (water_texture), 0.0, 1.0); + #endif + + block_color.rgb = water_shader(fragposition, surface_normal, block_color.rgb, sky_color_reflect, norm_reflect_water_vec, fresnel, visible_sky, dither, direct_light_color); + + #endif - block_color.a = sqrt(block_color.a); + } else { // Otros translúcidos + block_color = texture2D(tex, texcoord); - #else + block_color *= tint_color; - #if WATER_TEXTURE == 1 - float water_texture = luma(block_color.rgb); - #else - float water_texture = 1.0; - #endif - - real_light = - omni_light + - (direct_light_strength * direct_light_color) * (1.0 - rainStrength * 0.75) + - candle_color; - - #if defined NETHER || defined THE_END - #if WATER_COLOR_SOURCE == 0 - block_color.rgb = water_texture * real_light * WATER_COLOR; - #elif WATER_COLOR_SOURCE == 1 - block_color.rgb = 0.3 * water_texture * real_light * tint_color.rgb; + #if defined SHADOW_CASTING && !defined NETHER + #if defined COLORED_SHADOW + vec3 shadow_c = get_colored_shadow(shadow_pos, dither); + shadow_c = mix(shadow_c, vec3(1.0), shadow_diffuse); + #else + float shadow_c = get_shadow(shadow_pos, dither); + shadow_c = mix(shadow_c, 1.0, shadow_diffuse); #endif - #else - #if WATER_COLOR_SOURCE == 0 - block_color.rgb = water_texture * real_light * visible_sky * WATER_COLOR; - #elif WATER_COLOR_SOURCE == 1 - block_color.rgb = 0.3 * water_texture * real_light * visible_sky * tint_color.rgb; + #else + float shadow_c = abs((light_mix * 2.0) - 1.0); #endif - #endif - - block_color = vec4( - refraction( - fragposition, - block_color.rgb, - water_normal_base - ), - 1.0 - ); - - #if WATER_TEXTURE == 1 - fresnel = clamp(fresnel * (water_texture * water_texture + 0.5), 0.0, 1.0); - #endif - - block_color.rgb = water_shader( - fragposition, - surface_normal, - block_color.rgb, - sky_color_reflect, - norm_reflect_water_vec, - fresnel, - visible_sky, - dither, - direct_light_color - ); - #endif + real_light = omni_light + + (direct_light_strength * shadow_c * direct_light_color) * (1.0 - rainStrength * 0.75) + + candle_color; - } else { // Otros translúcidos + block_color.rgb *= mix(real_light, vec3(1.0), nightVision * .125); - block_color *= tint_color; + if(block_type > 1.5) { // Glass + block_color = cristal_shader(fragposition, water_normal, block_color, sky_color_reflect, fresnel * fresnel, visible_sky, dither, direct_light_color); + } + } - #if defined SHADOW_CASTING && !defined NETHER - #if defined COLORED_SHADOW - vec3 shadow_c = get_colored_shadow(shadow_pos, dither); - shadow_c = mix(shadow_c, vec3(1.0), shadow_diffuse); - #else - float shadow_c = get_shadow(shadow_pos, dither); - shadow_c = mix(shadow_c, 1.0, shadow_diffuse); - #endif - #else - float shadow_c = abs((light_mix * 2.0) - 1.0); + // Avoid render in DH transition + #ifdef DISTANT_HORIZONS + float t = far - dhNearPlane; + float sup = t * TRANSITION_DH_SUP; + float inf = t * TRANSITION_DH_INF; + float draw_umbral = (gl_FogFragCoord - (dhNearPlane + inf)) / (far - sup - inf - dhNearPlane); + if(draw_umbral > dither) { + discard; + return; + } #endif - real_light = - omni_light + - (direct_light_strength * shadow_c * direct_light_color) * (1.0 - rainStrength * 0.75) + - candle_color; - - block_color.rgb *= mix(real_light, vec3(1.0), nightVision * .125); - - if (block_type > 1.5) { // Glass - block_color = cristal_shader( - fragposition, - water_normal, - block_color, - sky_color_reflect, - fresnel * fresnel, - visible_sky, - dither, - direct_light_color - ); - } - } - - // Avoid render in DH transition - #ifdef DISTANT_HORIZONS - float t = far - dhNearPlane; - float sup = t * TRANSITION_WATER_SUP; - float inf = t * TRANSITION_WATER_INF; - float draw_umbral = (gl_FogFragCoord - (dhNearPlane + inf)) / (far - sup - inf - dhNearPlane); - if (draw_umbral > dither) { - discard; - return; - } - #endif - - #include "/src/finalcolor.glsl" - #include "/src/writebuffers.glsl" + #include "/src/finalcolor.glsl" + #include "/src/writebuffers.glsl" } diff --git a/shaders/common/water_blocks_vertex.glsl b/shaders/common/water_blocks_vertex.glsl index 04f974af..f874b04e 100644 --- a/shaders/common/water_blocks_vertex.glsl +++ b/shaders/common/water_blocks_vertex.glsl @@ -1,14 +1,17 @@ #include "/lib/config.glsl" +/* Color utils */ + #ifdef THE_END - #include "/lib/color_utils_end.glsl" + #include "/lib/color_utils_end.glsl" #elif defined NETHER - #include "/lib/color_utils_nether.glsl" + #include "/lib/color_utils_nether.glsl" #else - #include "/lib/color_utils.glsl" + #include "/lib/color_utils.glsl" #endif -/* Config, uniforms, ins, outs */ +/* Uniforms */ + uniform vec3 sunPosition; uniform int isEyeInWater; uniform float light_mix; @@ -22,24 +25,26 @@ uniform float rainStrength; uniform mat4 gbufferProjectionInverse; #ifdef DISTANT_HORIZONS - uniform int dhRenderDistance; + uniform int dhRenderDistance; #endif #ifdef DYN_HAND_LIGHT - uniform int heldItemId; - uniform int heldItemId2; + uniform int heldItemId; + uniform int heldItemId2; #endif #ifdef UNKNOWN_DIM - uniform sampler2D lightmap; + uniform sampler2D lightmap; #endif #if defined SHADOW_CASTING && !defined NETHER - uniform mat4 shadowModelView; - uniform mat4 shadowProjection; - uniform vec3 shadowLightPosition; + uniform mat4 shadowModelView; + uniform mat4 shadowProjection; + uniform vec3 shadowLightPosition; #endif +/* Ins / Outs */ + varying vec2 texcoord; varying vec2 lmcoord; varying vec4 tint_color; @@ -60,77 +65,71 @@ varying vec3 hi_sky_color; varying vec3 low_sky_color; #if defined SHADOW_CASTING && !defined NETHER - varying vec3 shadow_pos; - varying float shadow_diffuse; + varying vec3 shadow_pos; + varying float shadow_diffuse; #endif #if (V_CLOUDS != 0 && !defined UNKNOWN_DIM) && !defined NO_CLOUDY_SKY - varying float umbral; - varying vec3 cloud_color; - varying vec3 dark_cloud_color; + varying float umbral; + varying vec3 cloud_color; + varying vec3 dark_cloud_color; #endif attribute vec4 mc_Entity; attribute vec4 at_tangent; +/* Utility functions */ + #if AA_TYPE > 1 - #include "/src/taa_offset.glsl" + #include "/src/taa_offset.glsl" #endif #include "/lib/basic_utils.glsl" #if defined SHADOW_CASTING && !defined NETHER - #include "/lib/shadow_vertex.glsl" + #include "/lib/shadow_vertex.glsl" #endif +/* Utility functions */ + #include "/lib/luma.glsl" -void main() { - vec2 eye_bright_smooth = vec2(eyeBrightnessSmooth); - - #include "/src/basiccoords_vertex.glsl" +// MAIN FUNCTION ------------------ - vec4 position2 = gl_ModelViewMatrix * gl_Vertex; - fragposition = position2.xyz; - vec4 position = gbufferModelViewInverse * position2; - worldposition = position + vec4(cameraPosition.xyz, 0.0); - gl_Position = gl_ProjectionMatrix * gbufferModelView * position; +void main() { + vec2 eye_bright_smooth = vec2(eyeBrightnessSmooth); - #if AA_TYPE > 1 - gl_Position.xy += taa_offset * gl_Position.w; - #endif + #include "/src/basiccoords_vertex.glsl" + #include "/src/position_vertex_water.glsl" - vec3 viewPos = gl_Position.xyz / gl_Position.w; - vec4 homopos = gbufferProjectionInverse * vec4(viewPos, 1.0); - viewPos = homopos.xyz / homopos.w; - gl_FogFragCoord = length(viewPos.xyz); + // Sky color calculation + #include "/src/hi_sky.glsl" + #include "/src/low_sky.glsl" - // Reflected sky color calculation - #include "/src/sky_color_vertex.glsl" + #include "/src/light_vertex.glsl" - #include "/src/light_vertex.glsl" - water_normal = normal; + water_normal = normal; - tangent = normalize(gl_NormalMatrix * at_tangent.xyz); - binormal = normalize(gl_NormalMatrix * -cross(gl_Normal, at_tangent.xyz)); + tangent = normalize(gl_NormalMatrix * at_tangent.xyz); + binormal = normalize(gl_NormalMatrix * -cross(gl_Normal, at_tangent.xyz)); - // Special entities - block_type = 0.0; // 3 - Water, 2 - Glass, ? - Other - if (mc_Entity.x == ENTITY_WATER) { // Water - block_type = 3.0; - } else if (mc_Entity.x == ENTITY_STAINED) { // Glass - block_type = 2.0; - } + // Special entities + block_type = 0.0; // 3 - Water, 2 - Glass, ? - Other + if(mc_Entity.x == ENTITY_WATER) { // Water + block_type = 3.0; + } else if(mc_Entity.x == ENTITY_STAINED) { // Glass + block_type = 2.0; + } - up_vec = normalize(gbufferModelView[1].xyz); + up_vec = normalize(gbufferModelView[1].xyz); - #include "/src/fog_vertex.glsl" + #include "/src/fog_vertex.glsl" - #if defined SHADOW_CASTING && !defined NETHER - #include "/src/shadow_src_vertex.glsl" - #endif + #if defined SHADOW_CASTING && !defined NETHER + #include "/src/shadow_src_vertex.glsl" + #endif - #if (V_CLOUDS != 0 && !defined UNKNOWN_DIM) && !defined NO_CLOUDY_SKY - #include "/lib/volumetric_clouds_vertex.glsl" - #endif + #if (V_CLOUDS != 0 && !defined UNKNOWN_DIM) && !defined NO_CLOUDY_SKY + #include "/lib/volumetric_clouds_vertex.glsl" + #endif } diff --git a/shaders/composite.fsh b/shaders/composite.fsh index fbe86901..532802c8 100644 --- a/shaders/composite.fsh +++ b/shaders/composite.fsh @@ -8,7 +8,7 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define USE_BASIC_SH // Sets the use of a "basic" or "generic" shader for custom dimensions, instead of the default overworld shader. This can solve some rendering issues as the shader is closer to vanilla rendering. #ifdef USE_BASIC_SH - #define UNKNOWN_DIM + #define UNKNOWN_DIM #endif #define COMPOSITE_SHADER diff --git a/shaders/composite.vsh b/shaders/composite.vsh index 40f546fb..d4827e4f 100644 --- a/shaders/composite.vsh +++ b/shaders/composite.vsh @@ -8,7 +8,7 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define USE_BASIC_SH // Sets the use of a "basic" or "generic" shader for custom dimensions, instead of the default overworld shader. This can solve some rendering issues as the shader is closer to vanilla rendering. #ifdef USE_BASIC_SH - #define UNKNOWN_DIM + #define UNKNOWN_DIM #endif #define COMPOSITE_SHADER diff --git a/shaders/composite1.fsh b/shaders/composite1.fsh index f7b151dc..bbe70881 100644 --- a/shaders/composite1.fsh +++ b/shaders/composite1.fsh @@ -8,7 +8,7 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define USE_BASIC_SH // Sets the use of a "basic" or "generic" shader for custom dimensions, instead of the default overworld shader. This can solve some rendering issues as the shader is closer to vanilla rendering. #ifdef USE_BASIC_SH - #define UNKNOWN_DIM + #define UNKNOWN_DIM #endif #define COMPOSITE1_SHADER diff --git a/shaders/composite1.vsh b/shaders/composite1.vsh index bc89242b..fd4c9019 100644 --- a/shaders/composite1.vsh +++ b/shaders/composite1.vsh @@ -8,7 +8,7 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define USE_BASIC_SH // Sets the use of a "basic" or "generic" shader for custom dimensions, instead of the default overworld shader. This can solve some rendering issues as the shader is closer to vanilla rendering. #ifdef USE_BASIC_SH - #define UNKNOWN_DIM + #define UNKNOWN_DIM #endif #define COMPOSITE1_SHADER diff --git a/shaders/composite2.fsh b/shaders/composite2.fsh index 3f4b5b00..547b766a 100644 --- a/shaders/composite2.fsh +++ b/shaders/composite2.fsh @@ -8,7 +8,7 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define USE_BASIC_SH // Sets the use of a "basic" or "generic" shader for custom dimensions, instead of the default overworld shader. This can solve some rendering issues as the shader is closer to vanilla rendering. #ifdef USE_BASIC_SH - #define UNKNOWN_DIM + #define UNKNOWN_DIM #endif #define COMPOSITE2_SHADER #define NO_SHADOWS diff --git a/shaders/composite2.vsh b/shaders/composite2.vsh index 96fbef44..2143e4a0 100644 --- a/shaders/composite2.vsh +++ b/shaders/composite2.vsh @@ -8,7 +8,7 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define USE_BASIC_SH // Sets the use of a "basic" or "generic" shader for custom dimensions, instead of the default overworld shader. This can solve some rendering issues as the shader is closer to vanilla rendering. #ifdef USE_BASIC_SH - #define UNKNOWN_DIM + #define UNKNOWN_DIM #endif #define COMPOSITE2_SHADER diff --git a/shaders/deferred.fsh b/shaders/deferred.fsh index 3c7beee5..55e52743 100644 --- a/shaders/deferred.fsh +++ b/shaders/deferred.fsh @@ -8,7 +8,7 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define USE_BASIC_SH // Sets the use of a "basic" or "generic" shader for custom dimensions, instead of the default overworld shader. This can solve some rendering issues as the shader is closer to vanilla rendering. #ifdef USE_BASIC_SH - #define UNKNOWN_DIM + #define UNKNOWN_DIM #endif #define DEFERRED_SHADER #define NO_SHADOWS diff --git a/shaders/deferred.vsh b/shaders/deferred.vsh index 9c131830..80e340ec 100644 --- a/shaders/deferred.vsh +++ b/shaders/deferred.vsh @@ -8,7 +8,7 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define USE_BASIC_SH // Sets the use of a "basic" or "generic" shader for custom dimensions, instead of the default overworld shader. This can solve some rendering issues as the shader is closer to vanilla rendering. #ifdef USE_BASIC_SH - #define UNKNOWN_DIM + #define UNKNOWN_DIM #endif #define DEFERRED_SHADER diff --git a/shaders/final.fsh b/shaders/final.fsh index 4b245af4..a824b8f5 100644 --- a/shaders/final.fsh +++ b/shaders/final.fsh @@ -8,7 +8,7 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define USE_BASIC_SH // Sets the use of a "basic" or "generic" shader for custom dimensions, instead of the default overworld shader. This can solve some rendering issues as the shader is closer to vanilla rendering. #ifdef USE_BASIC_SH - #define UNKNOWN_DIM + #define UNKNOWN_DIM #endif #define FINAL_SHADER #define NO_SHADOWS diff --git a/shaders/final.vsh b/shaders/final.vsh index fc7974e7..7b2ef90e 100644 --- a/shaders/final.vsh +++ b/shaders/final.vsh @@ -8,7 +8,7 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define USE_BASIC_SH // Sets the use of a "basic" or "generic" shader for custom dimensions, instead of the default overworld shader. This can solve some rendering issues as the shader is closer to vanilla rendering. #ifdef USE_BASIC_SH - #define UNKNOWN_DIM + #define UNKNOWN_DIM #endif #define FINAL_SHADER diff --git a/shaders/gbuffers_armor_glint.fsh b/shaders/gbuffers_armor_glint.fsh index 245c4540..14f201ce 100644 --- a/shaders/gbuffers_armor_glint.fsh +++ b/shaders/gbuffers_armor_glint.fsh @@ -8,7 +8,7 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define USE_BASIC_SH // Sets the use of a "basic" or "generic" shader for custom dimensions, instead of the default overworld shader. This can solve some rendering issues as the shader is closer to vanilla rendering. #ifdef USE_BASIC_SH - #define UNKNOWN_DIM + #define UNKNOWN_DIM #endif #define GBUFFER_ARMOR_GLINT #define SHADER_BASIC diff --git a/shaders/gbuffers_armor_glint.vsh b/shaders/gbuffers_armor_glint.vsh index 86410e3b..ac9fc903 100644 --- a/shaders/gbuffers_armor_glint.vsh +++ b/shaders/gbuffers_armor_glint.vsh @@ -8,7 +8,7 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define USE_BASIC_SH // Sets the use of a "basic" or "generic" shader for custom dimensions, instead of the default overworld shader. This can solve some rendering issues as the shader is closer to vanilla rendering. #ifdef USE_BASIC_SH - #define UNKNOWN_DIM + #define UNKNOWN_DIM #endif #define GBUFFER_ARMOR_GLINT #define ENTITY_GLINT diff --git a/shaders/gbuffers_basic.fsh b/shaders/gbuffers_basic.fsh index 10a7840b..c667a17d 100644 --- a/shaders/gbuffers_basic.fsh +++ b/shaders/gbuffers_basic.fsh @@ -8,7 +8,7 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define USE_BASIC_SH // Sets the use of a "basic" or "generic" shader for custom dimensions, instead of the default overworld shader. This can solve some rendering issues as the shader is closer to vanilla rendering. #ifdef USE_BASIC_SH - #define UNKNOWN_DIM + #define UNKNOWN_DIM #endif #define GBUFFER_BASIC #define NO_SHADOWS diff --git a/shaders/gbuffers_basic.vsh b/shaders/gbuffers_basic.vsh index 582d7761..ae248f47 100644 --- a/shaders/gbuffers_basic.vsh +++ b/shaders/gbuffers_basic.vsh @@ -8,7 +8,7 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define USE_BASIC_SH // Sets the use of a "basic" or "generic" shader for custom dimensions, instead of the default overworld shader. This can solve some rendering issues as the shader is closer to vanilla rendering. #ifdef USE_BASIC_SH - #define UNKNOWN_DIM + #define UNKNOWN_DIM #endif #define GBUFFER_BASIC #define NO_SHADOWS diff --git a/shaders/gbuffers_beaconbeam.fsh b/shaders/gbuffers_beaconbeam.fsh index c7fd75db..258594a6 100644 --- a/shaders/gbuffers_beaconbeam.fsh +++ b/shaders/gbuffers_beaconbeam.fsh @@ -8,7 +8,7 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define USE_BASIC_SH // Sets the use of a "basic" or "generic" shader for custom dimensions, instead of the default overworld shader. This can solve some rendering issues as the shader is closer to vanilla rendering. #ifdef USE_BASIC_SH - #define UNKNOWN_DIM + #define UNKNOWN_DIM #endif #define GBUFFER_BEACONBEAM diff --git a/shaders/gbuffers_beaconbeam.vsh b/shaders/gbuffers_beaconbeam.vsh index 6947c5af..5858935f 100644 --- a/shaders/gbuffers_beaconbeam.vsh +++ b/shaders/gbuffers_beaconbeam.vsh @@ -8,7 +8,7 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define USE_BASIC_SH // Sets the use of a "basic" or "generic" shader for custom dimensions, instead of the default overworld shader. This can solve some rendering issues as the shader is closer to vanilla rendering. #ifdef USE_BASIC_SH - #define UNKNOWN_DIM + #define UNKNOWN_DIM #endif #define GBUFFER_BEACONBEAM diff --git a/shaders/gbuffers_block.fsh b/shaders/gbuffers_block.fsh index 9e533e47..ba0ebcdf 100644 --- a/shaders/gbuffers_block.fsh +++ b/shaders/gbuffers_block.fsh @@ -8,7 +8,7 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define USE_BASIC_SH // Sets the use of a "basic" or "generic" shader for custom dimensions, instead of the default overworld shader. This can solve some rendering issues as the shader is closer to vanilla rendering. #ifdef USE_BASIC_SH - #define UNKNOWN_DIM + #define UNKNOWN_DIM #endif #define GBUFFER_BLOCK diff --git a/shaders/gbuffers_block.vsh b/shaders/gbuffers_block.vsh index de8299eb..a5e84ebd 100644 --- a/shaders/gbuffers_block.vsh +++ b/shaders/gbuffers_block.vsh @@ -8,7 +8,7 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define USE_BASIC_SH // Sets the use of a "basic" or "generic" shader for custom dimensions, instead of the default overworld shader. This can solve some rendering issues as the shader is closer to vanilla rendering. #ifdef USE_BASIC_SH - #define UNKNOWN_DIM + #define UNKNOWN_DIM #endif #define GBUFFER_BLOCK diff --git a/shaders/gbuffers_clouds.fsh b/shaders/gbuffers_clouds.fsh index a874673d..b6b38134 100644 --- a/shaders/gbuffers_clouds.fsh +++ b/shaders/gbuffers_clouds.fsh @@ -8,7 +8,7 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define USE_BASIC_SH // Sets the use of a "basic" or "generic" shader for custom dimensions, instead of the default overworld shader. This can solve some rendering issues as the shader is closer to vanilla rendering. #ifdef USE_BASIC_SH - #define UNKNOWN_DIM + #define UNKNOWN_DIM #endif #define GBUFFER_CLOUDS #define NO_SHADOWS diff --git a/shaders/gbuffers_clouds.vsh b/shaders/gbuffers_clouds.vsh index 2f762d55..95a771e8 100644 --- a/shaders/gbuffers_clouds.vsh +++ b/shaders/gbuffers_clouds.vsh @@ -8,7 +8,7 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define USE_BASIC_SH // Sets the use of a "basic" or "generic" shader for custom dimensions, instead of the default overworld shader. This can solve some rendering issues as the shader is closer to vanilla rendering. #ifdef USE_BASIC_SH - #define UNKNOWN_DIM + #define UNKNOWN_DIM #endif #define GBUFFER_CLOUDS #define NO_SHADOWS diff --git a/shaders/gbuffers_damagedblock.fsh b/shaders/gbuffers_damagedblock.fsh index 9c5cf170..93d9c83c 100644 --- a/shaders/gbuffers_damagedblock.fsh +++ b/shaders/gbuffers_damagedblock.fsh @@ -8,7 +8,7 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define USE_BASIC_SH // Sets the use of a "basic" or "generic" shader for custom dimensions, instead of the default overworld shader. This can solve some rendering issues as the shader is closer to vanilla rendering. #ifdef USE_BASIC_SH - #define UNKNOWN_DIM + #define UNKNOWN_DIM #endif #define NO_SHADOWS #define GBUFFER_DAMAGE diff --git a/shaders/gbuffers_damagedblock.vsh b/shaders/gbuffers_damagedblock.vsh index dbad621c..67c448e2 100644 --- a/shaders/gbuffers_damagedblock.vsh +++ b/shaders/gbuffers_damagedblock.vsh @@ -8,7 +8,7 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define USE_BASIC_SH // Sets the use of a "basic" or "generic" shader for custom dimensions, instead of the default overworld shader. This can solve some rendering issues as the shader is closer to vanilla rendering. #ifdef USE_BASIC_SH - #define UNKNOWN_DIM + #define UNKNOWN_DIM #endif #define NO_SHADOWS #define GBUFFER_DAMAGE diff --git a/shaders/gbuffers_entities.fsh b/shaders/gbuffers_entities.fsh index 9af03dc1..61123f0b 100644 --- a/shaders/gbuffers_entities.fsh +++ b/shaders/gbuffers_entities.fsh @@ -8,7 +8,7 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define USE_BASIC_SH // Sets the use of a "basic" or "generic" shader for custom dimensions, instead of the default overworld shader. This can solve some rendering issues as the shader is closer to vanilla rendering. #ifdef USE_BASIC_SH - #define UNKNOWN_DIM + #define UNKNOWN_DIM #endif #define GBUFFER_ENTITIES diff --git a/shaders/gbuffers_entities.vsh b/shaders/gbuffers_entities.vsh index 79155c49..90a3c6eb 100644 --- a/shaders/gbuffers_entities.vsh +++ b/shaders/gbuffers_entities.vsh @@ -8,7 +8,7 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define USE_BASIC_SH // Sets the use of a "basic" or "generic" shader for custom dimensions, instead of the default overworld shader. This can solve some rendering issues as the shader is closer to vanilla rendering. #ifdef USE_BASIC_SH - #define UNKNOWN_DIM + #define UNKNOWN_DIM #endif #define GBUFFER_ENTITIES #define CAVEENTITY_V diff --git a/shaders/gbuffers_entities_glowing.fsh b/shaders/gbuffers_entities_glowing.fsh index 91f336e2..e19f7d8b 100644 --- a/shaders/gbuffers_entities_glowing.fsh +++ b/shaders/gbuffers_entities_glowing.fsh @@ -6,7 +6,7 @@ Javier Garduño - GNU Lesser General Public License v3.0 */ #ifdef USE_BASIC_SH - #define UNKNOWN_DIM + #define UNKNOWN_DIM #endif #define GBUFFER_ENTITIES #define GBUFFER_ENTITY_GLOW diff --git a/shaders/gbuffers_entities_glowing.vsh b/shaders/gbuffers_entities_glowing.vsh index 8e8d1bfe..23fc1dfc 100644 --- a/shaders/gbuffers_entities_glowing.vsh +++ b/shaders/gbuffers_entities_glowing.vsh @@ -6,7 +6,7 @@ Javier Garduño - GNU Lesser General Public License v3.0 */ #ifdef USE_BASIC_SH - #define UNKNOWN_DIM + #define UNKNOWN_DIM #endif #define GBUFFER_ENTITIES #define GBUFFER_ENTITY_GLOW diff --git a/shaders/gbuffers_hand.fsh b/shaders/gbuffers_hand.fsh index 9ec041b9..e8664a9b 100644 --- a/shaders/gbuffers_hand.fsh +++ b/shaders/gbuffers_hand.fsh @@ -8,7 +8,7 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define USE_BASIC_SH // Sets the use of a "basic" or "generic" shader for custom dimensions, instead of the default overworld shader. This can solve some rendering issues as the shader is closer to vanilla rendering. #ifdef USE_BASIC_SH - #define UNKNOWN_DIM + #define UNKNOWN_DIM #endif #define GBUFFER_HAND diff --git a/shaders/gbuffers_hand.vsh b/shaders/gbuffers_hand.vsh index e900b443..128007d6 100644 --- a/shaders/gbuffers_hand.vsh +++ b/shaders/gbuffers_hand.vsh @@ -8,7 +8,7 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define USE_BASIC_SH // Sets the use of a "basic" or "generic" shader for custom dimensions, instead of the default overworld shader. This can solve some rendering issues as the shader is closer to vanilla rendering. #ifdef USE_BASIC_SH - #define UNKNOWN_DIM + #define UNKNOWN_DIM #endif #define GBUFFER_HAND diff --git a/shaders/gbuffers_hand_water.fsh b/shaders/gbuffers_hand_water.fsh index 5caec050..d88297eb 100644 --- a/shaders/gbuffers_hand_water.fsh +++ b/shaders/gbuffers_hand_water.fsh @@ -8,7 +8,7 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define USE_BASIC_SH // Sets the use of a "basic" or "generic" shader for custom dimensions, instead of the default overworld shader. This can solve some rendering issues as the shader is closer to vanilla rendering. #ifdef USE_BASIC_SH - #define UNKNOWN_DIM + #define UNKNOWN_DIM #endif #define GBUFFER_HAND_WATER #define SPECIAL_TRANS diff --git a/shaders/gbuffers_hand_water.vsh b/shaders/gbuffers_hand_water.vsh index 573a3f9d..9cf9d022 100644 --- a/shaders/gbuffers_hand_water.vsh +++ b/shaders/gbuffers_hand_water.vsh @@ -8,7 +8,7 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define USE_BASIC_SH // Sets the use of a "basic" or "generic" shader for custom dimensions, instead of the default overworld shader. This can solve some rendering issues as the shader is closer to vanilla rendering. #ifdef USE_BASIC_SH - #define UNKNOWN_DIM + #define UNKNOWN_DIM #endif #define GBUFFER_HAND_WATER diff --git a/shaders/gbuffers_line.fsh b/shaders/gbuffers_line.fsh index 81a3e982..43ef5a58 100644 --- a/shaders/gbuffers_line.fsh +++ b/shaders/gbuffers_line.fsh @@ -8,8 +8,9 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define USE_BASIC_SH // Sets the use of a "basic" or "generic" shader for custom dimensions, instead of the default overworld shader. This can solve some rendering issues as the shader is closer to vanilla rendering. #ifdef USE_BASIC_SH - #define UNKNOWN_DIM + #define UNKNOWN_DIM #endif #define GBUFFER_LINE +#define NO_SHADOWS #include "/common/line_blocks_fragment.glsl" diff --git a/shaders/gbuffers_line.vsh b/shaders/gbuffers_line.vsh index b0c18b86..2c7e2d72 100644 --- a/shaders/gbuffers_line.vsh +++ b/shaders/gbuffers_line.vsh @@ -8,7 +8,7 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define USE_BASIC_SH // Sets the use of a "basic" or "generic" shader for custom dimensions, instead of the default overworld shader. This can solve some rendering issues as the shader is closer to vanilla rendering. #ifdef USE_BASIC_SH - #define UNKNOWN_DIM + #define UNKNOWN_DIM #endif #define GBUFFER_LINE #define NO_SHADOWS diff --git a/shaders/gbuffers_skybasic.fsh b/shaders/gbuffers_skybasic.fsh index 1abe909d..fe7df7dc 100644 --- a/shaders/gbuffers_skybasic.fsh +++ b/shaders/gbuffers_skybasic.fsh @@ -8,7 +8,7 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define USE_BASIC_SH // Sets the use of a "basic" or "generic" shader for custom dimensions, instead of the default overworld shader. This can solve some rendering issues as the shader is closer to vanilla rendering. #ifdef USE_BASIC_SH - #define UNKNOWN_DIM + #define UNKNOWN_DIM #endif #define GBUFFER_SKYBASIC #define NO_SHADOWS diff --git a/shaders/gbuffers_skybasic.vsh b/shaders/gbuffers_skybasic.vsh index ca4e0e32..a2de150a 100644 --- a/shaders/gbuffers_skybasic.vsh +++ b/shaders/gbuffers_skybasic.vsh @@ -8,7 +8,7 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define USE_BASIC_SH // Sets the use of a "basic" or "generic" shader for custom dimensions, instead of the default overworld shader. This can solve some rendering issues as the shader is closer to vanilla rendering. #ifdef USE_BASIC_SH - #define UNKNOWN_DIM + #define UNKNOWN_DIM #endif #define GBUFFER_SKYBASIC #define NO_SHADOWS diff --git a/shaders/gbuffers_skytextured.fsh b/shaders/gbuffers_skytextured.fsh index 155f17ce..70961f1e 100644 --- a/shaders/gbuffers_skytextured.fsh +++ b/shaders/gbuffers_skytextured.fsh @@ -8,7 +8,7 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define USE_BASIC_SH // Sets the use of a "basic" or "generic" shader for custom dimensions, instead of the default overworld shader. This can solve some rendering issues as the shader is closer to vanilla rendering. #ifdef USE_BASIC_SH - #define UNKNOWN_DIM + #define UNKNOWN_DIM #endif #define GBUFFER_SKYTEXTURED #define NO_SHADOWS diff --git a/shaders/gbuffers_skytextured.vsh b/shaders/gbuffers_skytextured.vsh index 65757049..d40750ae 100644 --- a/shaders/gbuffers_skytextured.vsh +++ b/shaders/gbuffers_skytextured.vsh @@ -8,7 +8,7 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define USE_BASIC_SH // Sets the use of a "basic" or "generic" shader for custom dimensions, instead of the default overworld shader. This can solve some rendering issues as the shader is closer to vanilla rendering. #ifdef USE_BASIC_SH - #define UNKNOWN_DIM + #define UNKNOWN_DIM #endif #define GBUFFER_SKYTEXTURED #define NO_SHADOWS diff --git a/shaders/gbuffers_spidereyes.fsh b/shaders/gbuffers_spidereyes.fsh index 603bd28f..4f713fba 100644 --- a/shaders/gbuffers_spidereyes.fsh +++ b/shaders/gbuffers_spidereyes.fsh @@ -8,7 +8,7 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define USE_BASIC_SH // Sets the use of a "basic" or "generic" shader for custom dimensions, instead of the default overworld shader. This can solve some rendering issues as the shader is closer to vanilla rendering. #ifdef USE_BASIC_SH - #define UNKNOWN_DIM + #define UNKNOWN_DIM #endif #define GBUFFER_SPIDEREYES #define NO_SHADOWS diff --git a/shaders/gbuffers_spidereyes.vsh b/shaders/gbuffers_spidereyes.vsh index c4d068af..131fe0bb 100644 --- a/shaders/gbuffers_spidereyes.vsh +++ b/shaders/gbuffers_spidereyes.vsh @@ -8,7 +8,7 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define USE_BASIC_SH // Sets the use of a "basic" or "generic" shader for custom dimensions, instead of the default overworld shader. This can solve some rendering issues as the shader is closer to vanilla rendering. #ifdef USE_BASIC_SH - #define UNKNOWN_DIM + #define UNKNOWN_DIM #endif #define GBUFFER_SPIDEREYES #define NO_SHADOWS diff --git a/shaders/gbuffers_terrain.fsh b/shaders/gbuffers_terrain.fsh index 6996931b..3b81b491 100644 --- a/shaders/gbuffers_terrain.fsh +++ b/shaders/gbuffers_terrain.fsh @@ -8,7 +8,7 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define USE_BASIC_SH // Sets the use of a "basic" or "generic" shader for custom dimensions, instead of the default overworld shader. This can solve some rendering issues as the shader is closer to vanilla rendering. #ifdef USE_BASIC_SH - #define UNKNOWN_DIM + #define UNKNOWN_DIM #endif #define GBUFFER_TERRAIN #define FOLIAGE_V diff --git a/shaders/gbuffers_terrain.vsh b/shaders/gbuffers_terrain.vsh index f1a889ac..dbc08039 100644 --- a/shaders/gbuffers_terrain.vsh +++ b/shaders/gbuffers_terrain.vsh @@ -8,7 +8,7 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define USE_BASIC_SH // Sets the use of a "basic" or "generic" shader for custom dimensions, instead of the default overworld shader. This can solve some rendering issues as the shader is closer to vanilla rendering. #ifdef USE_BASIC_SH - #define UNKNOWN_DIM + #define UNKNOWN_DIM #endif #define GBUFFER_TERRAIN #define FOLIAGE_V diff --git a/shaders/gbuffers_textured.fsh b/shaders/gbuffers_textured.fsh index 7cf5759f..1d0ea672 100644 --- a/shaders/gbuffers_textured.fsh +++ b/shaders/gbuffers_textured.fsh @@ -8,7 +8,7 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define USE_BASIC_SH // Sets the use of a "basic" or "generic" shader for custom dimensions, instead of the default overworld shader. This can solve some rendering issues as the shader is closer to vanilla rendering. #ifdef USE_BASIC_SH - #define UNKNOWN_DIM + #define UNKNOWN_DIM #endif #define GBUFFER_TEXTURED diff --git a/shaders/gbuffers_textured.vsh b/shaders/gbuffers_textured.vsh index 29891ce9..19d7231f 100644 --- a/shaders/gbuffers_textured.vsh +++ b/shaders/gbuffers_textured.vsh @@ -8,7 +8,7 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define USE_BASIC_SH // Sets the use of a "basic" or "generic" shader for custom dimensions, instead of the default overworld shader. This can solve some rendering issues as the shader is closer to vanilla rendering. #ifdef USE_BASIC_SH - #define UNKNOWN_DIM + #define UNKNOWN_DIM #endif #define GBUFFER_TEXTURED diff --git a/shaders/gbuffers_water.fsh b/shaders/gbuffers_water.fsh index 4573db19..9e78bd37 100644 --- a/shaders/gbuffers_water.fsh +++ b/shaders/gbuffers_water.fsh @@ -8,7 +8,7 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define USE_BASIC_SH // Sets the use of a "basic" or "generic" shader for custom dimensions, instead of the default overworld shader. This can solve some rendering issues as the shader is closer to vanilla rendering. #ifdef USE_BASIC_SH - #define UNKNOWN_DIM + #define UNKNOWN_DIM #endif #define GBUFFER_WATER #define WATER_F diff --git a/shaders/gbuffers_water.vsh b/shaders/gbuffers_water.vsh index c5a6b0c7..3ed8906d 100644 --- a/shaders/gbuffers_water.vsh +++ b/shaders/gbuffers_water.vsh @@ -8,7 +8,7 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define USE_BASIC_SH // Sets the use of a "basic" or "generic" shader for custom dimensions, instead of the default overworld shader. This can solve some rendering issues as the shader is closer to vanilla rendering. #ifdef USE_BASIC_SH - #define UNKNOWN_DIM + #define UNKNOWN_DIM #endif #define WATER_F diff --git a/shaders/gbuffers_weather.fsh b/shaders/gbuffers_weather.fsh index 50424838..9a444da0 100644 --- a/shaders/gbuffers_weather.fsh +++ b/shaders/gbuffers_weather.fsh @@ -8,7 +8,7 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define USE_BASIC_SH // Sets the use of a "basic" or "generic" shader for custom dimensions, instead of the default overworld shader. This can solve some rendering issues as the shader is closer to vanilla rendering. #ifdef USE_BASIC_SH - #define UNKNOWN_DIM + #define UNKNOWN_DIM #endif #define GBUFFER_WEATHER #define SPECIAL_TRANS diff --git a/shaders/gbuffers_weather.vsh b/shaders/gbuffers_weather.vsh index e0ed9221..e8f7830f 100644 --- a/shaders/gbuffers_weather.vsh +++ b/shaders/gbuffers_weather.vsh @@ -8,7 +8,7 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define USE_BASIC_SH // Sets the use of a "basic" or "generic" shader for custom dimensions, instead of the default overworld shader. This can solve some rendering issues as the shader is closer to vanilla rendering. #ifdef USE_BASIC_SH - #define UNKNOWN_DIM + #define UNKNOWN_DIM #endif #define GBUFFER_WEATHER diff --git a/shaders/item.properties b/shaders/item.properties index 87041215..c81a5a7a 100644 --- a/shaders/item.properties +++ b/shaders/item.properties @@ -1,5 +1,5 @@ # Normal light -item.11001=minecraft:glowstone minecraft:sea_lantern minecraft:shroomlight minecraft:jack_o_lantern minecraft:beacon minecraft:end_rod minecraft:lantern minecraft:soul_lantern minecraft:torch minecraft:soul_torch minecraft:campfire minecraft:soul_campfire minecraft:lava_bucket +item.11001=minecraft:glowstone minecraft:sea_lantern minecraft:shroomlight minecraft:jack_o_lantern minecraft:beacon minecraft:end_rod minecraft:lantern minecraft:soul_lantern minecraft:torch minecraft:soul_torch minecraft:campfire minecraft:soul_campfire minecraft:lava_bucket additionallanterns:andesite_chain additionallanterns:andesite_lantern additionallanterns:basalt_chain additionallanterns:basalt_lantern additionallanterns:black_andesite_lantern additionallanterns:black_basalt_lantern additionallanterns:black_blackstone_lantern additionallanterns:black_bone_lantern additionallanterns:black_bricks_lantern additionallanterns:black_cobblestone_lantern additionallanterns:black_crimson_lantern additionallanterns:black_dark_prismarine_lantern additionallanterns:black_diamond_lantern additionallanterns:black_diorite_lantern additionallanterns:black_emerald_lantern additionallanterns:black_end_stone_lantern additionallanterns:black_gold_lantern additionallanterns:black_granite_lantern additionallanterns:black_iron_lantern additionallanterns:black_mossy_cobblestone_lantern additionallanterns:black_netherite_lantern additionallanterns:black_normal_lantern additionallanterns:black_normal_nether_bricks_lantern additionallanterns:black_normal_sandstone_lantern additionallanterns:black_obsidian_lantern additionallanterns:black_prismarine_lantern additionallanterns:black_purpur_lantern additionallanterns:black_quartz_lantern additionallanterns:black_red_nether_bricks_lantern additionallanterns:black_red_sandstone_lantern additionallanterns:black_smooth_stone_lantern additionallanterns:black_stone_bricks_lantern additionallanterns:black_stone_lantern additionallanterns:black_warped_lantern additionallanterns:blackstone_chain additionallanterns:blackstone_lantern additionallanterns:blue_andesite_lantern additionallanterns:blue_basalt_lantern additionallanterns:blue_blackstone_lantern additionallanterns:blue_bone_lantern additionallanterns:blue_bricks_lantern additionallanterns:blue_cobblestone_lantern additionallanterns:blue_crimson_lantern additionallanterns:blue_dark_prismarine_lantern additionallanterns:blue_diamond_lantern additionallanterns:blue_diorite_lantern additionallanterns:blue_emerald_lantern additionallanterns:blue_end_stone_lantern additionallanterns:blue_gold_lantern additionallanterns:blue_granite_lantern additionallanterns:blue_iron_lantern additionallanterns:blue_mossy_cobblestone_lantern additionallanterns:blue_netherite_lantern additionallanterns:blue_normal_lantern additionallanterns:blue_normal_nether_bricks_lantern additionallanterns:blue_normal_sandstone_lantern additionallanterns:blue_obsidian_lantern additionallanterns:blue_prismarine_lantern additionallanterns:blue_purpur_lantern additionallanterns:blue_quartz_lantern additionallanterns:blue_red_nether_bricks_lantern additionallanterns:blue_red_sandstone_lantern additionallanterns:blue_smooth_stone_lantern additionallanterns:blue_stone_bricks_lantern additionallanterns:blue_stone_lantern additionallanterns:blue_warped_lantern additionallanterns:bone_chain additionallanterns:bone_lantern additionallanterns:bricks_chain additionallanterns:bricks_lantern additionallanterns:brown_andesite_lantern additionallanterns:brown_basalt_lantern additionallanterns:brown_blackstone_lantern additionallanterns:brown_bone_lantern additionallanterns:brown_bricks_lantern additionallanterns:brown_cobblestone_lantern additionallanterns:brown_crimson_lantern additionallanterns:brown_dark_prismarine_lantern additionallanterns:brown_diamond_lantern additionallanterns:brown_diorite_lantern additionallanterns:brown_emerald_lantern additionallanterns:brown_end_stone_lantern additionallanterns:brown_gold_lantern additionallanterns:brown_granite_lantern additionallanterns:brown_iron_lantern additionallanterns:brown_mossy_cobblestone_lantern additionallanterns:brown_netherite_lantern additionallanterns:brown_normal_lantern additionallanterns:brown_normal_nether_bricks_lantern additionallanterns:brown_normal_sandstone_lantern additionallanterns:brown_obsidian_lantern additionallanterns:brown_prismarine_lantern additionallanterns:brown_purpur_lantern additionallanterns:brown_quartz_lantern additionallanterns:brown_red_nether_bricks_lantern additionallanterns:brown_red_sandstone_lantern additionallanterns:brown_smooth_stone_lantern additionallanterns:brown_stone_bricks_lantern additionallanterns:brown_stone_lantern additionallanterns:brown_warped_lantern additionallanterns:cobblestone_chain additionallanterns:cobblestone_lantern additionallanterns:crimson_chain additionallanterns:crimson_lantern additionallanterns:cyan_andesite_lantern additionallanterns:cyan_basalt_lantern additionallanterns:cyan_blackstone_lantern additionallanterns:cyan_bone_lantern additionallanterns:cyan_bricks_lantern additionallanterns:cyan_cobblestone_lantern additionallanterns:cyan_crimson_lantern additionallanterns:cyan_dark_prismarine_lantern additionallanterns:cyan_diamond_lantern additionallanterns:cyan_diorite_lantern additionallanterns:cyan_emerald_lantern additionallanterns:cyan_end_stone_lantern additionallanterns:cyan_gold_lantern additionallanterns:cyan_granite_lantern additionallanterns:cyan_iron_lantern additionallanterns:cyan_mossy_cobblestone_lantern additionallanterns:cyan_netherite_lantern additionallanterns:cyan_normal_lantern additionallanterns:cyan_normal_nether_bricks_lantern additionallanterns:cyan_normal_sandstone_lantern additionallanterns:cyan_obsidian_lantern additionallanterns:cyan_prismarine_lantern additionallanterns:cyan_purpur_lantern additionallanterns:cyan_quartz_lantern additionallanterns:cyan_red_nether_bricks_lantern additionallanterns:cyan_red_sandstone_lantern additionallanterns:cyan_smooth_stone_lantern additionallanterns:cyan_stone_bricks_lantern additionallanterns:cyan_stone_lantern additionallanterns:cyan_warped_lantern additionallanterns:dark_prismarine_chain additionallanterns:dark_prismarine_lantern additionallanterns:diamond_chain additionallanterns:diamond_lantern additionallanterns:diorite_chain additionallanterns:diorite_lantern additionallanterns:emerald_chain additionallanterns:emerald_lantern additionallanterns:end_stone_chain additionallanterns:end_stone_lantern additionallanterns:gold_chain additionallanterns:gold_lantern additionallanterns:granite_chain additionallanterns:granite_lantern additionallanterns:gray_andesite_lantern additionallanterns:gray_basalt_lantern additionallanterns:gray_blackstone_lantern additionallanterns:gray_bone_lantern additionallanterns:gray_bricks_lantern additionallanterns:gray_cobblestone_lantern additionallanterns:gray_crimson_lantern additionallanterns:gray_dark_prismarine_lantern additionallanterns:gray_diamond_lantern additionallanterns:gray_diorite_lantern additionallanterns:gray_emerald_lantern additionallanterns:gray_end_stone_lantern additionallanterns:gray_gold_lantern additionallanterns:gray_granite_lantern additionallanterns:gray_iron_lantern additionallanterns:gray_mossy_cobblestone_lantern additionallanterns:gray_netherite_lantern additionallanterns:gray_normal_lantern additionallanterns:gray_normal_nether_bricks_lantern additionallanterns:gray_normal_sandstone_lantern additionallanterns:gray_obsidian_lantern additionallanterns:gray_prismarine_lantern additionallanterns:gray_purpur_lantern additionallanterns:gray_quartz_lantern additionallanterns:gray_red_nether_bricks_lantern additionallanterns:gray_red_sandstone_lantern additionallanterns:gray_smooth_stone_lantern additionallanterns:gray_stone_bricks_lantern additionallanterns:gray_stone_lantern additionallanterns:gray_warped_lantern additionallanterns:green_andesite_lantern additionallanterns:green_basalt_lantern additionallanterns:green_blackstone_lantern additionallanterns:green_bone_lantern additionallanterns:green_bricks_lantern additionallanterns:green_cobblestone_lantern additionallanterns:green_crimson_lantern additionallanterns:green_dark_prismarine_lantern additionallanterns:green_diamond_lantern additionallanterns:green_diorite_lantern additionallanterns:green_emerald_lantern additionallanterns:green_end_stone_lantern additionallanterns:green_gold_lantern additionallanterns:green_granite_lantern additionallanterns:green_iron_lantern additionallanterns:green_mossy_cobblestone_lantern additionallanterns:green_netherite_lantern additionallanterns:green_normal_lantern additionallanterns:green_normal_nether_bricks_lantern additionallanterns:green_normal_sandstone_lantern additionallanterns:green_obsidian_lantern additionallanterns:green_prismarine_lantern additionallanterns:green_purpur_lantern additionallanterns:green_quartz_lantern additionallanterns:green_red_nether_bricks_lantern additionallanterns:green_red_sandstone_lantern additionallanterns:green_smooth_stone_lantern additionallanterns:green_stone_bricks_lantern additionallanterns:green_stone_lantern additionallanterns:green_warped_lantern additionallanterns:iron_lantern additionallanterns:light_blue_andesite_lantern additionallanterns:light_blue_basalt_lantern additionallanterns:light_blue_blackstone_lantern additionallanterns:light_blue_bone_lantern additionallanterns:light_blue_bricks_lantern additionallanterns:light_blue_cobblestone_lantern additionallanterns:light_blue_crimson_lantern additionallanterns:light_blue_dark_prismarine_lantern additionallanterns:light_blue_diamond_lantern additionallanterns:light_blue_diorite_lantern additionallanterns:light_blue_emerald_lantern additionallanterns:light_blue_end_stone_lantern additionallanterns:light_blue_gold_lantern additionallanterns:light_blue_granite_lantern additionallanterns:light_blue_iron_lantern additionallanterns:light_blue_mossy_cobblestone_lantern additionallanterns:light_blue_netherite_lantern additionallanterns:light_blue_normal_lantern additionallanterns:light_blue_normal_nether_bricks_lantern additionallanterns:light_blue_normal_sandstone_lantern additionallanterns:light_blue_obsidian_lantern additionallanterns:light_blue_prismarine_lantern additionallanterns:light_blue_purpur_lantern additionallanterns:light_blue_quartz_lantern additionallanterns:light_blue_red_nether_bricks_lantern additionallanterns:light_blue_red_sandstone_lantern additionallanterns:light_blue_smooth_stone_lantern additionallanterns:light_blue_stone_bricks_lantern additionallanterns:light_blue_stone_lantern additionallanterns:light_blue_warped_lantern additionallanterns:light_gray_andesite_lantern additionallanterns:light_gray_basalt_lantern additionallanterns:light_gray_blackstone_lantern additionallanterns:light_gray_bone_lantern additionallanterns:light_gray_bricks_lantern additionallanterns:light_gray_cobblestone_lantern additionallanterns:light_gray_crimson_lantern additionallanterns:light_gray_dark_prismarine_lantern additionallanterns:light_gray_diamond_lantern additionallanterns:light_gray_diorite_lantern additionallanterns:light_gray_emerald_lantern additionallanterns:light_gray_end_stone_lantern additionallanterns:light_gray_gold_lantern additionallanterns:light_gray_granite_lantern additionallanterns:light_gray_iron_lantern additionallanterns:light_gray_mossy_cobblestone_lantern additionallanterns:light_gray_netherite_lantern additionallanterns:light_gray_normal_lantern additionallanterns:light_gray_normal_nether_bricks_lantern additionallanterns:light_gray_normal_sandstone_lantern additionallanterns:light_gray_obsidian_lantern additionallanterns:light_gray_prismarine_lantern additionallanterns:light_gray_purpur_lantern additionallanterns:light_gray_quartz_lantern additionallanterns:light_gray_red_nether_bricks_lantern additionallanterns:light_gray_red_sandstone_lantern additionallanterns:light_gray_smooth_stone_lantern additionallanterns:light_gray_stone_bricks_lantern additionallanterns:light_gray_stone_lantern additionallanterns:light_gray_warped_lantern additionallanterns:lime_andesite_lantern additionallanterns:lime_basalt_lantern additionallanterns:lime_blackstone_lantern additionallanterns:lime_bone_lantern additionallanterns:lime_bricks_lantern additionallanterns:lime_cobblestone_lantern additionallanterns:lime_crimson_lantern additionallanterns:lime_dark_prismarine_lantern additionallanterns:lime_diamond_lantern additionallanterns:lime_diorite_lantern additionallanterns:lime_emerald_lantern additionallanterns:lime_end_stone_lantern additionallanterns:lime_gold_lantern additionallanterns:lime_granite_lantern additionallanterns:lime_iron_lantern additionallanterns:lime_mossy_cobblestone_lantern additionallanterns:lime_netherite_lantern additionallanterns:lime_normal_lantern additionallanterns:lime_normal_nether_bricks_lantern additionallanterns:lime_normal_sandstone_lantern additionallanterns:lime_obsidian_lantern additionallanterns:lime_prismarine_lantern additionallanterns:lime_purpur_lantern additionallanterns:lime_quartz_lantern additionallanterns:lime_red_nether_bricks_lantern additionallanterns:lime_red_sandstone_lantern additionallanterns:lime_smooth_stone_lantern additionallanterns:lime_stone_bricks_lantern additionallanterns:lime_stone_lantern additionallanterns:lime_warped_lantern additionallanterns:magenta_andesite_lantern additionallanterns:magenta_basalt_lantern additionallanterns:magenta_blackstone_lantern additionallanterns:magenta_bone_lantern additionallanterns:magenta_bricks_lantern additionallanterns:magenta_cobblestone_lantern additionallanterns:magenta_crimson_lantern additionallanterns:magenta_dark_prismarine_lantern additionallanterns:magenta_diamond_lantern additionallanterns:magenta_diorite_lantern additionallanterns:magenta_emerald_lantern additionallanterns:magenta_end_stone_lantern additionallanterns:magenta_gold_lantern additionallanterns:magenta_granite_lantern additionallanterns:magenta_iron_lantern additionallanterns:magenta_mossy_cobblestone_lantern additionallanterns:magenta_netherite_lantern additionallanterns:magenta_normal_lantern additionallanterns:magenta_normal_nether_bricks_lantern additionallanterns:magenta_normal_sandstone_lantern additionallanterns:magenta_obsidian_lantern additionallanterns:magenta_prismarine_lantern additionallanterns:magenta_purpur_lantern additionallanterns:magenta_quartz_lantern additionallanterns:magenta_red_nether_bricks_lantern additionallanterns:magenta_red_sandstone_lantern additionallanterns:magenta_smooth_stone_lantern additionallanterns:magenta_stone_bricks_lantern additionallanterns:magenta_stone_lantern additionallanterns:magenta_warped_lantern additionallanterns:mossy_cobblestone_chain additionallanterns:mossy_cobblestone_lantern additionallanterns:netherite_chain additionallanterns:netherite_lantern additionallanterns:normal_nether_bricks_chain additionallanterns:normal_nether_bricks_lantern additionallanterns:normal_sandstone_chain additionallanterns:normal_sandstone_lantern additionallanterns:obsidian_chain additionallanterns:obsidian_lantern additionallanterns:orange_andesite_lantern additionallanterns:orange_basalt_lantern additionallanterns:orange_blackstone_lantern additionallanterns:orange_bone_lantern additionallanterns:orange_bricks_lantern additionallanterns:orange_cobblestone_lantern additionallanterns:orange_crimson_lantern additionallanterns:orange_dark_prismarine_lantern additionallanterns:orange_diamond_lantern additionallanterns:orange_diorite_lantern additionallanterns:orange_emerald_lantern additionallanterns:orange_end_stone_lantern additionallanterns:orange_gold_lantern additionallanterns:orange_granite_lantern additionallanterns:orange_iron_lantern additionallanterns:orange_mossy_cobblestone_lantern additionallanterns:orange_netherite_lantern additionallanterns:orange_normal_lantern additionallanterns:orange_normal_nether_bricks_lantern additionallanterns:orange_normal_sandstone_lantern additionallanterns:orange_obsidian_lantern additionallanterns:orange_prismarine_lantern additionallanterns:orange_purpur_lantern additionallanterns:orange_quartz_lantern additionallanterns:orange_red_nether_bricks_lantern additionallanterns:orange_red_sandstone_lantern additionallanterns:orange_smooth_stone_lantern additionallanterns:orange_stone_bricks_lantern additionallanterns:orange_stone_lantern additionallanterns:orange_warped_lantern additionallanterns:pink_andesite_lantern additionallanterns:pink_basalt_lantern additionallanterns:pink_blackstone_lantern additionallanterns:pink_bone_lantern additionallanterns:pink_bricks_lantern additionallanterns:pink_cobblestone_lantern additionallanterns:pink_crimson_lantern additionallanterns:pink_dark_prismarine_lantern additionallanterns:pink_diamond_lantern additionallanterns:pink_diorite_lantern additionallanterns:pink_emerald_lantern additionallanterns:pink_end_stone_lantern additionallanterns:pink_gold_lantern additionallanterns:pink_granite_lantern additionallanterns:pink_iron_lantern additionallanterns:pink_mossy_cobblestone_lantern additionallanterns:pink_netherite_lantern additionallanterns:pink_normal_lantern additionallanterns:pink_normal_nether_bricks_lantern additionallanterns:pink_normal_sandstone_lantern additionallanterns:pink_obsidian_lantern additionallanterns:pink_prismarine_lantern additionallanterns:pink_purpur_lantern additionallanterns:pink_quartz_lantern additionallanterns:pink_red_nether_bricks_lantern additionallanterns:pink_red_sandstone_lantern additionallanterns:pink_smooth_stone_lantern additionallanterns:pink_stone_bricks_lantern additionallanterns:pink_stone_lantern additionallanterns:pink_warped_lantern additionallanterns:prismarine_chain additionallanterns:prismarine_lantern additionallanterns:purple_andesite_lantern additionallanterns:purple_basalt_lantern additionallanterns:purple_blackstone_lantern additionallanterns:purple_bone_lantern additionallanterns:purple_bricks_lantern additionallanterns:purple_cobblestone_lantern additionallanterns:purple_crimson_lantern additionallanterns:purple_dark_prismarine_lantern additionallanterns:purple_diamond_lantern additionallanterns:purple_diorite_lantern additionallanterns:purple_emerald_lantern additionallanterns:purple_end_stone_lantern additionallanterns:purple_gold_lantern additionallanterns:purple_granite_lantern additionallanterns:purple_iron_lantern additionallanterns:purple_mossy_cobblestone_lantern additionallanterns:purple_netherite_lantern additionallanterns:purple_normal_lantern additionallanterns:purple_normal_nether_bricks_lantern additionallanterns:purple_normal_sandstone_lantern additionallanterns:purple_obsidian_lantern additionallanterns:purple_prismarine_lantern additionallanterns:purple_purpur_lantern additionallanterns:purple_quartz_lantern additionallanterns:purple_red_nether_bricks_lantern additionallanterns:purple_red_sandstone_lantern additionallanterns:purple_smooth_stone_lantern additionallanterns:purple_stone_bricks_lantern additionallanterns:purple_stone_lantern additionallanterns:purple_warped_lantern additionallanterns:purpur_chain additionallanterns:purpur_lantern additionallanterns:quartz_chain additionallanterns:quartz_lantern additionallanterns:red_andesite_lantern additionallanterns:red_basalt_lantern additionallanterns:red_blackstone_lantern additionallanterns:red_bone_lantern additionallanterns:red_bricks_lantern additionallanterns:red_cobblestone_lantern additionallanterns:red_crimson_lantern additionallanterns:red_dark_prismarine_lantern additionallanterns:red_diamond_lantern additionallanterns:red_diorite_lantern additionallanterns:red_emerald_lantern additionallanterns:red_end_stone_lantern additionallanterns:red_gold_lantern additionallanterns:red_granite_lantern additionallanterns:red_iron_lantern additionallanterns:red_mossy_cobblestone_lantern additionallanterns:red_nether_bricks_chain additionallanterns:red_nether_bricks_lantern additionallanterns:red_netherite_lantern additionallanterns:red_normal_lantern additionallanterns:red_normal_nether_bricks_lantern additionallanterns:red_normal_sandstone_lantern additionallanterns:red_obsidian_lantern additionallanterns:red_prismarine_lantern additionallanterns:red_purpur_lantern additionallanterns:red_quartz_lantern additionallanterns:red_red_nether_bricks_lantern additionallanterns:red_red_sandstone_lantern additionallanterns:red_sandstone_chain additionallanterns:red_sandstone_lantern additionallanterns:red_smooth_stone_lantern additionallanterns:red_stone_bricks_lantern additionallanterns:red_stone_lantern additionallanterns:red_warped_lantern additionallanterns:smooth_stone_chain additionallanterns:smooth_stone_lantern additionallanterns:stone_bricks_chain additionallanterns:stone_bricks_lantern additionallanterns:stone_chain additionallanterns:stone_lantern additionallanterns:warped_chain additionallanterns:warped_lantern additionallanterns:white_andesite_lantern additionallanterns:white_basalt_lantern additionallanterns:white_blackstone_lantern additionallanterns:white_bone_lantern additionallanterns:white_bricks_lantern additionallanterns:white_cobblestone_lantern additionallanterns:white_crimson_lantern additionallanterns:white_dark_prismarine_lantern additionallanterns:white_diamond_lantern additionallanterns:white_diorite_lantern additionallanterns:white_emerald_lantern additionallanterns:white_end_stone_lantern additionallanterns:white_gold_lantern additionallanterns:white_granite_lantern additionallanterns:white_iron_lantern additionallanterns:white_mossy_cobblestone_lantern additionallanterns:white_netherite_lantern additionallanterns:white_normal_lantern additionallanterns:white_normal_nether_bricks_lantern additionallanterns:white_normal_sandstone_lantern additionallanterns:white_obsidian_lantern additionallanterns:white_prismarine_lantern additionallanterns:white_purpur_lantern additionallanterns:white_quartz_lantern additionallanterns:white_red_nether_bricks_lantern additionallanterns:white_red_sandstone_lantern additionallanterns:white_smooth_stone_lantern additionallanterns:white_stone_bricks_lantern additionallanterns:white_stone_lantern additionallanterns:white_warped_lantern additionallanterns:yellow_andesite_lantern additionallanterns:yellow_basalt_lantern additionallanterns:yellow_blackstone_lantern additionallanterns:yellow_bone_lantern additionallanterns:yellow_bricks_lantern additionallanterns:yellow_cobblestone_lantern additionallanterns:yellow_crimson_lantern additionallanterns:yellow_dark_prismarine_lantern additionallanterns:yellow_diamond_lantern additionallanterns:yellow_diorite_lantern additionallanterns:yellow_emerald_lantern additionallanterns:yellow_end_stone_lantern additionallanterns:yellow_gold_lantern additionallanterns:yellow_granite_lantern additionallanterns:yellow_iron_lantern additionallanterns:yellow_mossy_cobblestone_lantern additionallanterns:yellow_netherite_lantern additionallanterns:yellow_normal_lantern additionallanterns:yellow_normal_nether_bricks_lantern additionallanterns:yellow_normal_sandstone_lantern additionallanterns:yellow_obsidian_lantern additionallanterns:yellow_prismarine_lantern additionallanterns:yellow_purpur_lantern additionallanterns:yellow_quartz_lantern additionallanterns:yellow_red_nether_bricks_lantern additionallanterns:yellow_red_sandstone_lantern additionallanterns:yellow_smooth_stone_lantern additionallanterns:yellow_stone_bricks_lantern additionallanterns:yellow_stone_lantern additionallanterns:yellow_warped_lantern # Low light item.11002=minecraft:redstone_torch minecraft:crying_obsidian minecraft:respawn_anchor minecraft:nether_star minecraft:magma_cream minecraft:blaze_powder minecraft:blaze_rod minecraft:prismarine_crystals minecraft:glowstone_dust minecraft:glow_item_frame minecraft:glow_berries minecraft:glow_lichen minecraft:glow_ink_sac \ No newline at end of file diff --git a/shaders/lang/en_US.lang b/shaders/lang/en_US.lang index 6fa7059b..f9c8bfb6 100644 --- a/shaders/lang/en_US.lang +++ b/shaders/lang/en_US.lang @@ -16,7 +16,7 @@ profile.comment=The "shadowless" profiles are designed for low-performance machi ############################# option.ACERCADE=MakeUp option.ACERCADE.comment=Thanks for using this shader! :). Set Optifine native quality controls on normal or default values for better quality. -value.ACERCADE.0=v.9.0 +value.ACERCADE.0=v.9.1c #Options ############################# @@ -129,6 +129,7 @@ value.COLOR_SCHEME.3=Legacy value.COLOR_SCHEME.4=Captain value.COLOR_SCHEME.5=Psychedelic value.COLOR_SCHEME.6=Cocoa +value.COLOR_SCHEME.7=Testigo value.COLOR_SCHEME.99=Custom option.LIGHT_SUNSET_COLOR_R=Sunset light R @@ -243,8 +244,6 @@ option.USE_BASIC_SH=Custom dimensions basic shader option.MATERIAL_GLOSS=Material gloss -option.SIMPLE_AUTOEXP=Simpler exposure - option.DYN_HAND_LIGHT=Fake dynamic light #Screens diff --git a/shaders/lang/ko_KR.lang b/shaders/lang/ko_KR.lang new file mode 100644 index 00000000..919d59f2 --- /dev/null +++ b/shaders/lang/ko_KR.lang @@ -0,0 +1,291 @@ +#프로필 +############################ +profile.no_effects=효과 없음 +profile.shadowless_low=그림자 없음 낮음 +profile.shadowless_medium=그림자 없음 중간 +profile.shadowless_high=그림자 없음 높음 +profile.low=낮음 +profile.medium=중간 +profile.high=높음 +profile.extreme=극한 +profile.extremeplus=극한+ + +profile.comment="그림자 없음" 프로필은 저성능 기계를 위해 설계되었으며, 그림자를 무시합니다. 전통적인 프로필은 천천히 더 높은 품질의 그림자와 더 고급스러운 무거운 효과를 추가합니다. 사용 가능한 옵션을 실험해보고 가장 적합한 조합을 찾으십시오. + +#정보 +############################# +option.ACERCADE=MakeUp +option.ACERCADE.comment=이 셰이더를 사용해주셔서 감사합니다! :) 더 나은 품질을 위해 Optifine 기본 품질 컨트롤을 보통 또는 기본 값으로 설정하세요. +value.ACERCADE.0=v.9.1c + +#옵션 +############################# +option.SHADOW_CASTING=그림자 생성 + +option.SHADOW_DISTANCE_SLIDER=그림자 거리 +value.SHADOW_DISTANCE_SLIDER.0=짧음 +value.SHADOW_DISTANCE_SLIDER.1=중간 +value.SHADOW_DISTANCE_SLIDER.2=김 + +option.SHADOW_QTY_SLIDER=그림자 품질 +value.SHADOW_QTY_SLIDER.0=없음 +value.SHADOW_QTY_SLIDER.1=낮음 +value.SHADOW_QTY_SLIDER.2=중간 +value.SHADOW_QTY_SLIDER.3=높음 + +option.REFLECTION_SLIDER=반사 +value.REFLECTION_SLIDER.0=끔 +value.REFLECTION_SLIDER.1=반전 이미지 +value.REFLECTION_SLIDER.2=Raymarching + +option.SHADOW_TYPE=그림자 유형 +value.SHADOW_TYPE.0=단순 +value.SHADOW_TYPE.1=필터 적용 + +option.SHADOW_BLUR=그림자 블러 강도 + +option.COLORED_SHADOW=컬러 그림자 + +option.VOL_LIGHT=빛 기둥 +value.VOL_LIGHT.0=비활성화 +value.VOL_LIGHT.1=깊이 기반 +value.VOL_LIGHT.2=부피 효과 + +option.DOF=깊이 감지 + +option.DOF_STRENGTH=깊이 감지 강도 + +option.DOF_SAMPLES_FACTOR=깊이 감지 샘플 수 + +option.AO=환경 폐색 +value.AO.0=끔 +value.AO.1=켬 + +option.AOSTEPS=환경 폐색 샘플 쌍 + +option.AO_STRENGTH=환경 폐색 강도 + +option.AA_TYPE=시간적 샘플링 +value.AA_TYPE.0=끔 +value.AA_TYPE.1=노이즈 제거 +value.AA_TYPE.2=TAA +value.AA_TYPE.3=날카로운 TAA + +option.MOTION_BLUR=모션 블러 +option.MOTION_BLUR_STRENGTH=모션 블러 강도 +option.MOTION_BLUR_SAMPLES=모션 블러 샘플 수 + +option.VANILLA_WATER=바닐라 같은 물 + +option.WATER_TEXTURE=물 텍스처 +value.WATER_TEXTURE.0=아니요 +value.WATER_TEXTURE.1=예 + +option.WATER_COLOR_SOURCE=물 색상 +value.WATER_COLOR_SOURCE.0=셰이더 방식 +value.WATER_COLOR_SOURCE.1=리소스 팩 + +option.REFLECTION=반사 +value.REFLECTION.0=끔 +value.REFLECTION.1=켬 + +option.REFRACTION=굴절 +value.REFRACTION.0=끔 +value.REFRACTION.1=켬 + +option.SSR_TYPE=반사 유형 +value.SSR_TYPE.0=반전 이미지 +value.SSR_TYPE.1=Raymarching + +option.SUN_REFLECTION=태양 반사 +value.SUN_REFLECTION.0=끔 +value.SUN_REFLECTION.1=켬 + +option.CLOUD_REFLECTION=부피 구름 반사 + +option.WAVING=흔들리는 식물 +value.WAVING.0=아니요 +value.WAVING.1=예 + +option.CHROMA_ABER=색수차 +value.CHROMA_ABER.0=아니요 +value.CHROMA_ABER.1=예 + +option.CHROMA_ABER_STRENGTH=색수차 강도 + +option.WATER_ABSORPTION=물 흡수 지수 + +option.WATER_TURBULENCE=파도 강도 +value.WATER_TURBULENCE.7.0=매우 낮음 +value.WATER_TURBULENCE.1.75=낮음 +value.WATER_TURBULENCE.0.9=중간 +value.WATER_TURBULENCE.0.5=높음 + +option.COLOR_SCHEME=색상 체계 +value.COLOR_SCHEME.0=에테르 +value.COLOR_SCHEME.1=새로운 쇼카 +value.COLOR_SCHEME.2=쇼카 +value.COLOR_SCHEME.3=레거시 +value.COLOR_SCHEME.4=캡틴 +value.COLOR_SCHEME.5=환각적 +value.COLOR_SCHEME.6=코코아 +value.COLOR_SCHEME.99=사용자 지정 + +option.LIGHT_SUNSET_COLOR_R=일몰 빛 R +option.LIGHT_SUNSET_COLOR_G=일몰 빛 G +option.LIGHT_SUNSET_COLOR_B=일몰 빛 B + +option.LIGHT_DAY_COLOR_R=낮 빛 R +option.LIGHT_DAY_COLOR_G=낮 빛 G +option.LIGHT_DAY_COLOR_B=낮 빛 B + +option.LIGHT_NIGHT_COLOR_R=밤 빛 R +option.LIGHT_NIGHT_COLOR_G=밤 빛 G +option.LIGHT_NIGHT_COLOR_B=밤 빛 B + +option.ZENITH_SUNSET_COLOR_R=정점 일몰 R +option.ZENITH_SUNSET_COLOR_G=정점 일몰 G +option.ZENITH_SUNSET_COLOR_B=정점 일몰 B + +option.ZENITH_DAY_COLOR_R=정점 낮 R +option.ZENITH_DAY_COLOR_G=정점 낮 G +option.ZENITH_DAY_COLOR_B=정점 낮 B + +option.ZENITH_NIGHT_COLOR_R=정점 밤 R +option.ZENITH_NIGHT_COLOR_G=정점 밤 G +option.ZENITH_NIGHT_COLOR_B=정점 밤 B + +option.HORIZON_SUNSET_COLOR_R=지평선 일몰 R +option.HORIZON_SUNSET_COLOR_G=지평선 일몰 G +option.HORIZON_SUNSET_COLOR_B=지평선 일몰 B + +option.HORIZON_DAY_COLOR_R=지평선 낮 R +option.HORIZON_DAY_COLOR_G=지평선 낮 G +option.HORIZON_DAY_COLOR_B=지평선 낮 B + +option.HORIZON_NIGHT_COLOR_R=지평선 밤 R +option.HORIZON_NIGHT_COLOR_G=지평선 밤 G +option.HORIZON_NIGHT_COLOR_B=지평선 밤 B + +option.WATER_COLOR_R=물 R +option.WATER_COLOR_G=물 G +option.WATER_COLOR_B=물 B + +option.NV_COLOR_R=야간 투시 R 배수 +option.NV_COLOR_G=야간 투시 G 배수 +option.NV_COLOR_B=야간 투시 B 배수 + +option.OMNI_TINT_CUSTOM=Omni 색조 + +option.AVOID_DARK_LEVEL=동굴 밝기 + +option.NIGHT_BRIGHT=밤 밝기 + +option.V_CLOUDS=구름 +value.V_CLOUDS.0=바닐라 +value.V_CLOUDS.1=부피 정적 +value.V_CLOUDS.2=부피 동적 + +option.CLOUD_VOL_STYLE=부피 구름 스타일 +value.CLOUD_VOL_STYLE.0=자연스러운 +value.CLOUD_VOL_STYLE.1=박스형 + +option.CLOUD_SPEED=구름 속도 +value.CLOUD_SPEED.0=보통 +value.CLOUD_SPEED.1=타임랩스 1 +value.CLOUD_SPEED.2=타임랩스 2 + +option.END_CLOUDS=엔드의 구름 + +option.CLOUD_STEPS_AVG=구름 샘플 수 + +option.BLOOM=블룸 + +option.COLOR_BLINDNESS=색맹 + +option.COLOR_BLIND_MODE=색맹 유형 +value.COLOR_BLIND_MODE.0=적색맥 +value.COLOR_BLIND_MODE.1=녹색맹 +value.COLOR_BLIND_MODE.2=청색맹 + +option.DEBUG_MODE=디버그 모드 + +option.BLOOM_SAMPLES=블룸 샘플 쌍 + +option.BLACK_ENTITY_FIX=검은 개체 버그 수정 +value.BLACK_ENTITY_FIX.0=끔 +value.BLACK_ENTITY_FIX.1=켬 + +option.FOG_ACTIVE=안개 활성화 + +option.FOG_ADJUST=안개 강도 +value.FOG_ADJUST.20.0=안개 없음 +value.FOG_ADJUST.10.0=극저 +value.FOG_ADJUST.8.0=매우 낮음 +value.FOG_ADJUST.4.0=낮음 +value.FOG_ADJUST.2.0=중간 +value.FOG_ADJUST.1.0=높음 + +option.NETHER_FOG_DISTANCE=네더 안개 거리 +value.NETHER_FOG_DISTANCE.0=렌더 거리 +value.NETHER_FOG_DISTANCE.1=바닐라 + +option.BLOCKLIGHT_TEMP=블록 조명 온도 +value.BLOCKLIGHT_TEMP.0=더 따뜻함 +value.BLOCKLIGHT_TEMP.1=따뜻함 +value.BLOCKLIGHT_TEMP.2=노란색 +value.BLOCKLIGHT_TEMP.3=옅은 노란색 +value.BLOCKLIGHT_TEMP.4=흰색 빛 + +option.sunPathRotation=태양 각도 + +option.USE_BASIC_SH=커스텀 차원 기본 셰이더 사용 + +option.MATERIAL_GLOSS=재료 광택 + +option.DYN_HAND_LIGHT=가짜 동적 빛 + +#화면 +screen.ADVANCED_SCREEN=고급 옵션 +screen.ADVANCED_SCREEN.comment=고급 옵션 설정 + +screen.COMPATIBILITY_SCREEN=호환성 +screen.COMPATIBILITY_SCREEN.comment=호환성 옵션 설정 + +screen.SHADOWS_SCREEN=그림자 +screen.SHADOWS_SCREEN.comment=그림자 옵션 설정 + +screen.DOF_SCREEN=깊이 감지 +screen.DOF_SCREEN.comment=깊이 감지 옵션 설정 + +screen.AO_SCREEN=환경 폐색 +screen.AO_SCREEN.comment=환경 폐색 옵션 설정 + +screen.WATER_SCREEN=물 +screen.WATER_SCREEN.comment=물 옵션 설정 + +screen.POST_SCREEN=후처리 효과 +screen.POST_SCREEN.comment=후처리 효과 옵션 설정 + +screen.LIGHT_SCREEN=빛 +screen.LIGHT_SCREEN.comment=빛 옵션 설정 + +screen.CLOUDS_SCREEN=태양 & 구름 +screen.CLOUDS_SCREEN.comment=태양과 구름 옵션 설정 + +screen.FOG_SCREEN=안개 +screen.FOG_SCREEN.comment=안개 옵션 설정 + +screen.MOTION_BLUR_SCREEN=모션 블러 +screen.MOTION_BLUR_SCREEN.comment=모션 블러 옵션 설정 + +screen.ACCESIBILITY_SCREEN=접근성 +screen.ACCESIBILITY_SCREEN.comment=접근성 옵션 설정 + +screen.CUSTOM_COLORS_SCREEN=커스텀 색상 +screen.CUSTOM_COLORS_SCREEN.comment=커스텀 색상 설정 +screen.CUSTOM_COLORS_DAY=낮 커스텀 색상 +screen.CUSTOM_COLORS_SUNSET=일몰/새벽 커스텀 색상 +screen.CUSTOM_COLORS_NIGHT=밤 커스텀 색상 +screen.CUSTOM_COLORS_WATER=물 커스텀 색상 +screen.CUSTOM_COLORS_NV=야간 투시 커스텀 색상 diff --git a/shaders/lang/sv_SE.lang b/shaders/lang/sv_SE.lang index 8ae30399..e18f71a7 100644 --- a/shaders/lang/sv_SE.lang +++ b/shaders/lang/sv_SE.lang @@ -16,7 +16,7 @@ profile.comment=De "skugglösa" profilerna är designade för datorer med låg p ############################# option.ACERCADE=MakeUp option.ACERCADE.comment=Tack för att du använder denna shader! :). Ändra Optifines inbyggda kvalitetsalternativ till normala värden eller dess standardvärden för bättre kvalitet. -value.ACERCADE.0=v.9.0 +value.ACERCADE.0=v.9.1c #Options ############################# @@ -129,6 +129,7 @@ value.COLOR_SCHEME.3=Legacy value.COLOR_SCHEME.4=Captain value.COLOR_SCHEME.5=Psychedelic value.COLOR_SCHEME.6=Cocoa +value.COLOR_SCHEME.7=Testigo value.COLOR_SCHEME.99=Beställnings option.LIGHT_SUNSET_COLOR_R=Solnedgångsljus R @@ -242,8 +243,6 @@ option.USE_BASIC_SH=Enkel shader för anpassade dimensioner option.MATERIAL_GLOSS=Materialglans -option.SIMPLE_AUTOEXP=Enklare exponering - option.DYN_HAND_LIGHT=Konstgjort dynamiskt ljus #Screens diff --git a/shaders/lang/tr_TR.lang b/shaders/lang/tr_TR.lang index dfc2af2e..19594397 100644 --- a/shaders/lang/tr_TR.lang +++ b/shaders/lang/tr_TR.lang @@ -16,7 +16,7 @@ profile.comment="Gölgesiz" profiller, gölgeler göz ardı edilerek düşük pe ############################# option.ACERCADE=MakeUp option.ACERCADE.comment=Bu shaderı kullandığınız için teşekkür ederiz! :). Daha iyi kalite için Optifine yerel kalite kontrollerini normal veya varsayılan değerlere ayarlayın. -value.ACERCADE.0=v.9.0 +value.ACERCADE.0=v.9.1c #Options ############################# @@ -239,8 +239,6 @@ option.USE_BASIC_SH=Özel boyutsal basit shader option.MATERIAL_GLOSS=Malzeme parlaklığı -option.SIMPLE_AUTOEXP=Daha basit pozlama - option.DYN_HAND_LIGHT=Sahte dinamik ışık #Screens diff --git a/shaders/lang/zh_CN.lang b/shaders/lang/zh_CN.lang index fdda2ee2..e9883d08 100644 --- a/shaders/lang/zh_CN.lang +++ b/shaders/lang/zh_CN.lang @@ -16,7 +16,7 @@ profile.comment=“无阴影”配置文件是为低性能电脑设计的,不 ############################# option.ACERCADE=MakeUp option.ACERCADE.comment=感谢你使用这款着色器! :). 将高清修复的原生画质选项设为正常值/默认值,可获得更好的画质。 -value.ACERCADE.0=v.9.0 +value.ACERCADE.0=v.9.1c #Options ############################# @@ -129,6 +129,7 @@ value.COLOR_SCHEME.3=Legacy (遗产) value.COLOR_SCHEME.4=Captain value.COLOR_SCHEME.5=Psychedelic (迷幻) value.COLOR_SCHEME.6=Cocoa (可可) +value.COLOR_SCHEME.7=Testigo value.COLOR_SCHEME.99=自定义 option.LIGHT_SUNSET_COLOR_R=光照 - 日落 - 红 @@ -243,8 +244,6 @@ option.USE_BASIC_SH=自定义维度基础着色器 option.MATERIAL_GLOSS=材质光泽 -option.SIMPLE_AUTOEXP=简单曝光 - option.DYN_HAND_LIGHT=伪动态光源 #Screens diff --git a/shaders/lib/aberration.glsl b/shaders/lib/aberration.glsl index 21c081bb..c1c0e66d 100644 --- a/shaders/lib/aberration.glsl +++ b/shaders/lib/aberration.glsl @@ -3,15 +3,15 @@ Color aberration effect. */ vec3 color_aberration() { - vec2 offset = texcoord - 0.5; + vec2 offset = texcoord - 0.5; - offset *= vec2(0.125) * CHROMA_ABER_STRENGTH; + offset *= vec2(0.125) * CHROMA_ABER_STRENGTH; - vec3 aberrated_color = vec3(0.0); + vec3 aberrated_color = vec3(0.0); - aberrated_color.r = texture2D(colortex1, texcoord - offset).r; - aberrated_color.g = texture2D(colortex1, texcoord - (offset * 0.5)).g; - aberrated_color.b = texture2D(colortex1, texcoord).b; + aberrated_color.r = texture2D(colortex1, texcoord - offset).r; + aberrated_color.g = texture2D(colortex1, texcoord - (offset * 0.5)).g; + aberrated_color.b = texture2D(colortex1, texcoord).b; - return aberrated_color; + return aberrated_color; } diff --git a/shaders/lib/ao.glsl b/shaders/lib/ao.glsl index 8295cbd5..3b80e21a 100644 --- a/shaders/lib/ao.glsl +++ b/shaders/lib/ao.glsl @@ -1,45 +1,46 @@ /* MakeUp - ao.glsl -Based on Capt Tatsu's ambient occlusion functions. +Based on old Capt Tatsu's ambient occlusion functions. */ float dbao(float dither) { - float ao = 0.0; - - float inv_steps = 1.0 / AOSTEPS; - vec2 offset; - float n; - float dither_x; - - float d = texture2D(depthtex0, texcoord.xy).r; - float hand_check = d < 0.56 ? 1024.0 : 1.0; - d = ld(d); - - float sd = 0.0; - float angle = 0.0; - float dist = 0.0; - float far_double = 2.0 * far; - vec2 scale = vec2(inv_aspect_ratio, 1.0) * (fov_y_inv / (d * far)); - float sample_d; - - for (int i = 0; i < AOSTEPS; i++) { - dither_x = (i + dither); - n = fract(dither_x * 1.6180339887) * 3.141592653589793; - offset = vec2(cos(n), sin(n)) * dither_x * scale * inv_steps; - - sd = ld(texture2D(depthtex0, texcoord.xy + offset).r); - sample_d = (d - sd) * far_double * hand_check; - angle = clamp(0.5 - sample_d, 0.0, 1.0); - dist = clamp(0.25 * sample_d - 1.0, 0.0, 1.0); - - sd = ld(texture2D(depthtex0, texcoord.xy - offset).r); - sample_d = (d - sd) * far_double * hand_check; - angle += clamp(0.5 - sample_d, 0.0, 1.0); - dist += clamp(0.25 * sample_d - 1.0, 0.0, 1.0); - - ao += clamp(angle + dist, 0.0, 1.0); - } - ao /= AOSTEPS; - - return sqrt((ao * AO_STRENGTH) + (1.0 - AO_STRENGTH)); + float ao = 0.0; + + float inv_steps = 1.0 / AOSTEPS; + vec2 offset; + float n; + float dither_x; + + float d = texture2D(depthtex0, texcoord.xy).r; + float hand_check = d < 0.56 ? 1024.0 : 1.0; + d = ld(d); + + float sd = 0.0; + float angle = 0.0; + float dist = 0.0; + float far_and_check = hand_check * 2.0 * far; + vec2 scale = vec2(inv_aspect_ratio, 1.0) * (fov_y_inv / (d * far)); + vec2 scale_factor = scale * inv_steps; + float sample_d; + + for (int i = 0; i < AOSTEPS; i++) { + dither_x = (i + dither); + n = fract(dither_x * 1.6180339887) * 3.141592653589793; + offset = vec2(cos(n), sin(n)) * dither_x * scale_factor; + + sd = ld(texture2D(depthtex0, texcoord.xy + offset).r); + sample_d = (d - sd) * far_and_check; + angle = clamp(0.5 - sample_d, 0.0, 1.0); + dist = clamp(0.25 * sample_d - 1.0, 0.0, 1.0); + + sd = ld(texture2D(depthtex0, texcoord.xy - offset).r); + sample_d = (d - sd) * far_and_check; + angle += clamp(0.5 - sample_d, 0.0, 1.0); + dist += clamp(0.25 * sample_d - 1.0, 0.0, 1.0); + + ao += clamp(angle + dist, 0.0, 1.0); + } + ao /= AOSTEPS; + + return sqrt((ao * AO_STRENGTH) + (1.0 - AO_STRENGTH)); } diff --git a/shaders/lib/basic_utils.glsl b/shaders/lib/basic_utils.glsl index 678ba9ad..9a990bfc 100644 --- a/shaders/lib/basic_utils.glsl +++ b/shaders/lib/basic_utils.glsl @@ -5,69 +5,69 @@ Javier Garduño - GNU Lesser General Public License v3.0 */ float square_pow(float x) { - return x * x; + return x * x; } float cube_pow(float x) { - return x * x * x; + return x * x * x; } float fourth_pow(float x) { - float temp_2 = x * x; - return temp_2 * temp_2; + float temp_2 = x * x; + return temp_2 * temp_2; } float fifth_pow(float x) { - float temp_2 = x * x; - return temp_2 * temp_2 * x; + float temp_2 = x * x; + return temp_2 * temp_2 * x; } float sixth_pow(float x) { - float temp_2 = x * x; - return temp_2 * temp_2 * temp_2; + float temp_2 = x * x; + return temp_2 * temp_2 * temp_2; } vec3 vec3_square_pow(vec3 x) { - return x * x; + return x * x; } vec3 vec3_cube_pow(vec3 x) { - return x * x * x; + return x * x * x; } vec3 vec3_fourth_pow(vec3 x) { - vec3 temp_2 = x * x; - return temp_2 * temp_2; + vec3 temp_2 = x * x; + return temp_2 * temp_2; } vec3 vec3_fifth_pow(vec3 x) { - vec3 temp_2 = x * x; - return temp_2 * temp_2 * x; + vec3 temp_2 = x * x; + return temp_2 * temp_2 * x; } vec3 vec3_sixth_pow(vec3 x) { - vec3 temp_2 = x * x; - return temp_2 * temp_2 * temp_2; + vec3 temp_2 = x * x; + return temp_2 * temp_2 * temp_2; } vec4 vec4_square_pow(vec4 x) { - return x * x; + return x * x; } vec4 vec4_cube_pow(vec4 x) { - return x * x * x; + return x * x * x; } vec4 vec4_fourth_pow(vec4 x) { - return x * x * x * x; + return x * x * x * x; } vec4 vec3_fifth_pow(vec4 x) { - vec4 temp_2 = x * x; - return temp_2 * temp_2 * x; + vec4 temp_2 = x * x; + return temp_2 * temp_2 * x; } vec4 vec3_sixth_pow(vec4 x) { - vec4 temp_2 = x * x; - return temp_2 * temp_2 * temp_2; + vec4 temp_2 = x * x; + return temp_2 * temp_2 * temp_2; } diff --git a/shaders/lib/bloom.glsl b/shaders/lib/bloom.glsl index 52f887dd..d77a9aed 100644 --- a/shaders/lib/bloom.glsl +++ b/shaders/lib/bloom.glsl @@ -5,26 +5,26 @@ Javier Garduño - GNU Lesser General Public License v3.0 */ vec3 mipmap_bloom(sampler2D image, vec2 coords, float dither) { - vec3 blur_sample = vec3(0.0); - vec2 blur_radius_vec = vec2(0.1 * inv_aspect_ratio, 0.1); + vec3 blur_sample = vec3(0.0); + vec2 blur_radius_vec = vec2(0.1 * inv_aspect_ratio, 0.1); - int sample_c = int(BLOOM_SAMPLES); + int sample_c = int(BLOOM_SAMPLES); - float inv_steps = 1.0 / BLOOM_SAMPLES; - float n; - vec2 offset; - float dither_x; + vec2 blur_radios_factor = blur_radius_vec * (1.0 / BLOOM_SAMPLES); + float n; + vec2 offset; + float dither_x; - for(int i = 0; i < sample_c; i++) { - dither_x = (i + dither); - n = fract(dither_x * 1.6180339887) * 3.141592653589793; - offset = vec2(cos(n), sin(n)) * dither_x * blur_radius_vec * inv_steps; + for(int i = 0; i < sample_c; i++) { + dither_x = i + dither; + n = fract(dither_x * 1.6180339887) * 3.141592653589793; + offset = vec2(cos(n), sin(n)) * dither_x * blur_radios_factor; - blur_sample += texture2D(image, coords + offset, -1.0).rgb; - blur_sample += texture2D(image, coords - offset, -1.0).rgb; - } + blur_sample += texture2D(image, coords + offset, -1.0).rgb; + blur_sample += texture2D(image, coords - offset, -1.0).rgb; + } - blur_sample /= (BLOOM_SAMPLES * 2.0); + blur_sample /= (BLOOM_SAMPLES * 2.0); - return blur_sample; + return blur_sample; } diff --git a/shaders/lib/blur.glsl b/shaders/lib/blur.glsl index 0c8b9a25..d606d960 100644 --- a/shaders/lib/blur.glsl +++ b/shaders/lib/blur.glsl @@ -5,32 +5,32 @@ Javier Garduño - GNU Lesser General Public License v3.0 */ vec3 noised_blur(vec4 color_depth, sampler2D image, vec2 coords, float force, float dither) { - vec3 block_color = color_depth.rgb; - float the_depth = color_depth.a; - float blur_radius = 0.0; + vec3 block_color = color_depth.rgb; + float the_depth = color_depth.a; + float blur_radius = 0.0; - if (the_depth > 0.56) { // Manos no - blur_radius = - max(abs(the_depth - centerDepthSmooth) - 0.000075, 0.0) * fov_y_inv; - blur_radius = blur_radius * inversesqrt(0.1 + blur_radius * blur_radius) * force; - blur_radius = min(blur_radius, 0.1); - } + if (the_depth > 0.56) { // Manos no + blur_radius = + max(abs(the_depth - centerDepthSmooth) - 0.000075, 0.0) * fov_y_inv; + blur_radius = blur_radius * inversesqrt(0.1 + blur_radius * blur_radius) * force; + blur_radius = min(blur_radius, 0.1); + } - if (blur_radius > min(pixel_size_x, pixel_size_y)) { - vec3 blur_sample = vec3(0.0); - vec2 blur_radius_vec = vec2(blur_radius * inv_aspect_ratio, blur_radius); + if (blur_radius > min(pixel_size_x, pixel_size_y)) { + vec3 blur_sample = vec3(0.0); + vec2 blur_radius_vec = vec2(blur_radius * inv_aspect_ratio, blur_radius); - float dither_base = dither; - dither *= 6.283185307179586; + float dither_base = dither; + dither *= 6.283185307179586; - float current_radius = (0.25 + dither_base); - vec2 offset = vec2(cos(dither), sin(dither)) * blur_radius_vec * current_radius; + float current_radius = (0.25 + dither_base); + vec2 offset = vec2(cos(dither), sin(dither)) * blur_radius_vec * current_radius; - blur_sample += texture2D(image, coords + offset, -2.0).rgb; - blur_sample += texture2D(image, coords - offset, -2.0).rgb; + blur_sample += texture2D(image, coords + offset, -2.0).rgb; + blur_sample += texture2D(image, coords - offset, -2.0).rgb; - block_color = blur_sample * 0.5; - } + block_color = blur_sample * 0.5; + } - return block_color; + return block_color; } diff --git a/shaders/lib/color_blindness.glsl b/shaders/lib/color_blindness.glsl index 9a433e06..c1693f18 100644 --- a/shaders/lib/color_blindness.glsl +++ b/shaders/lib/color_blindness.glsl @@ -5,36 +5,36 @@ Javier Garduño - GNU Lesser General Public License v3.0 */ vec3 color_blindness(vec3 color) { - float L = (17.8824 * color.r) + (43.5161 * color.g) + (4.11935 * color.b); - float M = (3.45565 * color.r) + (27.1554 * color.g) + (3.86714 * color.b); - float S = (0.0299566 * color.r) + (0.184309 * color.g) + (1.46709 * color.b); + float L = (17.8824 * color.r) + (43.5161 * color.g) + (4.11935 * color.b); + float M = (3.45565 * color.r) + (27.1554 * color.g) + (3.86714 * color.b); + float S = (0.0299566 * color.r) + (0.184309 * color.g) + (1.46709 * color.b); - float l, m, s; - #if COLOR_BLIND_MODE == 0 // Protanopia - l = 0.0 * L + 2.02344 * M + -2.52581 * S; - m = 0.0 * L + 1.0 * M + 0.0 * S; - s = 0.0 * L + 0.0 * M + 1.0 * S; - #elif COLOR_BLIND_MODE == 1 // Deutranopia - l = 1.0 * L + 0.0 * M + 0.0 * S; - m = 0.494207 * L + 0.0 * M + 1.24827 * S; - s = 0.0 * L + 0.0 * M + 1.0 * S; - #elif COLOR_BLIND_MODE == 2 // Tritanopia - l = 1.0 * L + 0.0 * M + 0.0 * S; - m = 0.0 * L + 1.0 * M + 0.0 * S; - s = -0.395913 * L + 0.801109 * M + 0.0 * S; - #endif + float l, m, s; + #if COLOR_BLIND_MODE == 0 // Protanopia + l = 0.0 * L + 2.02344 * M + -2.52581 * S; + m = 0.0 * L + 1.0 * M + 0.0 * S; + s = 0.0 * L + 0.0 * M + 1.0 * S; + #elif COLOR_BLIND_MODE == 1 // Deutranopia + l = 1.0 * L + 0.0 * M + 0.0 * S; + m = 0.494207 * L + 0.0 * M + 1.24827 * S; + s = 0.0 * L + 0.0 * M + 1.0 * S; + #elif COLOR_BLIND_MODE == 2 // Tritanopia + l = 1.0 * L + 0.0 * M + 0.0 * S; + m = 0.0 * L + 1.0 * M + 0.0 * S; + s = -0.395913 * L + 0.801109 * M + 0.0 * S; + #endif - vec3 error; - error.r = (0.0809444479 * l) + (-0.130504409 * m) + (0.116721066 * s); - error.g = (-0.0102485335 * l) + (0.0540193266 * m) + (-0.113614708 * s); - error.b = (-0.000365296938 * l) + (-0.00412161469 * m) + (0.693511405 * s); + vec3 error; + error.r = (0.0809444479 * l) + (-0.130504409 * m) + (0.116721066 * s); + error.g = (-0.0102485335 * l) + (0.0540193266 * m) + (-0.113614708 * s); + error.b = (-0.000365296938 * l) + (-0.00412161469 * m) + (0.693511405 * s); - vec3 diff = color - error; - vec3 correction; - correction.r = 0.0; - correction.g = (diff.r * 0.7) + (diff.g * 1.0); - correction.b = (diff.r * 0.7) + (diff.b * 1.0); - correction = color + correction; + vec3 diff = color - error; + vec3 correction; + correction.r = 0.0; + correction.g = (diff.r * 0.7) + (diff.g * 1.0); + correction.b = (diff.r * 0.7) + (diff.b * 1.0); + correction = color + correction; - return correction; + return correction; } \ No newline at end of file diff --git a/shaders/lib/color_conversion.glsl b/shaders/lib/color_conversion.glsl new file mode 100644 index 00000000..3354680b --- /dev/null +++ b/shaders/lib/color_conversion.glsl @@ -0,0 +1,57 @@ +vec3 rgb_to_xyz(vec3 rgb) { + vec3 xyz; + vec3 rgb2 = rgb; + vec3 mask = vec3(greaterThan(rgb, vec3(0.04045))); + rgb2 = mix(rgb2 / 12.92, pow((rgb2 + 0.055) / 1.055, vec3(2.4)), mask); + + const mat3 rgb_to_xyz_matrix = mat3( + 0.4124564, 0.3575761, 0.1804375, + 0.2126729, 0.7151522, 0.0721750, + 0.0193339, 0.1191920, 0.9503041 + ); + + xyz = rgb_to_xyz_matrix * rgb2; + return xyz; +} + +vec3 xyz_to_lab(vec3 xyz) { + vec3 xyz2 = xyz / vec3(0.95047, 1.0, 1.08883); + vec3 mask = vec3(greaterThan(xyz2, vec3(0.008856))); + xyz2 = mix(7.787 * xyz2 + 16.0 / 116.0, pow(xyz2, vec3(1.0 / 3.0)), mask); + + float L = 116.0 * xyz2.y - 16.0; + float a = 500.0 * (xyz2.x - xyz2.y); + float b = 200.0 * (xyz2.y - xyz2.z); + + return vec3(L, a, b); +} + +vec3 lab_to_xyz(vec3 lab) { + float L = lab.x; + float a = lab.y; + float b = lab.z; + + float y = (L + 16.0) / 116.0; + float x = a / 500.0 + y; + float z = y - b / 200.0; + + vec3 xyz = vec3(x, y, z); + vec3 mask = vec3(greaterThan(xyz, vec3(0.2068966))); + xyz = mix((xyz - 16.0 / 116.0) / 7.787, xyz * xyz * xyz, mask); + + return xyz * vec3(0.95047, 1.0, 1.08883); +} + +vec3 xyz_to_rgb(vec3 xyz) { + const mat3 xyz_to_rgb_matrix = mat3( + 3.2404542, -1.5371385, -0.4985314, + -0.9692660, 1.8760108, 0.0415560, + 0.0556434, -0.2040259, 1.0572252 + ); + + vec3 rgb = xyz_to_rgb_matrix * xyz; + vec3 mask = vec3(greaterThan(rgb, vec3(0.0031308))); + rgb = mix(12.92 * rgb, 1.055 * pow(rgb, vec3(1.0 / 2.4)) - 0.055, mask); + + return clamp(rgb, 0.0, 1.0); +} \ No newline at end of file diff --git a/shaders/lib/color_utils.glsl b/shaders/lib/color_utils.glsl index 0a35d2bd..d64ddc9c 100644 --- a/shaders/lib/color_utils.glsl +++ b/shaders/lib/color_utils.glsl @@ -10,187 +10,172 @@ uniform float night_mixer; uniform int moonPhase; #ifdef UNKNOWN_DIM - uniform vec3 fogColor; - uniform vec3 skyColor; + uniform vec3 fogColor; + uniform vec3 skyColor; #endif #define NIGHT_BRIGHT_PHASE (NIGHT_BRIGHT + (NIGHT_BRIGHT * (abs(4.0 - moonPhase) * 0.25))) #if COLOR_SCHEME == 0 // Ethereal - #define OMNI_TINT 0.4 - #define LIGHT_SUNSET_COLOR vec3(0.887528, 0.443394, 0.301044) - #define LIGHT_DAY_COLOR vec3(0.90, 0.84, 0.79) - #define LIGHT_NIGHT_COLOR vec3(0.0317353, 0.0467353, 0.0637353) * NIGHT_BRIGHT_PHASE + #define OMNI_TINT 0.4 + #define LIGHT_SUNSET_COLOR vec3(0.887528, 0.443394, 0.301044) + #define LIGHT_DAY_COLOR vec3(0.90, 0.84, 0.79) + #define LIGHT_NIGHT_COLOR vec3(0.0317353, 0.0467353, 0.0637353) * NIGHT_BRIGHT_PHASE - #define ZENITH_SUNSET_COLOR vec3(0.2617647, 0.33529412, 0.52352941) - #define ZENITH_DAY_COLOR vec3(0.0785098, 0.24352941, 0.54901961) - #define ZENITH_NIGHT_COLOR vec3(0.0168, 0.0228, 0.03) * NIGHT_BRIGHT_PHASE + #define ZENITH_SUNSET_COLOR vec3(0.2617647, 0.33529412, 0.52352941) + #define ZENITH_DAY_COLOR vec3(0.0785098, 0.24352941, 0.54901961) + #define ZENITH_NIGHT_COLOR vec3(0.0168, 0.0228, 0.03) * NIGHT_BRIGHT_PHASE - #define HORIZON_SUNSET_COLOR vec3(1.0, 0.6, 0.394) - #define HORIZON_DAY_COLOR vec3(0.65, 0.91, 1.3) - #define HORIZON_NIGHT_COLOR vec3(0.02556, 0.03772, 0.05244) * NIGHT_BRIGHT_PHASE + #define HORIZON_SUNSET_COLOR vec3(1.0, 0.6, 0.394) + #define HORIZON_DAY_COLOR vec3(0.65, 0.91, 1.3) + #define HORIZON_NIGHT_COLOR vec3(0.02556, 0.03772, 0.05244) * NIGHT_BRIGHT_PHASE - #define WATER_COLOR vec3(0.05, 0.1, 0.11) + #define WATER_COLOR vec3(0.05, 0.1, 0.11) #elif COLOR_SCHEME == 1 // New shoka - #define OMNI_TINT 0.25 - #define LIGHT_SUNSET_COLOR vec3(1.0, 0.588, 0.3555) - #define LIGHT_DAY_COLOR vec3(0.90, 0.84, 0.79) - #define LIGHT_NIGHT_COLOR vec3(0.04786874, 0.05175001, 0.06112969) * NIGHT_BRIGHT_PHASE + #define OMNI_TINT 0.25 + #define LIGHT_SUNSET_COLOR vec3(1.0, 0.588, 0.3555) + #define LIGHT_DAY_COLOR vec3(0.90, 0.84, 0.79) + #define LIGHT_NIGHT_COLOR vec3(0.04786874, 0.05175001, 0.06112969) * NIGHT_BRIGHT_PHASE - #define ZENITH_SUNSET_COLOR vec3(0.143, 0.24394118, 0.36450981) - #define ZENITH_DAY_COLOR vec3(0.143, 0.24394118, 0.36450981) - #define ZENITH_NIGHT_COLOR vec3(0.014, 0.019, 0.025) * NIGHT_BRIGHT_PHASE + #define ZENITH_SUNSET_COLOR vec3(0.143, 0.24394118, 0.36450981) + #define ZENITH_DAY_COLOR vec3(0.143, 0.24394118, 0.36450981) + #define ZENITH_NIGHT_COLOR vec3(0.014, 0.019, 0.025) * NIGHT_BRIGHT_PHASE - #define HORIZON_SUNSET_COLOR vec3(1.0, 0.648, 0.37824) - #define HORIZON_DAY_COLOR vec3(0.65, 0.91, 1.3) - #define HORIZON_NIGHT_COLOR vec3(0.0213, 0.0306, 0.0387) * NIGHT_BRIGHT_PHASE + #define HORIZON_SUNSET_COLOR vec3(1.0, 0.648, 0.37824) + #define HORIZON_DAY_COLOR vec3(0.65, 0.91, 1.3) + #define HORIZON_NIGHT_COLOR vec3(0.0213, 0.0306, 0.0387) * NIGHT_BRIGHT_PHASE - #define WATER_COLOR vec3(0.05, 0.1, 0.11) + #define WATER_COLOR vec3(0.05, 0.1, 0.11) #elif COLOR_SCHEME == 2 // Shoka - #define OMNI_TINT 0.5 - #define LIGHT_SUNSET_COLOR vec3(0.70656, 0.44436, 0.2898) - #define LIGHT_DAY_COLOR vec3(0.91640625, 0.91640625, 0.635375) - #define LIGHT_NIGHT_COLOR vec3(0.04786874, 0.05175001, 0.06112969) * NIGHT_BRIGHT_PHASE + #define OMNI_TINT 0.5 + #define LIGHT_SUNSET_COLOR vec3(0.70656, 0.44436, 0.2898) + #define LIGHT_DAY_COLOR vec3(0.91640625, 0.91640625, 0.635375) + #define LIGHT_NIGHT_COLOR vec3(0.04786874, 0.05175001, 0.06112969) * NIGHT_BRIGHT_PHASE - #define ZENITH_SUNSET_COLOR vec3(0.104, 0.17741177, 0.26509804) - #define ZENITH_DAY_COLOR vec3(0.13, 0.22176471, 0.33137255) - #define ZENITH_NIGHT_COLOR vec3(0.014, 0.019, 0.025) * NIGHT_BRIGHT_PHASE + #define ZENITH_SUNSET_COLOR vec3(0.104, 0.17741177, 0.26509804) + #define ZENITH_DAY_COLOR vec3(0.13, 0.22176471, 0.33137255) + #define ZENITH_NIGHT_COLOR vec3(0.014, 0.019, 0.025) * NIGHT_BRIGHT_PHASE - #define HORIZON_SUNSET_COLOR vec3(0.715 , 0.5499, 0.416) - #define HORIZON_DAY_COLOR vec3(0.364 , 0.6825, 0.91) - #define HORIZON_NIGHT_COLOR vec3(0.0213, 0.0306, 0.0387) * NIGHT_BRIGHT_PHASE + #define HORIZON_SUNSET_COLOR vec3(0.715 , 0.5499, 0.416) + #define HORIZON_DAY_COLOR vec3(0.364 , 0.6825, 0.91) + #define HORIZON_NIGHT_COLOR vec3(0.0213, 0.0306, 0.0387) * NIGHT_BRIGHT_PHASE - #define WATER_COLOR vec3(0.01647059, 0.13882353, 0.16470588) + #define WATER_COLOR vec3(0.01647059, 0.13882353, 0.16470588) #elif COLOR_SCHEME == 3 // Legacy - #define OMNI_TINT 0.5 - #define LIGHT_SUNSET_COLOR vec3(0.96876, 0.4356254, 0.26002448) - #define LIGHT_DAY_COLOR vec3(0.88504, 0.88504, 0.8372) - #define LIGHT_NIGHT_COLOR vec3(0.04693014, 0.0507353 , 0.05993107) * NIGHT_BRIGHT_PHASE + #define OMNI_TINT 0.5 + #define LIGHT_SUNSET_COLOR vec3(0.96876, 0.4356254, 0.26002448) + #define LIGHT_DAY_COLOR vec3(0.88504, 0.88504, 0.8372) + #define LIGHT_NIGHT_COLOR vec3(0.04693014, 0.0507353 , 0.05993107) * NIGHT_BRIGHT_PHASE - #define ZENITH_SUNSET_COLOR vec3(0.09410295, 0.20145588, 0.34905882) - #define ZENITH_DAY_COLOR vec3(0.182, 0.351, 0.754) - #define ZENITH_NIGHT_COLOR vec3(0.00841175, 0.01651763, 0.025) * NIGHT_BRIGHT_PHASE + #define ZENITH_SUNSET_COLOR vec3(0.09410295, 0.20145588, 0.34905882) + #define ZENITH_DAY_COLOR vec3(0.182, 0.351, 0.754) + #define ZENITH_NIGHT_COLOR vec3(0.00841175, 0.01651763, 0.025) * NIGHT_BRIGHT_PHASE - #define HORIZON_SUNSET_COLOR vec3(0.81, 0.44165647, 0.25293529) - #define HORIZON_DAY_COLOR vec3(0.572, 1.014, 1.248) - #define HORIZON_NIGHT_COLOR vec3(0.01078431, 0.02317647, 0.035) * NIGHT_BRIGHT_PHASE - - #define WATER_COLOR vec3(0.01647059, 0.13882353, 0.16470588) + #define HORIZON_SUNSET_COLOR vec3(0.81, 0.44165647, 0.25293529) + #define HORIZON_DAY_COLOR vec3(0.572, 1.014, 1.248) + #define HORIZON_NIGHT_COLOR vec3(0.01078431, 0.02317647, 0.035) * NIGHT_BRIGHT_PHASE + #define WATER_COLOR vec3(0.01647059, 0.13882353, 0.16470588) #elif COLOR_SCHEME == 4 // Captain - #define OMNI_TINT 0.5 - #define LIGHT_SUNSET_COLOR vec3(0.84456, 0.52992, 0.26496001) - #define LIGHT_DAY_COLOR vec3(0.83064961, 0.93448079, 1.1032065) - #define LIGHT_NIGHT_COLOR vec3(0.02597646, 0.05195295, 0.069) * NIGHT_BRIGHT_PHASE + #define OMNI_TINT 0.5 + #define LIGHT_SUNSET_COLOR vec3(0.84456, 0.52992, 0.26496001) + #define LIGHT_DAY_COLOR vec3(0.83064961, 0.93448079, 1.1032065) + #define LIGHT_NIGHT_COLOR vec3(0.02597646, 0.05195295, 0.069) * NIGHT_BRIGHT_PHASE - #define ZENITH_SUNSET_COLOR vec3(0.18135 , 0.230256, 0.332592) - #define ZENITH_DAY_COLOR vec3(0.104, 0.26, 0.507) - #define ZENITH_NIGHT_COLOR vec3(0.004 ,0.01, 0.0195) * NIGHT_BRIGHT_PHASE + #define ZENITH_SUNSET_COLOR vec3(0.18135 , 0.230256, 0.332592) + #define ZENITH_DAY_COLOR vec3(0.104, 0.26, 0.507) + #define ZENITH_NIGHT_COLOR vec3(0.004 ,0.01, 0.0195) * NIGHT_BRIGHT_PHASE - #define HORIZON_SUNSET_COLOR vec3(1.3, 0.8632, 0.3952) - #define HORIZON_DAY_COLOR vec3(0.65, 0.91, 1.3) - #define HORIZON_NIGHT_COLOR vec3(0.025, 0.035, 0.05) * NIGHT_BRIGHT_PHASE + #define HORIZON_SUNSET_COLOR vec3(1.3, 0.8632, 0.3952) + #define HORIZON_DAY_COLOR vec3(0.65, 0.91, 1.3) + #define HORIZON_NIGHT_COLOR vec3(0.025, 0.035, 0.05) * NIGHT_BRIGHT_PHASE - #define WATER_COLOR vec3(0.05, 0.1, 0.11) + #define WATER_COLOR vec3(0.05, 0.1, 0.11) #elif COLOR_SCHEME == 5 // Psychedelic - #define OMNI_TINT 0.45 - #define LIGHT_SUNSET_COLOR vec3(0.85 , 0.47058824, 0.17921569) - #define LIGHT_DAY_COLOR vec3(0.91021875, 0.95771875, 0.6) - #define LIGHT_NIGHT_COLOR vec3(0.04223712, 0.04566177, 0.05393796) * NIGHT_BRIGHT_PHASE + #define OMNI_TINT 0.45 + #define LIGHT_SUNSET_COLOR vec3(0.85 , 0.47058824, 0.17921569) + #define LIGHT_DAY_COLOR vec3(0.91021875, 0.95771875, 0.6) + #define LIGHT_NIGHT_COLOR vec3(0.04223712, 0.04566177, 0.05393796) * NIGHT_BRIGHT_PHASE - #define ZENITH_SUNSET_COLOR vec3(0.18135 , 0.230256, 0.332592) - #define ZENITH_DAY_COLOR vec3(0.104, 0.26, 0.507) - #define ZENITH_NIGHT_COLOR vec3(0.004 ,0.01, 0.0195) * NIGHT_BRIGHT_PHASE + #define ZENITH_SUNSET_COLOR vec3(0.18135 , 0.230256, 0.332592) + #define ZENITH_DAY_COLOR vec3(0.104, 0.26, 0.507) + #define ZENITH_NIGHT_COLOR vec3(0.004 ,0.01, 0.0195) * NIGHT_BRIGHT_PHASE - #define HORIZON_SUNSET_COLOR vec3(1.3, 0.8632, 0.3952) - #define HORIZON_DAY_COLOR vec3(0.65, 0.91, 1.3) - #define HORIZON_NIGHT_COLOR vec3(0.025, 0.035, 0.05) * NIGHT_BRIGHT_PHASE + #define HORIZON_SUNSET_COLOR vec3(1.3, 0.8632, 0.3952) + #define HORIZON_DAY_COLOR vec3(0.65, 0.91, 1.3) + #define HORIZON_NIGHT_COLOR vec3(0.025, 0.035, 0.05) * NIGHT_BRIGHT_PHASE - #define WATER_COLOR vec3(0.018, 0.12 , 0.18) + #define WATER_COLOR vec3(0.018, 0.12 , 0.18) #elif COLOR_SCHEME == 6 // Cocoa - #define OMNI_TINT 0.4 - #define LIGHT_SUNSET_COLOR vec3(0.918528, 0.5941728, 0.2712528) - #define LIGHT_DAY_COLOR vec3(0.897, 0.897, 0.5718375) - #define LIGHT_NIGHT_COLOR vec3(0.04693014, 0.0507353, 0.05993107) * NIGHT_BRIGHT_PHASE - - #define ZENITH_SUNSET_COLOR vec3(0.117, 0.26, 0.494) - #define ZENITH_DAY_COLOR vec3(0.234, 0.403, 0.676) - #define ZENITH_NIGHT_COLOR vec3(0.014, 0.019, 0.031) * NIGHT_BRIGHT_PHASE - - #define HORIZON_SUNSET_COLOR vec3(1.183, 0.858, 0.611) - #define HORIZON_DAY_COLOR vec3(0.52, 0.975, 1.3) - #define HORIZON_NIGHT_COLOR vec3(0.022, 0.029, 0.049) * NIGHT_BRIGHT_PHASE - - #define WATER_COLOR vec3(0.018, 0.12 , 0.18) + #define OMNI_TINT 0.4 + #define LIGHT_SUNSET_COLOR vec3(0.918528, 0.5941728, 0.2712528) + #define LIGHT_DAY_COLOR vec3(0.897, 0.897, 0.5718375) + #define LIGHT_NIGHT_COLOR vec3(0.04693014, 0.0507353, 0.05993107) * NIGHT_BRIGHT_PHASE + + #define ZENITH_SUNSET_COLOR vec3(0.117, 0.26, 0.494) + #define ZENITH_DAY_COLOR vec3(0.234, 0.403, 0.676) + #define ZENITH_NIGHT_COLOR vec3(0.014, 0.019, 0.031) * NIGHT_BRIGHT_PHASE + + #define HORIZON_SUNSET_COLOR vec3(1.183, 0.858, 0.611) + #define HORIZON_DAY_COLOR vec3(0.52, 0.975, 1.3) + #define HORIZON_NIGHT_COLOR vec3(0.022, 0.029, 0.049) * NIGHT_BRIGHT_PHASE + + #define WATER_COLOR vec3(0.018, 0.12 , 0.18) +#elif COLOR_SCHEME == 7 // Testigo + #define OMNI_TINT 0.65 + #define LIGHT_SUNSET_COLOR vec3(0.70656, 0.44436, 0.2898) + #define LIGHT_DAY_COLOR vec3(0.88504, 0.88504, 0.8372) + #define LIGHT_NIGHT_COLOR vec3(0.04786874, 0.05175001, 0.06112969) * NIGHT_BRIGHT_PHASE + + #define ZENITH_SUNSET_COLOR vec3(0.104, 0.17741177, 0.26509804) + #define ZENITH_DAY_COLOR vec3(0.05098, 0.25990, 0.44313) + #define ZENITH_NIGHT_COLOR vec3(0.004 ,0.01, 0.0195) * NIGHT_BRIGHT_PHASE + + #define HORIZON_SUNSET_COLOR vec3(0.715 , 0.5499, 0.416) + #define HORIZON_DAY_COLOR vec3(0.65, 0.91, 1.3) + #define HORIZON_NIGHT_COLOR vec3(0.025, 0.035, 0.05) * NIGHT_BRIGHT_PHASE + + #define WATER_COLOR vec3(0.0 , 0.2, 0.44313725) #elif COLOR_SCHEME == 99 // Custom - #define OMNI_TINT OMNI_TINT_CUSTOM - #define LIGHT_SUNSET_COLOR vec3(LIGHT_SUNSET_COLOR_R, LIGHT_SUNSET_COLOR_G, LIGHT_SUNSET_COLOR_B) - #define LIGHT_DAY_COLOR vec3(LIGHT_DAY_COLOR_R, LIGHT_DAY_COLOR_G, LIGHT_DAY_COLOR_B) - #define LIGHT_NIGHT_COLOR vec3(LIGHT_NIGHT_COLOR_R, LIGHT_NIGHT_COLOR_G, LIGHT_NIGHT_COLOR_B) * NIGHT_BRIGHT_PHASE + #define OMNI_TINT OMNI_TINT_CUSTOM + #define LIGHT_SUNSET_COLOR vec3(LIGHT_SUNSET_COLOR_R, LIGHT_SUNSET_COLOR_G, LIGHT_SUNSET_COLOR_B) + #define LIGHT_DAY_COLOR vec3(LIGHT_DAY_COLOR_R, LIGHT_DAY_COLOR_G, LIGHT_DAY_COLOR_B) + #define LIGHT_NIGHT_COLOR vec3(LIGHT_NIGHT_COLOR_R, LIGHT_NIGHT_COLOR_G, LIGHT_NIGHT_COLOR_B) * NIGHT_BRIGHT_PHASE - #define ZENITH_SUNSET_COLOR vec3(ZENITH_SUNSET_COLOR_R, ZENITH_SUNSET_COLOR_G, ZENITH_SUNSET_COLOR_B) - #define ZENITH_DAY_COLOR vec3(ZENITH_DAY_COLOR_R, ZENITH_DAY_COLOR_G, ZENITH_DAY_COLOR_B) - #define ZENITH_NIGHT_COLOR vec3(ZENITH_NIGHT_COLOR_R, ZENITH_NIGHT_COLOR_G, ZENITH_NIGHT_COLOR_B) * NIGHT_BRIGHT_PHASE + #define ZENITH_SUNSET_COLOR vec3(ZENITH_SUNSET_COLOR_R, ZENITH_SUNSET_COLOR_G, ZENITH_SUNSET_COLOR_B) + #define ZENITH_DAY_COLOR vec3(ZENITH_DAY_COLOR_R, ZENITH_DAY_COLOR_G, ZENITH_DAY_COLOR_B) + #define ZENITH_NIGHT_COLOR vec3(ZENITH_NIGHT_COLOR_R, ZENITH_NIGHT_COLOR_G, ZENITH_NIGHT_COLOR_B) * NIGHT_BRIGHT_PHASE - #define HORIZON_SUNSET_COLOR vec3(HORIZON_SUNSET_COLOR_R, HORIZON_SUNSET_COLOR_G, HORIZON_SUNSET_COLOR_B) - #define HORIZON_DAY_COLOR vec3(HORIZON_DAY_COLOR_R, HORIZON_DAY_COLOR_G, HORIZON_DAY_COLOR_B) - #define HORIZON_NIGHT_COLOR vec3(HORIZON_NIGHT_COLOR_R, HORIZON_NIGHT_COLOR_G, HORIZON_NIGHT_COLOR_B) * NIGHT_BRIGHT_PHASE + #define HORIZON_SUNSET_COLOR vec3(HORIZON_SUNSET_COLOR_R, HORIZON_SUNSET_COLOR_G, HORIZON_SUNSET_COLOR_B) + #define HORIZON_DAY_COLOR vec3(HORIZON_DAY_COLOR_R, HORIZON_DAY_COLOR_G, HORIZON_DAY_COLOR_B) + #define HORIZON_NIGHT_COLOR vec3(HORIZON_NIGHT_COLOR_R, HORIZON_NIGHT_COLOR_G, HORIZON_NIGHT_COLOR_B) * NIGHT_BRIGHT_PHASE - #define WATER_COLOR vec3(WATER_COLOR_R, WATER_COLOR_G, WATER_COLOR_B) + #define WATER_COLOR vec3(WATER_COLOR_R, WATER_COLOR_G, WATER_COLOR_B) #endif #define NV_COLOR vec3(NV_COLOR_R, NV_COLOR_G, NV_COLOR_B) #if BLOCKLIGHT_TEMP == 0 - #define CANDLE_BASELIGHT vec3(0.29975, 0.15392353, 0.0799) + #define CANDLE_BASELIGHT vec3(0.29975, 0.15392353, 0.0799) #elif BLOCKLIGHT_TEMP == 1 - #define CANDLE_BASELIGHT vec3(0.27475, 0.17392353, 0.0899) + #define CANDLE_BASELIGHT vec3(0.27475, 0.17392353, 0.0899) #elif BLOCKLIGHT_TEMP == 2 - #define CANDLE_BASELIGHT vec3(0.24975, 0.19392353, 0.0999) + #define CANDLE_BASELIGHT vec3(0.24975, 0.19392353, 0.0999) #elif BLOCKLIGHT_TEMP == 3 - #define CANDLE_BASELIGHT vec3(0.22, 0.19, 0.14) + #define CANDLE_BASELIGHT vec3(0.22, 0.19, 0.14) #else - #define CANDLE_BASELIGHT vec3(0.19, 0.19, 0.19) + #define CANDLE_BASELIGHT vec3(0.19, 0.19, 0.19) #endif -vec3 day_blend(vec3 sunset, vec3 day, vec3 night) { - // f(x) = min(-((x-.25)^2)∙20 + 1.25, 1) - // g(x) = min(-((x-.75)^2)∙50 + 3.125, 1) - - vec3 day_color = mix(sunset, day, day_mixer); - vec3 night_color = mix(sunset, night, night_mixer); - - return mix(day_color, night_color, step(0.5, day_moment)); -} - -float day_blend_float(float sunset, float day, float night) { - // f(x) = min(-((x-.25)^2)∙20 + 1.25, 1) - // g(x) = min(-((x-.75)^2)∙50 + 3.125, 1) - - float day_value = mix(sunset, day, day_mixer); - float night_value = mix(sunset, night, night_mixer); - - return mix(day_value, night_value, step(0.5, day_moment)); -} - -#if defined SIMPLE_AUTOEXP - // Ambient color luma per hour in exposure calculation - #if !defined UNKNOWN_DIM - #define EXPOSURE_DAY 1.0 - #define EXPOSURE_SUNSET 1.0 - #define EXPOSURE_NIGHT 0.01 - #else - #define EXPOSURE_DAY 1.0 - #define EXPOSURE_SUNSET 1.0 - #define EXPOSURE_NIGHT 1.0 - #endif -#endif +#include "/lib/day_blend.glsl" // Fog parameter per hour #if VOL_LIGHT == 1 || (VOL_LIGHT == 2 && defined SHADOW_CASTING) || defined UNKNOWN_DIM #define FOG_DENSITY 3.0 #else - #define FOG_DAY 3.0 - #define FOG_SUNSET 2.0 - #define FOG_NIGHT 3.0 + #define FOG_DAY 3.0 + #define FOG_SUNSET 2.0 + #define FOG_NIGHT 3.0 #endif + +#include "/lib/color_conversion.glsl" diff --git a/shaders/lib/color_utils_end.glsl b/shaders/lib/color_utils_end.glsl index 57d434d8..3f389b88 100644 --- a/shaders/lib/color_utils_end.glsl +++ b/shaders/lib/color_utils_end.glsl @@ -24,49 +24,26 @@ uniform float night_mixer; #define WATER_COLOR vec3(0.01647059, 0.13882353, 0.16470588) #if BLOCKLIGHT_TEMP == 0 - #define CANDLE_BASELIGHT vec3(0.29975, 0.15392353, 0.0799) + #define CANDLE_BASELIGHT vec3(0.29975, 0.15392353, 0.0799) #elif BLOCKLIGHT_TEMP == 1 - #define CANDLE_BASELIGHT vec3(0.27475, 0.17392353, 0.0899) + #define CANDLE_BASELIGHT vec3(0.27475, 0.17392353, 0.0899) #elif BLOCKLIGHT_TEMP == 2 - #define CANDLE_BASELIGHT vec3(0.24975, 0.19392353, 0.0999) + #define CANDLE_BASELIGHT vec3(0.24975, 0.19392353, 0.0999) #elif BLOCKLIGHT_TEMP == 3 - #define CANDLE_BASELIGHT vec3(0.22, 0.19, 0.14) + #define CANDLE_BASELIGHT vec3(0.22, 0.19, 0.14) #else - #define CANDLE_BASELIGHT vec3(0.19, 0.19, 0.19) + #define CANDLE_BASELIGHT vec3(0.19, 0.19, 0.19) #endif -vec3 day_blend(vec3 sunset, vec3 day, vec3 night) { - // f(x) = min(-((x-.25)^2)∙20 + 1.25, 1) - // g(x) = min(-((x-.75)^2)∙50 + 3.125, 1) - - vec3 day_color = mix(sunset, day, day_mixer); - vec3 night_color = mix(sunset, night, night_mixer); - - return mix(day_color, night_color, step(0.5, day_moment)); -} - -float day_blend_float(float sunset, float day, float night) { - // f(x) = min(-((x-.25)^2)∙20 + 1.25, 1) - // g(x) = min(-((x-.75)^2)∙50 + 3.125, 1) - - float day_value = mix(sunset, day, day_mixer); - float night_value = mix(sunset, night, night_mixer); - - return mix(day_value, night_value, step(0.5, day_moment)); -} - -#if defined SIMPLE_AUTOEXP - // Ambient color luma per hour in exposure calculation - #define EXPOSURE_DAY 1.0 - #define EXPOSURE_SUNSET 1.0 - #define EXPOSURE_NIGHT 1.0 -#endif +#include "/lib/day_blend.glsl" // Fog parameter per hour #if VOL_LIGHT == 1 || (VOL_LIGHT == 2 && defined SHADOW_CASTING) #define FOG_DENSITY 1.0 #else - #define FOG_DAY 1.0 - #define FOG_SUNSET 1.0 - #define FOG_NIGHT 1.0 + #define FOG_DAY 1.0 + #define FOG_SUNSET 1.0 + #define FOG_NIGHT 1.0 #endif + +#include "/lib/color_conversion.glsl" \ No newline at end of file diff --git a/shaders/lib/color_utils_nether.glsl b/shaders/lib/color_utils_nether.glsl index 7958ed34..eff5e451 100644 --- a/shaders/lib/color_utils_nether.glsl +++ b/shaders/lib/color_utils_nether.glsl @@ -24,45 +24,22 @@ uniform float night_mixer; #define WATER_COLOR vec3(0.01647059, 0.13882353, 0.16470588) #if BLOCKLIGHT_TEMP == 0 - #define CANDLE_BASELIGHT vec3(0.29975, 0.15392353, 0.0799) + #define CANDLE_BASELIGHT vec3(0.29975, 0.15392353, 0.0799) #elif BLOCKLIGHT_TEMP == 1 - #define CANDLE_BASELIGHT vec3(0.27475, 0.17392353, 0.0899) + #define CANDLE_BASELIGHT vec3(0.27475, 0.17392353, 0.0899) #elif BLOCKLIGHT_TEMP == 2 - #define CANDLE_BASELIGHT vec3(0.24975, 0.19392353, 0.0999) + #define CANDLE_BASELIGHT vec3(0.24975, 0.19392353, 0.0999) #elif BLOCKLIGHT_TEMP == 3 - #define CANDLE_BASELIGHT vec3(0.22, 0.19, 0.14) + #define CANDLE_BASELIGHT vec3(0.22, 0.19, 0.14) #else - #define CANDLE_BASELIGHT vec3(0.19, 0.19, 0.19) + #define CANDLE_BASELIGHT vec3(0.19, 0.19, 0.19) #endif -vec3 day_blend(vec3 sunset, vec3 day, vec3 night) { - // f(x) = min(-((x-.25)^2)∙20 + 1.25, 1) - // g(x) = min(-((x-.75)^2)∙50 + 3.125, 1) - - vec3 day_color = mix(sunset, day, day_mixer); - vec3 night_color = mix(sunset, night, night_mixer); - - return mix(day_color, night_color, step(0.5, day_moment)); -} - -float day_blend_float(float sunset, float day, float night) { - // f(x) = min(-((x-.25)^2)∙20 + 1.25, 1) - // g(x) = min(-((x-.75)^2)∙50 + 3.125, 1) - - float day_value = mix(sunset, day, day_mixer); - float night_value = mix(sunset, night, night_mixer); - - return mix(day_value, night_value, step(0.5, day_moment)); -} - -#if defined SIMPLE_AUTOEXP - // Ambient color luma per hour in exposure calculation - #define EXPOSURE_DAY 1.0 - #define EXPOSURE_SUNSET 1.0 - #define EXPOSURE_NIGHT 1.0 -#endif +#include "/lib/day_blend.glsl" // Fog parameter per hour #define FOG_DAY 1.0 #define FOG_SUNSET 1.0 #define FOG_NIGHT 1.0 + +#include "/lib/color_conversion.glsl" diff --git a/shaders/lib/config.alternate.glsl b/shaders/lib/config.alternate.glsl new file mode 100644 index 00000000..87ed4e65 --- /dev/null +++ b/shaders/lib/config.alternate.glsl @@ -0,0 +1,323 @@ +/* MakeUp - config.glsl +Config variables + +Javier Garduño - GNU Lesser General Public License v3.0 +*/ + +// Useful entities +#define ENTITY_SMALLGRASS 10031.0 // Normal grass like entities +#define ENTITY_LOWERGRASS 10175.0 // Lower half only +#define ENTITY_UPPERGRASS 10176.0 // Upper half only +#define ENTITY_SMALLENTS 10059.0 // Crops like entities +#define ENTITY_SMALLENTS_NW 10032.0 // No waveable small ents +#define ENTITY_LEAVES 10018.0 // Leaves +#define ENTITY_VINES 10106.0 // Vines +#define ENTITY_EMMISIVE 10089.0 // Emissors +#define ENTITY_S_EMMISIVE 10090.0 // Emissors +#define ENTITY_F_EMMISIVE 10213.0 // Fake emissors +#define ENTITY_WATER 10008.0 // Water +#define ENTITY_PORTAL 10090.0 // Portal +#define ENTITY_STAINED 10079.0 // Glass +#define ENTITY_METAL 10400.0 // Metal-like glossy blocks +#define ENTITY_SAND 10410.0 // Sand-like glossy blocks +#define ENTITY_FABRIC 10440.0 // Fabric-like glossy blocks + +// Other constants +#define ZENITH_SKY_RAIN_COLOR vec3(.7, .85, 1.0) +#define HORIZON_SKY_RAIN_COLOR vec3(0.35 , 0.425, 0.5) + +// Options +#define REFLECTION_SLIDER 2 // [0 1 2] Reflection quality. - Flipped image: Inaccurate but quick reflection. - Raymarching: Raytraced Screen Space Reflection. + +#if REFLECTION_SLIDER == 0 + #define REFLECTION 0 + #define SSR_TYPE 0 + #define REFLEX_INDEX 0.45 +#elif REFLECTION_SLIDER == 1 + #define REFLECTION 1 + #define SSR_TYPE 0 + #define REFLEX_INDEX 0.7 +#elif REFLECTION_SLIDER == 2 + #define REFLECTION 1 + #define SSR_TYPE 1 + #define REFLEX_INDEX 0.7 +#endif + +#define FOG_ACTIVE // Toggle fog +#define NETHER_FOG_DISTANCE 0 // [0 1] // Sets Nether fog distance to half of the render distance (maximum of 96 blocks) +#define ACERCADE 0 // [0] +#define WAVING 1 // [0 1] Makes objects like leaves or grass move in the wind +#define TINTED_WATER 1 // [0 1] Use the resource pack color for water. +#define REFRACTION 1 // [0 1] Activate refractions. +// #define DOF // Enables depth of field (high performance cost). +#define DOF_STRENGTH 0.09 // [0.06 0.07 0.08 0.09 0.10 0.11 0.12 0.13] Depth of field strength. +#define AO 1 // [0 1] Turn on for enhanced ambient occlusion (medium performance cost). +#define AOSTEPS 4 // [4 5 6 7 8 9 10 11] How many samples are taken for AO (high performance cost). +#define AO_STRENGTH 0.70 // [0.20 0.25 0.30 0.35 0.40 0.45 0.50 0.55 0.60 0.66 0.70 0.75 0.80 0.85] Ambient occlusion strength (strength NOT affect performance). +#define AA_TYPE 2 // [0 1 2 3] No: Disable antialiasing (not recommended). Denoise only: Supersampling is only used to eliminate noise. TAA: Enable antialiasing (Recommended). Sharp TAA: A subtle sharpening effect is used on the TAA. +//#define MOTION_BLUR // Turn on motion blur +#define MOTION_BLUR_STRENGTH 1.0 // [0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0] Set Motion blur strength. Lower framerate -> Lower strength and vice versa is recommended. +#define MOTION_BLUR_SAMPLES 4 // [3 4 5 6 7 8] Motion blur samples +#define SUN_REFLECTION 1 // [0 1] Enable sun (or moon) reflection on water and glass + +#define SHADOW_TYPE 1 // [0 1] Sets the shadow type +#define SHADOW_BLUR 2.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] Shadow blur intensity +// #define COLORED_SHADOW // Attempts to tint the shadow of translucent objects, as well as the associated volumetric light (if active). +#define WATER_ABSORPTION 0.50 // [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] Sets how much light the water absorbs. Low levels make the water more transparent. High levels make it more opaque. +#define COLOR_SCHEME 7 // [0 1 2 3 4 5 6 7 99] Ethereal: Old default theme. New shoka: Reinterpretation of a classic. Shoka: The classic. Legacy: Very old default. Captain: A cold preset of stylish colors. Psycodelic: Remaster of old vivid scheme. Cocoa: Warm theme. Testigo: Fantasy and cute scheme. Custom: Choose your colors in advanced options. +#define WATER_TEXTURE 1 // [0 1] Enable or disable resource pack water texture. It does not work properly in 1.12. In that case the default value is recommended. +#define AVOID_DARK_LEVEL 0.030 // [0.000 0.005 0.010 0.015 0.020 0.025 0.030 0.035 0.040 0.045 0.050 0.055 0.060] Minimal omni light intensity in caves. +#define NIGHT_BRIGHT 0.60 // [0.30 0.35 0.40 0.45 0.50 0.55 0.60 0.65 0.70] Adjusts the brightness of the night light in exteriors. +#define V_CLOUDS 1 // [0 1 2] Volumetric static: The clouds move, but they keep their shape. Volumetric dynamic: Clouds change shape over time, a different cloud landscape every time (medium performance hit). Vanilla: Original vanilla clouds. +#define CLOUD_VOL_STYLE 1 // [0 1] Set the volumetric cloud style. +#define CLOUD_REFLECTION // Set off-screen volumetric clouds reflection (volumetric clouds must be active). +#define END_CLOUDS // Activates drawing of clouds in the end (only works if volumetric clouds are active) +#define BLACK_ENTITY_FIX 0 // [0 1] Removes black entity bug in old video drivers (activate ONLY if you have problems with black entities) +#define BLOOM // Enable or disable bloom effect +#define BLOOM_SAMPLES 4.0 // [4.0 5.0 6.0 7.0 8.0 9.0 10.0] Bloom sample pairs. +#define CHROMA_ABER 0 // [0 1] Enable chroma aberration. +#define CHROMA_ABER_STRENGTH 0.04 // [0.04 0.05 0.06] Chroma aberration strength. +#define VOL_LIGHT 1 // [0 1 2] Depth based: Turn on depth based godrays, they are a bit slow, but can work better than volumetric light for very short shadow distances. Volumetric: It activates the volumetric light, more accurate and faster, but it needs the shadows enabled to work. +// #define VANILLA_WATER // Establishes the appearance of water as vanilla. +#define WATER_COLOR_SOURCE 0 // [0 1] Select the water color source. It does not work properly in 1.12. In that case the default value is recommended. +#define WATER_TURBULENCE 7.0 // [7.0 1.75 0.9 0.5] Set the water waves strength. +#define FOG_ADJUST 2.0 // [10.0 8.0 4.0 2.0 1.0] Sets the fog strength +// #define DEBUG_MODE // Set debug mode. +#define BLOCKLIGHT_TEMP 4 // [0 1 2 3 4] Set blocklight temperature +#define MATERIAL_GLOSS // A very subtle effect that adds some ability to reflect direct light on some blocks. It is most noticeable on metals and luminous objects. +#define DYN_HAND_LIGHT // Toggle the fake dynamic light + +// Custom colors +#define LIGHT_SUNSET_COLOR_R 0.71 // [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 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.3 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.4 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.5] +#define LIGHT_SUNSET_COLOR_G 0.44 // [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 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.3 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.4 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.5] +#define LIGHT_SUNSET_COLOR_B 0.29 // [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 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.3 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.4 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.5] + +#define LIGHT_DAY_COLOR_R 0.89 // [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 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.3 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.4 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.5] +#define LIGHT_DAY_COLOR_G 0.89 // [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 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.3 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.4 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.5] +#define LIGHT_DAY_COLOR_B 0.84 // [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 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.3 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.4 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.5] + +#define LIGHT_NIGHT_COLOR_R 0.048 // [0.0 0.001 0.002 0.003 0.004 0.005 0.006 0.007 0.008 0.009 0.01 0.011 0.012 0.013 0.014 0.015 0.016 0.017 0.018 0.019 0.02 0.021 0.022 0.023 0.024 0.025 0.026 0.027 0.028 0.029 0.03 0.031 0.032 0.033 0.034 0.035 0.036 0.037 0.038 0.039 0.04 0.041 0.042 0.043 0.044 0.045 0.046 0.047 0.048 0.049 0.05 0.051 0.052 0.053 0.054 0.055 0.056 0.057 0.058 0.059 0.06 0.061 0.062 0.063 0.064 0.065 0.066 0.067 0.068 0.069 0.07 0.071 0.072 0.073 0.074 0.075 0.076 0.077 0.078 0.079 0.08 0.081 0.082 0.083 0.084 0.085 0.086 0.087 0.088 0.089 0.09 0.091 0.092 0.093 0.094 0.095 0.096 0.097 0.098 0.099 0.1 0.101 0.102 0.103 0.104 0.105 0.106 0.107 0.108 0.109 0.11 0.111 0.112 0.113 0.114 0.115 0.116 0.117 0.118 0.119 0.12 0.121 0.122 0.123 0.124 0.125 0.126 0.127 0.128 0.129 0.13 0.131 0.132 0.133 0.134 0.135 0.136 0.137 0.138 0.139 0.14 0.141 0.142 0.143 0.144 0.145 0.146 0.147 0.148 0.149 0.15] +#define LIGHT_NIGHT_COLOR_G 0.052 // [0.0 0.001 0.002 0.003 0.004 0.005 0.006 0.007 0.008 0.009 0.01 0.011 0.012 0.013 0.014 0.015 0.016 0.017 0.018 0.019 0.02 0.021 0.022 0.023 0.024 0.025 0.026 0.027 0.028 0.029 0.03 0.031 0.032 0.033 0.034 0.035 0.036 0.037 0.038 0.039 0.04 0.041 0.042 0.043 0.044 0.045 0.046 0.047 0.048 0.049 0.05 0.051 0.052 0.053 0.054 0.055 0.056 0.057 0.058 0.059 0.06 0.061 0.062 0.063 0.064 0.065 0.066 0.067 0.068 0.069 0.07 0.071 0.072 0.073 0.074 0.075 0.076 0.077 0.078 0.079 0.08 0.081 0.082 0.083 0.084 0.085 0.086 0.087 0.088 0.089 0.09 0.091 0.092 0.093 0.094 0.095 0.096 0.097 0.098 0.099 0.1 0.101 0.102 0.103 0.104 0.105 0.106 0.107 0.108 0.109 0.11 0.111 0.112 0.113 0.114 0.115 0.116 0.117 0.118 0.119 0.12 0.121 0.122 0.123 0.124 0.125 0.126 0.127 0.128 0.129 0.13 0.131 0.132 0.133 0.134 0.135 0.136 0.137 0.138 0.139 0.14 0.141 0.142 0.143 0.144 0.145 0.146 0.147 0.148 0.149 0.15] +#define LIGHT_NIGHT_COLOR_B 0.061 // [0.0 0.001 0.002 0.003 0.004 0.005 0.006 0.007 0.008 0.009 0.01 0.011 0.012 0.013 0.014 0.015 0.016 0.017 0.018 0.019 0.02 0.021 0.022 0.023 0.024 0.025 0.026 0.027 0.028 0.029 0.03 0.031 0.032 0.033 0.034 0.035 0.036 0.037 0.038 0.039 0.04 0.041 0.042 0.043 0.044 0.045 0.046 0.047 0.048 0.049 0.05 0.051 0.052 0.053 0.054 0.055 0.056 0.057 0.058 0.059 0.06 0.061 0.062 0.063 0.064 0.065 0.066 0.067 0.068 0.069 0.07 0.071 0.072 0.073 0.074 0.075 0.076 0.077 0.078 0.079 0.08 0.081 0.082 0.083 0.084 0.085 0.086 0.087 0.088 0.089 0.09 0.091 0.092 0.093 0.094 0.095 0.096 0.097 0.098 0.099 0.1 0.101 0.102 0.103 0.104 0.105 0.106 0.107 0.108 0.109 0.11 0.111 0.112 0.113 0.114 0.115 0.116 0.117 0.118 0.119 0.12 0.121 0.122 0.123 0.124 0.125 0.126 0.127 0.128 0.129 0.13 0.131 0.132 0.133 0.134 0.135 0.136 0.137 0.138 0.139 0.14 0.141 0.142 0.143 0.144 0.145 0.146 0.147 0.148 0.149 0.15] + +#define ZENITH_SUNSET_COLOR_R 0.1 // [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 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.3 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.4 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.5] +#define ZENITH_SUNSET_COLOR_G 0.18 // [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 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.3 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.4 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.5] +#define ZENITH_SUNSET_COLOR_B 0.27 // [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 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.3 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.4 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.5] + +#define ZENITH_DAY_COLOR_R 0.06 // [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 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.3 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.4 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.5] +#define ZENITH_DAY_COLOR_G 0.26 // [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 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.3 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.4 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.5] +#define ZENITH_DAY_COLOR_B 0.44 // [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 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.3 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.4 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.5] + +#define ZENITH_NIGHT_COLOR_R 0.004 // [0.0 0.001 0.002 0.003 0.004 0.005 0.006 0.007 0.008 0.009 0.01 0.011 0.012 0.013 0.014 0.015 0.016 0.017 0.018 0.019 0.02 0.021 0.022 0.023 0.024 0.025 0.026 0.027 0.028 0.029 0.03 0.031 0.032 0.033 0.034 0.035 0.036 0.037 0.038 0.039 0.04 0.041 0.042 0.043 0.044 0.045 0.046 0.047 0.048 0.049 0.05 0.051 0.052 0.053 0.054 0.055 0.056 0.057 0.058 0.059 0.06 0.061 0.062 0.063 0.064 0.065 0.066 0.067 0.068 0.069 0.07 0.071 0.072 0.073 0.074 0.075 0.076 0.077 0.078 0.079 0.08 0.081 0.082 0.083 0.084 0.085 0.086 0.087 0.088 0.089 0.09 0.091 0.092 0.093 0.094 0.095 0.096 0.097 0.098 0.099 0.1 0.101 0.102 0.103 0.104 0.105 0.106 0.107 0.108 0.109 0.11 0.111 0.112 0.113 0.114 0.115 0.116 0.117 0.118 0.119 0.12 0.121 0.122 0.123 0.124 0.125 0.126 0.127 0.128 0.129 0.13 0.131 0.132 0.133 0.134 0.135 0.136 0.137 0.138 0.139 0.14 0.141 0.142 0.143 0.144 0.145 0.146 0.147 0.148 0.149 0.15] +#define ZENITH_NIGHT_COLOR_G 0.01 // [0.0 0.001 0.002 0.003 0.004 0.005 0.006 0.007 0.008 0.009 0.01 0.011 0.012 0.013 0.014 0.015 0.016 0.017 0.018 0.019 0.02 0.021 0.022 0.023 0.024 0.025 0.026 0.027 0.028 0.029 0.03 0.031 0.032 0.033 0.034 0.035 0.036 0.037 0.038 0.039 0.04 0.041 0.042 0.043 0.044 0.045 0.046 0.047 0.048 0.049 0.05 0.051 0.052 0.053 0.054 0.055 0.056 0.057 0.058 0.059 0.06 0.061 0.062 0.063 0.064 0.065 0.066 0.067 0.068 0.069 0.07 0.071 0.072 0.073 0.074 0.075 0.076 0.077 0.078 0.079 0.08 0.081 0.082 0.083 0.084 0.085 0.086 0.087 0.088 0.089 0.09 0.091 0.092 0.093 0.094 0.095 0.096 0.097 0.098 0.099 0.1 0.101 0.102 0.103 0.104 0.105 0.106 0.107 0.108 0.109 0.11 0.111 0.112 0.113 0.114 0.115 0.116 0.117 0.118 0.119 0.12 0.121 0.122 0.123 0.124 0.125 0.126 0.127 0.128 0.129 0.13 0.131 0.132 0.133 0.134 0.135 0.136 0.137 0.138 0.139 0.14 0.141 0.142 0.143 0.144 0.145 0.146 0.147 0.148 0.149 0.15] +#define ZENITH_NIGHT_COLOR_B 0.019 // [0.0 0.001 0.002 0.003 0.004 0.005 0.006 0.007 0.008 0.009 0.01 0.011 0.012 0.013 0.014 0.015 0.016 0.017 0.018 0.019 0.02 0.021 0.022 0.023 0.024 0.025 0.026 0.027 0.028 0.029 0.03 0.031 0.032 0.033 0.034 0.035 0.036 0.037 0.038 0.039 0.04 0.041 0.042 0.043 0.044 0.045 0.046 0.047 0.048 0.049 0.05 0.051 0.052 0.053 0.054 0.055 0.056 0.057 0.058 0.059 0.06 0.061 0.062 0.063 0.064 0.065 0.066 0.067 0.068 0.069 0.07 0.071 0.072 0.073 0.074 0.075 0.076 0.077 0.078 0.079 0.08 0.081 0.082 0.083 0.084 0.085 0.086 0.087 0.088 0.089 0.09 0.091 0.092 0.093 0.094 0.095 0.096 0.097 0.098 0.099 0.1 0.101 0.102 0.103 0.104 0.105 0.106 0.107 0.108 0.109 0.11 0.111 0.112 0.113 0.114 0.115 0.116 0.117 0.118 0.119 0.12 0.121 0.122 0.123 0.124 0.125 0.126 0.127 0.128 0.129 0.13 0.131 0.132 0.133 0.134 0.135 0.136 0.137 0.138 0.139 0.14 0.141 0.142 0.143 0.144 0.145 0.146 0.147 0.148 0.149 0.15] + +#define HORIZON_SUNSET_COLOR_R 0.71 // [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 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.3 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.4 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.5] +#define HORIZON_SUNSET_COLOR_G 0.55 // [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 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.3 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.4 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.5] +#define HORIZON_SUNSET_COLOR_B 0.42 // [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 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.3 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.4 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.5] + +#define HORIZON_DAY_COLOR_R 0.65 // [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 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.3 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.4 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.5] +#define HORIZON_DAY_COLOR_G 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 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.3 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.4 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.5] +#define HORIZON_DAY_COLOR_B 1.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 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.3 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.4 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.5] + +#define HORIZON_NIGHT_COLOR_R 0.025 // [0.0 0.001 0.002 0.003 0.004 0.005 0.006 0.007 0.008 0.009 0.01 0.011 0.012 0.013 0.014 0.015 0.016 0.017 0.018 0.019 0.02 0.021 0.022 0.023 0.024 0.025 0.026 0.027 0.028 0.029 0.03 0.031 0.032 0.033 0.034 0.035 0.036 0.037 0.038 0.039 0.04 0.041 0.042 0.043 0.044 0.045 0.046 0.047 0.048 0.049 0.05 0.051 0.052 0.053 0.054 0.055 0.056 0.057 0.058 0.059 0.06 0.061 0.062 0.063 0.064 0.065 0.066 0.067 0.068 0.069 0.07 0.071 0.072 0.073 0.074 0.075 0.076 0.077 0.078 0.079 0.08 0.081 0.082 0.083 0.084 0.085 0.086 0.087 0.088 0.089 0.09 0.091 0.092 0.093 0.094 0.095 0.096 0.097 0.098 0.099 0.1 0.101 0.102 0.103 0.104 0.105 0.106 0.107 0.108 0.109 0.11 0.111 0.112 0.113 0.114 0.115 0.116 0.117 0.118 0.119 0.12 0.121 0.122 0.123 0.124 0.125 0.126 0.127 0.128 0.129 0.13 0.131 0.132 0.133 0.134 0.135 0.136 0.137 0.138 0.139 0.14 0.141 0.142 0.143 0.144 0.145 0.146 0.147 0.148 0.149 0.15] +#define HORIZON_NIGHT_COLOR_G 0.035 // [0.0 0.001 0.002 0.003 0.004 0.005 0.006 0.007 0.008 0.009 0.01 0.011 0.012 0.013 0.014 0.015 0.016 0.017 0.018 0.019 0.02 0.021 0.022 0.023 0.024 0.025 0.026 0.027 0.028 0.029 0.03 0.031 0.032 0.033 0.034 0.035 0.036 0.037 0.038 0.039 0.04 0.041 0.042 0.043 0.044 0.045 0.046 0.047 0.048 0.049 0.05 0.051 0.052 0.053 0.054 0.055 0.056 0.057 0.058 0.059 0.06 0.061 0.062 0.063 0.064 0.065 0.066 0.067 0.068 0.069 0.07 0.071 0.072 0.073 0.074 0.075 0.076 0.077 0.078 0.079 0.08 0.081 0.082 0.083 0.084 0.085 0.086 0.087 0.088 0.089 0.09 0.091 0.092 0.093 0.094 0.095 0.096 0.097 0.098 0.099 0.1 0.101 0.102 0.103 0.104 0.105 0.106 0.107 0.108 0.109 0.11 0.111 0.112 0.113 0.114 0.115 0.116 0.117 0.118 0.119 0.12 0.121 0.122 0.123 0.124 0.125 0.126 0.127 0.128 0.129 0.13 0.131 0.132 0.133 0.134 0.135 0.136 0.137 0.138 0.139 0.14 0.141 0.142 0.143 0.144 0.145 0.146 0.147 0.148 0.149 0.15] +#define HORIZON_NIGHT_COLOR_B 0.05 // [0.0 0.001 0.002 0.003 0.004 0.005 0.006 0.007 0.008 0.009 0.01 0.011 0.012 0.013 0.014 0.015 0.016 0.017 0.018 0.019 0.02 0.021 0.022 0.023 0.024 0.025 0.026 0.027 0.028 0.029 0.03 0.031 0.032 0.033 0.034 0.035 0.036 0.037 0.038 0.039 0.04 0.041 0.042 0.043 0.044 0.045 0.046 0.047 0.048 0.049 0.05 0.051 0.052 0.053 0.054 0.055 0.056 0.057 0.058 0.059 0.06 0.061 0.062 0.063 0.064 0.065 0.066 0.067 0.068 0.069 0.07 0.071 0.072 0.073 0.074 0.075 0.076 0.077 0.078 0.079 0.08 0.081 0.082 0.083 0.084 0.085 0.086 0.087 0.088 0.089 0.09 0.091 0.092 0.093 0.094 0.095 0.096 0.097 0.098 0.099 0.1 0.101 0.102 0.103 0.104 0.105 0.106 0.107 0.108 0.109 0.11 0.111 0.112 0.113 0.114 0.115 0.116 0.117 0.118 0.119 0.12 0.121 0.122 0.123 0.124 0.125 0.126 0.127 0.128 0.129 0.13 0.131 0.132 0.133 0.134 0.135 0.136 0.137 0.138 0.139 0.14 0.141 0.142 0.143 0.144 0.145 0.146 0.147 0.148 0.149 0.15] + +#define WATER_COLOR_R 0.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 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.3 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.4 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.5] +#define WATER_COLOR_G 0.2 // [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 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.3 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.4 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.5] +#define WATER_COLOR_B 0.44 // [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 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.3 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.4 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.5] + +#define NV_COLOR_R 0.5 // [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 NV_COLOR_G 0.8 // [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 NV_COLOR_B 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 OMNI_TINT_CUSTOM 0.65 // [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 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.3 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.4 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.5] + +#ifdef FOG_ACTIVE + // Don't remove +#endif + +#if NETHER_FOG_DISTANCE == 1 + #define NETHER_SIGHT min(far / 2, 96) +#else + #define NETHER_SIGHT far +#endif + +// Reflection parameters +#define RAYMARCH_STEPS 10 + +// Cloud parameters +#if CLOUD_VOL_STYLE == 1 + #define CLOUD_PLANE_SUP 380.0 + #define CLOUD_PLANE_CENTER 335.0 + #define CLOUD_PLANE 319.0 +#else + #define CLOUD_PLANE_SUP 590.0 + #define CLOUD_PLANE_CENTER 375.0 + #define CLOUD_PLANE 319.0 +#endif + +#define CLOUD_STEPS_AVG 10 // [7 8 9 10 11 12 13 14 15 16] Samples per pixel (high performance impact). +#define CLOUD_SPEED 0 // [0 1 2] Change the speed of clouds for demo purposes. + +#if CLOUD_VOL_STYLE == 1 + #if CLOUD_SPEED == 0 + #define CLOUD_HI_FACTOR 0.001388888888888889 + #define CLOUD_LOW_FACTOR 0.0002777777777777778 + #elif CLOUD_SPEED == 1 + #define CLOUD_HI_FACTOR 0.01388888888888889 + #define CLOUD_LOW_FACTOR 0.002777777777777778 + #elif CLOUD_SPEED == 2 + #define CLOUD_HI_FACTOR 0.1388888888888889 + #define CLOUD_LOW_FACTOR 0.02777777777777778 + #endif +#else + #if CLOUD_SPEED == 0 + #define CLOUD_HI_FACTOR 0.0016666666666666666 + #define CLOUD_LOW_FACTOR 0.0002777777777777778 + #elif CLOUD_SPEED == 1 + #define CLOUD_HI_FACTOR 0.016666666666666666 + #define CLOUD_LOW_FACTOR 0.002777777777777778 + #elif CLOUD_SPEED == 2 + #define CLOUD_HI_FACTOR 0.16666666666666666 + #define CLOUD_LOW_FACTOR 0.02777777777777778 + #endif +#endif + +// Godrays +#define GODRAY_STEPS 6 +#define CHEAP_GODRAY_SAMPLES 4 + +// Color blindness +// #define COLOR_BLINDNESS // Enable color blindness correction +#define COLOR_BLIND_MODE 0 // [0 1 2] Set color blindness type + +// Sun rotation angle +const float sunPathRotation = -25.0; // [-40.0 -35.0 -30.0 -25.0 -20.0 -15.0 -10.0 -5.0 0.0 5.0 10.0 15.0 20.0 25.0 30.0 35.0 40.0] + +#define SHADOW_DISTANCE_SLIDER 1 // [0 1 2] +#define SHADOW_QTY_SLIDER 2 // [1 2 3] + +#define SHADOW_CASTING // Enable or disable shadows. Configure quality in advanced options. + +#ifdef SHADOW_CASTING + // Shadow parameters + const float shadowIntervalSize = 3.0; + + const bool shadowtex0Mipmap = false; + const bool shadowtex1Mipmap = false; + const bool shadowColor0Mipmap = false; + const bool shadowColor1Mipmap = false; + + const bool shadowtex0Clear = false; + const bool shadowtex1Clear = false; + const bool shadowcolor0Clear = false; + const bool shadowcolor1Clear = false; + + #ifndef NO_SHADOWS + #if SHADOW_DISTANCE_SLIDER == 0 + #if SHADOW_QTY_SLIDER == 1 + #define SHADOW_LIMIT 75.0 + const int shadowMapResolution = 300; + const float shadowDistance = 75.0; + #define SHADOW_FIX_FACTOR 0.3 + #define SHADOW_DIST 0.75 + + #elif SHADOW_QTY_SLIDER == 2 + #define SHADOW_LIMIT 75.0 + const int shadowMapResolution = 600; + const float shadowDistance = 75.0; + #define SHADOW_FIX_FACTOR 0.15 + #define SHADOW_DIST 0.81 + + #elif SHADOW_QTY_SLIDER == 3 + #define SHADOW_LIMIT 75.0 + const int shadowMapResolution = 1200; + const float shadowDistance = 75.0; + #define SHADOW_FIX_FACTOR 0.05 + #define SHADOW_DIST 0.81 + + #endif + + #elif SHADOW_DISTANCE_SLIDER == 1 + #if SHADOW_QTY_SLIDER == 1 + #define SHADOW_LIMIT 105.0 + const int shadowMapResolution = 420; + const float shadowDistance = 105.0; + #define SHADOW_FIX_FACTOR 0.28 + #define SHADOW_DIST 0.75 + + #elif SHADOW_QTY_SLIDER == 2 + #define SHADOW_LIMIT 105.0 + const int shadowMapResolution = 840; + const float shadowDistance = 105.0; + #define SHADOW_FIX_FACTOR 0.07 + #define SHADOW_DIST 0.83 + + #elif SHADOW_QTY_SLIDER == 3 + #define SHADOW_LIMIT 105.0 + const int shadowMapResolution = 1680; + const float shadowDistance = 105.0; + #define SHADOW_FIX_FACTOR 0.03 + #define SHADOW_DIST 0.83 + + #endif + + #elif SHADOW_DISTANCE_SLIDER == 2 + #if SHADOW_QTY_SLIDER == 1 + #define SHADOW_LIMIT 255.0 + const int shadowMapResolution = 1020; + const float shadowDistance = 255.0; + #define SHADOW_FIX_FACTOR 0.12 + #define SHADOW_DIST 0.8 + + #elif SHADOW_QTY_SLIDER == 2 + #define SHADOW_LIMIT 255.0 + const int shadowMapResolution = 2040; + const float shadowDistance = 255.0; + #define SHADOW_FIX_FACTOR 0.03 + #define SHADOW_DIST 0.85 + + #elif SHADOW_QTY_SLIDER == 3 + #define SHADOW_LIMIT 255.0 + const int shadowMapResolution = 4080; + const float shadowDistance = 255.0; + #define SHADOW_FIX_FACTOR 0.015 + #define SHADOW_DIST 0.87 + + #endif + #endif + + #if VOL_LIGHT == 2 + const float shadowDistanceRenderMul = -1.0; + #else + const float shadowDistanceRenderMul = 1.0; + #endif + + const bool shadowHardwareFiltering = true; + const bool shadowtex1Nearest = false; + #endif + +#else + #define SHADOW_DIST 0.0 + #define SHADOW_RES 0 + const int shadowMapResolution = 100; + const float shadowDistance = 60.0; +#endif + +// Redefined constants +#if AO == 0 + const float ambientOcclusionLevel = 0.7; +#else + const float ambientOcclusionLevel = 0.0; +#endif + +const float eyeBrightnessHalflife = 6.0; +const float centerDepthHalflife = 0.66; + +// DH exclusive +#if defined DISTANT_HORIZONS + #define TRANSITION_DH_SUP 0.05 + #define TRANSITION_DH_INF 0.90 +#endif \ No newline at end of file diff --git a/shaders/lib/config.glsl b/shaders/lib/config.glsl index c8dc7f2b..965fb321 100644 --- a/shaders/lib/config.glsl +++ b/shaders/lib/config.glsl @@ -30,17 +30,17 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define REFLECTION_SLIDER 2 // [0 1 2] Reflection quality. - Flipped image: Inaccurate but quick reflection. - Raymarching: Raytraced Screen Space Reflection. #if REFLECTION_SLIDER == 0 - #define REFLECTION 0 - #define SSR_TYPE 0 - #define REFLEX_INDEX 0.45 + #define REFLECTION 0 + #define SSR_TYPE 0 + #define REFLEX_INDEX 0.45 #elif REFLECTION_SLIDER == 1 - #define REFLECTION 1 - #define SSR_TYPE 0 - #define REFLEX_INDEX 0.7 + #define REFLECTION 1 + #define SSR_TYPE 0 + #define REFLEX_INDEX 0.7 #elif REFLECTION_SLIDER == 2 - #define REFLECTION 1 - #define SSR_TYPE 1 - #define REFLEX_INDEX 0.7 + #define REFLECTION 1 + #define SSR_TYPE 1 + #define REFLEX_INDEX 0.7 #endif #define FOG_ACTIVE // Toggle fog @@ -63,11 +63,11 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define SHADOW_TYPE 1 // [0 1] Sets the shadow type #define SHADOW_BLUR 2.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] Shadow blur intensity // #define COLORED_SHADOW // Attempts to tint the shadow of translucent objects, as well as the associated volumetric light (if active). -#define WATER_ABSORPTION 0.10 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 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] Sets how much light the water absorbs. Low levels make the water more transparent. High levels make it more opaque. -#define COLOR_SCHEME 1 // [0 1 2 3 4 5 6 99] Ethereal: Old default theme. New shoka: Reinterpretation of a classic. Shoka: The classic. Legacy: Very old default. Captain: A cold preset of stylish colors. Psycodelic: Remaster of old vivid scheme. Cocoa: Warm theme. Custom: Choose your colors in advanced options. +#define WATER_ABSORPTION 0.10 // [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] Sets how much light the water absorbs. Low levels make the water more transparent. High levels make it more opaque. +#define COLOR_SCHEME 1 // [0 1 2 3 4 5 6 7 99] Ethereal: Old default theme. New shoka: Reinterpretation of a classic. Shoka: The classic. Legacy: Very old default. Captain: A cold preset of stylish colors. Psycodelic: Remaster of old vivid scheme. Cocoa: Warm theme. Testigo: Fantasy and cute scheme. Custom: Choose your colors in advanced options. #define WATER_TEXTURE 0 // [0 1] Enable or disable resource pack water texture. It does not work properly in 1.12. In that case the default value is recommended. -#define AVOID_DARK_LEVEL 0.09 // [0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.10 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.18 0.19 0.20] Minimal omni light intensity in caves (percentaje). -#define NIGHT_BRIGHT 0.6 // [0.4 0.5 0.6 0.7 0.8 0.9 1.0] Adjusts the brightness of the night light in exteriors. +#define AVOID_DARK_LEVEL 0.030 // [0.000 0.005 0.010 0.015 0.020 0.025 0.030 0.035 0.040 0.045 0.050 0.055 0.060] Minimal omni light intensity in caves. +#define NIGHT_BRIGHT 0.60 // [0.30 0.35 0.40 0.45 0.50 0.55 0.60 0.65 0.70] Adjusts the brightness of the night light in exteriors. #define V_CLOUDS 1 // [0 1 2] Volumetric static: The clouds move, but they keep their shape. Volumetric dynamic: Clouds change shape over time, a different cloud landscape every time (medium performance hit). Vanilla: Original vanilla clouds. #define CLOUD_VOL_STYLE 0 // [0 1] Set the volumetric cloud style. #define CLOUD_REFLECTION // Set off-screen volumetric clouds reflection (volumetric clouds must be active). @@ -85,7 +85,6 @@ Javier Garduño - GNU Lesser General Public License v3.0 // #define DEBUG_MODE // Set debug mode. #define BLOCKLIGHT_TEMP 1 // [0 1 2 3 4] Set blocklight temperature #define MATERIAL_GLOSS // A very subtle effect that adds some ability to reflect direct light on some blocks. It is most noticeable on metals and luminous objects. -// #define SIMPLE_AUTOEXP // Toggle between advanced and simple auto-exposure. The advanced version may work strangely on some GPUs. If the brightness of the scene changes very abruptly, use the simplest. #define DYN_HAND_LIGHT // Toggle the fake dynamic light // Custom colors @@ -135,18 +134,14 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define OMNI_TINT_CUSTOM 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 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.3 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.4 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.5] -#ifdef SIMPLE_AUTOEXP - // Don't remove -#endif - #ifdef FOG_ACTIVE - // Don't remove + // Don't remove #endif #if NETHER_FOG_DISTANCE == 1 - #define NETHER_SIGHT min(far / 2, 96) + #define NETHER_SIGHT min(far / 2, 96) #else - #define NETHER_SIGHT far + #define NETHER_SIGHT far #endif // Reflection parameters @@ -154,40 +149,40 @@ Javier Garduño - GNU Lesser General Public License v3.0 // Cloud parameters #if CLOUD_VOL_STYLE == 1 - #define CLOUD_PLANE_SUP 380.0 - #define CLOUD_PLANE_CENTER 335.0 - #define CLOUD_PLANE 319.0 + #define CLOUD_PLANE_SUP 380.0 + #define CLOUD_PLANE_CENTER 335.0 + #define CLOUD_PLANE 319.0 #else - #define CLOUD_PLANE_SUP 590.0 - #define CLOUD_PLANE_CENTER 375.0 - #define CLOUD_PLANE 319.0 + #define CLOUD_PLANE_SUP 590.0 + #define CLOUD_PLANE_CENTER 375.0 + #define CLOUD_PLANE 319.0 #endif -#define CLOUD_STEPS_AVG 7 // [7 8 9 10 11 12 13 14 15 16] Samples per pixel (high performance impact). -#define CLOUD_SPEED 0 // [0 1 2] Change the speed of clouds for display purposes. +#define CLOUD_STEPS_AVG 10 // [7 8 9 10 11 12 13 14 15 16] Samples per pixel (high performance impact). +#define CLOUD_SPEED 0 // [0 1 2] Change the speed of clouds for demo purposes. #if CLOUD_VOL_STYLE == 1 - #if CLOUD_SPEED == 0 - #define CLOUD_HI_FACTOR 0.001388888888888889 - #define CLOUD_LOW_FACTOR 0.0002777777777777778 - #elif CLOUD_SPEED == 1 - #define CLOUD_HI_FACTOR 0.01388888888888889 - #define CLOUD_LOW_FACTOR 0.002777777777777778 - #elif CLOUD_SPEED == 2 - #define CLOUD_HI_FACTOR 0.1388888888888889 - #define CLOUD_LOW_FACTOR 0.02777777777777778 - #endif + #if CLOUD_SPEED == 0 + #define CLOUD_HI_FACTOR 0.001388888888888889 + #define CLOUD_LOW_FACTOR 0.0002777777777777778 + #elif CLOUD_SPEED == 1 + #define CLOUD_HI_FACTOR 0.01388888888888889 + #define CLOUD_LOW_FACTOR 0.002777777777777778 + #elif CLOUD_SPEED == 2 + #define CLOUD_HI_FACTOR 0.1388888888888889 + #define CLOUD_LOW_FACTOR 0.02777777777777778 + #endif #else - #if CLOUD_SPEED == 0 - #define CLOUD_HI_FACTOR 0.0016666666666666666 - #define CLOUD_LOW_FACTOR 0.0002777777777777778 - #elif CLOUD_SPEED == 1 - #define CLOUD_HI_FACTOR 0.016666666666666666 - #define CLOUD_LOW_FACTOR 0.002777777777777778 - #elif CLOUD_SPEED == 2 - #define CLOUD_HI_FACTOR 0.16666666666666666 - #define CLOUD_LOW_FACTOR 0.02777777777777778 - #endif + #if CLOUD_SPEED == 0 + #define CLOUD_HI_FACTOR 0.0016666666666666666 + #define CLOUD_LOW_FACTOR 0.0002777777777777778 + #elif CLOUD_SPEED == 1 + #define CLOUD_HI_FACTOR 0.016666666666666666 + #define CLOUD_LOW_FACTOR 0.002777777777777778 + #elif CLOUD_SPEED == 2 + #define CLOUD_HI_FACTOR 0.16666666666666666 + #define CLOUD_LOW_FACTOR 0.02777777777777778 + #endif #endif // Godrays @@ -207,124 +202,122 @@ const float sunPathRotation = -25.0; // [-40.0 -35.0 -30.0 -25.0 -20.0 -15.0 -10 #define SHADOW_CASTING // Enable or disable shadows. Configure quality in advanced options. #ifdef SHADOW_CASTING - // Shadow parameters - const float shadowIntervalSize = 3.0; - - const bool shadowtex0Mipmap = false; - const bool shadowtex1Mipmap = false; - const bool shadowColor0Mipmap = false; - const bool shadowColor1Mipmap = false; - - const bool shadowtex0Clear = false; - const bool shadowtex1Clear = false; - const bool shadowcolor0Clear = false; - const bool shadowcolor1Clear = false; - - #ifndef NO_SHADOWS - #if SHADOW_DISTANCE_SLIDER == 0 - #if SHADOW_QTY_SLIDER == 1 - #define SHADOW_LIMIT 75.0 - const int shadowMapResolution = 300; - const float shadowDistance = 75.0; - #define SHADOW_FIX_FACTOR 0.3 - #define SHADOW_DIST 0.75 - - #elif SHADOW_QTY_SLIDER == 2 - #define SHADOW_LIMIT 75.0 - const int shadowMapResolution = 600; - const float shadowDistance = 75.0; - #define SHADOW_FIX_FACTOR 0.15 - #define SHADOW_DIST 0.81 - - #elif SHADOW_QTY_SLIDER == 3 - #define SHADOW_LIMIT 75.0 - const int shadowMapResolution = 1200; - const float shadowDistance = 75.0; - #define SHADOW_FIX_FACTOR 0.05 - #define SHADOW_DIST 0.81 - - #endif - - #elif SHADOW_DISTANCE_SLIDER == 1 - #if SHADOW_QTY_SLIDER == 1 - #define SHADOW_LIMIT 105.0 - const int shadowMapResolution = 420; - const float shadowDistance = 105.0; - #define SHADOW_FIX_FACTOR 0.28 - #define SHADOW_DIST 0.75 - - #elif SHADOW_QTY_SLIDER == 2 - #define SHADOW_LIMIT 105.0 - const int shadowMapResolution = 840; - const float shadowDistance = 105.0; - #define SHADOW_FIX_FACTOR 0.07 - #define SHADOW_DIST 0.83 - - #elif SHADOW_QTY_SLIDER == 3 - #define SHADOW_LIMIT 105.0 - const int shadowMapResolution = 1680; - const float shadowDistance = 105.0; - #define SHADOW_FIX_FACTOR 0.03 - #define SHADOW_DIST 0.83 - - #endif - - #elif SHADOW_DISTANCE_SLIDER == 2 - #if SHADOW_QTY_SLIDER == 1 - #define SHADOW_LIMIT 255.0 - const int shadowMapResolution = 1020; - const float shadowDistance = 255.0; - #define SHADOW_FIX_FACTOR 0.12 - #define SHADOW_DIST 0.8 - - #elif SHADOW_QTY_SLIDER == 2 - #define SHADOW_LIMIT 255.0 - const int shadowMapResolution = 2040; - const float shadowDistance = 255.0; - #define SHADOW_FIX_FACTOR 0.03 - #define SHADOW_DIST 0.85 - - #elif SHADOW_QTY_SLIDER == 3 - #define SHADOW_LIMIT 255.0 - const int shadowMapResolution = 4080; - const float shadowDistance = 255.0; - #define SHADOW_FIX_FACTOR 0.015 - #define SHADOW_DIST 0.87 - - #endif - #endif - - #if VOL_LIGHT == 2 - const float shadowDistanceRenderMul = -1.0; - #else - const float shadowDistanceRenderMul = 1.0; - #endif + // Shadow parameters + const float shadowIntervalSize = 3.0; + + const bool shadowtex0Mipmap = false; + const bool shadowtex1Mipmap = false; + const bool shadowColor0Mipmap = false; + const bool shadowColor1Mipmap = false; + + const bool shadowtex0Clear = false; + const bool shadowtex1Clear = false; + const bool shadowcolor0Clear = false; + const bool shadowcolor1Clear = false; - const bool shadowHardwareFiltering = true; - const bool shadowtex1Nearest = false; - #endif + #ifndef NO_SHADOWS + #if SHADOW_DISTANCE_SLIDER == 0 + #if SHADOW_QTY_SLIDER == 1 + #define SHADOW_LIMIT 75.0 + const int shadowMapResolution = 300; + const float shadowDistance = 75.0; + #define SHADOW_FIX_FACTOR 0.3 + #define SHADOW_DIST 0.75 + + #elif SHADOW_QTY_SLIDER == 2 + #define SHADOW_LIMIT 75.0 + const int shadowMapResolution = 600; + const float shadowDistance = 75.0; + #define SHADOW_FIX_FACTOR 0.15 + #define SHADOW_DIST 0.81 + + #elif SHADOW_QTY_SLIDER == 3 + #define SHADOW_LIMIT 75.0 + const int shadowMapResolution = 1200; + const float shadowDistance = 75.0; + #define SHADOW_FIX_FACTOR 0.05 + #define SHADOW_DIST 0.81 + + #endif + + #elif SHADOW_DISTANCE_SLIDER == 1 + #if SHADOW_QTY_SLIDER == 1 + #define SHADOW_LIMIT 105.0 + const int shadowMapResolution = 420; + const float shadowDistance = 105.0; + #define SHADOW_FIX_FACTOR 0.28 + #define SHADOW_DIST 0.75 + + #elif SHADOW_QTY_SLIDER == 2 + #define SHADOW_LIMIT 105.0 + const int shadowMapResolution = 840; + const float shadowDistance = 105.0; + #define SHADOW_FIX_FACTOR 0.07 + #define SHADOW_DIST 0.83 + + #elif SHADOW_QTY_SLIDER == 3 + #define SHADOW_LIMIT 105.0 + const int shadowMapResolution = 1680; + const float shadowDistance = 105.0; + #define SHADOW_FIX_FACTOR 0.03 + #define SHADOW_DIST 0.83 + + #endif + + #elif SHADOW_DISTANCE_SLIDER == 2 + #if SHADOW_QTY_SLIDER == 1 + #define SHADOW_LIMIT 255.0 + const int shadowMapResolution = 1020; + const float shadowDistance = 255.0; + #define SHADOW_FIX_FACTOR 0.12 + #define SHADOW_DIST 0.8 + + #elif SHADOW_QTY_SLIDER == 2 + #define SHADOW_LIMIT 255.0 + const int shadowMapResolution = 2040; + const float shadowDistance = 255.0; + #define SHADOW_FIX_FACTOR 0.03 + #define SHADOW_DIST 0.85 + + #elif SHADOW_QTY_SLIDER == 3 + #define SHADOW_LIMIT 255.0 + const int shadowMapResolution = 4080; + const float shadowDistance = 255.0; + #define SHADOW_FIX_FACTOR 0.015 + #define SHADOW_DIST 0.87 + + #endif + #endif + + #if VOL_LIGHT == 2 + const float shadowDistanceRenderMul = -1.0; + #else + const float shadowDistanceRenderMul = 1.0; + #endif + + const bool shadowHardwareFiltering = true; + const bool shadowtex1Nearest = false; + #endif #else - #define SHADOW_DIST 0.0 - #define SHADOW_RES 0 - const int shadowMapResolution = 100; - const float shadowDistance = 60.0; + #define SHADOW_DIST 0.0 + #define SHADOW_RES 0 + const int shadowMapResolution = 100; + const float shadowDistance = 60.0; #endif // Redefined constants #if AO == 0 - const float ambientOcclusionLevel = 0.7; + const float ambientOcclusionLevel = 0.7; #else - const float ambientOcclusionLevel = 0.0; + const float ambientOcclusionLevel = 0.0; #endif const float eyeBrightnessHalflife = 6.0; const float centerDepthHalflife = 0.66; // DH exclusive -#define TRANSITION_SUP 0.00 -#define TRANSITION_INF 0.95 -#define TRANSITION_WATER_SUP 0.00 -#define TRANSITION_WATER_INF 0.65 -#define TRANSITION_DH_SUP 0.35 -#define TRANSITION_DH_INF 0.50 \ No newline at end of file +#if defined DISTANT_HORIZONS + #define TRANSITION_DH_SUP 0.05 + #define TRANSITION_DH_INF 0.90 +#endif \ No newline at end of file diff --git a/shaders/lib/day_blend.glsl b/shaders/lib/day_blend.glsl new file mode 100644 index 00000000..d41e4d20 --- /dev/null +++ b/shaders/lib/day_blend.glsl @@ -0,0 +1,19 @@ +vec3 day_blend(vec3 sunset, vec3 day, vec3 night) { + // f(x) = min(-((x-.25)^2)∙20 + 1.25, 1) + // g(x) = min(-((x-.75)^2)∙50 + 3.125, 1) + + vec3 day_color = mix(sunset, day, day_mixer); + vec3 night_color = mix(sunset, night, night_mixer); + + return mix(day_color, night_color, step(0.5, day_moment)); +} + +float day_blend_float(float sunset, float day, float night) { + // f(x) = min(-((x-.25)^2)∙20 + 1.25, 1) + // g(x) = min(-((x-.75)^2)∙50 + 3.125, 1) + + float day_value = mix(sunset, day, day_mixer); + float night_value = mix(sunset, night, night_mixer); + + return mix(day_value, night_value, step(0.5, day_moment)); +} \ No newline at end of file diff --git a/shaders/lib/depth.glsl b/shaders/lib/depth.glsl index 1dec042a..3041add6 100644 --- a/shaders/lib/depth.glsl +++ b/shaders/lib/depth.glsl @@ -5,5 +5,5 @@ Javier Garduño - GNU Lesser General Public License v3.0 */ float ld(float depth) { - return (2.0 * near) / (far + near - depth * (far - near)); + return (2.0 * near) / (far + near - depth * (far - near)); } diff --git a/shaders/lib/depth_dh.glsl b/shaders/lib/depth_dh.glsl index 29f1b015..0caa490b 100644 --- a/shaders/lib/depth_dh.glsl +++ b/shaders/lib/depth_dh.glsl @@ -1,9 +1,9 @@ /* MakeUp - depth_hd.glsl -Depth utilities. +Depth utilities (dh). Javier Garduño - GNU Lesser General Public License v3.0 */ float ld_dh(float depth) { - return (2.0 * dhNearPlane) / (dhFarPlane + dhNearPlane - depth * (dhFarPlane - dhNearPlane)); + return (2.0 * dhNearPlane) / (dhFarPlane + dhNearPlane - depth * (dhFarPlane - dhNearPlane)); } diff --git a/shaders/lib/dither.glsl b/shaders/lib/dither.glsl index 4d4cf42e..04c15f3a 100644 --- a/shaders/lib/dither.glsl +++ b/shaders/lib/dither.glsl @@ -29,21 +29,21 @@ but there is no such texture currently. */ #if MC_VERSION >= 11300 - uniform float dither_shift; + uniform float dither_shift; #else - uniform int frame_mod; + uniform int frame_mod; #endif float hash12(vec2 v) { - v = 0.0002314814814814815 * v + vec2(0.25, 0.0); - float state = fract(dot(v * v, vec2(3571.0))); - return fract(state * state * 7142.0); + v = 0.0002314814814814815 * v + vec2(0.25, 0.0); + float state = fract(dot(v * v, vec2(3571.0))); + return fract(state * state * 7142.0); } float hash13(vec3 v) { - v = fract(v * .1031); + v = fract(v * .1031); v += dot(v, v.zyx + 31.32); return fract((v.x + v.y) * v.z); } @@ -56,274 +56,211 @@ vec2 hash22(vec2 p) } float r_dither(vec2 frag) { - return fract(dot(frag, vec2(0.75487766624669276, 0.569840290998))); + return fract(dot(frag, vec2(0.75487766624669276, 0.569840290998))); } float eclectic_r_dither(vec2 frag) { - vec2 v = 0.0002314814814814815 * frag + vec2(0.25, 0.0); - float state = fract(dot(v * v, vec2(3571.0))); - float p4 = fract(state * state * 7142.0) * 0.15; - - return fract(p4 + dot(frag, vec2(0.75487766624669276, 0.569840290998))); -} - -float dither_plastic(vec2 frag) -{ - return 2.0 * abs(fract(dot(frag, vec2(0.75487766624669276, 0.569840290998))) - 0.5); -} - -float eclectic_dither_plastic(vec2 frag) -{ - vec2 v = 0.0002314814814814815 * frag + vec2(0.25, 0.0); - float state = fract(dot(v * v, vec2(3571.0))); - float p4 = fract(state * state * 7142.0) * 0.15; + vec2 v = 0.0002314814814814815 * frag + vec2(0.25, 0.0); + float state = fract(dot(v * v, vec2(3571.0))); + float p4 = fract(state * state * 7142.0) * 0.075; - return fract(p4 + (2.0 * abs(fract(dot(frag, vec2(0.75487766624669276, 0.569840290998))) - 0.5))); + return fract(dot(frag, vec2(0.75487766624669276, 0.569840290998)) + p4); } -float dither13(vec2 pos) +float dither13(vec2 frag) { - return fract(dot(pos, vec2(0.3076923076923077, 0.5384615384615384))); + return fract(dot(frag, vec2(0.3076923076923077, 0.5384615384615384))); } -float eclectic_dither13(vec2 pos) +float eclectic_dither13(vec2 frag) { - vec2 v = 0.0002314814814814815 * pos + vec2(0.25, 0.0); - float state = fract(dot(v * v, vec2(3571.0))); - float p4 = fract(state * state * 7142.0) * 0.15; - - return fract(p4 + dot(pos, vec2(0.3076923076923077, 0.5384615384615384))); -} - -float dither17(vec2 pos) { - return fract(dot(pos, vec2(0.11764705882352941, 0.4117647058823529))); -} - -float eclectic_dither17(vec2 frag) { - vec2 v = 0.0002314814814814815 * frag + vec2(0.25, 0.0); - float state = fract(dot(v * v, vec2(3571.0))); - float p4 = fract(state * state * 7142.0) * 0.15; + vec2 v = 0.0002314814814814815 * frag + vec2(0.25, 0.0); + float state = fract(dot(v * v, vec2(3571.0))); + float p4 = fract(state * state * 7142.0) * 0.075; - return fract(p4 + dot(frag, vec2(0.11764705882352941, 0.4117647058823529))); + return fract(dot(frag, vec2(0.3076923076923077, 0.5384615384615384)) + p4); } float dither_grad_noise(vec2 frag) { - return fract(52.9829189 * fract(dot(vec2(0.06711056, 0.00583715), frag))); + return fract(52.9829189 * fract(dot(vec2(0.06711056, 0.00583715), frag))); } float eclectic_dither_grad_noise(vec2 frag) { - vec2 v = 0.0002314814814814815 * frag + vec2(0.25, 0.0); - float state = fract(dot(v * v, vec2(3571.0))); - float p4 = fract(state * state * 7142.0) * 0.15; + vec2 v = 0.0002314814814814815 * frag + vec2(0.25, 0.0); + float state = fract(dot(v * v, vec2(3571.0))); + float p4 = fract(state * state * 7142.0) * 0.075; - return fract(p4 + (52.9829189 * fract(dot(vec2(0.06711056, 0.00583715), frag)))); + return fract(52.9829189 * fract(dot(vec2(0.06711056, 0.00583715), frag)) + p4); } float texture_noise_64(vec2 p, sampler2D noise) { - return texture2D(noise, p * 0.015625).r; + return texture2D(noise, p * 0.015625).r; } float semiblue(vec2 xy) { - vec2 tile = floor(xy * 0.25); - float flip = mod(tile.x + tile.y, 2.0); - xy = mix(xy, xy.yx, flip); - - return fract(dot(vec2(0.75487766624669276, 0.569840290998), xy) + hash12(tile)); -} - -float makeup_dither(vec2 frag) { - return fract(dot(frag, vec2(0.8085512046226566, 0.5562305898749054))); -} - -float eclectic_makeup_dither(vec2 frag) { - vec2 v = 0.0002314814814814815 * frag + vec2(0.25, 0.0); - float state = fract(dot(v * v, vec2(3571.0))); - float p4 = fract(state * state * 7142.0) * 0.15; + vec2 tile = floor(xy * 0.25); + float flip = mod(tile.x + tile.y, 2.0); + xy = mix(xy, xy.yx, flip); - return fract(p4 + dot(frag, vec2(0.8085512046226566, 0.5562305898749054))); + return fract(dot(vec2(0.75487766624669276, 0.569840290998), xy) + hash12(tile)); } -#if MC_VERSION >= 11300 - - float shifted_hash12(vec2 v) - { - v = 0.0002314814814814815 * v + vec2(0.25, 0.0); - float state = fract(dot(v * v, vec2(3571.0))); - return fract(dither_shift + (state * state * 7142.0)); - } - - float shifted_hash13(vec3 v) - { - v = fract(v * .1031); - v += dot(v, v.zyx + 31.32); - return fract(dither_shift + ((v.x + v.y) * v.z)); - } - - float shifted_r_dither(vec2 frag) { - return fract(dither_shift + dot(frag, vec2(0.75487766624669276, 0.569840290998))); - } - - float shifted_eclectic_r_dither(vec2 frag) { - vec2 v = 0.0002314814814814815 * frag + vec2(0.25, 0.0); - float state = fract(dot(v * v, vec2(3571.0))); - float p4 = fract(state * state * 7142.0) * 0.15; - - return fract(dither_shift + p4 + dot(frag, vec2(0.75487766624669276, 0.569840290998))); - } - - float shifted_dither_plastic(vec2 frag) - { - return fract(dither_shift + (2.0 * abs(fract(dot(frag, vec2(0.75487766624669276, 0.569840290998))) - 0.5))); - } - - float shifted_dither13(vec2 pos) - { - return fract(dither_shift + dot(pos, vec2(0.3076923076923077, 0.5384615384615384))); - } - - float shifted_dither17(vec2 frag) { - return fract(dither_shift + dot(frag, vec2(0.5882352941176471, 0.8823529411764706))); - } - - float shifted_eclectic_dither13(vec2 pos) - { - vec2 v = 0.0002314814814814815 * pos + vec2(0.25, 0.0); - float state = fract(dot(v * v, vec2(3571.0))); - float p4 = fract(state * state * 7142.0) * 0.15; - - return fract(dither_shift + p4 + dot(pos, vec2(0.3076923076923077, 0.5384615384615384))); - } - - float shifted_eclectic_dither17(vec2 frag) { - vec2 v = 0.0002314814814814815 * frag + vec2(0.25, 0.0); - float state = fract(dot(v * v, vec2(3571.0))); - float p4 = fract(state * state * 7142.0) * 0.15; - - return fract(dither_shift + p4 + dot(frag, vec2(0.11764705882352941, 0.4117647058823529))); - } - - float shifted_dither_grad_noise(vec2 frag) { - return fract(dither_shift + (52.9829189 * fract(dot(vec2(0.06711056, 0.00583715), frag)))); - } - - float shifted_eclectic_dither_grad_noise(vec2 frag) { - vec2 v = 0.0002314814814814815 * frag + vec2(0.25, 0.0); - float state = fract(dot(v * v, vec2(3571.0))); - float p4 = fract(state * state * 7142.0) * 0.15; - - return fract(dither_shift + p4 + (52.9829189 * fract(dot(vec2(0.06711056, 0.00583715), frag)))); - } - - float shifted_texture_noise_64(vec2 p, sampler2D noise) { - float dither = texture2D(noise, p * 0.015625).r; - return fract(dither_shift + dither); - } - - float shifted_semiblue(vec2 xy) { +float dither_makeup(vec2 xy) { vec2 tile = floor(xy * 0.25); float flip = mod(tile.x + tile.y, 2.0); xy = mix(xy, xy.yx, flip); - return fract(dither_shift + dot(vec2(0.75487766624669276, 0.569840290998), xy) + hash12(tile)); - } + float r_dither = fract(dot(xy, vec2(0.75487766624669276, 0.569840290998))); + float plastic = 2.0 * abs(fract(dot(tile, vec2(0.8085512046226566, 0.5562305898749054))) - 0.5); - float shifted_makeup_dither(vec2 frag) { - return fract(dither_shift + dot(frag, vec2(0.8085512046226566, 0.5562305898749054))); - } + return fract(r_dither + plastic); +} - float shifted_eclectic_makeup_dither(vec2 frag) { - vec2 v = 0.0002314814814814815 * frag + vec2(0.25, 0.0); - float state = fract(dot(v * v, vec2(3571.0))); - float p4 = fract(state * state * 7142.0) * 0.15; +#if MC_VERSION >= 11300 - return fract(dither_shift + p4 + dot(frag, vec2(0.8085512046226566, 0.5562305898749054))); - } + float shifted_hash12(vec2 v) + { + v = 0.0002314814814814815 * v + vec2(0.25, 0.0); + float state = fract(dot(v * v, vec2(3571.0))); + return fract(dither_shift + (state * state * 7142.0)); + } + + float shifted_hash13(vec3 v) + { + v = fract(v * .1031); + v += dot(v, v.zyx + 31.32); + return fract(dither_shift + ((v.x + v.y) * v.z)); + } + + float shifted_r_dither(vec2 frag) { + return fract(dither_shift + dot(frag, vec2(0.75487766624669276, 0.569840290998))); + } + + float shifted_eclectic_r_dither(vec2 frag) { + vec2 v = 0.0002314814814814815 * frag + vec2(0.25, 0.0); + float state = fract(dot(v * v, vec2(3571.0))); + float p4 = fract(state * state * 7142.0) * 0.075; + + return fract(dot(frag, vec2(0.75487766624669276, 0.569840290998)) + dither_shift + p4); + } + + float shifted_dither13(vec2 frag) + { + return fract(dither_shift + dot(frag, vec2(0.3076923076923077, 0.5384615384615384))); + } + + float shifted_eclectic_dither13(vec2 frag) + { + vec2 v = 0.0002314814814814815 * frag + vec2(0.25, 0.0); + float state = fract(dot(v * v, vec2(3571.0))); + float p4 = fract(state * state * 7142.0) * 0.075; + + return fract(dot(frag, vec2(0.3076923076923077, 0.5384615384615384)) + dither_shift + p4); + } + + float shifted_dither_grad_noise(vec2 frag) { + return fract(dither_shift + (52.9829189 * fract(dot(vec2(0.06711056, 0.00583715), frag)))); + } + + float shifted_eclectic_dither_grad_noise(vec2 frag) { + vec2 v = 0.0002314814814814815 * frag + vec2(0.25, 0.0); + float state = fract(dot(v * v, vec2(3571.0))); + float p4 = fract(state * state * 7142.0) * 0.075; + + return fract(52.9829189 * fract(dot(vec2(0.06711056, 0.00583715), frag)) + dither_shift + p4); + } + + float shifted_texture_noise_64(vec2 p, sampler2D noise) { + float dither = texture2D(noise, p * 0.015625).r; + return fract(dither_shift + dither); + } + + float shifted_semiblue(vec2 xy) { + vec2 tile = floor(xy * 0.25); + float flip = mod(tile.x + tile.y, 2.0); + xy = mix(xy, xy.yx, flip); + + return fract(dither_shift + dot(vec2(0.75487766624669276, 0.569840290998), xy) + hash12(tile)); + } + + float shifted_dither_makeup(vec2 xy) { + vec2 tile = floor(xy * 0.25); + float flip = mod(tile.x + tile.y, 2.0); + xy = mix(xy, xy.yx, flip); + + float r_dither = fract(dot(xy, vec2(0.75487766624669276, 0.569840290998))); + float plastic = 2.0 * abs(fract(dot(tile, vec2(0.8085512046226566, 0.5562305898749054))) - 0.5); + + return fract(dither_shift + r_dither + plastic); + } #else - float shifted_hash12(vec2 v) - { - v = 0.0002314814814814815 * v + vec2(0.25, 0.0); - float state = fract(dot(v * v, vec2(3571.0))); - return fract((frame_mod * 0.4) + (state * state * 7142.0)); - } - - float shifted_hash13(vec3 v) - { - v = fract(v * .1031); - v += dot(v, v.zyx + 31.32); - return fract((frame_mod * 0.4) + ((v.x + v.y) * v.z)); - } - - float shifted_r_dither(vec2 frag) { - return fract((frame_mod * 0.4) + dot(frag, vec2(0.75487766624669276, 0.569840290998))); - } - - float shifted_eclectic_r_dither(vec2 frag) { - vec2 v = 0.0002314814814814815 * frag + vec2(0.25, 0.0); - float state = fract(dot(v * v, vec2(3571.0))); - float p4 = fract(state * state * 7142.0) * 0.15; - - return fract((frame_mod * 0.4) + p4 + dot(frag, vec2(0.75487766624669276, 0.569840290998))); - } - - float shifted_dither_plastic(vec2 frag) - { - return fract((frame_mod * 0.4) + (2.0 * abs(fract(dot(frag, vec2(0.75487766624669276, 0.569840290998))) - 0.5))); - } - - float shifted_dither13(vec2 pos) - { - return fract((frame_mod * 0.4) + dot(pos, vec2(0.3076923076923077, 0.5384615384615384))); - } - - float shifted_dither17(vec2 frag) { - return fract((frame_mod * 0.4) + dot(frag, vec2(0.5882352941176471, 0.8823529411764706))); - } - - float shifted_eclectic_dither17(vec2 frag) { - vec2 v = 0.0002314814814814815 * frag + vec2(0.25, 0.0); - float state = fract(dot(v * v, vec2(3571.0))); - float p4 = fract(state * state * 7142.0) * 0.15; - - return fract((frame_mod * 0.4) + p4 + dot(frag, vec2(0.11764705882352941, 0.4117647058823529))); - } - - float shifted_dither_grad_noise(vec2 frag) { - return fract((frame_mod * 0.4) + (52.9829189 * fract(dot(vec2(0.06711056, 0.00583715), frag)))); - } - - float shifted_eclectic_dither_grad_noise(vec2 frag) { - vec2 v = 0.0002314814814814815 * frag + vec2(0.25, 0.0); - float state = fract(dot(v * v, vec2(3571.0))); - float p4 = fract(state * state * 7142.0) * 0.15; - - return fract((frame_mod * 0.4) + p4 + (52.9829189 * fract(dot(vec2(0.06711056, 0.00583715), frag)))); - } - - float shifted_texture_noise_64(vec2 p, sampler2D noise) { - float dither = texture2D(noise, p * 0.015625).r; - return fract((frame_mod * 0.4) + dither); - } - - float shifted_semiblue(vec2 xy) { - vec2 tile = floor(xy * 0.25); - float flip = mod(tile.x + tile.y, 2.0); - xy = mix(xy, xy.yx, flip); - - return fract((frame_mod * 0.4) + dot(vec2(0.75487766624669276, 0.569840290998), xy) + hash12(tile)); - } - - float shifted_makeup_dither(vec2 frag) { - return fract((frame_mod * 0.4) + dot(frag, vec2(0.8085512046226566, 0.5562305898749054))); - } - - float shifted_eclectic_makeup_dither(vec2 frag) { - vec2 v = 0.0002314814814814815 * frag + vec2(0.25, 0.0); - float state = fract(dot(v * v, vec2(3571.0))); - float p4 = fract(state * state * 7142.0) * 0.15; - - return fract((frame_mod * 0.4) + p4 + dot(frag, vec2(0.8085512046226566, 0.5562305898749054))); - } + float shifted_hash12(vec2 v) + { + v = 0.0002314814814814815 * v + vec2(0.25, 0.0); + float state = fract(dot(v * v, vec2(3571.0))); + return fract((frame_mod * 0.4) + (state * state * 7142.0)); + } + + float shifted_hash13(vec3 v) + { + v = fract(v * .1031); + v += dot(v, v.zyx + 31.32); + return fract((frame_mod * 0.4) + ((v.x + v.y) * v.z)); + } + + float shifted_r_dither(vec2 frag) { + return fract((frame_mod * 0.4) + dot(frag, vec2(0.75487766624669276, 0.569840290998))); + } + + float shifted_eclectic_r_dither(vec2 frag) { + vec2 v = 0.0002314814814814815 * frag + vec2(0.25, 0.0); + float state = fract(dot(v * v, vec2(3571.0))); + float p4 = fract(state * state * 7142.0) * 0.075; + + return fract(dot(frag, vec2(0.75487766624669276, 0.569840290998)) + (frame_mod * 0.4) + p4); + } + + float shifted_dither13(vec2 frag) + { + return fract((frame_mod * 0.4) + dot(frag, vec2(0.3076923076923077, 0.5384615384615384))); + } + + float shifted_dither_grad_noise(vec2 frag) { + return fract((frame_mod * 0.4) + (52.9829189 * fract(dot(vec2(0.06711056, 0.00583715), frag)))); + } + + float shifted_eclectic_dither_grad_noise(vec2 frag) { + vec2 v = 0.0002314814814814815 * frag + vec2(0.25, 0.0); + float state = fract(dot(v * v, vec2(3571.0))); + float p4 = fract(state * state * 7142.0) * 0.075; + + return fract(52.9829189 * fract(dot(vec2(0.06711056, 0.00583715), frag)) + (frame_mod * 0.4) + p4); + } + + float shifted_texture_noise_64(vec2 p, sampler2D noise) { + float dither = texture2D(noise, p * 0.015625).r; + return fract((frame_mod * 0.4) + dither); + } + + float shifted_semiblue(vec2 xy) { + vec2 tile = floor(xy * 0.25); + float flip = mod(tile.x + tile.y, 2.0); + xy = mix(xy, xy.yx, flip); + + return fract((frame_mod * 0.4) + dot(vec2(0.75487766624669276, 0.569840290998), xy) + hash12(tile)); + } + + float shifted_dither_makeup(vec2 xy) { + vec2 tile = floor(xy * 0.25); + float flip = mod(tile.x + tile.y, 2.0); + xy = mix(xy, xy.yx, flip); + + float r_dither = fract(dot(xy, vec2(0.75487766624669276, 0.569840290998))); + float plastic = 2.0 * abs(fract(dot(tile, vec2(0.8085512046226566, 0.5562305898749054))) - 0.5); + + return fract((frame_mod * 0.4) + r_dither + plastic); + } #endif diff --git a/shaders/lib/fast_taa.glsl b/shaders/lib/fast_taa.glsl index d6a3dd53..19c1e13f 100644 --- a/shaders/lib/fast_taa.glsl +++ b/shaders/lib/fast_taa.glsl @@ -5,94 +5,94 @@ Javier Garduño - GNU Lesser General Public License v3.0 */ vec3 fast_taa(vec3 current_color, vec2 texcoord_past) { - // Verificamos si proyección queda fuera de la pantalla actual - if (clamp(texcoord_past, 0.0, 1.0) != texcoord_past) { - return current_color; - } else { - // Previous color - vec3 previous = texture2D(colortex3, texcoord_past).rgb; - - // Apply clamping on the history color. - vec3 near_color0 = texture2D(colortex1, texcoord + vec2(-pixel_size_x, 0.0)).rgb; - vec3 near_color1 = texture2D(colortex1, texcoord + vec2(pixel_size_x, 0.0)).rgb; - vec3 near_color2 = texture2D(colortex1, texcoord + vec2(0.0, -pixel_size_y)).rgb; - vec3 near_color3 = texture2D(colortex1, texcoord + vec2(0.0, pixel_size_y)).rgb; - - vec3 nmin = min(current_color, min(near_color0, min(near_color1, min(near_color2, near_color3)))); - vec3 nmax = max(current_color, max(near_color0, max(near_color1, max(near_color2, near_color3)))); - - // Edge detection - vec3 edge_color = -near_color0; - edge_color -= near_color1; - edge_color += current_color * 4.0; - edge_color -= near_color2; - edge_color -= near_color3; - - float edge = clamp(length(edge_color) * 0.5773502691896258, 0.0, 1.0); // 1/sqrt(3) - - // nmax = current_color + (edge * 0.7 + 0.3) * (nmax - current_color); - // nmin = current_color + (edge * 0.7 + 0.3) * (nmin - current_color); - - // Clip - // previous = clamp(previous, nmin, nmax); - - vec3 center = (nmin + nmax) * 0.5; - float radio = length(nmax - center); - - vec3 color_vector = previous - center; - float color_dist = length(color_vector); - - float factor = 1.0; - if (color_dist > radio) { - factor = radio / color_dist; + // Verificamos si proyección queda fuera de la pantalla actual + if (clamp(texcoord_past, 0.0, 1.0) != texcoord_past) { + return current_color; + } else { + // Previous color + vec3 previous = texture2D(colortex3, texcoord_past).rgb; + + // Apply clamping on the history color. + vec3 near_color0 = texture2D(colortex1, texcoord + vec2(-pixel_size_x, 0.0)).rgb; + vec3 near_color1 = texture2D(colortex1, texcoord + vec2(pixel_size_x, 0.0)).rgb; + vec3 near_color2 = texture2D(colortex1, texcoord + vec2(0.0, -pixel_size_y)).rgb; + vec3 near_color3 = texture2D(colortex1, texcoord + vec2(0.0, pixel_size_y)).rgb; + + vec3 nmin = + min(current_color, min(near_color0, min(near_color1, min(near_color2, near_color3)))); + vec3 nmax = + max(current_color, max(near_color0, max(near_color1, max(near_color2, near_color3)))); + + // Edge detection + vec3 edge_color = -near_color0; + edge_color -= near_color1; + edge_color += current_color * 4.0; + edge_color -= near_color2; + edge_color -= near_color3; + + float edge = clamp(length(edge_color) * 0.5773502691896258, 0.0, 1.0); // 1/sqrt(3) + + // nmax = current_color + (edge * 0.7 + 0.3) * (nmax - current_color); + // nmin = current_color + (edge * 0.7 + 0.3) * (nmin - current_color); + + // Clip + // previous = clamp(previous, nmin, nmax); + + vec3 center = (nmin + nmax) * 0.5; + float radio = length(nmax - center); + + vec3 color_vector = previous - center; + float color_dist = length(color_vector); + + float factor = 1.0; + if (color_dist > radio) { + factor = radio / color_dist; + } + previous = center + (color_vector * factor); + + return mix(current_color, previous, 0.8 + (edge * 0.19)); } - - previous = center + (color_vector * factor); - - - return mix(current_color, previous, 0.8 + (edge * 0.19)); - } } vec4 fast_taa_depth(vec4 current_color, vec2 texcoord_past) { - // Verificamos si proyección queda fuera de la pantalla actual - if (clamp(texcoord_past, 0.0, 1.0) != texcoord_past) { - return current_color; - } else { - // Muestra del pasado - vec4 previous = texture2D(colortex3, texcoord_past); - - vec4 near_color0 = texture2D(colortex1, texcoord + vec2(-pixel_size_x, 0.0)); - vec4 near_color1 = texture2D(colortex1, texcoord + vec2(pixel_size_x, 0.0)); - vec4 near_color2 = texture2D(colortex1, texcoord + vec2(0.0, -pixel_size_y)); - vec4 near_color3 = texture2D(colortex1, texcoord + vec2(0.0, pixel_size_y)); - - vec4 nmin = min(current_color, min(near_color0, min(near_color1, min(near_color2, near_color3)))); - vec4 nmax = max(current_color, max(near_color0, max(near_color1, max(near_color2, near_color3)))); - - // Clip - vec3 center = (nmin.rgb + nmax.rgb) * 0.5; - float radio = length(nmax.rgb - center); - - vec3 color_vector = previous.rgb - center; - float color_dist = length(color_vector); - - float factor = 1.0; - if (color_dist > radio) { - factor = radio / color_dist; + // Verificamos si proyección queda fuera de la pantalla actual + if (clamp(texcoord_past, 0.0, 1.0) != texcoord_past) { + return current_color; + } else { + // Muestra del pasado + vec4 previous = texture2D(colortex3, texcoord_past); + + vec4 near_color0 = texture2D(colortex1, texcoord + vec2(-pixel_size_x, 0.0)); + vec4 near_color1 = texture2D(colortex1, texcoord + vec2(pixel_size_x, 0.0)); + vec4 near_color2 = texture2D(colortex1, texcoord + vec2(0.0, -pixel_size_y)); + vec4 near_color3 = texture2D(colortex1, texcoord + vec2(0.0, pixel_size_y)); + + vec4 nmin = + min(current_color, min(near_color0, min(near_color1, min(near_color2, near_color3)))); + vec4 nmax = + max(current_color, max(near_color0, max(near_color1, max(near_color2, near_color3)))); + + // Clip + vec3 center = (nmin.rgb + nmax.rgb) * 0.5; + float radio = length(nmax.rgb - center); + + vec3 color_vector = previous.rgb - center; + float color_dist = length(color_vector); + + float factor = 1.0; + if (color_dist > radio) { + factor = radio / color_dist; + } + previous = vec4(center + (color_vector * factor), previous.a); + + // Edge detection + vec3 edge_color = -near_color0.rgb; + edge_color -= near_color1.rgb; + edge_color += current_color.rgb * 4.0; + edge_color -= near_color2.rgb; + edge_color -= near_color3.rgb; + float edge = clamp(length(edge_color) * 0.5773502691896258, 0.0, 1.0); // 1/sqrt(3) + + return mix(current_color, previous, 0.8 + (edge * 0.19)); } - - previous = vec4(center + (color_vector * factor), previous.a); - - // Edge detection - vec3 edge_color = -near_color0.rgb; - edge_color -= near_color1.rgb; - edge_color += current_color.rgb * 4.0; - edge_color -= near_color2.rgb; - edge_color -= near_color3.rgb; - - float edge = clamp(length(edge_color) * 0.5773502691896258, 0.0, 1.0); // 1/sqrt(3) - - return mix(current_color, previous, 0.8 + (edge * 0.19)); - } } diff --git a/shaders/lib/luma.glsl b/shaders/lib/luma.glsl index dcd91772..f436a6e3 100644 --- a/shaders/lib/luma.glsl +++ b/shaders/lib/luma.glsl @@ -5,9 +5,9 @@ Javier Garduño - GNU Lesser General Public License v3.0 */ float luma(vec3 color) { - return dot(color, vec3(0.299, 0.587, 0.114)); + return dot(color, vec3(0.299, 0.587, 0.114)); } float color_average(vec3 color) { - return (color.r + color.g + color.b) * 0.3333333333; + return (color.r + color.g + color.b) * 0.3333333333; } diff --git a/shaders/lib/material_gloss_fragment.glsl b/shaders/lib/material_gloss_fragment.glsl index 79b8a719..87cb4a8b 100644 --- a/shaders/lib/material_gloss_fragment.glsl +++ b/shaders/lib/material_gloss_fragment.glsl @@ -1,32 +1,28 @@ #if defined THE_END - float material_gloss(vec3 reflected_vector, vec2 lmcoord_alt, float gloss_power, vec3 flat_normal) { - vec3 astro_pos = (gbufferModelView * vec4(0.0, 0.89442719, 0.4472136, 0.0)).xyz; - float astro_vector = - max(dot(normalize(reflected_vector), normalize(astro_pos)), 0.0) * - step(0.0001, dot(astro_pos, flat_normal)); - - return clamp( - mix(0.0, 1.0, pow(clamp(astro_vector * 2.0 - 1.0, 0.0, 1.0), gloss_power)), - 0.0, - 1.0 - ); - } + float material_gloss(vec3 reflected_vector, vec2 lmcoord_alt, float gloss_power, vec3 flat_normal) { + vec3 astro_pos = (gbufferModelView * vec4(0.0, 0.89442719, 0.4472136, 0.0)).xyz; + float astro_vector = + max(dot(normalize(reflected_vector), normalize(astro_pos)), 0.0) * step(0.0001, dot(astro_pos, flat_normal)); + return clamp( + mix(0.0, 1.0, pow(clamp(astro_vector * 2.0 - 1.0, 0.0, 1.0), gloss_power)), + 0.0, + 1.0 + ); + } #else + float material_gloss(vec3 reflected_vector, vec2 lmcoord_alt, float gloss_power, vec3 flat_normal) { + vec3 astro_pos = mix(-sunPosition, sunPosition, light_mix); + float astro_vector = + max(dot(normalize(reflected_vector), normalize(astro_pos)), 0.0) * + step(0.0001, dot(astro_pos, flat_normal)); - float material_gloss(vec3 reflected_vector, vec2 lmcoord_alt, float gloss_power, vec3 flat_normal) { - vec3 astro_pos = mix(-sunPosition, sunPosition, light_mix); - float astro_vector = - max(dot(normalize(reflected_vector), normalize(astro_pos)), 0.0) * - step(0.0001, dot(astro_pos, flat_normal)); - - return clamp( - mix(0.0, 1.0, pow(clamp(astro_vector * 2.0 - 1.0, 0.0, 1.0), gloss_power)) * - clamp(lmcoord_alt.y, 0.0, 1.0) * - (1.0 - rainStrength), - 0.0, - 1.0 - ) * abs(mix(1.0, -1.0, light_mix)); - } - + return clamp( + mix(0.0, 1.0, pow(clamp(astro_vector * 2.0 - 1.0, 0.0, 1.0), gloss_power)) * + clamp(lmcoord_alt.y, 0.0, 1.0) * + (1.0 - rainStrength), + 0.0, + 1.0 + ) * abs(mix(1.0, -1.0, light_mix)); + } #endif \ No newline at end of file diff --git a/shaders/lib/motion_blur.glsl b/shaders/lib/motion_blur.glsl index 7e6bcfb3..5a480a35 100644 --- a/shaders/lib/motion_blur.glsl +++ b/shaders/lib/motion_blur.glsl @@ -5,36 +5,35 @@ Javier Garduño - GNU Lesser General Public License v3.0 */ vec3 motion_blur(vec3 color, float the_depth, vec2 blur_velocity, sampler2D image) { - if (the_depth > 0.7) { // Mano no - vec2 double_pixels = 2.0 * vec2(pixel_size_x, pixel_size_y); - vec3 m_blur = vec3(0.0); + if (the_depth > 0.7) { // No hand + vec2 double_pixels = 2.0 * vec2(pixel_size_x, pixel_size_y); + vec3 m_blur = vec3(0.0); - blur_velocity = - (MOTION_BLUR_STRENGTH * blur_velocity) / ((1.0 + length(blur_velocity)) * (frameTime * 500.0)) ; + blur_velocity = + (MOTION_BLUR_STRENGTH * blur_velocity) / ((1.0 + length(blur_velocity)) * (frameTime * 500.0)) ; - #if AA_TYPE > 0 - vec2 coord = - texcoord - blur_velocity * (1.5 + shifted_r_dither(gl_FragCoord.xy)); - #else - vec2 coord = - texcoord - blur_velocity * (1.5 + eclectic_r_dither(gl_FragCoord.xy)); - #endif + #if AA_TYPE > 0 + vec2 coord = + texcoord - blur_velocity * (1.5 + shifted_r_dither(gl_FragCoord.xy)); + #else + vec2 coord = + texcoord - blur_velocity * (1.5 + eclectic_r_dither(gl_FragCoord.xy)); + #endif - float weight = 0.0; - float mask; - vec2 sample_coord; - vec3 b_sample; - for(int i = 0; i < MOTION_BLUR_SAMPLES; i++, coord += blur_velocity) { - sample_coord = clamp(coord, double_pixels, 1.0 - double_pixels); - // b_sample = texture2D(image, sample_coord, -3.0).rgb; - b_sample = texture2DLod(image, sample_coord, 0.0).rgb; - m_blur += b_sample; - weight++; - } - m_blur /= max(weight, 1.0); + float weight = 0.0; + float mask; + vec2 sample_coord; + vec3 b_sample; + for(int i = 0; i < MOTION_BLUR_SAMPLES; i++, coord += blur_velocity) { + sample_coord = clamp(coord, double_pixels, 1.0 - double_pixels); + b_sample = texture2DLod(image, sample_coord, 0.0).rgb; + m_blur += b_sample; + weight++; + } + m_blur /= max(weight, 1.0); - return m_blur; - } else { - return color.rgb; - } + return m_blur; + } else { + return color.rgb; + } } diff --git a/shaders/lib/mu_ftransform.glsl b/shaders/lib/mu_ftransform.glsl new file mode 100644 index 00000000..08ab18f0 --- /dev/null +++ b/shaders/lib/mu_ftransform.glsl @@ -0,0 +1,18 @@ +vec4 mu_ftransform() { + float lineWidth = 1.75; + vec2 screenSize = vec2(viewWidth, viewHeight); + mat4 VIEW_SCALE = mat4(mat3(1.0 - 0.00390625)); + mat4 tempmat = gl_ProjectionMatrix * VIEW_SCALE * gl_ModelViewMatrix; + vec4 linePosStart = tempmat * gl_Vertex; + vec4 linePosEnd = tempmat * vec4(gl_Vertex.xyz + gl_Normal, 1.0); + vec3 ndc1 = linePosStart.xyz / linePosStart.w; + vec3 ndc2 = linePosEnd.xyz / linePosEnd.w; + vec2 lineScreenDirection = normalize((ndc2.xy - ndc1.xy) * screenSize); + vec2 lineOffset = vec2(-lineScreenDirection.y, lineScreenDirection.x) * lineWidth / screenSize; + if(lineOffset.x < 0.0) + lineOffset *= -1.0; + if(gl_VertexID % 2 == 0) + return vec4((ndc1 + vec3(lineOffset, 0.0)) * linePosStart.w, linePosStart.w); + else + return vec4((ndc1 - vec3(lineOffset, 0.0)) * linePosStart.w, linePosStart.w); +} \ No newline at end of file diff --git a/shaders/lib/past_projection_utils.glsl b/shaders/lib/past_projection_utils.glsl deleted file mode 100644 index a6ac3ce2..00000000 --- a/shaders/lib/past_projection_utils.glsl +++ /dev/null @@ -1,9 +0,0 @@ -/* MakeUp - past_projection_utils.glsl -Projection functions from past frame. - -Javier Garduño - GNU Lesser General Public License v3.0 -*/ - -vec3 to_clip_space(vec3 view_space_pos) { - return projMAD(gbufferPreviousProjection, view_space_pos) / -view_space_pos.z * 0.5 + 0.5; -} diff --git a/shaders/lib/post.glsl b/shaders/lib/post.glsl index 04160d61..22efcafd 100644 --- a/shaders/lib/post.glsl +++ b/shaders/lib/post.glsl @@ -1,19 +1,19 @@ vec3 sharpen(sampler2D image, vec3 color, vec2 coords) { - vec3 sum = -texture2D(image, coords + vec2(-pixel_size_x, 0.0)).rgb; - sum -= texture2D(image, coords + vec2(0.0, -pixel_size_y)).rgb; - sum += 11.0 * color; - sum -= texture2D(image, coords + vec2(0.0, pixel_size_y)).rgb; - sum -= texture2D(image, coords + vec2(pixel_size_x, 0.0)).rgb; + vec3 sum = -texture2D(image, coords + vec2(-pixel_size_x, 0.0)).rgb; + sum -= texture2D(image, coords + vec2(0.0, -pixel_size_y)).rgb; + sum += 11.0 * color; + sum -= texture2D(image, coords + vec2(0.0, pixel_size_y)).rgb; + sum -= texture2D(image, coords + vec2(pixel_size_x, 0.0)).rgb; - return sum * 0.14285714285714285; + return sum * 0.14285714285714285; } vec3 edge_detect(sampler2D image, vec3 color, vec2 coords) { - vec3 sum = -texture2D(image, coords + vec2(-pixel_size_x, -pixel_size_y)).rgb; - sum -= texture2D(image, coords + vec2(pixel_size_x, -pixel_size_y)).rgb; - sum += 4.0 * color; - sum -= texture2D(image, coords + vec2(-pixel_size_x, pixel_size_y)).rgb; - sum -= texture2D(image, coords + vec2(pixel_size_x, pixel_size_y)).rgb; + vec3 sum = -texture2D(image, coords + vec2(-pixel_size_x, -pixel_size_y)).rgb; + sum -= texture2D(image, coords + vec2(pixel_size_x, -pixel_size_y)).rgb; + sum += 4.0 * color; + sum -= texture2D(image, coords + vec2(-pixel_size_x, pixel_size_y)).rgb; + sum -= texture2D(image, coords + vec2(pixel_size_x, pixel_size_y)).rgb; - return vec3(length(sum)) * 0.5773502691896258; + return vec3(length(sum)) * 0.5773502691896258; } diff --git a/shaders/lib/projection_utils.glsl b/shaders/lib/projection_utils.glsl index 312c20e9..a3c41e38 100644 --- a/shaders/lib/projection_utils.glsl +++ b/shaders/lib/projection_utils.glsl @@ -7,28 +7,9 @@ Javier Garduño - GNU Lesser General Public License v3.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 to_screen_space(vec3 p) { - vec4 i_proj_diag = - vec4( - gbufferProjectionInverse[0].x, - gbufferProjectionInverse[1].y, - gbufferProjectionInverse[2].zw - ); - vec3 p3 = p * 2.0 - 1.0; - vec4 fragposition = i_proj_diag * p3.xyzz + gbufferProjectionInverse[3]; - return fragposition.xyz / fragposition.w; -} - -vec3 camera_to_world(vec3 fragpos) { - vec4 pos = gbufferProjectionInverse * vec4(fragpos, 1.0); - pos /= pos.w; - - return pos.xyz; -} - vec3 camera_to_screen(vec3 fragpos) { - vec4 pos = gbufferProjection * vec4(fragpos, 1.0); - pos /= pos.w; + vec4 pos = gbufferProjection * vec4(fragpos, 1.0); + pos /= pos.w; - return pos.xyz * 0.5 + 0.5; + return pos.xyz * 0.5 + 0.5; } diff --git a/shaders/lib/shadow_frag.glsl b/shaders/lib/shadow_frag.glsl index a55c1966..dc5de38f 100644 --- a/shaders/lib/shadow_frag.glsl +++ b/shaders/lib/shadow_frag.glsl @@ -5,110 +5,152 @@ Javier Garduño - GNU Lesser General Public License v3.0 */ float get_shadow(vec3 the_shadow_pos, float dither) { - float shadow_sample = 1.0; + float shadow_sample = 1.0; - #if SHADOW_TYPE == 0 // Pixelated - shadow_sample = shadow2D(shadowtex1, the_shadow_pos).r; - #elif SHADOW_TYPE == 1 // Soft - float current_radius = dither; - dither *= 6.283185307179586; - - shadow_sample = 0.0; + #if SHADOW_TYPE == 0 // Pixelated + shadow_sample = shadow2D(shadowtex1, the_shadow_pos).r; + #elif SHADOW_TYPE == 1 // Soft + float current_radius = dither; + dither *= 6.283185307179586; + float dither_2 = dither + 1.5707963267948966; - vec2 offset = (vec2(cos(dither), sin(dither)) * current_radius * SHADOW_BLUR) / shadowMapResolution; + shadow_sample = 0.0; - float z_bias = dither * 0.00002; + vec2 offset = (vec2(cos(dither), sin(dither)) * current_radius * SHADOW_BLUR) / shadowMapResolution; - shadow_sample += shadow2D(shadowtex1, vec3(the_shadow_pos.xy + offset, the_shadow_pos.z - z_bias)).r; - shadow_sample += shadow2D(shadowtex1, vec3(the_shadow_pos.xy - offset, the_shadow_pos.z - z_bias)).r; + vec2 offset_2 = (vec2(cos(dither_2), sin(dither_2)) * (1.0 - current_radius) * SHADOW_BLUR) / shadowMapResolution; - shadow_sample *= 0.5; - - #endif + float z_bias = dither * 0.00002; - return shadow_sample; -} + shadow_sample += shadow2D(shadowtex1, vec3(the_shadow_pos.xy + offset, the_shadow_pos.z - z_bias)).r; + shadow_sample += shadow2D(shadowtex1, vec3(the_shadow_pos.xy - offset, the_shadow_pos.z - z_bias)).r; -#if defined COLORED_SHADOW + shadow_sample += shadow2D(shadowtex1, vec3(the_shadow_pos.xy + offset_2, the_shadow_pos.z - z_bias)).r; + shadow_sample += shadow2D(shadowtex1, vec3(the_shadow_pos.xy - offset_2, the_shadow_pos.z - z_bias)).r; - vec3 get_colored_shadow(vec3 the_shadow_pos, float dither) { + // shadow_sample *= 0.5; + shadow_sample *= 0.25; + #endif - #if SHADOW_TYPE == 0 // Pixelated - float shadow_detector = 1.0; - float shadow_black = 1.0; - vec4 shadow_color = vec4(1.0); - - float alpha_complement; - - shadow_detector = shadow2D(shadowtex0, vec3(the_shadow_pos.xy, the_shadow_pos.z)).r; - if (shadow_detector < 1.0) { - shadow_black = shadow2D(shadowtex1, vec3(the_shadow_pos.xy, the_shadow_pos.z)).r; - if (shadow_black != shadow_detector) { - shadow_color = texture2D(shadowcolor0, the_shadow_pos.xy); - alpha_complement = 1.0 - shadow_color.a; - shadow_color.rgb = mix(shadow_color.rgb, vec3(1.0), alpha_complement); - shadow_color.rgb *= alpha_complement; - } - } - - shadow_color *= shadow_black; - shadow_color.rgb = clamp(shadow_color.rgb * (1.0 - shadow_detector) + shadow_detector, vec3(0.0), vec3(1.0)); - - return shadow_color.rgb; + return shadow_sample; +} - #elif SHADOW_TYPE == 1 // Soft - float shadow_detector_a = 1.0; - float shadow_black_a = 1.0; - vec4 shadow_color_a = vec4(1.0); - - float shadow_detector_b = 1.0; - float shadow_black_b = 1.0; - vec4 shadow_color_b = vec4(1.0); - - float alpha_complement; - - float current_radius = dither; - dither *= 6.283185307179586; - - vec2 offset = (vec2(cos(dither), sin(dither)) * current_radius * SHADOW_BLUR) / shadowMapResolution; - float z_bias = dither * 0.00002; - - shadow_detector_a = shadow2D(shadowtex0, vec3(the_shadow_pos.xy + offset, the_shadow_pos.z - z_bias)).r; - shadow_detector_b = shadow2D(shadowtex0, vec3(the_shadow_pos.xy - offset, the_shadow_pos.z - z_bias)).r; - - if (shadow_detector_a < 1.0) { - shadow_black_a = shadow2D(shadowtex1, vec3(the_shadow_pos.xy + offset, the_shadow_pos.z - z_bias)).r; - if (shadow_black_a != shadow_detector_a) { - shadow_color_a = texture2D(shadowcolor0, the_shadow_pos.xy + offset); - alpha_complement = 1.0 - shadow_color_a.a; - shadow_color_a.rgb = mix(shadow_color_a.rgb, vec3(1.0), alpha_complement); - shadow_color_a.rgb *= alpha_complement; - } - } - - shadow_color_a *= shadow_black_a; - - if (shadow_detector_b < 1.0) { - shadow_black_b = shadow2D(shadowtex1, vec3(the_shadow_pos.xy - offset, the_shadow_pos.z - z_bias)).r; - if (shadow_black_b != shadow_detector_b) { - shadow_color_b = texture2D(shadowcolor0, the_shadow_pos.xy - offset); - alpha_complement = 1.0 - shadow_color_b.a; - shadow_color_b.rgb = mix(shadow_color_b.rgb, vec3(1.0), alpha_complement); - shadow_color_b.rgb *= alpha_complement; - } - } - - shadow_color_b *= shadow_black_b; - - shadow_detector_a = (shadow_detector_a + shadow_detector_b); - shadow_detector_a *= 0.5; - - shadow_color_a.rgb = (shadow_color_a.rgb + shadow_color_b.rgb) * 0.5; - shadow_color_a.rgb = mix(shadow_color_a.rgb, vec3(1.0), shadow_detector_a); - - return shadow_color_a.rgb; - #endif +#if defined COLORED_SHADOW - } + vec3 get_colored_shadow(vec3 the_shadow_pos, float dither) { + #if SHADOW_TYPE == 0 // Pixelated + float shadow_detector = 1.0; + float shadow_black = 1.0; + vec4 shadow_color = vec4(1.0); + + float alpha_complement; + + shadow_detector = shadow2D(shadowtex0, vec3(the_shadow_pos.xy, the_shadow_pos.z)).r; + if (shadow_detector < 1.0) { + shadow_black = shadow2D(shadowtex1, vec3(the_shadow_pos.xy, the_shadow_pos.z)).r; + if (shadow_black != shadow_detector) { + shadow_color = texture2D(shadowcolor0, the_shadow_pos.xy); + alpha_complement = 1.0 - shadow_color.a; + shadow_color.rgb = mix(shadow_color.rgb, vec3(1.0), alpha_complement); + shadow_color.rgb *= alpha_complement; + } + } + + shadow_color *= shadow_black; + shadow_color.rgb = clamp(shadow_color.rgb * (1.0 - shadow_detector) + shadow_detector, vec3(0.0), vec3(1.0)); + + return shadow_color.rgb; + + #elif SHADOW_TYPE == 1 // Soft + float shadow_detector_a = 1.0; + float shadow_black_a = 1.0; + vec4 shadow_color_a = vec4(1.0); + + float shadow_detector_b = 1.0; + float shadow_black_b = 1.0; + vec4 shadow_color_b = vec4(1.0); + + float shadow_detector_c = 1.0; + float shadow_black_c = 1.0; + vec4 shadow_color_c = vec4(1.0); + + float shadow_detector_d = 1.0; + float shadow_black_d = 1.0; + vec4 shadow_color_d = vec4(1.0); + + float alpha_complement; + + float current_radius = dither; + dither *= 6.283185307179586; + float dither_2 = dither + 1.5707963267948966; + + vec2 offset = (vec2(cos(dither), sin(dither)) * current_radius * SHADOW_BLUR) / shadowMapResolution; + vec2 offset_2 = (vec2(cos(dither_2), sin(dither_2)) * (1.0 - current_radius) * SHADOW_BLUR) / shadowMapResolution; + + float z_bias = dither * 0.00002; + + shadow_detector_a = shadow2D(shadowtex0, vec3(the_shadow_pos.xy + offset, the_shadow_pos.z - z_bias)).r; + shadow_detector_b = shadow2D(shadowtex0, vec3(the_shadow_pos.xy - offset, the_shadow_pos.z - z_bias)).r; + + shadow_detector_c = shadow2D(shadowtex0, vec3(the_shadow_pos.xy + offset_2, the_shadow_pos.z - z_bias)).r; + shadow_detector_d = shadow2D(shadowtex0, vec3(the_shadow_pos.xy - offset_2, the_shadow_pos.z - z_bias)).r; + + if (shadow_detector_a < 1.0) { + shadow_black_a = shadow2D(shadowtex1, vec3(the_shadow_pos.xy + offset, the_shadow_pos.z - z_bias)).r; + if (shadow_black_a != shadow_detector_a) { + shadow_color_a = texture2D(shadowcolor0, the_shadow_pos.xy + offset); + alpha_complement = 1.0 - shadow_color_a.a; + shadow_color_a.rgb = mix(shadow_color_a.rgb, vec3(1.0), alpha_complement); + shadow_color_a.rgb *= alpha_complement; + } + } + + shadow_color_a *= shadow_black_a; + + if (shadow_detector_b < 1.0) { + shadow_black_b = shadow2D(shadowtex1, vec3(the_shadow_pos.xy - offset, the_shadow_pos.z - z_bias)).r; + if (shadow_black_b != shadow_detector_b) { + shadow_color_b = texture2D(shadowcolor0, the_shadow_pos.xy - offset); + alpha_complement = 1.0 - shadow_color_b.a; + shadow_color_b.rgb = mix(shadow_color_b.rgb, vec3(1.0), alpha_complement); + shadow_color_b.rgb *= alpha_complement; + } + } + + shadow_color_b *= shadow_black_b; + + if (shadow_detector_c < 1.0) { + shadow_black_c = shadow2D(shadowtex1, vec3(the_shadow_pos.xy + offset_2, the_shadow_pos.z - z_bias)).r; + if (shadow_black_c != shadow_detector_c) { + shadow_color_c = texture2D(shadowcolor0, the_shadow_pos.xy + offset_2); + alpha_complement = 1.0 - shadow_color_c.a; + shadow_color_c.rgb = mix(shadow_color_c.rgb, vec3(1.0), alpha_complement); + shadow_color_c.rgb *= alpha_complement; + } + } + + shadow_color_c *= shadow_black_c; + + if (shadow_detector_d < 1.0) { + shadow_black_d = shadow2D(shadowtex1, vec3(the_shadow_pos.xy - offset_2, the_shadow_pos.z - z_bias)).r; + if (shadow_black_d != shadow_detector_d) { + shadow_color_d = texture2D(shadowcolor0, the_shadow_pos.xy - offset_2); + alpha_complement = 1.0 - shadow_color_d.a; + shadow_color_d.rgb = mix(shadow_color_d.rgb, vec3(1.0), alpha_complement); + shadow_color_d.rgb *= alpha_complement; + } + } + + shadow_color_d *= shadow_black_d; + + shadow_detector_a = (shadow_detector_a + shadow_detector_b + shadow_detector_c + shadow_detector_d); + shadow_detector_a *= 0.25; + + shadow_color_a.rgb = (shadow_color_a.rgb + shadow_color_b.rgb + shadow_color_c.rgb + shadow_color_d.rgb) * 0.25; + shadow_color_a.rgb = mix(shadow_color_a.rgb, vec3(1.0), shadow_detector_a); + + return shadow_color_a.rgb; + #endif + } #endif diff --git a/shaders/lib/shadow_vertex.glsl b/shaders/lib/shadow_vertex.glsl index ea4b320f..99a74c99 100644 --- a/shaders/lib/shadow_vertex.glsl +++ b/shaders/lib/shadow_vertex.glsl @@ -7,14 +7,14 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) vec3 get_shadow_pos(vec3 shadow_pos) { - shadow_pos = mat3(shadowModelView) * shadow_pos + shadowModelView[3].xyz; - shadow_pos = diagonal3(shadowProjection) * shadow_pos + shadowProjection[3].xyz; + shadow_pos = mat3(shadowModelView) * shadow_pos + shadowModelView[3].xyz; + shadow_pos = diagonal3(shadowProjection) * shadow_pos + shadowProjection[3].xyz; - float distb = length(shadow_pos.xy); - float distortion = distb * SHADOW_DIST + (1.0 - SHADOW_DIST); + float distb = length(shadow_pos.xy); + float distortion = distb * SHADOW_DIST + (1.0 - SHADOW_DIST); - shadow_pos.xy /= distortion; - shadow_pos.z *= 0.2; - - return shadow_pos * 0.5 + 0.5; + shadow_pos.xy /= distortion; + shadow_pos.z *= 0.2; + + return shadow_pos * 0.5 + 0.5; } diff --git a/shaders/lib/tone_maps.glsl b/shaders/lib/tone_maps.glsl index 4ab41993..f77761e4 100644 --- a/shaders/lib/tone_maps.glsl +++ b/shaders/lib/tone_maps.glsl @@ -4,21 +4,20 @@ Tonemap functions. Javier Garduño - GNU Lesser General Public License v3.0 */ +// vec3 custom_sigmoid(vec3 color) { +// color = 1.4 * color; +// color = color / pow(pow(color, vec3(3.0)) + 1.0, vec3(0.3333333333333)); + +// return pow(color, vec3(1.15)); +// } + vec3 custom_sigmoid(vec3 color) { color = 1.4 * color; - color = color / pow(pow(color, vec3(3.0)) + 1.0, vec3(0.3333333333333)); + color = color / pow(pow(color, vec3(2.5)) + 1.0, vec3(0.4)); return pow(color, vec3(1.15)); } -// vec3 custom_sigmoid(vec3 color) { -// // ((1.4 ∙ x) / ((1.4 ∙ x)^2.5 + 1)^0.4)^1.1 -// color = 1.4 * color; -// color = color / pow(pow(color, vec3(2.5)) + 1.0, vec3(0.4)); - -// return pow(color, vec3(1.1)); -// } - vec3 custom_sigmoid_alt(vec3 color) { color = 1.4 * color; color = color / pow(pow(color, vec3(3.05)) + 1.0, vec3(0.3278688524590164)); diff --git a/shaders/lib/vector_utils.glsl b/shaders/lib/vector_utils.glsl index a86aea25..da78a702 100644 --- a/shaders/lib/vector_utils.glsl +++ b/shaders/lib/vector_utils.glsl @@ -5,13 +5,13 @@ Javier Garduño - GNU Lesser General Public License v3.0 */ vec3 wave_move(vec3 pos) { - float timer = (frameTimeCounter) * 3.141592653589793; - pos = mod(pos, 157.07963267948966); // PI * 25 - vec2 wave_x = vec2(timer * 0.5, timer) + pos.xy; - vec2 wave_z = vec2(timer, timer * 1.5) + pos.xy; - vec2 wave_y = vec2(timer * 0.5, timer * 0.25) - pos.zx; + float timer = (frameTimeCounter) * 3.141592653589793; + pos = mod(pos, 157.07963267948966); // PI * 25 + vec2 wave_x = vec2(timer * 0.5, timer) + pos.xy; + vec2 wave_z = vec2(timer, timer * 1.5) + pos.xy; + vec2 wave_y = vec2(timer * 0.5, timer * 0.25) - pos.zx; - wave_x = sin(wave_x + wave_y); - wave_z = cos(wave_z + wave_y); - return vec3(wave_x.x + wave_x.y, 0.0, wave_z.x + wave_z.y); + wave_x = sin(wave_x + wave_y); + wave_z = cos(wave_z + wave_y); + return vec3(wave_x.x + wave_x.y, 0.0, wave_z.x + wave_z.y); } diff --git a/shaders/lib/volumetric_clouds.glsl b/shaders/lib/volumetric_clouds.glsl index 1bf55afa..1b5f64b3 100644 --- a/shaders/lib/volumetric_clouds.glsl +++ b/shaders/lib/volumetric_clouds.glsl @@ -3,154 +3,144 @@ Fast volumetric clouds - MakeUp implementation */ vec3 get_cloud(vec3 view_vector, vec3 block_color, float bright, float dither, vec3 base_pos, int samples, float umbral, vec3 cloud_color, vec3 dark_cloud_color) { - float plane_distance; - float cloud_value; - float density; - vec3 intersection_pos; - vec3 intersection_pos_sup; - float dif_inf; - float dif_sup; - float dist_aux_coeff; - float current_value; - float surface_inf; - float surface_sup; - bool first_contact = true; - float opacity_dist; - vec3 increment; - float increment_dist; - int real_steps; - float view_y_inv = 1.0 / view_vector.y; - float distance_aux; - float cloud_value_aux; - float dist_aux_coeff_blur; - - #if VOL_LIGHT == 0 - block_color.rgb *= - clamp(bright + ((dither - .5) * .1), 0.0, 1.0) * .3 + 1.0; - #endif - - #if defined DISTANT_HORIZONS && defined DEFERRED_SHADER - float d_dh = texture2D(dhDepthTex0, vec2(gl_FragCoord.x / viewWidth, gl_FragCoord.y / viewHeight)).r; - float linear_d_dh = ld_dh(d_dh); - if (linear_d_dh < 0.9999) { - return block_color; - } - #endif - - if (view_vector.y > 0.0) { // Vista sobre el horizonte - - plane_distance = (CLOUD_PLANE - base_pos.y) * view_y_inv; - intersection_pos = (view_vector * plane_distance) + base_pos; - - plane_distance = (CLOUD_PLANE_SUP - base_pos.y) * view_y_inv; - intersection_pos_sup = (view_vector * plane_distance) + base_pos; - - dif_sup = CLOUD_PLANE_SUP - CLOUD_PLANE_CENTER; - dif_inf = CLOUD_PLANE_CENTER - CLOUD_PLANE; - dist_aux_coeff = (CLOUD_PLANE_SUP - CLOUD_PLANE) * 0.075; - dist_aux_coeff_blur = dist_aux_coeff * 0.3; - - opacity_dist = dist_aux_coeff * 2.0 * view_y_inv; - - increment = (intersection_pos_sup - intersection_pos) / samples; - increment_dist = length(increment); - - cloud_value = 0.0; - - intersection_pos += (increment * dither); - - for (int i = 0; i < samples; i++) { - #if CLOUD_VOL_STYLE == 0 - current_value = - texture2D( - gaux2, - (intersection_pos.xz * 0.0002777777777777778) + (frameTimeCounter * CLOUD_HI_FACTOR) - ).r; - - #else - current_value = - texture2D( - colortex2, - (intersection_pos.xz * 0.0002777777777777778) + (frameTimeCounter * CLOUD_HI_FACTOR) - ).g; - #endif - - #if V_CLOUDS == 2 && CLOUD_VOL_STYLE == 0 - current_value += - texture2D( - gaux2, - (intersection_pos.zx * 0.0002777777777777778) + (frameTimeCounter * CLOUD_LOW_FACTOR) - ).r; - - current_value *= 0.5; - current_value = smoothstep(0.05, 0.95, current_value); - - #endif - - // Ajuste por umbral - current_value = (current_value - umbral) / (1.0 - umbral); - - // Superficies inferior y superior de nubes - surface_inf = CLOUD_PLANE_CENTER - (current_value * dif_inf); - surface_sup = CLOUD_PLANE_CENTER + (current_value * dif_sup); - - if ( // Dentro de la nube - intersection_pos.y > surface_inf && - intersection_pos.y < surface_sup - ) { - cloud_value += min(increment_dist, surface_sup - surface_inf); - - if (first_contact) { - first_contact = false; - density = - (surface_sup - intersection_pos.y) / - (CLOUD_PLANE_SUP - CLOUD_PLANE); - } - } - else if (surface_inf < surface_sup && i > 0) { // Fuera de la nube - distance_aux = min( - abs(intersection_pos.y - surface_inf), - abs(intersection_pos.y - surface_sup) - ); - - if (distance_aux < dist_aux_coeff_blur) { - cloud_value += min( - (clamp(dist_aux_coeff_blur - distance_aux, 0.0, dist_aux_coeff_blur) / dist_aux_coeff_blur) * increment_dist, - surface_sup - surface_inf - ); - - if (first_contact) { - first_contact = false; - density = - (surface_sup - intersection_pos.y) / - (CLOUD_PLANE_SUP - CLOUD_PLANE); - } + float plane_distance; + float cloud_value; + float density; + vec3 intersection_pos; + vec3 intersection_pos_sup; + float dif_inf; + float dif_sup; + float dist_aux_coeff; + float current_value; + float surface_inf; + float surface_sup; + bool first_contact = true; + float opacity_dist; + vec3 increment; + float increment_dist; + float view_y_inv = 1.0 / view_vector.y; + float distance_aux; + float dist_aux_coeff_blur; + + #if VOL_LIGHT == 0 + block_color.rgb *= + clamp(bright + ((dither - .5) * .1), 0.0, 1.0) * .3 + 1.0; + #endif + + #if defined DISTANT_HORIZONS && defined DEFERRED_SHADER + float d_dh = texture2D(dhDepthTex0, vec2(gl_FragCoord.x / viewWidth, gl_FragCoord.y / viewHeight)).r; + float linear_d_dh = ld_dh(d_dh); + if (linear_d_dh < 0.9999) { + return block_color; } - } + #endif - intersection_pos += increment; - } + if (view_vector.y > 0.0) { // Over horizon + plane_distance = (CLOUD_PLANE - base_pos.y) * view_y_inv; + intersection_pos = (view_vector * plane_distance) + base_pos; + + plane_distance = (CLOUD_PLANE_SUP - base_pos.y) * view_y_inv; + intersection_pos_sup = (view_vector * plane_distance) + base_pos; + + dif_sup = CLOUD_PLANE_SUP - CLOUD_PLANE_CENTER; + dif_inf = CLOUD_PLANE_CENTER - CLOUD_PLANE; + dist_aux_coeff = (CLOUD_PLANE_SUP - CLOUD_PLANE) * 0.075; + dist_aux_coeff_blur = dist_aux_coeff * 0.3; + + opacity_dist = dist_aux_coeff * 2.0 * view_y_inv; + + increment = (intersection_pos_sup - intersection_pos) / samples; + increment_dist = length(increment); + + cloud_value = 0.0; + + intersection_pos += (increment * dither); + + for (int i = 0; i < samples; i++) { + current_value = + texture2D( + gaux2, + (intersection_pos.xz * 0.0002777777777777778) + (frameTimeCounter * CLOUD_HI_FACTOR) + ).r; + + + #if V_CLOUDS == 2 && CLOUD_VOL_STYLE == 0 + current_value += + texture2D( + gaux2, + (intersection_pos.zx * 0.0002777777777777778) + (frameTimeCounter * CLOUD_LOW_FACTOR) + ).r; + + current_value *= 0.5; + current_value = smoothstep(0.05, 0.95, current_value); + + #endif + + // Ajuste por umbral + current_value = (current_value - umbral) / (1.0 - umbral); + + // Superficies inferior y superior de nubes + surface_inf = CLOUD_PLANE_CENTER - (current_value * dif_inf); + surface_sup = CLOUD_PLANE_CENTER + (current_value * dif_sup); + + if ( // Dentro de la nube + intersection_pos.y > surface_inf && + intersection_pos.y < surface_sup + ) { + cloud_value += min(increment_dist, surface_sup - surface_inf); + + if (first_contact) { + first_contact = false; + density = + (surface_sup - intersection_pos.y) / + (CLOUD_PLANE_SUP - CLOUD_PLANE); + } + } + else if (surface_inf < surface_sup && i > 0) { // Fuera de la nube + distance_aux = min( + abs(intersection_pos.y - surface_inf), + abs(intersection_pos.y - surface_sup) + ); + + if (distance_aux < dist_aux_coeff_blur) { + cloud_value += min( + (clamp(dist_aux_coeff_blur - distance_aux, 0.0, dist_aux_coeff_blur) / dist_aux_coeff_blur) * increment_dist, + surface_sup - surface_inf + ); + + if (first_contact) { + first_contact = false; + density = + (surface_sup - intersection_pos.y) / + (CLOUD_PLANE_SUP - CLOUD_PLANE); + } + } + } + + intersection_pos += increment; + } - cloud_value = clamp(cloud_value / opacity_dist, 0.0, 1.0); - density = clamp(density, 0.0001, 1.0); + cloud_value = clamp(cloud_value / opacity_dist, 0.0, 1.0); + density = clamp(density, 0.0001, 1.0); - float att_factor = mix(1.0, 0.75, bright * (1.0 - rainStrength)); + float att_factor = mix(1.0, 0.75, bright * (1.0 - rainStrength)); - #if CLOUD_VOL_STYLE == 1 - cloud_color = mix(cloud_color * att_factor, dark_cloud_color * att_factor, pow(density, 0.3) * 0.85); - #else - cloud_color = mix(cloud_color * att_factor, dark_cloud_color * att_factor, pow(density, 0.4)); - #endif + #if CLOUD_VOL_STYLE == 1 + cloud_color = mix(cloud_color * att_factor, dark_cloud_color * att_factor, pow(density, 0.3) * 0.85); + #else + cloud_color = mix(cloud_color * att_factor, dark_cloud_color * att_factor, pow(density, 0.4)); + #endif - // Halo brillante de contra al sol - cloud_color = mix(cloud_color, cloud_color * 13.0, (1.0 - pow(cloud_value, 0.2)) * bright * bright * (1.0 - rainStrength)); + // Halo brillante de contra al sol + cloud_color = + mix(cloud_color, cloud_color * 13.0, (1.0 - pow(cloud_value, 0.2)) * bright * bright * (1.0 - rainStrength)); - block_color = mix( - block_color, - cloud_color, - cloud_value * clamp((view_vector.y - 0.06) * 5.0, 0.0, 1.0) - ); - } + block_color = mix( + block_color, + cloud_color, + cloud_value * clamp((view_vector.y - 0.06) * 5.0, 0.0, 1.0) + ); + } - return block_color; + return block_color; } diff --git a/shaders/lib/volumetric_clouds_end.glsl b/shaders/lib/volumetric_clouds_end.glsl index ddbe578e..472755e5 100644 --- a/shaders/lib/volumetric_clouds_end.glsl +++ b/shaders/lib/volumetric_clouds_end.glsl @@ -3,152 +3,140 @@ Fast volumetric clouds (for The End) - MakeUp implementation */ vec3 get_end_cloud(vec3 view_vector, vec3 block_color, float bright, float dither, vec3 base_pos, int samples) { - float plane_distance; - float cloud_value; - float umbral; - float density; - vec3 intersection_pos; - vec3 intersection_pos_sup; - float dif_inf; - float dif_sup; - float dist_aux_coeff; - float current_value; - float surface_inf; - float surface_sup; - bool first_contact = true; - float opacity_dist; - vec3 increment; - float increment_dist; - int real_steps; - float view_y_inv = 1.0 / view_vector.y; - float distance_aux; - vec3 cloud_color_aux; - float cloud_value_aux; - float dist_aux_coeff_blur; - - block_color.rgb *= - clamp(bright + ((dither - .5) * .1), 0.0, 1.0) * .3 + 1.0; - - #if defined DISTANT_HORIZONS && defined DEFERRED_SHADER - float d_dh = texture2D(dhDepthTex0, vec2(gl_FragCoord.x / viewWidth, gl_FragCoord.y / viewHeight)).r; - float linear_d_dh = ld_dh(d_dh); - if (linear_d_dh < 0.9999) { - return block_color; - } - #endif - - if (view_vector.y > 0.0) { // Vista sobre el horizonte - umbral = 0.25; - - vec3 cloud_color = block_color * 1.75; - vec3 dark_cloud_color = block_color * 0.9; - - plane_distance = (CLOUD_PLANE - base_pos.y) * view_y_inv; - intersection_pos = (view_vector * plane_distance) + base_pos; - - plane_distance = (CLOUD_PLANE_SUP - base_pos.y) * view_y_inv; - intersection_pos_sup = (view_vector * plane_distance) + base_pos; - - dif_sup = CLOUD_PLANE_SUP - CLOUD_PLANE_CENTER; - dif_inf = CLOUD_PLANE_CENTER - CLOUD_PLANE; - dist_aux_coeff = (CLOUD_PLANE_SUP - CLOUD_PLANE) * 0.075; - dist_aux_coeff_blur = dist_aux_coeff * 0.4; - - opacity_dist = dist_aux_coeff * 2.5 * view_y_inv; - - increment = (intersection_pos_sup - intersection_pos) / samples; - increment_dist = length(increment); - - cloud_value = 0.0; - - intersection_pos += (increment * dither); - - for (int i = 0; i < samples; i++) { - #if CLOUD_VOL_STYLE == 0 - current_value = - texture2D( - gaux2, - (intersection_pos.xz * .0008) + (frameTimeCounter * CLOUD_HI_FACTOR * 3.0) - ).r; - #else - current_value = - texture2D( - colortex2, - (intersection_pos.xz * .0008) + (frameTimeCounter * CLOUD_HI_FACTOR * 3.0) - ).r; - #endif - - #if V_CLOUDS == 2 && CLOUD_VOL_STYLE == 0 - current_value += - texture2D( - gaux2, - (intersection_pos.zx * .0008) + (frameTimeCounter * CLOUD_LOW_FACTOR * 3.0) - ).r; - current_value *= 0.5; - current_value = smoothstep(0.05, 0.95, current_value); - #endif - - // Ajuste por umbral - current_value = (current_value - umbral) / (1.0 - umbral); - - // Superficies inferior y superior de nubes - surface_inf = CLOUD_PLANE_CENTER - (current_value * dif_inf); - surface_sup = CLOUD_PLANE_CENTER + (current_value * dif_sup); - - if ( // Dentro de la nube - intersection_pos.y > surface_inf && - intersection_pos.y < surface_sup - ) { - cloud_value += min(increment_dist, surface_sup - surface_inf); - - if (first_contact) { - first_contact = false; - density = - (surface_sup - intersection_pos.y) / - (CLOUD_PLANE_SUP - CLOUD_PLANE); - } - } - else if (surface_inf < surface_sup && i > 0) { // Fuera de la nube - distance_aux = min( - abs(intersection_pos.y - surface_inf), - abs(intersection_pos.y - surface_sup) - ); - - if (distance_aux < dist_aux_coeff_blur) { - cloud_value += min( - (clamp(dist_aux_coeff_blur - distance_aux, 0.0, dist_aux_coeff_blur) / dist_aux_coeff_blur) * increment_dist, - surface_sup - surface_inf - ); - - if (first_contact) { - first_contact = false; - density = - (surface_sup - intersection_pos.y) / - (CLOUD_PLANE_SUP - CLOUD_PLANE); - } + float plane_distance; + float cloud_value; + float umbral; + float density; + vec3 intersection_pos; + vec3 intersection_pos_sup; + float dif_inf; + float dif_sup; + float dist_aux_coeff; + float current_value; + float surface_inf; + float surface_sup; + bool first_contact = true; + float opacity_dist; + vec3 increment; + float increment_dist; + float view_y_inv = 1.0 / view_vector.y; + float distance_aux; + float dist_aux_coeff_blur; + + block_color.rgb *= + clamp(bright + ((dither - .5) * .1), 0.0, 1.0) * .3 + 1.0; + + #if defined DISTANT_HORIZONS && defined DEFERRED_SHADER + float d_dh = texture2D(dhDepthTex0, vec2(gl_FragCoord.x / viewWidth, gl_FragCoord.y / viewHeight)).r; + float linear_d_dh = ld_dh(d_dh); + if (linear_d_dh < 0.9999) { + return block_color; + } + #endif + + if (view_vector.y > 0.0) { // Vista sobre el horizonte + umbral = 0.25; + + vec3 cloud_color = block_color * 1.75; + vec3 dark_cloud_color = block_color * 0.9; + + plane_distance = (CLOUD_PLANE - base_pos.y) * view_y_inv; + intersection_pos = (view_vector * plane_distance) + base_pos; + + plane_distance = (CLOUD_PLANE_SUP - base_pos.y) * view_y_inv; + intersection_pos_sup = (view_vector * plane_distance) + base_pos; + + dif_sup = CLOUD_PLANE_SUP - CLOUD_PLANE_CENTER; + dif_inf = CLOUD_PLANE_CENTER - CLOUD_PLANE; + dist_aux_coeff = (CLOUD_PLANE_SUP - CLOUD_PLANE) * 0.075; + dist_aux_coeff_blur = dist_aux_coeff * 0.4; + + opacity_dist = dist_aux_coeff * 2.5 * view_y_inv; + + increment = (intersection_pos_sup - intersection_pos) / samples; + increment_dist = length(increment); + + cloud_value = 0.0; + + intersection_pos += (increment * dither); + + for (int i = 0; i < samples; i++) { + current_value = + texture2D( + gaux2, + (intersection_pos.xz * .0008) + (frameTimeCounter * CLOUD_HI_FACTOR * 3.0) + ).r; + + #if V_CLOUDS == 2 && CLOUD_VOL_STYLE == 0 + current_value += + texture2D( + gaux2, + (intersection_pos.zx * .0008) + (frameTimeCounter * CLOUD_LOW_FACTOR * 3.0) + ).r; + current_value *= 0.5; + current_value = smoothstep(0.05, 0.95, current_value); + #endif + + // Ajuste por umbral + current_value = (current_value - umbral) / (1.0 - umbral); + + // Superficies inferior y superior de nubes + surface_inf = CLOUD_PLANE_CENTER - (current_value * dif_inf); + surface_sup = CLOUD_PLANE_CENTER + (current_value * dif_sup); + + if ( // Dentro de la nube + intersection_pos.y > surface_inf && + intersection_pos.y < surface_sup + ) { + cloud_value += min(increment_dist, surface_sup - surface_inf); + + if (first_contact) { + first_contact = false; + density = + (surface_sup - intersection_pos.y) / (CLOUD_PLANE_SUP - CLOUD_PLANE); + } + } + else if (surface_inf < surface_sup && i > 0) { // Fuera de la nube + distance_aux = min( + abs(intersection_pos.y - surface_inf), + abs(intersection_pos.y - surface_sup) + ); + + if (distance_aux < dist_aux_coeff_blur) { + cloud_value += min( + (clamp(dist_aux_coeff_blur - distance_aux, 0.0, dist_aux_coeff_blur) / dist_aux_coeff_blur) * increment_dist, + surface_sup - surface_inf + ); + + if (first_contact) { + first_contact = false; + density = + (surface_sup - intersection_pos.y) / + (CLOUD_PLANE_SUP - CLOUD_PLANE); + } + } + } + + intersection_pos += increment; } - } - - intersection_pos += increment; - } - cloud_value = clamp(cloud_value / opacity_dist, 0.0, 1.0); - density = clamp(density, 0.0001, 1.0); + cloud_value = clamp(cloud_value / opacity_dist, 0.0, 1.0); + density = clamp(density, 0.0001, 1.0); - cloud_color = mix(cloud_color, dark_cloud_color, sqrt(density)); + cloud_color = mix(cloud_color, dark_cloud_color, sqrt(density)); - // Halo brillante de contra al sol - cloud_color = mix(cloud_color, cloud_color * 2.0, (1.0 - cloud_value) * bright); + // Halo brillante de contra al sol + cloud_color = mix(cloud_color, cloud_color * 2.0, (1.0 - cloud_value) * bright); - block_color = mix( - block_color, - cloud_color, - cloud_value * clamp((view_vector.y - 0.06) * 5.0, 0.0, 1.0) - ); - - block_color = - mix(block_color, vec3(1.0), clamp(bright * .04, 0.0, 1.0)); - } + block_color = mix( + block_color, + cloud_color, + cloud_value * clamp((view_vector.y - 0.06) * 5.0, 0.0, 1.0) + ); + + block_color = + mix(block_color, vec3(1.0), clamp(bright * .04, 0.0, 1.0)); + } - return block_color; + return block_color; } \ No newline at end of file diff --git a/shaders/lib/volumetric_clouds_vertex.glsl b/shaders/lib/volumetric_clouds_vertex.glsl index cc0edb19..45e6e12d 100644 --- a/shaders/lib/volumetric_clouds_vertex.glsl +++ b/shaders/lib/volumetric_clouds_vertex.glsl @@ -1,39 +1,39 @@ #if MC_VERSION >= 11300 - umbral = (smoothstep(1.0, 0.0, rainStrength) * .3) + .25; + umbral = (smoothstep(1.0, 0.0, rainStrength) * .3) + .25; #else - umbral = (smoothstep(1.0, 0.0, rainStrength) * .3) + .55; + umbral = (smoothstep(1.0, 0.0, rainStrength) * .3) + .55; #endif dark_cloud_color = day_blend( - ZENITH_SUNSET_COLOR, - ZENITH_DAY_COLOR, - ZENITH_NIGHT_COLOR + ZENITH_SUNSET_COLOR, + ZENITH_DAY_COLOR, + ZENITH_NIGHT_COLOR ); dark_cloud_color = mix( - dark_cloud_color, - ZENITH_SKY_RAIN_COLOR * color_average(dark_cloud_color), - rainStrength + dark_cloud_color, + ZENITH_SKY_RAIN_COLOR * color_average(dark_cloud_color), + rainStrength ); vec3 cloud_color_aux = mix( -day_blend( - LIGHT_SUNSET_COLOR, - LIGHT_DAY_COLOR, - LIGHT_NIGHT_COLOR * vec3(0.5, 0.6, 0.75) -), -ZENITH_SKY_RAIN_COLOR * color_average(dark_cloud_color), -rainStrength + day_blend( + LIGHT_SUNSET_COLOR, + LIGHT_DAY_COLOR, + LIGHT_NIGHT_COLOR * vec3(0.5, 0.6, 0.75) + ), + ZENITH_SKY_RAIN_COLOR * color_average(dark_cloud_color), + rainStrength ); cloud_color = mix( - clamp(mix(vec3(luma(cloud_color_aux)), cloud_color_aux, 0.5) * vec3(1.5), 0.0, 1.4), - day_blend( - HORIZON_SUNSET_COLOR, - HORIZON_DAY_COLOR, - HORIZON_NIGHT_COLOR - ), - 0.3 + clamp(mix(vec3(luma(cloud_color_aux)), cloud_color_aux, 0.5) * vec3(1.5), 0.0, 1.4), + day_blend( + HORIZON_SUNSET_COLOR, + HORIZON_DAY_COLOR, + HORIZON_NIGHT_COLOR + ), + 0.3 ); cloud_color = mix(cloud_color, HORIZON_SKY_RAIN_COLOR * luma(cloud_color_aux) * 5.0, rainStrength); @@ -41,11 +41,11 @@ cloud_color = mix(cloud_color, HORIZON_SKY_RAIN_COLOR * luma(cloud_color_aux) * dark_cloud_color = mix(dark_cloud_color, cloud_color, 0.22); dark_cloud_color = mix( -dark_cloud_color, -day_blend( - cloud_color_aux, - dark_cloud_color, - dark_cloud_color -), -0.4 + dark_cloud_color, + day_blend( + cloud_color_aux, + dark_cloud_color, + dark_cloud_color + ), + 0.4 ); \ No newline at end of file diff --git a/shaders/lib/volumetric_light.glsl b/shaders/lib/volumetric_light.glsl index 5feda6fc..6c94d75b 100644 --- a/shaders/lib/volumetric_light.glsl +++ b/shaders/lib/volumetric_light.glsl @@ -4,129 +4,127 @@ Volumetric light - MakeUp implementation #if VOL_LIGHT == 2 - #define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) - - vec3 get_volumetric_pos(vec3 shadow_pos) { - shadow_pos = mat3(shadowModelView) * shadow_pos + shadowModelView[3].xyz; - shadow_pos = diagonal3(shadowProjection) * shadow_pos + shadowProjection[3].xyz; - float distb = length(shadow_pos.xy); - float distortion = distb * SHADOW_DIST + (1.0 - SHADOW_DIST); - - shadow_pos.xy /= distortion; - shadow_pos.z *= 0.2; - - return shadow_pos * 0.5 + 0.5; - } + #define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) - float get_volumetric_light(float dither, float view_distance, mat4 modeli_times_projectioni) { - float light = 0.0; + vec3 get_volumetric_pos(vec3 shadow_pos) { + shadow_pos = mat3(shadowModelView) * shadow_pos + shadowModelView[3].xyz; + shadow_pos = diagonal3(shadowProjection) * shadow_pos + shadowProjection[3].xyz; + float distb = length(shadow_pos.xy); + float distortion = distb * SHADOW_DIST + (1.0 - SHADOW_DIST); - float current_depth; - vec3 view_pos; - vec4 pos; - vec3 shadow_pos; + shadow_pos.xy /= distortion; + shadow_pos.z *= 0.2; + + return shadow_pos * 0.5 + 0.5; + } - for (int i = 0; i < GODRAY_STEPS; i++) { - // Exponentialy spaced shadow samples - current_depth = exp2(i + dither) - 0.6; - if (current_depth > view_distance) { - break; - } + float get_volumetric_light(float dither, float view_distance, mat4 modeli_times_projectioni) { + float light = 0.0; - // Distance to depth - current_depth = (far * (current_depth - near)) / (current_depth * (far - near)); + float current_depth; + vec3 view_pos; + vec4 pos; + vec3 shadow_pos; - view_pos = vec3(texcoord, current_depth); + for (int i = 0; i < GODRAY_STEPS; i++) { + // Exponentialy spaced shadow samples + current_depth = exp2(i + dither) - 0.6; + if (current_depth > view_distance) { + break; + } - // Clip to world - pos = modeli_times_projectioni * (vec4(view_pos, 1.0) * 2.0 - 1.0); - view_pos = (pos.xyz /= pos.w).xyz; + // Distance to depth + current_depth = (far * (current_depth - near)) / (current_depth * (far - near)); - shadow_pos = get_volumetric_pos(view_pos); + view_pos = vec3(texcoord, current_depth); - light += shadow2D(shadowtex1, shadow_pos).r; + // Clip to world + pos = modeli_times_projectioni * (vec4(view_pos, 1.0) * 2.0 - 1.0); + view_pos = (pos.xyz /= pos.w).xyz; + shadow_pos = get_volumetric_pos(view_pos); + light += shadow2D(shadowtex1, shadow_pos).r; + } + + light /= GODRAY_STEPS; + + return light * light; } - light /= GODRAY_STEPS; + #if defined COLORED_SHADOW - return light * light; - } + vec3 get_volumetric_color_light(float dither, float view_distance, mat4 modeli_times_projectioni) { + float light = 0.0; - #if defined COLORED_SHADOW + float current_depth; + vec3 view_pos; + vec4 pos; + vec3 shadow_pos; - vec3 get_volumetric_color_light(float dither, float view_distance, mat4 modeli_times_projectioni) { - float light = 0.0; + float shadow_detector = 1.0; + float shadow_black = 1.0; + vec4 shadow_color = vec4(1.0); + vec3 light_color = vec3(0.0); - float current_depth; - vec3 view_pos; - vec4 pos; - vec3 shadow_pos; + float alpha_complement; - float shadow_detector = 1.0; - float shadow_black = 1.0; - vec4 shadow_color = vec4(1.0); - vec3 light_color = vec3(0.0); + for (int i = 0; i < GODRAY_STEPS; i++) { + // Exponentialy spaced shadow samples + current_depth = exp2(i + dither) - 0.96; // 0.96 avoids points behind near plane + if (current_depth > view_distance) { + break; + } - float alpha_complement; + // Distance to depth + current_depth = (far * (current_depth - near)) / (current_depth * (far - near)); - for (int i = 0; i < GODRAY_STEPS; i++) { - // Exponentialy spaced shadow samples - current_depth = exp2(i + dither) - 0.96; // 0.96 avoids points behind near plane - if (current_depth > view_distance) { - break; - } + view_pos = vec3(texcoord, current_depth); - // Distance to depth - current_depth = (far * (current_depth - near)) / (current_depth * (far - near)); + // Clip to world + pos = modeli_times_projectioni * (vec4(view_pos, 1.0) * 2.0 - 1.0); + view_pos = (pos.xyz /= pos.w).xyz; - view_pos = vec3(texcoord, current_depth); + shadow_pos = get_volumetric_pos(view_pos); - // Clip to world - pos = modeli_times_projectioni * (vec4(view_pos, 1.0) * 2.0 - 1.0); - view_pos = (pos.xyz /= pos.w).xyz; + shadow_detector = shadow2D(shadowtex0, vec3(shadow_pos.xy, shadow_pos.z - 0.001)).r; + if (shadow_detector < 1.0) { + shadow_black = shadow2D(shadowtex1, vec3(shadow_pos.xy, shadow_pos.z - 0.001)).r; + if (shadow_black != shadow_detector) { + shadow_color = texture2D(shadowcolor0, shadow_pos.xy); + alpha_complement = 1.0 - shadow_color.a; + shadow_color.rgb *= alpha_complement; + shadow_color.rgb = mix(shadow_color.rgb, vec3(1.0), alpha_complement); + } + } + + shadow_color *= shadow_black; + light_color += clamp(shadow_color.rgb * (1.0 - shadow_detector) + shadow_detector, vec3(0.0), vec3(1.0)); + } - shadow_pos = get_volumetric_pos(view_pos); + light_color /= GODRAY_STEPS; - shadow_detector = shadow2D(shadowtex0, vec3(shadow_pos.xy, shadow_pos.z - 0.001)).r; - if (shadow_detector < 1.0) { - shadow_black = shadow2D(shadowtex1, vec3(shadow_pos.xy, shadow_pos.z - 0.001)).r; - if (shadow_black != shadow_detector) { - shadow_color = texture2D(shadowcolor0, shadow_pos.xy); - alpha_complement = 1.0 - shadow_color.a; - shadow_color.rgb *= alpha_complement; - shadow_color.rgb = mix(shadow_color.rgb, vec3(1.0), alpha_complement); - } + return light_color; } - shadow_color *= shadow_black; - light_color += clamp(shadow_color.rgb * (1.0 - shadow_detector) + shadow_detector, vec3(0.0), vec3(1.0)); - } - - light_color /= GODRAY_STEPS; - - return light_color; - } - - #endif + #endif #elif VOL_LIGHT == 1 - float ss_godrays(float dither) { - float light = 0.0; - float comp = 1.0 - (near / (far * far)); + float ss_godrays(float dither) { + float light = 0.0; + float comp = 1.0 - (near / (far * far)); - vec2 ray_step = vec2(lightpos - texcoord) * 0.2; - vec2 dither2d = texcoord + (ray_step * dither); + vec2 ray_step = vec2(lightpos - texcoord) * 0.2; + vec2 dither2d = texcoord + (ray_step * dither); - float depth; + float depth; - for (int i = 0; i < CHEAP_GODRAY_SAMPLES; i++) { - depth = texture2D(depthtex1, dither2d).x; - dither2d += ray_step; - light += step(comp, depth); - } + for (int i = 0; i < CHEAP_GODRAY_SAMPLES; i++) { + depth = texture2D(depthtex1, dither2d).x; + dither2d += ray_step; + light += step(comp, depth); + } - return light / CHEAP_GODRAY_SAMPLES; + return light / CHEAP_GODRAY_SAMPLES; } #endif diff --git a/shaders/lib/water.glsl b/shaders/lib/water.glsl index fcb80019..290060fa 100644 --- a/shaders/lib/water.glsl +++ b/shaders/lib/water.glsl @@ -3,323 +3,322 @@ Water reflection and refraction related functions. */ vec3 fast_raymarch(vec3 direction, vec3 hit_coord, inout float infinite, float dither) { - vec3 dir_increment; - vec3 current_march = hit_coord; - vec3 old_current_march; - float screen_depth; - float depth_diff = 1.0; - vec3 march_pos = camera_to_screen(hit_coord); - float prev_screen_depth = march_pos.z; - bool search_flag = false; - bool hidden_flag = false; - bool first_hidden = true; - bool out_flag = false; - bool to_far = false; - vec3 last_march_pos; - - int no_hidden_steps = 0; - bool hiddens = false; - - // Ray marching - for (int i = 0; i < RAYMARCH_STEPS; i++) { - if (search_flag) { - dir_increment *= 0.5; - current_march += dir_increment * sign(depth_diff); - } else { - old_current_march = current_march; - current_march = hit_coord + ((direction * exp2(i + dither)) - direction); - dir_increment = current_march - old_current_march; - } - - last_march_pos = march_pos; - march_pos = camera_to_screen(current_march); - - if ( // Is outside screen space - march_pos.x < 0.0 || - march_pos.x > 1.0 || - march_pos.y < 0.0 || - march_pos.y > 1.0 || - march_pos.z < 0.0 - ) { - out_flag = true; - } - - if (march_pos.z > 0.9999) { - to_far = true; - } - - screen_depth = texture2D(depthtex1, march_pos.xy).x; - depth_diff = screen_depth - march_pos.z; - - if (depth_diff < 0.0 && abs(screen_depth - prev_screen_depth) > abs(march_pos.z - last_march_pos.z)) { - hidden_flag = true; - hiddens = true; - if (first_hidden) { - first_hidden = false; - } - } else if (depth_diff > 0.0) { - hidden_flag = false; - if (!hiddens) { - no_hidden_steps++; - } + vec3 dir_increment; + vec3 current_march = hit_coord; + vec3 old_current_march; + float screen_depth; + float depth_diff = 1.0; + vec3 march_pos = camera_to_screen(hit_coord); + float prev_screen_depth = march_pos.z; + float hit_z = march_pos.z; + bool search_flag = false; + bool hidden_flag = false; + bool first_hidden = true; + bool out_flag = false; + bool to_far = false; + vec3 last_march_pos; + + int no_hidden_steps = 0; + bool hiddens = false; + + // Ray marching + for (int i = 0; i < RAYMARCH_STEPS; i++) { + if (search_flag) { + dir_increment *= 0.5; + current_march += dir_increment * sign(depth_diff); + } else { + old_current_march = current_march; + current_march = hit_coord + ((direction * exp2(i + dither)) - direction); + dir_increment = current_march - old_current_march; + } + + last_march_pos = march_pos; + march_pos = camera_to_screen(current_march); + + if ( // Is outside screen space + march_pos.x < 0.0 || + march_pos.x > 1.0 || + march_pos.y < 0.0 || + march_pos.y > 1.0 || + march_pos.z < 0.0 + ) { + out_flag = true; + } + + if (march_pos.z > 0.9999) { + to_far = true; + } + + screen_depth = texture2D(depthtex1, march_pos.xy).x; + depth_diff = screen_depth - march_pos.z; + + if (depth_diff < 0.0 && abs(screen_depth - prev_screen_depth) > abs(march_pos.z - last_march_pos.z)) { + hidden_flag = true; + hiddens = true; + if (first_hidden) { + first_hidden = false; + } + } else if (depth_diff > 0.0) { + hidden_flag = false; + if (!hiddens) { + no_hidden_steps++; + } + } + + if (search_flag == false && depth_diff < 0.0 && hidden_flag == false) { + search_flag = true; + } + + prev_screen_depth = screen_depth; } - if (search_flag == false && depth_diff < 0.0 && hidden_flag == false) { - search_flag = true; - } - - prev_screen_depth = screen_depth; - } - - infinite = float(screen_depth > 0.9999); - - if (out_flag) { - infinite = 1.0; - return march_pos; - } else if (to_far) { - if (screen_depth > 0.9999) { - infinite = 1.0; - return march_pos; - } else if (no_hidden_steps < 3) { - return march_pos; + infinite = float(screen_depth > 0.9999); + + if (out_flag) { + infinite = 1.0; + return march_pos; + } else if (to_far) { + if (screen_depth > 0.9999) { + infinite = 1.0; + return march_pos; + } else if (no_hidden_steps < 3 || screen_depth > hit_z) { + return march_pos; + } else { + infinite = 1.0; + return vec3(1.0); + } } else { - infinite = 1.0; - return vec3(1.0); + return march_pos; } - } else { - return march_pos; - } } #if SUN_REFLECTION == 1 - #if !defined NETHER && !defined THE_END - float sun_reflection(vec3 fragpos) { - vec3 astro_pos = worldTime > 12900 ? moonPosition : sunPosition; - float astro_vector = - max(dot(normalize(fragpos), normalize(astro_pos)), 0.0); - - return smoothstep(0.995, 1.0, astro_vector) * - clamp(lmcoord.y, 0.0, 1.0) * - (1.0 - rainStrength) * 3.0; - } - - #endif + #if !defined NETHER && !defined THE_END + float sun_reflection(vec3 fragpos) { + vec3 astro_pos = worldTime > 12900 ? moonPosition : sunPosition; + float astro_vector = + max(dot(normalize(fragpos), normalize(astro_pos)), 0.0); + + return smoothstep(0.995, 1.0, astro_vector) * + clamp(lmcoord.y, 0.0, 1.0) * + (1.0 - rainStrength) * 3.0; + } + #endif #endif vec3 normal_waves(vec3 pos) { - float speed = frameTimeCounter * .025; - vec2 wave_1 = - texture2D(noisetex, ((pos.xy - pos.z * 0.2) * 0.05) + vec2(speed, speed)).rg; - wave_1 = wave_1 - .5; - vec2 wave_2 = - texture2D(noisetex, ((pos.xy - pos.z * 0.2) * 0.03125) - speed).rg; - wave_2 = wave_2 - .5; - vec2 wave_3 = - texture2D(noisetex, ((pos.xy - pos.z * 0.2) * 0.125) + vec2(speed, -speed)).rg; - wave_3 = wave_3 - .5; - wave_3 *= 0.66; - - vec2 partial_wave = wave_1 + wave_2 + wave_3; - - vec3 final_wave = vec3(partial_wave, WATER_TURBULENCE - (rainStrength * 0.6 * WATER_TURBULENCE * visible_sky)); - - return normalize(final_wave); + float speed = frameTimeCounter * .025; + vec2 wave_1 = + texture2D(noisetex, ((pos.xy - pos.z * 0.2) * 0.05) + vec2(speed, speed)).rg; + wave_1 = wave_1 - .5; + vec2 wave_2 = + texture2D(noisetex, ((pos.xy - pos.z * 0.2) * 0.03125) - speed).rg; + wave_2 = wave_2 - .5; + vec2 wave_3 = + texture2D(noisetex, ((pos.xy - pos.z * 0.2) * 0.125) + vec2(speed, -speed)).rg; + wave_3 = wave_3 - .5; + wave_3 *= 0.66; + + vec2 partial_wave = wave_1 + wave_2 + wave_3; + vec3 final_wave = vec3(partial_wave, WATER_TURBULENCE - (rainStrength * 0.6 * WATER_TURBULENCE * visible_sky)); + + return normalize(final_wave); } vec3 refraction(vec3 fragpos, vec3 color, vec3 refraction) { - vec2 pos = gl_FragCoord.xy * vec2(pixel_size_x, pixel_size_y); - - #if REFRACTION == 1 - // 0.06 is the pseudorefraction strength - pos = pos + refraction.xy * (0.075 / (1.0 + length(fragpos) * 0.4)); - #endif - - float water_absortion; - if (isEyeInWater == 0) { - float water_distance = - 2.0 * near * far / (far + near - (2.0 * gl_FragCoord.z - 1.0) * (far - near)); - - float earth_distance = texture2D(depthtex1, pos.xy).r; - earth_distance = - 2.0 * near * far / (far + near - (2.0 * earth_distance - 1.0) * (far - near)); - - #if defined DISTANT_HORIZONS - float earth_distance_dh = texture2D(dhDepthTex1, pos.xy).r; - earth_distance_dh = - 2.0 * dhNearPlane * dhFarPlane / (dhFarPlane + dhNearPlane - (2.0 * earth_distance_dh - 1.0) * (dhFarPlane - dhNearPlane)); - earth_distance = min(earth_distance, earth_distance_dh); + vec2 pos = gl_FragCoord.xy * vec2(pixel_size_x, pixel_size_y); + + #if REFRACTION == 1 + pos = pos + refraction.xy * (0.075 / (1.0 + length(fragpos) * 0.4)); #endif - water_absortion = earth_distance - water_distance; - water_absortion *= water_absortion; - water_absortion = (1.0 / -((water_absortion * WATER_ABSORPTION) + 1.125)) + 1.0; - } else { - water_absortion = 0.0; - } + float water_absortion; + if (isEyeInWater == 0) { + float water_distance = + 2.0 * near * far / (far + near - (2.0 * gl_FragCoord.z - 1.0) * (far - near)); + + float earth_distance = texture2D(depthtex1, pos.xy).r; + earth_distance = + 2.0 * near * far / (far + near - (2.0 * earth_distance - 1.0) * (far - near)); + + #if defined DISTANT_HORIZONS + float earth_distance_dh = texture2D(dhDepthTex1, pos.xy).r; + earth_distance_dh = + 2.0 * dhNearPlane * dhFarPlane / (dhFarPlane + dhNearPlane - (2.0 * earth_distance_dh - 1.0) * (dhFarPlane - dhNearPlane)); + earth_distance = min(earth_distance, earth_distance_dh); + #endif + + water_absortion = earth_distance - water_distance; + water_absortion *= water_absortion; + water_absortion = (1.0 / -((water_absortion * WATER_ABSORPTION) + 1.125)) + 1.0; + } else { + water_absortion = 0.0; + } - return mix(texture2D(gaux1, pos.xy).rgb, color, water_absortion); + return mix(texture2D(gaux1, pos.xy).rgb, color, water_absortion); } vec3 get_normals(vec3 bump, vec3 fragpos) { - float NdotE = abs(dot(water_normal, normalize(fragpos))); + float NdotE = abs(dot(water_normal, normalize(fragpos))); - bump *= vec3(NdotE) + vec3(0.0, 0.0, 1.0 - NdotE); + bump *= vec3(NdotE) + vec3(0.0, 0.0, 1.0 - NdotE); - mat3 tbn_matrix = mat3( - tangent.x, binormal.x, water_normal.x, - tangent.y, binormal.y, water_normal.y, - tangent.z, binormal.z, water_normal.z + mat3 tbn_matrix = mat3( + tangent.x, binormal.x, water_normal.x, + tangent.y, binormal.y, water_normal.y, + tangent.z, binormal.z, water_normal.z ); - return normalize(bump * tbn_matrix); + return normalize(bump * tbn_matrix); } vec4 reflection_calc(vec3 fragpos, vec3 normal, vec3 reflected, inout float infinite, float dither) { - #if SSR_TYPE == 0 // Flipped image - #if defined DISTANT_HORIZONS - vec3 pos = camera_to_screen(fragpos + reflected * 768.0); - #else - vec3 pos = camera_to_screen(fragpos + reflected * 76.0); + #if SSR_TYPE == 0 // Flipped image + #if defined DISTANT_HORIZONS + vec3 pos = camera_to_screen(fragpos + reflected * 768.0); + #else + vec3 pos = camera_to_screen(fragpos + reflected * 76.0); + #endif + #else // Raymarch + vec3 pos = fast_raymarch(reflected, fragpos, infinite, dither); #endif - #else // Raymarch - vec3 pos = fast_raymarch(reflected, fragpos, infinite, dither); - #endif - float border = - clamp((1.0 - (max(0.0, abs(pos.y - 0.5)) * 2.0)) * 50.0, 0.0, 1.0); + float border = + clamp((1.0 - (max(0.0, abs(pos.y - 0.5)) * 2.0)) * 50.0, 0.0, 1.0); - border = clamp(border - pow(pos.y, 10.0), 0.0, 1.0); + border = clamp(border - pow(pos.y, 10.0), 0.0, 1.0); - pos.x = abs(pos.x); - if (pos.x > 1.0) { - pos.x = 1.0 - (pos.x - 1.0); - } + pos.x = abs(pos.x); + if (pos.x > 1.0) { + pos.x = 1.0 - (pos.x - 1.0); + } - return vec4(texture2D(gaux1, pos.xy).rgb, border); + return vec4(texture2D(gaux1, pos.xy).rgb, border); } vec3 water_shader( - vec3 fragpos, - vec3 normal, - vec3 color, - vec3 sky_reflect, - vec3 reflected, - float fresnel, - float visible_sky, - float dither, - vec3 light_color) { - vec4 reflection = vec4(0.0); - float infinite = 1.0; - - #if REFLECTION == 1 - reflection = reflection_calc(fragpos, normal, reflected, infinite, dither); - #endif - - reflection.rgb = mix( - sky_reflect * visible_sky, - reflection.rgb, - reflection.a - ); - - #ifdef VANILLA_WATER - fresnel *= 0.8; - #endif - - #if SUN_REFLECTION == 1 - #ifndef NETHER - #ifndef THE_END - return mix(color, reflection.rgb, fresnel * REFLEX_INDEX) + - vec3(sun_reflection(reflect(normalize(fragpos), normal))) * light_color * infinite * visible_sky; - #else - return mix(color, reflection.rgb, fresnel * REFLEX_INDEX); - #endif + vec3 fragpos, + vec3 normal, + vec3 color, + vec3 sky_reflect, + vec3 reflected, + float fresnel, + float visible_sky, + float dither, + vec3 light_color +) { + vec4 reflection = vec4(0.0); + float infinite = 1.0; + + #if REFLECTION == 1 + reflection = + reflection_calc(fragpos, normal, reflected, infinite, dither); + #endif + + reflection.rgb = mix( + sky_reflect * visible_sky, + reflection.rgb, + reflection.a + ); + + #ifdef VANILLA_WATER + fresnel *= 0.8; + #endif + + #if SUN_REFLECTION == 1 + #ifndef NETHER + #ifndef THE_END + return mix(color, reflection.rgb, fresnel * REFLEX_INDEX) + + vec3(sun_reflection(reflect(normalize(fragpos), normal))) * light_color * infinite * visible_sky; + #else + return mix(color, reflection.rgb, fresnel * REFLEX_INDEX); + #endif + #else + return mix(color, reflection.rgb, fresnel * REFLEX_INDEX); + #endif #else - return mix(color, reflection.rgb, fresnel * REFLEX_INDEX); + return mix(color, reflection.rgb, fresnel * REFLEX_INDEX); #endif - #else - return mix(color, reflection.rgb, fresnel * REFLEX_INDEX); - #endif } // GLASS vec4 cristal_reflection_calc(vec3 fragpos, vec3 normal, inout float infinite, float dither) { - #if SSR_TYPE == 0 - #if defined DISTANT_HORIZONS - vec3 reflected_vector = reflect(normalize(fragpos), normal) * 768.0; + #if SSR_TYPE == 0 + #if defined DISTANT_HORIZONS + vec3 reflected_vector = reflect(normalize(fragpos), normal) * 768.0; + #else + vec3 reflected_vector = reflect(normalize(fragpos), normal) * 76.0; + #endif + vec3 pos = camera_to_screen(fragpos + reflected_vector); #else - vec3 reflected_vector = reflect(normalize(fragpos), normal) * 76.0; - #endif - vec3 pos = camera_to_screen(fragpos + reflected_vector); - #else - vec3 reflected_vector = reflect(normalize(fragpos), normal); - vec3 pos = fast_raymarch(reflected_vector, fragpos, infinite, dither); - - if (pos.x > 99.0) { // Fallback - #if defined DISTANT_HORIZONS - pos = camera_to_screen(fragpos + reflected_vector * 768.0); - #else - pos = camera_to_screen(fragpos + reflected_vector * 76.0); + vec3 reflected_vector = reflect(normalize(fragpos), normal); + vec3 pos = fast_raymarch(reflected_vector, fragpos, infinite, dither); + + if (pos.x > 99.0) { // Fallback + #if defined DISTANT_HORIZONS + pos = camera_to_screen(fragpos + reflected_vector * 768.0); + #else + pos = camera_to_screen(fragpos + reflected_vector * 76.0); + #endif + } #endif - } - #endif - float border_x = max(-fourth_pow(abs(2.0 * pos.x - 1.0)) + 1.0, 0.0); - float border_y = max(-fourth_pow(abs(2.0 * pos.y - 1.0)) + 1.0, 0.0); - float border = min(border_x, border_y); + float border_x = max(-fourth_pow(abs(2.0 * pos.x - 1.0)) + 1.0, 0.0); + float border_y = max(-fourth_pow(abs(2.0 * pos.y - 1.0)) + 1.0, 0.0); + float border = min(border_x, border_y); - return vec4(texture2D(gaux1, pos.xy, 0.0).rgb, border); + return vec4(texture2D(gaux1, pos.xy, 0.0).rgb, border); } vec4 cristal_shader( - vec3 fragpos, - vec3 normal, - vec4 color, - vec3 sky_reflection, - float fresnel, - float visible_sky, - float dither, - vec3 light_color) -{ - vec4 reflection = vec4(0.0); - float infinite = 0.0; - - #if REFLECTION == 1 - reflection = cristal_reflection_calc(fragpos, normal, infinite, dither); - #endif - - sky_reflection = mix(color.rgb, sky_reflection, visible_sky * visible_sky); - - reflection.rgb = mix( - sky_reflection, - reflection.rgb, - reflection.a - ); - - color.rgb = mix(color.rgb, sky_reflection, fresnel); - color.rgb = mix(color.rgb, reflection.rgb, fresnel); - - color.a = mix(color.a, 1.0, fresnel * .9); - - #if SUN_REFLECTION == 1 - #ifndef NETHER - #ifndef THE_END - return color + - vec4( - mix( - vec3(sun_reflection(reflect(normalize(fragpos), normal)) * light_color * infinite * visible_sky), - vec3(0.0), - reflection.a - ), - 0.0 - ); - #else - return color; - #endif + vec3 fragpos, + vec3 normal, + vec4 color, + vec3 sky_reflection, + float fresnel, + float visible_sky, + float dither, + vec3 light_color +) { + vec4 reflection = vec4(0.0); + float infinite = 0.0; + + #if REFLECTION == 1 + reflection = cristal_reflection_calc(fragpos, normal, infinite, dither); + #endif + + sky_reflection = mix(color.rgb, sky_reflection, visible_sky * visible_sky); + + reflection.rgb = mix( + sky_reflection, + reflection.rgb, + reflection.a + ); + + color.rgb = mix(color.rgb, sky_reflection, fresnel); + color.rgb = mix(color.rgb, reflection.rgb, fresnel); + + color.a = mix(color.a, 1.0, fresnel * .9); + + #if SUN_REFLECTION == 1 + #ifndef NETHER + #ifndef THE_END + return color + vec4( + mix( + vec3(sun_reflection(reflect(normalize(fragpos), normal)) * light_color * infinite * visible_sky), + vec3(0.0), + reflection.a + ), + 0.0 + ); + #else + return color; + #endif + #else + return color; + #endif #else - return color; + return color; #endif - #else - return color; - #endif } diff --git a/shaders/lib/water_dh.glsl b/shaders/lib/water_dh.glsl index f26dbdb4..902b6a53 100644 --- a/shaders/lib/water_dh.glsl +++ b/shaders/lib/water_dh.glsl @@ -1,136 +1,135 @@ -/* MakeUp - water.glsl -Water reflection and refraction related functions. +/* MakeUp - water_dh.glsl +Water reflection and refraction related functions (dh). */ #if SUN_REFLECTION == 1 - #if !defined NETHER && !defined THE_END - float sun_reflection(vec3 fragpos) { - vec3 astro_pos = worldTime > 12900 ? moonPosition : sunPosition; - float astro_vector = - max(dot(normalize(fragpos), normalize(astro_pos)), 0.0); - - return smoothstep(0.995, 1.0, astro_vector) * - clamp(lmcoord.y, 0.0, 1.0) * - (1.0 - rainStrength) * 3.0; - } + #if !defined NETHER && !defined THE_END + float sun_reflection(vec3 fragpos) { + vec3 astro_pos = worldTime > 12900 ? moonPosition : sunPosition; + float astro_vector = + max(dot(normalize(fragpos), normalize(astro_pos)), 0.0); + + return smoothstep(0.995, 1.0, astro_vector) * + clamp(lmcoord.y, 0.0, 1.0) * + (1.0 - rainStrength) * 3.0; + } - #endif + #endif #endif vec3 normal_waves_dh(vec3 pos) { - vec2 wave_2 = - texture2D(noisetex, ((pos.xy - pos.z * 0.2) * 0.03125) - (frameTimeCounter * .025)).rg; - wave_2 = wave_2 - .5; + vec2 wave_2 = + texture2D(noisetex, ((pos.xy - pos.z * 0.2) * 0.03125) - (frameTimeCounter * .025)).rg; + wave_2 = wave_2 - .5; + vec2 partial_wave = wave_2; + vec3 final_wave = vec3(partial_wave, WATER_TURBULENCE); - vec2 partial_wave = wave_2; - - vec3 final_wave = vec3(partial_wave, WATER_TURBULENCE); - - return normalize(final_wave); + return normalize(final_wave); } vec3 refraction(vec3 fragpos, vec3 color, vec3 refraction) { - vec2 pos = gl_FragCoord.xy * vec2(pixel_size_x, pixel_size_y); - - #if REFRACTION == 1 - // 0.06 is the pseudorefraction strength - pos = pos + refraction.xy * (0.075 / (1.0 + length(fragpos) * 0.4)); - #endif - - float water_absortion; - if (isEyeInWater == 0) { - float water_distance = - 2.0 * dhNearPlane * dhFarPlane / (dhFarPlane + dhNearPlane - (2.0 * gl_FragCoord.z - 1.0) * (dhFarPlane - dhNearPlane)); - - float earth_distance = texture2D(dhDepthTex1, pos.xy).r; - earth_distance = - 2.0 * dhNearPlane * dhFarPlane / (dhFarPlane + dhNearPlane - (2.0 * earth_distance - 1.0) * (dhFarPlane - dhNearPlane)); - - water_absortion = (earth_distance - water_distance) * 0.5; - water_absortion *= water_absortion; - water_absortion = (1.0 / -((water_absortion * WATER_ABSORPTION) + 1.125)) + 1.0; - } else { - water_absortion = 0.0; - } - - return mix(texture2D(gaux1, pos.xy).rgb, color, water_absortion); + vec2 pos = gl_FragCoord.xy * vec2(pixel_size_x, pixel_size_y); + + #if REFRACTION == 1 + pos = pos + refraction.xy * (0.075 / (1.0 + length(fragpos) * 0.4)); + #endif + + float water_absortion; + if (isEyeInWater == 0) { + float water_distance = + 2.0 * dhNearPlane * dhFarPlane / (dhFarPlane + dhNearPlane - (2.0 * gl_FragCoord.z - 1.0) * (dhFarPlane - dhNearPlane)); + + float earth_distance = texture2D(dhDepthTex1, pos.xy).r; + earth_distance = + 2.0 * dhNearPlane * dhFarPlane / (dhFarPlane + dhNearPlane - (2.0 * earth_distance - 1.0) * (dhFarPlane - dhNearPlane)); + + water_absortion = (earth_distance - water_distance) * 0.5; + water_absortion *= water_absortion; + water_absortion = (1.0 / -((water_absortion * WATER_ABSORPTION) + 1.125)) + 1.0; + } else { + water_absortion = 0.0; + } + + return mix(texture2D(gaux1, pos.xy).rgb, color, water_absortion); } vec3 get_normals(vec3 bump, vec3 fragpos) { - float NdotE = abs(dot(water_normal, normalize(fragpos))); + float NdotE = abs(dot(water_normal, normalize(fragpos))); - bump *= vec3(NdotE) + vec3(0.0, 0.0, 1.0 - NdotE); + bump *= vec3(NdotE) + vec3(0.0, 0.0, 1.0 - NdotE); - mat3 tbn_matrix = mat3( - tangent.x, binormal.x, water_normal.x, - tangent.y, binormal.y, water_normal.y, - tangent.z, binormal.z, water_normal.z + mat3 tbn_matrix = mat3( + tangent.x, binormal.x, water_normal.x, + tangent.y, binormal.y, water_normal.y, + tangent.z, binormal.z, water_normal.z ); - return normalize(bump * tbn_matrix); + return normalize(bump * tbn_matrix); } vec4 reflection_calc_dh(vec3 fragpos, vec3 normal, vec3 reflected, vec3 infinite_color, float dither) { - vec3 pos = camera_to_screen(fragpos + reflected * 768.0); + vec3 pos = camera_to_screen(fragpos + reflected * 768.0); - float border = - clamp((1.0 - (max(0.0, abs(pos.y - 0.5)) * 2.0)) * 50.0, 0.0, 1.0); + float border = + clamp((1.0 - (max(0.0, abs(pos.y - 0.5)) * 2.0)) * 50.0, 0.0, 1.0); - border = clamp(border - pow(pos.y, 10.0), 0.0, 1.0); + border = clamp(border - pow(pos.y, 10.0), 0.0, 1.0); - pos.x = abs(pos.x); - if (pos.x > 1.0) { - pos.x = 1.0 - (pos.x - 1.0); - } + pos.x = abs(pos.x); + if (pos.x > 1.0) { + pos.x = 1.0 - (pos.x - 1.0); + } - vec4 final_reflex; - if (texture2D(depthtex0, pos.xy).r < 0.999) { - final_reflex = vec4(infinite_color, border); - } else { - final_reflex = vec4(texture2D(gaux1, pos.xy).rgb, border); - } - return final_reflex; + vec4 final_reflex; + if (texture2D(depthtex0, pos.xy).r < 0.999) { + final_reflex = vec4(infinite_color, border); + } else { + final_reflex = vec4(texture2D(gaux1, pos.xy).rgb, border); + } + return final_reflex; } vec3 water_shader_dh( - vec3 fragpos, - vec3 normal, - vec3 color, - vec3 sky_reflect, - vec3 reflected, - float fresnel, - float visible_sky, - float dither, - vec3 light_color) { - vec4 reflection = vec4(0.0); - float infinite = 1.0; - - #if REFLECTION == 1 - reflection = reflection_calc_dh(fragpos, normal, reflected, sky_reflect, dither); - #endif - - reflection.rgb = mix( - sky_reflect * visible_sky, - reflection.rgb, - reflection.a - ); - - #ifdef VANILLA_WATER - fresnel *= 0.8; - #endif - - #if SUN_REFLECTION == 1 - #ifndef NETHER - #ifndef THE_END - return mix(color, reflection.rgb, fresnel * REFLEX_INDEX) + - vec3(sun_reflection(reflect(normalize(fragpos), normal))) * light_color * infinite * visible_sky; - #else - return mix(color, reflection.rgb, fresnel * REFLEX_INDEX); - #endif + vec3 fragpos, + vec3 normal, + vec3 color, + vec3 sky_reflect, + vec3 reflected, + float fresnel, + float visible_sky, + float dither, + vec3 light_color +) { + vec4 reflection = vec4(0.0); + float infinite = 1.0; + + #if REFLECTION == 1 + reflection = + reflection_calc_dh(fragpos, normal, reflected, sky_reflect, dither); + #endif + + reflection.rgb = mix( + sky_reflect * visible_sky, + reflection.rgb, + reflection.a + ); + + #ifdef VANILLA_WATER + fresnel *= 0.8; + #endif + + #if SUN_REFLECTION == 1 + #ifndef NETHER + #ifndef THE_END + return mix(color, reflection.rgb, fresnel * REFLEX_INDEX) + + vec3(sun_reflection(reflect(normalize(fragpos), normal))) * light_color * infinite * visible_sky; + #else + return mix(color, reflection.rgb, fresnel * REFLEX_INDEX); + #endif + #else + return mix(color, reflection.rgb, fresnel * REFLEX_INDEX); + #endif #else - return mix(color, reflection.rgb, fresnel * REFLEX_INDEX); + return mix(color, reflection.rgb, fresnel * REFLEX_INDEX); #endif - #else - return mix(color, reflection.rgb, fresnel * REFLEX_INDEX); - #endif } diff --git a/shaders/prepare.fsh b/shaders/prepare.fsh index e9a23593..c980cf12 100644 --- a/shaders/prepare.fsh +++ b/shaders/prepare.fsh @@ -8,7 +8,7 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define USE_BASIC_SH // Sets the use of a "basic" or "generic" shader for custom dimensions, instead of the default overworld shader. This can solve some rendering issues as the shader is closer to vanilla rendering. #ifdef USE_BASIC_SH - #define UNKNOWN_DIM + #define UNKNOWN_DIM #endif #define PREPARE_SHADER diff --git a/shaders/prepare.vsh b/shaders/prepare.vsh index 89d77827..5f6bdf2a 100644 --- a/shaders/prepare.vsh +++ b/shaders/prepare.vsh @@ -8,7 +8,7 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define USE_BASIC_SH // Sets the use of a "basic" or "generic" shader for custom dimensions, instead of the default overworld shader. This can solve some rendering issues as the shader is closer to vanilla rendering. #ifdef USE_BASIC_SH - #define UNKNOWN_DIM + #define UNKNOWN_DIM #endif #define PREPARE_SHADER diff --git a/shaders/shaders.alternate.properties b/shaders/shaders.alternate.properties new file mode 100644 index 00000000..ae9fd73a --- /dev/null +++ b/shaders/shaders.alternate.properties @@ -0,0 +1,210 @@ +# MakeUp - shader.properties + +#Profiles +profile.no_effects= !SHADOW_CASTING SHADOW_QTY_SLIDER=1 SHADOW_DISTANCE_SLIDER=0 REFLECTION_SLIDER=0 !DOF DOF_STRENGTH=0.09 AO=0 AOSTEPS=4 AO_STRENGTH=0.70 AA_TYPE=0 !MOTION_BLUR REFRACTION=0 SUN_REFLECTION=0 WAVING=0 V_CLOUDS=0 CLOUD_STEPS_AVG=10 CLOUD_VOL_STYLE=1 BLOOM_SAMPLES=4.0 !BLOOM CHROMA_ABER=0 VOL_LIGHT=0 !CLOUD_REFLECTION WATER_ABSORPTION=0.10 COLOR_SCHEME=7 !VANILLA_WATER WATER_COLOR_SOURCE=0 !COLORED_SHADOW MOTION_BLUR_SAMPLES=4 !MATERIAL_GLOSS +profile.shadowless_low= !SHADOW_CASTING SHADOW_QTY_SLIDER=1 SHADOW_DISTANCE_SLIDER=0 REFLECTION_SLIDER=1 !DOF DOF_STRENGTH=0.09 AO=0 AOSTEPS=4 AO_STRENGTH=0.70 AA_TYPE=0 !MOTION_BLUR REFRACTION=1 SUN_REFLECTION=1 WAVING=1 V_CLOUDS=0 CLOUD_STEPS_AVG=10 CLOUD_VOL_STYLE=1 BLOOM_SAMPLES=4.0 !BLOOM CHROMA_ABER=0 VOL_LIGHT=0 !CLOUD_REFLECTION WATER_ABSORPTION=0.10 COLOR_SCHEME=7 !VANILLA_WATER WATER_COLOR_SOURCE=0 !COLORED_SHADOW MOTION_BLUR_SAMPLES=4 !MATERIAL_GLOSS +profile.shadowless_medium= !SHADOW_CASTING SHADOW_QTY_SLIDER=1 SHADOW_DISTANCE_SLIDER=0 REFLECTION_SLIDER=1 !DOF DOF_STRENGTH=0.09 AO=1 AOSTEPS=4 AO_STRENGTH=0.70 AA_TYPE=0 !MOTION_BLUR REFRACTION=1 SUN_REFLECTION=1 WAVING=1 V_CLOUDS=1 CLOUD_STEPS_AVG=10 CLOUD_VOL_STYLE=1 BLOOM_SAMPLES=4.0 !BLOOM CHROMA_ABER=0 VOL_LIGHT=0 !CLOUD_REFLECTION WATER_ABSORPTION=0.10 COLOR_SCHEME=7 !VANILLA_WATER WATER_COLOR_SOURCE=0 !COLORED_SHADOW MOTION_BLUR_SAMPLES=4 MATERIAL_GLOSS +profile.shadowless_high= !SHADOW_CASTING SHADOW_QTY_SLIDER=1 SHADOW_DISTANCE_SLIDER=0 REFLECTION_SLIDER=2 !DOF DOF_STRENGTH=0.09 AO=1 AOSTEPS=4 AO_STRENGTH=0.70 AA_TYPE=2 !MOTION_BLUR REFRACTION=1 SUN_REFLECTION=1 WAVING=1 V_CLOUDS=1 CLOUD_STEPS_AVG=10 CLOUD_VOL_STYLE=1 BLOOM_SAMPLES=4.0 BLOOM CHROMA_ABER=0 VOL_LIGHT=1 CLOUD_REFLECTION WATER_ABSORPTION=0.10 COLOR_SCHEME=7 !VANILLA_WATER WATER_COLOR_SOURCE=0 !COLORED_SHADOW MOTION_BLUR_SAMPLES=4 MATERIAL_GLOSS +profile.low= SHADOW_CASTING SHADOW_QTY_SLIDER=1 SHADOW_DISTANCE_SLIDER=0 REFLECTION_SLIDER=2 !DOF DOF_STRENGTH=0.09 AO=1 AOSTEPS=4 AO_STRENGTH=0.70 AA_TYPE=2 !MOTION_BLUR REFRACTION=1 SUN_REFLECTION=1 WAVING=1 V_CLOUDS=1 CLOUD_STEPS_AVG=10 CLOUD_VOL_STYLE=1 BLOOM_SAMPLES=4.0 BLOOM CHROMA_ABER=0 VOL_LIGHT=1 CLOUD_REFLECTION WATER_ABSORPTION=0.10 COLOR_SCHEME=7 !VANILLA_WATER WATER_COLOR_SOURCE=0 !COLORED_SHADOW MOTION_BLUR_SAMPLES=4 MATERIAL_GLOSS +profile.medium= SHADOW_CASTING SHADOW_QTY_SLIDER=2 SHADOW_DISTANCE_SLIDER=1 REFLECTION_SLIDER=2 !DOF DOF_STRENGTH=0.09 AO=1 AOSTEPS=4 AO_STRENGTH=0.70 AA_TYPE=2 !MOTION_BLUR REFRACTION=1 SUN_REFLECTION=1 WAVING=1 V_CLOUDS=1 CLOUD_STEPS_AVG=10 CLOUD_VOL_STYLE=1 BLOOM_SAMPLES=4.0 BLOOM CHROMA_ABER=0 VOL_LIGHT=1 CLOUD_REFLECTION WATER_ABSORPTION=0.10 COLOR_SCHEME=7 !VANILLA_WATER WATER_COLOR_SOURCE=0 !COLORED_SHADOW MOTION_BLUR_SAMPLES=4 MATERIAL_GLOSS +profile.high= SHADOW_CASTING SHADOW_QTY_SLIDER=2 SHADOW_DISTANCE_SLIDER=1 REFLECTION_SLIDER=2 !DOF DOF_STRENGTH=0.09 AO=1 AOSTEPS=4 AO_STRENGTH=0.70 AA_TYPE=2 !MOTION_BLUR REFRACTION=1 SUN_REFLECTION=1 WAVING=1 V_CLOUDS=1 CLOUD_STEPS_AVG=10 CLOUD_VOL_STYLE=1 BLOOM_SAMPLES=4.0 BLOOM CHROMA_ABER=0 VOL_LIGHT=1 CLOUD_REFLECTION WATER_ABSORPTION=0.10 COLOR_SCHEME=7 !VANILLA_WATER WATER_COLOR_SOURCE=0 COLORED_SHADOW MOTION_BLUR_SAMPLES=4 MATERIAL_GLOSS +profile.extreme= SHADOW_CASTING SHADOW_QTY_SLIDER=3 SHADOW_DISTANCE_SLIDER=2 REFLECTION_SLIDER=2 DOF DOF_STRENGTH=0.09 AO=1 AOSTEPS=4 AO_STRENGTH=0.70 AA_TYPE=2 !MOTION_BLUR REFRACTION=1 SUN_REFLECTION=1 WAVING=1 V_CLOUDS=1 CLOUD_STEPS_AVG=10 CLOUD_VOL_STYLE=1 BLOOM_SAMPLES=4.0 BLOOM CHROMA_ABER=0 VOL_LIGHT=1 CLOUD_REFLECTION WATER_ABSORPTION=0.10 COLOR_SCHEME=7 !VANILLA_WATER WATER_COLOR_SOURCE=0 COLORED_SHADOW MOTION_BLUR_SAMPLES=4 MATERIAL_GLOSS +profile.extremeplus= SHADOW_CASTING SHADOW_QTY_SLIDER=3 SHADOW_DISTANCE_SLIDER=2 REFLECTION_SLIDER=2 DOF DOF_STRENGTH=0.09 AO=1 AOSTEPS=4 AO_STRENGTH=0.70 AA_TYPE=2 MOTION_BLUR REFRACTION=1 SUN_REFLECTION=1 WAVING=1 V_CLOUDS=1 CLOUD_STEPS_AVG=10 CLOUD_VOL_STYLE=1 BLOOM_SAMPLES=4.0 BLOOM CHROMA_ABER=0 VOL_LIGHT=1 CLOUD_REFLECTION WATER_ABSORPTION=0.10 COLOR_SCHEME=7 !VANILLA_WATER WATER_COLOR_SOURCE=0 COLORED_SHADOW MOTION_BLUR_SAMPLES=4 MATERIAL_GLOSS + +# Default forced options +vignette = false +separateAo = false +oldLighting = false +dynamicHandLight = true +oldHandLight = false +underwaterOverlay = false +sun = true +moon = true +frustum.culling = true +shadow.culling = true +particles.before.deferred = true + +#if V_CLOUDS > 0 + clouds = off +#else + clouds = fancy +#endif + +texture.gbuffers.noisetex = textures/water_256_RG_8bit.png + +#if CLOUD_VOL_STYLE == 0 + texture.gbuffers.gaux2 = textures/clouds_natural_512_R_8bit.png + texture.deferred.gaux2 = textures/clouds_natural_512_R_8bit.png +#else + texture.gbuffers.gaux2 = textures/clouds_blocky_512_R_8bit.png + texture.deferred.gaux2 = textures/clouds_blocky_512_R_8bit.png +#endif + +# texture.deferred.colortex0 = textures/bluenoise_64.png + +program.shadow.enabled=SHADOW_CASTING +program.world0/shadow.enabled=SHADOW_CASTING +program.world1/shadow.enabled=SHADOW_CASTING +program.world-1/shadow.enabled=SHADOW_CASTING + +# Config main screen +screen.columns = 3 +screen = ACERCADE WAVING COLOR_SCHEME BLOOM REFLECTION_SLIDER AO SUN_REFLECTION SHADOW_CASTING V_CLOUDS CLOUD_REFLECTION COLORED_SHADOW AA_TYPE REFRACTION VOL_LIGHT DOF MATERIAL_GLOSS CHROMA_ABER MOTION_BLUR [ADVANCED_SCREEN] + +# Sub-screens: +screen.ADVANCED_SCREEN.columns=3 +screen.ADVANCED_SCREEN = [COMPATIBILITY_SCREEN] [ACCESIBILITY_SCREEN] [CUSTOM_COLORS_SCREEN] [SHADOWS_SCREEN] [DOF_SCREEN] [AO_SCREEN] [WATER_SCREEN] [POST_SCREEN] [CLOUDS_SCREEN] [LIGHT_SCREEN] [FOG_SCREEN] [MOTION_BLUR_SCREEN] + +screen.COMPATIBILITY_SCREEN = USE_BASIC_SH BLACK_ENTITY_FIX DEBUG_MODE +screen.SHADOWS_SCREEN = SHADOW_TYPE SHADOW_BLUR SHADOW_DISTANCE_SLIDER SHADOW_QTY_SLIDER +screen.DOF_SCREEN = DOF_STRENGTH +screen.AO_SCREEN = AOSTEPS AO_STRENGTH +screen.WATER_SCREEN = WATER_ABSORPTION WATER_TEXTURE VANILLA_WATER WATER_COLOR_SOURCE WATER_TURBULENCE +screen.POST_SCREEN = BLOOM_SAMPLES CHROMA_ABER_STRENGTH +screen.CLOUDS_SCREEN = CLOUD_SPEED CLOUD_STEPS_AVG CLOUD_VOL_STYLE END_CLOUDS sunPathRotation +screen.LIGHT_SCREEN = AVOID_DARK_LEVEL NIGHT_BRIGHT BLOCKLIGHT_TEMP DYN_HAND_LIGHT +screen.FOG_SCREEN = FOG_ACTIVE FOG_ADJUST NETHER_FOG_DISTANCE +screen.MOTION_BLUR_SCREEN = MOTION_BLUR_STRENGTH MOTION_BLUR_SAMPLES +screen.ACCESIBILITY_SCREEN = COLOR_BLINDNESS COLOR_BLIND_MODE + +screen.CUSTOM_COLORS_DAY.columns=3 +screen.CUSTOM_COLORS_DAY = LIGHT_DAY_COLOR_R LIGHT_DAY_COLOR_G LIGHT_DAY_COLOR_B ZENITH_DAY_COLOR_R ZENITH_DAY_COLOR_G ZENITH_DAY_COLOR_B HORIZON_DAY_COLOR_R HORIZON_DAY_COLOR_G HORIZON_DAY_COLOR_B + +screen.CUSTOM_COLORS_SUNSET.columns=3 +screen.CUSTOM_COLORS_SUNSET = LIGHT_SUNSET_COLOR_R LIGHT_SUNSET_COLOR_G LIGHT_SUNSET_COLOR_B ZENITH_SUNSET_COLOR_R ZENITH_SUNSET_COLOR_G ZENITH_SUNSET_COLOR_B HORIZON_SUNSET_COLOR_R HORIZON_SUNSET_COLOR_G HORIZON_SUNSET_COLOR_B + +screen.CUSTOM_COLORS_NIGHT.columns=3 +screen.CUSTOM_COLORS_NIGHT = LIGHT_NIGHT_COLOR_R LIGHT_NIGHT_COLOR_G LIGHT_NIGHT_COLOR_B ZENITH_NIGHT_COLOR_R ZENITH_NIGHT_COLOR_G ZENITH_NIGHT_COLOR_B HORIZON_NIGHT_COLOR_R HORIZON_NIGHT_COLOR_G HORIZON_NIGHT_COLOR_B + +screen.CUSTOM_COLORS_WATER.columns=3 +screen.CUSTOM_COLORS_WATER = WATER_COLOR_R WATER_COLOR_G WATER_COLOR_B + +screen.CUSTOM_COLORS_NV.columns=3 +screen.CUSTOM_COLORS_NV = NV_COLOR_R NV_COLOR_G NV_COLOR_B + +screen.CUSTOM_COLORS_SCREEN.columns=1 +screen.CUSTOM_COLORS_SCREEN = [CUSTOM_COLORS_DAY] [CUSTOM_COLORS_SUNSET] [CUSTOM_COLORS_NIGHT] [CUSTOM_COLORS_WATER] [CUSTOM_COLORS_NV] OMNI_TINT_CUSTOM + +sliders = SHADOW_DISTANCE_SLIDER SHADOW_QTY_SLIDER REFLECTION_SLIDER SHADOW_BLUR DOF_STRENGTH AOSTEPS AO_STRENGTH MOTION_BLUR_STRENGTH WATER_ABSORPTION CHROMA_ABER_STRENGTH BLOOM_SAMPLES CLOUD_STEPS_AVG sunPathRotation NIGHT_BRIGHT AVOID_DARK_LEVEL WATER_TURBULENCE FOG_ADJUST MOTION_BLUR_SAMPLES BLOCKLIGHT_TEMP LIGHT_DAY_COLOR_R LIGHT_DAY_COLOR_G LIGHT_DAY_COLOR_B ZENITH_DAY_COLOR_R ZENITH_DAY_COLOR_G ZENITH_DAY_COLOR_B HORIZON_DAY_COLOR_R HORIZON_DAY_COLOR_G HORIZON_DAY_COLOR_B LIGHT_SUNSET_COLOR_R LIGHT_SUNSET_COLOR_G LIGHT_SUNSET_COLOR_B ZENITH_SUNSET_COLOR_R ZENITH_SUNSET_COLOR_G ZENITH_SUNSET_COLOR_B HORIZON_SUNSET_COLOR_R HORIZON_SUNSET_COLOR_G HORIZON_SUNSET_COLOR_B LIGHT_NIGHT_COLOR_R LIGHT_NIGHT_COLOR_G LIGHT_NIGHT_COLOR_B ZENITH_NIGHT_COLOR_R ZENITH_NIGHT_COLOR_G ZENITH_NIGHT_COLOR_B HORIZON_NIGHT_COLOR_R HORIZON_NIGHT_COLOR_G HORIZON_NIGHT_COLOR_B WATER_COLOR_R WATER_COLOR_G WATER_COLOR_B NV_COLOR_R NV_COLOR_G NV_COLOR_B OMNI_TINT_CUSTOM + +# Custom uniforms ----- + +# Many values are precalculated to avoid their later or repetitive calculation. + +# Pixel size +uniform.float.pixel_size_x = 1.0 / viewWidth +uniform.float.pixel_size_y = 1.0 / viewHeight +uniform.float.inv_aspect_ratio = 1.0 / aspectRatio + +# Time constants +variable.float.hour_world = worldTime * 0.001 +uniform.float.day_moment = hour_world * 0.04166666666666667 + +# Day color mixer (for shadows) - This formula allows graphing the function that is calculated later. +# It allows setting values depending on the time of day. Particularly interesting are the transitions +# from day to night and vice versa, which are often used to indicate the intensity of the shadow +# (when it is produced by the moon instead of the sun), and other similar things. +# f(x) = min(−((x−.25)^2)∙20 + 1.25, 1) +# g(x) = min(−((x−.75)^2)∙50 + 3.125, 1) + +variable.float.moment_aux = day_moment - 0.25 +variable.float.moment_aux_2 = moment_aux * moment_aux +uniform.float.day_mixer = clamp(-moment_aux_2 * 20.0 + 1.25, 0.0, 1.0) + +variable.float.moment_aux_3 = day_moment - 0.75 +variable.float.moment_aux_4 = moment_aux_3 * moment_aux_3 +uniform.float.night_mixer = clamp(-moment_aux_4 * 50.0 + 3.125, 0.0, 1.0) + +# Day color mixer (for volumetric light) - "Similar to the previous case, but applied to values +# dependent on the time of day for volumetric lighting. + +variable.float.moment_aux_5 = (day_moment * 4.0) - 1.0 +variable.float.moment_aux_6 = moment_aux_5 * moment_aux_5 * moment_aux_5 * moment_aux_5 +variable.float.day_vol_mixer = clamp(((-moment_aux_6 + 1.0) * 7.0) + 1.0, 1.0, 8.0) + +variable.float.moment_aux_7 = (day_moment * 4.0) - 3.0 +variable.float.moment_aux_8 = moment_aux_7 * moment_aux_7 * moment_aux_7 * moment_aux_7 +variable.float.night_vol_mixer = clamp(((-moment_aux_8 + 1.0) * 7.0) + 1.0, 1.0, 8.0) + +uniform.float.vol_mixer = max(day_vol_mixer, night_vol_mixer) + +# Light mix - Similar to the previous cases, a value that depends on the time of day +# to adjust various different parameters. +variable.float.light_mix_a = if((worldTime >= 0 && worldTime < 12485) || worldTime >= 23515, 1.0, 0.0) +variable.float.light_mix_b = if(worldTime >= 12485 && worldTime < 13085, 1.0 - ((worldTime - 12485) * 0.0016666666666666668), 0.0) +variable.float.light_mix_c = 0.0 +variable.float.light_mix_d = if(worldTime >= 22915 && worldTime < 23515, (worldTime - 22915) * 0.0016666666666666668, 0.0) +variable.float.light_mix_e = max(light_mix_a, light_mix_b) +variable.float.light_mix_f = max(light_mix_c, light_mix_d) +uniform.float.light_mix = max(light_mix_e, light_mix_f) + +# Frame modulus +uniform.int.frame_mod = fmod(frameCounter, 10) + +# TAA OFFSET - The offset for TAA is precalculated here. +# It is based on a pentagon (repeated twice as it is a multiple of the 10-frame module.) +# The traversal goes from one vertex of the pentagon to another at the opposite end, +# so that the traversal between different points is maximized and the images vary +# as much as possible from one to the next. It helps to make the flickering of the image +# so fast that it is "absorbed" and better masked by the TAA history. + +#if AA_TYPE > -1 + # Pentagon + uniform.vec2.taa_offset = vec2((if( \ + frame_mod == 0, 0.7071067811865476, \ + frame_mod == 1, -0.5720614028176843, \ + frame_mod == 2, 0.2185080122244104, \ + frame_mod == 3, 0.21850801222441057, \ + frame_mod == 4, -0.5720614028176845, \ + frame_mod == 5, 0.7071067811865476, \ + frame_mod == 6, -0.5720614028176843, \ + frame_mod == 7, 0.2185080122244104, \ + frame_mod == 8, 0.21850801222441057, \ + frame_mod == 9, -0.5720614028176845, \ + 0.0)) * pixel_size_x, \ + (if( \ + frame_mod == 0, 0.0, \ + frame_mod == 1, 0.4156269377774535, \ + frame_mod == 2, -0.6724985119639574, \ + frame_mod == 3, 0.6724985119639574, \ + frame_mod == 4, -0.4156269377774534, \ + frame_mod == 5, 0.0, \ + frame_mod == 6, 0.4156269377774535, \ + frame_mod == 7, -0.6724985119639574, \ + frame_mod == 8, 0.6724985119639574, \ + frame_mod == 9, -0.4156269377774534, \ + 0.0)) * pixel_size_y) + + # Dither shift - When Temporal sampling is active, dithering patterns change over time, + # but not randomly. The dithering pattern remains fixed, but the assigned + # value to each point changes by adding a value defined here, so that they + # "rotate" in a controlled manner within the range of 0 to 1. + # When the sum exceeds 1.0, only the mantissa is taken. The changes are not completely random. + # They are incremental, but not by a fixed amount, but rather a fixed amount + # that was slightly altered by randomness. This only works in recent versions + # of Minecraft/Optifine. For older versions, a mechanism that depends on the + # uniform "frame_mod" is used to calculate the increment. + uniform.float.dither_shift = if( \ + frame_mod == 0, 0.0, \ + frame_mod == 1, 0.9, \ + frame_mod == 2, 0.5, \ + frame_mod == 3, 0.8, \ + frame_mod == 4, 0.3, \ + frame_mod == 5, 0.7, \ + frame_mod == 6, 0.1, \ + frame_mod == 7, 0.6, \ + frame_mod == 8, 0.4, \ + frame_mod == 9, 0.2, \ + 0.0) +#endif + +# FOV - A precalculated value related to FOV +uniform.float.fov_y_inv = 1.0 / atan(1.0 / gbufferProjection.1.1) * 0.5 + +# float horizontalFOV = atan(1.0 / gbufferProjection[0].x); +# float verticalFOV = atan(1.0 / gbufferProjection[1].y); <-- fov_y_inv + +#ifdef DISTANT_HORIZONS +dhShadow.enabled = false +blend.dh_water=SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE ONE_MINUS_SRC_ALPHA +#endif \ No newline at end of file diff --git a/shaders/shaders.properties b/shaders/shaders.properties index 254fd4fd..fb78ef2f 100644 --- a/shaders/shaders.properties +++ b/shaders/shaders.properties @@ -1,15 +1,15 @@ # MakeUp - shader.properties #Profiles -profile.no_effects= SIMPLE_AUTOEXP !SHADOW_CASTING SHADOW_QTY_SLIDER=1 SHADOW_DISTANCE_SLIDER=0 REFLECTION_SLIDER=0 !DOF DOF_STRENGTH=0.09 AO=0 AOSTEPS=4 AO_STRENGTH=0.70 AA_TYPE=0 !MOTION_BLUR REFRACTION=0 SUN_REFLECTION=0 WAVING=0 V_CLOUDS=0 CLOUD_STEPS_AVG=7 CLOUD_VOL_STYLE=0 BLOOM_SAMPLES=4.0 !BLOOM CHROMA_ABER=0 VOL_LIGHT=0 !CLOUD_REFLECTION WATER_ABSORPTION=0.10 COLOR_SCHEME=1 !VANILLA_WATER WATER_COLOR_SOURCE=0 !COLORED_SHADOW MOTION_BLUR_SAMPLES=4 !MATERIAL_GLOSS -profile.shadowless_low= SIMPLE_AUTOEXP !SHADOW_CASTING SHADOW_QTY_SLIDER=1 SHADOW_DISTANCE_SLIDER=0 REFLECTION_SLIDER=1 !DOF DOF_STRENGTH=0.09 AO=0 AOSTEPS=4 AO_STRENGTH=0.70 AA_TYPE=0 !MOTION_BLUR REFRACTION=1 SUN_REFLECTION=1 WAVING=1 V_CLOUDS=0 CLOUD_STEPS_AVG=7 CLOUD_VOL_STYLE=0 BLOOM_SAMPLES=4.0 !BLOOM CHROMA_ABER=0 VOL_LIGHT=0 !CLOUD_REFLECTION WATER_ABSORPTION=0.10 COLOR_SCHEME=1 !VANILLA_WATER WATER_COLOR_SOURCE=0 !COLORED_SHADOW MOTION_BLUR_SAMPLES=4 !MATERIAL_GLOSS -profile.shadowless_medium= SIMPLE_AUTOEXP !SHADOW_CASTING SHADOW_QTY_SLIDER=1 SHADOW_DISTANCE_SLIDER=0 REFLECTION_SLIDER=1 !DOF DOF_STRENGTH=0.09 AO=1 AOSTEPS=4 AO_STRENGTH=0.70 AA_TYPE=0 !MOTION_BLUR REFRACTION=1 SUN_REFLECTION=1 WAVING=1 V_CLOUDS=1 CLOUD_STEPS_AVG=7 CLOUD_VOL_STYLE=0 BLOOM_SAMPLES=4.0 !BLOOM CHROMA_ABER=0 VOL_LIGHT=0 !CLOUD_REFLECTION WATER_ABSORPTION=0.10 COLOR_SCHEME=1 !VANILLA_WATER WATER_COLOR_SOURCE=0 !COLORED_SHADOW MOTION_BLUR_SAMPLES=4 MATERIAL_GLOSS -profile.shadowless_high= !SIMPLE_AUTOEXP !SHADOW_CASTING SHADOW_QTY_SLIDER=1 SHADOW_DISTANCE_SLIDER=0 REFLECTION_SLIDER=2 !DOF DOF_STRENGTH=0.09 AO=1 AOSTEPS=4 AO_STRENGTH=0.70 AA_TYPE=2 !MOTION_BLUR REFRACTION=1 SUN_REFLECTION=1 WAVING=1 V_CLOUDS=1 CLOUD_STEPS_AVG=7 CLOUD_VOL_STYLE=0 BLOOM_SAMPLES=4.0 BLOOM CHROMA_ABER=0 VOL_LIGHT=1 CLOUD_REFLECTION WATER_ABSORPTION=0.10 COLOR_SCHEME=1 !VANILLA_WATER WATER_COLOR_SOURCE=0 !COLORED_SHADOW MOTION_BLUR_SAMPLES=4 MATERIAL_GLOSS -profile.low= !SIMPLE_AUTOEXP SHADOW_CASTING SHADOW_QTY_SLIDER=1 SHADOW_DISTANCE_SLIDER=0 REFLECTION_SLIDER=2 !DOF DOF_STRENGTH=0.09 AO=1 AOSTEPS=4 AO_STRENGTH=0.70 AA_TYPE=2 !MOTION_BLUR REFRACTION=1 SUN_REFLECTION=1 WAVING=1 V_CLOUDS=1 CLOUD_STEPS_AVG=7 CLOUD_VOL_STYLE=0 BLOOM_SAMPLES=4.0 BLOOM CHROMA_ABER=0 VOL_LIGHT=1 CLOUD_REFLECTION WATER_ABSORPTION=0.10 COLOR_SCHEME=1 !VANILLA_WATER WATER_COLOR_SOURCE=0 !COLORED_SHADOW MOTION_BLUR_SAMPLES=4 MATERIAL_GLOSS -profile.medium= !SIMPLE_AUTOEXP SHADOW_CASTING SHADOW_QTY_SLIDER=2 SHADOW_DISTANCE_SLIDER=1 REFLECTION_SLIDER=2 !DOF DOF_STRENGTH=0.09 AO=1 AOSTEPS=4 AO_STRENGTH=0.70 AA_TYPE=2 !MOTION_BLUR REFRACTION=1 SUN_REFLECTION=1 WAVING=1 V_CLOUDS=1 CLOUD_STEPS_AVG=7 CLOUD_VOL_STYLE=0 BLOOM_SAMPLES=4.0 BLOOM CHROMA_ABER=0 VOL_LIGHT=1 CLOUD_REFLECTION WATER_ABSORPTION=0.10 COLOR_SCHEME=1 !VANILLA_WATER WATER_COLOR_SOURCE=0 !COLORED_SHADOW MOTION_BLUR_SAMPLES=4 MATERIAL_GLOSS -profile.high= !SIMPLE_AUTOEXP SHADOW_CASTING SHADOW_QTY_SLIDER=2 SHADOW_DISTANCE_SLIDER=1 REFLECTION_SLIDER=2 !DOF DOF_STRENGTH=0.09 AO=1 AOSTEPS=4 AO_STRENGTH=0.70 AA_TYPE=2 !MOTION_BLUR REFRACTION=1 SUN_REFLECTION=1 WAVING=1 V_CLOUDS=1 CLOUD_STEPS_AVG=7 CLOUD_VOL_STYLE=0 BLOOM_SAMPLES=4.0 BLOOM CHROMA_ABER=0 VOL_LIGHT=1 CLOUD_REFLECTION WATER_ABSORPTION=0.10 COLOR_SCHEME=1 !VANILLA_WATER WATER_COLOR_SOURCE=0 COLORED_SHADOW MOTION_BLUR_SAMPLES=4 MATERIAL_GLOSS -profile.extreme= !SIMPLE_AUTOEXP SHADOW_CASTING SHADOW_QTY_SLIDER=3 SHADOW_DISTANCE_SLIDER=2 REFLECTION_SLIDER=2 DOF DOF_STRENGTH=0.09 AO=1 AOSTEPS=4 AO_STRENGTH=0.70 AA_TYPE=2 !MOTION_BLUR REFRACTION=1 SUN_REFLECTION=1 WAVING=1 V_CLOUDS=1 CLOUD_STEPS_AVG=7 CLOUD_VOL_STYLE=0 BLOOM_SAMPLES=4.0 BLOOM CHROMA_ABER=0 VOL_LIGHT=1 CLOUD_REFLECTION WATER_ABSORPTION=0.10 COLOR_SCHEME=1 !VANILLA_WATER WATER_COLOR_SOURCE=0 COLORED_SHADOW MOTION_BLUR_SAMPLES=4 MATERIAL_GLOSS -profile.extremeplus= !SIMPLE_AUTOEXP SHADOW_CASTING SHADOW_QTY_SLIDER=3 SHADOW_DISTANCE_SLIDER=2 REFLECTION_SLIDER=2 DOF DOF_STRENGTH=0.09 AO=1 AOSTEPS=4 AO_STRENGTH=0.70 AA_TYPE=2 MOTION_BLUR REFRACTION=1 SUN_REFLECTION=1 WAVING=1 V_CLOUDS=1 CLOUD_STEPS_AVG=7 CLOUD_VOL_STYLE=0 BLOOM_SAMPLES=4.0 BLOOM CHROMA_ABER=0 VOL_LIGHT=1 CLOUD_REFLECTION WATER_ABSORPTION=0.10 COLOR_SCHEME=1 !VANILLA_WATER WATER_COLOR_SOURCE=0 COLORED_SHADOW MOTION_BLUR_SAMPLES=4 MATERIAL_GLOSS +profile.no_effects= !SHADOW_CASTING SHADOW_QTY_SLIDER=1 SHADOW_DISTANCE_SLIDER=0 REFLECTION_SLIDER=0 !DOF DOF_STRENGTH=0.09 AO=0 AOSTEPS=4 AO_STRENGTH=0.70 AA_TYPE=0 !MOTION_BLUR REFRACTION=0 SUN_REFLECTION=0 WAVING=0 V_CLOUDS=0 CLOUD_STEPS_AVG=10 CLOUD_VOL_STYLE=0 BLOOM_SAMPLES=4.0 !BLOOM CHROMA_ABER=0 VOL_LIGHT=0 !CLOUD_REFLECTION WATER_ABSORPTION=0.10 COLOR_SCHEME=1 !VANILLA_WATER WATER_COLOR_SOURCE=0 !COLORED_SHADOW MOTION_BLUR_SAMPLES=4 !MATERIAL_GLOSS +profile.shadowless_low= !SHADOW_CASTING SHADOW_QTY_SLIDER=1 SHADOW_DISTANCE_SLIDER=0 REFLECTION_SLIDER=1 !DOF DOF_STRENGTH=0.09 AO=0 AOSTEPS=4 AO_STRENGTH=0.70 AA_TYPE=0 !MOTION_BLUR REFRACTION=1 SUN_REFLECTION=1 WAVING=1 V_CLOUDS=0 CLOUD_STEPS_AVG=10 CLOUD_VOL_STYLE=0 BLOOM_SAMPLES=4.0 !BLOOM CHROMA_ABER=0 VOL_LIGHT=0 !CLOUD_REFLECTION WATER_ABSORPTION=0.10 COLOR_SCHEME=1 !VANILLA_WATER WATER_COLOR_SOURCE=0 !COLORED_SHADOW MOTION_BLUR_SAMPLES=4 !MATERIAL_GLOSS +profile.shadowless_medium= !SHADOW_CASTING SHADOW_QTY_SLIDER=1 SHADOW_DISTANCE_SLIDER=0 REFLECTION_SLIDER=1 !DOF DOF_STRENGTH=0.09 AO=1 AOSTEPS=4 AO_STRENGTH=0.70 AA_TYPE=0 !MOTION_BLUR REFRACTION=1 SUN_REFLECTION=1 WAVING=1 V_CLOUDS=1 CLOUD_STEPS_AVG=10 CLOUD_VOL_STYLE=0 BLOOM_SAMPLES=4.0 !BLOOM CHROMA_ABER=0 VOL_LIGHT=0 !CLOUD_REFLECTION WATER_ABSORPTION=0.10 COLOR_SCHEME=1 !VANILLA_WATER WATER_COLOR_SOURCE=0 !COLORED_SHADOW MOTION_BLUR_SAMPLES=4 MATERIAL_GLOSS +profile.shadowless_high= !SHADOW_CASTING SHADOW_QTY_SLIDER=1 SHADOW_DISTANCE_SLIDER=0 REFLECTION_SLIDER=2 !DOF DOF_STRENGTH=0.09 AO=1 AOSTEPS=4 AO_STRENGTH=0.70 AA_TYPE=2 !MOTION_BLUR REFRACTION=1 SUN_REFLECTION=1 WAVING=1 V_CLOUDS=1 CLOUD_STEPS_AVG=10 CLOUD_VOL_STYLE=0 BLOOM_SAMPLES=4.0 BLOOM CHROMA_ABER=0 VOL_LIGHT=1 CLOUD_REFLECTION WATER_ABSORPTION=0.10 COLOR_SCHEME=1 !VANILLA_WATER WATER_COLOR_SOURCE=0 !COLORED_SHADOW MOTION_BLUR_SAMPLES=4 MATERIAL_GLOSS +profile.low= SHADOW_CASTING SHADOW_QTY_SLIDER=1 SHADOW_DISTANCE_SLIDER=0 REFLECTION_SLIDER=2 !DOF DOF_STRENGTH=0.09 AO=1 AOSTEPS=4 AO_STRENGTH=0.70 AA_TYPE=2 !MOTION_BLUR REFRACTION=1 SUN_REFLECTION=1 WAVING=1 V_CLOUDS=1 CLOUD_STEPS_AVG=10 CLOUD_VOL_STYLE=0 BLOOM_SAMPLES=4.0 BLOOM CHROMA_ABER=0 VOL_LIGHT=1 CLOUD_REFLECTION WATER_ABSORPTION=0.10 COLOR_SCHEME=1 !VANILLA_WATER WATER_COLOR_SOURCE=0 !COLORED_SHADOW MOTION_BLUR_SAMPLES=4 MATERIAL_GLOSS +profile.medium= SHADOW_CASTING SHADOW_QTY_SLIDER=2 SHADOW_DISTANCE_SLIDER=1 REFLECTION_SLIDER=2 !DOF DOF_STRENGTH=0.09 AO=1 AOSTEPS=4 AO_STRENGTH=0.70 AA_TYPE=2 !MOTION_BLUR REFRACTION=1 SUN_REFLECTION=1 WAVING=1 V_CLOUDS=1 CLOUD_STEPS_AVG=10 CLOUD_VOL_STYLE=0 BLOOM_SAMPLES=4.0 BLOOM CHROMA_ABER=0 VOL_LIGHT=1 CLOUD_REFLECTION WATER_ABSORPTION=0.10 COLOR_SCHEME=1 !VANILLA_WATER WATER_COLOR_SOURCE=0 !COLORED_SHADOW MOTION_BLUR_SAMPLES=4 MATERIAL_GLOSS +profile.high= SHADOW_CASTING SHADOW_QTY_SLIDER=2 SHADOW_DISTANCE_SLIDER=1 REFLECTION_SLIDER=2 !DOF DOF_STRENGTH=0.09 AO=1 AOSTEPS=4 AO_STRENGTH=0.70 AA_TYPE=2 !MOTION_BLUR REFRACTION=1 SUN_REFLECTION=1 WAVING=1 V_CLOUDS=1 CLOUD_STEPS_AVG=10 CLOUD_VOL_STYLE=0 BLOOM_SAMPLES=4.0 BLOOM CHROMA_ABER=0 VOL_LIGHT=1 CLOUD_REFLECTION WATER_ABSORPTION=0.10 COLOR_SCHEME=1 !VANILLA_WATER WATER_COLOR_SOURCE=0 COLORED_SHADOW MOTION_BLUR_SAMPLES=4 MATERIAL_GLOSS +profile.extreme= SHADOW_CASTING SHADOW_QTY_SLIDER=3 SHADOW_DISTANCE_SLIDER=2 REFLECTION_SLIDER=2 DOF DOF_STRENGTH=0.09 AO=1 AOSTEPS=4 AO_STRENGTH=0.70 AA_TYPE=2 !MOTION_BLUR REFRACTION=1 SUN_REFLECTION=1 WAVING=1 V_CLOUDS=1 CLOUD_STEPS_AVG=10 CLOUD_VOL_STYLE=0 BLOOM_SAMPLES=4.0 BLOOM CHROMA_ABER=0 VOL_LIGHT=1 CLOUD_REFLECTION WATER_ABSORPTION=0.10 COLOR_SCHEME=1 !VANILLA_WATER WATER_COLOR_SOURCE=0 COLORED_SHADOW MOTION_BLUR_SAMPLES=4 MATERIAL_GLOSS +profile.extremeplus= SHADOW_CASTING SHADOW_QTY_SLIDER=3 SHADOW_DISTANCE_SLIDER=2 REFLECTION_SLIDER=2 DOF DOF_STRENGTH=0.09 AO=1 AOSTEPS=4 AO_STRENGTH=0.70 AA_TYPE=2 MOTION_BLUR REFRACTION=1 SUN_REFLECTION=1 WAVING=1 V_CLOUDS=1 CLOUD_STEPS_AVG=10 CLOUD_VOL_STYLE=0 BLOOM_SAMPLES=4.0 BLOOM CHROMA_ABER=0 VOL_LIGHT=1 CLOUD_REFLECTION WATER_ABSORPTION=0.10 COLOR_SCHEME=1 !VANILLA_WATER WATER_COLOR_SOURCE=0 COLORED_SHADOW MOTION_BLUR_SAMPLES=4 MATERIAL_GLOSS # Default forced options vignette = false @@ -25,17 +25,22 @@ shadow.culling = true particles.before.deferred = true #if V_CLOUDS > 0 - clouds = off + clouds = off #else - clouds = fancy + clouds = fancy #endif texture.gbuffers.noisetex = textures/water_256_RG_8bit.png -texture.gbuffers.colortex2 = textures/clouds_blocky_512_R_8bit.png -texture.gbuffers.gaux2 = textures/clouds_natural_512_R_8bit.png + +#if CLOUD_VOL_STYLE == 0 + texture.gbuffers.gaux2 = textures/clouds_natural_512_R_8bit.png + texture.deferred.gaux2 = textures/clouds_natural_512_R_8bit.png +#else + texture.gbuffers.gaux2 = textures/clouds_blocky_512_R_8bit.png + texture.deferred.gaux2 = textures/clouds_blocky_512_R_8bit.png +#endif + # texture.deferred.colortex0 = textures/bluenoise_64.png -texture.deferred.colortex2 = textures/clouds_blocky_512_R_8bit.png -texture.deferred.gaux2 = textures/clouds_natural_512_R_8bit.png program.shadow.enabled=SHADOW_CASTING program.world0/shadow.enabled=SHADOW_CASTING @@ -44,7 +49,7 @@ program.world-1/shadow.enabled=SHADOW_CASTING # Config main screen screen.columns = 3 -screen = ACERCADE WAVING COLOR_SCHEME BLOOM REFLECTION_SLIDER AO SUN_REFLECTION SHADOW_CASTING V_CLOUDS CLOUD_REFLECTION COLORED_SHADOW AA_TYPE REFRACTION VOL_LIGHT DOF MATERIAL_GLOSS CHROMA_ABER SIMPLE_AUTOEXP MOTION_BLUR [ADVANCED_SCREEN] +screen = ACERCADE WAVING COLOR_SCHEME BLOOM REFLECTION_SLIDER AO SUN_REFLECTION SHADOW_CASTING V_CLOUDS CLOUD_REFLECTION COLORED_SHADOW AA_TYPE REFRACTION VOL_LIGHT DOF MATERIAL_GLOSS CHROMA_ABER MOTION_BLUR [ADVANCED_SCREEN] # Sub-screens: screen.ADVANCED_SCREEN.columns=3 @@ -143,7 +148,7 @@ uniform.int.frame_mod = fmod(frameCounter, 10) # as much as possible from one to the next. It helps to make the flickering of the image # so fast that it is "absorbed" and better masked by the TAA history. -#if AA_TYPE > 0 +#if AA_TYPE > -1 # Pentagon uniform.vec2.taa_offset = vec2((if( \ frame_mod == 0, 0.7071067811865476, \ @@ -181,15 +186,15 @@ uniform.int.frame_mod = fmod(frameCounter, 10) # uniform "frame_mod" is used to calculate the increment. uniform.float.dither_shift = if( \ frame_mod == 0, 0.0, \ - frame_mod == 1, 0.3264030514570224, \ - frame_mod == 2, 0.5978843761620217, \ - frame_mod == 3, 0.881799481995884, \ - frame_mod == 4, 0.22336905198854695, \ - frame_mod == 5, 0.5245207896967208, \ - frame_mod == 6, 0.7563679947882336, \ - frame_mod == 7, 0.08526513298080163, \ - frame_mod == 8, 0.39176966992085394, \ - frame_mod == 9, 0.6919630956391005, \ + frame_mod == 1, 0.9, \ + frame_mod == 2, 0.5, \ + frame_mod == 3, 0.8, \ + frame_mod == 4, 0.3, \ + frame_mod == 5, 0.7, \ + frame_mod == 6, 0.1, \ + frame_mod == 7, 0.6, \ + frame_mod == 8, 0.4, \ + frame_mod == 9, 0.2, \ 0.0) #endif diff --git a/shaders/shadow.fsh b/shaders/shadow.fsh index bf49c99d..82481046 100644 --- a/shaders/shadow.fsh +++ b/shaders/shadow.fsh @@ -6,7 +6,7 @@ Javier Garduño - GNU Lesser General Public License v3.0 */ #ifdef USE_BASIC_SH - #define UNKNOWN_DIM + #define UNKNOWN_DIM #endif #define SHADOW_SHADER diff --git a/shaders/shadow.vsh b/shaders/shadow.vsh index 762cbbf9..454c2ce6 100644 --- a/shaders/shadow.vsh +++ b/shaders/shadow.vsh @@ -6,7 +6,7 @@ Javier Garduño - GNU Lesser General Public License v3.0 */ #ifdef USE_BASIC_SH - #define UNKNOWN_DIM + #define UNKNOWN_DIM #endif #define SHADOW_SHADER diff --git a/shaders/src/basiccoords_vertex.glsl b/shaders/src/basiccoords_vertex.glsl index eaf73b9d..6d438720 100644 --- a/shaders/src/basiccoords_vertex.glsl +++ b/shaders/src/basiccoords_vertex.glsl @@ -1,9 +1,9 @@ texcoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy; #ifndef SHADER_BASIC - #ifdef WATER_F - lmcoord = (gl_TextureMatrix[1] * gl_MultiTexCoord1).xy * 1.0323886639676114; - #else - vec2 lmcoord = (gl_TextureMatrix[1] * gl_MultiTexCoord1).xy * 1.0323886639676114; - #endif + #ifdef WATER_F + lmcoord = (gl_TextureMatrix[1] * gl_MultiTexCoord1).xy * 1.0323886639676114; + #else + vec2 lmcoord = (gl_TextureMatrix[1] * gl_MultiTexCoord1).xy * 1.0323886639676114; + #endif #endif diff --git a/shaders/src/basiccoords_vertex_dh.glsl b/shaders/src/basiccoords_vertex_dh.glsl index 1158678c..3a4479fb 100644 --- a/shaders/src/basiccoords_vertex_dh.glsl +++ b/shaders/src/basiccoords_vertex_dh.glsl @@ -1,7 +1,7 @@ texcoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy; #ifdef DH_WATER - lmcoord = (gl_TextureMatrix[1] * gl_MultiTexCoord1).xy * 1.0323886639676114; + lmcoord = (gl_TextureMatrix[1] * gl_MultiTexCoord1).xy * 1.0323886639676114; #else - vec2 lmcoord = (gl_TextureMatrix[1] * gl_MultiTexCoord1).xy * 1.0323886639676114; + vec2 lmcoord = (gl_TextureMatrix[1] * gl_MultiTexCoord1).xy * 1.0323886639676114; #endif diff --git a/shaders/src/cloudfinalcolor.glsl b/shaders/src/cloudfinalcolor.glsl index 9aff4506..ae993d1d 100644 --- a/shaders/src/cloudfinalcolor.glsl +++ b/shaders/src/cloudfinalcolor.glsl @@ -1,6 +1,6 @@ block_color.rgb = - mix( - block_color.rgb, - texture2D(gaux4, gl_FragCoord.xy * vec2(pixel_size_x, pixel_size_y)).rgb, - clamp(pow(gl_FogFragCoord / (far * 1.66), 1.5), 0.0, 1.0) - ); + mix( + block_color.rgb, + texture2D(gaux4, gl_FragCoord.xy * vec2(pixel_size_x, pixel_size_y)).rgb, + clamp(pow(gl_FogFragCoord / (far * 1.66), 1.5), 0.0, 1.0) + ); diff --git a/shaders/src/finalcolor.glsl b/shaders/src/finalcolor.glsl index 0be66fae..7b0eb5ca 100644 --- a/shaders/src/finalcolor.glsl +++ b/shaders/src/finalcolor.glsl @@ -1,63 +1,41 @@ #if defined THE_END - if (isEyeInWater == 0 && FOG_ADJUST < 15.0) { // In the air - block_color.rgb = - mix( - block_color.rgb, - ZENITH_DAY_COLOR, - frog_adjust - ); - } + if(isEyeInWater == 0 && FOG_ADJUST < 15.0) { // In the air + block_color.rgb = mix(block_color.rgb, ZENITH_DAY_COLOR, frog_adjust); + } #elif defined NETHER - if (isEyeInWater == 0 && FOG_ADJUST < 15.0) { // In the air - block_color.rgb = - mix( - block_color.rgb, - mix(fogColor * 0.1, vec3(1.0), 0.04), - frog_adjust - ); - } + if(isEyeInWater == 0 && FOG_ADJUST < 15.0) { // In the air + block_color.rgb = mix(block_color.rgb, mix(fogColor * 0.1, vec3(1.0), 0.04), frog_adjust); + } #else - #ifdef FOG_ACTIVE // Fog active - #if MC_VERSION >= 11900 - vec3 fog_texture; - if (darknessFactor > .01) { - fog_texture = vec3(0.0); - } else { - fog_texture = texture2D(gaux4, gl_FragCoord.xy * vec2(pixel_size_x, pixel_size_y)).rgb; - } - #else - vec3 fog_texture = texture2D(gaux4, gl_FragCoord.xy * vec2(pixel_size_x, pixel_size_y)).rgb; + #ifdef FOG_ACTIVE // Fog active + #if MC_VERSION >= 11900 + vec3 fog_texture; + if(darknessFactor > .01) { + fog_texture = vec3(0.0); + } else { + fog_texture = texture2D(gaux4, gl_FragCoord.xy * vec2(pixel_size_x, pixel_size_y)).rgb; + } + #else + vec3 fog_texture = texture2D(gaux4, gl_FragCoord.xy * vec2(pixel_size_x, pixel_size_y)).rgb; + #endif + #if defined GBUFFER_ENTITIES + if(isEyeInWater == 0 && entityId != 10101 && FOG_ADJUST < 15.0) { // In the air + block_color.rgb = mix(block_color.rgb, fog_texture, frog_adjust); + } + #else + if(isEyeInWater == 0) { // In the air + block_color.rgb = mix(block_color.rgb, fog_texture, frog_adjust); + } + #endif #endif - #if defined GBUFFER_ENTITIES - if (isEyeInWater == 0 && entityId != 10101 && FOG_ADJUST < 15.0) { // In the air - block_color.rgb = - mix( - block_color.rgb, - fog_texture, - frog_adjust - ); - } - #else - if (isEyeInWater == 0) { // In the air - block_color.rgb = - mix( - block_color.rgb, - fog_texture, - frog_adjust - ); - } - #endif - #endif #endif #if MC_VERSION >= 11900 - if (blindness > .01 || darknessFactor > .01) { - block_color.rgb = - mix(block_color.rgb, vec3(0.0), max(blindness, darknessLightFactor) * gl_FogFragCoord * 0.24); - } + if(blindness > .01 || darknessFactor > .01) { + block_color.rgb = mix(block_color.rgb, vec3(0.0), max(blindness, darknessLightFactor) * gl_FogFragCoord * 0.24); + } #else - if (blindness > .01) { - block_color.rgb = - mix(block_color.rgb, vec3(0.0), blindness * gl_FogFragCoord * 0.24); - } + if(blindness > .01) { + block_color.rgb = mix(block_color.rgb, vec3(0.0), blindness * gl_FogFragCoord * 0.24); + } #endif \ No newline at end of file diff --git a/shaders/src/finalcolor_dh.glsl b/shaders/src/finalcolor_dh.glsl index 14f9a8a7..da35d848 100644 --- a/shaders/src/finalcolor_dh.glsl +++ b/shaders/src/finalcolor_dh.glsl @@ -1,26 +1,15 @@ #if defined DH_WATER - if (isEyeInWater == 0) { - vec3 fog_texture = texture2D(gaux4, gl_FragCoord.xy * vec2(pixel_size_x, pixel_size_y)).rgb; - block_color.rgb = - mix( - block_color.rgb, - fog_texture, - frog_adjust - ); - } + if(isEyeInWater == 0) { + vec3 fog_texture = texture2D(gaux4, gl_FragCoord.xy * vec2(pixel_size_x, pixel_size_y)).rgb; + block_color.rgb = mix(block_color.rgb, fog_texture, frog_adjust); + } #elif defined NETHER - block_color.rgb = - mix( - block_color.rgb, - mix(fogColor * 0.1, vec3(1.0), 0.04), - frog_adjust - ); + #if NETHER_FOG_DISTANCE == 1 + block_color.rgb = mix(fogColor * 0.1, vec3(1.0), 0.04); + #else + block_color.rgb = mix(block_color.rgb, mix(fogColor * 0.1, vec3(1.0), 0.04), frog_adjust); + #endif #else - vec3 fog_texture = texture2D(gaux4, gl_FragCoord.xy * vec2(pixel_size_x, pixel_size_y)).rgb; - block_color.rgb = - mix( - block_color.rgb, - fog_texture, - frog_adjust - ); + vec3 fog_texture = texture2D(gaux4, gl_FragCoord.xy * vec2(pixel_size_x, pixel_size_y)).rgb; + block_color.rgb = mix(block_color.rgb, fog_texture, frog_adjust); #endif \ No newline at end of file diff --git a/shaders/src/fog_vertex.glsl b/shaders/src/fog_vertex.glsl index 567bdca8..90677ef9 100644 --- a/shaders/src/fog_vertex.glsl +++ b/shaders/src/fog_vertex.glsl @@ -1,47 +1,47 @@ #if !defined THE_END && !defined NETHER - // Fog intensity calculation - #if (VOL_LIGHT == 1 && !defined NETHER) || (VOL_LIGHT == 2 && defined SHADOW_CASTING && !defined NETHER) - float fog_density_coeff = FOG_DENSITY * FOG_ADJUST; - #else - float fog_density_coeff = day_blend_float( - FOG_SUNSET, - FOG_DAY, - FOG_NIGHT - ) * FOG_ADJUST; - #endif - - float fog_intensity_coeff = eye_bright_smooth.y * 0.004166666666666667; + // Fog intensity calculation + #if (VOL_LIGHT == 1 && !defined NETHER) || (VOL_LIGHT == 2 && defined SHADOW_CASTING && !defined NETHER) + float fog_density_coeff = FOG_DENSITY * FOG_ADJUST; + #else + float fog_density_coeff = day_blend_float( + FOG_SUNSET, + FOG_DAY, + FOG_NIGHT + ) * FOG_ADJUST; + #endif - #ifdef DISTANT_HORIZONS - frog_adjust = pow( - clamp(gl_FogFragCoord / dhRenderDistance, 0.0, 1.0) * fog_intensity_coeff, - mix(fog_density_coeff * 0.2, 0.5, rainStrength) - ); - #else - frog_adjust = pow( - clamp(gl_FogFragCoord / far, 0.0, 1.0) * fog_intensity_coeff, - mix(fog_density_coeff, 1.0, rainStrength) - ); - #endif + float fog_intensity_coeff = eye_bright_smooth.y * 0.004166666666666667; -#else - #if defined NETHER - #if NETHER_FOG_DISTANCE == 1 - float sight = NETHER_SIGHT; + #ifdef DISTANT_HORIZONS + frog_adjust = pow( + clamp(gl_FogFragCoord / dhRenderDistance, 0.0, 1.0) * fog_intensity_coeff, + mix(fog_density_coeff * 0.15, 0.25, rainStrength) + ); #else - #if defined DISTANT_HORIZONS - float sight = dhRenderDistance; - #else - float sight = NETHER_SIGHT; - #endif + frog_adjust = pow( + clamp(gl_FogFragCoord / far, 0.0, 1.0) * fog_intensity_coeff, + mix(fog_density_coeff, 1.0, rainStrength) + ); #endif - #else - #if defined DISTANT_HORIZONS - float sight = dhRenderDistance; + +#else + #if defined NETHER + #if NETHER_FOG_DISTANCE == 1 + float sight = NETHER_SIGHT; + #else + #if defined DISTANT_HORIZONS + float sight = dhRenderDistance; + #else + float sight = NETHER_SIGHT; + #endif + #endif #else - float sight = far; + #if defined DISTANT_HORIZONS + float sight = dhRenderDistance; + #else + float sight = far; + #endif #endif - #endif - frog_adjust = sqrt(clamp(gl_FogFragCoord / sight, 0.0, 1.0)); + frog_adjust = sqrt(clamp(gl_FogFragCoord / sight, 0.0, 1.0)); #endif diff --git a/shaders/src/hi_sky.glsl b/shaders/src/hi_sky.glsl new file mode 100644 index 00000000..979ae9da --- /dev/null +++ b/shaders/src/hi_sky.glsl @@ -0,0 +1,18 @@ +#ifdef UNKNOWN_DIM + vec3 hi_sky_color_rgb = skyColor; + hi_sky_color = rgb_to_xyz(hi_sky_color_rgb); +#else + vec3 hi_sky_color_rgb = day_blend( + ZENITH_SUNSET_COLOR, + ZENITH_DAY_COLOR, + ZENITH_NIGHT_COLOR + ); + + hi_sky_color_rgb = mix( + hi_sky_color_rgb, + ZENITH_SKY_RAIN_COLOR * luma(hi_sky_color_rgb), + rainStrength + ); + + hi_sky_color = rgb_to_xyz(hi_sky_color_rgb); +#endif \ No newline at end of file diff --git a/shaders/src/light_vertex.glsl b/shaders/src/light_vertex.glsl index 01fe7cf6..6cbd14be 100644 --- a/shaders/src/light_vertex.glsl +++ b/shaders/src/light_vertex.glsl @@ -1,179 +1,148 @@ tint_color = gl_Color; -// Luz nativa (lmcoord.x: candela, lmcoord.y: cielo) ---- +// Native light (lmcoord.x: candel, lmcoord.y: sky) ---- vec2 illumination = lmcoord; -illumination.y = (max(illumination.y, 0.065) - 0.065) * 1.06951871657754; -// Visibilidad del cielo -#ifdef WATER_F - visible_sky = illumination.y; -#else - float visible_sky = illumination.y; -#endif -visible_sky = clamp(visible_sky, 0.0, 1.0); +// Sky visibility +illumination.y = (max(illumination.y, 0.065) - 0.065) * 1.06951871657754; +visible_sky = clamp(illumination.y, 0.0, 1.0); -// Ajuste de intensidad luminosa bajo el agua +// Underwater light adjust if (isEyeInWater == 1) { - visible_sky = (visible_sky * .95) + .05; + visible_sky = (visible_sky * .95) + .05; } #if defined UNKNOWN_DIM - visible_sky = (visible_sky * 0.6) + 0.4; + visible_sky = (visible_sky * 0.6) + 0.4; #endif -// Intensidad y color de luz de candelas +// Candels color and intensity #if defined UNKNOWN_DIM - candle_color = - CANDLE_BASELIGHT * ((illumination.x * illumination.x) + sixth_pow(illumination.x * 1.205)) * 2.75; + candle_color = + CANDLE_BASELIGHT * ((illumination.x * illumination.x) + sixth_pow(illumination.x * 1.205)) * 2.75; #else - candle_color = - CANDLE_BASELIGHT * (pow(illumination.x, 1.5) + sixth_pow(illumination.x * 1.17)); + candle_color = + CANDLE_BASELIGHT * (pow(illumination.x, 1.5) + sixth_pow(illumination.x * 1.17)); #endif #ifdef DYN_HAND_LIGHT - float dist_factor; - float hand_dist; - vec3 hand_light; - - if (heldItemId == 11001 || heldItemId2 == 11001) { // Normal light - hand_dist = (1.0 - clamp((gl_FogFragCoord * 0.06666666666666667), 0.0, 1.0)); - hand_light = CANDLE_BASELIGHT * (pow(hand_dist, 1.5) + sixth_pow(hand_dist * 1.17)); - candle_color = max(candle_color, hand_light); - } else if (heldItemId == 11002 || heldItemId2 == 11002) { - hand_dist = (1.0 - clamp((gl_FogFragCoord * 0.06666666666666667) + 0.5, 0.0, 1.0)); - hand_light = CANDLE_BASELIGHT * (pow(hand_dist, 1.5) + sixth_pow(hand_dist * 1.17)); - candle_color = max(candle_color, hand_light); - } + float dist_factor; + float hand_dist; + vec3 hand_light; + + if (heldItemId == 11001 || heldItemId2 == 11001 || heldItemId == 11002 || heldItemId2 == 11002) { + float dist_offset = (heldItemId == 11001 || heldItemId2 == 11001) ? 0.0 : 0.5; + hand_dist = (1.0 - clamp((gl_FogFragCoord * 0.06666666666666667) + dist_offset, 0.0, 1.0)); + hand_light = CANDLE_BASELIGHT * (pow(hand_dist, 1.5) + sixth_pow(hand_dist * 1.17)); + candle_color = max(candle_color, hand_light); + } #endif candle_color = clamp(candle_color, vec3(0.0), vec3(4.0)); -// Atenuación por dirección de luz directa =================================== +// Atenuation by light angle =================================== #if defined THE_END || defined NETHER - vec3 sun_vec = - normalize(gbufferModelView * vec4(0.0, 0.89442719, 0.4472136, 0.0)).xyz; + vec3 sun_vec = + normalize(gbufferModelView * vec4(0.0, 0.89442719, 0.4472136, 0.0)).xyz; #else - vec3 sun_vec = normalize(sunPosition); + vec3 sun_vec = normalize(sunPosition); #endif vec3 normal = gl_NormalMatrix * gl_Normal; float sun_light_strength; if (length(normal) != 0.0) { // Workaround for undefined normals - normal = normalize(normal); - sun_light_strength = dot(normal, sun_vec); + normal = normalize(normal); + sun_light_strength = dot(normal, sun_vec); } else { - normal = vec3(0.0, 1.0, 0.0); - sun_light_strength = 1.0; + normal = vec3(0.0, 1.0, 0.0); + sun_light_strength = 1.0; } #if defined THE_END || defined NETHER - direct_light_strength = sun_light_strength; + direct_light_strength = sun_light_strength; #else - direct_light_strength = - mix(-sun_light_strength, sun_light_strength, light_mix); + direct_light_strength = + mix(-sun_light_strength, sun_light_strength, light_mix); #endif -// Intensidad por dirección +// Omni light intensity changes by angle float omni_strength = (direct_light_strength * .125) + 1.0; -// Calculamos color de luz directa +// Direct light color #ifdef UNKNOWN_DIM - direct_light_color = texture2D(lightmap, vec2(0.0, lmcoord.y)).rgb; + direct_light_color = texture2D(lightmap, vec2(0.0, lmcoord.y)).rgb; #else - direct_light_color = day_blend( - LIGHT_SUNSET_COLOR, - LIGHT_DAY_COLOR, - LIGHT_NIGHT_COLOR + direct_light_color = day_blend( + LIGHT_SUNSET_COLOR, + LIGHT_DAY_COLOR, + LIGHT_NIGHT_COLOR ); #endif -#ifdef FOLIAGE_V // Puede haber plantas en este shader - float original_direct_light_strength = clamp(direct_light_strength, 0.0, 1.0) * 0.9 + 0.1; - if (is_foliage > .2) { // Es "planta" y se atenúa luz por dirección - #ifdef SHADOW_CASTING - direct_light_strength = sqrt(abs(direct_light_strength)); - #else - direct_light_strength = (clamp(direct_light_strength, 0.0, 1.0) * 0.5 + 0.5) * 0.75; - #endif - - omni_strength = 1.0; - } else { - direct_light_strength = clamp(direct_light_strength, 0.0, 1.0); - } +// Direct light strenght -- +#ifdef FOLIAGE_V // This shader has foliage + float far_direct_light_strength = clamp(direct_light_strength, 0.0, 1.0); + if (mc_Entity.x != ENTITY_LEAVES) { + far_direct_light_strength = far_direct_light_strength * 0.75 + 0.25; + } + if (is_foliage > .2) { // It's foliage, light is atenuated by angle + #ifdef SHADOW_CASTING + direct_light_strength = sqrt(abs(direct_light_strength)); + #else + direct_light_strength = (clamp(direct_light_strength, 0.0, 1.0) * 0.5 + 0.5) * 0.75; + #endif + + omni_strength = 1.0; + } else { + direct_light_strength = clamp(direct_light_strength, 0.0, 1.0); + } #else - direct_light_strength = clamp(direct_light_strength, 0.0, 1.0); + direct_light_strength = clamp(direct_light_strength, 0.0, 1.0); #endif +// Omni light color #if defined THE_END || defined NETHER - omni_light = LIGHT_DAY_COLOR; + omni_light = LIGHT_DAY_COLOR; #else - // Calculamos color de luz ambiental - - vec3 hi_sky_color = day_blend( - ZENITH_SUNSET_COLOR, - ZENITH_DAY_COLOR, - ZENITH_NIGHT_COLOR - ); - - vec3 sky_rain_color = ZENITH_SKY_RAIN_COLOR * luma(hi_sky_color); - - #ifdef SIMPLE_AUTOEXP - direct_light_color = mix( - direct_light_color, - ZENITH_SKY_RAIN_COLOR * luma(direct_light_color), - rainStrength - ); - #else direct_light_color = mix( - direct_light_color, - ZENITH_SKY_RAIN_COLOR * luma(direct_light_color) * 0.4, - rainStrength + direct_light_color, + ZENITH_SKY_RAIN_COLOR * luma(direct_light_color) * 0.4, + rainStrength ); - #endif - - hi_sky_color = mix( - hi_sky_color, - sky_rain_color, - rainStrength - ); - - float sky_day_pseudoluma = color_average(ZENITH_DAY_COLOR); - float current_sky_pseudoluma = color_average(hi_sky_color); - - float luma_ratio = sky_day_pseudoluma / current_sky_pseudoluma; - - // Luz mínima - float omni_minimal = AVOID_DARK_LEVEL * luma_ratio; - float visible_avoid_dark = (pow(visible_sky, 1.5) * (1.0 - omni_minimal)) + omni_minimal; - - omni_light = visible_avoid_dark * omni_strength * - mix(hi_sky_color, direct_light_color * 0.75, OMNI_TINT); + // Minimal light + vec3 omni_color = mix(hi_sky_color_rgb, direct_light_color * 0.45, OMNI_TINT); + float omni_color_luma = color_average(omni_color); + float luma_ratio = AVOID_DARK_LEVEL / omni_color_luma; + vec3 omni_color_min = omni_color * luma_ratio; + omni_color = max(omni_color, omni_color_min); + + omni_light = mix(omni_color_min, omni_color, visible_sky); #endif +// Avoid flat illumination in caves for entities #ifdef CAVEENTITY_V - // Avoid flat illumination in caves for entities - float candle_cave_strength = (direct_light_strength * .5) + .5; - candle_cave_strength = - mix(candle_cave_strength, 1.0, visible_sky); - candle_color *= candle_cave_strength; + float candle_cave_strength = (direct_light_strength * .5) + .5; + candle_cave_strength = + mix(candle_cave_strength, 1.0, visible_sky); + candle_color *= candle_cave_strength; #endif #if !defined THE_END && !defined NETHER - #ifndef SHADOW_CASTING - // Fake shadows - if (isEyeInWater == 0) { - direct_light_strength = mix(0.0, direct_light_strength, pow(visible_sky, 10.0)); - } else { - direct_light_strength = mix(0.0, direct_light_strength, visible_sky); - } - #else - direct_light_strength = mix(0.0, direct_light_strength, visible_sky); - #endif + #ifndef SHADOW_CASTING + // Fake shadows + if (isEyeInWater == 0) { + direct_light_strength = mix(0.0, direct_light_strength, pow(visible_sky, 10.0)); + } else { + direct_light_strength = mix(0.0, direct_light_strength, visible_sky); + } + #else + direct_light_strength = mix(0.0, direct_light_strength, visible_sky); + #endif #endif #ifdef EMMISIVE_V - if (is_fake_emmisor > 0.5) { - direct_light_strength = 10.0; - } + if (is_fake_emmisor > 0.5) { + direct_light_strength = 10.0; + } #endif \ No newline at end of file diff --git a/shaders/src/light_vertex_dh.glsl b/shaders/src/light_vertex_dh.glsl index f9e06a42..0035aa06 100644 --- a/shaders/src/light_vertex_dh.glsl +++ b/shaders/src/light_vertex_dh.glsl @@ -2,58 +2,51 @@ tint_color = gl_Color; // Luz nativa (lmcoord.x: candela, lmcoord.y: cielo) ---- #if defined THE_END || defined NETHER - vec2 illumination = vec2(lmcoord.x, 1.0); + vec2 illumination = vec2(lmcoord.x, 1.0); #else - vec2 illumination = lmcoord; + vec2 illumination = lmcoord; #endif illumination.y = (max(illumination.y, 0.065) - 0.065) * 1.06951871657754; - -// Visibilidad del cielo -#if defined WATER_F || defined DH_WATER - visible_sky = illumination.y; -#else - float visible_sky = illumination.y; -#endif -visible_sky = clamp(visible_sky, 0.0, 1.0); +visible_sky = clamp(illumination.y, 0.0, 1.0); #if defined UNKNOWN_DIM - visible_sky = (visible_sky * 0.6) + 0.4; + visible_sky = (visible_sky * 0.6) + 0.4; #endif // Intensidad y color de luz de candelas #if defined UNKNOWN_DIM - candle_color = - CANDLE_BASELIGHT * ((illumination.x * illumination.x) + sixth_pow(illumination.x * 1.205)) * 2.75; + candle_color = + CANDLE_BASELIGHT * ((illumination.x * illumination.x) + sixth_pow(illumination.x * 1.205)) * 2.75; #else - candle_color = - CANDLE_BASELIGHT * (pow(illumination.x, 1.5) + sixth_pow(illumination.x * 1.17)); + candle_color = + CANDLE_BASELIGHT * (pow(illumination.x, 1.5) + sixth_pow(illumination.x * 1.17)); #endif candle_color = clamp(candle_color, vec3(0.0), vec3(4.0)); // Atenuación por dirección de luz directa =================================== #if defined THE_END || defined NETHER - vec3 sun_vec = - normalize(gbufferModelView * vec4(0.0, 0.89442719, 0.4472136, 0.0)).xyz; + vec3 sun_vec = + normalize(gbufferModelView * vec4(0.0, 0.89442719, 0.4472136, 0.0)).xyz; #else - vec3 sun_vec = normalize(sunPosition); + vec3 sun_vec = normalize(sunPosition); #endif vec3 normal = gl_NormalMatrix * gl_Normal; float sun_light_strength; if (length(normal) != 0.0) { // Workaround for undefined normals - normal = normalize(normal); - sun_light_strength = dot(normal, sun_vec); + normal = normalize(normal); + sun_light_strength = dot(normal, sun_vec); } else { - normal = vec3(0.0, 1.0, 0.0); - sun_light_strength = 1.0; + normal = vec3(0.0, 1.0, 0.0); + sun_light_strength = 1.0; } #if defined THE_END || defined NETHER - direct_light_strength = sun_light_strength; + direct_light_strength = sun_light_strength; #else - direct_light_strength = - mix(-sun_light_strength, sun_light_strength, light_mix); + direct_light_strength = + mix(-sun_light_strength, sun_light_strength, light_mix); #endif // Intensidad por dirección @@ -61,72 +54,45 @@ float omni_strength = (direct_light_strength * .125) + 1.0; // Calculamos color de luz directa #ifdef UNKNOWN_DIM - direct_light_color = texture2D(lightmap, vec2(0.0, lmcoord.y)).rgb; + direct_light_color = texture2D(lightmap, vec2(0.0, lmcoord.y)).rgb; #else - direct_light_color = day_blend( - LIGHT_SUNSET_COLOR, - LIGHT_DAY_COLOR, - LIGHT_NIGHT_COLOR + direct_light_color = day_blend( + LIGHT_SUNSET_COLOR, + LIGHT_DAY_COLOR, + LIGHT_NIGHT_COLOR ); #endif direct_light_strength = clamp(direct_light_strength, 0.0, 1.0); #if defined THE_END || defined NETHER - omni_light = LIGHT_DAY_COLOR; + omni_light = LIGHT_DAY_COLOR; #else - // Calculamos color de luz ambiental - - // vec3 hi_sky_color = day_blend( - // ZENITH_SUNSET_COLOR, - // ZENITH_DAY_COLOR, - // ZENITH_NIGHT_COLOR - // ); - - vec3 sky_rain_color = ZENITH_SKY_RAIN_COLOR * luma(hi_sky_color); - - #ifdef SIMPLE_AUTOEXP direct_light_color = mix( - direct_light_color, - ZENITH_SKY_RAIN_COLOR * luma(direct_light_color), - rainStrength + direct_light_color, + ZENITH_SKY_RAIN_COLOR * luma(direct_light_color) * 0.4, + rainStrength ); - #else - direct_light_color = mix( - direct_light_color, - ZENITH_SKY_RAIN_COLOR * luma(direct_light_color) * 0.4, - rainStrength - ); - #endif - - hi_sky_color = mix( - hi_sky_color, - sky_rain_color, - rainStrength - ); - - float sky_day_pseudoluma = color_average(ZENITH_DAY_COLOR); - float current_sky_pseudoluma = color_average(hi_sky_color); - - float luma_ratio = sky_day_pseudoluma / current_sky_pseudoluma; - - // Luz mínima - float omni_minimal = AVOID_DARK_LEVEL * luma_ratio; - float visible_avoid_dark = (pow(visible_sky, 1.5) * (1.0 - omni_minimal)) + omni_minimal; - omni_light = visible_avoid_dark * omni_strength * - mix(hi_sky_color, direct_light_color * 0.75, OMNI_TINT); + // Minimal light + vec3 omni_color = mix(hi_sky_color_rgb, direct_light_color * 0.45, OMNI_TINT); + float omni_color_luma = color_average(omni_color); + float luma_ratio = AVOID_DARK_LEVEL / omni_color_luma; + vec3 omni_color_min = omni_color * luma_ratio; + omni_color = max(omni_color, omni_color_min); + + omni_light = mix(omni_color_min, omni_color, visible_sky); #endif if (isEyeInWater == 0) { - direct_light_strength = mix(0.0, direct_light_strength, pow(visible_sky, 10.0)); + direct_light_strength = mix(0.0, direct_light_strength, pow(visible_sky, 10.0)); } else { - direct_light_strength = mix(0.0, direct_light_strength, visible_sky); + direct_light_strength = mix(0.0, direct_light_strength, visible_sky); } if (dhMaterialId == DH_BLOCK_ILLUMINATED) { - direct_light_strength = 10.0; + direct_light_strength = 10.0; } else if (dhMaterialId == DH_BLOCK_LAVA) { - direct_light_strength = 1.0; + direct_light_strength = 1.0; } diff --git a/shaders/src/low_sky.glsl b/shaders/src/low_sky.glsl new file mode 100644 index 00000000..40deba36 --- /dev/null +++ b/shaders/src/low_sky.glsl @@ -0,0 +1,18 @@ +#ifdef UNKNOWN_DIM + vec3 low_sky_color_rgb = fogColor; + low_sky_color = rgb_to_xyz(low_sky_color_rgb); +#else + vec3 low_sky_color_rgb = day_blend( + HORIZON_SUNSET_COLOR, + HORIZON_DAY_COLOR, + HORIZON_NIGHT_COLOR + ); + + low_sky_color_rgb = mix( + low_sky_color_rgb, + HORIZON_SKY_RAIN_COLOR * luma(low_sky_color_rgb), + rainStrength + ); + + low_sky_color = rgb_to_xyz(low_sky_color_rgb); +#endif \ No newline at end of file diff --git a/shaders/src/position_vertex.glsl b/shaders/src/position_vertex.glsl index 2f910e51..993d1ffe 100644 --- a/shaders/src/position_vertex.glsl +++ b/shaders/src/position_vertex.glsl @@ -1,90 +1,87 @@ -// Waving plants calculation -#ifdef FOLIAGE_V - #if WAVING == 1 - vec4 sub_position = gl_ModelViewMatrix * gl_Vertex; - vec4 position = - gbufferModelViewInverse * sub_position; - - vec3 worldpos = position.xyz + cameraPosition; - - is_foliage = 0.0; - - if ( - mc_Entity.x == ENTITY_LOWERGRASS || - mc_Entity.x == ENTITY_UPPERGRASS || - mc_Entity.x == ENTITY_SMALLGRASS || - mc_Entity.x == ENTITY_SMALLENTS || - mc_Entity.x == ENTITY_LEAVES) - { - is_foliage = .4; - - float weight = float(gl_MultiTexCoord0.t < mc_midTexCoord.t); - - if (mc_Entity.x == ENTITY_UPPERGRASS) { - weight += 1.0; - } else if (mc_Entity.x == ENTITY_LEAVES) { - weight = .3; - } else if (mc_Entity.x == ENTITY_SMALLENTS && (weight > 0.9 || fract(worldpos.y + 0.0675) > 0.01)) { - weight = 1.0; - } - - weight *= lmcoord.y * lmcoord.y; // Evitamos movimiento en cuevas - position.xyz += wave_move(worldpos.xzy) * weight * (0.03 + (rainStrength * .05)); - } - - gl_Position = gl_ProjectionMatrix * gbufferModelView * position; - - #else // Normal position - is_foliage = 0.0; - if (mc_Entity.x == ENTITY_LOWERGRASS || - mc_Entity.x == ENTITY_UPPERGRASS || - mc_Entity.x == ENTITY_SMALLGRASS || - mc_Entity.x == ENTITY_SMALLENTS || - mc_Entity.x == ENTITY_LEAVES) - { - is_foliage = .4; - } - - vec4 sub_position = gl_ModelViewMatrix * gl_Vertex; - vec4 position = - gbufferModelViewInverse * sub_position; - - gl_Position = gl_ProjectionMatrix * gbufferModelView * position; - - #endif +#ifdef FOLIAGE_V // General block shader (it has foliage) + #if WAVING == 1 + vec4 sub_position = gl_ModelViewMatrix * gl_Vertex; + vec4 position = gbufferModelViewInverse * sub_position; + + is_foliage = 0.0; + + if ( + mc_Entity.x == ENTITY_LOWERGRASS || + mc_Entity.x == ENTITY_UPPERGRASS || + mc_Entity.x == ENTITY_SMALLGRASS || + mc_Entity.x == ENTITY_SMALLENTS || + mc_Entity.x == ENTITY_LEAVES + ) { + vec3 worldpos = position.xyz + cameraPosition; + + is_foliage = 0.4; + + float weight = float(gl_MultiTexCoord0.t < mc_midTexCoord.t); + + if (mc_Entity.x == ENTITY_UPPERGRASS) { + weight += 1.0; + } else if (mc_Entity.x == ENTITY_LEAVES) { + weight = .3; + } else if (mc_Entity.x == ENTITY_SMALLENTS && (weight > 0.9 || fract(worldpos.y + 0.0675) > 0.01)) { + weight = 1.0; + } + + weight *= lmcoord.y * lmcoord.y; // Evitamos movimiento en cuevas + position.xyz += wave_move(worldpos.xzy) * weight * (0.03 + (rainStrength * .05)); + } else if (mc_Entity.x == ENTITY_SMALLENTS_NW) { + is_foliage = 0.4; + } + + gl_Position = gl_ProjectionMatrix * gbufferModelView * position; + + #else // Normal position + is_foliage = 0.0; + if ( + mc_Entity.x == ENTITY_LOWERGRASS || + mc_Entity.x == ENTITY_UPPERGRASS || + mc_Entity.x == ENTITY_SMALLGRASS || + mc_Entity.x == ENTITY_SMALLENTS || + mc_Entity.x == ENTITY_LEAVES || + mc_Entity.x == ENTITY_SMALLENTS_NW + ) { + is_foliage = 0.4; + } + + vec4 sub_position = gl_ModelViewMatrix * gl_Vertex; + vec4 position = gbufferModelViewInverse * sub_position; + + gl_Position = gl_ProjectionMatrix * gbufferModelView * position; + #endif #else - vec4 sub_position = gl_ModelViewMatrix * gl_Vertex; - #ifndef NO_SHADOWS - #ifdef SHADOW_CASTING - vec4 position = - gbufferModelViewInverse * sub_position; + vec4 sub_position = gl_ModelViewMatrix * gl_Vertex; + #ifndef NO_SHADOWS + #ifdef SHADOW_CASTING + vec4 position = gbufferModelViewInverse * sub_position; + #endif #endif - #endif - - gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; + gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; #endif #ifdef EMMISIVE_V - float is_fake_emmisor = 0.0; - if (mc_Entity.x == ENTITY_F_EMMISIVE) - { - is_fake_emmisor = 1.0; - } + float is_fake_emmisor = 0.0; + if (mc_Entity.x == ENTITY_F_EMMISIVE) { + is_fake_emmisor = 1.0; + } #endif #if AA_TYPE > 1 - gl_Position.xy += taa_offset * gl_Position.w; + gl_Position.xy += taa_offset * gl_Position.w; #endif #ifndef SHADER_BASIC - vec3 viewPos = gl_Position.xyz / gl_Position.w; - vec4 homopos = gbufferProjectionInverse * vec4(viewPos, 1.0); - viewPos = homopos.xyz / homopos.w; - #if defined GBUFFER_CLOUDS - gl_FogFragCoord = length(viewPos.xz); - #else - gl_FogFragCoord = length(viewPos.xyz); - #endif + vec4 homopos = gbufferProjectionInverse * vec4(gl_Position.xyz / gl_Position.w, 1.0); + vec3 viewPos = homopos.xyz / homopos.w; + + #if defined GBUFFER_CLOUDS + gl_FogFragCoord = length(viewPos.xz); + #else + gl_FogFragCoord = length(viewPos.xyz); + #endif #endif diff --git a/shaders/src/position_vertex_dh.glsl b/shaders/src/position_vertex_dh.glsl index db216c7d..8fdf1e2e 100644 --- a/shaders/src/position_vertex_dh.glsl +++ b/shaders/src/position_vertex_dh.glsl @@ -1,31 +1,35 @@ position = gbufferModelViewInverse * gl_ModelViewMatrix * gl_Vertex; + +if(dhMaterialId == DH_BLOCK_WATER) { // Water + position.y -= 0.125; +} + + gl_Position = dhProjection * gbufferModelView * position; #if AA_TYPE > 1 - gl_Position.xy += taa_offset * gl_Position.w; + gl_Position.xy += taa_offset * gl_Position.w; #endif // Fog intensity calculation - -float fog_intensity_coeff = eye_bright_smooth.y * 0.004166666666666667; #if (VOL_LIGHT == 1 && !defined NETHER) || (VOL_LIGHT == 2 && defined SHADOW_CASTING && !defined NETHER) - float fog_density_coeff = FOG_DENSITY * FOG_ADJUST; + float fog_density_coeff = FOG_DENSITY * FOG_ADJUST; #else - float fog_density_coeff = day_blend_float( - FOG_SUNSET, - FOG_DAY, - FOG_NIGHT - ) * FOG_ADJUST; + float fog_density_coeff = day_blend_float( + FOG_SUNSET, + FOG_DAY, + FOG_NIGHT + ) * FOG_ADJUST; #endif gl_FogFragCoord = length(position.xyz); #if !defined THE_END && !defined NETHER -frog_adjust = pow( - clamp(gl_FogFragCoord / dhRenderDistance, 0.0, 1.0) * fog_intensity_coeff, - mix(fog_density_coeff * 0.2, 0.5, rainStrength) -); + float fog_intensity_coeff = eye_bright_smooth.y * 0.004166666666666667; + frog_adjust = pow( + clamp(gl_FogFragCoord / dhRenderDistance, 0.0, 1.0) * fog_intensity_coeff, + mix(fog_density_coeff * 0.15, 0.25, rainStrength) + ); #else - frog_adjust = sqrt(clamp(gl_FogFragCoord / dhRenderDistance, 0.0, 1.0)); - // frog_adjust = clamp(gl_FogFragCoord / dhRenderDistance, 0.0, 1.0); + frog_adjust = sqrt(clamp(gl_FogFragCoord / dhRenderDistance, 0.0, 1.0)); #endif diff --git a/shaders/src/position_vertex_water.glsl b/shaders/src/position_vertex_water.glsl new file mode 100644 index 00000000..1d53694e --- /dev/null +++ b/shaders/src/position_vertex_water.glsl @@ -0,0 +1,16 @@ +vec4 position2 = gl_ModelViewMatrix * gl_Vertex; +fragposition = position2.xyz; +vec4 position = gbufferModelViewInverse * position2; +worldposition = position + vec4(cameraPosition.xyz, 0.0); +gl_Position = gl_ProjectionMatrix * gbufferModelView * position; + +#if AA_TYPE > 1 + gl_Position.xy += taa_offset * gl_Position.w; +#endif + +vec4 homopos = gbufferProjectionInverse * vec4(gl_Position.xyz / gl_Position.w, 1.0); +vec3 viewPos = homopos.xyz / homopos.w; +gl_FogFragCoord = length(viewPos); + + + diff --git a/shaders/src/shadow_src_vertex.glsl b/shaders/src/shadow_src_vertex.glsl index e26a737c..881a082f 100644 --- a/shaders/src/shadow_src_vertex.glsl +++ b/shaders/src/shadow_src_vertex.glsl @@ -2,61 +2,61 @@ float NdotL; if (is_foliage > .2) { #ifdef THE_END - vec3 custom_light_pos = normalize(gbufferModelView * vec4(0.0, 0.89442719, 0.4472136, 0.0)).xyz; - NdotL = clamp( - abs(dot(normal, custom_light_pos)), - 0.0, - 1.0 + vec3 custom_light_pos = normalize(gbufferModelView * vec4(0.0, 0.89442719, 0.4472136, 0.0)).xyz; + NdotL = clamp( + abs(dot(normal, custom_light_pos)), + 0.0, + 1.0 ); #else - vec3 normal_light_pos = normalize(shadowLightPosition); - NdotL = clamp( - abs(dot(normal, normal_light_pos)), - 0.0, - 1.0 + vec3 normal_light_pos = normalize(shadowLightPosition); + NdotL = clamp( + abs(dot(normal, normal_light_pos)), + 0.0, + 1.0 ); #endif } else { #ifdef THE_END - NdotL = clamp( - dot( - normal, - normalize(gbufferModelView * vec4(0.0, 0.89442719, 0.4472136, 0.0)).xyz - ), - 0.0, - 1.0 + NdotL = clamp( + dot( + normal, + normalize(gbufferModelView * vec4(0.0, 0.89442719, 0.4472136, 0.0)).xyz + ), + 0.0, + 1.0 ); #else - NdotL = clamp( - dot( - normal, - normalize(shadowLightPosition) - ), - 0.0, - 1.0 + NdotL = clamp( + dot( + normal, + normalize(shadowLightPosition) + ), + 0.0, + 1.0 ); #endif } #else - #ifdef THE_END - float NdotL = clamp( - dot( - normal, - normalize(gbufferModelView * vec4(0.0, 0.89442719, 0.4472136, 0.0)).xyz - ), - 0.0, - 1.0 - ); - #else - float NdotL = clamp( - dot( - normal, - normalize(shadowLightPosition) - ), - 0.0, - 1.0 - ); - #endif + #ifdef THE_END + float NdotL = clamp( + dot( + normal, + normalize(gbufferModelView * vec4(0.0, 0.89442719, 0.4472136, 0.0)).xyz + ), + 0.0, + 1.0 + ); + #else + float NdotL = clamp( + dot( + normal, + normalize(shadowLightPosition) + ), + 0.0, + 1.0 + ); + #endif #endif vec3 shadow_world_normal = normalize(mat3(gbufferModelViewInverse) * (normal * 1024.0) + gbufferModelViewInverse[3].xyz); diff --git a/shaders/src/sky_color_vertex.glsl b/shaders/src/sky_color_vertex.glsl deleted file mode 100644 index aa20d1a6..00000000 --- a/shaders/src/sky_color_vertex.glsl +++ /dev/null @@ -1,28 +0,0 @@ -#ifdef UNKNOWN_DIM - hi_sky_color = skyColor; - low_sky_color = fogColor; -#else - hi_sky_color = day_blend( - ZENITH_SUNSET_COLOR, - ZENITH_DAY_COLOR, - ZENITH_NIGHT_COLOR - ); - - hi_sky_color = mix( - hi_sky_color, - ZENITH_SKY_RAIN_COLOR * luma(hi_sky_color), - rainStrength - ); - - low_sky_color = day_blend( - HORIZON_SUNSET_COLOR, - HORIZON_DAY_COLOR, - HORIZON_NIGHT_COLOR - ); - - low_sky_color = mix( - low_sky_color, - HORIZON_SKY_RAIN_COLOR * luma(low_sky_color), - rainStrength - ); -#endif \ No newline at end of file diff --git a/shaders/src/taa_offset.glsl b/shaders/src/taa_offset.glsl index 0def9390..35d138e1 100644 --- a/shaders/src/taa_offset.glsl +++ b/shaders/src/taa_offset.glsl @@ -1,22 +1,22 @@ #if MC_VERSION >= 11300 - uniform vec2 taa_offset; + uniform vec2 taa_offset; #else - uniform int frame_mod; - uniform float pixel_size_x; - uniform float pixel_size_y; + uniform int frame_mod; + uniform float pixel_size_x; + uniform float pixel_size_y; - vec2[10] offset_array = vec2[10] ( - vec2(0.7071067811865476, 0.0), - vec2(-0.5720614028176843, 0.4156269377774535), - vec2(0.2185080122244104, -0.6724985119639574), - vec2(0.21850801222441057, 0.6724985119639574), - vec2(-0.5720614028176845, -0.4156269377774534), - vec2(0.7071067811865476, 0.0), - vec2(-0.5720614028176843, 0.4156269377774535), - vec2(0.2185080122244104, -0.6724985119639574), - vec2(0.21850801222441057, 0.6724985119639574), - vec2(-0.5720614028176845, -0.4156269377774534) - ); + vec2[10] offset_array = vec2[10] ( + vec2(0.7071067811865476, 0.0), + vec2(-0.5720614028176843, 0.4156269377774535), + vec2(0.2185080122244104, -0.6724985119639574), + vec2(0.21850801222441057, 0.6724985119639574), + vec2(-0.5720614028176845, -0.4156269377774534), + vec2(0.7071067811865476, 0.0), + vec2(-0.5720614028176843, 0.4156269377774535), + vec2(0.2185080122244104, -0.6724985119639574), + vec2(0.21850801222441057, 0.6724985119639574), + vec2(-0.5720614028176845, -0.4156269377774534) + ); - vec2 taa_offset = offset_array[frame_mod] * vec2(pixel_size_x, pixel_size_y); + vec2 taa_offset = offset_array[frame_mod] * vec2(pixel_size_x, pixel_size_y); #endif diff --git a/shaders/src/writebuffers.glsl b/shaders/src/writebuffers.glsl index 143f2e11..8937166e 100644 --- a/shaders/src/writebuffers.glsl +++ b/shaders/src/writebuffers.glsl @@ -1,20 +1,20 @@ #ifdef WATER_F - /* DRAWBUFFERS:1 */ - gl_FragData[0] = block_color; -#elif (defined SPECIAL_TRANS && MC_VERSION >= 11300) || defined GBUFFER_HAND_WATER - /* DRAWBUFFERS:1 */ - gl_FragData[0] = block_color; -#else - #if defined SET_FOG_COLOR - /* DRAWBUFFERS:17 */ - gl_FragData[0] = vec4(block_color, 1.0); - gl_FragData[1] = vec4(block_color, 1.0); - #elif MC_VERSION < 11604 && defined GBUFFER_SKYBASIC - /* DRAWBUFFERS:17 */ + /* DRAWBUFFERS:1 */ gl_FragData[0] = block_color; - gl_FragData[1] = block_color; - #else +#elif (defined SPECIAL_TRANS && MC_VERSION >= 11300) || defined GBUFFER_HAND_WATER /* DRAWBUFFERS:1 */ gl_FragData[0] = block_color; - #endif +#else + #if defined SET_FOG_COLOR + /* DRAWBUFFERS:17 */ + gl_FragData[0] = vec4(block_color, 1.0); + gl_FragData[1] = vec4(block_color, 1.0); + #elif MC_VERSION < 11604 && defined GBUFFER_SKYBASIC + /* DRAWBUFFERS:17 */ + gl_FragData[0] = block_color; + gl_FragData[1] = block_color; + #else + /* DRAWBUFFERS:1 */ + gl_FragData[0] = block_color; + #endif #endif diff --git a/shaders/world0/final.vsh b/shaders/world0/final.vsh index a350d8a6..01602b94 100644 --- a/shaders/world0/final.vsh +++ b/shaders/world0/final.vsh @@ -7,5 +7,4 @@ Javier Garduño - GNU Lesser General Public License v3.0 #define FINAL_SHADER -/* Config, uniforms, ins, outs */ #include "/common/final_vertex.glsl"