diff --git a/shaders/block.properties b/shaders/block.properties index 6672540..00aab5b 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -2,6 +2,10 @@ layer.translucent = minecraft:glass minecraft:glass_pane #endif +#if defined SHADER_GRASS_SETTING && MC_VERSION == 12001 && defined SHADER_GRASS_UNSUPPORTED_FIX +layer.solid = minecraft:grass_block +#endif + block.8=minecraft:water minecraft:flowing_water tfc:flowing_spring_water tfc:spring_water tfc:river_water tfc:salt_water tfc:flowing_salt_water tfc:limewater tfc:flowing_limewater block.11=bamboo bamboo_sapling @@ -32,18 +36,49 @@ block.15=acacia_sapling birch_sapling cherry_sapling crimson_sapling dark_oak_sa #else #define vine_entry vine #endif -block.16=vine_entry -block.17=minecraft:hanging_roots minecraft:weeping_vines minecraft:cave_vines:berries=false \ +block.21=minecraft:hanging_roots minecraft:weeping_vines minecraft:cave_vines:berries=false \ biomesoplenty:spanish_moss +block.22=acacia_fence:north=false:east=false:south=false:west=false bamboo_fence:north=false:east=false:south=false:west=false birch_fence:north=false:east=false:south=false:west=false cherry_fence:north=false:east=false:south=false:west=false crimson_fence:north=false:east=false:south=false:west=false dark_oak_fence:north=false:east=false:south=false:west=false jungle_fence:north=false:east=false:south=false:west=false mangrove_fence:north=false:east=false:south=false:west=false oak_fence:north=false:east=false:south=false:west=false pale_oak_fence:north=false:east=false:south=false:west=false spruce_fence:north=false:east=false:south=false:west=false warped_fence:north=false:east=false:south=false:west=false nether_brick_fence:north=false:east=false:south=false:west=false + +block.23=acacia_fence:north=true:east=false:south=false:west=false bamboo_fence:north=true:east=false:south=false:west=false birch_fence:north=true:east=false:south=false:west=false cherry_fence:north=true:east=false:south=false:west=false crimson_fence:north=true:east=false:south=false:west=false dark_oak_fence:north=true:east=false:south=false:west=false jungle_fence:north=true:east=false:south=false:west=false mangrove_fence:north=true:east=false:south=false:west=false oak_fence:north=true:east=false:south=false:west=false pale_oak_fence:north=true:east=false:south=false:west=false spruce_fence:north=true:east=false:south=false:west=false warped_fence:north=true:east=false:south=false:west=false nether_brick_fence:north=true:east=false:south=false:west=false + +block.24=acacia_fence:north=false:east=true:south=false:west=false bamboo_fence:north=false:east=true:south=false:west=false birch_fence:north=false:east=true:south=false:west=false cherry_fence:north=false:east=true:south=false:west=false crimson_fence:north=false:east=true:south=false:west=false dark_oak_fence:north=false:east=true:south=false:west=false jungle_fence:north=false:east=true:south=false:west=false mangrove_fence:north=false:east=true:south=false:west=false oak_fence:north=false:east=true:south=false:west=false pale_oak_fence:north=false:east=true:south=false:west=false spruce_fence:north=false:east=true:south=false:west=false warped_fence:north=false:east=true:south=false:west=false nether_brick_fence:north=false:east=true:south=false:west=false + +block.25=acacia_fence:north=false:east=false:south=true:west=false bamboo_fence:north=false:east=false:south=true:west=false birch_fence:north=false:east=false:south=true:west=false cherry_fence:north=false:east=false:south=true:west=false crimson_fence:north=false:east=false:south=true:west=false dark_oak_fence:north=false:east=false:south=true:west=false jungle_fence:north=false:east=false:south=true:west=false mangrove_fence:north=false:east=false:south=true:west=false oak_fence:north=false:east=false:south=true:west=false pale_oak_fence:north=false:east=false:south=true:west=false spruce_fence:north=false:east=false:south=true:west=false warped_fence:north=false:east=false:south=true:west=false nether_brick_fence:north=false:east=false:south=true:west=false + +block.26=acacia_fence:north=false:east=false:south=false:west=true bamboo_fence:north=false:east=false:south=false:west=true birch_fence:north=false:east=false:south=false:west=true cherry_fence:north=false:east=false:south=false:west=true crimson_fence:north=false:east=false:south=false:west=true dark_oak_fence:north=false:east=false:south=false:west=true jungle_fence:north=false:east=false:south=false:west=true mangrove_fence:north=false:east=false:south=false:west=true oak_fence:north=false:east=false:south=false:west=true pale_oak_fence:north=false:east=false:south=false:west=true spruce_fence:north=false:east=false:south=false:west=true warped_fence:north=false:east=false:south=false:west=true nether_brick_fence:north=false:east=false:south=false:west=true + +block.27=acacia_fence:north=true:east=false:south=true:west=false bamboo_fence:north=true:east=false:south=true:west=false birch_fence:north=true:east=false:south=true:west=false cherry_fence:north=true:east=false:south=true:west=false crimson_fence:north=true:east=false:south=true:west=false dark_oak_fence:north=true:east=false:south=true:west=false jungle_fence:north=true:east=false:south=true:west=false mangrove_fence:north=true:east=false:south=true:west=false oak_fence:north=true:east=false:south=true:west=false pale_oak_fence:north=true:east=false:south=true:west=false spruce_fence:north=true:east=false:south=true:west=false warped_fence:north=true:east=false:south=true:west=false nether_brick_fence:north=true:east=false:south=true:west=false + +block.28=acacia_fence:north=false:east=true:south=false:west=true bamboo_fence:north=false:east=true:south=false:west=true birch_fence:north=false:east=true:south=false:west=true cherry_fence:north=false:east=true:south=false:west=true crimson_fence:north=false:east=true:south=false:west=true dark_oak_fence:north=false:east=true:south=false:west=true jungle_fence:north=false:east=true:south=false:west=true mangrove_fence:north=false:east=true:south=false:west=true oak_fence:north=false:east=true:south=false:west=true pale_oak_fence:north=false:east=true:south=false:west=true spruce_fence:north=false:east=true:south=false:west=true warped_fence:north=false:east=true:south=false:west=true nether_brick_fence:north=false:east=true:south=false:west=true + +block.29=acacia_fence:north=true:east=true:south=false:west=false bamboo_fence:north=true:east=true:south=false:west=false birch_fence:north=true:east=true:south=false:west=false cherry_fence:north=true:east=true:south=false:west=false crimson_fence:north=true:east=true:south=false:west=false dark_oak_fence:north=true:east=true:south=false:west=false jungle_fence:north=true:east=true:south=false:west=false mangrove_fence:north=true:east=true:south=false:west=false oak_fence:north=true:east=true:south=false:west=false pale_oak_fence:north=true:east=true:south=false:west=false spruce_fence:north=true:east=true:south=false:west=false warped_fence:north=true:east=true:south=false:west=false nether_brick_fence:north=true:east=true:south=false:west=false + +block.30=acacia_fence:north=true:east=false:south=false:west=true bamboo_fence:north=true:east=false:south=false:west=true birch_fence:north=true:east=false:south=false:west=true cherry_fence:north=true:east=false:south=false:west=true crimson_fence:north=true:east=false:south=false:west=true dark_oak_fence:north=true:east=false:south=false:west=true jungle_fence:north=true:east=false:south=false:west=true mangrove_fence:north=true:east=false:south=false:west=true oak_fence:north=true:east=false:south=false:west=true pale_oak_fence:north=true:east=false:south=false:west=true spruce_fence:north=true:east=false:south=false:west=true warped_fence:north=true:east=false:south=false:west=true nether_brick_fence:north=true:east=false:south=false:west=true + +block.31=acacia_fence:north=false:east=true:south=true:west=false bamboo_fence:north=false:east=true:south=true:west=false birch_fence:north=false:east=true:south=true:west=false cherry_fence:north=false:east=true:south=true:west=false crimson_fence:north=false:east=true:south=true:west=false dark_oak_fence:north=false:east=true:south=true:west=false jungle_fence:north=false:east=true:south=true:west=false mangrove_fence:north=false:east=true:south=true:west=false oak_fence:north=false:east=true:south=true:west=false pale_oak_fence:north=false:east=true:south=true:west=false spruce_fence:north=false:east=true:south=true:west=false warped_fence:north=false:east=true:south=true:west=false nether_brick_fence:north=false:east=true:south=true:west=false + +block.32=acacia_fence:north=false:east=false:south=true:west=true bamboo_fence:north=false:east=false:south=true:west=true birch_fence:north=false:east=false:south=true:west=true cherry_fence:north=false:east=false:south=true:west=true crimson_fence:north=false:east=false:south=true:west=true dark_oak_fence:north=false:east=false:south=true:west=true jungle_fence:north=false:east=false:south=true:west=true mangrove_fence:north=false:east=false:south=true:west=true oak_fence:north=false:east=false:south=true:west=true pale_oak_fence:north=false:east=false:south=true:west=true spruce_fence:north=false:east=false:south=true:west=true warped_fence:north=false:east=false:south=true:west=true nether_brick_fence:north=false:east=false:south=true:west=true + +block.33=acacia_fence:north=true:east=true:south=false:west=true bamboo_fence:north=true:east=true:south=false:west=true birch_fence:north=true:east=true:south=false:west=true cherry_fence:north=true:east=true:south=false:west=true crimson_fence:north=true:east=true:south=false:west=true dark_oak_fence:north=true:east=true:south=false:west=true jungle_fence:north=true:east=true:south=false:west=true mangrove_fence:north=true:east=true:south=false:west=true oak_fence:north=true:east=true:south=false:west=true pale_oak_fence:north=true:east=true:south=false:west=true spruce_fence:north=true:east=true:south=false:west=true warped_fence:north=true:east=true:south=false:west=true nether_brick_fence:north=true:east=true:south=false:west=true + +block.34=acacia_fence:north=true:east=true:south=true:west=false bamboo_fence:north=true:east=true:south=true:west=false birch_fence:north=true:east=true:south=true:west=false cherry_fence:north=true:east=true:south=true:west=false crimson_fence:north=true:east=true:south=true:west=false dark_oak_fence:north=true:east=true:south=true:west=false jungle_fence:north=true:east=true:south=true:west=false mangrove_fence:north=true:east=true:south=true:west=false oak_fence:north=true:east=true:south=true:west=false pale_oak_fence:north=true:east=true:south=true:west=false spruce_fence:north=true:east=true:south=true:west=false warped_fence:north=true:east=true:south=true:west=false nether_brick_fence:north=true:east=true:south=true:west=false + +block.35=acacia_fence:north=false:east=true:south=true:west=true bamboo_fence:north=false:east=true:south=true:west=true birch_fence:north=false:east=true:south=true:west=true cherry_fence:north=false:east=true:south=true:west=true crimson_fence:north=false:east=true:south=true:west=true dark_oak_fence:north=false:east=true:south=true:west=true jungle_fence:north=false:east=true:south=true:west=true mangrove_fence:north=false:east=true:south=true:west=true oak_fence:north=false:east=true:south=true:west=true pale_oak_fence:north=false:east=true:south=true:west=true spruce_fence:north=false:east=true:south=true:west=true warped_fence:north=false:east=true:south=true:west=true nether_brick_fence:north=false:east=true:south=true:west=true + +block.36=acacia_fence:north=true:east=false:south=true:west=true bamboo_fence:north=true:east=false:south=true:west=true birch_fence:north=true:east=false:south=true:west=true cherry_fence:north=true:east=false:south=true:west=true crimson_fence:north=true:east=false:south=true:west=true dark_oak_fence:north=true:east=false:south=true:west=true jungle_fence:north=true:east=false:south=true:west=true mangrove_fence:north=true:east=false:south=true:west=true oak_fence:north=true:east=false:south=true:west=true pale_oak_fence:north=true:east=false:south=true:west=true spruce_fence:north=true:east=false:south=true:west=true warped_fence:north=true:east=false:south=true:west=true nether_brick_fence:north=true:east=false:south=true:west=true + +block.37=acacia_fence:north=true:east=true:south=true:west=true bamboo_fence:north=true:east=true:south=true:west=true birch_fence:north=true:east=true:south=true:west=true cherry_fence:north=true:east=true:south=true:west=true crimson_fence:north=true:east=true:south=true:west=true dark_oak_fence:north=true:east=true:south=true:west=true jungle_fence:north=true:east=true:south=true:west=true mangrove_fence:north=true:east=true:south=true:west=true oak_fence:north=true:east=true:south=true:west=true pale_oak_fence:north=true:east=true:south=true:west=true spruce_fence:north=true:east=true:south=true:west=true warped_fence:north=true:east=true:south=true:west=true nether_brick_fence:north=true:east=true:south=true:west=true + ####### ----- FloodFill ----- ####### # Blocks for FloodFill to ignore -block.50=minecraft:frogspawn minecraft:leaf_litter chain ladder lever lightning_rod exposed_lightning_rod weathered_lightning_rod oxidized_lightning_rod waxed_lightning_rod waxed_exposed_lightning_rod waxed_weathered_lightning_rod waxed_oxidized_lightning_rod scaffolding tripwire tripwire_hook candle:lit=false black_candle:lit=false blue_candle:lit=false brown_candle:lit=false cyan_candle:lit=false gray_candle:lit=false green_candle:lit=false light_blue_candle:lit=false light_gray_candle:lit=false lime_candle:lit=false magenta_candle:lit=false orange_candle:lit=false pink_candle:lit=false purple_candle:lit=false red_candle:lit=false white_candle:lit=false yellow_candle:lit=false acacia_button bamboo_button birch_button cherry_button crimson_button dark_oak_button jungle_button mangrove_button oak_button pale_oak_button spruce_button warped_button polished_blackstone_button stone_button rail activator_rail detector_rail powered_rail:powered=false redstone_wire:power=0 repeater:powered=false comparator:powered=false \ +block.50=lever minecraft:iron_chain minecraft:copper_chain minecraft:exposed_copper_chain minecraft:weathered_copper_chain minecraft:oxidized_copper_chain minecraft:waxed_copper_chain minecraft:waxed_exposed_copper_chain minecraft:waxed_weathered_copper_chain minecraft:waxed_oxidized_copper_chain minecraft:frogspawn minecraft:leaf_litter chain ladder lightning_rod exposed_lightning_rod weathered_lightning_rod oxidized_lightning_rod waxed_lightning_rod waxed_exposed_lightning_rod waxed_weathered_lightning_rod waxed_oxidized_lightning_rod scaffolding tripwire tripwire_hook candle:lit=false black_candle:lit=false blue_candle:lit=false brown_candle:lit=false cyan_candle:lit=false gray_candle:lit=false green_candle:lit=false light_blue_candle:lit=false light_gray_candle:lit=false lime_candle:lit=false magenta_candle:lit=false orange_candle:lit=false pink_candle:lit=false purple_candle:lit=false red_candle:lit=false white_candle:lit=false yellow_candle:lit=false acacia_button bamboo_button rail activator_rail detector_rail powered_rail:powered=false redstone_wire:power=0 repeater:powered=false comparator:powered=false \ garnished:walnut_sack garnished:almond_sack garnished:pecan_sack garnished:pistachio_sack garnished:macadamia_sack garnished:peanut_sack garnished:hazelnut_sack garnished:chestnut_sack garnished:cashew_sack \ humility-afm:candlestick_copper_candle:lit=false humility-afm:candlestick_exposed_copper_candle:lit=false humility-afm:candlestick_gold_candle:lit=false humility-afm:candlestick_oxidized_copper_candle:lit=false humility-afm:candlestick_waxed_copper_candle:lit=false humility-afm:candlestick_waxed_exposed_copper_candle:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle:lit=false humility-afm:candlestick_waxed_weathered_copper_candle:lit=false humility-afm:candlestick_weathered_copper_candle:lit=false humility-afm:candlestick_copper_candle_black:lit=false humility-afm:candlestick_copper_candle_blue:lit=false humility-afm:candlestick_copper_candle_brown:lit=false humility-afm:candlestick_copper_candle_cyan:lit=false humility-afm:candlestick_copper_candle_gray:lit=false humility-afm:candlestick_copper_candle_green:lit=false humility-afm:candlestick_copper_candle_light_blue:lit=false humility-afm:candlestick_copper_candle_light_gray:lit=false humility-afm:candlestick_copper_candle_lime:lit=false humility-afm:candlestick_copper_candle_magenta:lit=false humility-afm:candlestick_copper_candle_orange:lit=false humility-afm:candlestick_copper_candle_pink:lit=false humility-afm:candlestick_copper_candle_purple:lit=false humility-afm:candlestick_copper_candle_red:lit=false humility-afm:candlestick_copper_candle_white:lit=false humility-afm:candlestick_copper_candle_yellow:lit=false humility-afm:candlestick_exposed_copper_candle_black:lit=false humility-afm:candlestick_exposed_copper_candle_blue:lit=false humility-afm:candlestick_exposed_copper_candle_brown:lit=false humility-afm:candlestick_exposed_copper_candle_cyan:lit=false humility-afm:candlestick_exposed_copper_candle_gray:lit=false humility-afm:candlestick_exposed_copper_candle_green:lit=false humility-afm:candlestick_exposed_copper_candle_light_blue:lit=false humility-afm:candlestick_exposed_copper_candle_light_gray:lit=false humility-afm:candlestick_exposed_copper_candle_lime:lit=false humility-afm:candlestick_exposed_copper_candle_magenta:lit=false humility-afm:candlestick_exposed_copper_candle_orange:lit=false humility-afm:candlestick_exposed_copper_candle_pink:lit=false humility-afm:candlestick_exposed_copper_candle_purple:lit=false humility-afm:candlestick_exposed_copper_candle_red:lit=false humility-afm:candlestick_exposed_copper_candle_white:lit=false humility-afm:candlestick_exposed_copper_candle_yellow:lit=false humility-afm:candlestick_gold_candle_black:lit=false humility-afm:candlestick_gold_candle_blue:lit=false humility-afm:candlestick_gold_candle_brown:lit=false humility-afm:candlestick_gold_candle_cyan:lit=false humility-afm:candlestick_gold_candle_gray:lit=false humility-afm:candlestick_gold_candle_green:lit=false humility-afm:candlestick_gold_candle_light_blue:lit=false humility-afm:candlestick_gold_candle_light_gray:lit=false humility-afm:candlestick_gold_candle_lime:lit=false humility-afm:candlestick_gold_candle_magenta:lit=false humility-afm:candlestick_gold_candle_orange:lit=false humility-afm:candlestick_gold_candle_pink:lit=false humility-afm:candlestick_gold_candle_purple:lit=false humility-afm:candlestick_gold_candle_red:lit=false humility-afm:candlestick_gold_candle_white:lit=false humility-afm:candlestick_gold_candle_yellow:lit=false humility-afm:candlestick_oxidized_copper_candle_black:lit=false humility-afm:candlestick_oxidized_copper_candle_blue:lit=false humility-afm:candlestick_oxidized_copper_candle_brown:lit=false humility-afm:candlestick_oxidized_copper_candle_cyan:lit=false humility-afm:candlestick_oxidized_copper_candle_gray:lit=false humility-afm:candlestick_oxidized_copper_candle_green:lit=false humility-afm:candlestick_oxidized_copper_candle_light_blue:lit=false humility-afm:candlestick_oxidized_copper_candle_light_gray:lit=false humility-afm:candlestick_oxidized_copper_candle_lime:lit=false humility-afm:candlestick_oxidized_copper_candle_magenta:lit=false humility-afm:candlestick_oxidized_copper_candle_orange:lit=false humility-afm:candlestick_oxidized_copper_candle_pink:lit=false humility-afm:candlestick_oxidized_copper_candle_purple:lit=false humility-afm:candlestick_oxidized_copper_candle_red:lit=false humility-afm:candlestick_oxidized_copper_candle_white:lit=false humility-afm:candlestick_oxidized_copper_candle_yellow:lit=false humility-afm:candlestick_waxed_copper_candle_black:lit=false humility-afm:candlestick_waxed_copper_candle_blue:lit=false humility-afm:candlestick_waxed_copper_candle_brown:lit=false humility-afm:candlestick_waxed_copper_candle_cyan:lit=false humility-afm:candlestick_waxed_copper_candle_gray:lit=false humility-afm:candlestick_waxed_copper_candle_green:lit=false humility-afm:candlestick_waxed_copper_candle_light_blue:lit=false humility-afm:candlestick_waxed_copper_candle_light_gray:lit=false humility-afm:candlestick_waxed_copper_candle_lime:lit=false humility-afm:candlestick_waxed_copper_candle_magenta:lit=false humility-afm:candlestick_waxed_copper_candle_orange:lit=false humility-afm:candlestick_waxed_copper_candle_pink:lit=false humility-afm:candlestick_waxed_copper_candle_purple:lit=false humility-afm:candlestick_waxed_copper_candle_red:lit=false humility-afm:candlestick_waxed_copper_candle_white:lit=false humility-afm:candlestick_waxed_copper_candle_yellow:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_black:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_blue:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_brown:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_cyan:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_gray:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_green:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_light_blue:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_light_gray:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_lime:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_magenta:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_orange:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_pink:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_purple:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_red:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_white:lit=false humility-afm:candlestick_waxed_exposed_copper_candle_yellow:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_black:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_blue:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_brown:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_cyan:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_gray:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_green:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_light_blue:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_light_gray:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_lime:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_magenta:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_orange:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_pink:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_purple:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_red:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_white:lit=false humility-afm:candlestick_waxed_oxidized_copper_candle_yellow:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_black:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_blue:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_brown:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_cyan:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_gray:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_green:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_light_blue:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_light_gray:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_lime:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_magenta:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_orange:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_pink:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_purple:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_red:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_white:lit=false humility-afm:candlestick_waxed_weathered_copper_candle_yellow:lit=false humility-afm:candlestick_weathered_copper_candle_black:lit=false humility-afm:candlestick_weathered_copper_candle_blue:lit=false humility-afm:candlestick_weathered_copper_candle_brown:lit=false humility-afm:candlestick_weathered_copper_candle_cyan:lit=false humility-afm:candlestick_weathered_copper_candle_gray:lit=false humility-afm:candlestick_weathered_copper_candle_green:lit=false humility-afm:candlestick_weathered_copper_candle_light_blue:lit=false humility-afm:candlestick_weathered_copper_candle_light_gray:lit=false humility-afm:candlestick_weathered_copper_candle_lime:lit=false humility-afm:candlestick_weathered_copper_candle_magenta:lit=false humility-afm:candlestick_weathered_copper_candle_orange:lit=false humility-afm:candlestick_weathered_copper_candle_pink:lit=false humility-afm:candlestick_weathered_copper_candle_purple:lit=false humility-afm:candlestick_weathered_copper_candle_red:lit=false humility-afm:candlestick_weathered_copper_candle_white:lit=false humility-afm:candlestick_weathered_copper_candle_yellow:lit=false \ refurbished_furniture:plate \ @@ -53,7 +88,7 @@ block.50=minecraft:frogspawn minecraft:leaf_litter chain ladder lever lightning_ # Blocks that occlude 25% of light -block.51=minecraft:iron_chain minecraft:copper_chain minecraft:exposed_copper_chain minecraft:weathered_copper_chain minecraft:oxidized_copper_chain minecraft:waxed_copper_chain minecraft:waxed_exposed_copper_chain minecraft:waxed_weathered_copper_chain minecraft:waxed_oxidized_copper_chain acacia_fence bamboo_fence birch_fence cherry_fence crimson_fence dark_oak_fence jungle_fence mangrove_fence oak_fence pale_oak_fence spruce_fence warped_fence nether_brick_fence acacia_fence_gate bamboo_fence_gate birch_fence_gate cherry_fence_gate crimson_fence_gate dark_oak_fence_gate jungle_fence_gate mangrove_fence_gate oak_fence_gate pale_oak_fence_gate spruce_fence_gate warped_fence_gate flower_pot potted_acacia_sapling potted_allium potted_azalea_bush potted_bamboo potted_azure_bluet potted_birch_sapling potted_blue_orchid potted_brown_mushroom potted_cactus potted_cornflower potted_crimson_fungus potted_crimson_roots potted_dandelion potted_dark_oak_sapling potted_dead_bush potted_fern potted_flowering_azalea_bush potted_jungle_sapling potted_lily_of_the_valley potted_mangrove_propagule potted_oak_sapling potted_orange_tulip potted_oxeye_daisy potted_pink_tulip potted_poppy potted_red_mushroom potted_red_tulip potted_spruce_sapling potted_torchflower potted_warped_fungus potted_warped_roots potted_white_tulip potted_wither_rose \ +block.51=acacia_fence_gate bamboo_fence_gate birch_fence_gate cherry_fence_gate crimson_fence_gate dark_oak_fence_gate jungle_fence_gate mangrove_fence_gate oak_fence_gate pale_oak_fence_gate spruce_fence_gate warped_fence_gate flower_pot potted_acacia_sapling potted_allium potted_azalea_bush potted_bamboo potted_azure_bluet potted_birch_sapling potted_blue_orchid potted_brown_mushroom potted_cactus potted_cornflower potted_crimson_fungus potted_crimson_roots potted_dandelion potted_dark_oak_sapling potted_dead_bush potted_fern potted_flowering_azalea_bush potted_jungle_sapling potted_lily_of_the_valley potted_mangrove_propagule potted_oak_sapling potted_orange_tulip potted_oxeye_daisy potted_pink_tulip potted_poppy potted_red_mushroom potted_red_tulip potted_spruce_sapling potted_torchflower potted_warped_fungus potted_warped_roots potted_white_tulip potted_wither_rose \ diagonalfences:minecraft/acacia_fence diagonalfences:minecraft/bamboo_fence diagonalfences:minecraft/birch_fence diagonalfences:minecraft/cherry_fence diagonalfences:minecraft/crimson_fence diagonalfences:minecraft/dark_oak_fence diagonalfences:minecraft/jungle_fence diagonalfences:minecraft/mangrove_fence diagonalfences:minecraft/nether_brick_fence diagonalfences:minecraft/oak_fence diagonalfences:minecraft/spruce_fence diagonalfences:minecraft/warped_fence \ gravestones:gravestone gravestones:gravestone_chipped gravestones:gravestone_damaged \ create:stock_link create:sail_frame create:track create:shaft create:cogwheel create:piston_extension_pole create:placard create:redstone_link create:analog_lever create:powered_toggle_latch create:powered_latch create:pulse_timer create:pulse_extender create:pulse_repeater \ @@ -62,7 +97,7 @@ block.51=minecraft:iron_chain minecraft:copper_chain minecraft:exposed_copper_ch humility-afm:cabinet_block_acacia_black humility-afm:cabinet_block_acacia_blue humility-afm:cabinet_block_acacia_brown humility-afm:cabinet_block_acacia_cyan humility-afm:cabinet_block_acacia_gray humility-afm:cabinet_block_acacia_green humility-afm:cabinet_block_acacia_light_blue humility-afm:cabinet_block_acacia_light_gray humility-afm:cabinet_block_acacia_lime humility-afm:cabinet_block_acacia_magenta humility-afm:cabinet_block_acacia_orange humility-afm:cabinet_block_acacia_pink humility-afm:cabinet_block_acacia_purple humility-afm:cabinet_block_acacia_red humility-afm:cabinet_block_acacia_white humility-afm:cabinet_block_acacia_yellow humility-afm:cabinet_block_bamboo_black humility-afm:cabinet_block_bamboo_blue humility-afm:cabinet_block_bamboo_brown humility-afm:cabinet_block_bamboo_cyan humility-afm:cabinet_block_bamboo_gray humility-afm:cabinet_block_bamboo_green humility-afm:cabinet_block_bamboo_light_blue humility-afm:cabinet_block_bamboo_light_gray humility-afm:cabinet_block_bamboo_lime humility-afm:cabinet_block_bamboo_magenta humility-afm:cabinet_block_bamboo_orange humility-afm:cabinet_block_bamboo_pink humility-afm:cabinet_block_bamboo_purple humility-afm:cabinet_block_bamboo_red humility-afm:cabinet_block_bamboo_white humility-afm:cabinet_block_bamboo_yellow humility-afm:cabinet_block_birch_black humility-afm:cabinet_block_birch_blue humility-afm:cabinet_block_birch_brown humility-afm:cabinet_block_birch_cyan humility-afm:cabinet_block_birch_gray humility-afm:cabinet_block_birch_green humility-afm:cabinet_block_birch_light_blue humility-afm:cabinet_block_birch_light_gray humility-afm:cabinet_block_birch_lime humility-afm:cabinet_block_birch_magenta humility-afm:cabinet_block_birch_orange humility-afm:cabinet_block_birch_pink humility-afm:cabinet_block_birch_purple humility-afm:cabinet_block_birch_red humility-afm:cabinet_block_birch_white humility-afm:cabinet_block_birch_yellow humility-afm:cabinet_block_cherry_black humility-afm:cabinet_block_cherry_blue humility-afm:cabinet_block_cherry_brown humility-afm:cabinet_block_cherry_cyan humility-afm:cabinet_block_cherry_gray humility-afm:cabinet_block_cherry_green humility-afm:cabinet_block_cherry_light_blue humility-afm:cabinet_block_cherry_light_gray humility-afm:cabinet_block_cherry_lime humility-afm:cabinet_block_cherry_magenta humility-afm:cabinet_block_cherry_orange humility-afm:cabinet_block_cherry_pink humility-afm:cabinet_block_cherry_purple humility-afm:cabinet_block_cherry_red humility-afm:cabinet_block_cherry_white humility-afm:cabinet_block_cherry_yellow humility-afm:cabinet_block_crimson_black humility-afm:cabinet_block_crimson_blue humility-afm:cabinet_block_crimson_brown humility-afm:cabinet_block_crimson_cyan humility-afm:cabinet_block_crimson_gray humility-afm:cabinet_block_crimson_green humility-afm:cabinet_block_crimson_light_blue humility-afm:cabinet_block_crimson_light_gray humility-afm:cabinet_block_crimson_lime humility-afm:cabinet_block_crimson_magenta humility-afm:cabinet_block_crimson_orange humility-afm:cabinet_block_crimson_pink humility-afm:cabinet_block_crimson_purple humility-afm:cabinet_block_crimson_red humility-afm:cabinet_block_crimson_white humility-afm:cabinet_block_crimson_yellow humility-afm:cabinet_block_dark_oak_black humility-afm:cabinet_block_dark_oak_blue humility-afm:cabinet_block_dark_oak_brown humility-afm:cabinet_block_dark_oak_cyan humility-afm:cabinet_block_dark_oak_gray humility-afm:cabinet_block_dark_oak_green humility-afm:cabinet_block_dark_oak_light_blue humility-afm:cabinet_block_dark_oak_light_gray humility-afm:cabinet_block_dark_oak_lime humility-afm:cabinet_block_dark_oak_magenta humility-afm:cabinet_block_dark_oak_orange humility-afm:cabinet_block_dark_oak_pink humility-afm:cabinet_block_dark_oak_purple humility-afm:cabinet_block_dark_oak_red humility-afm:cabinet_block_dark_oak_white humility-afm:cabinet_block_dark_oak_yellow humility-afm:cabinet_block_jungle_black humility-afm:cabinet_block_jungle_blue humility-afm:cabinet_block_jungle_brown humility-afm:cabinet_block_jungle_cyan humility-afm:cabinet_block_jungle_gray humility-afm:cabinet_block_jungle_green humility-afm:cabinet_block_jungle_light_blue humility-afm:cabinet_block_jungle_light_gray humility-afm:cabinet_block_jungle_lime humility-afm:cabinet_block_jungle_magenta humility-afm:cabinet_block_jungle_orange humility-afm:cabinet_block_jungle_pink humility-afm:cabinet_block_jungle_purple humility-afm:cabinet_block_jungle_red humility-afm:cabinet_block_jungle_white humility-afm:cabinet_block_jungle_yellow humility-afm:cabinet_block_mangrove_black humility-afm:cabinet_block_mangrove_blue humility-afm:cabinet_block_mangrove_brown humility-afm:cabinet_block_mangrove_cyan humility-afm:cabinet_block_mangrove_gray humility-afm:cabinet_block_mangrove_green humility-afm:cabinet_block_mangrove_light_blue humility-afm:cabinet_block_mangrove_light_gray humility-afm:cabinet_block_mangrove_lime humility-afm:cabinet_block_mangrove_magenta humility-afm:cabinet_block_mangrove_orange humility-afm:cabinet_block_mangrove_pink humility-afm:cabinet_block_mangrove_purple humility-afm:cabinet_block_mangrove_red humility-afm:cabinet_block_mangrove_white humility-afm:cabinet_block_mangrove_yellow humility-afm:cabinet_block_oak_black humility-afm:cabinet_block_oak_blue humility-afm:cabinet_block_oak_brown humility-afm:cabinet_block_oak_cyan humility-afm:cabinet_block_oak_gray humility-afm:cabinet_block_oak_green humility-afm:cabinet_block_oak_light_blue humility-afm:cabinet_block_oak_light_gray humility-afm:cabinet_block_oak_lime humility-afm:cabinet_block_oak_magenta humility-afm:cabinet_block_oak_orange humility-afm:cabinet_block_oak_pink humility-afm:cabinet_block_oak_purple humility-afm:cabinet_block_oak_red humility-afm:cabinet_block_oak_white humility-afm:cabinet_block_oak_yellow humility-afm:cabinet_block_pale_oak_black humility-afm:cabinet_block_pale_oak_blue humility-afm:cabinet_block_pale_oak_brown humility-afm:cabinet_block_pale_oak_cyan humility-afm:cabinet_block_pale_oak_gray humility-afm:cabinet_block_pale_oak_green humility-afm:cabinet_block_pale_oak_light_blue humility-afm:cabinet_block_pale_oak_light_gray humility-afm:cabinet_block_pale_oak_lime humility-afm:cabinet_block_pale_oak_magenta humility-afm:cabinet_block_pale_oak_orange humility-afm:cabinet_block_pale_oak_pink humility-afm:cabinet_block_pale_oak_purple humility-afm:cabinet_block_pale_oak_red humility-afm:cabinet_block_pale_oak_white humility-afm:cabinet_block_pale_oak_yellow humility-afm:cabinet_block_spruce_black humility-afm:cabinet_block_spruce_blue humility-afm:cabinet_block_spruce_brown humility-afm:cabinet_block_spruce_cyan humility-afm:cabinet_block_spruce_gray humility-afm:cabinet_block_spruce_green humility-afm:cabinet_block_spruce_light_blue humility-afm:cabinet_block_spruce_light_gray humility-afm:cabinet_block_spruce_lime humility-afm:cabinet_block_spruce_magenta humility-afm:cabinet_block_spruce_orange humility-afm:cabinet_block_spruce_pink humility-afm:cabinet_block_spruce_purple humility-afm:cabinet_block_spruce_red humility-afm:cabinet_block_spruce_white humility-afm:cabinet_block_spruce_yellow humility-afm:cabinet_block_warped_black humility-afm:cabinet_block_warped_blue humility-afm:cabinet_block_warped_brown humility-afm:cabinet_block_warped_cyan humility-afm:cabinet_block_warped_gray humility-afm:cabinet_block_warped_green humility-afm:cabinet_block_warped_light_blue humility-afm:cabinet_block_warped_light_gray humility-afm:cabinet_block_warped_lime humility-afm:cabinet_block_warped_magenta humility-afm:cabinet_block_warped_orange humility-afm:cabinet_block_warped_pink humility-afm:cabinet_block_warped_purple humility-afm:cabinet_block_warped_red humility-afm:cabinet_block_warped_white humility-afm:cabinet_block_warped_yellow humility-afm:cabinet_block_anchor_tree_black humility-afm:cabinet_block_anchor_tree_blue humility-afm:cabinet_block_anchor_tree_brown humility-afm:cabinet_block_anchor_tree_cyan humility-afm:cabinet_block_anchor_tree_gray humility-afm:cabinet_block_anchor_tree_green humility-afm:cabinet_block_anchor_tree_light_blue humility-afm:cabinet_block_anchor_tree_light_gray humility-afm:cabinet_block_anchor_tree_lime humility-afm:cabinet_block_anchor_tree_magenta humility-afm:cabinet_block_anchor_tree_orange humility-afm:cabinet_block_anchor_tree_pink humility-afm:cabinet_block_anchor_tree_purple humility-afm:cabinet_block_anchor_tree_red humility-afm:cabinet_block_anchor_tree_white humility-afm:cabinet_block_anchor_tree_yellow humility-afm:cabinet_block_mushroom_black humility-afm:cabinet_block_mushroom_blue humility-afm:cabinet_block_mushroom_brown humility-afm:cabinet_block_mushroom_cyan humility-afm:cabinet_block_mushroom_gray humility-afm:cabinet_block_mushroom_green humility-afm:cabinet_block_mushroom_light_blue humility-afm:cabinet_block_mushroom_light_gray humility-afm:cabinet_block_mushroom_lime humility-afm:cabinet_block_mushroom_magenta humility-afm:cabinet_block_mushroom_orange humility-afm:cabinet_block_mushroom_pink humility-afm:cabinet_block_mushroom_purple humility-afm:cabinet_block_mushroom_red humility-afm:cabinet_block_mushroom_white humility-afm:cabinet_block_mushroom_yellow humility-afm:cabinet_block_mushroom_fir_black humility-afm:cabinet_block_mushroom_fir_blue humility-afm:cabinet_block_mushroom_fir_brown humility-afm:cabinet_block_mushroom_fir_cyan humility-afm:cabinet_block_mushroom_fir_gray humility-afm:cabinet_block_mushroom_fir_green humility-afm:cabinet_block_mushroom_fir_light_blue humility-afm:cabinet_block_mushroom_fir_light_gray humility-afm:cabinet_block_mushroom_fir_lime humility-afm:cabinet_block_mushroom_fir_magenta humility-afm:cabinet_block_mushroom_fir_orange humility-afm:cabinet_block_mushroom_fir_pink humility-afm:cabinet_block_mushroom_fir_purple humility-afm:cabinet_block_mushroom_fir_red humility-afm:cabinet_block_mushroom_fir_white humility-afm:cabinet_block_mushroom_fir_yellow humility-afm:cabinet_block_nether_sakura_black humility-afm:cabinet_block_nether_sakura_blue humility-afm:cabinet_block_nether_sakura_brown humility-afm:cabinet_block_nether_sakura_cyan humility-afm:cabinet_block_nether_sakura_gray humility-afm:cabinet_block_nether_sakura_green humility-afm:cabinet_block_nether_sakura_light_blue humility-afm:cabinet_block_nether_sakura_light_gray humility-afm:cabinet_block_nether_sakura_lime humility-afm:cabinet_block_nether_sakura_magenta humility-afm:cabinet_block_nether_sakura_orange humility-afm:cabinet_block_nether_sakura_pink humility-afm:cabinet_block_nether_sakura_purple humility-afm:cabinet_block_nether_sakura_red humility-afm:cabinet_block_nether_sakura_white humility-afm:cabinet_block_nether_sakura_yellow humility-afm:cabinet_block_stalagnate_black humility-afm:cabinet_block_stalagnate_blue humility-afm:cabinet_block_stalagnate_brown humility-afm:cabinet_block_stalagnate_cyan humility-afm:cabinet_block_stalagnate_gray humility-afm:cabinet_block_stalagnate_green humility-afm:cabinet_block_stalagnate_light_blue humility-afm:cabinet_block_stalagnate_light_gray humility-afm:cabinet_block_stalagnate_lime humility-afm:cabinet_block_stalagnate_magenta humility-afm:cabinet_block_stalagnate_orange humility-afm:cabinet_block_stalagnate_pink humility-afm:cabinet_block_stalagnate_purple humility-afm:cabinet_block_stalagnate_red humility-afm:cabinet_block_stalagnate_white humility-afm:cabinet_block_stalagnate_yellow humility-afm:cabinet_block_wart_black humility-afm:cabinet_block_wart_blue humility-afm:cabinet_block_wart_brown humility-afm:cabinet_block_wart_cyan humility-afm:cabinet_block_wart_gray humility-afm:cabinet_block_wart_green humility-afm:cabinet_block_wart_light_blue humility-afm:cabinet_block_wart_light_gray humility-afm:cabinet_block_wart_lime humility-afm:cabinet_block_wart_magenta humility-afm:cabinet_block_wart_orange humility-afm:cabinet_block_wart_pink humility-afm:cabinet_block_wart_purple humility-afm:cabinet_block_wart_red humility-afm:cabinet_block_wart_white humility-afm:cabinet_block_wart_yellow humility-afm:cabinet_block_willow_black humility-afm:cabinet_block_willow_blue humility-afm:cabinet_block_willow_brown humility-afm:cabinet_block_willow_cyan humility-afm:cabinet_block_willow_gray humility-afm:cabinet_block_willow_green humility-afm:cabinet_block_willow_light_blue humility-afm:cabinet_block_willow_light_gray humility-afm:cabinet_block_willow_lime humility-afm:cabinet_block_willow_magenta humility-afm:cabinet_block_willow_orange humility-afm:cabinet_block_willow_pink humility-afm:cabinet_block_willow_purple humility-afm:cabinet_block_willow_red humility-afm:cabinet_block_willow_white humility-afm:cabinet_block_willow_yellow humility-afm:illuminated_cabinet_block_acacia_black humility-afm:illuminated_cabinet_block_acacia_blue humility-afm:illuminated_cabinet_block_acacia_brown humility-afm:illuminated_cabinet_block_acacia_cyan humility-afm:illuminated_cabinet_block_acacia_gray humility-afm:illuminated_cabinet_block_acacia_green humility-afm:illuminated_cabinet_block_acacia_light_blue humility-afm:illuminated_cabinet_block_acacia_light_gray humility-afm:illuminated_cabinet_block_acacia_lime humility-afm:illuminated_cabinet_block_acacia_magenta humility-afm:illuminated_cabinet_block_acacia_orange humility-afm:illuminated_cabinet_block_acacia_pink humility-afm:illuminated_cabinet_block_acacia_purple humility-afm:illuminated_cabinet_block_acacia_red humility-afm:illuminated_cabinet_block_acacia_white humility-afm:illuminated_cabinet_block_acacia_yellow humility-afm:illuminated_cabinet_block_bamboo_black humility-afm:illuminated_cabinet_block_bamboo_blue humility-afm:illuminated_cabinet_block_bamboo_brown humility-afm:illuminated_cabinet_block_bamboo_cyan humility-afm:illuminated_cabinet_block_bamboo_gray humility-afm:illuminated_cabinet_block_bamboo_green humility-afm:illuminated_cabinet_block_bamboo_light_blue humility-afm:illuminated_cabinet_block_bamboo_light_gray humility-afm:illuminated_cabinet_block_bamboo_lime humility-afm:illuminated_cabinet_block_bamboo_magenta humility-afm:illuminated_cabinet_block_bamboo_orange humility-afm:illuminated_cabinet_block_bamboo_pink humility-afm:illuminated_cabinet_block_bamboo_purple humility-afm:illuminated_cabinet_block_bamboo_red humility-afm:illuminated_cabinet_block_bamboo_white humility-afm:illuminated_cabinet_block_bamboo_yellow humility-afm:illuminated_cabinet_block_birch_black humility-afm:illuminated_cabinet_block_birch_blue humility-afm:illuminated_cabinet_block_birch_brown humility-afm:illuminated_cabinet_block_birch_cyan humility-afm:illuminated_cabinet_block_birch_gray humility-afm:illuminated_cabinet_block_birch_green humility-afm:illuminated_cabinet_block_birch_light_blue humility-afm:illuminated_cabinet_block_birch_light_gray humility-afm:illuminated_cabinet_block_birch_lime humility-afm:illuminated_cabinet_block_birch_magenta humility-afm:illuminated_cabinet_block_birch_orange humility-afm:illuminated_cabinet_block_birch_pink humility-afm:illuminated_cabinet_block_birch_purple humility-afm:illuminated_cabinet_block_birch_red humility-afm:illuminated_cabinet_block_birch_white humility-afm:illuminated_cabinet_block_birch_yellow humility-afm:illuminated_cabinet_block_cherry_black humility-afm:illuminated_cabinet_block_cherry_blue humility-afm:illuminated_cabinet_block_cherry_brown humility-afm:illuminated_cabinet_block_cherry_cyan humility-afm:illuminated_cabinet_block_cherry_gray humility-afm:illuminated_cabinet_block_cherry_green humility-afm:illuminated_cabinet_block_cherry_light_blue humility-afm:illuminated_cabinet_block_cherry_light_gray humility-afm:illuminated_cabinet_block_cherry_lime humility-afm:illuminated_cabinet_block_cherry_magenta humility-afm:illuminated_cabinet_block_cherry_orange humility-afm:illuminated_cabinet_block_cherry_pink humility-afm:illuminated_cabinet_block_cherry_purple humility-afm:illuminated_cabinet_block_cherry_red humility-afm:illuminated_cabinet_block_cherry_white humility-afm:illuminated_cabinet_block_cherry_yellow humility-afm:illuminated_cabinet_block_crimson_black humility-afm:illuminated_cabinet_block_crimson_blue humility-afm:illuminated_cabinet_block_crimson_brown humility-afm:illuminated_cabinet_block_crimson_cyan humility-afm:illuminated_cabinet_block_crimson_gray humility-afm:illuminated_cabinet_block_crimson_green humility-afm:illuminated_cabinet_block_crimson_light_blue humility-afm:illuminated_cabinet_block_crimson_light_gray humility-afm:illuminated_cabinet_block_crimson_lime humility-afm:illuminated_cabinet_block_crimson_magenta humility-afm:illuminated_cabinet_block_crimson_orange humility-afm:illuminated_cabinet_block_crimson_pink humility-afm:illuminated_cabinet_block_crimson_purple humility-afm:illuminated_cabinet_block_crimson_red humility-afm:illuminated_cabinet_block_crimson_white humility-afm:illuminated_cabinet_block_crimson_yellow humility-afm:illuminated_cabinet_block_dark_oak_black humility-afm:illuminated_cabinet_block_dark_oak_blue humility-afm:illuminated_cabinet_block_dark_oak_brown humility-afm:illuminated_cabinet_block_dark_oak_cyan humility-afm:illuminated_cabinet_block_dark_oak_gray humility-afm:illuminated_cabinet_block_dark_oak_green humility-afm:illuminated_cabinet_block_dark_oak_light_blue humility-afm:illuminated_cabinet_block_dark_oak_light_gray humility-afm:illuminated_cabinet_block_dark_oak_lime humility-afm:illuminated_cabinet_block_dark_oak_magenta humility-afm:illuminated_cabinet_block_dark_oak_orange humility-afm:illuminated_cabinet_block_dark_oak_pink humility-afm:illuminated_cabinet_block_dark_oak_purple humility-afm:illuminated_cabinet_block_dark_oak_red humility-afm:illuminated_cabinet_block_dark_oak_white humility-afm:illuminated_cabinet_block_dark_oak_yellow humility-afm:illuminated_cabinet_block_jungle_black humility-afm:illuminated_cabinet_block_jungle_blue humility-afm:illuminated_cabinet_block_jungle_brown humility-afm:illuminated_cabinet_block_jungle_cyan humility-afm:illuminated_cabinet_block_jungle_gray humility-afm:illuminated_cabinet_block_jungle_green humility-afm:illuminated_cabinet_block_jungle_light_blue humility-afm:illuminated_cabinet_block_jungle_light_gray humility-afm:illuminated_cabinet_block_jungle_lime humility-afm:illuminated_cabinet_block_jungle_magenta humility-afm:illuminated_cabinet_block_jungle_orange humility-afm:illuminated_cabinet_block_jungle_pink humility-afm:illuminated_cabinet_block_jungle_purple humility-afm:illuminated_cabinet_block_jungle_red humility-afm:illuminated_cabinet_block_jungle_white humility-afm:illuminated_cabinet_block_jungle_yellow humility-afm:illuminated_cabinet_block_mangrove_black humility-afm:illuminated_cabinet_block_mangrove_blue humility-afm:illuminated_cabinet_block_mangrove_brown humility-afm:illuminated_cabinet_block_mangrove_cyan humility-afm:illuminated_cabinet_block_mangrove_gray humility-afm:illuminated_cabinet_block_mangrove_green humility-afm:illuminated_cabinet_block_mangrove_light_blue humility-afm:illuminated_cabinet_block_mangrove_light_gray humility-afm:illuminated_cabinet_block_mangrove_lime humility-afm:illuminated_cabinet_block_mangrove_magenta humility-afm:illuminated_cabinet_block_mangrove_orange humility-afm:illuminated_cabinet_block_mangrove_pink humility-afm:illuminated_cabinet_block_mangrove_purple humility-afm:illuminated_cabinet_block_mangrove_red humility-afm:illuminated_cabinet_block_mangrove_white humility-afm:illuminated_cabinet_block_mangrove_yellow humility-afm:illuminated_cabinet_block_oak_black humility-afm:illuminated_cabinet_block_oak_blue humility-afm:illuminated_cabinet_block_oak_brown humility-afm:illuminated_cabinet_block_oak_cyan humility-afm:illuminated_cabinet_block_oak_gray humility-afm:illuminated_cabinet_block_oak_green humility-afm:illuminated_cabinet_block_oak_light_blue humility-afm:illuminated_cabinet_block_oak_light_gray humility-afm:illuminated_cabinet_block_oak_lime humility-afm:illuminated_cabinet_block_oak_magenta humility-afm:illuminated_cabinet_block_oak_orange humility-afm:illuminated_cabinet_block_oak_pink humility-afm:illuminated_cabinet_block_oak_purple humility-afm:illuminated_cabinet_block_oak_red humility-afm:illuminated_cabinet_block_oak_white humility-afm:illuminated_cabinet_block_oak_yellow humility-afm:illuminated_cabinet_block_pale_oak_black humility-afm:illuminated_cabinet_block_pale_oak_blue humility-afm:illuminated_cabinet_block_pale_oak_brown humility-afm:illuminated_cabinet_block_pale_oak_cyan humility-afm:illuminated_cabinet_block_pale_oak_gray humility-afm:illuminated_cabinet_block_pale_oak_green humility-afm:illuminated_cabinet_block_pale_oak_light_blue humility-afm:illuminated_cabinet_block_pale_oak_light_gray humility-afm:illuminated_cabinet_block_pale_oak_lime humility-afm:illuminated_cabinet_block_pale_oak_magenta humility-afm:illuminated_cabinet_block_pale_oak_orange humility-afm:illuminated_cabinet_block_pale_oak_pink humility-afm:illuminated_cabinet_block_pale_oak_purple humility-afm:illuminated_cabinet_block_pale_oak_red humility-afm:illuminated_cabinet_block_pale_oak_white humility-afm:illuminated_cabinet_block_pale_oak_yellow humility-afm:illuminated_cabinet_block_spruce_black humility-afm:illuminated_cabinet_block_spruce_blue humility-afm:illuminated_cabinet_block_spruce_brown humility-afm:illuminated_cabinet_block_spruce_cyan humility-afm:illuminated_cabinet_block_spruce_gray humility-afm:illuminated_cabinet_block_spruce_green humility-afm:illuminated_cabinet_block_spruce_light_blue humility-afm:illuminated_cabinet_block_spruce_light_gray humility-afm:illuminated_cabinet_block_spruce_lime humility-afm:illuminated_cabinet_block_spruce_magenta humility-afm:illuminated_cabinet_block_spruce_orange humility-afm:illuminated_cabinet_block_spruce_pink humility-afm:illuminated_cabinet_block_spruce_purple humility-afm:illuminated_cabinet_block_spruce_red humility-afm:illuminated_cabinet_block_spruce_white humility-afm:illuminated_cabinet_block_spruce_yellow humility-afm:illuminated_cabinet_block_warped_black humility-afm:illuminated_cabinet_block_warped_blue humility-afm:illuminated_cabinet_block_warped_brown humility-afm:illuminated_cabinet_block_warped_cyan humility-afm:illuminated_cabinet_block_warped_gray humility-afm:illuminated_cabinet_block_warped_green humility-afm:illuminated_cabinet_block_warped_light_blue humility-afm:illuminated_cabinet_block_warped_light_gray humility-afm:illuminated_cabinet_block_warped_lime humility-afm:illuminated_cabinet_block_warped_magenta humility-afm:illuminated_cabinet_block_warped_orange humility-afm:illuminated_cabinet_block_warped_pink humility-afm:illuminated_cabinet_block_warped_purple humility-afm:illuminated_cabinet_block_warped_red humility-afm:illuminated_cabinet_block_warped_white humility-afm:illuminated_cabinet_block_warped_yellow humility-afm:illuminated_cabinet_block_anchor_tree_black humility-afm:illuminated_cabinet_block_anchor_tree_blue humility-afm:illuminated_cabinet_block_anchor_tree_brown humility-afm:illuminated_cabinet_block_anchor_tree_cyan humility-afm:illuminated_cabinet_block_anchor_tree_gray humility-afm:illuminated_cabinet_block_anchor_tree_green humility-afm:illuminated_cabinet_block_anchor_tree_light_blue humility-afm:illuminated_cabinet_block_anchor_tree_light_gray humility-afm:illuminated_cabinet_block_anchor_tree_lime humility-afm:illuminated_cabinet_block_anchor_tree_magenta humility-afm:illuminated_cabinet_block_anchor_tree_orange humility-afm:illuminated_cabinet_block_anchor_tree_pink humility-afm:illuminated_cabinet_block_anchor_tree_purple humility-afm:illuminated_cabinet_block_anchor_tree_red humility-afm:illuminated_cabinet_block_anchor_tree_white humility-afm:illuminated_cabinet_block_anchor_tree_yellow humility-afm:illuminated_cabinet_block_mushroom_black humility-afm:illuminated_cabinet_block_mushroom_blue humility-afm:illuminated_cabinet_block_mushroom_brown humility-afm:illuminated_cabinet_block_mushroom_cyan humility-afm:illuminated_cabinet_block_mushroom_gray humility-afm:illuminated_cabinet_block_mushroom_green humility-afm:illuminated_cabinet_block_mushroom_light_blue humility-afm:illuminated_cabinet_block_mushroom_light_gray humility-afm:illuminated_cabinet_block_mushroom_lime humility-afm:illuminated_cabinet_block_mushroom_magenta humility-afm:illuminated_cabinet_block_mushroom_orange humility-afm:illuminated_cabinet_block_mushroom_pink humility-afm:illuminated_cabinet_block_mushroom_purple humility-afm:illuminated_cabinet_block_mushroom_red humility-afm:illuminated_cabinet_block_mushroom_white humility-afm:illuminated_cabinet_block_mushroom_yellow humility-afm:illuminated_cabinet_block_mushroom_fir_black humility-afm:illuminated_cabinet_block_mushroom_fir_blue humility-afm:illuminated_cabinet_block_mushroom_fir_brown humility-afm:illuminated_cabinet_block_mushroom_fir_cyan humility-afm:illuminated_cabinet_block_mushroom_fir_gray humility-afm:illuminated_cabinet_block_mushroom_fir_green humility-afm:illuminated_cabinet_block_mushroom_fir_light_blue humility-afm:illuminated_cabinet_block_mushroom_fir_light_gray humility-afm:illuminated_cabinet_block_mushroom_fir_lime humility-afm:illuminated_cabinet_block_mushroom_fir_magenta humility-afm:illuminated_cabinet_block_mushroom_fir_orange humility-afm:illuminated_cabinet_block_mushroom_fir_pink humility-afm:illuminated_cabinet_block_mushroom_fir_purple humility-afm:illuminated_cabinet_block_mushroom_fir_red humility-afm:illuminated_cabinet_block_mushroom_fir_white humility-afm:illuminated_cabinet_block_mushroom_fir_yellow humility-afm:illuminated_cabinet_block_nether_sakura_black humility-afm:illuminated_cabinet_block_nether_sakura_blue humility-afm:illuminated_cabinet_block_nether_sakura_brown humility-afm:illuminated_cabinet_block_nether_sakura_cyan humility-afm:illuminated_cabinet_block_nether_sakura_gray humility-afm:illuminated_cabinet_block_nether_sakura_green humility-afm:illuminated_cabinet_block_nether_sakura_light_blue humility-afm:illuminated_cabinet_block_nether_sakura_light_gray humility-afm:illuminated_cabinet_block_nether_sakura_lime humility-afm:illuminated_cabinet_block_nether_sakura_magenta humility-afm:illuminated_cabinet_block_nether_sakura_orange humility-afm:illuminated_cabinet_block_nether_sakura_pink humility-afm:illuminated_cabinet_block_nether_sakura_purple humility-afm:illuminated_cabinet_block_nether_sakura_red humility-afm:illuminated_cabinet_block_nether_sakura_white humility-afm:illuminated_cabinet_block_nether_sakura_yellow humility-afm:illuminated_cabinet_block_stalagnate_black humility-afm:illuminated_cabinet_block_stalagnate_blue humility-afm:illuminated_cabinet_block_stalagnate_brown humility-afm:illuminated_cabinet_block_stalagnate_cyan humility-afm:illuminated_cabinet_block_stalagnate_gray humility-afm:illuminated_cabinet_block_stalagnate_green humility-afm:illuminated_cabinet_block_stalagnate_light_blue humility-afm:illuminated_cabinet_block_stalagnate_light_gray humility-afm:illuminated_cabinet_block_stalagnate_lime humility-afm:illuminated_cabinet_block_stalagnate_magenta humility-afm:illuminated_cabinet_block_stalagnate_orange humility-afm:illuminated_cabinet_block_stalagnate_pink humility-afm:illuminated_cabinet_block_stalagnate_purple humility-afm:illuminated_cabinet_block_stalagnate_red humility-afm:illuminated_cabinet_block_stalagnate_white humility-afm:illuminated_cabinet_block_stalagnate_yellow humility-afm:illuminated_cabinet_block_wart_black humility-afm:illuminated_cabinet_block_wart_blue humility-afm:illuminated_cabinet_block_wart_brown humility-afm:illuminated_cabinet_block_wart_cyan humility-afm:illuminated_cabinet_block_wart_gray humility-afm:illuminated_cabinet_block_wart_green humility-afm:illuminated_cabinet_block_wart_light_blue humility-afm:illuminated_cabinet_block_wart_light_gray humility-afm:illuminated_cabinet_block_wart_lime humility-afm:illuminated_cabinet_block_wart_magenta humility-afm:illuminated_cabinet_block_wart_orange humility-afm:illuminated_cabinet_block_wart_pink humility-afm:illuminated_cabinet_block_wart_purple humility-afm:illuminated_cabinet_block_wart_red humility-afm:illuminated_cabinet_block_wart_white humility-afm:illuminated_cabinet_block_wart_yellow humility-afm:illuminated_cabinet_block_willow_black humility-afm:illuminated_cabinet_block_willow_blue humility-afm:illuminated_cabinet_block_willow_brown humility-afm:illuminated_cabinet_block_willow_cyan humility-afm:illuminated_cabinet_block_willow_gray humility-afm:illuminated_cabinet_block_willow_green humility-afm:illuminated_cabinet_block_willow_light_blue humility-afm:illuminated_cabinet_block_willow_light_gray humility-afm:illuminated_cabinet_block_willow_lime humility-afm:illuminated_cabinet_block_willow_magenta humility-afm:illuminated_cabinet_block_willow_orange humility-afm:illuminated_cabinet_block_willow_pink humility-afm:illuminated_cabinet_block_willow_purple humility-afm:illuminated_cabinet_block_willow_red humility-afm:illuminated_cabinet_block_willow_white humility-afm:illuminated_cabinet_block_willow_yellow # Blocks that occlude 50% of light -block.52=iron_bars pointed_dripstone copper_bars exposed_copper_bars weathered_copper_bars oxidized_copper_bars waxed_copper_bars waxed_exposed_copper_bars waxed_weathered_copper_bars waxed_oxidized_copper_bars \ +block.52=iron_bars copper_bars exposed_copper_bars weathered_copper_bars oxidized_copper_bars waxed_copper_bars waxed_exposed_copper_bars waxed_weathered_copper_bars waxed_oxidized_copper_bars \ another_furniture:oak_table another_furniture:spruce_table another_furniture:birch_table another_furniture:jungle_table another_furniture:acacia_table another_furniture:dark_oak_table another_furniture:mangrove_table another_furniture:cherry_table another_furniture:bamboo_table another_furniture:crimson_table another_furniture:warped_table \ create:andesite_funnel create:brass_funnel create:packager create:repackager create:cart_assembler create:stressometer create:speedometer create:turntable create:belt create:mechanical_harvester create:mechanical_plough create:schematic_table create:item_hatch create:large_cogwheel dndesires:large_cog_crank create:fluid_pipe create:mechanical_pump create:smart_fluid_pipe create:copper_valve_handle create:fluid_valve create:gantry_shaft \ diagonalwalls:minecraft/cobblestone_wall:north_east=true diagonalwalls:minecraft/andesite_wall:north_east=true diagonalwalls:minecraft/blackstone_wall:north_east=true diagonalwalls:minecraft/brick_wall:north_east=true diagonalwalls:minecraft/cobbled_deepslate_wall:north_east=true diagonalwalls:minecraft/deepslate_brick_wall:north_east=true diagonalwalls:minecraft/deepslate_tile_wall:north_east=true diagonalwalls:minecraft/diorite_wall:north_east=true diagonalwalls:minecraft/end_stone_brick_wall:north_east=true diagonalwalls:minecraft/granite_wall:north_east=true diagonalwalls:minecraft/mossy_cobblestone_wall:north_east=true diagonalwalls:minecraft/mossy_stone_brick_wall:north_east=true diagonalwalls:minecraft/mud_brick_wall:north_east=true diagonalwalls:minecraft/nether_brick_wall:north_east=true diagonalwalls:minecraft/polished_blackstone_brick_wall:north_east=true diagonalwalls:minecraft/polished_blackstone_wall:north_east=true diagonalwalls:minecraft/polished_deepslate_wall:north_east=true diagonalwalls:minecraft/prismarine_wall:north_east=true diagonalwalls:minecraft/red_nether_brick_wall:north_east=true diagonalwalls:minecraft/red_sandstone_wall:north_east=true diagonalwalls:minecraft/sandstone_wall:north_east=true diagonalwalls:minecraft/stone_brick_wall:north_east=true diagonalwalls:create/cut_andesite_wall:north_east=true diagonalwalls:create/polished_cut_andesite_wall:north_east=true diagonalwalls:create/cut_andesite_brick_wall:north_east=true diagonalwalls:create/small_andesite_brick_wall:north_east=true diagonalwalls:create/cut_asurine_wall:north_east=true diagonalwalls:create/polished_cut_asurine_wall:north_east=true diagonalwalls:create/cut_asurine_brick_wall:north_east=true diagonalwalls:create/small_asurine_brick_wall:north_east=true diagonalwalls:create/cut_calcite_wall:north_east=true diagonalwalls:create/polished_cut_calcite_wall:north_east=true diagonalwalls:create/cut_calcite_brick_wall:north_east=true diagonalwalls:create/small_calcite_brick_wall:north_east=true diagonalwalls:create/cut_crimsite_wall:north_east=true diagonalwalls:create/polished_cut_crimsite_wall:north_east=true diagonalwalls:create/cut_crimsite_brick_wall:north_east=true diagonalwalls:create/small_crimsite_brick_wall:north_east=true diagonalwalls:create/cut_deepslate_wall:north_east=true diagonalwalls:create/polished_cut_deepslate_wall:north_east=true diagonalwalls:create/cut_deepslate_brick_wall:north_east=true diagonalwalls:create/small_deepslate_brick_wall:north_east=true diagonalwalls:create/cut_diorite_wall:north_east=true diagonalwalls:create/polished_cut_diorite_wall:north_east=true diagonalwalls:create/cut_diorite_brick_wall:north_east=true diagonalwalls:create/small_diorite_brick_wall:north_east=true diagonalwalls:create/cut_dripstone_wall:north_east=true diagonalwalls:create/polished_cut_dripstone_wall:north_east=true diagonalwalls:create/cut_dripstone_brick_wall:north_east=true diagonalwalls:create/small_dripstone_brick_wall:north_east=true diagonalwalls:create/cut_granite_wall:north_east=true diagonalwalls:create/polished_cut_granite_wall:north_east=true diagonalwalls:create/cut_granite_brick_wall:north_east=true diagonalwalls:create/small_granite_brick_wall:north_east=true diagonalwalls:create/cut_limestone_wall:north_east=true diagonalwalls:create/polished_cut_limestone_wall:north_east=true diagonalwalls:create/cut_limestone_brick_wall:north_east=true diagonalwalls:create/small_limestone_brick_wall:north_east=true diagonalwalls:create/cut_ochrum_wall:north_east=true diagonalwalls:create/polished_cut_ochrum_wall:north_east=true diagonalwalls:create/cut_ochrum_brick_wall:north_east=true diagonalwalls:create/small_ochrum_brick_wall:north_east=true diagonalwalls:create/cut_scorchia_wall:north_east=true diagonalwalls:create/polished_cut_scorchia_wall:north_east=true diagonalwalls:create/cut_scorchia_brick_wall:north_east=true diagonalwalls:create/small_scorchia_brick_wall:north_east=true diagonalwalls:create/cut_scoria_wall:north_east=true diagonalwalls:create/polished_cut_scoria_wall:north_east=true diagonalwalls:create/cut_scoria_brick_wall:north_east=true diagonalwalls:create/small_scoria_brick_wall:north_east=true diagonalwalls:create/cut_tuff_wall:north_east=true diagonalwalls:create/polished_cut_tuff_wall:north_east=true diagonalwalls:create/cut_tuff_brick_wall:north_east=true diagonalwalls:create/small_tuff_brick_wall:north_east=true diagonalwalls:create/cut_veridium_wall:north_east=true diagonalwalls:create/polished_cut_veridium_wall:north_east=true diagonalwalls:create/cut_veridium_brick_wall:north_east=true diagonalwalls:create/small_veridium_brick_wall:north_east=true diagonalwalls:minecraft/cobblestone_wall:north_east=false:north_west=true diagonalwalls:minecraft/andesite_wall:north_east=false:north_west=true diagonalwalls:minecraft/blackstone_wall:north_east=false:north_west=true diagonalwalls:minecraft/brick_wall:north_east=false:north_west=true diagonalwalls:minecraft/cobbled_deepslate_wall:north_east=false:north_west=true diagonalwalls:minecraft/deepslate_brick_wall:north_east=false:north_west=true diagonalwalls:minecraft/deepslate_tile_wall:north_east=false:north_west=true diagonalwalls:minecraft/diorite_wall:north_east=false:north_west=true diagonalwalls:minecraft/end_stone_brick_wall:north_east=false:north_west=true diagonalwalls:minecraft/granite_wall:north_east=false:north_west=true diagonalwalls:minecraft/mossy_cobblestone_wall:north_east=false:north_west=true diagonalwalls:minecraft/mossy_stone_brick_wall:north_east=false:north_west=true diagonalwalls:minecraft/mud_brick_wall:north_east=false:north_west=true diagonalwalls:minecraft/nether_brick_wall:north_east=false:north_west=true diagonalwalls:minecraft/polished_blackstone_brick_wall:north_east=false:north_west=true diagonalwalls:minecraft/polished_blackstone_wall:north_east=false:north_west=true diagonalwalls:minecraft/polished_deepslate_wall:north_east=false:north_west=true diagonalwalls:minecraft/prismarine_wall:north_east=false:north_west=true diagonalwalls:minecraft/red_nether_brick_wall:north_east=false:north_west=true diagonalwalls:minecraft/red_sandstone_wall:north_east=false:north_west=true diagonalwalls:minecraft/sandstone_wall:north_east=false:north_west=true diagonalwalls:minecraft/stone_brick_wall:north_east=false:north_west=true diagonalwalls:create/cut_andesite_wall:north_east=false:north_west=true diagonalwalls:create/polished_cut_andesite_wall:north_east=false:north_west=true diagonalwalls:create/cut_andesite_brick_wall:north_east=false:north_west=true diagonalwalls:create/small_andesite_brick_wall:north_east=false:north_west=true diagonalwalls:create/cut_asurine_wall:north_east=false:north_west=true diagonalwalls:create/polished_cut_asurine_wall:north_east=false:north_west=true diagonalwalls:create/cut_asurine_brick_wall:north_east=false:north_west=true diagonalwalls:create/small_asurine_brick_wall:north_east=false:north_west=true diagonalwalls:create/cut_calcite_wall:north_east=false:north_west=true diagonalwalls:create/polished_cut_calcite_wall:north_east=false:north_west=true diagonalwalls:create/cut_calcite_brick_wall:north_east=false:north_west=true diagonalwalls:create/small_calcite_brick_wall:north_east=false:north_west=true diagonalwalls:create/cut_crimsite_wall:north_east=false:north_west=true diagonalwalls:create/polished_cut_crimsite_wall:north_east=false:north_west=true diagonalwalls:create/cut_crimsite_brick_wall:north_east=false:north_west=true diagonalwalls:create/small_crimsite_brick_wall:north_east=false:north_west=true diagonalwalls:create/cut_deepslate_wall:north_east=false:north_west=true diagonalwalls:create/polished_cut_deepslate_wall:north_east=false:north_west=true diagonalwalls:create/cut_deepslate_brick_wall:north_east=false:north_west=true diagonalwalls:create/small_deepslate_brick_wall:north_east=false:north_west=true diagonalwalls:create/cut_diorite_wall:north_east=false:north_west=true diagonalwalls:create/polished_cut_diorite_wall:north_east=false:north_west=true diagonalwalls:create/cut_diorite_brick_wall:north_east=false:north_west=true diagonalwalls:create/small_diorite_brick_wall:north_east=false:north_west=true diagonalwalls:create/cut_dripstone_wall:north_east=false:north_west=true diagonalwalls:create/polished_cut_dripstone_wall:north_east=false:north_west=true diagonalwalls:create/cut_dripstone_brick_wall:north_east=false:north_west=true diagonalwalls:create/small_dripstone_brick_wall:north_east=false:north_west=true diagonalwalls:create/cut_granite_wall:north_east=false:north_west=true diagonalwalls:create/polished_cut_granite_wall:north_east=false:north_west=true diagonalwalls:create/cut_granite_brick_wall:north_east=false:north_west=true diagonalwalls:create/small_granite_brick_wall:north_east=false:north_west=true diagonalwalls:create/cut_limestone_wall:north_east=false:north_west=true diagonalwalls:create/polished_cut_limestone_wall:north_east=false:north_west=true diagonalwalls:create/cut_limestone_brick_wall:north_east=false:north_west=true diagonalwalls:create/small_limestone_brick_wall:north_east=false:north_west=true diagonalwalls:create/cut_ochrum_wall:north_east=false:north_west=true diagonalwalls:create/polished_cut_ochrum_wall:north_east=false:north_west=true diagonalwalls:create/cut_ochrum_brick_wall:north_east=false:north_west=true diagonalwalls:create/small_ochrum_brick_wall:north_east=false:north_west=true diagonalwalls:create/cut_scorchia_wall:north_east=false:north_west=true diagonalwalls:create/polished_cut_scorchia_wall:north_east=false:north_west=true diagonalwalls:create/cut_scorchia_brick_wall:north_east=false:north_west=true diagonalwalls:create/small_scorchia_brick_wall:north_east=false:north_west=true diagonalwalls:create/cut_scoria_wall:north_east=false:north_west=true diagonalwalls:create/polished_cut_scoria_wall:north_east=false:north_west=true diagonalwalls:create/cut_scoria_brick_wall:north_east=false:north_west=true diagonalwalls:create/small_scoria_brick_wall:north_east=false:north_west=true diagonalwalls:create/cut_tuff_wall:north_east=false:north_west=true diagonalwalls:create/polished_cut_tuff_wall:north_east=false:north_west=true diagonalwalls:create/cut_tuff_brick_wall:north_east=false:north_west=true diagonalwalls:create/small_tuff_brick_wall:north_east=false:north_west=true diagonalwalls:create/cut_veridium_wall:north_east=false:north_west=true diagonalwalls:create/polished_cut_veridium_wall:north_east=false:north_west=true diagonalwalls:create/cut_veridium_brick_wall:north_east=false:north_west=true diagonalwalls:create/small_veridium_brick_wall:north_east=false:north_west=true diagonalwalls:minecraft/cobblestone_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/andesite_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/blackstone_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/cobbled_deepslate_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/deepslate_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/deepslate_tile_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/diorite_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/end_stone_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/granite_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/mossy_cobblestone_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/mossy_stone_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/mud_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/nether_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/polished_blackstone_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/polished_blackstone_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/polished_deepslate_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/prismarine_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/red_nether_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/red_sandstone_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/sandstone_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/stone_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/cut_andesite_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/polished_cut_andesite_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/cut_andesite_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/small_andesite_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/cut_asurine_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/polished_cut_asurine_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/cut_asurine_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/small_asurine_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/cut_calcite_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/polished_cut_calcite_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/cut_calcite_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/small_calcite_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/cut_crimsite_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/polished_cut_crimsite_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/cut_crimsite_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/small_crimsite_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/cut_deepslate_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/polished_cut_deepslate_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/cut_deepslate_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/small_deepslate_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/cut_diorite_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/polished_cut_diorite_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/cut_diorite_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/small_diorite_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/cut_dripstone_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/polished_cut_dripstone_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/cut_dripstone_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/small_dripstone_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/cut_granite_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/polished_cut_granite_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/cut_granite_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/small_granite_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/cut_limestone_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/polished_cut_limestone_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/cut_limestone_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/small_limestone_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/cut_ochrum_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/polished_cut_ochrum_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/cut_ochrum_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/small_ochrum_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/cut_scorchia_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/polished_cut_scorchia_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/cut_scorchia_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/small_scorchia_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/cut_scoria_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/polished_cut_scoria_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/cut_scoria_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/small_scoria_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/cut_tuff_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/polished_cut_tuff_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/cut_tuff_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/small_tuff_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/cut_veridium_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/polished_cut_veridium_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/cut_veridium_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:create/small_veridium_brick_wall:north_east=false:north_west=false:south_east=true diagonalwalls:minecraft/cobblestone_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/andesite_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/blackstone_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/cobbled_deepslate_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/deepslate_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/deepslate_tile_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/diorite_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/end_stone_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/granite_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/mossy_cobblestone_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/mossy_stone_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/mud_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/nether_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/polished_blackstone_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/polished_blackstone_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/polished_deepslate_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/prismarine_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/red_nether_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/red_sandstone_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/sandstone_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:minecraft/stone_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/cut_andesite_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/polished_cut_andesite_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/cut_andesite_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/small_andesite_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/cut_asurine_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/polished_cut_asurine_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/cut_asurine_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/small_asurine_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/cut_calcite_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/polished_cut_calcite_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/cut_calcite_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/small_calcite_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/cut_crimsite_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/polished_cut_crimsite_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/cut_crimsite_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/small_crimsite_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/cut_deepslate_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/polished_cut_deepslate_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/cut_deepslate_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/small_deepslate_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/cut_diorite_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/polished_cut_diorite_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/cut_diorite_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/small_diorite_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/cut_dripstone_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/polished_cut_dripstone_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/cut_dripstone_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/small_dripstone_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/cut_granite_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/polished_cut_granite_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/cut_granite_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/small_granite_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/cut_limestone_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/polished_cut_limestone_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/cut_limestone_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/small_limestone_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/cut_ochrum_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/polished_cut_ochrum_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/cut_ochrum_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/small_ochrum_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/cut_scorchia_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/polished_cut_scorchia_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/cut_scorchia_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/small_scorchia_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/cut_scoria_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/polished_cut_scoria_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/cut_scoria_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/small_scoria_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/cut_tuff_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/polished_cut_tuff_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/cut_tuff_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/small_tuff_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/cut_veridium_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/polished_cut_veridium_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/cut_veridium_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true diagonalwalls:create/small_veridium_brick_wall:north_east=false:north_west=false:south_east=false:south_west=true \ @@ -74,7 +109,7 @@ block.52=iron_bars pointed_dripstone copper_bars exposed_copper_bars weathered_c vinery:dark_cherry_table # Blocks that occlude 75% of light -block.53=dried_ghast hopper bell mangrove_roots copper_grate exposed_copper_grate weathered_copper_grate oxidized_copper_grate waxed_copper_grate waxed_exposed_copper_grate waxed_weathered_copper_grate waxed_oxidized_copper_grate \ +block.53=dried_ghast bell mangrove_roots copper_grate exposed_copper_grate weathered_copper_grate oxidized_copper_grate waxed_copper_grate waxed_exposed_copper_grate waxed_weathered_copper_grate waxed_oxidized_copper_grate \ vinery:dark_cherry_big_table \ create:creative_motor create:display_board create:contraption_controls create:sticker create:andesite_tunnel create:brass_tunnel create:controls create:rope_pulley create:elevator_pulley create:cuckoo_clock create:encased_fan create:nozzle create:fluid_tank create:peculiar_bell create:haunted_bell create:desk_bell create:weighted_ejector create:hose_pulley create:chute \ bellsandwhistles:station_platform \ @@ -85,7 +120,7 @@ block.53=dried_ghast hopper bell mangrove_roots copper_grate exposed_copper_grat ## ground waving ## add a newline to organize for modded blocks -block.54=minecraft:tall_dry_grass minecraft:short_dry_grass minecraft:bush minecraft:firefly_bush minecraft:cactus_flower minecraft:melon_stem minecraft:pumpkin_stem minecraft:flowering_azalea minecraft:azalea minecraft:big_dripleaf minecraft:torchflower minecraft:torchflower_crop minecraft:pitcher_crop:half=upper minecraft:warped_fungus minecraft:twisting_vines minecraft:kelp minecraft:beetroots minecraft:potatoes minecraft:carrots minecraft:wheat minecraft:nether_wart minecraft:crimson_roots minecraft:nether_sprouts minecraft:warped_roots minecraft:seagrass minecraft:wither_rose minecraft:lily_of_the_valley minecraft:cornflower minecraft:sweet_berry_bush minecraft:oxeye_daisy minecraft:pink_tulip minecraft:white_tulip minecraft:orange_tulip minecraft:red_tulip minecraft:azure_bluet minecraft:allium minecraft:blue_orchid minecraft:poppy minecraft:dandelion minecraft:dead_bush minecraft:lily_pad \ +block.54=minecraft:tall_dry_grass minecraft:fern minecraft:short_dry_grass minecraft:bush minecraft:firefly_bush minecraft:cactus_flower minecraft:melon_stem minecraft:pumpkin_stem minecraft:flowering_azalea minecraft:azalea minecraft:big_dripleaf minecraft:torchflower minecraft:torchflower_crop minecraft:pitcher_crop:half=upper minecraft:twisting_vines minecraft:kelp minecraft:beetroots minecraft:potatoes minecraft:carrots minecraft:wheat minecraft:nether_wart minecraft:crimson_roots minecraft:nether_sprouts minecraft:warped_roots minecraft:seagrass minecraft:wither_rose minecraft:lily_of_the_valley minecraft:cornflower minecraft:sweet_berry_bush minecraft:oxeye_daisy minecraft:pink_tulip minecraft:white_tulip minecraft:orange_tulip minecraft:red_tulip minecraft:azure_bluet minecraft:allium minecraft:blue_orchid minecraft:poppy minecraft:dandelion minecraft:dead_bush minecraft:lily_pad \ biomesoplenty:flower_bud biomesoplenty:origin_dandelion biomesoplenty:origin_rose biomesoplenty:endbloom biomesoplenty:marigold biomesoplenty:enderphyte biomesoplenty:lumaloop biomesoplenty:dead_grass biomesoplenty:tundra_shrub biomesoplenty:rose biomesoplenty:violet biomesoplenty:lavender biomesoplenty:white_lavender biomesoplenty:desert_grass biomesoplenty:orange_cosmos biomesoplenty:pink_daffodil biomesoplenty:pink_hibiscus biomesoplenty:glowflower biomesoplenty:wilted_lily biomesoplenty:burning_blossom biomesoplenty:blue_hydrangea_bottom biomesoplenty:blue_hydrangea_top biomesoplenty:goldenrod_bottom biomesoplenty:goldenrod_top biomesoplenty:waterlily biomesoplenty:huge_lily_pad biomesoplenty:high_grass biomesoplenty:huge_clover_petal biomesoplenty:sprout biomesoplenty:hair biomesoplenty:dune_grass \ farmersdelight:tomatoes farmersdelight:onions farmersdelight:budding_tomatoes farmersdelight:cabbages farmersdelight:sandy_shrub farmersdelight:wild_cabbages farmersdelight:wild_onions farmersdelight:wild_tomatoes farmersdelight:wild_carrots farmersdelight:wild_potatoes farmersdelight:wild_beetroots \ herbalbrews:wild_coffee_plant herbalbrews:wild_yerba_mate_plant herbalbrews:wild_rooibos_plant herbalbrews:hibiscus herbalbrews:lavender herbalbrews:coffee_plant herbalbrews:yerba_mate_plant herbalbrews:rooibos_plant \ @@ -96,7 +131,7 @@ block.54=minecraft:tall_dry_grass minecraft:short_dry_grass minecraft:bush minec supplementaries:wild_flax ## ground waving vertical models. this exists to brighten up the sides of grass and stuff in shaded places they blend in better with the world. -block.55=minecraft:closed_eyeblossom minecraft:open_eyeblossom minecraft:fern \ +block.55=minecraft:closed_eyeblossom minecraft:open_eyeblossom \ biomesoplenty:bush \ conquest:thick_fern conquest:tumbleweed conquest:nether_sprouts conquest:azure_bluet conquest:wild_daisy conquest:blue_orchid conquest:red_clover_flowers conquest:small_grape_vine conquest:acacia_sapling conquest:alder_tree_sapling conquest:apple_tree_sapling conquest:aspen_tree_sapling conquest:birch_sapling conquest:cherry_tree_sapling conquest:dark_oak_sapling conquest:downy_willow_tree_sapling conquest:gorse_tree_sapling conquest:grape_vine_sapling conquest:horse_chestnut_tree_sapling conquest:jungle_sapling conquest:larch_tree_sapling conquest:mallorn_tree_sapling conquest:oak_sapling conquest:orange_tree_sapling conquest:pear_tree_sapling conquest:pine_tree_sapling conquest:plum_tree_sapling conquest:rowan_tree_sapling conquest:spruce_sapling conquest:willow_tree_sapling conquest:black_knapweed conquest:buttercups conquest:cornflower conquest:dandelion conquest:elanor conquest:goldenrod conquest:harebell conquest:lily_of_the_valley conquest:lobelia_flowers conquest:marsh_ragwort conquest:meadow_saffron conquest:mediterranean_wild_tulip conquest:moorland_spotted_orchid conquest:niphredil conquest:orange_tulip conquest:orpine conquest:oxeye_daisy conquest:pasque_flower conquest:pink_tulip conquest:poppy conquest:red_tulip conquest:rock_rose conquest:sea_lavender conquest:simbelmyne conquest:white_tulip conquest:wild_dagga conquest:barley conquest:beetroots conquest:cabbage conquest:carrots conquest:common_beans conquest:flax conquest:lavender conquest:warped_fungus conquest:peas conquest:potatoes conquest:rice conquest:thyme conquest:tobacco conquest:turnips conquest:water_mint conquest:wheat conquest:wild_basil conquest:wild_parsley conquest:wild_wheat conquest:common_meadow_grass conquest:cotton_grass conquest:dead_grass conquest:deergrass conquest:grass conquest:kentucky_bluegrass conquest:lush_grass conquest:purple_moor_grass conquest:sea_arrowgrass conquest:seagrass conquest:timothy_grass conquest:beautyberry_bush conquest:bilberry_bush conquest:blackberry_bush conquest:bog_blueberry_bush conquest:broom_bush conquest:dead_bush conquest:lingonberry_bush conquest:raspberry_bush conquest:athelas conquest:autumnal_dwarf_birch conquest:birdsfoot_trefoil conquest:bog_asphodel conquest:bottle_sedge conquest:common_cow_wheat conquest:dead_shrubs conquest:desert_shrub conquest:dogs_mercury conquest:greater_wood_rush conquest:green_spurge conquest:heather conquest:nightshade conquest:purple_wolfs_bane conquest:red_common_cow_wheat conquest:sedge conquest:thick_rushes conquest:greater_fen_sedges conquest:cattail_reeds conquest:summer_dead_reeds conquest:giant_wild_reeds conquest:sheeps_fescue conquest:small_fescue conquest:sparse_headed_feathergrass conquest:dense_headed_feathergrass conquest:white_yarrow conquest:yellow_yarrow conquest:small_scabious conquest:sweet_woodruff conquest:wild_overgrown_nettles conquest:light_wild_shrub conquest:dark_wild_shrub conquest:wild_shrub conquest:wood_horsetail conquest:woodland_sedge conquest:wormwood conquest:yellow_wolfs_bane conquest:autumnal_bracken conquest:bracken conquest:dark_autumnal_bracken conquest:dead_bracken conquest:fern conquest:fern_1 conquest:fern_2 conquest:harts_tongue_fern conquest:cross_leaved_heath \ flying_stuff:blow_flower flying_stuff:fiery_short_grass flying_stuff:fiery_grass flying_stuff:small_arid_bush flying_stuff:metallic_shorter_grass flying_stuff:firey_tree_sapling flying_stuff:abyss_grass flying_stuff:arid_grass flying_stuff:fiery_tree_sapling flying_stuff:lavic_tree_sapling flying_stuff:short_lavic_grass flying_stuff:warmth_radish_plant \ @@ -126,6 +161,14 @@ block.56=minecraft:pale_hanging_moss minecraft:azalea_leaves minecraft:flowering vinery:dark_cherry_leaves vinery:apple_leaves \ westerosblocks:vine_jasmine westerosblocks:apple_fruit_leaves westerosblocks:apricot_fruit_leaves westerosblocks:cherry_fruit_leaves westerosblocks:purple_grape_fruit_leaves westerosblocks:lemon_fruit_leaves westerosblocks:lime_fruit_leaves westerosblocks:orange_fruit_leaves westerosblocks:peach_fruit_leaves westerosblocks:plum_fruit_leaves westerosblocks:pomegranate_fruit_leaves westerosblocks:weirwood_leaves westerosblocks:hop_fruit_leaves westerosblocks:olive_fruit_leaves westerosblocks:palm_leaves westerosblocks:white_grape_fruit_leaves +block.57=birch_button:face=floor:facing=north cherry_button:face=floor:facing=north crimson_button:face=floor:facing=north dark_oak_button:face=floor:facing=north jungle_button:face=floor:facing=north mangrove_button:face=floor:facing=north oak_button:face=floor:facing=north pale_oak_button:face=floor:facing=north spruce_button:face=floor:facing=north warped_button:face=floor:facing=north polished_blackstone_button:face=floor:facing=north stone_button:face=floor:facing=north birch_button:face=floor:facing=south cherry_button:face=floor:facing=south crimson_button:face=floor:facing=south dark_oak_button:face=floor:facing=south jungle_button:face=floor:facing=south mangrove_button:face=floor:facing=south oak_button:face=floor:facing=south pale_oak_button:face=floor:facing=south spruce_button:face=floor:facing=south warped_button:face=floor:facing=south polished_blackstone_button:face=floor:facing=south stone_button:face=floor:facing=south +block.58=birch_button:face=floor:facing=east cherry_button:face=floor:facing=east crimson_button:face=floor:facing=east dark_oak_button:face=floor:facing=east jungle_button:face=floor:facing=east mangrove_button:face=floor:facing=east oak_button:face=floor:facing=east pale_oak_button:face=floor:facing=east spruce_button:face=floor:facing=east warped_button:face=floor:facing=east polished_blackstone_button:face=floor:facing=east stone_button:face=floor:facing=east birch_button:face=floor:facing=west cherry_button:face=floor:facing=west crimson_button:face=floor:facing=west dark_oak_button:face=floor:facing=west jungle_button:face=floor:facing=west mangrove_button:face=floor:facing=west oak_button:face=floor:facing=west pale_oak_button:face=floor:facing=west spruce_button:face=floor:facing=west warped_button:face=floor:facing=west polished_blackstone_button:face=floor:facing=west stone_button:face=floor:facing=west +block.59=birch_button:face=wall:facing=north cherry_button:face=wall:facing=north crimson_button:face=wall:facing=north dark_oak_button:face=wall:facing=north jungle_button:face=wall:facing=north mangrove_button:face=wall:facing=north oak_button:face=wall:facing=north pale_oak_button:face=wall:facing=north spruce_button:face=wall:facing=north warped_button:face=wall:facing=north polished_blackstone_button:face=wall:facing=north stone_button:face=wall:facing=north +block.60=birch_button:face=wall:facing=east cherry_button:face=wall:facing=east crimson_button:face=wall:facing=east dark_oak_button:face=wall:facing=east jungle_button:face=wall:facing=east mangrove_button:face=wall:facing=east oak_button:face=wall:facing=east pale_oak_button:face=wall:facing=east spruce_button:face=wall:facing=east warped_button:face=wall:facing=east polished_blackstone_button:face=wall:facing=east stone_button:face=wall:facing=east +block.61=birch_button:face=wall:facing=south cherry_button:face=wall:facing=south crimson_button:face=wall:facing=south dark_oak_button:face=wall:facing=south jungle_button:face=wall:facing=south mangrove_button:face=wall:facing=south oak_button:face=wall:facing=south pale_oak_button:face=wall:facing=south spruce_button:face=wall:facing=south warped_button:face=wall:facing=south polished_blackstone_button:face=wall:facing=south stone_button:face=wall:facing=south +block.62=birch_button:face=wall:facing=west cherry_button:face=wall:facing=west crimson_button:face=wall:facing=west dark_oak_button:face=wall:facing=west jungle_button:face=wall:facing=west mangrove_button:face=wall:facing=west oak_button:face=wall:facing=west pale_oak_button:face=wall:facing=west spruce_button:face=wall:facing=west warped_button:face=wall:facing=west polished_blackstone_button:face=wall:facing=west stone_button:face=wall:facing=west +block.63=birch_button:face=ceiling:facing=north cherry_button:face=ceiling:facing=north crimson_button:face=ceiling:facing=north dark_oak_button:face=ceiling:facing=north jungle_button:face=ceiling:facing=north mangrove_button:face=ceiling:facing=north oak_button:face=ceiling:facing=north pale_oak_button:face=ceiling:facing=north spruce_button:face=ceiling:facing=north warped_button:face=ceiling:facing=north polished_blackstone_button:face=ceiling:facing=north stone_button:face=ceiling:facing=north birch_button:face=ceiling:facing=south cherry_button:face=ceiling:facing=south crimson_button:face=ceiling:facing=south dark_oak_button:face=ceiling:facing=south jungle_button:face=ceiling:facing=south mangrove_button:face=ceiling:facing=south oak_button:face=ceiling:facing=south pale_oak_button:face=ceiling:facing=south spruce_button:face=ceiling:facing=south warped_button:face=ceiling:facing=south polished_blackstone_button:face=ceiling:facing=south stone_button:face=ceiling:facing=south +block.64=birch_button:face=ceiling:facing=east cherry_button:face=ceiling:facing=east crimson_button:face=ceiling:facing=east dark_oak_button:face=ceiling:facing=east jungle_button:face=ceiling:facing=east mangrove_button:face=ceiling:facing=east oak_button:face=ceiling:facing=east pale_oak_button:face=ceiling:facing=east spruce_button:face=ceiling:facing=east warped_button:face=ceiling:facing=east polished_blackstone_button:face=ceiling:facing=east stone_button:face=ceiling:facing=east birch_button:face=ceiling:facing=west cherry_button:face=ceiling:facing=west crimson_button:face=ceiling:facing=west dark_oak_button:face=ceiling:facing=west jungle_button:face=ceiling:facing=west mangrove_button:face=ceiling:facing=west oak_button:face=ceiling:facing=west pale_oak_button:face=ceiling:facing=west spruce_button:face=ceiling:facing=west warped_button:face=ceiling:facing=west polished_blackstone_button:face=ceiling:facing=west stone_button:face=ceiling:facing=west ####### ----- blocks with SSS ----- ####### @@ -133,7 +176,7 @@ block.56=minecraft:pale_hanging_moss minecraft:azalea_leaves minecraft:flowering block.79=minecraft:packed_ice minecraft:blue_ice ## strong sss and floodfill ignore -block.80=minecraft:pink_petals minecraft:wildflowers minecraft:kelp_plant minecraft:peony minecraft:rose_bush minecraft:lilac minecraft:attached_melon_stem minecraft:attached_pumpkin_stem \ +block.80=minecraft:pink_petals minecraft:wildflowers minecraft:attached_melon_stem minecraft:attached_pumpkin_stem \ aquamirae:elodea \ beachparty:lounge_chair beachparty:chair beachparty:table beachparty:beach_chair beachparty:deck_chair beachparty:hammock beachparty:tiki_chair beachparty:beach_towel \ biomesoplenty:lumaloop_plant biomesoplenty:white_petals biomesoplenty:wildflower biomesoplenty:purple_wildflowers biomesoplenty:red_maple_leaf_pile biomesoplenty:orange_maple_leaf_pile biomesoplenty:yellow_maple_leaf_pile biomesoplenty:clover biomesoplenty:flesh biomesoplenty:porous_flesh biomesoplenty:flesh_tendons biomesoplenty:pus_bubble biomesoplenty:willow_vine \ @@ -155,10 +198,10 @@ block.80=minecraft:pink_petals minecraft:wildflowers minecraft:kelp_plant minecr #define snow_layers_5_8_entry snow:layers=5 snow:layers=6 snow:layers=7 snow:layers=8 #endif ## weak sss and floodfill ignore -block.81=minecraft:small_amethyst_bud minecraft:pitcher_plant minecraft:grass_block:snowy=true snow_layers_5_8_entry cobweb weeping_vines_plant twisting_vines_plant tube_coral tube_coral_block tube_coral_fan tube_coral_wall_fan horn_coral horn_coral_block horn_coral_fan horn_coral_wall_fan fire_coral fire_coral_block fire_coral_fan fire_coral_wall_fan dead_brain_coral dead_brain_coral_block dead_brain_coral_fan dead_brain_coral_wall_fan dead_bubble_coral dead_bubble_coral_block dead_bubble_coral_fan dead_bubble_coral_wall_fan dead_fire_coral dead_fire_coral_block dead_fire_coral_fan dead_fire_coral_wall_fan dead_horn_coral dead_horn_coral_block dead_horn_coral_fan dead_horn_coral_wall_fan dead_tube_coral dead_tube_coral_block dead_tube_coral_fan dead_tube_coral_wall_fan bubble_coral bubble_coral_block bubble_coral_fan bubble_coral_wall_fan brain_coral brain_coral_block brain_coral_fan brain_coral_wall_fan minecraft:spore_blossom minecraft:cave_vines_plant:berries=false minecraft:big_dripleaf_stem minecraft:cactus minecraft:brown_mushroom minecraft:red_mushroom minecraft:mushroom_stem minecraft:sugar_cane minecraft:crimson_fungus minecraft:sea_pickle:waterlogged=false \ +block.81=minecraft:pitcher_plant minecraft:grass_block:snowy=true weeping_vines_plant twisting_vines_plant tube_coral tube_coral_block tube_coral_fan tube_coral_wall_fan horn_coral horn_coral_block horn_coral_fan horn_coral_wall_fan fire_coral fire_coral_block fire_coral_fan fire_coral_wall_fan dead_brain_coral dead_brain_coral_block dead_brain_coral_fan dead_brain_coral_wall_fan dead_bubble_coral dead_bubble_coral_block dead_bubble_coral_fan dead_bubble_coral_wall_fan dead_fire_coral dead_fire_coral_block dead_fire_coral_fan dead_fire_coral_wall_fan dead_horn_coral dead_horn_coral_block dead_horn_coral_fan dead_horn_coral_wall_fan dead_tube_coral dead_tube_coral_block dead_tube_coral_fan dead_tube_coral_wall_fan bubble_coral bubble_coral_block bubble_coral_fan bubble_coral_wall_fan brain_coral brain_coral_block brain_coral_fan brain_coral_wall_fan minecraft:spore_blossom minecraft:mushroom_stem minecraft:sea_pickle:waterlogged=false \ aquamirae:painting_anglerfish aquamirae:painting_oxygelium aquamirae:painting_tortured_soul aquamirae:painting_aurora \ beachparty:seashell_block beachparty:beach_parasol \ - biomesoplenty:high_grass_plant biomesoplenty:toadstool \ + biomesoplenty:toadstool \ create:white_sail create:light_gray_sail create:gray_sail create:black_sail create:brown_sail create:red_sail create:orange_sail create:lime_sail create:yellow_sail create:green_sail create:cyan_sail create:light_blue_sail create:blue_sail create:purple_sail create:magenta_sail create:pink_sail \ conquest:hanging_roots conquest:prickly_pear_cacti conquest:small_cacti conquest:dark_bamboo conquest:golden_bamboo conquest:cactus conquest:thick_ivy conquest:lianas conquest:morel_mushrooms conquest:brittlegill_mushrooms conquest:red_mushroom conquest:brown_mushroom conquest:moss_on_the_ground conquest:alpine_bearberry conquest:open_book_and_inkwell conquest:birds_nest conquest:small_birds_nest conquest:dried_tobacco_rack conquest:brown_hanging_rabbit conquest:white_hanging_rabbit conquest:hanging_rabbit conquest:hanging_sausages conquest:hanging_salami conquest:hanging_fish conquest:hanging_sockeye_salmon conquest:hanging_beef_shank conquest:hanging_mentula_fish conquest:dark_green_sphagnum_moss conquest:green_sphagnum_moss conquest:red_sphagnum_moss conquest:yellow_sphagnum_moss conquest:yellow_mounted_pipe conquest:purple_stained_glass_pane conquest:sieve conquest:reindeer_lichen conquest:wolf_lichen conquest:elegant_sunburst_lichen conquest:maritime_sunburst_lichen conquest:big_bread conquest:arrow_bundle conquest:sacks conquest:quill_and_parchment conquest:pile_of_paper_on_the_ground conquest:net_on_the_ground conquest:fish_trap conquest:rope_on_the_ground conquest:rigging_pane conquest:rope_ladder conquest:hanging_rope conquest:noose conquest:climbing_rope conquest:silver_rope conquest:silver_rope_ladder conquest:yellow_and_red_buntings conquest:blue_and_green_buntings conquest:fishing_net conquest:hanging_net conquest:hanging_clownfish conquest:apples conquest:hanging_onions conquest:hanging_carrots conquest:clothes_line conquest:wall_of_rope_pane \ ends_delight:chorus_fruit_pie ends_delight:dragon_leg_with_sauce_block ends_delight:dragon_meat_stew_block ends_delight:steamed_dragon_egg_block ends_delight:grilled_shulker_block \ @@ -171,7 +214,7 @@ block.81=minecraft:small_amethyst_bud minecraft:pitcher_plant minecraft:grass_bl savethehotbar:sack savethehotbar:skeleton_head_grave savethehotbar:zombie_head_grave ## weak sss -block.82=minecraft:honeycomb_block minecraft:melon minecraft:pumpkin minecraft:carved_pumpkin minecraft:hay_block red_mushroom_block brown_mushroom_block powder_snow minecraft:snow_block minecraft:moss_block minecraft:bee_nest minecraft:budding_amethyst minecraft:amethyst_block minecraft:white_wool minecraft:orange_wool minecraft:magenta_wool minecraft:light_blue_wool minecraft:yellow_wool minecraft:lime_wool minecraft:pink_wool minecraft:gray_wool minecraft:light_gray_wool minecraft:cyan_wool minecraft:purple_wool minecraft:blue_wool minecraft:brown_wool minecraft:green_wool minecraft:red_wool minecraft:black_wool \ +block.82=snow_layers_5_8_entry minecraft:honeycomb_block minecraft:melon minecraft:pumpkin minecraft:carved_pumpkin minecraft:hay_block red_mushroom_block brown_mushroom_block powder_snow minecraft:snow_block minecraft:moss_block minecraft:bee_nest minecraft:budding_amethyst minecraft:amethyst_block minecraft:white_wool minecraft:orange_wool minecraft:magenta_wool minecraft:light_blue_wool minecraft:yellow_wool minecraft:lime_wool minecraft:pink_wool minecraft:gray_wool minecraft:light_gray_wool minecraft:cyan_wool minecraft:purple_wool minecraft:blue_wool minecraft:brown_wool minecraft:green_wool minecraft:red_wool minecraft:black_wool \ conquest:bread_plate conquest:hanging_sardines conquest:scarecrow_head conquest:hanging_bear_skin conquest:hanging_herbs conquest:hook_with_rope conquest:hanging_pasque_flowers conquest:hanging_dandelions conquest:berber_pillow conquest:red_cushion conquest:blue_cushion conquest:cyan_cushion conquest:celtic_pillow conquest:kazakh_rug conquest:kazakh_rug_cover conquest:kazakh_rug_stairs conquest:kazakh_rug_slab conquest:kazakh_rug_corner_slab conquest:kazakh_rug_quarter_slab conquest:kazakh_rug_eighth_slab conquest:kazakh_rug_vertical_corner conquest:kazakh_rug_vertical_quarter conquest:kazakh_rug_vertical_slab conquest:kazakh_rug_vertical_corner_slab conquest:black_persian_rug conquest:black_persian_rug_cover conquest:black_persian_rug_stairs conquest:black_persian_rug_slab conquest:black_persian_rug_corner_slab conquest:black_persian_rug_quarter_slab conquest:black_persian_rug_eighth_slab conquest:black_persian_rug_vertical_corner conquest:black_persian_rug_vertical_quarter conquest:black_persian_rug_vertical_slab conquest:black_persian_rug_vertical_corner_slab conquest:berber_rug conquest:berber_rug_cover conquest:berber_rug_stairs conquest:berber_rug_slab conquest:berber_rug_corner_slab conquest:berber_rug_quarter_slab conquest:berber_rug_eighth_slab conquest:berber_rug_vertical_corner conquest:berber_rug_vertical_quarter conquest:berber_rug_vertical_slab conquest:berber_rug_vertical_corner_slab conquest:yellow_red_persian_rug conquest:yellow_red_persian_rug_cover conquest:yellow_red_persian_rug_stairs conquest:yellow_red_persian_rug_slab conquest:yellow_red_persian_rug_corner_slab conquest:yellow_red_persian_rug_quarter_slab conquest:yellow_red_persian_rug_eighth_slab conquest:yellow_red_persian_rug_vertical_corner conquest:yellow_red_persian_rug_vertical_quarter conquest:yellow_red_persian_rug_vertical_slab conquest:yellow_red_persian_rug_vertical_corner_slab conquest:red_pazyryk_rug conquest:red_pazyryk_rug_cover conquest:red_pazyryk_rug_stairs conquest:red_pazyryk_rug_slab conquest:red_pazyryk_rug_corner_slab conquest:red_pazyryk_rug_quarter_slab conquest:red_pazyryk_rug_eighth_slab conquest:red_pazyryk_rug_vertical_corner conquest:red_pazyryk_rug_vertical_quarter conquest:red_pazyryk_rug_vertical_slab conquest:red_pazyryk_rug_vertical_corner_slab conquest:nahavand_rug conquest:nahavand_rug_cover conquest:nahavand_rug_stairs conquest:nahavand_rug_slab conquest:nahavand_rug_corner_slab conquest:nahavand_rug_quarter_slab conquest:nahavand_rug_eighth_slab conquest:nahavand_rug_vertical_corner conquest:nahavand_rug_vertical_quarter conquest:nahavand_rug_vertical_slab conquest:nahavand_rug_vertical_corner_slab conquest:red_and_blue_sarouk_rug conquest:red_and_blue_sarouk_rug_cover conquest:red_and_blue_sarouk_rug_stairs conquest:red_and_blue_sarouk_rug_slab conquest:red_and_blue_sarouk_rug_corner_slab conquest:red_and_blue_sarouk_rug_quarter_slab conquest:red_and_blue_sarouk_rug_eighth_slab conquest:red_and_blue_sarouk_rug_vertical_corner conquest:red_and_blue_sarouk_rug_vertical_quarter conquest:red_and_blue_sarouk_rug_vertical_slab conquest:red_and_blue_sarouk_rug_vertical_corner_slab conquest:kilim_rug conquest:kilim_rug_cover conquest:kilim_rug_stairs conquest:kilim_rug_slab conquest:kilim_rug_corner_slab conquest:kilim_rug_quarter_slab conquest:kilim_rug_eighth_slab conquest:kilim_rug_vertical_corner conquest:kilim_rug_vertical_quarter conquest:kilim_rug_vertical_slab conquest:kilim_rug_vertical_corner_slab conquest:celtic_knot_rug conquest:celtic_knot_rug_cover conquest:celtic_knot_rug_stairs conquest:celtic_knot_rug_slab conquest:celtic_knot_rug_corner_slab conquest:celtic_knot_rug_quarter_slab conquest:celtic_knot_rug_eighth_slab conquest:celtic_knot_rug_vertical_corner conquest:celtic_knot_rug_vertical_quarter conquest:celtic_knot_rug_vertical_slab conquest:celtic_knot_rug_vertical_corner_slab conquest:william_morris_rug conquest:william_morris_rug_cover conquest:william_morris_rug_stairs conquest:william_morris_rug_slab conquest:william_morris_rug_corner_slab conquest:william_morris_rug_quarter_slab conquest:william_morris_rug_eighth_slab conquest:william_morris_rug_vertical_corner conquest:william_morris_rug_vertical_quarter conquest:william_morris_rug_vertical_slab conquest:william_morris_rug_vertical_corner_slab conquest:shirishabad_rug conquest:shirishabad_rug_cover conquest:shirishabad_rug_stairs conquest:shirishabad_rug_slab conquest:shirishabad_rug_corner_slab conquest:shirishabad_rug_quarter_slab conquest:shirishabad_rug_eighth_slab conquest:shirishabad_rug_vertical_corner conquest:shirishabad_rug_vertical_quarter conquest:shirishabad_rug_vertical_slab conquest:shirishabad_rug_vertical_corner_slab conquest:baotuo_rug conquest:baotuo_rug_cover conquest:baotuo_rug_stairs conquest:baotuo_rug_slab conquest:baotuo_rug_corner_slab conquest:baotuo_rug_quarter_slab conquest:baotuo_rug_eighth_slab conquest:baotuo_rug_vertical_corner conquest:baotuo_rug_vertical_quarter conquest:baotuo_rug_vertical_slab conquest:baotuo_rug_vertical_corner_slab conquest:blue_nain_rug conquest:blue_nain_rug_cover conquest:blue_nain_rug_stairs conquest:blue_nain_rug_slab conquest:blue_nain_rug_corner_slab conquest:blue_nain_rug_quarter_slab conquest:blue_nain_rug_eighth_slab conquest:blue_nain_rug_vertical_corner conquest:blue_nain_rug_vertical_quarter conquest:blue_nain_rug_vertical_slab conquest:blue_nain_rug_vertical_corner_slab conquest:kashmiri_carpet conquest:kashmiri_carpet_cover conquest:kashmiri_carpet_stairs conquest:kashmiri_carpet_slab conquest:kashmiri_carpet_corner_slab conquest:kashmiri_carpet_quarter_slab conquest:kashmiri_carpet_eighth_slab conquest:kashmiri_carpet_vertical_corner conquest:kashmiri_carpet_vertical_quarter conquest:kashmiri_carpet_vertical_slab conquest:kashmiri_carpet_vertical_corner_slab conquest:brown_oriental_carpet conquest:brown_oriental_carpet_cover conquest:brown_oriental_carpet_stairs conquest:brown_oriental_carpet_slab conquest:brown_oriental_carpet_corner_slab conquest:brown_oriental_carpet_quarter_slab conquest:brown_oriental_carpet_eighth_slab conquest:brown_oriental_carpet_vertical_corner conquest:brown_oriental_carpet_vertical_quarter conquest:brown_oriental_carpet_vertical_slab conquest:brown_oriental_carpet_vertical_corner_slab conquest:red_oriental_carpet conquest:red_oriental_carpet_cover conquest:red_oriental_carpet_stairs conquest:red_oriental_carpet_slab conquest:red_oriental_carpet_corner_slab conquest:red_oriental_carpet_quarter_slab conquest:red_oriental_carpet_eighth_slab conquest:red_oriental_carpet_vertical_corner conquest:red_oriental_carpet_vertical_quarter conquest:red_oriental_carpet_vertical_slab conquest:red_oriental_carpet_vertical_corner_slab conquest:burlap conquest:burlap_cover conquest:burlap_stairs conquest:burlap_slab conquest:burlap_corner_slab conquest:burlap_quarter_slab conquest:burlap_eighth_slab conquest:burlap_vertical_corner conquest:burlap_vertical_quarter conquest:burlap_vertical_slab conquest:old_red_6_way_flange conquest:burlap_vertical_corner_slab conquest:brown_patterned_silk conquest:brown_patterned_silk_cover conquest:brown_patterned_silk_stairs conquest:brown_patterned_silk_slab conquest:brown_patterned_silk_corner_slab conquest:brown_patterned_silk_quarter_slab conquest:brown_patterned_silk_eighth_slab conquest:brown_patterned_silk_vertical_corner conquest:brown_patterned_silk_vertical_quarter conquest:brown_patterned_silk_vertical_slab conquest:brown_patterned_silk_vertical_corner_slab conquest:white_silk conquest:white_silk_cover conquest:white_silk_stairs conquest:white_silk_slab conquest:white_silk_corner_slab conquest:white_silk_quarter_slab conquest:white_silk_eighth_slab conquest:white_silk_vertical_corner conquest:white_silk_vertical_quarter conquest:white_silk_vertical_slab conquest:white_silk_vertical_corner_slab conquest:light_gray_silk conquest:light_gray_silk_cover conquest:light_gray_silk_stairs conquest:light_gray_silk_slab conquest:light_gray_silk_corner_slab conquest:light_gray_silk_quarter_slab conquest:light_gray_silk_eighth_slab conquest:light_gray_silk_vertical_corner conquest:light_gray_silk_vertical_quarter conquest:light_gray_silk_vertical_slab conquest:light_gray_silk_vertical_corner_slab conquest:gray_silk conquest:gray_silk_cover conquest:gray_silk_stairs conquest:gray_silk_slab conquest:gray_silk_corner_slab conquest:gray_silk_quarter_slab conquest:gray_silk_eighth_slab conquest:gray_silk_vertical_corner conquest:gray_silk_vertical_quarter conquest:gray_silk_vertical_slab conquest:gray_silk_vertical_corner_slab conquest:black_floral_patterned_silk conquest:black_floral_patterned_silk_cover conquest:black_floral_patterned_silk_stairs conquest:black_floral_patterned_silk_slab conquest:black_floral_patterned_silk_corner_slab conquest:black_floral_patterned_silk_quarter_slab conquest:black_floral_patterned_silk_eighth_slab conquest:black_floral_patterned_silk_vertical_corner conquest:black_floral_patterned_silk_vertical_quarter conquest:black_floral_patterned_silk_vertical_slab conquest:black_floral_patterned_silk_vertical_corner_slab conquest:black_starry_patterned_silk conquest:black_starry_patterned_silk_cover conquest:black_starry_patterned_silk_stairs conquest:black_starry_patterned_silk_slab conquest:black_starry_patterned_silk_corner_slab conquest:black_starry_patterned_silk_quarter_slab conquest:black_starry_patterned_silk_eighth_slab conquest:black_starry_patterned_silk_vertical_corner conquest:black_starry_patterned_silk_vertical_quarter conquest:black_starry_patterned_silk_vertical_slab conquest:black_starry_patterned_silk_vertical_corner_slab conquest:purple_silk conquest:purple_silk_cover conquest:purple_silk_stairs conquest:purple_silk_slab conquest:purple_silk_corner_slab conquest:purple_silk_quarter_slab conquest:purple_silk_eighth_slab conquest:purple_silk_vertical_corner conquest:purple_silk_vertical_quarter conquest:purple_silk_vertical_slab conquest:purple_silk_vertical_corner_slab conquest:pink_silk conquest:pink_silk_cover conquest:pink_silk_stairs conquest:pink_silk_slab conquest:pink_silk_corner_slab conquest:pink_silk_quarter_slab conquest:pink_silk_eighth_slab conquest:pink_silk_vertical_corner conquest:pink_silk_vertical_quarter conquest:pink_silk_vertical_slab conquest:pink_silk_vertical_corner_slab conquest:red_silk conquest:red_silk_cover conquest:red_silk_stairs conquest:red_silk_slab conquest:red_silk_corner_slab conquest:red_silk_quarter_slab conquest:red_silk_eighth_slab conquest:red_silk_vertical_corner conquest:red_silk_vertical_quarter conquest:red_silk_vertical_slab conquest:red_silk_vertical_corner_slab conquest:red_patterned_silk conquest:red_patterned_silk_cover conquest:red_patterned_silk_stairs conquest:red_patterned_silk_slab conquest:red_patterned_silk_corner_slab conquest:red_patterned_silk_quarter_slab conquest:red_patterned_silk_eighth_slab conquest:red_patterned_silk_vertical_corner conquest:red_patterned_silk_vertical_quarter conquest:red_patterned_silk_vertical_slab conquest:red_patterned_silk_vertical_corner_slab conquest:orange_silk conquest:orange_silk_cover conquest:orange_silk_stairs conquest:orange_silk_slab conquest:orange_silk_corner_slab conquest:orange_silk_quarter_slab conquest:orange_silk_eighth_slab conquest:orange_silk_vertical_corner conquest:orange_silk_vertical_quarter conquest:orange_silk_vertical_slab conquest:orange_silk_vertical_corner_slab conquest:yellow_silk conquest:yellow_silk_cover conquest:yellow_silk_stairs conquest:yellow_silk_slab conquest:yellow_silk_corner_slab conquest:yellow_silk_quarter_slab conquest:yellow_silk_eighth_slab conquest:yellow_silk_vertical_corner conquest:yellow_silk_vertical_quarter conquest:yellow_silk_vertical_slab conquest:yellow_silk_vertical_corner_slab conquest:gold_silk conquest:gold_silk_cover conquest:gold_silk_stairs conquest:gold_silk_slab conquest:gold_silk_corner_slab conquest:gold_silk_quarter_slab conquest:gold_silk_eighth_slab conquest:gold_silk_vertical_corner conquest:gold_silk_vertical_quarter conquest:gold_silk_vertical_slab conquest:gold_silk_vertical_corner_slab conquest:gold_patterned_silk conquest:gold_patterned_silk_cover conquest:gold_patterned_silk_stairs conquest:gold_patterned_silk_slab conquest:gold_patterned_silk_corner_slab conquest:gold_patterned_silk_quarter_slab conquest:gold_patterned_silk_eighth_slab conquest:gold_patterned_silk_vertical_corner conquest:gold_patterned_silk_vertical_quarter conquest:gold_patterned_silk_vertical_slab conquest:gold_patterned_silk_vertical_corner_slab conquest:green_patterned_silk conquest:green_patterned_silk_cover conquest:green_patterned_silk_stairs conquest:green_patterned_silk_slab conquest:green_patterned_silk_corner_slab conquest:green_patterned_silk_quarter_slab conquest:green_patterned_silk_eighth_slab conquest:green_patterned_silk_vertical_corner conquest:green_patterned_silk_vertical_quarter conquest:green_patterned_silk_vertical_slab conquest:green_patterned_silk_vertical_corner_slab conquest:cyan_patterned_silk conquest:cyan_patterned_silk_cover conquest:cyan_patterned_silk_stairs conquest:cyan_patterned_silk_slab conquest:cyan_patterned_silk_corner_slab conquest:cyan_patterned_silk_quarter_slab conquest:cyan_patterned_silk_eighth_slab conquest:cyan_patterned_silk_vertical_corner conquest:cyan_patterned_silk_vertical_quarter conquest:cyan_patterned_silk_vertical_slab conquest:cyan_patterned_silk_vertical_corner_slab conquest:blue_floral_patterned_silk conquest:blue_floral_patterned_silk_cover conquest:blue_floral_patterned_silk_stairs conquest:blue_floral_patterned_silk_slab conquest:blue_floral_patterned_silk_corner_slab conquest:blue_floral_patterned_silk_quarter_slab conquest:blue_floral_patterned_silk_eighth_slab conquest:blue_floral_patterned_silk_vertical_corner conquest:blue_floral_patterned_silk_vertical_quarter conquest:blue_floral_patterned_silk_vertical_slab conquest:blue_floral_patterned_silk_vertical_corner_slab conquest:blue_starry_patterned_silk conquest:blue_starry_patterned_silk_cover conquest:blue_starry_patterned_silk_stairs conquest:blue_starry_patterned_silk_slab conquest:blue_starry_patterned_silk_corner_slab conquest:blue_starry_patterned_silk_quarter_slab conquest:blue_starry_patterned_silk_eighth_slab conquest:blue_starry_patterned_silk_vertical_corner conquest:blue_starry_patterned_silk_vertical_quarter conquest:blue_starry_patterned_silk_vertical_slab conquest:blue_starry_patterned_silk_vertical_corner_slab conquest:brown_carpet conquest:brown_carpet_stairs conquest:brown_carpet_slab conquest:brown_carpet_corner_slab conquest:brown_carpet_quarter_slab conquest:brown_carpet_eighth_slab conquest:brown_carpet_vertical_corner conquest:brown_carpet_vertical_quarter conquest:brown_carpet_vertical_slab conquest:brown_carpet_vertical_corner_slab conquest:white_carpet conquest:white_carpet_stairs conquest:white_carpet_slab conquest:white_carpet_corner_slab conquest:white_carpet_quarter_slab conquest:white_carpet_eighth_slab conquest:white_carpet_vertical_corner conquest:white_carpet_vertical_quarter conquest:white_carpet_vertical_slab conquest:white_carpet_vertical_corner_slab conquest:light_gray_carpet conquest:light_gray_carpet_stairs conquest:light_gray_carpet_slab conquest:light_gray_carpet_corner_slab conquest:light_gray_carpet_quarter_slab conquest:light_gray_carpet_eighth_slab conquest:light_gray_carpet_vertical_corner conquest:light_gray_carpet_vertical_quarter conquest:light_gray_carpet_vertical_slab conquest:light_gray_carpet_vertical_corner_slab conquest:gray_carpet conquest:gray_carpet_stairs conquest:gray_carpet_slab conquest:gray_carpet_corner_slab conquest:gray_carpet_quarter_slab conquest:gray_carpet_eighth_slab conquest:gray_carpet_vertical_corner conquest:gray_carpet_vertical_quarter conquest:gray_carpet_vertical_slab conquest:gray_carpet_vertical_corner_slab conquest:black_carpet conquest:black_carpet_stairs conquest:black_carpet_slab conquest:black_carpet_corner_slab conquest:black_carpet_quarter_slab conquest:black_carpet_eighth_slab conquest:black_carpet_vertical_corner conquest:black_carpet_vertical_quarter conquest:black_carpet_vertical_slab conquest:black_carpet_vertical_corner_slab conquest:purple_carpet conquest:purple_carpet_stairs conquest:purple_carpet_slab conquest:purple_carpet_corner_slab conquest:purple_carpet_quarter_slab conquest:purple_carpet_eighth_slab conquest:purple_carpet_vertical_corner conquest:purple_carpet_vertical_quarter conquest:purple_carpet_vertical_slab conquest:purple_carpet_vertical_corner_slab conquest:pink_carpet conquest:pink_carpet_stairs conquest:pink_carpet_slab conquest:pink_carpet_corner_slab conquest:pink_carpet_quarter_slab conquest:pink_carpet_eighth_slab conquest:pink_carpet_vertical_corner conquest:pink_carpet_vertical_quarter conquest:pink_carpet_vertical_slab conquest:pink_carpet_vertical_corner_slab conquest:red_carpet conquest:red_carpet_stairs conquest:red_carpet_slab conquest:red_carpet_corner_slab conquest:red_carpet_quarter_slab conquest:red_carpet_eighth_slab conquest:red_carpet_vertical_corner conquest:red_carpet_vertical_quarter conquest:red_carpet_vertical_slab conquest:red_carpet_vertical_corner_slab conquest:magenta_carpet conquest:magenta_carpet_stairs conquest:magenta_carpet_slab conquest:magenta_carpet_corner_slab conquest:magenta_carpet_quarter_slab conquest:magenta_carpet_eighth_slab conquest:magenta_carpet_vertical_corner conquest:magenta_carpet_vertical_quarter conquest:magenta_carpet_vertical_slab conquest:magenta_carpet_vertical_corner_slab conquest:orange_carpet conquest:orange_carpet_stairs conquest:orange_carpet_slab conquest:orange_carpet_corner_slab conquest:orange_carpet_quarter_slab conquest:orange_carpet_eighth_slab conquest:orange_carpet_vertical_corner conquest:orange_carpet_vertical_quarter conquest:orange_carpet_vertical_slab conquest:orange_carpet_vertical_corner_slab conquest:yellow_carpet conquest:yellow_carpet_stairs conquest:yellow_carpet_slab conquest:yellow_carpet_corner_slab conquest:yellow_carpet_quarter_slab conquest:yellow_carpet_eighth_slab conquest:yellow_carpet_vertical_corner conquest:yellow_carpet_vertical_quarter conquest:yellow_carpet_vertical_slab conquest:yellow_carpet_vertical_corner_slab conquest:lime_carpet conquest:lime_carpet_stairs conquest:lime_carpet_slab conquest:lime_carpet_corner_slab conquest:lime_carpet_quarter_slab conquest:lime_carpet_eighth_slab conquest:lime_carpet_vertical_corner conquest:lime_carpet_vertical_quarter conquest:lime_carpet_vertical_slab conquest:lime_carpet_vertical_corner_slab conquest:green_carpet conquest:green_carpet_stairs conquest:green_carpet_slab conquest:green_carpet_corner_slab conquest:green_carpet_quarter_slab conquest:green_carpet_eighth_slab conquest:green_carpet_vertical_corner conquest:green_carpet_vertical_quarter conquest:green_carpet_vertical_slab conquest:green_carpet_vertical_corner_slab conquest:cyan_carpet conquest:cyan_carpet_stairs conquest:cyan_carpet_slab conquest:cyan_carpet_corner_slab conquest:cyan_carpet_quarter_slab conquest:cyan_carpet_eighth_slab conquest:cyan_carpet_vertical_corner conquest:cyan_carpet_vertical_quarter conquest:cyan_carpet_vertical_slab conquest:cyan_carpet_vertical_corner_slab conquest:light_blue_carpet conquest:light_blue_carpet_stairs conquest:light_blue_carpet_slab conquest:light_blue_carpet_corner_slab conquest:light_blue_carpet_quarter_slab conquest:light_blue_carpet_eighth_slab conquest:light_blue_carpet_vertical_corner conquest:light_blue_carpet_vertical_quarter conquest:light_blue_carpet_vertical_slab conquest:light_blue_carpet_vertical_corner_slab conquest:blue_carpet conquest:blue_carpet_stairs conquest:blue_carpet_slab conquest:blue_carpet_corner_slab conquest:blue_carpet_quarter_slab conquest:blue_carpet_eighth_slab conquest:blue_carpet_vertical_corner conquest:blue_carpet_vertical_quarter conquest:blue_carpet_vertical_slab conquest:blue_carpet_vertical_corner_slab conquest:brown_wool_stairs conquest:brown_wool_slab conquest:brown_wool_corner_slab conquest:brown_wool_quarter_slab conquest:brown_wool_eighth_slab conquest:brown_wool_vertical_corner conquest:brown_wool_vertical_quarter conquest:brown_wool_vertical_slab conquest:brown_wool_vertical_corner_slab conquest:white_wool_stairs conquest:white_wool_slab conquest:white_wool_corner_slab conquest:white_wool_quarter_slab conquest:white_wool_eighth_slab conquest:white_wool_vertical_corner conquest:white_wool_vertical_quarter conquest:white_wool_vertical_slab conquest:white_wool_vertical_corner_slab conquest:light_gray_wool_stairs conquest:light_gray_wool_slab conquest:light_gray_wool_corner_slab conquest:light_gray_wool_quarter_slab conquest:light_gray_wool_eighth_slab conquest:light_gray_wool_vertical_corner conquest:light_gray_wool_vertical_quarter conquest:light_gray_wool_vertical_slab conquest:light_gray_wool_vertical_corner_slab conquest:gray_wool_stairs conquest:gray_wool_slab conquest:gray_wool_corner_slab conquest:gray_wool_quarter_slab conquest:gray_wool_eighth_slab conquest:gray_wool_vertical_corner conquest:gray_wool_vertical_quarter conquest:gray_wool_vertical_slab conquest:gray_wool_vertical_corner_slab conquest:black_wool_stairs conquest:black_wool_slab conquest:black_wool_corner_slab conquest:black_wool_quarter_slab conquest:black_wool_eighth_slab conquest:black_wool_vertical_corner conquest:black_wool_vertical_quarter conquest:black_wool_vertical_slab conquest:black_wool_vertical_corner_slab conquest:purple_wool_stairs conquest:purple_wool_slab conquest:purple_wool_corner_slab conquest:purple_wool_quarter_slab conquest:purple_wool_eighth_slab conquest:purple_wool_vertical_corner conquest:purple_wool_vertical_quarter conquest:purple_wool_vertical_slab conquest:purple_wool_vertical_corner_slab conquest:pink_wool_stairs conquest:pink_wool_slab conquest:pink_wool_corner_slab conquest:pink_wool_quarter_slab conquest:pink_wool_eighth_slab conquest:pink_wool_vertical_corner conquest:pink_wool_vertical_quarter conquest:pink_wool_vertical_slab conquest:pink_wool_vertical_corner_slab conquest:red_wool_stairs conquest:red_wool_slab conquest:red_wool_corner_slab conquest:red_wool_quarter_slab conquest:red_wool_eighth_slab conquest:red_wool_vertical_corner conquest:red_wool_vertical_quarter conquest:red_wool_vertical_slab conquest:red_wool_vertical_corner_slab conquest:magenta_wool_stairs conquest:magenta_wool_slab conquest:magenta_wool_corner_slab conquest:magenta_wool_quarter_slab conquest:magenta_wool_eighth_slab conquest:magenta_wool_vertical_corner conquest:magenta_wool_vertical_quarter conquest:magenta_wool_vertical_slab conquest:magenta_wool_vertical_corner_slab conquest:orange_wool_stairs conquest:orange_wool_slab conquest:orange_wool_corner_slab conquest:orange_wool_quarter_slab conquest:orange_wool_eighth_slab conquest:orange_wool_vertical_corner conquest:orange_wool_vertical_quarter conquest:orange_wool_vertical_slab conquest:orange_wool_vertical_corner_slab conquest:yellow_wool_stairs conquest:yellow_wool_slab conquest:yellow_wool_corner_slab conquest:yellow_wool_quarter_slab conquest:yellow_wool_eighth_slab conquest:yellow_wool_vertical_corner conquest:yellow_wool_vertical_quarter conquest:yellow_wool_vertical_slab conquest:yellow_wool_vertical_corner_slab conquest:lime_wool_stairs conquest:lime_wool_slab conquest:lime_wool_corner_slab conquest:lime_wool_quarter_slab conquest:lime_wool_eighth_slab conquest:lime_wool_vertical_corner conquest:lime_wool_vertical_quarter conquest:lime_wool_vertical_slab conquest:lime_wool_vertical_corner_slab conquest:green_wool_stairs conquest:green_wool_slab conquest:green_wool_corner_slab conquest:green_wool_quarter_slab conquest:green_wool_eighth_slab conquest:green_wool_vertical_corner conquest:green_wool_vertical_quarter conquest:green_wool_vertical_slab conquest:green_wool_vertical_corner_slab conquest:cyan_wool_stairs conquest:cyan_wool_slab conquest:cyan_wool_corner_slab conquest:cyan_wool_quarter_slab conquest:cyan_wool_eighth_slab conquest:cyan_wool_vertical_corner conquest:cyan_wool_vertical_quarter conquest:cyan_wool_vertical_slab conquest:cyan_wool_vertical_corner_slab conquest:light_blue_wool_stairs conquest:light_blue_wool_slab conquest:light_blue_wool_corner_slab conquest:light_blue_wool_quarter_slab conquest:light_blue_wool_eighth_slab conquest:light_blue_wool_vertical_corner conquest:light_blue_wool_vertical_quarter conquest:light_blue_wool_vertical_slab conquest:light_blue_wool_vertical_corner_slab conquest:blue_wool_stairs conquest:blue_wool_slab conquest:blue_wool_corner_slab conquest:blue_wool_quarter_slab conquest:blue_wool_eighth_slab conquest:blue_wool_vertical_corner conquest:blue_wool_vertical_quarter conquest:blue_wool_vertical_slab conquest:blue_wool_vertical_corner_slab conquest:brown_canvas conquest:brown_canvas_cover conquest:brown_canvas_stairs conquest:brown_canvas_slab conquest:brown_canvas_corner_slab conquest:brown_canvas_quarter_slab conquest:brown_canvas_eighth_slab conquest:brown_canvas_vertical_corner conquest:brown_canvas_vertical_quarter conquest:brown_canvas_vertical_slab conquest:brown_canvas_vertical_corner_slab conquest:white_canvas conquest:white_canvas_cover conquest:white_canvas_stairs conquest:white_canvas_slab conquest:white_canvas_corner_slab conquest:white_canvas_quarter_slab conquest:white_canvas_eighth_slab conquest:white_canvas_vertical_corner conquest:white_canvas_vertical_quarter conquest:white_canvas_vertical_slab conquest:white_canvas_vertical_corner_slab conquest:light_gray_canvas conquest:light_gray_canvas_cover conquest:light_gray_canvas_stairs conquest:light_gray_canvas_slab conquest:light_gray_canvas_corner_slab conquest:light_gray_canvas_quarter_slab conquest:light_gray_canvas_eighth_slab conquest:light_gray_canvas_vertical_corner conquest:light_gray_canvas_vertical_quarter conquest:light_gray_canvas_vertical_slab conquest:light_gray_canvas_vertical_corner_slab conquest:gray_canvas conquest:gray_canvas_cover conquest:gray_canvas_stairs conquest:gray_canvas_slab conquest:gray_canvas_corner_slab conquest:gray_canvas_quarter_slab conquest:gray_canvas_eighth_slab conquest:gray_canvas_vertical_corner conquest:gray_canvas_vertical_quarter conquest:gray_canvas_vertical_slab conquest:gray_canvas_vertical_corner_slab conquest:black_canvas conquest:black_canvas_cover conquest:black_canvas_stairs conquest:black_canvas_slab conquest:black_canvas_corner_slab conquest:black_canvas_quarter_slab conquest:black_canvas_eighth_slab conquest:black_canvas_vertical_corner conquest:black_canvas_vertical_quarter conquest:black_canvas_vertical_slab conquest:black_canvas_vertical_corner_slab conquest:purple_canvas conquest:purple_canvas_cover conquest:purple_canvas_stairs conquest:purple_canvas_slab conquest:purple_canvas_corner_slab conquest:purple_canvas_quarter_slab conquest:purple_canvas_eighth_slab conquest:purple_canvas_vertical_corner conquest:purple_canvas_vertical_quarter conquest:purple_canvas_vertical_slab conquest:purple_canvas_vertical_corner_slab conquest:pink_canvas conquest:pink_canvas_cover conquest:pink_canvas_stairs conquest:pink_canvas_slab conquest:pink_canvas_corner_slab conquest:pink_canvas_quarter_slab conquest:pink_canvas_eighth_slab conquest:pink_canvas_vertical_corner conquest:pink_canvas_vertical_quarter conquest:pink_canvas_vertical_slab conquest:pink_canvas_vertical_corner_slab conquest:red_canvas conquest:red_canvas_cover conquest:red_canvas_stairs conquest:red_canvas_slab conquest:red_canvas_corner_slab conquest:red_canvas_quarter_slab conquest:red_canvas_eighth_slab conquest:red_canvas_vertical_corner conquest:red_canvas_vertical_quarter conquest:red_canvas_vertical_slab conquest:red_canvas_vertical_corner_slab conquest:magenta_canvas conquest:magenta_canvas_cover conquest:magenta_canvas_stairs conquest:magenta_canvas_slab conquest:magenta_canvas_corner_slab conquest:magenta_canvas_quarter_slab conquest:magenta_canvas_eighth_slab conquest:magenta_canvas_vertical_corner conquest:magenta_canvas_vertical_quarter conquest:magenta_canvas_vertical_slab conquest:magenta_canvas_vertical_corner_slab conquest:orange_canvas conquest:orange_canvas_cover conquest:orange_canvas_stairs conquest:orange_canvas_slab conquest:orange_canvas_corner_slab conquest:orange_canvas_quarter_slab conquest:orange_canvas_eighth_slab conquest:orange_canvas_vertical_corner conquest:orange_canvas_vertical_quarter conquest:orange_canvas_vertical_slab conquest:orange_canvas_vertical_corner_slab conquest:yellow_canvas conquest:yellow_canvas_cover conquest:yellow_canvas_stairs conquest:yellow_canvas_slab conquest:yellow_canvas_corner_slab conquest:yellow_canvas_quarter_slab conquest:yellow_canvas_eighth_slab conquest:yellow_canvas_vertical_corner conquest:yellow_canvas_vertical_quarter conquest:yellow_canvas_vertical_slab conquest:yellow_canvas_vertical_corner_slab conquest:lime_canvas conquest:lime_canvas_cover conquest:lime_canvas_stairs conquest:lime_canvas_slab conquest:lime_canvas_corner_slab conquest:lime_canvas_quarter_slab conquest:lime_canvas_eighth_slab conquest:lime_canvas_vertical_corner conquest:lime_canvas_vertical_quarter conquest:lime_canvas_vertical_slab conquest:lime_canvas_vertical_corner_slab conquest:green_canvas conquest:green_canvas_cover conquest:green_canvas_stairs conquest:green_canvas_slab conquest:green_canvas_corner_slab conquest:green_canvas_quarter_slab conquest:green_canvas_eighth_slab conquest:green_canvas_vertical_corner conquest:green_canvas_vertical_quarter conquest:green_canvas_vertical_slab conquest:green_canvas_vertical_corner_slab conquest:cyan_canvas conquest:cyan_canvas_cover conquest:cyan_canvas_stairs conquest:cyan_canvas_slab conquest:cyan_canvas_corner_slab conquest:cyan_canvas_quarter_slab conquest:cyan_canvas_eighth_slab conquest:cyan_canvas_vertical_corner conquest:cyan_canvas_vertical_quarter conquest:cyan_canvas_vertical_slab conquest:cyan_canvas_vertical_corner_slab conquest:light_blue_canvas conquest:light_blue_canvas_cover conquest:light_blue_canvas_stairs conquest:light_blue_canvas_slab conquest:light_blue_canvas_corner_slab conquest:light_blue_canvas_quarter_slab conquest:light_blue_canvas_eighth_slab conquest:light_blue_canvas_vertical_corner conquest:light_blue_canvas_vertical_quarter conquest:light_blue_canvas_vertical_slab conquest:light_blue_canvas_vertical_corner_slab conquest:blue_canvas conquest:blue_canvas_cover conquest:blue_canvas_stairs conquest:blue_canvas_slab conquest:blue_canvas_corner_slab conquest:blue_canvas_quarter_slab conquest:blue_canvas_eighth_slab conquest:blue_canvas_vertical_corner conquest:blue_canvas_vertical_quarter conquest:blue_canvas_vertical_slab conquest:blue_canvas_vertical_corner_slab \ meadow:warped_wool meadow:flecked_wool meadow:highland_wool meadow:inky_wool meadow:patched_wool meadow:rocky_wool meadow:umbra_wool \ westerosblocks:clothesline westerosblocks:smoke westerosblocks:brown_mushroom_1 westerosblocks:brown_mushroom_2 westerosblocks:brown_mushroom_3 westerosblocks:brown_mushroom_4 westerosblocks:brown_mushroom_5 westerosblocks:brown_mushroom_6 westerosblocks:brown_mushroom_7 westerosblocks:brown_mushroom_8 westerosblocks:brown_mushroom_9 westerosblocks:brown_mushroom_10 westerosblocks:brown_mushroom_11 westerosblocks:brown_mushroom_12 westerosblocks:brown_mushroom_13 westerosblocks:red_mushroom_1 westerosblocks:red_mushroom_2 westerosblocks:red_mushroom_3 westerosblocks:red_mushroom_4 westerosblocks:red_mushroom_5 westerosblocks:red_mushroom_6 westerosblocks:red_mushroom_7 westerosblocks:red_mushroom_8 westerosblocks:red_mushroom_9 westerosblocks:white_wool_slab westerosblocks:orange_wool_slab westerosblocks:light_brown_wool_slab westerosblocks:light_blue_wool_slab westerosblocks:yellow_wool_slab westerosblocks:dirty_white_wool_slab westerosblocks:pink_wool_slab westerosblocks:grey_wool_slab westerosblocks:light_grey_wool_slab westerosblocks:cyan_wool_slab westerosblocks:purple_wool_slab westerosblocks:blue_wool_slab westerosblocks:brown_wool_slab westerosblocks:green_wool_slab westerosblocks:red_wool_slab westerosblocks:black_wool_slab westerosblocks:white_wool_carpet westerosblocks:orange_wool_carpet westerosblocks:light_brown_wool_carpet westerosblocks:light_blue_wool_carpet westerosblocks:yellow_wool_carpet westerosblocks:dirty_white_wool_carpet westerosblocks:pink_wool_carpet westerosblocks:grey_wool_carpet westerosblocks:light_grey_wool_carpet westerosblocks:cyan_wool_carpet westerosblocks:purple_wool_carpet westerosblocks:blue_wool_carpet westerosblocks:brown_wool_carpet westerosblocks:green_wool_carpet westerosblocks:red_wool_carpet westerosblocks:black_wool_carpet westerosblocks:thatch_light_fur_carpet westerosblocks:thatch_dark_fur_carpet \ @@ -184,15 +227,21 @@ block.83=minecraft:white_wall_banner minecraft:orange_wall_banner minecraft:mage ## weird blocks block.84=minecraft:sand minecraft:red_sand minecraft:suspicious_sand \ -conquest:sand_stairs conquest:sand_layer conquest:wet_sand conquest:wet_sand_stairs conquest:wet_sand_layer conquest:sand_and_gravel conquest:sand_and_gravel_stairs conquest:sand_and_gravel_layer conquest:wet_sand_and_gravel conquest:wet_sand_and_gravel_stairs conquest:wet_sand_and_gravel_layer conquest:sand_and_vegetation conquest:sand_and_vegetation_stairs conquest:sand_and_vegetation_layer conquest:wet_sand_and_vegetation conquest:wet_sand_and_vegetation_stairs conquest:wet_sand_and_vegetation_layer conquest:tan_sand conquest:tan_sand_stairs conquest:tan_sand_layer conquest:wet_tan_sand conquest:wet_tan_sand_stairs conquest:wet_tan_sand_layer conquest:brown_sand conquest:brown_sand_stairs conquest:brown_sand_layer conquest:wet_brown_sand conquest:wet_brown_sand_stairs conquest:wet_brown_sand_layer conquest:red_sand_stairs conquest:red_sand_layer conquest:red_sand_and_gravel conquest:red_sand_and_gravel_stairs conquest:red_sand_and_gravel_layer conquest:red_sand_and_vegetation conquest:red_sand_and_vegetation_stairs conquest:red_sand_and_vegetation_layer conquest:wet_river_sand conquest:wet_river_sand_stairs conquest:wet_river_sand_layer conquest:dry_river_sand conquest:dry_river_sand_stairs conquest:dry_river_sand_layer \ + conquest:sand_stairs conquest:sand_layer conquest:wet_sand conquest:wet_sand_stairs conquest:wet_sand_layer conquest:sand_and_gravel conquest:sand_and_gravel_stairs conquest:sand_and_gravel_layer conquest:wet_sand_and_gravel conquest:wet_sand_and_gravel_stairs conquest:wet_sand_and_gravel_layer conquest:sand_and_vegetation conquest:sand_and_vegetation_stairs conquest:sand_and_vegetation_layer conquest:wet_sand_and_vegetation conquest:wet_sand_and_vegetation_stairs conquest:wet_sand_and_vegetation_layer conquest:tan_sand conquest:tan_sand_stairs conquest:tan_sand_layer conquest:wet_tan_sand conquest:wet_tan_sand_stairs conquest:wet_tan_sand_layer conquest:brown_sand conquest:brown_sand_stairs conquest:brown_sand_layer conquest:wet_brown_sand conquest:wet_brown_sand_stairs conquest:wet_brown_sand_layer conquest:red_sand_stairs conquest:red_sand_layer conquest:red_sand_and_gravel conquest:red_sand_and_gravel_stairs conquest:red_sand_and_gravel_layer conquest:red_sand_and_vegetation conquest:red_sand_and_vegetation_stairs conquest:red_sand_and_vegetation_layer conquest:wet_river_sand conquest:wet_river_sand_stairs conquest:wet_river_sand_layer conquest:dry_river_sand conquest:dry_river_sand_stairs conquest:dry_river_sand_layer \ # conquest dirt blocks test -conquest:light_cracked_dirt conquest:light_cracked_dirt_corner_slab conquest:light_cracked_dirt_eighth_slab conquest:light_cracked_dirt_quarter_slab conquest:light_cracked_dirt_slab conquest:light_cracked_dirt_stairs conquest:light_cracked_dirt_vertical_corner conquest:light_cracked_dirt_vertical_quarter conquest:light_cracked_dirt_vertical_slab conquest:brown_earth conquest:brown_earth_corner_slab conquest:brown_earth_eighth_slab conquest:brown_earth_quarter_slab conquest:brown_earth_slab conquest:brown_earth_stairs conquest:brown_earth_vertical_corner conquest:brown_earth_vertical_quarter conquest:brown_earth_vertical_slab conquest:ochre_soil conquest:ochre_soil_corner_slab conquest:ochre_soil_eighth_slab conquest:ochre_soil_quarter_slab conquest:ochre_soil_slab conquest:ochre_soil_stairs conquest:ochre_soil_vertical_corner conquest:ochre_soil_vertical_quarter conquest:ochre_soil_vertical_slab conquest:dark_sandy_soil conquest:dark_sandy_soil_corner_slab conquest:dark_sandy_soil_eighth_slab conquest:dark_sandy_soil_quarter_slab conquest:dark_sandy_soil_slab conquest:dark_sandy_soil_stairs conquest:dark_sandy_soil_vertical_corner conquest:dark_sandy_soil_vertical_quarter conquest:dark_sandy_soil_vertical_slab conquest:light_silt conquest:light_silt_corner_slab conquest:light_silt_eighth_slab conquest:light_silt_quarter_slab conquest:light_silt_slab conquest:light_silt_stairs conquest:light_silt_vertical_corner conquest:light_silt_vertical_quarter conquest:light_silt_vertical_slab conquest:dark_silt conquest:dark_silt_corner_slab conquest:dark_silt_eighth_slab conquest:dark_silt_quarter_slab conquest:dark_silt_slab conquest:dark_silt_stairs conquest:dark_silt_vertical_corner conquest:dark_silt_vertical_quarter conquest:dark_silt_vertical_slab conquest:silty_lorien_dirt conquest:silty_lorien_dirt_corner_slab conquest:silty_lorien_dirt_eighth_slab conquest:silty_lorien_dirt_quarter_slab conquest:silty_lorien_dirt_slab conquest:silty_lorien_dirt_stairs conquest:silty_lorien_dirt_vertical_corner conquest:silty_lorien_dirt_vertical_quarter conquest:silty_lorien_dirt_vertical_slab conquest:dark_fertile_soil conquest:dark_fertile_soil_corner_slab conquest:dark_fertile_soil_eighth_slab conquest:dark_fertile_soil_quarter_slab conquest:dark_fertile_soil_slab conquest:dark_fertile_soil_stairs conquest:dark_fertile_soil_vertical_corner conquest:dark_fertile_soil_vertical_quarter conquest:dark_fertile_soil_vertical_slab conquest:peat conquest:peat_corner_slab conquest:peat_eighth_slab conquest:peat_quarter_slab conquest:peat_slab conquest:peat_stairs conquest:peat_vertical_corner conquest:peat_vertical_quarter conquest:peat_vertical_slab conquest:mud conquest:mud_corner_slab conquest:mud_eighth_slab conquest:mud_quarter_slab conquest:mud_slab conquest:mud_stairs conquest:mud_vertical_corner conquest:mud_vertical_quarter conquest:mud_vertical_slab conquest:thick_mud conquest:thick_mud_corner_slab conquest:thick_mud_eighth_slab conquest:thick_mud_quarter_slab conquest:thick_mud_slab conquest:thick_mud_stairs conquest:thick_mud_vertical_corner conquest:thick_mud_vertical_quarter conquest:thick_mud_vertical_slab conquest:clay_rich_mud conquest:clay_rich_mud_corner_slab conquest:clay_rich_mud_eighth_slab conquest:clay_rich_mud_quarter_slab conquest:clay_rich_mud_slab conquest:clay_rich_mud_stairs conquest:clay_rich_mud_vertical_corner conquest:clay_rich_mud_vertical_quarter conquest:clay_rich_mud_vertical_slab conquest:coarse_chalky_soil conquest:coarse_chalky_soil_corner_slab conquest:coarse_chalky_soil_eighth_slab conquest:coarse_chalky_soil_quarter_slab conquest:coarse_chalky_soil_slab conquest:coarse_chalky_soil_stairs conquest:coarse_chalky_soil_vertical_corner conquest:coarse_chalky_soil_vertical_quarter conquest:coarse_chalky_soil_vertical_slab conquest:chalky_soil conquest:chalky_soil_corner_slab conquest:chalky_soil_eighth_slab conquest:chalky_soil_quarter_slab conquest:chalky_soil_slab conquest:chalky_soil_stairs conquest:chalky_soil_vertical_corner conquest:chalky_soil_vertical_quarter conquest:chalky_soil_vertical_slab conquest:blue_soil conquest:blue_soil_corner_slab conquest:blue_soil_eighth_slab conquest:blue_soil_quarter_slab conquest:blue_soil_slab conquest:blue_soil_stairs conquest:blue_soil_vertical_corner conquest:blue_soil_vertical_quarter conquest:blue_soil_vertical_slab conquest:coarse_white_dirt conquest:coarse_white_dirt_corner_slab conquest:coarse_white_dirt_eighth_slab conquest:coarse_white_dirt_quarter_slab conquest:coarse_white_dirt_slab conquest:coarse_white_dirt_stairs conquest:coarse_white_dirt_vertical_corner conquest:coarse_white_dirt_vertical_quarter conquest:coarse_white_dirt_vertical_slab conquest:medium_white_dirt conquest:medium_white_dirt_corner_slab conquest:medium_white_dirt_eighth_slab conquest:medium_white_dirt_quarter_slab conquest:medium_white_dirt_slab conquest:medium_white_dirt_stairs conquest:medium_white_dirt_vertical_corner conquest:medium_white_dirt_vertical_quarter conquest:medium_white_dirt_vertical_slab conquest:fine_white_dirt conquest:fine_white_dirt_corner_slab conquest:fine_white_dirt_eighth_slab conquest:fine_white_dirt_quarter_slab conquest:fine_white_dirt_slab conquest:fine_white_dirt_stairs conquest:fine_white_dirt_vertical_corner conquest:fine_white_dirt_vertical_quarter conquest:fine_white_dirt_vertical_slab conquest:dusty_white_dirt conquest:dusty_white_dirt_corner_slab conquest:dusty_white_dirt_eighth_slab conquest:dusty_white_dirt_quarter_slab conquest:dusty_white_dirt_slab conquest:dusty_white_dirt_stairs conquest:dusty_white_dirt_vertical_corner conquest:dusty_white_dirt_vertical_quarter conquest:dusty_white_dirt_vertical_slab conquest:dusty_yellow_dirt conquest:dusty_yellow_dirt_corner_slab conquest:dusty_yellow_dirt_eighth_slab conquest:dusty_yellow_dirt_quarter_slab conquest:dusty_yellow_dirt_slab conquest:dusty_yellow_dirt_stairs conquest:dusty_yellow_dirt_vertical_corner conquest:dusty_yellow_dirt_vertical_quarter conquest:dusty_yellow_dirt_vertical_slab conquest:fine_yellow_dirt conquest:fine_yellow_dirt_corner_slab conquest:fine_yellow_dirt_eighth_slab conquest:fine_yellow_dirt_quarter_slab conquest:fine_yellow_dirt_slab conquest:fine_yellow_dirt_stairs conquest:fine_yellow_dirt_vertical_corner conquest:fine_yellow_dirt_vertical_quarter conquest:fine_yellow_dirt_vertical_slab conquest:medium_yellow_dirt conquest:medium_yellow_dirt_corner_slab conquest:medium_yellow_dirt_eighth_slab conquest:medium_yellow_dirt_quarter_slab conquest:medium_yellow_dirt_slab conquest:medium_yellow_dirt_stairs conquest:medium_yellow_dirt_vertical_corner conquest:medium_yellow_dirt_vertical_quarter conquest:medium_yellow_dirt_vertical_slab conquest:coarse_red_dirt conquest:coarse_red_dirt_corner_slab conquest:coarse_red_dirt_eighth_slab conquest:coarse_red_dirt_quarter_slab conquest:coarse_red_dirt_slab conquest:coarse_red_dirt_stairs conquest:coarse_red_dirt_vertical_corner conquest:coarse_red_dirt_vertical_quarter conquest:coarse_red_dirt_vertical_slab conquest:sandy_soil conquest:sandy_soil_corner_slab conquest:sandy_soil_eighth_slab conquest:sandy_soil_quarter_slab conquest:sandy_soil_slab conquest:sandy_soil_stairs conquest:sandy_soil_vertical_corner conquest:sandy_soil_vertical_quarter conquest:sandy_soil_vertical_slab conquest:wet_purple_sand conquest:wet_purple_sand_stairs conquest:wet_purple_sand_layer conquest:purple_sand conquest:purple_sand_stairs conquest:purple_sand_layer conquest:soul_sand conquest:soul_sand_stairs conquest:soul_sand_layer conquest:zen_garden_dirt conquest:zen_garden_dirt_stairs conquest:zen_garden_dirt_layer conquest:soul_soil conquest:soul_soil_stairs conquest:soul_soil_layer\ + conquest:light_cracked_dirt conquest:light_cracked_dirt_corner_slab conquest:light_cracked_dirt_eighth_slab conquest:light_cracked_dirt_quarter_slab conquest:light_cracked_dirt_slab conquest:light_cracked_dirt_stairs conquest:light_cracked_dirt_vertical_corner conquest:light_cracked_dirt_vertical_quarter conquest:light_cracked_dirt_vertical_slab conquest:brown_earth conquest:brown_earth_corner_slab conquest:brown_earth_eighth_slab conquest:brown_earth_quarter_slab conquest:brown_earth_slab conquest:brown_earth_stairs conquest:brown_earth_vertical_corner conquest:brown_earth_vertical_quarter conquest:brown_earth_vertical_slab conquest:ochre_soil conquest:ochre_soil_corner_slab conquest:ochre_soil_eighth_slab conquest:ochre_soil_quarter_slab conquest:ochre_soil_slab conquest:ochre_soil_stairs conquest:ochre_soil_vertical_corner conquest:ochre_soil_vertical_quarter conquest:ochre_soil_vertical_slab conquest:dark_sandy_soil conquest:dark_sandy_soil_corner_slab conquest:dark_sandy_soil_eighth_slab conquest:dark_sandy_soil_quarter_slab conquest:dark_sandy_soil_slab conquest:dark_sandy_soil_stairs conquest:dark_sandy_soil_vertical_corner conquest:dark_sandy_soil_vertical_quarter conquest:dark_sandy_soil_vertical_slab conquest:light_silt conquest:light_silt_corner_slab conquest:light_silt_eighth_slab conquest:light_silt_quarter_slab conquest:light_silt_slab conquest:light_silt_stairs conquest:light_silt_vertical_corner conquest:light_silt_vertical_quarter conquest:light_silt_vertical_slab conquest:dark_silt conquest:dark_silt_corner_slab conquest:dark_silt_eighth_slab conquest:dark_silt_quarter_slab conquest:dark_silt_slab conquest:dark_silt_stairs conquest:dark_silt_vertical_corner conquest:dark_silt_vertical_quarter conquest:dark_silt_vertical_slab conquest:silty_lorien_dirt conquest:silty_lorien_dirt_corner_slab conquest:silty_lorien_dirt_eighth_slab conquest:silty_lorien_dirt_quarter_slab conquest:silty_lorien_dirt_slab conquest:silty_lorien_dirt_stairs conquest:silty_lorien_dirt_vertical_corner conquest:silty_lorien_dirt_vertical_quarter conquest:silty_lorien_dirt_vertical_slab conquest:dark_fertile_soil conquest:dark_fertile_soil_corner_slab conquest:dark_fertile_soil_eighth_slab conquest:dark_fertile_soil_quarter_slab conquest:dark_fertile_soil_slab conquest:dark_fertile_soil_stairs conquest:dark_fertile_soil_vertical_corner conquest:dark_fertile_soil_vertical_quarter conquest:dark_fertile_soil_vertical_slab conquest:peat conquest:peat_corner_slab conquest:peat_eighth_slab conquest:peat_quarter_slab conquest:peat_slab conquest:peat_stairs conquest:peat_vertical_corner conquest:peat_vertical_quarter conquest:peat_vertical_slab conquest:mud conquest:mud_corner_slab conquest:mud_eighth_slab conquest:mud_quarter_slab conquest:mud_slab conquest:mud_stairs conquest:mud_vertical_corner conquest:mud_vertical_quarter conquest:mud_vertical_slab conquest:thick_mud conquest:thick_mud_corner_slab conquest:thick_mud_eighth_slab conquest:thick_mud_quarter_slab conquest:thick_mud_slab conquest:thick_mud_stairs conquest:thick_mud_vertical_corner conquest:thick_mud_vertical_quarter conquest:thick_mud_vertical_slab conquest:clay_rich_mud conquest:clay_rich_mud_corner_slab conquest:clay_rich_mud_eighth_slab conquest:clay_rich_mud_quarter_slab conquest:clay_rich_mud_slab conquest:clay_rich_mud_stairs conquest:clay_rich_mud_vertical_corner conquest:clay_rich_mud_vertical_quarter conquest:clay_rich_mud_vertical_slab conquest:coarse_chalky_soil conquest:coarse_chalky_soil_corner_slab conquest:coarse_chalky_soil_eighth_slab conquest:coarse_chalky_soil_quarter_slab conquest:coarse_chalky_soil_slab conquest:coarse_chalky_soil_stairs conquest:coarse_chalky_soil_vertical_corner conquest:coarse_chalky_soil_vertical_quarter conquest:coarse_chalky_soil_vertical_slab conquest:chalky_soil conquest:chalky_soil_corner_slab conquest:chalky_soil_eighth_slab conquest:chalky_soil_quarter_slab conquest:chalky_soil_slab conquest:chalky_soil_stairs conquest:chalky_soil_vertical_corner conquest:chalky_soil_vertical_quarter conquest:chalky_soil_vertical_slab conquest:blue_soil conquest:blue_soil_corner_slab conquest:blue_soil_eighth_slab conquest:blue_soil_quarter_slab conquest:blue_soil_slab conquest:blue_soil_stairs conquest:blue_soil_vertical_corner conquest:blue_soil_vertical_quarter conquest:blue_soil_vertical_slab conquest:coarse_white_dirt conquest:coarse_white_dirt_corner_slab conquest:coarse_white_dirt_eighth_slab conquest:coarse_white_dirt_quarter_slab conquest:coarse_white_dirt_slab conquest:coarse_white_dirt_stairs conquest:coarse_white_dirt_vertical_corner conquest:coarse_white_dirt_vertical_quarter conquest:coarse_white_dirt_vertical_slab conquest:medium_white_dirt conquest:medium_white_dirt_corner_slab conquest:medium_white_dirt_eighth_slab conquest:medium_white_dirt_quarter_slab conquest:medium_white_dirt_slab conquest:medium_white_dirt_stairs conquest:medium_white_dirt_vertical_corner conquest:medium_white_dirt_vertical_quarter conquest:medium_white_dirt_vertical_slab conquest:fine_white_dirt conquest:fine_white_dirt_corner_slab conquest:fine_white_dirt_eighth_slab conquest:fine_white_dirt_quarter_slab conquest:fine_white_dirt_slab conquest:fine_white_dirt_stairs conquest:fine_white_dirt_vertical_corner conquest:fine_white_dirt_vertical_quarter conquest:fine_white_dirt_vertical_slab conquest:dusty_white_dirt conquest:dusty_white_dirt_corner_slab conquest:dusty_white_dirt_eighth_slab conquest:dusty_white_dirt_quarter_slab conquest:dusty_white_dirt_slab conquest:dusty_white_dirt_stairs conquest:dusty_white_dirt_vertical_corner conquest:dusty_white_dirt_vertical_quarter conquest:dusty_white_dirt_vertical_slab conquest:dusty_yellow_dirt conquest:dusty_yellow_dirt_corner_slab conquest:dusty_yellow_dirt_eighth_slab conquest:dusty_yellow_dirt_quarter_slab conquest:dusty_yellow_dirt_slab conquest:dusty_yellow_dirt_stairs conquest:dusty_yellow_dirt_vertical_corner conquest:dusty_yellow_dirt_vertical_quarter conquest:dusty_yellow_dirt_vertical_slab conquest:fine_yellow_dirt conquest:fine_yellow_dirt_corner_slab conquest:fine_yellow_dirt_eighth_slab conquest:fine_yellow_dirt_quarter_slab conquest:fine_yellow_dirt_slab conquest:fine_yellow_dirt_stairs conquest:fine_yellow_dirt_vertical_corner conquest:fine_yellow_dirt_vertical_quarter conquest:fine_yellow_dirt_vertical_slab conquest:medium_yellow_dirt conquest:medium_yellow_dirt_corner_slab conquest:medium_yellow_dirt_eighth_slab conquest:medium_yellow_dirt_quarter_slab conquest:medium_yellow_dirt_slab conquest:medium_yellow_dirt_stairs conquest:medium_yellow_dirt_vertical_corner conquest:medium_yellow_dirt_vertical_quarter conquest:medium_yellow_dirt_vertical_slab conquest:coarse_red_dirt conquest:coarse_red_dirt_corner_slab conquest:coarse_red_dirt_eighth_slab conquest:coarse_red_dirt_quarter_slab conquest:coarse_red_dirt_slab conquest:coarse_red_dirt_stairs conquest:coarse_red_dirt_vertical_corner conquest:coarse_red_dirt_vertical_quarter conquest:coarse_red_dirt_vertical_slab conquest:sandy_soil conquest:sandy_soil_corner_slab conquest:sandy_soil_eighth_slab conquest:sandy_soil_quarter_slab conquest:sandy_soil_slab conquest:sandy_soil_stairs conquest:sandy_soil_vertical_corner conquest:sandy_soil_vertical_quarter conquest:sandy_soil_vertical_slab conquest:wet_purple_sand conquest:wet_purple_sand_stairs conquest:wet_purple_sand_layer conquest:purple_sand conquest:purple_sand_stairs conquest:purple_sand_layer conquest:soul_sand conquest:soul_sand_stairs conquest:soul_sand_layer conquest:zen_garden_dirt conquest:zen_garden_dirt_stairs conquest:zen_garden_dirt_layer conquest:soul_soil conquest:soul_soil_stairs conquest:soul_soil_layer\ ## grass uwu block.85=minecraft:grass_block:snowy=false \ -terrainslabs:grass_slab \ -conquest:grass_block_corner_slab conquest:grass_block_eighth_slab conquest:grass_block_layer conquest:grass_block_quarter_slab conquest:grass_block_stairs conquest:grass_block_vertical_corner conquest:grass_block_vertical_corner_slab conquest:grass_block_vertical_quarter conquest:grass_block_vertical_slab conquest:grass_covered_limestone conquest:grass_covered_limestone_stairs conquest:grass_covered_limestone_vertical_corner conquest:grass_covered_limestone_vertical_quarter conquest:grass_covered_limestone_vertical_slab conquest:clover_covered_grass conquest:clover_covered_grass_corner_slab conquest:clover_covered_grass_eighth_slab conquest:clover_covered_grass_layer conquest:clover_covered_grass_quarter_slab conquest:clover_covered_grass_stairs conquest:clover_covered_grass_vertical_corner conquest:clover_covered_grass_vertical_corner_slab conquest:clover_covered_grass_vertical_quarter conquest:clover_covered_grass_vertical_slab conquest:taiga_grass conquest:taiga_grass_corner_slab conquest:taiga_grass_eighth_slab conquest:taiga_grass_layer conquest:taiga_grass_quarter_slab conquest:taiga_grass_stairs conquest:taiga_grass_vertical_corner conquest:taiga_grass_vertical_corner_slab conquest:taiga_grass_vertical_quarter conquest:taiga_grass_vertical_slab conquest:mossy_sandstone_debris conquest:mossy_sandstone_debris_stairs conquest:mossy_sandstone_debris_layer \ + terrainslabs:grass_slab \ + conquest:grass_block_corner_slab conquest:grass_block_eighth_slab conquest:grass_block_layer conquest:grass_block_quarter_slab conquest:grass_block_stairs conquest:grass_block_vertical_corner conquest:grass_block_vertical_corner_slab conquest:grass_block_vertical_quarter conquest:grass_block_vertical_slab conquest:grass_covered_limestone conquest:grass_covered_limestone_stairs conquest:grass_covered_limestone_vertical_corner conquest:grass_covered_limestone_vertical_quarter conquest:grass_covered_limestone_vertical_slab conquest:clover_covered_grass conquest:clover_covered_grass_corner_slab conquest:clover_covered_grass_eighth_slab conquest:clover_covered_grass_layer conquest:clover_covered_grass_quarter_slab conquest:clover_covered_grass_stairs conquest:clover_covered_grass_vertical_corner conquest:clover_covered_grass_vertical_corner_slab conquest:clover_covered_grass_vertical_quarter conquest:clover_covered_grass_vertical_slab conquest:taiga_grass conquest:taiga_grass_corner_slab conquest:taiga_grass_eighth_slab conquest:taiga_grass_layer conquest:taiga_grass_quarter_slab conquest:taiga_grass_stairs conquest:taiga_grass_vertical_corner conquest:taiga_grass_vertical_corner_slab conquest:taiga_grass_vertical_quarter conquest:taiga_grass_vertical_slab conquest:mossy_sandstone_debris conquest:mossy_sandstone_debris_stairs conquest:mossy_sandstone_debris_layer +block.87=cobweb minecraft:kelp_plant minecraft:sugar_cane minecraft:crimson_fungus minecraft:warped_fungus minecraft:brown_mushroom minecraft:red_mushroom minecraft:cave_vines_plant:berries=false minecraft:big_dripleaf_stem \ + biomesoplenty:high_grass_plant + +block.88=minecraft:small_amethyst_bud pointed_dripstone + +block.89=minecraft:cactus ####### ----- lightsources ----- ####### @@ -486,8 +535,7 @@ block.194=furnace:lit=true blast_furnace:lit=true smoker:lit=true \ farmersdelight:stove \ create:blaze_burner create:lit_blaze_burner -block.195=glow_lichen \ - flying_stuff:celestium_spike flying_stuff:celestium_antenna +block.195=flying_stuff:celestium_spike flying_stuff:celestium_antenna block.196=glowstone \ mcwlights:glowstone_slab \ @@ -704,7 +752,20 @@ block.266=sculk sculk_sensor sculk_catalyst calibrated_sculk_sensor sculk_shriek block.267=enchanting_table -block.268=copper_torch copper_wall_torch copper_lantern exposed_copper_lantern weathered_copper_lantern oxidized_copper_lantern waxed_copper_lantern waxed_exposed_copper_lantern waxed_weathered_copper_lantern waxed_oxidized_copper_lantern +block.268=copper_torch copper_wall_torch +block.269=copper_lantern exposed_copper_lantern weathered_copper_lantern oxidized_copper_lantern waxed_copper_lantern waxed_exposed_copper_lantern waxed_weathered_copper_lantern waxed_oxidized_copper_lantern + +block.270=glow_lichen + +block.276=sculk_vein + +block.282=vine_entry + +block.287=daylight_detector +block.288=redstone_torch:lit=false + +block.289=end_portal_frame +block.290=hopper ####### ----- reflective translucents / glass ----- ####### @@ -759,15 +820,15 @@ block.316=white_stained_glass white_stained_glass_pane \ block.317=yellow_stained_glass yellow_stained_glass_pane \ diagonalwindows:minecraft/yellow_stained_glass_pane -block.318=honey_block +block.335=honey_block -block.319=ice frosted_ice +block.336=ice frosted_ice -block.320=nether_portal +block.337=nether_portal -block.321=slime_block +block.338=slime_block -block.322=biomesoplenty:wispjelly +block.339=biomesoplenty:wispjelly ####### ----- LPV shapes ----- ####### @@ -776,7 +837,7 @@ block.322=biomesoplenty:wispjelly #else #define carpet_entry pale_moss_carpet moss_carpet black_carpet blue_carpet brown_carpet cyan_carpet gray_carpet green_carpet light_blue_carpet light_gray_carpet lime_carpet magenta_carpet orange_carpet pink_carpet purple_carpet red_carpet white_carpet yellow_carpet #endif -block.401=carpet_entry wool_carpets +block.401=carpet_entry wool_carpets lectern block.402=pale_oak_door:facing=north:open=false acacia_door:facing=north:open=false bamboo_door:facing=north:open=false birch_door:facing=north:open=false cherry_door:facing=north:open=false crimson_door:facing=north:open=false dark_oak_door:facing=north:open=false iron_door:facing=north:open=false jungle_door:facing=north:open=false mangrove_door:facing=north:open=false oak_door:facing=north:open=false spruce_door:facing=north:open=false warped_door:facing=north:open=false copper_door:facing=north:open=false exposed_copper_door:facing=north:open=false weathered_copper_door:facing=north:open=false oxidized_copper_door:facing=north:open=false waxed_copper_door:facing=north:open=false waxed_exposed_copper_door:facing=north:open=false waxed_weathered_copper_door:facing=north:open=false waxed_oxidized_copper_door:facing=north:open=false pale_oak_door:facing=west:hinge=left:open=true acacia_door:facing=west:hinge=left:open=true bamboo_door:facing=west:hinge=left:open=true birch_door:facing=west:hinge=left:open=true cherry_door:facing=west:hinge=left:open=true crimson_door:facing=west:hinge=left:open=true dark_oak_door:facing=west:hinge=left:open=true iron_door:facing=west:hinge=left:open=true jungle_door:facing=west:hinge=left:open=true mangrove_door:facing=west:hinge=left:open=true oak_door:facing=west:hinge=left:open=true spruce_door:facing=west:hinge=left:open=true warped_door:facing=west:hinge=left:open=true copper_door:facing=west:hinge=left:open=true exposed_copper_door:facing=west:hinge=left:open=true weathered_copper_door:facing=west:hinge=left:open=true oxidized_copper_door:facing=west:hinge=left:open=true waxed_copper_door:facing=west:hinge=left:open=true waxed_exposed_copper_door:facing=west:hinge=left:open=true waxed_weathered_copper_door:facing=west:hinge=left:open=true waxed_oxidized_copper_door:facing=west:hinge=left:open=true pale_oak_door:facing=east:hinge=right:open=true acacia_door:facing=east:hinge=right:open=true bamboo_door:facing=east:hinge=right:open=true birch_door:facing=east:hinge=right:open=true cherry_door:facing=east:hinge=right:open=true crimson_door:facing=east:hinge=right:open=true dark_oak_door:facing=east:hinge=right:open=true iron_door:facing=east:hinge=right:open=true jungle_door:facing=east:hinge=right:open=true mangrove_door:facing=east:hinge=right:open=true oak_door:facing=east:hinge=right:open=true spruce_door:facing=east:hinge=right:open=true warped_door:facing=east:hinge=right:open=true copper_door:facing=east:hinge=right:open=true exposed_copper_door:facing=east:hinge=right:open=true weathered_copper_door:facing=east:hinge=right:open=true oxidized_copper_door:facing=east:hinge=right:open=true waxed_copper_door:facing=east:hinge=right:open=true waxed_exposed_copper_door:facing=east:hinge=right:open=true waxed_weathered_copper_door:facing=east:hinge=right:open=true waxed_oxidized_copper_door:facing=east:hinge=right:open=true @@ -793,7 +854,7 @@ block.406=pale_oak_pressure_plate acacia_pressure_plate bamboo_pressure_plate bi block.407=pale_oak_slab:type=top acacia_slab:type=top bamboo_slab:type=top bamboo_mosaic_slab:type=top birch_slab:type=top cherry_slab:type=top crimson_slab:type=top dark_oak_slab:type=top jungle_slab:type=top mangrove_slab:type=top oak_slab:type=top spruce_slab:type=top warped_slab:type=top andesite_slab:type=top blackstone_slab:type=top brick_slab:type=top cobbled_deepslate_slab:type=top cobblestone_slab:type=top cut_copper_slab:type=top cut_red_sandstone_slab:type=top cut_sandstone_slab:type=top dark_prismarine_slab:type=top deepslate_brick_slab:type=top deepslate_tile_slab:type=top diorite_slab:type=top end_stone_brick_slab:type=top exposed_cut_copper_slab:type=top granite_slab:type=top mossy_cobblestone_slab:type=top mossy_stone_brick_slab:type=top mud_brick_slab:type=top nether_brick_slab:type=top oxidized_cut_copper_slab:type=top petrified_oak_slab:type=top polished_andesite_slab:type=top polished_blackstone_brick_slab:type=top polished_blackstone_slab:type=top polished_deepslate_slab:type=top polished_diorite_slab:type=top polished_granite_slab:type=top prismarine_brick_slab:type=top prismarine_slab:type=top purpur_slab:type=top quartz_slab:type=top red_nether_brick_slab:type=top red_sandstone_slab:type=top sandstone_slab:type=top smooth_quartz_slab:type=top smooth_red_sandstone_slab:type=top smooth_sandstone_slab:type=top smooth_stone_slab:type=top stone_brick_slab:type=top stone_slab:type=top waxed_cut_copper_slab:type=top waxed_exposed_cut_copper_slab:type=top waxed_oxidized_cut_copper_slab:type=top waxed_weathered_cut_copper_slab:type=top weathered_cut_copper_slab:type=top -block.408=pale_oak_slab:type=bottom acacia_slab:type=bottom bamboo_slab:type=bottom bamboo_mosaic_slab:type=bottom birch_slab:type=bottom cherry_slab:type=bottom crimson_slab:type=bottom dark_oak_slab:type=bottom jungle_slab:type=bottom mangrove_slab:type=bottom oak_slab:type=bottom spruce_slab:type=bottom warped_slab:type=bottom andesite_slab:type=bottom blackstone_slab:type=bottom brick_slab:type=bottom cobbled_deepslate_slab:type=bottom cobblestone_slab:type=bottom cut_copper_slab:type=bottom cut_red_sandstone_slab:type=bottom cut_sandstone_slab:type=bottom dark_prismarine_slab:type=bottom deepslate_brick_slab:type=bottom deepslate_tile_slab:type=bottom diorite_slab:type=bottom end_stone_brick_slab:type=bottom exposed_cut_copper_slab:type=bottom granite_slab:type=bottom mossy_cobblestone_slab:type=bottom mossy_stone_brick_slab:type=bottom mud_brick_slab:type=bottom nether_brick_slab:type=bottom oxidized_cut_copper_slab:type=bottom petrified_oak_slab:type=bottom polished_andesite_slab:type=bottom polished_blackstone_brick_slab:type=bottom polished_blackstone_slab:type=bottom polished_deepslate_slab:type=bottom polished_diorite_slab:type=bottom polished_granite_slab:type=bottom prismarine_brick_slab:type=bottom prismarine_slab:type=bottom purpur_slab:type=bottom quartz_slab:type=bottom red_nether_brick_slab:type=bottom red_sandstone_slab:type=bottom sandstone_slab:type=bottom smooth_quartz_slab:type=bottom smooth_red_sandstone_slab:type=bottom smooth_sandstone_slab:type=bottom smooth_stone_slab:type=bottom stone_brick_slab:type=bottom stone_slab:type=bottom waxed_cut_copper_slab:type=bottom waxed_exposed_cut_copper_slab:type=bottom waxed_oxidized_cut_copper_slab:type=bottom waxed_weathered_cut_copper_slab:type=bottom weathered_cut_copper_slab:type=bottom daylight_detector +block.408=pale_oak_slab:type=bottom acacia_slab:type=bottom bamboo_slab:type=bottom bamboo_mosaic_slab:type=bottom birch_slab:type=bottom cherry_slab:type=bottom crimson_slab:type=bottom dark_oak_slab:type=bottom jungle_slab:type=bottom mangrove_slab:type=bottom oak_slab:type=bottom spruce_slab:type=bottom warped_slab:type=bottom andesite_slab:type=bottom blackstone_slab:type=bottom brick_slab:type=bottom cobbled_deepslate_slab:type=bottom cobblestone_slab:type=bottom cut_copper_slab:type=bottom cut_red_sandstone_slab:type=bottom cut_sandstone_slab:type=bottom dark_prismarine_slab:type=bottom deepslate_brick_slab:type=bottom deepslate_tile_slab:type=bottom diorite_slab:type=bottom end_stone_brick_slab:type=bottom exposed_cut_copper_slab:type=bottom granite_slab:type=bottom mossy_cobblestone_slab:type=bottom mossy_stone_brick_slab:type=bottom mud_brick_slab:type=bottom nether_brick_slab:type=bottom oxidized_cut_copper_slab:type=bottom petrified_oak_slab:type=bottom polished_andesite_slab:type=bottom polished_blackstone_brick_slab:type=bottom polished_blackstone_slab:type=bottom polished_deepslate_slab:type=bottom polished_diorite_slab:type=bottom polished_granite_slab:type=bottom prismarine_brick_slab:type=bottom prismarine_slab:type=bottom purpur_slab:type=bottom quartz_slab:type=bottom red_nether_brick_slab:type=bottom red_sandstone_slab:type=bottom sandstone_slab:type=bottom smooth_quartz_slab:type=bottom smooth_red_sandstone_slab:type=bottom smooth_sandstone_slab:type=bottom smooth_stone_slab:type=bottom stone_brick_slab:type=bottom stone_slab:type=bottom waxed_cut_copper_slab:type=bottom waxed_exposed_cut_copper_slab:type=bottom waxed_oxidized_cut_copper_slab:type=bottom waxed_weathered_cut_copper_slab:type=bottom weathered_cut_copper_slab:type=bottom #ifdef BOES_EARTH_BLOCKSTATES #define snow_1_4_entry snow:layers=1:is_on_leaves=false snow:layers=2:is_on_leaves=false snow:layers=3:is_on_leaves=false snow:layers=4:is_on_leaves=false @@ -1126,8 +1187,6 @@ block.495=cobblestone_wall:north=tall:east=low:south=tall:west=low:up=false ande block.496=cobblestone_wall:north=low:east=tall:south=low:west=tall:up=false andesite_wall:north=low:east=tall:south=low:west=tall:up=false blackstone_wall:north=low:east=tall:south=low:west=tall:up=false brick_wall:north=low:east=tall:south=low:west=tall:up=false cobbled_deepslate_wall:north=low:east=tall:south=low:west=tall:up=false deepslate_brick_wall:north=low:east=tall:south=low:west=tall:up=false deepslate_tile_wall:north=low:east=tall:south=low:west=tall:up=false diorite_wall:north=low:east=tall:south=low:west=tall:up=false end_stone_brick_wall:north=low:east=tall:south=low:west=tall:up=false granite_wall:north=low:east=tall:south=low:west=tall:up=false mossy_cobblestone_wall:north=low:east=tall:south=low:west=tall:up=false mossy_stone_brick_wall:north=low:east=tall:south=low:west=tall:up=false mud_brick_wall:north=low:east=tall:south=low:west=tall:up=false nether_brick_wall:north=low:east=tall:south=low:west=tall:up=false polished_blackstone_brick_wall:north=low:east=tall:south=low:west=tall:up=false polished_blackstone_wall:north=low:east=tall:south=low:west=tall:up=false polished_deepslate_wall:north=low:east=tall:south=low:west=tall:up=false prismarine_wall:north=low:east=tall:south=low:west=tall:up=false red_nether_brick_wall:north=low:east=tall:south=low:west=tall:up=false red_sandstone_wall:north=low:east=tall:south=low:west=tall:up=false sandstone_wall:north=low:east=tall:south=low:west=tall:up=false stone_brick_wall:north=low:east=tall:south=low:west=tall:up=false \ create:cut_andesite_wall:north=low:east=tall:south=low:west=tall:up=false create:polished_cut_andesite_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_andesite_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:small_andesite_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_asurine_wall:north=low:east=tall:south=low:west=tall:up=false create:polished_cut_asurine_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_asurine_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:small_asurine_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_calcite_wall:north=low:east=tall:south=low:west=tall:up=false create:polished_cut_calcite_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_calcite_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:small_calcite_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_crimsite_wall:north=low:east=tall:south=low:west=tall:up=false create:polished_cut_crimsite_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_crimsite_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:small_crimsite_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_deepslate_wall:north=low:east=tall:south=low:west=tall:up=false create:polished_cut_deepslate_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_deepslate_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:small_deepslate_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_diorite_wall:north=low:east=tall:south=low:west=tall:up=false create:polished_cut_diorite_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_diorite_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:small_diorite_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_dripstone_wall:north=low:east=tall:south=low:west=tall:up=false create:polished_cut_dripstone_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_dripstone_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:small_dripstone_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_granite_wall:north=low:east=tall:south=low:west=tall:up=false create:polished_cut_granite_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_granite_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:small_granite_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_limestone_wall:north=low:east=tall:south=low:west=tall:up=false create:polished_cut_limestone_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_limestone_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:small_limestone_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_ochrum_wall:north=low:east=tall:south=low:west=tall:up=false create:polished_cut_ochrum_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_ochrum_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:small_ochrum_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_scorchia_wall:north=low:east=tall:south=low:west=tall:up=false create:polished_cut_scorchia_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_scorchia_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:small_scorchia_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_scoria_wall:north=low:east=tall:south=low:west=tall:up=false create:polished_cut_scoria_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_scoria_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:small_scoria_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_tuff_wall:north=low:east=tall:south=low:west=tall:up=false create:polished_cut_tuff_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_tuff_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:small_tuff_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_veridium_wall:north=low:east=tall:south=low:west=tall:up=false create:polished_cut_veridium_wall:north=low:east=tall:south=low:west=tall:up=false create:cut_veridium_brick_wall:north=low:east=tall:south=low:west=tall:up=false create:small_veridium_brick_wall:north=low:east=tall:south=low:west=tall:up=false -block.497=sculk_vein - ####### ----- misc ----- ####### ## stuff @@ -1141,4 +1200,8 @@ block.502=emerald_ore deepslate_emerald_ore gold_ore deepslate_gold_ore iron_ore create:zinc_ore create:deepslate_zinc_ore ## blocks where shader grass should is taller around, basically just full building blocks -block.503=mycelium dirt_path clay mud farmland crimson_nylium warped_nylium dripstone_block calcite soul_soil soul_sand obsidian bedrock beehive lodestone barrel respawn_anchor infested_deepslate infested_cobblestone infested_stone ancient_debris raw_iron_block raw_gold_block raw_copper_block muddy_mangrove_roots bone_block waxed_oxidized_cut_copper waxed_oxidized_chiseled_copper waxed_oxidized_copper waxed_weathered_cut_copper waxed_weathered_chiseled_copper waxed_weathered_copper waxed_exposed_cut_copper waxed_exposed_chiseled_copper waxed_exposed_copper waxed_chiseled_copper waxed_cut_copper waxed_copper_block oxidized_cut_copper oxidized_chiseled_copper oxidized_copper weathered_cut_copper weathered_chiseled_copper weathered_copper exposed_cut_copper exposed_chiseled_copper exposed_copper chiseled_copper cut_copper copper_block iron_block emerald_block gold_block diamond_block lapis_block netherite_block coal_block basalt smooth_basalt polished_basalt purpur_block purpur_pillar prismarine dark_prismarine blackstone gilded_blackstone polished_blackstone chiseled_polished_blackstone red_sandstone chiseled_sandstone chiseled_red_sandstone smooth_sandstone smooth_red_sandstone cut_sandstone cut_red_sandstone chiseled_tuff polished_tuff reinforced_deepslate chiseled_deepslate polished_deepslate deepslate_tiles cracked_deepslate_tiles tuff andesite polished_andesite diorite polished_diorite granite polished_granite quartz_block chiseled_quartz_block quartz_pillar smooth_quartz quartz_bricks infested_stone_bricks infested_cracked_stone_bricks infested_mossy_stone_bricks infested_chiseled_stone_bricks polished_blackstone_bricks cracked_polished_blackstone_bricks end_stone end_stone_bricks deepslate_bricks cracked_deepslate_bricks tuff_bricks chiseled_tuff_bricks mud_bricks prismarine_bricks nether_bricks cracked_nether_bricks chiseled_nether_bricks red_nether_bricks netherrack bricks smooth_stone stone_bricks cracked_stone_bricks mossy_stone_bricks chiseled_stone_bricks mossy_cobblestone rooted_dirt coarse_dirt podzol gravel suspicious_gravel stone cobblestone sandstone deepslate cobbled_deepslate dirt oak_planks oak_log stripped_oak_log oak_wood stripped_oak_wood acacia_planks acacia_log stripped_acacia_log acacia_wood stripped_acacia_wood birch_planks birch_log stripped_birch_log brich_wood stripped_brich_wood spruce_planks spruce_log stripped_spruce_log spruce_wood stripped_spruce_wood dark_oak_planks dark_oak_log stripped_dark_oak_log dark_oak_wood stripped_dark_oak_wood jungle_planks jungle_log stripped_jungle_log jungel_wood stripped_jungel_wood mangrove_planks mangrove_log stripped_mangrove_log mangrove_wood stripped_mangrove_wood cherry_planks cherry_log stripped_cherry_log cherry_wood stripped_cherry_wood warped_planks warped_stem stripped_warped_stem warped_hyphae stripped_warped_hyphae crimson_planks crimson_stem stripped_crimson_stem crimson_hyphae stripped_crimson_hyphae bamboo_planks bamboo_block stripped_bamboo_block bamboo_mosaic \ No newline at end of file +block.503=mycelium dirt_path clay mud farmland crimson_nylium warped_nylium dripstone_block calcite soul_soil soul_sand obsidian bedrock beehive lodestone barrel respawn_anchor infested_deepslate infested_cobblestone infested_stone ancient_debris raw_iron_block raw_gold_block raw_copper_block muddy_mangrove_roots bone_block waxed_oxidized_cut_copper waxed_oxidized_chiseled_copper waxed_oxidized_copper waxed_weathered_cut_copper waxed_weathered_chiseled_copper waxed_weathered_copper waxed_exposed_cut_copper waxed_exposed_chiseled_copper waxed_exposed_copper waxed_chiseled_copper waxed_cut_copper waxed_copper_block oxidized_cut_copper oxidized_chiseled_copper oxidized_copper weathered_cut_copper weathered_chiseled_copper weathered_copper exposed_cut_copper exposed_chiseled_copper exposed_copper chiseled_copper cut_copper copper_block emerald_block gold_block diamond_block lapis_block netherite_block coal_block basalt smooth_basalt polished_basalt purpur_block purpur_pillar prismarine dark_prismarine blackstone gilded_blackstone polished_blackstone chiseled_polished_blackstone red_sandstone chiseled_sandstone chiseled_red_sandstone smooth_sandstone smooth_red_sandstone cut_sandstone cut_red_sandstone chiseled_tuff polished_tuff reinforced_deepslate chiseled_deepslate polished_deepslate deepslate_tiles cracked_deepslate_tiles tuff andesite polished_andesite diorite polished_diorite granite polished_granite quartz_block chiseled_quartz_block quartz_pillar smooth_quartz quartz_bricks infested_stone_bricks infested_cracked_stone_bricks infested_mossy_stone_bricks infested_chiseled_stone_bricks polished_blackstone_bricks cracked_polished_blackstone_bricks end_stone end_stone_bricks deepslate_bricks cracked_deepslate_bricks tuff_bricks chiseled_tuff_bricks mud_bricks prismarine_bricks nether_bricks cracked_nether_bricks chiseled_nether_bricks red_nether_bricks netherrack bricks smooth_stone stone_bricks cracked_stone_bricks mossy_stone_bricks chiseled_stone_bricks mossy_cobblestone rooted_dirt coarse_dirt podzol gravel suspicious_gravel stone cobblestone sandstone deepslate cobbled_deepslate dirt oak_planks oak_log stripped_oak_log oak_wood stripped_oak_wood acacia_planks acacia_log stripped_acacia_log acacia_wood stripped_acacia_wood birch_planks birch_log stripped_birch_log brich_wood stripped_brich_wood spruce_planks spruce_log stripped_spruce_log spruce_wood stripped_spruce_wood dark_oak_planks dark_oak_log stripped_dark_oak_log dark_oak_wood stripped_dark_oak_wood jungle_planks jungle_log stripped_jungle_log jungel_wood stripped_jungel_wood mangrove_planks mangrove_log stripped_mangrove_log mangrove_wood stripped_mangrove_wood cherry_planks cherry_log stripped_cherry_log cherry_wood stripped_cherry_wood warped_planks warped_stem stripped_warped_stem warped_hyphae stripped_warped_hyphae crimson_planks crimson_stem stripped_crimson_stem crimson_hyphae stripped_crimson_hyphae bamboo_planks bamboo_block stripped_bamboo_block bamboo_mosaic + +block.504=iron_block + +block.505=minecraft:water_cauldron \ No newline at end of file diff --git a/shaders/dimensions/all_particles.fsh b/shaders/dimensions/all_particles.fsh index ea9508b..4a102df 100644 --- a/shaders/dimensions/all_particles.fsh +++ b/shaders/dimensions/all_particles.fsh @@ -1,4 +1,4 @@ -#ifdef IS_LPV_ENABLED +#if defined IS_LPV_ENABLED || defined PHOTONICS && defined PHOTONICS && !defined PH_ENABLE_HANDHELD_LIGHT #extension GL_ARB_shader_image_load_store: enable #extension GL_ARB_shading_language_packing: enable #endif @@ -58,7 +58,7 @@ uniform sampler2D gtexture; uniform sampler2D noisetex; uniform sampler2D colortex4; -#ifdef IS_LPV_ENABLED +#if defined IS_LPV_ENABLED || defined PHOTONICS && defined PHOTONICS && !defined PH_ENABLE_HANDHELD_LIGHT uniform usampler1D texBlockData; uniform sampler3D texLpv1; uniform sampler3D texLpv2; @@ -113,7 +113,7 @@ uniform int heldItemId2; #include "/lib/hsv.glsl" #endif -#ifdef IS_LPV_ENABLED +#if defined IS_LPV_ENABLED || defined PHOTONICS && defined PHOTONICS && !defined PH_ENABLE_HANDHELD_LIGHT #include "/lib/lpv_blocks.glsl" #include "/lib/lpv_common.glsl" #include "/lib/lpv_render.glsl" @@ -486,7 +486,7 @@ void main() { gl_FragData[0].a = color.a; #endif #ifndef BLOOMY_PARTICLES - gl_FragData[1].a = 0.0; // for bloomy rain and stuff + gl_FragData[1] = vec4(0.0); // for bloomy rain and stuff #endif gl_FragData[3] = vec4(0.0,0.0,0.0,0.4); diff --git a/shaders/dimensions/all_solid.fsh b/shaders/dimensions/all_solid.fsh index 2059561..c262a5b 100644 --- a/shaders/dimensions/all_solid.fsh +++ b/shaders/dimensions/all_solid.fsh @@ -683,8 +683,8 @@ void main() { float gray = dot(Albedo.rgb, vec3(0.2, 1.0, 0.07)); if ( data_in.blockID == BLOCK_AMETHYST_BUD_MEDIUM || data_in.blockID == BLOCK_AMETHYST_BUD_LARGE || data_in.blockID == BLOCK_AMETHYST_CLUSTER - || data_in.blockID == BLOCK_SSS_STRONG || data_in.blockID == BLOCK_SSS_WEAK - || data_in.blockID == BLOCK_GLOW_LICHEN || data_in.blockID == BLOCK_SNOW_LAYERS + || data_in.blockID == BLOCK_SSS_STRONG || data_in.blockID == BLOCK_SSS_STRONG3 || data_in.blockID == BLOCK_SSS_WEAK || data_in.blockID == BLOCK_CACTUS + || data_in.blockID == BLOCK_CELESTIUM || data_in.blockID == BLOCK_SNOW_LAYERS || data_in.blockID >= 10 && data_in.blockID < 80 ) { // IR Reflective (Pink-red) @@ -782,7 +782,7 @@ void main() { /////// ----- SSS ON BLOCKS ----- /////// // strong if ( - data_in.blockID == BLOCK_SSS_STRONG || data_in.blockID == BLOCK_AIR_WAVING || data_in.blockID == BLOCK_SSS_STRONG_2 + data_in.blockID == BLOCK_SSS_STRONG || data_in.blockID == BLOCK_SSS_STRONG3 || data_in.blockID == BLOCK_AIR_WAVING || data_in.blockID == BLOCK_SSS_STRONG_2 ) { SSSAMOUNT = 1.0; } @@ -790,8 +790,8 @@ void main() { else if ( data_in.blockID == BLOCK_GROUND_WAVING || data_in.blockID == BLOCK_GROUND_WAVING_VERTICAL || data_in.blockID == BLOCK_GRASS_SHORT || data_in.blockID == BLOCK_GRASS_TALL_UPPER || data_in.blockID == BLOCK_GRASS_TALL_LOWER || - data_in.blockID == BLOCK_SSS_WEAK || data_in.blockID == BLOCK_SSS_WEAK_2 || - data_in.blockID == BLOCK_GLOW_LICHEN || data_in.blockID == BLOCK_SNOW_LAYERS || data_in.blockID == BLOCK_CARPET || + data_in.blockID == BLOCK_SSS_WEAK || data_in.blockID == BLOCK_CACTUS || data_in.blockID == BLOCK_SSS_WEAK_2 || + data_in.blockID == BLOCK_CELESTIUM || (data_in.blockID >= 269 && data_in.blockID <= 274) || data_in.blockID == BLOCK_SNOW_LAYERS || data_in.blockID == BLOCK_CARPET || data_in.blockID == BLOCK_AMETHYST_BUD_MEDIUM || data_in.blockID == BLOCK_AMETHYST_BUD_LARGE || data_in.blockID == BLOCK_AMETHYST_CLUSTER || data_in.blockID == BLOCK_BAMBOO || data_in.blockID == BLOCK_SAPLING || data_in.blockID == BLOCK_VINE || data_in.blockID == BLOCK_VINE_OTHER #ifdef MISC_BLOCK_SSS @@ -831,26 +831,28 @@ void main() { // if(vNameTags > 0) EMISSIVE = 0.9; // normal block lightsources - if(data_in.blockID >= 100 && data_in.blockID < 300) EMISSIVE = 0.5; + if(data_in.blockID >= 100 && data_in.blockID < 282) { + EMISSIVE = 0.5; - if(data_in.blockID == 266 || data_in.blockID == 497) EMISSIVE = 0.2; // sculk stuff + if(data_in.blockID == 266 || (data_in.blockID >= 276 && data_in.blockID <= 281)) EMISSIVE = 0.2; // sculk stuff - else if(data_in.blockID == 195) EMISSIVE = 2.3; // glow lichen + else if(data_in.blockID == 195) EMISSIVE = 2.3; // glow lichen - else if(data_in.blockID == 185) EMISSIVE = 1.5; // crying obsidian + else if(data_in.blockID == 185) EMISSIVE = 1.5; // crying obsidian - else if(data_in.blockID == 105) EMISSIVE = 2.0; // brewing stand - - else if(data_in.blockID == 236) EMISSIVE = 1.0; // respawn anchor + else if(data_in.blockID == 105) EMISSIVE = 2.0; // brewing stand + + else if(data_in.blockID == 236) EMISSIVE = 1.0; // respawn anchor - else if(data_in.blockID == 101) EMISSIVE = 0.7; // large amethyst bud + else if(data_in.blockID == 101) EMISSIVE = 0.7; // large amethyst bud - else if(data_in.blockID == 103) EMISSIVE = 1.0; // amethyst cluster + else if(data_in.blockID == 103) EMISSIVE = 1.0; // amethyst cluster - else if(data_in.blockID == 244) EMISSIVE = 1.5; // soul fire + else if(data_in.blockID == 244) EMISSIVE = 1.5; // soul fire + } #if EMISSIVE_ORES > 0 - else if(data_in.blockID == 502) { + if(data_in.blockID == 502) { EMISSIVE = EMISSIVE_ORES_STRENGTH; #ifndef HARDCODED_EMISSIVES_APPROX @@ -901,6 +903,14 @@ void main() { bool emissionCheck = SpecularTex.a <= 0.0; #endif + #ifdef MIRROR_IRON + if(data_in.blockID == 504 || currentRenderedItemId == 504) { + OutSpecular.rg = vec2(1.0, 1.0); + Albedo.rgb = vec3(1.0); + // normal = flatNormals; + } + #endif + #if defined HARDCODED_EMISSIVES_APPROX && (EMISSIVE_TYPE == 1 || EMISSIVE_TYPE == 2) #if EMISSIVE_TYPE == 2 && EMISSIVE_TRIMS > 0 if(emissionCheck && !isTrim) diff --git a/shaders/dimensions/all_translucent.fsh b/shaders/dimensions/all_translucent.fsh index aa90e09..10d51e9 100644 --- a/shaders/dimensions/all_translucent.fsh +++ b/shaders/dimensions/all_translucent.fsh @@ -85,6 +85,7 @@ uniform sampler2D depthtex2; #endif uniform sampler2D colortex7; +uniform sampler2D colortex9; uniform sampler2D colortex11; uniform sampler2D colortex12; uniform sampler2D colortex13; @@ -188,6 +189,7 @@ uniform float dhVoxyFarPlane; #include "/lib/hsv.glsl" #include "/lib/lpv_common.glsl" #include "/lib/lpv_render.glsl" + // #include "/lib/voxel_common.glsl" #endif #define FORWARD_SPECULAR @@ -207,12 +209,16 @@ uniform float dhVoxyFarPlane; uniform vec3 relativeEyePosition; +vec2 decodeVec2(float a){ + const vec2 constant1 = 65535. / vec2( 256., 65536.); + const float constant2 = 256. / 255.; + return fract( a * constant1 ) * constant2 ; +} #include "/lib/blocks.glsl" #include "/lib/lpv_blocks.glsl" #include "/lib/lpv_buffer.glsl" -#include "/lib/specular.glsl" #if defined VIVECRAFT uniform bool vivecraftIsVR; uniform vec3 vivecraftRelativeMainHandPos; @@ -221,6 +227,20 @@ uniform vec3 relativeEyePosition; uniform mat4 vivecraftRelativeOffHandRot; #endif +#define VOXEL_REFLECTIONS_TRANSLUCENT + +#ifdef VOXEL_REFLECTIONS_TRANSLUCENT +#endif + +#ifdef PHOTONICS + #ifdef VOXEL_REFLECTIONS + // #define VOXEL_REFLECTIONS + #define PHOTONICS_INCLUDED + + #include "/photonics/photonics.glsl" + #endif +#endif + #include "/lib/diffuse_lighting.glsl" #if defined PHYSICSMOD_OCEAN_SHADER @@ -475,18 +495,14 @@ float ComputeShadowMap(inout vec3 directLightColor, vec3 playerPos, float maxDis } #endif +#include "/lib/specular.glsl" + void convertHandDepth(inout float depth) { float ndcDepth = depth * 2.0 - 1.0; ndcDepth /= MC_HAND_DEPTH; depth = ndcDepth * 0.5 + 0.5; } -vec2 decodeVec2(float a){ - const vec2 constant1 = 65535. / vec2( 256., 65536.); - const float constant2 = 256. / 255.; - return fract( a * constant1 ) * constant2 ; -} - void Emission( inout vec3 Lighting, vec3 Albedo, @@ -611,10 +627,10 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) // bool isHand = abs(MATERIALS - 0.1) < 0.01; bool isWater = MATERIALS > 0.99; - bool isReflectiveEntity = abs(MATERIALS - 0.8) < 0.01; - bool isReflective = abs(MATERIALS - 0.7) < 0.01 || isWater || isReflectiveEntity; - bool isEntity = abs(MATERIALS - 0.9) < 0.01 || isReflectiveEntity; - bool isNetherPortal = abs(MATERIALS - 0.6) < 0.01; + bool isReflectiveEntity = abs(MATERIALS - 0.2) < 0.01; + bool isReflective = abs(MATERIALS - 0.1) < 0.01 || isWater || isReflectiveEntity; + bool isEntity = abs(MATERIALS - 0.4) < 0.01 || isReflectiveEntity; + // bool isNetherPortal = abs(MATERIALS - 0.6) < 0.01; //////////////////////////////////////////////////////////////////////////////// /////////////////////////////////// ALBEDO ///////////////////////////////////// @@ -1014,10 +1030,11 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) #endif ///////////////////////// BLOCKLIGHT LIGHTING OR LPV LIGHTING OR FLOODFILL COLORED LIGHTING + vec3 flatWorldNormal = viewToWorld(normalMat.xyz).xyz; #ifdef IS_LPV_ENABLED vec3 normalOffset = vec3(0.0); - if (any(greaterThan(abs(viewToWorld(normalMat.xyz).xyz), vec3(1.0e-6)))) + if (any(greaterThan(abs(flatWorldNormal), vec3(1.0e-6)))) normalOffset = 0.5*worldSpaceNormal; #if LPV_NORMAL_STRENGTH > 0 @@ -1109,7 +1126,7 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) vec3 sunVec = WsunVec; #endif - vec3 specularReflections = specularReflections(viewPos, normalize(feetPlayerPos), sunVec, vec3(BN, vec2(interleaved_gradientNoise_temporal())), worldSpaceNormal, roughness, f0, Albedo, FinalColor*gl_FragData[0].a, DirectLightColor * Shadows * Shadows, lightmap.y, isHand, isWater, reflectance, flashLightSpecularData); + vec3 specularReflections = specularReflections(viewPos, shadowPlayerPos, normalize(feetPlayerPos), sunVec, vec2(BN, interleaved_gradientNoise_temporal()), flatWorldNormal, worldSpaceNormal, roughness, f0, Albedo, FinalColor*gl_FragData[0].a, DirectLightColor * Shadows * Shadows, lightmap.y, isHand, isWater, reflectance, flashLightSpecularData); gl_FragData[0].a = gl_FragData[0].a + (1.0-gl_FragData[0].a) * reflectance; diff --git a/shaders/dimensions/all_translucent.vsh b/shaders/dimensions/all_translucent.vsh index 1590423..2723635 100644 --- a/shaders/dimensions/all_translucent.vsh +++ b/shaders/dimensions/all_translucent.vsh @@ -5,6 +5,7 @@ #include "/lib/SSBOs.glsl" +#include "/lib/blocks.glsl" #include "/lib/entities.glsl" uniform float frameTimeCounter; @@ -210,22 +211,27 @@ void main() { float mat = 0.0; // water mask - if(isWater) { + if(isWater + #if MC_VERSION > 12111 + || mc_Entity.x == 505 + #endif + + ) { mat = 1.0; } // translucent entities #if defined ENTITIES || defined BLOCKENTITIES - mat = 0.9; - if (entityId == 1804) mat = 0.8; + mat = 0.4; + if (entityId == 1804) mat = 0.2; #endif // translucent blocks - if (mc_Entity.x >= 301 && mc_Entity.x <= 321) mat = 0.7; + if (mc_Entity.x >= 301 && mc_Entity.x <= 338) mat = 0.1; - if (mc_Entity.x == 320) mat = 0.6; + // if (mc_Entity.x == BLOCK_NETHER_PORTAL) mat = 0.6; - if (mc_Entity.x == 322) lmtexcoord.z = 0.0; + if (mc_Entity.x == WISPJELLY) lmtexcoord.z = 0.0; #if defined ENTITIES && defined IS_IRIS NAMETAG = 0; diff --git a/shaders/dimensions/composite1.fsh b/shaders/dimensions/composite1.fsh index 720a42d..b5de941 100644 --- a/shaders/dimensions/composite1.fsh +++ b/shaders/dimensions/composite1.fsh @@ -132,7 +132,7 @@ in DATA { uniform float sunElevation; -#ifdef IS_LPV_ENABLED +#if defined IS_LPV_ENABLED || defined PHOTONICS && defined PHOTONICS && !defined PH_ENABLE_HANDHELD_LIGHT uniform usampler1D texBlockData; uniform sampler3D texLpv1; uniform sampler3D texLpv2; @@ -165,8 +165,23 @@ uniform ivec2 eyeBrightnessSmooth; uniform vec3 sunVec; +#define VOXEL_REFLECTIONS_SOLID -#ifdef IS_LPV_ENABLED +#ifdef VOXEL_REFLECTIONS_SOLID +#endif + +#ifdef PHOTONICS + #ifdef VOXEL_REFLECTIONS + // #define VOXEL_REFLECTIONS + #define PHOTONICS_INCLUDED + + #include "/photonics/photonics.glsl" + #endif +#endif + + + +#if defined IS_LPV_ENABLED || defined PHOTONICS && defined PHOTONICS && !defined PH_ENABLE_HANDHELD_LIGHT uniform int heldItemId; uniform int heldItemId2; #endif @@ -203,7 +218,10 @@ float convertHandDepth_2(in float depth, bool hand) { #include "/lib/volumetricClouds.glsl" #endif -#ifdef IS_LPV_ENABLED + +#if defined IS_LPV_ENABLED || defined PHOTONICS && defined PHOTONICS && !defined PH_ENABLE_HANDHELD_LIGHT + uniform vec3 relativeEyePosition; + #include "/lib/hsv.glsl" #include "/lib/lpv_common.glsl" #include "/lib/lpv_render.glsl" @@ -225,11 +243,15 @@ float convertHandDepth_2(in float depth, bool hand) { #ifdef DEFERRED_ROUGH_REFLECTION #endif -uniform vec3 relativeEyePosition; #define MAIN_SHADOW_PASS #define FULLRESDEPTH -#include "/lib/specular.glsl" +vec2 decodeVec2(float a){ + const vec2 constant1 = 65535. / vec2( 256., 65536.); + const float constant2 = 256. / 255.; + return fract( a * constant1 ) * constant2 ; +} + #if defined VIVECRAFT uniform bool vivecraftIsVR; uniform vec3 vivecraftRelativeMainHandPos; @@ -237,9 +259,13 @@ uniform vec3 relativeEyePosition; uniform mat4 vivecraftRelativeMainHandRot; uniform mat4 vivecraftRelativeOffHandRot; #endif -#include "/lib/diffuse_lighting.glsl" +#include "/lib/diffuse_lighting.glsl" +#include "/lib/specular.glsl" + +#ifdef END_SHADER #include "/lib/end_fog.glsl" +#endif float ld(float dist) { return (2.0 * near) / (far + near - dist * (far - near)); @@ -254,11 +280,6 @@ vec3 decode (vec2 encn){ return clamp(normalize(n.xyz),-1.0,1.0); } -vec2 decodeVec2(float a){ - const vec2 constant1 = 65535. / vec2( 256., 65536.); - const float constant2 = 256. / 255.; - return fract( a * constant1 ) * constant2 ; -} float DH_ld(float dist) { return (2.0 * dhVoxyNearPlane) / (dhVoxyFarPlane + dhVoxyNearPlane - dist * (dhVoxyFarPlane - dhVoxyNearPlane)); } @@ -948,6 +969,9 @@ uniform float wetness; } #endif +uniform ivec3 cameraPositionInt; + + void main() { vec3 DEBUG = vec3(1.0); @@ -1485,14 +1509,14 @@ void main() { Indirect_lighting += doIndirectLighting(AmbientLightColor * skylight, MinimumLightColor, lightmap.y); - #ifdef PHOTONICS_ENABLED + #if defined PH_ENABLE_GI && defined PHOTONICS && defined ENABLE_PHOTONICS_GI #if defined DISTANT_HORIZONS || defined VOXY float photonicsFalloff = smoothstep(min(far, 128.0), min(0.9*far, 114.0), viewDist); #else float photonicsFalloff = smoothstep(128.0, 114.0, viewDist); #endif - vec3 gi_color = texture(colortex15, texcoord).xyz*2.5*PHOTONICS_INDIRECT_BRIGHTNESS* skylight; + vec3 gi_color = texture(colortex15, texcoord).xyz*2.0*PHOTONICS_INDIRECT_BRIGHTNESS* skylight; gi_color += mix(MinimumLightColor * (MIN_LIGHT_AMOUNT * 0.004 + nightVision*0.02), MinimumLightColor * (MIN_LIGHT_AMOUNT_INSIDE * 0.004 + nightVision*0.02), 1.0-lightmap.y); Indirect_lighting = mix(Indirect_lighting, gi_color, photonicsFalloff); @@ -1653,11 +1677,11 @@ void main() { // if(lightningBolt) FINAL_COLOR = vec3(77.0, 153.0, 255.0); #if defined DEFERRED_SPECULAR - vec3 specularNoises = vec3(vec2(blueNoise(), ig_noise), ig_noise); + vec2 specularNoises = vec2(blueNoise(), ig_noise); vec3 specularNormal = normal; if (dot(normal, (feetPlayerPos_normalized)) > 0.0) specularNormal = FlatNormals; - FINAL_COLOR = specularReflections(viewPos, feetPlayerPos_normalized, WsunVec, specularNoises, specularNormal, SpecularTex.r, SpecularTex.g, albedo, FINAL_COLOR, DirectLightColor*shadowColor*shadowColor, lightmap.y, hand, flashLightSpecularData); + FINAL_COLOR = specularReflections(viewPos, feetPlayerPos, feetPlayerPos_normalized, WsunVec, specularNoises, FlatNormals, specularNormal, SpecularTex.r, SpecularTex.g, albedo, FINAL_COLOR, DirectLightColor*shadowColor*shadowColor, lightmap.y, hand, flashLightSpecularData); #endif gl_FragData[0].rgb = FINAL_COLOR; diff --git a/shaders/dimensions/composite3.fsh b/shaders/dimensions/composite3.fsh index da5b1c3..25a30ed 100644 --- a/shaders/dimensions/composite3.fsh +++ b/shaders/dimensions/composite3.fsh @@ -609,9 +609,9 @@ void main() { float translucentMasks = texelFetch(colortex7, ivec2(gl_FragCoord.xy),0).a; bool isWater = translucentMasks > 0.99; - bool isReflectiveEntity = abs(translucentMasks - 0.8) < 0.01; - bool isReflective = abs(translucentMasks - 0.7) < 0.01 || isWater || isReflectiveEntity; - bool isEntity = abs(translucentMasks - 0.9) < 0.01 || isReflectiveEntity; + bool isReflectiveEntity = abs(translucentMasks - 0.2) < 0.01; + bool isReflective = abs(translucentMasks - 0.1) < 0.01 || isWater || isReflectiveEntity; + bool isEntity = abs(translucentMasks - 0.4) < 0.01 || isReflectiveEntity; ////// --------------- get volumetrics #if defined DISTANT_HORIZONS || defined VOXY diff --git a/shaders/dimensions/composite5.fsh b/shaders/dimensions/composite5.fsh index 5e45fb3..edf5d16 100644 --- a/shaders/dimensions/composite5.fsh +++ b/shaders/dimensions/composite5.fsh @@ -13,15 +13,15 @@ const int colortex6Format = R11F_G11F_B10F; // additional buffer for bloom (co const int colortex7Format = RGBA8; // Final output, transparencies id (gbuffer->composite4) const int colortex8Format = RGBA16; // Specular Texture, flat normals, vanilla AO -const int colortex9Format = RGBA16; // rain (encoded rg: gbuffers_weather -> composite3), resource pack sky (rgba: gbuffers_skytextured, gbuffers_skybasic -> deferred1), combined depth quarter res (ba: deferred2 -> wherever) +const int colortex9Format = RGBA16; // rain (encoded rg: gbuffers_weather -> composite3), resource pack sky (rgba: gbuffers_skytextured, gbuffers_skybasic -> deferred1), combined depth quarter res (ba: composite -> wherever) const int colortex10Format = RGBA16F; // cloud history const int colortex11Format = RGBA16; // unchanged translucents albedo, alpha and tangent normals -const int colortex12Format = RGBA16F; // DISTANT HORIZONS + VANILLA MIXED DEPTHs +const int colortex12Format = RGBA16F; // empty const int colortex13Format = RGBA16F; // low res VL (composite5->composite15) -const int colortex14Format = RGBA16; // rg = SSAO and SS-SSS. a = skylightmap for translucents. -const int colortex15Format = RGBA16F; // flat normals and vanilla AO +const int colortex14Format = RGBA16; // rg = SSAO and SS-SSS. a = skylightmap for translucents. +const int colortex15Format = R11F_G11F_B10F; // PHOTONICS GI #ifdef VOXY const int colortex16Format = RGBA16F; // voxy translucent stuff... diff --git a/shaders/dimensions/final.fsh b/shaders/dimensions/final.fsh index fb663f0..c67b4ed 100644 --- a/shaders/dimensions/final.fsh +++ b/shaders/dimensions/final.fsh @@ -6,14 +6,16 @@ uniform sampler2D colortex7; uniform sampler2D colortex5; uniform sampler2D colortex6; uniform sampler2D colortex10; +uniform sampler2D colortex11; uniform sampler2D colortex14; +uniform sampler2D colortex15; uniform sampler2D depthtex0; uniform sampler2D depthtex1; uniform sampler2D depthtex2; uniform sampler2D noisetex; uniform sampler2D shadowcolor1; -#ifndef IS_IRIS +#if !defined IS_IRIS || (defined SHADER_GRASS_SETTING && MC_VERSION < 12101 && !defined SHADER_GRASS_UNSUPPORTED_FIX) #include "/lib/text_rendering.glsl" #endif @@ -153,6 +155,10 @@ float doVignette( in vec2 texcoord, in float noise){ layout (rgba16f) uniform readonly image2D waveSim2; #endif +uniform sampler2D radiosity_direct; +uniform sampler2D radiosity_direct_soft; +uniform sampler2D radiosity_handheld; + void main() { @@ -244,6 +250,36 @@ void main() { } #endif + #if defined SHADER_GRASS_SETTING && MC_VERSION < 12101 && !defined SHADER_GRASS_UNSUPPORTED_FIX + const float textSize2 = 4.0; + beginText(ivec2(gl_FragCoord.xy/textSize2), ivec2(0.05*viewWidth/textSize2, 0.75*viewHeight/textSize2)); + text.fgCol = vec4(1.0, 0.0, 0.0, 1.0); + printString((_S, _h, _a, _d, _e, _r, _space, _G, _r, _a, _s, _s, _space, _n, _e, _e, _d, _s, _space, _1, _dot, _2, _1, _dot, _1, _space, _o, _r, _space, _h, _i, _g, _h, _e, _r, _exclm)); + printLine(); + printString((_D, _i, _s, _a, _b, _l, _e, _space, _i, _t, _exclm)); + #if MC_VERSION == 12001 + printLine(); + printLine(); + printString((_T, _o, _space, _u, _s, _e, _space, _i, _t, _space, _o, _n, _space, _1, _dot, _2, _0, _dot, _1, _space, _u, _s, _e, _space, _t, _h, _e)); + printLine(); + text.fgCol = vec4(0.0, 1.0, 0.0, 1.0); + printString((_quote, _E, _c, _l, _i, _p, _s, _e, _space, _S, _h, _a, _d, _e, _r, _space, _G, _r, _a, _s, _s, _space, _C, _o, _m, _p, _a, _t, _quote)); + printLine(); + text.fgCol = vec4(1.0, 0.0, 0.0, 1.0); + printString((_R, _e, _s, _o, _u, _r, _c, _e, _space, _P, _a, _c, _k, _space, _f, _r, _o, _m, _space, _M, _o, _d, _r, _i, _n, _t, _h, _exclm)); + printLine(); + printLine(); + printString((_A, _d, _d, _i, _t, _i, _o, _n, _a, _l, _l, _y, _space, _e, _n, _a, _b, _l, _e, _space, _t, _h, _e)); + printLine(); + text.fgCol = vec4(1.0, 1.0, 0.0, 1.0); + printString((_quote, _S, _h, _a, _d, _e, _r, _space, _G, _r, _a, _s, _s, _space, _U, _n, _s, _u, _p, _p, _o, _r, _t, _e, _d, _space, _F, _i, _x, _quote)); + printLine(); + text.fgCol = vec4(1.0, 0.0, 0.0, 1.0); + printString((_i, _n, _space, _e, _x, _p, _e, _r, _i, _m, _e, _n, _t, _a, _l, _space, _s, _e, _t, _t, _i, _n, _g, _s, _exclm)); + #endif + endText(gl_FragColor.rgb); + #endif + #ifndef IS_IRIS gl_FragColor.rgb = vec3(0.0); const float textSize = 4.0; @@ -255,4 +291,16 @@ void main() { printString((_U, _s, _e, _space, _I, _r, _i, _s, _space, _i, _n, _s, _t, _e, _a, _d, _exclm)); endText(gl_FragColor.rgb); #endif + + #ifdef PHOTONICS + #if DEBUG_VIEW == debug_radiosity_direct + gl_FragColor.rgb = vec3(texture(radiosity_direct, texcoord).rgb); + #elif DEBUG_VIEW == debug_radiosity_direct_soft + gl_FragColor.rgb = vec3(texture(radiosity_direct_soft, texcoord).rgb); + #elif DEBUG_VIEW == debug_radiosity_handheld + gl_FragColor.rgb = vec3(texture(radiosity_handheld, texcoord).rgb); + #elif DEBUG_VIEW == debug_radiosity_GI + gl_FragColor.rgb = vec3(texture(colortex15, texcoord).rgb); + #endif + #endif } diff --git a/shaders/dimensions/setup.csh b/shaders/dimensions/setup.csh index 1351949..e2ca655 100644 --- a/shaders/dimensions/setup.csh +++ b/shaders/dimensions/setup.csh @@ -11,7 +11,7 @@ const ivec3 workGroups = ivec3(6, 6, 1); const vec3 LightColor_Amethyst = vec3(0.464, 0.227, 0.788); const vec3 LightColor_Candles = vec3(1.0, 0.4, 0.1); const vec3 LightColor_CopperBulb = vec3(1.0, 0.7, 0.6); - const vec3 LightColor_LightBlock = vec3(1.0); + const vec3 LightColor_LightBlock = vec3(0.7); const vec3 LightColor_RedstoneTorch = vec3(0.939, 0.305, 0.164); const vec3 LightColor_SeaPickle = vec3(0.283, 0.394, 0.212); @@ -62,7 +62,11 @@ void main() { uint mixMask = 0xFFFF; vec3 tintColor = vec3(1.0); - if (blockId == BLOCK_SSS_WEAK || blockId == BLOCK_SSS_WEAK_3 || blockId == BLOCK_SSS_STRONG) { + if (blockId == BLOCK_SSS_WEAK || blockId == BLOCK_CACTUS || blockId == BLOCK_SSS_WEAK_3 || blockId == BLOCK_SSS_STRONG || blockId == BLOCK_SSS_STRONG3) { + mixWeight = 1.0; + } + + if (blockId == BLOCK_BUTTON_FLOOR_NORTH_SOUTH || blockId == BLOCK_BUTTON_FLOOR_EAST_WEST || blockId == BLOCK_BUTTON_WALL_NORTH || blockId == BLOCK_BUTTON_WALL_EAST || blockId == BLOCK_BUTTON_WALL_SOUTH || blockId == BLOCK_BUTTON_WALL_WEST || blockId == BLOCK_BUTTON_CEILING_NORTH_SOUTH || blockId == BLOCK_BUTTON_CEILING_EAST_WEST) { mixWeight = 1.0; } @@ -500,7 +504,7 @@ void main() { if (blockId == BLOCK_END_ROD || blockId == ITEM_END_ROD) { lightColor = vec3(0.957, 0.929, 0.875); // lightColor = vec3(0.8, 0.3, 1.0); - lightRange = 14.0; + lightRange = 12.0; } if (blockId == BLOCK_FIRE) { @@ -535,7 +539,7 @@ void main() { lightRange = 12.0; } - if (blockId == BLOCK_GLOW_LICHEN || blockId == ITEM_GLOW_LICHEN) { + if (blockId == BLOCK_CELESTIUM || blockId == ITEM_GLOW_LICHEN || blockId == BLOCK_GLOW_LICHEN) { lightColor = vec3(0.1, 0.2, 0.12); lightRange = 7.0; } @@ -794,7 +798,7 @@ void main() { } if ( - blockId == BLOCK_COPPER_LANTERN || blockId == ITEM_COPPER_LANTERN + blockId == BLOCK_COPPER_LANTERN || blockId == ITEM_COPPER_LANTERN || blockId == BLOCK_COPPER_TORCH ) { lightColor = vec3(0.1, 0.8, 0.3); lightRange = 10.0; @@ -817,6 +821,8 @@ void main() { mixWeight = 0.2; } + if (blockId >= 21 && blockId <= 37) mixWeight = 1.00; + if (blockId >= BLOCK_LAMP_LIT_BLACK && blockId <= BLOCK_LAMP_LIT_YELLOW) { lightRange = 15.0; mixWeight = 0.25; @@ -965,6 +971,8 @@ void main() { // LPV shapes + case BLOCK_SSS_STRONG3: + case 88: case BLOCK_LPV_IGNORE: mixWeight = 1.00; break; @@ -983,8 +991,7 @@ void main() { mixWeight = 0.9; break; case BLOCK_SCULK_VEIN: - mixMask = BuildLpvMask(1u, 1u, 1u, 1u, 1u, 0u); - mixWeight = 0.9; + mixWeight = 1.00; break; case BLOCK_GLOW_LICHEN: mixWeight = 1.00; @@ -1023,6 +1030,7 @@ void main() { mixWeight = 0.5; break; case BLOCK_SLAB_BOTTOM: + case BLOCK_DAYLIGHT_DETECTOR: case BLOCK_SNOW_LAYERS: mixMask = BuildLpvMask(1u, 1u, 1u, 1u, 1u, 0u); mixWeight = 0.5; diff --git a/shaders/dimensions/voxels.fsh b/shaders/dimensions/voxels.fsh index 9429352..90e4a88 100644 --- a/shaders/dimensions/voxels.fsh +++ b/shaders/dimensions/voxels.fsh @@ -345,9 +345,7 @@ void main() { float BN = blueNoise(); float R2 = R2_dither(); - vec2 tempOffset = offsets[framemod8]; - - vec3 fragpos = toScreenSpace(FragCoord*vec3(texelSize/RENDER_SCALE,1.0)-vec3(vec2(tempOffset)*texelSize*0.5, 0.0)); + vec3 fragpos = toScreenSpace(FragCoord*vec3(texelSize/RENDER_SCALE,1.0)); vec3 playerpos = mat3(gbufferModelViewInverse) * fragpos + gbufferModelViewInverse[3].xyz; vec3 worldpos = playerpos + cameraPosition; @@ -359,8 +357,8 @@ void main() { float opaqueMasks = 1.0; - if(data_in.blockID == BLOCK_GROUND_WAVING_VERTICAL || data_in.blockID == BLOCK_GRASS_SHORT || data_in.blockID == BLOCK_GRASS_TALL_LOWER || data_in.blockID == BLOCK_GRASS_TALL_UPPER ) opaqueMasks = 0.60; - else if(data_in.blockID == BLOCK_AIR_WAVING) opaqueMasks = 0.55; + // if(data_in.blockID == BLOCK_GROUND_WAVING_VERTICAL || data_in.blockID == BLOCK_GRASS_SHORT || data_in.blockID == BLOCK_GRASS_TALL_LOWER || data_in.blockID == BLOCK_GRASS_TALL_UPPER ) opaqueMasks = 0.60; + // else if(data_in.blockID == BLOCK_AIR_WAVING) opaqueMasks = 0.55; //////////////////////////////// //////////////////////////////// @@ -378,8 +376,11 @@ void main() { // don't fix vanilla ao on some custom block models. // if (Color.a < 0.3) Color.a = 1.0; // fix vanilla ao on some custom block models. - RayJob ray = RayJob(vec3(0), vec3(0), vec3(0), vec3(0), vec3(0), false); - ray.origin = worldpos - world_offset - 0.001f * data_in.block_normal; + RayJob ray = RayJob(vec3(0), vec3(0), vec3(0), vec3(0), vec3(0), true); + + float normalOffset = mix(0.00015f, 0.025f, clamp(length(playerpos)*0.006, 0.0, 1.0)); + ray.origin = worldpos - world_offset - normalOffset * data_in.block_normal; + ray.direction = playerpos - gbufferModelViewInverse[3].xyz; ray_constraint = ivec3(ray.origin); trace_ray(ray); @@ -544,25 +545,25 @@ void main() { OutSpecular = vec4(0.0,0.0,0.0,0.0); OutSpecular.rg = SpecularTex.rg; - #if EMISSIVE_ORES > 1 && EMISSIVE_TYPE > 1 - if(data_in.blockID == 502) { - SpecularTex.a = EMISSIVE_ORES_STRENGTH; - - SpecularTex.a *= getEmission(Albedo.rgb); - } - #endif + // #if EMISSIVE_ORES > 1 && EMISSIVE_TYPE > 1 + // if(data_in.blockID == 502) { + // SpecularTex.a = EMISSIVE_ORES_STRENGTH; + // + // SpecularTex.a *= getEmission(Albedo.rgb); + // } + // #endif #if EMISSIVE_TYPE == 2 bool emissionCheck = SpecularTex.a <= 0.0; #endif - #ifdef MIRROR_IRON - if(data_in.blockID == 504 || currentRenderedItemId == 504) { - OutSpecular.rg = vec2(1.0, 1.0); - Albedo.rgb = vec3(1.0); - } - #endif + // #ifdef MIRROR_IRON + // if(data_in.blockID == 504 || currentRenderedItemId == 504) { + // OutSpecular.rg = vec2(1.0, 1.0); + // Albedo.rgb = vec3(1.0); + // } + // #endif #if defined HARDCODED_EMISSIVES_APPROX && (EMISSIVE_TYPE == 1 || EMISSIVE_TYPE == 2) #if EMISSIVE_TYPE == 2 diff --git a/shaders/dimensions/voxels.vsh b/shaders/dimensions/voxels.vsh index a98e448..b5f3788 100644 --- a/shaders/dimensions/voxels.vsh +++ b/shaders/dimensions/voxels.vsh @@ -258,10 +258,5 @@ void main() { #ifdef TAA_UPSCALING gl_Position.xy = gl_Position.xy * RENDER_SCALE + RENDER_SCALE * gl_Position.w - gl_Position.w; #endif - #ifdef TAA - vec2 TAA_offsets = offsets[framemod8]; - - gl_Position.xy += TAA_offsets * gl_Position.w*texelSize; - #endif } \ No newline at end of file diff --git a/shaders/dimensions/voxy.json b/shaders/dimensions/voxy.json index 8b2992b..c1e2790 100644 --- a/shaders/dimensions/voxy.json +++ b/shaders/dimensions/voxy.json @@ -22,7 +22,7 @@ "renderScale": [SCALE_FACTOR, SCALE_FACTOR], #endif "blending": {-1:"SRC_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA ONE", 2:"off"}, - "ssbos": {6:"{ + "ssbos": {4:"{ mat4 customShadowMatrixSSBO; vec3 customMoonVecSSBO; diff --git a/shaders/dimensions/voxy_solid.glsl b/shaders/dimensions/voxy_solid.glsl index f4a46fc..02c97bb 100644 --- a/shaders/dimensions/voxy_solid.glsl +++ b/shaders/dimensions/voxy_solid.glsl @@ -60,7 +60,7 @@ void voxy_emitFragment(VoxyFragmentParameters parameters) { /////// ----- SSS ON BLOCKS ----- /////// // strong if ( - blockID == BLOCK_SSS_STRONG || blockID == BLOCK_AIR_WAVING || blockID == BLOCK_SSS_STRONG_2 + blockID == BLOCK_SSS_STRONG || blockID == BLOCK_SSS_STRONG3 || blockID == BLOCK_AIR_WAVING || blockID == BLOCK_SSS_STRONG_2 ) { SSSAMOUNT = 1.0; } @@ -72,8 +72,8 @@ void voxy_emitFragment(VoxyFragmentParameters parameters) { SSSAMOUNT = 0.5; } else if ( - blockID == BLOCK_SSS_WEAK || blockID == BLOCK_SSS_WEAK_2 || - blockID == BLOCK_GLOW_LICHEN || blockID == BLOCK_SNOW_LAYERS || blockID == BLOCK_CARPET || + blockID == BLOCK_SSS_WEAK || blockID == BLOCK_CACTUS || blockID == BLOCK_SSS_WEAK_2 || + blockID == BLOCK_CELESTIUM || blockID == BLOCK_SNOW_LAYERS || blockID == BLOCK_CARPET || blockID == BLOCK_AMETHYST_BUD_MEDIUM || blockID == BLOCK_AMETHYST_BUD_LARGE || blockID == BLOCK_AMETHYST_CLUSTER || blockID == BLOCK_BAMBOO || blockID == BLOCK_SAPLING || blockID == BLOCK_VINE || blockID == BLOCK_VINE_OTHER ) { @@ -98,26 +98,28 @@ void voxy_emitFragment(VoxyFragmentParameters parameters) { // if(vNameTags > 0) EMISSIVE = 0.9; // normal block lightsources - if(blockID >= 100 && blockID < 300) EMISSIVE = 0.5; + if(blockID >= 100 && blockID < 282) { + EMISSIVE = 0.5; - else if(blockID == 266 || blockID == 497) EMISSIVE = 0.2; // sculk stuff + if(blockID == 266 || (blockID >= 276 && blockID <= 281)) EMISSIVE = 0.2; // sculk stuff - else if(blockID == 195) EMISSIVE = 2.3; // glow lichen + else if(blockID == 195) EMISSIVE = 2.3; // glow lichen - else if(blockID == 185) EMISSIVE = 1.5; // crying obsidian + else if(blockID == 185) EMISSIVE = 1.5; // crying obsidian - else if(blockID == 105) EMISSIVE = 2.0; // brewing stand - - else if(blockID == 236) EMISSIVE = 1.0; // respawn anchor + else if(blockID == 105) EMISSIVE = 2.0; // brewing stand + + else if(blockID == 236) EMISSIVE = 1.0; // respawn anchor - else if(blockID == 101) EMISSIVE = 0.7; // large amethyst bud + else if(blockID == 101) EMISSIVE = 0.7; // large amethyst bud - else if(blockID == 103) EMISSIVE = 1.0; // amethyst cluster + else if(blockID == 103) EMISSIVE = 1.0; // amethyst cluster - else if(blockID == 244) EMISSIVE = 1.5; // soul fire + else if(blockID == 244) EMISSIVE = 1.5; // soul fire + } #if EMISSIVE_ORES > 0 - else if(blockID == 502) EMISSIVE = EMISSIVE_ORES_STRENGTH; + if(blockID == 502) EMISSIVE = EMISSIVE_ORES_STRENGTH; #endif #ifdef HARDCODED_EMISSIVES_APPROX diff --git a/shaders/dimensions/voxy_translucent.glsl b/shaders/dimensions/voxy_translucent.glsl index b69edf1..848d256 100644 --- a/shaders/dimensions/voxy_translucent.glsl +++ b/shaders/dimensions/voxy_translucent.glsl @@ -12,7 +12,7 @@ layout (location = 3) out vec4 gbuffer_data_3; #include "/lib/TAA_jitter.glsl" #undef Hand_Held_lights -#undef PHOTONICS_ENABLED +#undef PHOTONICS #undef IS_LPV_ENABLED #include "/lib/diffuse_lighting.glsl" diff --git a/shaders/lang/en_us.lang b/shaders/lang/en_us.lang index edbb412..96df7e1 100644 --- a/shaders/lang/en_us.lang +++ b/shaders/lang/en_us.lang @@ -1,6 +1,6 @@ option.SHADER_VERSION_LABEL = §d§lECLIPSE§r - A Bliss Edit prefix.SHADER_VERSION_LABEL = V - value.SHADER_VERSION_LABEL.482 = 6.3.3 + value.SHADER_VERSION_LABEL.482 = 7.0.0 # if you're here to translate, this is not a joke, these do what they say profile.POTATO=§4Potato @@ -109,7 +109,7 @@ screen.Foliage = Foliage option.WAVY_STRENGTH = Waving Strength option.WAVY_SPEED = Waving Speed - option.SHADER_GRASS = Shader Grass §c(1.21.1+) + option.SHADER_GRASS_SETTING = Shader Grass §c(1.21.1+) option.GRASS_BASE_THICKNESS = Grass Blade Base Thickness option.GRASS_THICKNESS_FALLOFF = Grass Thickness Falloff option.GRASS_THICKNESS_FALLOFF.comment = Controls how quickly each blade of grass becomes narrower. At 1.0 it will stay the same thickness until the tip @@ -1272,7 +1272,7 @@ screen.VOXY_SETTINGS = Voxy Settings option.VOXY_REFLECTIONS = Screen-Space Reflections on LOD Chunks screen.PHOTONICS_SETTINGS = Photonics Settings - option.PHOTONICS_ENABLED = Enable Photonics + option.PHOTONICS_ACTIVE = Enable Photonics option.PHOTONICS_INDIRECT_BRIGHTNESS = GI Brightness option.PHOTONICS_GI_ONLY = GI Only option.PHOTONICS_FLOODFILL_FOG_LIGHT_PROPAGATION = Fog Light Propagation (Floodfill!) diff --git a/shaders/lang/zh_cn.lang b/shaders/lang/zh_cn.lang index b4ff4d9..32f76f5 100644 --- a/shaders/lang/zh_cn.lang +++ b/shaders/lang/zh_cn.lang @@ -1,6 +1,6 @@ option.SHADER_VERSION_LABEL = §d§lECLIPSE§r - Bliss 编辑版 prefix.SHADER_VERSION_LABEL = 版本 - value.SHADER_VERSION_LABEL.482 = 6.3.3 + value.SHADER_VERSION_LABEL.482 = 7.0.0 # 如果你是来翻译的,这不是玩笑,这些选项的功能正如其名 profile.POTATO=§4土豆 (极低配置) @@ -136,7 +136,7 @@ screen.Foliage = 植被 option.WAVY_STRENGTH = 摆动强度 option.WAVY_SPEED = 摆动速度 - option.SHADER_GRASS = 着色器草 §c(Iris 1.7+) + option.SHADER_GRASS_SETTING = 着色器草 §c(Iris 1.7+) option.GRASS_BASE_THICKNESS = 草叶基础厚度 option.GRASS_THICKNESS_FALLOFF = 草厚度衰减 option.GRASS_THICKNESS_FALLOFF.comment = 控制每片草叶变窄的速度。1.0 时,它将保持相同厚度直到叶尖 diff --git a/shaders/lib/SSBOs.glsl b/shaders/lib/SSBOs.glsl index 9239bf7..7fcbc58 100644 --- a/shaders/lib/SSBOs.glsl +++ b/shaders/lib/SSBOs.glsl @@ -1,4 +1,4 @@ -layout(std430, binding = 6) buffer SSBO1 { +layout(std430, binding = 4) buffer SSBO1 { mat4 customShadowMatrixSSBO; // 64 bytes vec3 customMoonVecSSBO; // 12 bytes diff --git a/shaders/lib/blocks.glsl b/shaders/lib/blocks.glsl index 099220e..ef1df0e 100644 --- a/shaders/lib/blocks.glsl +++ b/shaders/lib/blocks.glsl @@ -4,8 +4,7 @@ #define BLOCK_GRASS_TALL_LOWER 13 #define BLOCK_GRASS_TALL_UPPER 14 #define BLOCK_SAPLING 15 -#define BLOCK_VINE 16 -#define BLOCK_VINE_OTHER 17 +#define BLOCK_VINE_OTHER 21 #define BLOCK_LPV_IGNORE 50 #define BLOCK_LPV_MIN 51 #define BLOCK_LPV_MED 52 @@ -13,6 +12,16 @@ #define BLOCK_GROUND_WAVING 54 #define BLOCK_GROUND_WAVING_VERTICAL 55 #define BLOCK_AIR_WAVING 56 +#define BLOCK_BUTTON_FLOOR_NORTH_SOUTH 57 +#define BLOCK_BUTTON_FLOOR_EAST_WEST 58 +#define BLOCK_BUTTON_WALL_NORTH_SOUTH 59 +#define BLOCK_BUTTON_WALL_EAST_WEST 60 +#define BLOCK_BUTTON_WALL_NORTH 59 +#define BLOCK_BUTTON_WALL_EAST 60 +#define BLOCK_BUTTON_WALL_SOUTH 61 +#define BLOCK_BUTTON_WALL_WEST 62 +#define BLOCK_BUTTON_CEILING_NORTH_SOUTH 63 +#define BLOCK_BUTTON_CEILING_EAST_WEST 64 #define BLOCK_SSS_STRONG_2 79 #define BLOCK_SSS_STRONG 80 #define BLOCK_SSS_WEAK 81 @@ -20,6 +29,8 @@ #define BLOCK_SSS_WEAK_3 83 #define BLOCK_SSS_WEIRD 84 #define BLOCK_GRASS 85 +#define BLOCK_SSS_STRONG3 87 +#define BLOCK_CACTUS 89 #define BLOCK_AMETHYST_BUD_LARGE 101 #define BLOCK_AMETHYST_BUD_MEDIUM 102 #define BLOCK_AMETHYST_CLUSTER 103 @@ -114,7 +125,7 @@ #define BLOCK_FROGLIGHT_PEARLESCENT 192 #define BLOCK_FROGLIGHT_VERDANT 193 #define BLOCK_FURNACE_LIT 194 -#define BLOCK_GLOW_LICHEN 195 +#define BLOCK_CELESTIUM 195 #define BLOCK_GLOWSTONE 196 #define BLOCK_JACK_O_LANTERN 197 #define BLOCK_LANTERN 198 @@ -187,7 +198,15 @@ #define BLOCK_LAMP_LIT_YELLOW 265 #define SCULK_STUFF 266 #define BLOCK_ENCHANTING_TABLE 267 -#define BLOCK_COPPER_LANTERN 268 +#define BLOCK_COPPER_TORCH 268 +#define BLOCK_COPPER_LANTERN 269 +#define BLOCK_GLOW_LICHEN 270 +#define BLOCK_SCULK_VEIN 276 +#define BLOCK_VINE 282 +#define BLOCK_DAYLIGHT_DETECTOR 287 +#define BLOCK_UNLIT_REDSTONE_TORCH 288 +#define BLOCK_END_PORTAL_FRAME 289 +#define BLOCK_HOPPER 290 #define BLOCK_GLASS 301 #define BLOCK_GLASS_BLACK 302 #define BLOCK_GLASS_BLUE 303 @@ -205,11 +224,11 @@ #define BLOCK_GLASS_RED 315 #define BLOCK_GLASS_WHITE 316 #define BLOCK_GLASS_YELLOW 317 -#define BLOCK_HONEY 318 -#define BLOCK_ICE 319 -#define BLOCK_NETHER_PORTAL 320 -#define BLOCK_SLIME 321 -#define WISPJELLY 322 +#define BLOCK_HONEY 335 +#define BLOCK_ICE 336 +#define BLOCK_NETHER_PORTAL 337 +#define BLOCK_SLIME 338 +#define WISPJELLY 339 #define BLOCK_CARPET 401 #define BLOCK_DOOR_N 402 #define BLOCK_DOOR_E 403 @@ -308,6 +327,5 @@ #define BLOCK_WALL_TALL_N_S_LOW_W_E 495 #define BLOCK_WALL_TALL_W_E_LOW_N_S 496 #define BLOCK_WALL_MAX 496 -#define BLOCK_SCULK_VEIN 497 #define BLOCK_END_PORTAL 500 #define BLOCK_SIGN 501 \ No newline at end of file diff --git a/shaders/lib/diffuse_lighting.glsl b/shaders/lib/diffuse_lighting.glsl index dba0b4a..7d2c55f 100644 --- a/shaders/lib/diffuse_lighting.glsl +++ b/shaders/lib/diffuse_lighting.glsl @@ -1,4 +1,4 @@ -#if defined MAIN_SHADOW_PASS && defined LPV_HANDHELD_SHADOWS && defined IS_LPV_ENABLED +#if defined MAIN_SHADOW_PASS && (defined LPV_HANDHELD_SHADOWS && defined IS_LPV_ENABLED || defined PHOTONICS && defined PHOTONICS && !defined PH_ENABLE_HANDHELD_LIGHT) && !defined VOXY_PROGRAM float swapperlinZ2(float depth, float _near, float _far) { return (2.0 * _near) / (_far + _near - depth * (_far - _near)); } @@ -70,7 +70,7 @@ } #endif -#ifdef IS_LPV_ENABLED +#if (defined IS_LPV_ENABLED || defined PHOTONICS && defined PHOTONICS && !defined PH_ENABLE_HANDHELD_LIGHT) && !defined VOXY_PROGRAM vec3 GetHandLight(const in int itemId, const in vec3 playerPos, inout float lightRange) { vec3 lightFinal = vec3(0.0); vec3 lightColor = vec3(0.0); @@ -92,7 +92,7 @@ } #endif -#if defined PHOTONICS_ENABLED && !defined PHOTONICS_GI_ONLY +#if defined PHOTONICS && !defined VOXY_PROGRAM && !defined PHOTONICS_INCLUDED && defined PHOTONICS_ACTIVE uniform sampler2D radiosity_direct; uniform sampler2D radiosity_direct_soft; uniform sampler2D radiosity_handheld; @@ -116,8 +116,9 @@ vec3 doBlockLightLighting( float lightmapCurve = mix(lightmapLight, 2.5, lightmapBrightspot); vec3 blockLight = lightmapCurve * lightColor; - #if defined IS_LPV_ENABLED && defined MC_GL_ARB_shader_image_load_store && (!defined PHOTONICS_LIGHT_PASS || !defined PHOTONICS_ENABLED || defined PHOTONICS_GI_ONLY) + #if defined IS_LPV_ENABLED && defined MC_GL_ARB_shader_image_load_store && (!defined PHOTONICS_LIGHT_PASS || !defined PHOTONICS || !defined PH_ENABLE_BLOCKLIGHT || !defined PHOTONICS_ACTIVE) && !defined VOXY_PROGRAM vec4 lpvSample = SampleLpvLinear(lpvPos); + #ifdef VANILLA_LIGHTMAP_MASK lpvSample.rgb *= lightmapCurve; #endif @@ -135,6 +136,7 @@ vec3 doBlockLightLighting( #ifdef Hand_Held_lights // create handheld lightsources + #if !defined ENABLE_PHOTONICS_HANDHELD || !defined PHOTONICS_LIGHT_PASS if (heldItemId > 0){ float lightRange = 0.0; vec3 handLightCol = GetHandLight(heldItemId, playerPos, lightRange); @@ -165,23 +167,68 @@ vec3 doBlockLightLighting( blockLight += handLightCol2; } + #endif + + #if defined PH_ENABLE_HANDHELD_LIGHT && !defined PH_ENABLE_BLOCKLIGHT && !defined PHOTONICS_LIGHT_PASS + vec3 ph_direct_hand = texture(radiosity_handheld, gl_FragCoord.xy*texelSize/RENDER_SCALE).xyz; + blockLight += ph_direct_hand * 1.35; + #endif #endif #endif - #if defined PHOTONICS_ENABLED && !defined PHOTONICS_GI_ONLY && !defined WEATHER && defined PHOTONICS_LIGHT_PASS + #if defined PHOTONICS && defined PH_ENABLE_BLOCKLIGHT && !defined WEATHER && defined PHOTONICS_LIGHT_PASS && !defined VOXY_PROGRAM && defined PHOTONICS_ACTIVE #if defined DISTANT_HORIZONS || defined VOXY if(!depthCheck) #endif { - vec3 ph_direct_hand = texture(radiosity_handheld, gl_FragCoord.xy*texelSize).xyz; - vec3 ph_direct = texture(radiosity_direct, gl_FragCoord.xy*texelSize).xyz; - vec4 ph_direct_soft = texture(radiosity_direct_soft, gl_FragCoord.xy*texelSize); + vec3 photonicsLight = vec3(0.0); - vec3 photonicsLight = ph_direct_hand * 1.35; - photonicsLight += ph_direct; - photonicsLight = pow(photonicsLight, vec3(1.45)); - photonicsLight += (ph_direct_soft.xyz / max(ph_direct_soft.w, 1.0f)); - photonicsLight += lightColor * 2.5 * min(max(lightmap-0.999,0.0)/(1.0-0.999),1.0); + #if defined PH_ENABLE_HANDHELD_LIGHT + vec3 ph_direct_hand = texture(radiosity_handheld, gl_FragCoord.xy*texelSize/RENDER_SCALE).xyz; + vec3 handLight = ph_direct_hand * 1.35; + #else + #ifdef Hand_Held_lights + vec3 handLight = vec3(0.0); + if (heldItemId > 0){ + float lightRange = 0.0; + vec3 handLightCol = GetHandLight(heldItemId, playerPos, lightRange); + + #if defined MAIN_SHADOW_PASS && defined LPV_HANDHELD_SHADOWS + if (lightRange > 0.0 && firstPersonCamera) handLightCol *= SSRT_Handlight_Shadows(viewPos, depthCheck, -(viewPos + vec3(-0.25, 0.2, 0.0)), noise, normals, hand); + #endif + + #ifdef WEATHER + handLightCol *= 0.5; + #endif + + handLight += handLightCol; + } + + + if (heldItemId2 > 0){ + float lightRange2 = 0.0; + vec3 handLightCol2 = GetHandLight(heldItemId2, playerPos, lightRange2); + + #if defined MAIN_SHADOW_PASS && defined LPV_HANDHELD_SHADOWS + if (lightRange2 > 0.0 && firstPersonCamera) handLightCol2 *= SSRT_Handlight_Shadows(viewPos, depthCheck, -(viewPos + vec3(0.25, 0.2, 0.0)), noise, normals, hand); + #endif + + #ifdef WEATHER + handLightCol2 *= 0.5; + #endif + + handLight += handLightCol2; + } + #endif + #endif + + #ifdef PH_ENABLE_BLOCKLIGHT + vec3 ph_direct = texture(radiosity_direct, gl_FragCoord.xy*texelSize/RENDER_SCALE).xyz; + vec4 ph_direct_soft = texture(radiosity_direct_soft, gl_FragCoord.xy*texelSize/RENDER_SCALE); + photonicsLight += ph_direct; + photonicsLight += (ph_direct_soft.xyz / max(ph_direct_soft.w, 1.0f)); + photonicsLight += lightColor * 2.5 * min(max(lightmap-0.999,0.0)/(1.0-0.999),1.0); + #endif #if defined DISTANT_HORIZONS || defined VOXY float photonicsFalloff = smoothstep(min(far, 256.0), min(0.9*far, 230.0), length(playerPos)); @@ -190,7 +237,7 @@ vec3 doBlockLightLighting( #endif - blockLight = mix(blockLight, photonicsLight, photonicsFalloff); + blockLight = mix(blockLight, photonicsLight+handLight, photonicsFalloff); } #endif diff --git a/shaders/lib/settings.glsl b/shaders/lib/settings.glsl index dc27d5b..6935355 100644 --- a/shaders/lib/settings.glsl +++ b/shaders/lib/settings.glsl @@ -1037,9 +1037,15 @@ const vec3 aerochrome_color = mix(vec3(1.0, 0.0, 0.0), vec3(0.715, 0.303, 0.631) #define VANILLA_CHUNK_FADING 1 // [0 1 2] -// #define SHADER_GRASS +// #define SHADER_GRASS_SETTING -#ifdef SHADER_GRASS +#ifdef SHADER_GRASS_SETTING + #define SHADER_GRASS +#endif + +// #define SHADER_GRASS_UNSUPPORTED_FIX + +#ifdef SHADER_GRASS_UNSUPPORTED_FIX #endif #define GRASS_BASE_THICKNESS 0.3 // [0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1.0] @@ -1133,6 +1139,9 @@ const vec3 aerochrome_color = mix(vec3(1.0, 0.0, 0.0), vec3(0.715, 0.303, 0.631) const float voxelDistance = 64.0; #endif +#define VOXEL_REFLECTIONS_TRANSLUCENT +#define VOXEL_REFLECTIONS_SOLID + // ruining parts of the effect to make it more like vanilla floodfill // #define VANILLA_LIGHTMAP_MASK @@ -1165,32 +1174,83 @@ const vec3 aerochrome_color = mix(vec3(1.0, 0.0, 0.0), vec3(0.715, 0.303, 0.631) // ----- PHOTONICS SETTINGS ----- // ////////////////////////////////// -// #define PHOTONICS_ENABLED +#define VOXEL_REFLECTIONS +#define PHOTONICS_ACTIVE -// #define PHOTONICS_GI_ONLY + +#if defined VOXEL_REFLECTIONS && defined PHOTONICS && defined PHOTONICS_ACTIVE + #define LPV_ENABLED + #define IS_LPV_ENABLED +#endif + +// #define MIRROR_IRON +#ifdef MIRROR_IRON +#endif + + +#ifndef PHOTONICS +#undef PHOTONICS_ACTIVE +#endif // #define PHOTONICS_FLOODFILL_FOG_LIGHT_PROPAGATION #ifdef PHOTONICS_FLOODFILL_FOG_LIGHT_PROPAGATION #endif -#if defined PHOTONICS_ENABLED && !defined PHOTONICS_GI_ONLY +// TODO: THIS IS HORRENDOUS +#define ENABLE_PHOTONICS_GI +#define ENABLE_PHOTONICS_BLOCKLIGHT +#define ENABLE_PHOTONICS_HANDHELD - #ifndef PHOTONICS_FLOODFILL_FOG_LIGHT_PROPAGATION +#ifdef ENABLE_PHOTONICS_GI +#endif + +#ifdef ENABLE_PHOTONICS_BLOCKLIGHT +#endif + +#ifdef ENABLE_PHOTONICS_HANDHELD +#endif + +#ifdef PHOTONICS_ACTIVE +#else + #undef ENABLE_PHOTONICS_GI + #undef ENABLE_PHOTONICS_BLOCKLIGHT + #undef ENABLE_PHOTONICS_HANDHELD +#endif + + + +#ifdef IS_LPV_ENABLED + #define COLORED_LIGHTS + #define COLORED_HANDHELD_LIGHTS + + // TODO: MAKE FLOODFILL USE PHOTONICS VOXEL MAP! + #define VOXELIZE +#endif + +#if defined PHOTONICS && defined PHOTONICS_ACTIVE + #undef VOXELIZE + + #if !defined PHOTONICS_FLOODFILL_FOG_LIGHT_PROPAGATION && !defined VOXEL_REFLECTIONS && defined PH_ENABLE_BLOCKLIGHT #undef IS_LPV_ENABLED #undef LPV_ENABLED #endif - - #undef Hand_Held_lights +#else #undef VOXEL_REFLECTIONS - #undef MIRROR_IRON #endif -#ifdef PHOTONICS_GI_ONLY -#endif +#define PHOTONICS_ALPHA_MODE BLOCK // [NONE BLOCK VOXEL] +#define PHOTONICS_MAX_LIGHTS 1000 // [250 500 750 1000 1250] +#define PHOTONICS_MAX_SAMPLES 20 // [5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100] #define PHOTONICS_INDIRECT_BRIGHTNESS 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.5 3.0 3.5 4.0 4.5 5.0] +#define VOXEL_REFLECTIONS_FOG +#define VOXEL_REFLECTIONS_LPV_FOG + +#ifdef VOXEL_REFLECTIONS_FOG +#endif + //////////////////////////////// // ----- DEBUG SETTINGS ----- // //////////////////////////////// @@ -1208,7 +1268,11 @@ const vec3 aerochrome_color = mix(vec3(1.0, 0.0, 0.0), vec3(0.715, 0.303, 0.631) #define debug_DEPTHTEX1 10 #define debug_CLOUDDEPTHTEX 11 #define debug_WATERSIM 12 -#define DEBUG_VIEW debug_OFF // [debug_OFF debug_SHADOWMAP debug_NORMALS debug_SPECULAR debug_INDIRECT debug_DIRECT debug_VIEW_POSITION debug_DH_WATER_BLENDING debug_FILTERED_STUFF debug_DEPTHTEX0 debug_DEPTHTEX1 debug_CLOUDDEPTHTEX debug_WATERSIM] +#define debug_radiosity_direct 13 +#define debug_radiosity_direct_soft 14 +#define debug_radiosity_handheld 15 +#define debug_radiosity_GI 16 +#define DEBUG_VIEW debug_OFF // [debug_OFF debug_SHADOWMAP debug_NORMALS debug_SPECULAR debug_INDIRECT debug_DIRECT debug_VIEW_POSITION debug_DH_WATER_BLENDING debug_FILTERED_STUFF debug_DEPTHTEX0 debug_DEPTHTEX1 debug_CLOUDDEPTHTEX debug_WATERSIM debug_radiosity_direct debug_radiosity_direct_soft debug_radiosity_handheld debug_radiosity_GI] // #define ISOLATE_RESOURCEPACK_SKY #if DEBUG_VIEW == debug_DEPTHTEX0 || DEBUG_VIEW == debug_DEPTHTEX1 @@ -1283,7 +1347,7 @@ const vec3 aerochrome_color = mix(vec3(1.0, 0.0, 0.0), vec3(0.715, 0.303, 0.631) #undef SHADER_GRASS #endif -#if MC_VERSION < 12101 +#if MC_VERSION < 12101 && !defined SHADER_GRASS_UNSUPPORTED_FIX #undef SHADER_GRASS #endif diff --git a/shaders/lib/specular.glsl b/shaders/lib/specular.glsl index d936b4e..5d2d853 100644 --- a/shaders/lib/specular.glsl +++ b/shaders/lib/specular.glsl @@ -258,14 +258,1884 @@ vec3 toScreenSpace2(vec3 p, bool depthCheck) { return fragposition.xyz / fragposition.w; } -vec4 screenSpaceReflections( +#if defined VOXEL_REFLECTIONS && defined IS_LPV_ENABLED && defined adjnjawudiuwad +uint GetVoxelBlock(const in ivec3 voxelPos) { + return imageLoad(imgVoxelMask, voxelPos).r % 2000u; +} + +int voxelIndex(ivec3 voxelPos) { + return voxelPos.x + voxelPos.y * int(VoxelSize) + voxelPos.z * int(VoxelSize*VoxelSize); +} + +int voxelNormalIndex(vec3 voxelNormal) { + return clamp(int(abs(voxelNormal.x)*(voxelNormal.x*0.5+0.5) + abs(voxelNormal.y)*(voxelNormal.y*0.5+2.5) + abs(voxelNormal.z)*(voxelNormal.z*0.5+4.5) + 0.5), 0, 5); +} + +vec2 decodeVec2_16(float a){ + const vec2 constant1 = 4294967294. / vec2( 65536., 4294967295.); + const float constant2 = 65536. / 65535.; + return fract( a * constant1 ) * constant2 ; +} + +void GetVoxelData(const in ivec3 voxelPos, inout vec2 texcoord, inout vec3 tintColor, in vec3 voxelNormal, inout vec2 lightmap) { + vec4 blockTexture = voxelData[voxelIndex(voxelPos)][voxelNormalIndex(voxelNormal)]; + texcoord = decodeVec2_16(blockTexture.x); + lightmap = decodeVec2(blockTexture.y); + lightmap = min(max(lightmap - 0.05,0.0)*1.06,1.0); + + vec2 RGtint = decodeVec2(blockTexture.b); + tintColor = vec3(RGtint.r, blockTexture.a, RGtint.g); +} + +void GetTexCoord(const in ivec3 voxelPos, inout vec2 texcoord, in vec3 voxelNormal) { + texcoord = decodeVec2_16(voxelData[voxelIndex(voxelPos)][voxelNormalIndex(voxelNormal)].x); +} + +float getVoxelEmission(vec3 Albedo) { + vec3 hsv = RgbToHsv(Albedo); + float emissive = smoothstep(0.05, 0.15, hsv.y) * pow(hsv.z, 3.5); + return emissive * 0.5; +} + +void voxelEmission( + inout vec3 Lighting, + vec3 Albedo, + float Emission +){ + if( Emission < 254.5/255.0) Lighting = mix(Lighting, Albedo * 5.0 * Emissive_Brightness, pow(Emission, Emissive_Curve)); +} + +vec2 CleanVoxelSample( + int samples, float totalSamples, float noise +){ + + // this will be used to make 1 full rotation of the spiral. the mulitplication is so it does nearly a single rotation, instead of going past where it started + float variance = noise * 0.897; + + // for every sample input, it will have variance applied to it. + float variedSamples = float(samples) + variance; + + // for every sample, the sample position must change its distance from the origin. + // otherwise, you will just have a circle. + float spiralShape = sqrt(variedSamples / (totalSamples + variance)); + + float shape = 2.26; // this is very important. 2.26 is very specific + float theta = variedSamples * (PI * shape); + + float x = cos(theta) * spiralShape; + float y = sin(theta) * spiralShape; + + return vec2(x, y); +} + +float ComputeVoxelShadowMap(inout vec3 directLightColor, vec3 playerPos, float maxDistFade, float noise, in vec3 geoNormals){ + + // if(maxDistFade <= 0.0) return 1.0; + + // setup shadow projection + #ifdef OVERWORLD_SHADER + #ifdef CUSTOM_MOON_ROTATION + vec3 projectedShadowPosition = mat3(customShadowMatrixSSBO) * playerPos + customShadowMatrixSSBO[3].xyz; + #else + vec3 projectedShadowPosition = mat3(shadowModelView) * playerPos + shadowModelView[3].xyz; + #endif + + applyShadowBias(projectedShadowPosition, playerPos, geoNormals); + + projectedShadowPosition = diagonal3(shadowProjection) * projectedShadowPosition + shadowProjection[3].xyz; + + // un-distort + #ifdef DISTORT_SHADOWMAP + float distortFactor = calcDistort(projectedShadowPosition.xy); + projectedShadowPosition.xy *= distortFactor; + #else + float distortFactor = 1.0; + #endif + + projectedShadowPosition.z += shadowProjection[3].z * 0.0012; + #else + float distortFactor = 1.0; + #endif + + #if defined END_ISLAND_LIGHT && defined END_SHADER + vec4 shadowPos = customShadowMatrixSSBO * vec4(playerPos, 1.0); + applyShadowBias(shadowPos.xyz, playerPos, geoNormals); + shadowPos = customShadowPerspectiveSSBO * shadowPos; + vec3 projectedShadowPosition = shadowPos.xyz / shadowPos.w; + #endif + + + + // hamburger + projectedShadowPosition = projectedShadowPosition * vec3(0.5,0.5,0.5/6.0) + vec3(0.5); + + float shadowmap = 0.0; + vec3 translucentTint = vec3(0.0); + + #ifdef BASIC_SHADOW_FILTER + int samples = int(SHADOW_FILTER_SAMPLE_COUNT * 0.5); + #ifdef END_SHADER + float rdMul = 52.0*d0k; + #else + float rdMul = 2.4*distortFactor*d0k; + #endif + + for(int i = 0; i < samples; i++){ + vec2 offsetS = CleanVoxelSample(i, samples - 1, noise) * rdMul; + projectedShadowPosition.xy += offsetS; + #else + int samples = 1; + #endif + + + #ifdef TRANSLUCENT_COLORED_SHADOWS + + // determine when opaque shadows are overlapping translucent shadows by getting the difference of opaque depth and translucent depth + float shadowDepthDiff = pow(clamp((texture(shadowtex1, projectedShadowPosition).x - projectedShadowPosition.z) * 2.0,0.0,1.0),2.0); + + // get opaque shadow data to get opaque data from translucent shadows. + float opaqueShadow = texture(shadowtex0, projectedShadowPosition).x; + shadowmap += max(opaqueShadow, shadowDepthDiff); + + // get translucent shadow data + vec4 translucentShadow = texture(shadowcolor0, projectedShadowPosition.xy); + + // this curve simply looked the nicest. it has no other meaning. + float shadowAlpha = pow(1.0 - pow(translucentShadow.a,5.0),0.2); + + // normalize the color to remove luminance, and keep the hue. remove all opaque color. + // mulitply shadow alpha to shadow color, but only on surfaces facing the lightsource. this is a tradeoff to protect subsurface scattering's colored shadow tint from shadow bias on the back of the caster. + translucentShadow.rgb = max(normalize(translucentShadow.rgb + 0.0001), max(opaqueShadow, 1.0-shadowAlpha)) * shadowAlpha; + + // make it such that full alpha areas that arent in a shadow have a value of 1.0 instead of 0.0 + translucentTint += mix(translucentShadow.rgb, vec3(1.0), opaqueShadow*shadowDepthDiff); + + #else + shadowmap += texture(shadow, projectedShadowPosition).x; + #endif + + #ifdef BASIC_SHADOW_FILTER + } + #endif + + #ifdef TRANSLUCENT_COLORED_SHADOWS + // tint the lightsource color with the translucent shadow color + directLightColor *= mix(vec3(1.0), translucentTint.rgb / samples, maxDistFade); + #endif + + float shadowResult = shadowmap / samples; + + #ifdef END_SHADER + float r = length(projectedShadowPosition.xy - vec2(0.5)); + if (r < 0.5 && abs(projectedShadowPosition.z) < 1.0) { + shadowResult *= smoothstep(0.5, 0.25, r); + } else { + shadowResult = 0.0; + } + #endif + + return shadowResult; + // return mix(1.0, shadowmap / samples, maxDistFade); +} + +bool planeIntersect(inout vec3 currPos, in float worldOffset, inout vec3 voxelPos, in vec3 reflectedVector, inout vec3 stepAxis, in vec3 normal) +{ + float denom = dot(reflectedVector, normal); + if (abs(denom) < 1e-6) return false; + float t = -(dot(currPos, normal) - worldOffset) / denom; + + if (t > 0.0 && t < 2.0) { + vec3 hitPos = currPos + t * reflectedVector; + + if (all(equal(ivec3(voxelPos), ivec3(GetLpvPosition(hitPos))))) { + currPos = hitPos; + stepAxis = normal; + return true; + } + } + return false; +} + +bool AABBintersection(inout vec3 currPos, const vec3 reflectedVector, const vec3 stepSizes, const vec3 boxMin, const vec3 boxMax, inout vec3 stepAxis) { + vec3 t1 = (boxMin - currPos) * stepSizes; + vec3 t2 = (boxMax - currPos) * stepSizes; + + vec3 tmin = min(t1, t2); + vec3 tmax = max(t1, t2); + + float tmin0 = max(max(tmin.x, tmin.y), tmin.z); + float tmax0 = min(min(tmax.x, tmax.y), tmax.z); + + bool hit = tmin0 < tmax0 && tmin0 > 0.0; + float fHit = float(hit); + + vec3 entryDist = abs(tmin - vec3(tmin0)); + vec3 normal = step(entryDist, vec3(0.0)); + + stepAxis = mix(stepAxis, normal, fHit); + currPos = mix(currPos, currPos + tmin0 * reflectedVector, fHit); + + return hit; +} + +struct RayHit { + bool hit; + float t; + vec3 currPos; + vec3 stepAxis; +}; + +RayHit AABBintersection2(const vec3 currPos, const vec3 reflectedVector, const vec3 stepSizes, const vec3 boxMin, const vec3 boxMax, const in vec3 stepAxis) { + vec3 t1 = (boxMin - currPos) * stepSizes; + vec3 t2 = (boxMax - currPos) * stepSizes; + + vec3 tmin = min(t1, t2); + vec3 tmax = max(t1, t2); + + float tmin0 = max(max(tmin.x, tmin.y), tmin.z); + float tmax0 = min(min(tmax.x, tmax.y), tmax.z); + + bool hit = tmin0 < tmax0 && tmin0 > 0.0; + float fHit = float(hit); + + RayHit result; + result.hit = hit; + result.t = tmin0; + + vec3 entryDist = abs(tmin - vec3(tmin0)); + vec3 normal = step(entryDist, vec3(0.0)); + + result.stepAxis = mix(stepAxis, normal, fHit); + result.currPos = mix(currPos, currPos + tmin0 * reflectedVector, fHit); + + return result; +} + +void sortIntersectionCutout(const in RayHit RayHit1, const in RayHit RayHit2, const in vec3 stepDir, const in vec2 gtexSize, const in vec2 texCoordOffset, const in vec3 voxelPos, inout bool hit, inout vec3 shiftedCurrPos, inout vec3 stepAxis) { + bool useFirst = (RayHit1.hit && (!RayHit2.hit || RayHit1.t < RayHit2.t)); + RayHit firstHit = useFirst ? RayHit1 : RayHit2; + RayHit secondHit = useFirst ? RayHit2 : RayHit1; + + vec2 _texcoord; + vec3 voxelNormal = -firstHit.stepAxis * stepDir; + GetTexCoord(ivec3(voxelPos), _texcoord, voxelNormal); + vec3 wPos = firstHit.currPos + cameraPosition; + vec2 sampleDir = firstHit.stepAxis.x * fract(wPos.zy) + firstHit.stepAxis.y * fract(wPos.xz) + firstHit.stepAxis.z * fract(wPos.xy); + _texcoord = mix(_texcoord + vec2(0, texCoordOffset.y), _texcoord - vec2(0, texCoordOffset.y), sampleDir); + _texcoord = mix(_texcoord + vec2(texCoordOffset.x, 0), _texcoord - vec2(texCoordOffset.x, 0), sampleDir); + #ifdef IRIS_FEATURE_TEXTURE_FILTERING + float sampleAlpha = sampleNearest(gtexture, _texcoord, gtexSize).a; + #else + float sampleAlpha = texture(gtexture, _texcoord).a; + #endif + + firstHit = sampleAlpha > 0.1 ? firstHit : secondHit; + + hit = firstHit.hit; + float fHit = float(hit); + shiftedCurrPos = mix(shiftedCurrPos, firstHit.currPos, fHit); + stepAxis = mix(stepAxis, firstHit.stepAxis, fHit); +} + +void sortIntersectionOpaque(inout RayHit RayHit1, const in RayHit RayHit2, inout bool hit, inout vec3 shiftedCurrPos, inout vec3 stepAxis) { + bool useFirst = (RayHit1.hit && (!RayHit2.hit || RayHit1.t < RayHit2.t)); + RayHit firstHit = useFirst ? RayHit1 : RayHit2; + RayHit secondHit = useFirst ? RayHit2 : RayHit1; + + RayHit1 = firstHit; + hit = firstHit.hit; + float fHit = float(hit); + shiftedCurrPos = mix(shiftedCurrPos, firstHit.currPos, fHit); + stepAxis = mix(stepAxis, firstHit.stepAxis, fHit); +} + +void fenceIntersection(inout vec3 shiftedCurrPos, const in vec3 reflectedVector, const in vec3 invReflectedVector, inout bool hit, const in vec3 floorOffsetWorldPos, const in vec3 floorOffsetWorldPos1, const in vec3 floorOffsetWorldPos2, inout vec3 stepAxis) { + RayHit hit1 = AABBintersection2(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.375,0.001,0.375), floorOffsetWorldPos + vec3(0.625,0.999,0.625), stepAxis); + RayHit hit2 = AABBintersection2(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos1, floorOffsetWorldPos2, stepAxis); + RayHit hit3 = AABBintersection2(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos1 - vec3(0.0, 0.375, 0.0), floorOffsetWorldPos2 - vec3(0.0, 0.375, 0.0), stepAxis); + + sortIntersectionOpaque(hit1, hit2, hit, shiftedCurrPos, stepAxis); + sortIntersectionOpaque(hit1, hit3, hit, shiftedCurrPos, stepAxis); +} + +void fenceIntersection2(inout vec3 shiftedCurrPos, const in vec3 reflectedVector, const in vec3 invReflectedVector, inout bool hit, const in vec3 floorOffsetWorldPos, const in vec3 floorOffsetWorldPos1, const in vec3 floorOffsetWorldPos2, const in vec3 floorOffsetWorldPos3, const in vec3 floorOffsetWorldPos4, inout vec3 stepAxis) { + RayHit hit1 = AABBintersection2(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.375,0.001,0.375), floorOffsetWorldPos + vec3(0.625,0.999,0.625), stepAxis); + RayHit hit2 = AABBintersection2(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos1, floorOffsetWorldPos2, stepAxis); + RayHit hit3 = AABBintersection2(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos1 - vec3(0.0, 0.375, 0.0), floorOffsetWorldPos2 - vec3(0.0, 0.375, 0.0), stepAxis); + RayHit hit4 = AABBintersection2(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos3, floorOffsetWorldPos4, stepAxis); + RayHit hit5 = AABBintersection2(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos3 - vec3(0.0, 0.375, 0.0), floorOffsetWorldPos4 - vec3(0.0, 0.375, 0.0), stepAxis); + + sortIntersectionOpaque(hit1, hit2, hit, shiftedCurrPos, stepAxis); + sortIntersectionOpaque(hit1, hit3, hit, shiftedCurrPos, stepAxis); + sortIntersectionOpaque(hit1, hit4, hit, shiftedCurrPos, stepAxis); + sortIntersectionOpaque(hit1, hit5, hit, shiftedCurrPos, stepAxis); +} + +#ifdef END_SHADER +const vec3 WsunVec = vec3(0.0, 1.0, 0.0); +#endif + +bool traceQuarterVoxel(in vec3 reflectedVector, in vec3 invReflectedVector, in vec3 stepSizes, in vec3 voxelPos, in vec3 stepDir, in vec3 nextDist, in vec3 currPos) { + vec3 quarterVoxelPos = voxelPos / 4.0; + vec3 originalQuarterVoxelPos = quarterVoxelPos; + vec3 quarterNextDist = 4.0*((stepDir * 0.5 + 0.5) - fract(quarterVoxelPos)) * invReflectedVector; + // vec3 oldVoxelPos = quarterVoxelPos; + vec3 quarterCurrPos = currPos; + // vec3 oldCurrPos = currPos; + + for (int i = 0; i < LpvSize/4; i++) { + float closestDist = min(min(quarterNextDist.x, quarterNextDist.y), quarterNextDist.z); + quarterCurrPos += reflectedVector * closestDist; + + vec3 stepAxis = step(quarterNextDist, vec3(closestDist)); + stepAxis.yz *= (1.0 - stepAxis.x); + stepAxis.z *= (1.0 - stepAxis.y); + + quarterVoxelPos += stepAxis * stepDir; + if (clamp(quarterVoxelPos, ivec3(0), ivec3(VoxelSize3/4u)) != quarterVoxelPos) break; + + uint blockID = imageLoad(imgQuarterVoxelMask, ivec3(quarterVoxelPos)).r; + if(blockID > 0u && quarterVoxelPos != originalQuarterVoxelPos) { + // voxelPos = oldVoxelPos * 4.0; + // currPos = oldCurrPos; + return true; + } + + quarterNextDist += 4.0 * stepSizes * stepAxis - closestDist; + + // oldVoxelPos = quarterVoxelPos; + // oldCurrPos = quarterCurrPos; + } + + return false; +} +#endif + +#if defined VOXEL_REFLECTIONS + +vec4 voxelReflection( vec3 reflectedVector, - vec3 viewPos, + vec3 flatNormal, + vec3 normal, + vec3 origin, float noise, + inout float backgroundReflectMask +) { + // vec3 invReflectedVector = 1.0 / reflectedVector; + // vec3 stepSizes = abs(invReflectedVector); + // vec3 voxelPos = GetLpvPosition(origin - 0.000055*normal); + // vec3 originalVoxelPos = voxelPos; + // vec3 stepDir = sign(reflectedVector); + // vec3 nextDist = (stepDir * 0.5 + 0.5 - fract(voxelPos)) * invReflectedVector; + // vec3 currPos = origin; + + //#ifdef OVERWORLD_SHADER + vec3 DirectLightColor = lightSourceColorSSBO / 1400.0; + vec3 AmbientLightColor = averageSkyCol_CloudsSSBO / 900.0; + + #ifdef USE_CUSTOM_DIFFUSE_LIGHTING_COLORS + DirectLightColor = luma(DirectLightColor) * vec3(DIRECTLIGHT_DIFFUSE_R,DIRECTLIGHT_DIFFUSE_G,DIRECTLIGHT_DIFFUSE_B); + AmbientLightColor = luma(AmbientLightColor) * vec3(INDIRECTLIGHT_DIFFUSE_R,INDIRECTLIGHT_DIFFUSE_G,INDIRECTLIGHT_DIFFUSE_B); + #endif + + AmbientLightColor *= ambient_brightness; + //#endif + + // vec2 gtexSize = vec2(1.0) / textureSize(gtexture, 0); + // vec2 texCoordOffset = vec2(TEXTURE_RESOLUTION * 0.5) * gtexSize; + vec4 color = vec4(0.0); + + //bool quarterHit = traceQuarterVoxel(reflectedVector, invReflectedVector, stepSizes, voxelPos, stepDir, nextDist, currPos); + + // uint traceDist = LpvSize; + // if(!quarterHit) { + // traceDist = 6u; + // } + + // for (uint i = 0; i < traceDist; i++) { + // float closestDist = min(min(nextDist.x, nextDist.y), nextDist.z); + // currPos += reflectedVector * closestDist; +// + // vec3 stepAxis = step(nextDist, vec3(closestDist)); + // stepAxis.yz *= (1.0 - stepAxis.x); + // stepAxis.z *= (1.0 - stepAxis.y); +// + // voxelPos += stepAxis * stepDir; + // if (clamp(voxelPos, ivec3(0), ivec3(VoxelSize3-1u)) != voxelPos) break; + // + // uint blockID = GetVoxelBlock(ivec3(voxelPos)); +// + // vec3 shiftedCurrPos = currPos; + // vec3 originalStepAxis = stepAxis; +// + // #ifdef DEFERRED_SPECULAR + // bool hit = blockID != BLOCK_EMPTY && blockID != 80 && voxelPos != originalVoxelPos && blockID != BLOCK_LPV_IGNORE; + // #else + // bool hit = blockID != BLOCK_EMPTY && blockID != BLOCK_WATER && blockID != 80 && voxelPos != originalVoxelPos && blockID != BLOCK_LPV_IGNORE; + // #endif +// + // #ifdef MIRROR_IRON + // if (blockID == 504) { + // traceDist = LpvSize; + // hit = false; + // vec3 voxelNormal = -originalStepAxis * stepDir; + // reflectedVector = reflect(reflectedVector, voxelNormal); + // invReflectedVector = 1.0 / reflectedVector; + // stepSizes = abs(invReflectedVector); + // voxelPos = GetLpvPosition(currPos - 0.000055*voxelNormal); + // originalVoxelPos = voxelPos; + // stepDir = sign(reflectedVector); + // nextDist = (stepDir * 0.5 + 0.5 - fract(voxelPos)) * invReflectedVector; + // } else + // #endif + // { + // nextDist += stepSizes * originalStepAxis - closestDist; + // } +// + // if(!hit) continue; +// + // vec3 offsetWorldPos = shiftedCurrPos + cameraPosition + stepAxis*stepDir*0.00015; + // vec3 fractOffsetWorldPos = fract(offsetWorldPos); + // vec3 floorOffsetWorldPos = floor(offsetWorldPos) - cameraPosition; + // vec3 worldPosSampleOffset = vec3(0.0); + // + // // I hope nobody ever looks at this shit + // if(blockID >= 12 && blockID < 424) { + // if(blockID >= 22 && blockID < 38) { + // if(blockID == 22) hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.375,0.001,0.375), floorOffsetWorldPos + vec3(0.625,0.999,0.625), stepAxis); + // else if(blockID == 23) fenceIntersection(shiftedCurrPos, reflectedVector, invReflectedVector, hit, floorOffsetWorldPos, floorOffsetWorldPos + vec3(0.4375, 0.75, 0.375), floorOffsetWorldPos + vec3(0.5625, 0.9375, 0.001), stepAxis); + // else if(blockID == 24) fenceIntersection(shiftedCurrPos, reflectedVector, invReflectedVector, hit, floorOffsetWorldPos, floorOffsetWorldPos + vec3(0.625, 0.75, 0.4375), floorOffsetWorldPos + vec3(0.999, 0.9375, 0.5625), stepAxis); + // else if(blockID == 25) fenceIntersection(shiftedCurrPos, reflectedVector, invReflectedVector, hit, floorOffsetWorldPos, floorOffsetWorldPos + vec3(0.4375, 0.75, 0.625), floorOffsetWorldPos + vec3(0.5625, 0.9375, 0.999), stepAxis); + // else if(blockID == 26) fenceIntersection(shiftedCurrPos, reflectedVector, invReflectedVector, hit, floorOffsetWorldPos, floorOffsetWorldPos + vec3(0.001, 0.75, 0.4375), floorOffsetWorldPos + vec3(0.375, 0.9375, 0.5625), stepAxis); + // else if(blockID == 27) fenceIntersection(shiftedCurrPos, reflectedVector, invReflectedVector, hit, floorOffsetWorldPos, floorOffsetWorldPos + vec3(0.4375, 0.75, 0.999), floorOffsetWorldPos + vec3(0.5625, 0.9375, 0.001), stepAxis); + // else if(blockID == 28) fenceIntersection(shiftedCurrPos, reflectedVector, invReflectedVector, hit, floorOffsetWorldPos, floorOffsetWorldPos + vec3(0.001, 0.75, 0.4375), floorOffsetWorldPos + vec3(0.999, 0.9375, 0.5625), stepAxis); + // else if(blockID == 29) fenceIntersection2(shiftedCurrPos, reflectedVector, invReflectedVector, hit, floorOffsetWorldPos, floorOffsetWorldPos + vec3(0.4375, 0.75, 0.375), floorOffsetWorldPos + vec3(0.5625, 0.9375, 0.001), floorOffsetWorldPos + vec3(0.625, 0.75, 0.4375), floorOffsetWorldPos + vec3(0.999, 0.9375, 0.5625), stepAxis); + // else if(blockID == 30) fenceIntersection2(shiftedCurrPos, reflectedVector, invReflectedVector, hit, floorOffsetWorldPos, floorOffsetWorldPos + vec3(0.4375, 0.75, 0.375), floorOffsetWorldPos + vec3(0.5625, 0.9375, 0.001), floorOffsetWorldPos + vec3(0.001, 0.75, 0.4375), floorOffsetWorldPos + vec3(0.375, 0.9375, 0.5625), stepAxis); + // else if(blockID == 31) fenceIntersection2(shiftedCurrPos, reflectedVector, invReflectedVector, hit, floorOffsetWorldPos, floorOffsetWorldPos + vec3(0.4375, 0.75, 0.625), floorOffsetWorldPos + vec3(0.5625, 0.9375, 0.999), floorOffsetWorldPos + vec3(0.625, 0.75, 0.4375), floorOffsetWorldPos + vec3(0.999, 0.9375, 0.5625), stepAxis); + // else if(blockID == 32) fenceIntersection2(shiftedCurrPos, reflectedVector, invReflectedVector, hit, floorOffsetWorldPos, floorOffsetWorldPos + vec3(0.4375, 0.75, 0.625), floorOffsetWorldPos + vec3(0.5625, 0.9375, 0.999), floorOffsetWorldPos + vec3(0.001, 0.75, 0.4375), floorOffsetWorldPos + vec3(0.375, 0.9375, 0.5625), stepAxis); + // else if(blockID == 33) fenceIntersection2(shiftedCurrPos, reflectedVector, invReflectedVector, hit, floorOffsetWorldPos, floorOffsetWorldPos + vec3(0.4375, 0.75, 0.375), floorOffsetWorldPos + vec3(0.5625, 0.9375, 0.001), floorOffsetWorldPos + vec3(0.001, 0.75, 0.4375), floorOffsetWorldPos + vec3(0.999, 0.9375, 0.5625), stepAxis); + // else if(blockID == 34) fenceIntersection2(shiftedCurrPos, reflectedVector, invReflectedVector, hit, floorOffsetWorldPos, floorOffsetWorldPos + vec3(0.4375, 0.75, 0.999), floorOffsetWorldPos + vec3(0.5625, 0.9375, 0.001), floorOffsetWorldPos + vec3(0.625, 0.75, 0.4375), floorOffsetWorldPos + vec3(0.999, 0.9375, 0.5625), stepAxis); + // else if(blockID == 35) fenceIntersection2(shiftedCurrPos, reflectedVector, invReflectedVector, hit, floorOffsetWorldPos, floorOffsetWorldPos + vec3(0.4375, 0.75, 0.625), floorOffsetWorldPos + vec3(0.5625, 0.9375, 0.999), floorOffsetWorldPos + vec3(0.001, 0.75, 0.4375), floorOffsetWorldPos + vec3(0.999, 0.9375, 0.5625), stepAxis); + // else if(blockID == 36) fenceIntersection2(shiftedCurrPos, reflectedVector, invReflectedVector, hit, floorOffsetWorldPos, floorOffsetWorldPos + vec3(0.001, 0.75, 0.4375), floorOffsetWorldPos + vec3(0.375, 0.9375, 0.5625), floorOffsetWorldPos + vec3(0.4375, 0.75, 0.999), floorOffsetWorldPos + vec3(0.5625, 0.9375, 0.001), stepAxis); + // else if(blockID == 37) fenceIntersection2(shiftedCurrPos, reflectedVector, invReflectedVector, hit, floorOffsetWorldPos, floorOffsetWorldPos + vec3(0.4375, 0.75, 0.999), floorOffsetWorldPos + vec3(0.5625, 0.9375, 0.001), floorOffsetWorldPos + vec3(0.001, 0.75, 0.4375), floorOffsetWorldPos + vec3(0.999, 0.9375, 0.5625), stepAxis); + // } + // else if(blockID == BLOCK_TORCH || blockID == BLOCK_REDSTONE_TORCH_LIT || blockID == BLOCK_COPPER_TORCH || blockID == BLOCK_SOUL_TORCH || blockID == BLOCK_UNLIT_REDSTONE_TORCH) { + // hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.5625,0.0,0.5625), floorOffsetWorldPos + vec3(0.4375,0.625,0.4375), stepAxis); + // worldPosSampleOffset.y = 0.1875; + // } + // else if(blockID == BLOCK_LANTERN || blockID == BLOCK_SOUL_LANTERN || blockID == BLOCK_COPPER_LANTERN) { + // RayHit hit1 = AABBintersection2(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.3125,0.001,0.3125), floorOffsetWorldPos + vec3(0.6875,0.4375,0.6875), stepAxis); + // RayHit hit2 = AABBintersection2(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.375,0.4375,0.375), floorOffsetWorldPos + vec3(0.625,0.5625,0.625), stepAxis); +// + // sortIntersectionOpaque(hit1, hit2, hit, shiftedCurrPos, stepAxis); +// + // // thank you mojank for making the texture layout different on all three lantern types + // worldPosSampleOffset.y = 0.28125; + // #if MC_VERSION >= 12111 + // if(blockID == BLOCK_LANTERN){ + // worldPosSampleOffset.xz = vec2(-0.0625); + // } else if(blockID == BLOCK_SOUL_LANTERN){ + // worldPosSampleOffset.xz = vec2(-0.1875); + // } else if(blockID == BLOCK_COPPER_LANTERN){ + // worldPosSampleOffset.xz = vec2(0.0625); + // } + // worldPosSampleOffset.z = mix(worldPosSampleOffset.z, 0.0, abs(stepAxis.y)); + // #else + // if(blockID == BLOCK_LANTERN || blockID == BLOCK_SOUL_LANTERN){ + // worldPosSampleOffset.xz = vec2(0.0625); + // worldPosSampleOffset.z = mix(worldPosSampleOffset.z, 0.0, abs(stepAxis.y)); + // } + // #endif + // } + // else if(blockID >= 12 && blockID <= 178) { + // if (blockID == 178 || blockID >= 12 && blockID <= 21 || blockID == BLOCK_GROUND_WAVING || blockID >= BLOCK_SSS_STRONG3 && blockID <= 88) { + // RayHit hit1 = AABBintersection2(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.0, 0.0, 0.4999), floorOffsetWorldPos + vec3(1.0, 1.0, 0.5001), stepAxis); + // RayHit hit2 = AABBintersection2(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.4999, 0.0, 0.0), floorOffsetWorldPos + vec3(0.5001, 1.0, 1.0), stepAxis); +// + // sortIntersectionCutout(hit1, hit2, stepDir, gtexSize, texCoordOffset, voxelPos, hit, shiftedCurrPos, stepAxis); + // } + // else if(blockID == BLOCK_CACTUS) hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.0625,0.0,0.0625), floorOffsetWorldPos + vec3(0.9375,0.9999,0.9375), stepAxis); + // else if(blockID == BLOCK_BUTTON_FLOOR_NORTH_SOUTH) { + // hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.3125,0.0,0.375), floorOffsetWorldPos + vec3(0.6875,0.125,0.625), stepAxis); + // worldPosSampleOffset.y = 0.5; + // } + // else if(blockID == BLOCK_BUTTON_FLOOR_EAST_WEST) { + // hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.375,0.0,0.3125), floorOffsetWorldPos + vec3(0.625,0.125,0.6875), stepAxis); + // worldPosSampleOffset.y = 0.5; + // } + // else if(blockID == BLOCK_BUTTON_WALL_NORTH) hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.6875,0.625,0.875), floorOffsetWorldPos + vec3(0.3125,0.375,1.0), stepAxis); + // else if(blockID == BLOCK_BUTTON_WALL_EAST) hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.125,0.625,0.6875), floorOffsetWorldPos + vec3(0.0,0.375,0.3125), stepAxis); + // else if(blockID == BLOCK_BUTTON_WALL_SOUTH) hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.6875,0.625,0.125), floorOffsetWorldPos + vec3(0.3125,0.375,0.0), stepAxis); + // else if(blockID == BLOCK_BUTTON_WALL_WEST) hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.875,0.375,0.3125), floorOffsetWorldPos + vec3(1.0,0.625,0.6875), stepAxis); + // else if(blockID == BLOCK_BUTTON_CEILING_NORTH_SOUTH) hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.3125,1.0,0.375), floorOffsetWorldPos + vec3(0.6875,0.875 ,0.625), stepAxis); + // else if(blockID == BLOCK_BUTTON_CEILING_EAST_WEST) hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.375,1.0,0.3125), floorOffsetWorldPos + vec3(0.625,0.875,0.6875), stepAxis); + // else if(blockID == BLOCK_LEVER) hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.375,1.0,0.3125), floorOffsetWorldPos + vec3(0.625,0.875,0.6875), stepAxis); + // } else if(blockID >= 401 && blockID < 424) { + // if(blockID >= 401 && blockID < 416) { + // if(blockID == BLOCK_CARPET && fractOffsetWorldPos.y > 0.0625) hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.0,0.0,0.0), floorOffsetWorldPos + vec3(1.0,0.0625,1.0), stepAxis); + // else if(blockID == BLOCK_PRESSURE_PLATE) hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.0625,0.0,0.0625), floorOffsetWorldPos + vec3(0.9375,0.0625,0.9375), stepAxis); + // else if (blockID == 407) { + // hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.0001,0.9999,0.0001), floorOffsetWorldPos + vec3(0.9999,0.5,0.9999), stepAxis); + // worldPosSampleOffset.y = -0.25; + // } + // else if (blockID == 408) { + // hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.0001,0.0001,0.0001), floorOffsetWorldPos + vec3(0.9999,0.5,0.9999), stepAxis); + // worldPosSampleOffset.y = 0.25; + // } + // else if (blockID == BLOCK_SNOW_LAYERS && fractOffsetWorldPos.y > 0.125) hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos, floorOffsetWorldPos + vec3(1.0,0.125,1.0), stepAxis); + // else if (blockID == BLOCK_TRAPDOOR_BOTTOM) { + // hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.0001,0.0001,0.0001), floorOffsetWorldPos + vec3(0.9999,0.1875,0.9999), stepAxis); + // worldPosSampleOffset.y = 0.40625; + // } + // else if (blockID == BLOCK_TRAPDOOR_TOP && fractOffsetWorldPos.y < 0.8125) hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.0,1.0,0.0), floorOffsetWorldPos + vec3(1.0,0.8125,1.0), stepAxis); + // else if (blockID == BLOCK_TRAPDOOR_N || blockID == BLOCK_DOOR_N) { + // hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.9999,0.9999,0.8125), floorOffsetWorldPos + vec3(0.0001,0.0001,0.9999), stepAxis); +// + // if(blockID == BLOCK_DOOR_N) { + // worldPosSampleOffset.z = mix(-0.5, -0.40625, abs(stepAxis.y)); + // } else { + // worldPosSampleOffset.z = mix(0.5, -0.40625, abs(stepAxis.y)); + // } + // } + // else if ((blockID == BLOCK_TRAPDOOR_E || blockID == BLOCK_DOOR_E)) { + // hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.1875,0.9999,0.9999), floorOffsetWorldPos + vec3(0.0001,0.0001,0.0001), stepAxis); +// + // if(blockID == BLOCK_DOOR_E) { + // worldPosSampleOffset.x = mix(-0.5, 0.0, abs(stepAxis.y)); + // worldPosSampleOffset.z = mix(0.0, -0.40625, abs(stepAxis.y)); + // } else { + // worldPosSampleOffset.x = mix(0.5, 0.0, abs(stepAxis.y)); + // worldPosSampleOffset.z = mix(0.0, 0.40625, abs(stepAxis.y)); + // } + // } + // else if (blockID == BLOCK_TRAPDOOR_S || blockID == BLOCK_DOOR_S) { + // hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.9999,0.9999,0.1875), floorOffsetWorldPos + vec3(0.0001,0.0001,0.0001), stepAxis); +// + // if(blockID == BLOCK_DOOR_S) { + // worldPosSampleOffset.z = mix(-0.5, 0.34375, abs(stepAxis.y)); + // } else { + // worldPosSampleOffset.z = mix(0.5, 0.40625, abs(stepAxis.y)); + // } + // } + // else if (blockID == BLOCK_TRAPDOOR_W || blockID == BLOCK_DOOR_W) { + // hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.8125,0.9999,0.9999), floorOffsetWorldPos + vec3(0.9999,0.0001,0.0001), stepAxis); +// + // if(blockID == BLOCK_DOOR_W) { + // worldPosSampleOffset.x = mix(-0.5, 0.0, abs(stepAxis.y)); + // worldPosSampleOffset.z = mix(0.0, -0.40625, abs(stepAxis.y)); + // } else { + // worldPosSampleOffset.x = mix(0.5, 0.0, abs(stepAxis.y)); + // worldPosSampleOffset.z = mix(0.0, 0.40625, abs(stepAxis.y)); + // } + // } + // } + // else if (blockID >= 416 && blockID < 424) { + // if(blockID == 416 && fractOffsetWorldPos.y > 0.5 && fractOffsetWorldPos.z > 0.5) { + // hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.0,0.0,1.0), floorOffsetWorldPos + vec3(1.0,0.5,0.5), stepAxis); + // hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.0,0.5,0.5), floorOffsetWorldPos + vec3(1.0,1.0,0.0), stepAxis) || hit; + // } else if(blockID == 417 && fractOffsetWorldPos.y > 0.5 && fractOffsetWorldPos.x < 0.5) { + // hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.5,0.0,0.0), floorOffsetWorldPos + vec3(0.0,0.5,1.0), stepAxis); + // hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.5,0.5,0.0), floorOffsetWorldPos + vec3(1.0,1.0,1.0), stepAxis) || hit; + // } else if(blockID == 418 && fractOffsetWorldPos.y > 0.5 && fractOffsetWorldPos.z < 0.5) { + // hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.0,0.0,0.0), floorOffsetWorldPos + vec3(1.0,0.5,0.5), stepAxis); + // hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.0,0.5,0.5), floorOffsetWorldPos + vec3(1.0,1.0,1.0), stepAxis) || hit; + // } else if(blockID == 419) { + // if(fractOffsetWorldPos.y > 0.5 && fractOffsetWorldPos.x > 0.5) { + // hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.5,0.0,0.0), floorOffsetWorldPos + vec3(1.0,0.5,1.0), stepAxis); + // hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.5,0.5,0.0), floorOffsetWorldPos + vec3(0.0,1.0,1.0), stepAxis) || hit; + // } +// + // worldPosSampleOffset.y = -0.25; + // worldPosSampleOffset.z = mix(0.0, -0.25, abs(stepAxis.y)); + // + // } else if(blockID == 420 && fractOffsetWorldPos.y > 0.5 && fractOffsetWorldPos.x < 0.5 && fractOffsetWorldPos.z < 0.5) { + // hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.0,0.0,0.0), floorOffsetWorldPos + vec3(0.5,0.5,0.5), stepAxis); + // hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.0,0.5,0.5), floorOffsetWorldPos + vec3(0.5,1.0,1.0), stepAxis) || hit; + // hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.5,0.5,0.0), floorOffsetWorldPos + vec3(1.0,1.0,0.5), stepAxis) || hit; + // } else if(blockID == 421 && fractOffsetWorldPos.y > 0.5 && fractOffsetWorldPos.x > 0.5 && fractOffsetWorldPos.z < 0.5) { + // hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.5,0.0,0.0), floorOffsetWorldPos + vec3(1.0,0.5,0.5), stepAxis); + // hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(1.0,0.5,0.5), floorOffsetWorldPos + vec3(0.5,1.0,1.0), stepAxis) || hit; + // hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.5,1.0,0.5), floorOffsetWorldPos + vec3(0.0,0.5,0.0), stepAxis) || hit; + // } else if(blockID == 422) { + // if(fractOffsetWorldPos.y > 0.5 && fractOffsetWorldPos.x > 0.5 && fractOffsetWorldPos.z > 0.5) { + // hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.5,0.0,0.5), floorOffsetWorldPos + vec3(1.0,0.5,1.0), stepAxis); + // hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.5,0.5,0.5), floorOffsetWorldPos + vec3(0.0,1.0,1.0), stepAxis) || hit; + // hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.5,1.0,0.5), floorOffsetWorldPos + vec3(1.0,0.5,0.0), stepAxis) || hit; + // } +// + // worldPosSampleOffset.y = -0.25; + // worldPosSampleOffset.z = mix(0.0, -0.25, abs(stepAxis.y)); + // } else if(blockID == 423 && fractOffsetWorldPos.y > 0.5 && fractOffsetWorldPos.x < 0.5 && fractOffsetWorldPos.z > 0.5) { + // hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.0,0.0,0.5), floorOffsetWorldPos + vec3(0.5,0.5,1.0), stepAxis); + // hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.0,1.0,0.5), floorOffsetWorldPos + vec3(0.5,0.5,0.0), stepAxis) || hit; + // hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.5,1.0,0.5), floorOffsetWorldPos + vec3(1.0,0.5,1.0), stepAxis) || hit; + // } + // } + // } else if (blockID >= 267 && blockID <= 291) { + // if(blockID == BLOCK_HOPPER) { + // RayHit hit1 = AABBintersection2(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.25, 0.25, 0.25), floorOffsetWorldPos + vec3(0.75, 0.625, 0.75), stepAxis); + // RayHit hit2 = AABBintersection2(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.0001, 0.625, 0.0001), floorOffsetWorldPos + vec3(0.9999, 0.9999, 0.125), stepAxis); + // RayHit hit3 = AABBintersection2(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.0001, 0.625, 0.0001), floorOffsetWorldPos + vec3(0.125, 0.9999, 0.9999), stepAxis); + // RayHit hit4 = AABBintersection2(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.875, 0.625, 0.0001), floorOffsetWorldPos + vec3(0.9999, 0.9999, 0.9999), stepAxis); + // RayHit hit5 = AABBintersection2(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.0001, 0.625, 0.875), floorOffsetWorldPos + vec3(0.9999, 0.9999, 0.9999), stepAxis); + // RayHit hit6 = AABBintersection2(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.0001, 0.625, 0.0001), floorOffsetWorldPos + vec3(0.9999, 0.6875, 0.9999), stepAxis); +// + // sortIntersectionOpaque(hit1, hit2, hit, shiftedCurrPos, stepAxis); + // sortIntersectionOpaque(hit1, hit3, hit, shiftedCurrPos, stepAxis); + // sortIntersectionOpaque(hit1, hit4, hit, shiftedCurrPos, stepAxis); + // sortIntersectionOpaque(hit1, hit5, hit, shiftedCurrPos, stepAxis); + // sortIntersectionOpaque(hit1, hit6, hit, shiftedCurrPos, stepAxis); + // worldPosSampleOffset.y = -0.34375; +// + // worldPosSampleOffset.z = mix(0.0, -0.34375, abs(stepAxis.y)); + // } + // if(blockID == BLOCK_ENCHANTING_TABLE) { + // worldPosSampleOffset.y = 0.125; + // hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.0001,0.0001,0.0001), floorOffsetWorldPos + vec3(0.9999,0.75,0.9999), stepAxis); + // } + // else if(blockID == BLOCK_END_PORTAL_FRAME) { + // worldPosSampleOffset.y = 0.09375; + // hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.0001,0.0001,0.0001), floorOffsetWorldPos + vec3(0.9999,0.8125,0.9999), stepAxis); + // } + // else if(blockID == BLOCK_GLOW_LICHEN_NORTH || blockID == BLOCK_SCULK_VEIN_NORTH || blockID == BLOCK_VINE_NORTH) hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.0,0.0,0.0001), floorOffsetWorldPos + vec3(1.0,1.0,0.001), stepAxis); + // else if(blockID == BLOCK_GLOW_LICHEN_EAST || blockID == BLOCK_SCULK_VEIN_EAST || blockID == BLOCK_VINE_EAST) hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.999,0.0,0.0), floorOffsetWorldPos + vec3(0.9999,1.0,1.0), stepAxis); + // else if(blockID == BLOCK_GLOW_LICHEN_SOUTH || blockID == BLOCK_SCULK_VEIN_SOUTH || blockID == BLOCK_VINE_SOUTH) hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.0,0.0,0.999), floorOffsetWorldPos + vec3(1.0,1.0,0.9999), stepAxis); + // else if(blockID == BLOCK_GLOW_LICHEN_WEST || blockID == BLOCK_SCULK_VEIN_WEST || blockID == BLOCK_VINE_WEST) hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.001,1.0,1.0), floorOffsetWorldPos + vec3(0.0001,0.0,0.0), stepAxis); + // else if(blockID == BLOCK_GLOW_LICHEN_UP || blockID == BLOCK_SCULK_VEIN_UP || blockID == BLOCK_VINE_UP) hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.0,0.999,0.0), floorOffsetWorldPos + vec3(1.0,0.9999,1.0), stepAxis); + // else if(blockID == BLOCK_GLOW_LICHEN_DOWN || blockID == BLOCK_SCULK_VEIN_DOWN) hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.0,0.0001,0.0), floorOffsetWorldPos + vec3(1.0,0.001,1.0), stepAxis); + // else if (blockID == BLOCK_DAYLIGHT_DETECTOR && fractOffsetWorldPos.y > 0.375) hit = AABBintersection(shiftedCurrPos, reflectedVector, invReflectedVector, floorOffsetWorldPos + vec3(0.0,0.0,0.0), floorOffsetWorldPos + vec3(1.0,0.375,1.0), stepAxis); + // } else if (blockID >= 319 && blockID < 335) { +// + // + // } + // } +// + // // if(length(currPos) > 50) return vec4(10.0); + // // if(hit) return vec4(0.0,0.0,0.0,1.0); +// + // if(hit){ + // vec2 texcoord; + // vec3 tint; + // vec3 voxelNormal = -stepAxis * stepDir; +// + // vec2 lightmap; + // GetVoxelData(ivec3(voxelPos), texcoord, tint, voxelNormal, lightmap); +// + // vec3 wPos = shiftedCurrPos + cameraPosition; + // vec3 fractWpos = fract(wPos); + // fractWpos += worldPosSampleOffset; + // vec2 sampleDir = stepAxis.x * fractWpos.zy + stepAxis.y * fractWpos.xz + stepAxis.z * fractWpos.xy; + // texcoord = mix(texcoord + vec2(0, texCoordOffset.y), texcoord - vec2(0, texCoordOffset.y), sampleDir); + // texcoord = mix(texcoord + vec2(texCoordOffset.x, 0), texcoord - vec2(texCoordOffset.x, 0), sampleDir); +// + // #ifdef IRIS_FEATURE_TEXTURE_FILTERING + // vec4 sampleColor = sampleNearest(gtexture, texcoord, gtexSize); + // #else + // vec4 sampleColor = texture(gtexture, texcoord); + // #endif + // + // if(sampleColor.a > 0.1){ + // vec3 albedo = sampleColor.rgb; + // albedo *= tint; +// + // albedo = toLinear(albedo); +// + // //#if defined OVERWORLD_SHADER +// + // float SkylightDir = voxelNormal.y; + // + // SkylightDir = SkylightDir*0.5+0.5; +// + // float skylight = mix(0.08 + 0.92*(1.0-lightmap.y), 1.0, SkylightDir); +// + // vec3 Indirect_lighting = 0.525*doIndirectLighting(AmbientLightColor * skylight, vec3(1.0), lightmap.y); + // //#endif +// + // vec3 lpvPos = GetLpvPosition(shiftedCurrPos); +// + // #ifdef MAIN_SHADOW_PASS + // float smoothSkylight; + // Indirect_lighting += doBlockLightLighting(vec3(TORCH_R,TORCH_G,TORCH_B), lightmap.x, shiftedCurrPos, lpvPos, vec3(0.0), false, noise, voxelNormal, false); + // #else + // Indirect_lighting += doBlockLightLighting(vec3(TORCH_R,TORCH_G,TORCH_B), lightmap.x, shiftedCurrPos, lpvPos); + // #endif +// + // // vec3 AO = vec3(pow(1.0 - vanillaAO*vanillaAO,5.0)); + // // Indirect_lighting *= AO; +// + // float shadowMapFalloff = smoothstep(0.0, 1.0, min(max(1.0 - length(shiftedCurrPos) / (shadowDistance+16),0.0)*5.0,1.0)); + // float sh = ComputeVoxelShadowMap(DirectLightColor, shiftedCurrPos, shadowMapFalloff, noise, voxelNormal); +// + // float lightLeakFix = clamp(pow(eyeBrightnessSmooth.y/240. + lightmap.y,2.0) ,0.0,1.0); + // sh *= lightLeakFix; +// + // #ifdef OVERWORLD_SHADER + // sh *= GetCloudShadow(wPos, WsunVec); + // #endif +// + // float NdotL; +// + // if(blockID == BLOCK_SSS_STRONG || blockID == BLOCK_SSS_STRONG3 || blockID == BLOCK_AIR_WAVING || blockID == BLOCK_SSS_STRONG_2 || + // blockID == BLOCK_GROUND_WAVING || blockID == BLOCK_GROUND_WAVING_VERTICAL || + // blockID == BLOCK_GRASS_SHORT || blockID == BLOCK_GRASS_TALL_UPPER || blockID == BLOCK_GRASS_TALL_LOWER || + // blockID == BLOCK_SSS_WEAK || blockID == BLOCK_CACTUS || blockID == BLOCK_SSS_WEAK_2 || + // blockID == BLOCK_CELESTIUM || (blockID >= 269 && blockID <= 274) || blockID == BLOCK_SNOW_LAYERS || blockID == BLOCK_CARPET || + // blockID == BLOCK_AMETHYST_BUD_MEDIUM || blockID == BLOCK_AMETHYST_BUD_LARGE || blockID == BLOCK_AMETHYST_CLUSTER || + // blockID == BLOCK_BAMBOO || blockID == BLOCK_SAPLING || (blockID >= BLOCK_VINE_NORTH && blockID <= BLOCK_VINE_UP) || blockID == BLOCK_VINE_OTHER) + // { + // NdotL = 1.0; + // } else { + // NdotL = clamp((-15.0 + dot(voxelNormal, WsunVec)*255.0) / 240.0, 0.0, 1.0); + // } +// + // vec3 finalColor = albedo * (Indirect_lighting + DirectLightColor * sh * NdotL); +// + // float EMISSIVE = 0.0; +// + // // normal block lightsources + // if(blockID >= 100 && blockID < 282) { + // EMISSIVE = 0.5; +// + // if(blockID == 266 || (blockID >= 276 && blockID <= 281)) EMISSIVE = 0.2; // sculk stuff +// + // else if(blockID == 195) EMISSIVE = 2.3; // glow lichen +// + // else if(blockID == 185) EMISSIVE = 1.5; // crying obsidian +// + // else if(blockID == 105) EMISSIVE = 2.0; // brewing stand + // + // else if(blockID == 236) EMISSIVE = 1.0; // respawn anchor +// + // else if(blockID == 101) EMISSIVE = 0.7; // large amethyst bud +// + // else if(blockID == 103) EMISSIVE = 1.0; // amethyst cluster +// + // else if(blockID == 244) EMISSIVE = 1.5; // soul fire +// + // EMISSIVE *= getVoxelEmission(albedo); +// + // voxelEmission(finalColor, albedo, EMISSIVE); + // } +// + // #if EMISSIVE_ORES > 0 + // if(blockID == 502) { + // EMISSIVE = EMISSIVE_ORES_STRENGTH; +// + // EMISSIVE *= getVoxelEmission(albedo); +// + // voxelEmission(finalColor, albedo, EMISSIVE); + // } + // #endif +// + // sampleColor.a *= (1.0 - color.a); +// + // color.rgb += finalColor * sampleColor.a; +// + // color.a += sampleColor.a; +// + // // if(dot(reflectedVector, normal) < 0.0) return vec4(color.rgb, 1.0); + // #if defined DEFERRED_SPECULAR + // if(blockID == BLOCK_WATER) { + // if(abs(voxelNormal.y) > 0.1){ + // vec3 waterPos = (wPos).xzy; +// + // vec3 bump = normalize(getWaveNormal(waterPos, shiftedCurrPos)); +// + // float bumpmult = WATER_WAVE_STRENGTH; +// + // bump = bump * vec3(bumpmult, bumpmult, bumpmult) + vec3(0.0f, 0.0f, 1.0f - bumpmult); +// + // voxelNormal.xz = bump.xy; + // } + // vec3 backgroundReflection = skyCloudsFromTex(reflect(reflectedVector, voxelNormal), colortex4).rgb / 1200.0; +// + // const float f0 = 0.02; + // float normalDotEye = dot(voxelNormal, reflectedVector); + // float fresnel = pow(clamp(1.0 + normalDotEye, 0.0, 1.0),5.0); +// + // fresnel = mix(f0, 1.0, fresnel); +// + // color.rgb = mix(color.rgb, backgroundReflection * min(max(lightmap.y-0.5,0.0)/0.4,1.0), fresnel); + // // color.rgb += SunReflection*SSR_HIT_SKY_MASK; +// + // // color.a = color.a + (1.0-color.a) * fresnel; + // return vec4(color.rgb, 1.0); + // } + // #endif + // + // if(color.a > 0.99) return vec4(color.rgb, 1.0); + // } + // } + // + // // if(hit) return color; // vec4(0.2, 0.87, 0.2, 1.0); + // } + + backgroundReflectMask = 1.0; + return color; +} +#endif + +#if defined OVERWORLD_SHADER || defined END_ISLAND_LIGHT && defined END_SHADER +vec2 CleanPhotonicsSample( + int samples, float totalSamples, float noise +){ + + // this will be used to make 1 full rotation of the spiral. the mulitplication is so it does nearly a single rotation, instead of going past where it started + float variance = noise * 0.897; + + // for every sample input, it will have variance applied to it. + float variedSamples = float(samples) + variance; + + // for every sample, the sample position must change its distance from the origin. + // otherwise, you will just have a circle. + float spiralShape = sqrt(variedSamples / (totalSamples + variance)); + + float shape = 2.26; // this is very important. 2.26 is very specific + float theta = variedSamples * (PI * shape); + + float x = cos(theta) * spiralShape; + float y = sin(theta) * spiralShape; + + return vec2(x, y); +} + +float ComputePhotonicsShadowMap(inout vec3 directLightColor, vec3 playerPos, float maxDistFade, float noise, in vec3 geoNormals){ + + // if(maxDistFade <= 0.0) return 1.0; + + // setup shadow projection + #ifdef OVERWORLD_SHADER + #ifdef CUSTOM_MOON_ROTATION + vec3 projectedShadowPosition = mat3(customShadowMatrixSSBO) * playerPos + customShadowMatrixSSBO[3].xyz; + #else + vec3 projectedShadowPosition = mat3(shadowModelView) * playerPos + shadowModelView[3].xyz; + #endif + + applyShadowBias(projectedShadowPosition, playerPos, geoNormals); + + projectedShadowPosition = diagonal3(shadowProjection) * projectedShadowPosition + shadowProjection[3].xyz; + + // un-distort + #ifdef DISTORT_SHADOWMAP + float distortFactor = calcDistort(projectedShadowPosition.xy); + projectedShadowPosition.xy *= distortFactor; + #else + float distortFactor = 1.0; + #endif + + projectedShadowPosition.z += shadowProjection[3].z * 0.0012; + #else + float distortFactor = 1.0; + #endif + + #if defined END_ISLAND_LIGHT && defined END_SHADER + vec4 shadowPos = customShadowMatrixSSBO * vec4(playerPos, 1.0); + applyShadowBias(shadowPos.xyz, playerPos, geoNormals); + shadowPos = customShadowPerspectiveSSBO * shadowPos; + vec3 projectedShadowPosition = shadowPos.xyz / shadowPos.w; + #endif + + + + // hamburger + projectedShadowPosition = projectedShadowPosition * vec3(0.5,0.5,0.5/6.0) + vec3(0.5); + + float shadowmap = 0.0; + vec3 translucentTint = vec3(0.0); + + #ifdef BASIC_SHADOW_FILTER + int samples = int(SHADOW_FILTER_SAMPLE_COUNT * 0.5); + #ifdef END_SHADER + float rdMul = 52.0*d0k; + #else + float rdMul = 2.4*distortFactor*d0k; + #endif + + for(int i = 0; i < samples; i++){ + vec2 offsetS = CleanPhotonicsSample(i, samples - 1, noise) * rdMul; + projectedShadowPosition.xy += offsetS; + #else + int samples = 1; + #endif + + + #ifdef TRANSLUCENT_COLORED_SHADOWS + + // determine when opaque shadows are overlapping translucent shadows by getting the difference of opaque depth and translucent depth + float shadowDepthDiff = pow(clamp((texture(shadowtex1, projectedShadowPosition).x - projectedShadowPosition.z) * 2.0,0.0,1.0),2.0); + + // get opaque shadow data to get opaque data from translucent shadows. + float opaqueShadow = texture(shadowtex0, projectedShadowPosition).x; + shadowmap += max(opaqueShadow, shadowDepthDiff); + + // get translucent shadow data + vec4 translucentShadow = texture(shadowcolor0, projectedShadowPosition.xy); + + // this curve simply looked the nicest. it has no other meaning. + float shadowAlpha = pow(1.0 - pow(translucentShadow.a,5.0),0.2); + + // normalize the color to remove luminance, and keep the hue. remove all opaque color. + // mulitply shadow alpha to shadow color, but only on surfaces facing the lightsource. this is a tradeoff to protect subsurface scattering's colored shadow tint from shadow bias on the back of the caster. + translucentShadow.rgb = max(normalize(translucentShadow.rgb + 0.0001), max(opaqueShadow, 1.0-shadowAlpha)) * shadowAlpha; + + // make it such that full alpha areas that arent in a shadow have a value of 1.0 instead of 0.0 + translucentTint += mix(translucentShadow.rgb, vec3(1.0), opaqueShadow*shadowDepthDiff); + + #else + shadowmap += texture(shadow, projectedShadowPosition).x; + #endif + + #ifdef BASIC_SHADOW_FILTER + } + #endif + + #ifdef TRANSLUCENT_COLORED_SHADOWS + // tint the lightsource color with the translucent shadow color + directLightColor *= mix(vec3(1.0), translucentTint.rgb / samples, maxDistFade); + #endif + + float shadowResult = shadowmap / samples; + + #ifdef END_SHADER + float r = length(projectedShadowPosition.xy - vec2(0.5)); + if (r < 0.5 && abs(projectedShadowPosition.z) < 1.0) { + shadowResult *= smoothstep(0.5, 0.25, r); + } else { + shadowResult = 0.0; + } + #endif + + return shadowResult; + // return mix(1.0, shadowmap / samples, maxDistFade); +} +#endif +#if defined PHOTONICS_INCLUDED && defined PHOTONICS && defined VOXEL_REFLECTIONS + +struct translucentHit { + vec3 hitNormal; + vec3 hitPos; + vec4 hitColor; + int hitID; + float skylight; +}; + +void trace_wsr(inout RayJob job, bool transparency, inout translucentHit[10] translucentHitRays, inout uint translucentHits, out int block_id, out float skylightmap) { + job.direction = normalize(job.direction); + + vec3 direction_inv = 1.0f / job.direction; + float t0 = intersects_world(direction_inv, 16.0f * job.origin); + if (t0 == -1.0f) { + job.result_position = vec3(47823934.0f) - world_offset; + return; + } + + vec3 position = job.origin * 16.0f + (t0 + 0.03f) * job.direction; + // vec3 position = 16.0f * job.origin; + + vec3 ray_direction_sign = sign(job.direction); + + ivec3 intersection_index = ivec3(7.5f * ray_direction_sign + vec3(7.5f, 12.5f, 17.5f)); + vec3 skipDelta = ray_direction_sign * 0.00001f; + ivec3 intersection_offset = max(ivec3(ray_direction_sign), 0); + + int t_min = -1; + + int block_index = -1; + + block_id = -1; + int voxel_index = 0; + + + ivec3 new_index = ivec3(0); + ivec3 old_index = ivec3(0); + + ivec3 entries = ivec3(0); + + result_tint_color = vec3(1f); + int previous_block_id = -1; + + for (int i = RAY_ITERATION_COUNT; !(ray_iteration_bound_reached = i < 0); i--) { + // debug += vec3(0.1f); + + ivec3 w = ivec3(position); // TODO: maybe use uvec3, no negative check neccessary + // ivec3 block_position = w >> 4; + + if (!is_inside(position)) // outside of world? + return; + + // if ((job.result_hit = block_position == ray_target)) { // ray target reached? + // break; + // } + + // if (ray_constraint != ivec3(-9999) && block_position != ray_constraint) + // return; + + int scale = 0; + int entry = 0; + + new_index.x = get_world_index((w >> 8) & 31); + if (new_index.x != old_index.x) { // TODO: CRITICAL! UBOs are too tiny for 32x32x32 + entries.x = root_array[new_index.x]; + } + + if (entries.x < 0) { // found chunk? + ivec3 block_pos = (w >> 4) & 15; + new_index.y = -entries.x + get_index(block_pos); + + if (new_index.y != old_index.y) { + entries.y = cb_array[new_index.y]; + if (entries.y < 0) { // found block + int block_data = -entries.y; + + block_index = block_data & 0xfff; + block_index = block_index * (ph_byte_size / 4); + + ph_result_sky_brightness = block_data >> 12; + block_id = cb_array[block_index]; + voxel_index = block_index + 2; + } else { + block_index = -1; + } + } + + if (block_index != -1) { // found block + ivec3 voxel_pos = w & 15; + new_index.z = voxel_index + get_index(voxel_pos); + if (new_index.z != old_index.z) { + entries.z = cb_array[new_index.z]; + + //if (breakOnEmpty && entries.z == 519536640) { + // job.result_hit = true; + // entries.z = -0; + // + // break; + //} + } + + if (entries.z < 0) { // found bloxel + #ifdef MIRROR_IRON + if(block_id == 504) { + vec3 normal = vec3(0.0); + normal[t_min] = sign(-ray_direction_sign[t_min]); + job.direction = reflect(job.direction, normal); + + direction_inv = 1.0f / job.direction; + + ray_direction_sign = sign(job.direction); + + intersection_index = ivec3(7.5f * ray_direction_sign + vec3(7.5f, 12.5f, 17.5f)); + skipDelta = ray_direction_sign * 0.00001f; + intersection_offset = max(ivec3(ray_direction_sign), 0); + } else + #endif + { + if ((-entries.z & 0x7f000000) == 0 || block_id == 85 || block_id == 13) { + job.result_hit = true; + break; + } + + vec4 color = unpack_color(-entries.z); + if (previous_block_id != block_id) { + if (color.a > 0.01 && translucentHits < 10u) { + + vec3 hitnormal = vec3(0.0); + if (t_min != -1) hitnormal[t_min] = sign(-ray_direction_sign[t_min]); + + translucentHitRays[translucentHits].hitNormal = hitnormal; + translucentHitRays[translucentHits].hitPos = vec3(position / 16.0f); + translucentHitRays[translucentHits].hitColor = color; + translucentHitRays[translucentHits].hitID = block_id; + translucentHitRays[translucentHits].skylight = get_result_sky_light(hitnormal) / 15.0; + + translucentHits += 1u; + } + + previous_block_id = block_id; + } + } + + scale = 4; + entry = to_fake_air_entry(block_pos); + + } else { scale = 0; entry = entries.z; } + } else { scale = 4; entry = entries.y; previous_block_id = -1;} + } else { scale = 8; entry = entries.x; } + + old_index = new_index; + + ivec3 intersection = (((ivec3(entry) >> intersection_index) & 31) + intersection_offset) << scale; + + scale += 4; + scale += int(scale == 8 + 4); + intersection += w & (-1 << scale); + + vec3 t = (intersection - position) * direction_inv; + t_min = int(t.x >= t.y); + t_min = t.z < t[t_min] ? 2 : t_min; + + position += t[t_min] * job.direction; + + // "push precision" into lower decimal values to fight rounding errors + position[t_min] = (intersection[t_min] * 0.01f + skipDelta[t_min]) * 100.0f; + } + + // lightEmittance = unpackUnorm4x8(cb_array[-entries.y / 4097]).xyz; + + job.result_color = vec3((-entries.z >> 0) & 0xff, (-entries.z >> 8) & 0xff, (-entries.z >> 16) & 0xff) / 0xff; + job.result_position = vec3(position / 16.0f); + + if (t_min != -1) + job.result_normal[t_min] = sign(-ray_direction_sign[t_min]); + + // job.result_color = debug; + + ray_target = ivec3(-1); + skylightmap = get_result_sky_light(job.result_normal) / 15.0; +} +#endif + +uniform float skyLightLevelSmooth; + +vec3 doBlockLightLightingVoxel( + vec3 lightColor, float lightmap, + vec3 playerPos, vec3 lpvPos +){ + lightmap = clamp(lightmap,0.0,1.0); + + float lightmapBrightspot = min(max(lightmap-0.7,0.0)*3.3333,1.0); + lightmapBrightspot *= lightmapBrightspot*lightmapBrightspot; + + float lightmapLight = 1.0-sqrt(1.0-lightmap); + lightmapLight *= lightmapLight; + + float lightmapCurve = mix(lightmapLight, 2.5, lightmapBrightspot); + vec3 blockLight = lightmapCurve * lightColor; + + #if defined IS_LPV_ENABLED && defined MC_GL_ARB_shader_image_load_store + vec4 lpvSample = SampleLpvLinear(lpvPos); + + #ifdef VANILLA_LIGHTMAP_MASK + lpvSample.rgb *= lightmapCurve; + #endif + + // create a smooth falloff at the edges of the voxel volume. + const float fadeLength = 10.0; // in meters + vec3 cubicRadius = clamp(min(((LpvSize3-1.0) - lpvPos)/fadeLength, lpvPos/fadeLength), 0.0, 1.0); + float voxelRangeFalloff = cubicRadius.x*cubicRadius.y*cubicRadius.z; + voxelRangeFalloff = 1.0 - pow(1.0-pow(voxelRangeFalloff,1.5),3.0); + + // outside the voxel volume, lerp to vanilla lighting as a fallback + blockLight = mix(blockLight, lpvSample.rgb + lightColor * 2.5 * min(max(lightmap-0.999,0.0)/(1.0-0.999),1.0), voxelRangeFalloff); + + #ifdef Hand_Held_lights + // create handheld lightsources + if (heldItemId > 0){ + float lightRange = 0.0; + vec3 handLightCol = GetHandLight(heldItemId, playerPos, lightRange); + + blockLight += handLightCol; + } + + + if (heldItemId2 > 0){ + float lightRange2 = 0.0; + vec3 handLightCol2 = GetHandLight(heldItemId2, playerPos, lightRange2); + + blockLight += handLightCol2; + } + #endif + #endif + + return blockLight * TORCH_AMOUNT; +} +#if defined PHOTONICS_INCLUDED && defined PHOTONICS && defined VOXEL_REFLECTIONS + #if defined OVERWORLD_SHADER + uniform float caveDetection; + #define TIMEOFDAYFOG + + #include "/lib/climate_settings.glsl" + #include "/lib/overworld_fog.glsl" + + vec4 raymarchWSR_LPV( + in vec3 origin, + in vec3 endPos, + in float dither + ){ + #if (!defined LPV_VL_FOG_ILLUMINATION || !defined IS_LPV_ENABLED) && (!defined FLASHLIGHT_FOG_ILLUMINATION || !defined FLASHLIGHT) + return vec4(0.0,0.0,0.0,1.0); + #endif + + if(length(origin-endPos) < 0.001) return vec4(0.0,0.0,0.0,1.0); + + const int SAMPLECOUNT = 3; + float mult = float(VL_SAMPLES) / float(SAMPLECOUNT) * 1.15; + float minimumDensity = 0.000025; + // if(eyeInWater) minimumDensity = 0.00006; + const float fadeLength = 10.0; // in blocks + + vec3 LPVrayStartPos = endPos-origin - gbufferModelViewInverse[3].xyz; + + // ensure the max marching distance is the voxel distance, or the render distance if the voxels go farther than it + float LPVRayLength = length(LPVrayStartPos); + #if LPV_SIZE == 8 + LPVrayStartPos *= min(LPVRayLength, min(256.0,far))/LPVRayLength; + #elif LPV_SIZE == 7 + LPVrayStartPos *= min(LPVRayLength, min(128.0,far))/LPVRayLength; + #elif LPV_SIZE == 6 + LPVrayStartPos *= min(LPVRayLength, min(64.0,far))/LPVRayLength; + #endif + LPVRayLength = length(LPVrayStartPos); + + vec3 rayProgress = vec3(0.0); + vec4 color = vec4(0.0,0.0,0.0,1.0); + const float expFactor = 11.0; + + for (int i = 0; i < SAMPLECOUNT; i++) { + float d = (pow(expFactor, float(i+dither)/float(SAMPLECOUNT))/expFactor - 1.0/expFactor)/(1.0-1.0/expFactor); + float dd = pow(expFactor, float(i+dither)/float(SAMPLECOUNT)) * log(expFactor) / float(SAMPLECOUNT)/(expFactor-1.0); + + rayProgress = gbufferModelViewInverse[3].xyz + d*LPVrayStartPos + origin; + + float density; + float _minimumDensity = minimumDensity; + + #ifdef OVERWORLD_SHADER + if(caveDetection < 0.9999) density = cloudVol(rayProgress + cameraPosition, 0.0) * (1.0 - caveDetection); + + _minimumDensity += caveDetection * minimumDensity; + #elif defined NETHER_SHADER + vec3 progressW = rayProgress + cameraPosition; + density = cloudVol(progressW); + + float dist = length(rayProgress); + float clearArea = 1.0 - min(max(1.0 - dist / 24.0,0.0),1.0); + + float plumeDensity = min(density * pow(min(max(100.0-progressW.y,0.0)/30.0,1.0),4.0), pow(clamp(1.0 - dist/far,0.0,1.0),5.0)); + plumeDensity *= NETHER_PLUME_DENSITY; + + float ceilingSmokeDensity = 0.001 * pow(min(max(progressW.y-40.0,0.0)/50.0,1.0),3.0); + ceilingSmokeDensity *= NETHER_CEILING_SMOKE_DENSITY; + + density = plumeDensity + ceilingSmokeDensity; + #elif defined END_SHADER + float volumeDensity = fogShape(rayProgress + cameraPosition); + float clearArea = 1.0-min(max(1.0 - length(rayProgress) / 100,0.0),1.0); + density = min(volumeDensity, clearArea*clearArea * END_STORM_DENSTIY); + #endif + + density = max(density/1000.0, _minimumDensity)*mult; + + // density = 0.0001; + + float volumeCoeff = exp(-dd*density*LPVRayLength); + + #if defined IS_LPV_ENABLED && defined LPV_VL_FOG_ILLUMINATION + vec3 lpvPos = GetLpvPosition(rayProgress); + + vec3 cubicRadius = clamp(min(((LpvSize3-1.0) - lpvPos)/fadeLength, lpvPos/fadeLength), 0.0, 1.0); + float LpvFadeF = cubicRadius.x*cubicRadius.y*cubicRadius.z; + + if(LpvFadeF < 0.01) break; + + vec3 sampleColor = SampleLpvLinear(lpvPos).rgb; + #ifdef VANILLA_LIGHTMAP_MASK + vec3 lighting = sampleColor * LPV_VL_FOG_ILLUMINATION_BRIGHTNESS * 25. * exp(-10 * (1.0-luma(sampleColor))); + #else + vec3 lighting = sampleColor * LPV_VL_FOG_ILLUMINATION_BRIGHTNESS * 25. * exp(-5 * (1.0-luma(sampleColor))); + #endif + + // if(eyeInWater) lighting *= 2.5; + + #ifdef LPV_VL_FOG_ILLUMINATION_HANDHELD + float lightRange = 0.0; + vec3 handLightCol = GetHandLight(heldItemId, rayProgress, lightRange); + + vec3 handLightCol2 = GetHandLight(heldItemId2, rayProgress, lightRange); + + lighting += (handLightCol + handLightCol2) * TORCH_AMOUNT * LPV_VL_FOG_ILLUMINATION_BRIGHTNESS * 0.04; + #endif + + color.rgb += (lighting - lighting * volumeCoeff) * color.a; + #endif + + #if defined FLASHLIGHT && defined FLASHLIGHT_FOG_ILLUMINATION + // vec3 shiftedViewPos = mat3(gbufferModelView)*(progressW-cameraPosition) + vec3(-0.25, 0.2, 0.0); + // vec3 shiftedPlayerPos = mat3(gbufferModelViewInverse) * shiftedViewPos; + vec3 shiftedViewPos; + vec3 shiftedPlayerPos; + float forwardOffset; + + #ifdef VIVECRAFT + if (vivecraftIsVR) { + forwardOffset = 0.0; + shiftedPlayerPos = (rayProgress) + ( vivecraftRelativeMainHandPos); + shiftedViewPos = shiftedPlayerPos * mat3(vivecraftRelativeMainHandRot); + } else + #endif + { + forwardOffset = 0.5; + shiftedViewPos = mat3(gbufferModelView)*(rayProgress) + vec3(-0.25, 0.2, 0.0); + shiftedPlayerPos = mat3(gbufferModelViewInverse) * shiftedViewPos; + } + + vec2 scaledViewPos = shiftedViewPos.xy / max(-shiftedViewPos.z - forwardOffset, 1e-7); + float linearDistance = length(shiftedPlayerPos); + float shiftedLinearDistance = length(scaledViewPos); + + float lightFalloff = 1.0 - clamp(1.0-linearDistance/FLASHLIGHT_RANGE, -0.999,1.0); + lightFalloff = max(exp(-10.0 * FLASHLIGHT_BRIGHTNESS_FALLOFF_MULT * lightFalloff),0.0); + float projectedCircle = clamp(1.0 - shiftedLinearDistance*FLASHLIGHT_SIZE,0.0,1.0); + + vec3 flashlightGlow = 25.0 * vec3(FLASHLIGHT_R,FLASHLIGHT_G,FLASHLIGHT_B) * lightFalloff * projectedCircle * FLASHLIGHT_BRIGHTNESS_MULT; + + color.rgb += (flashlightGlow - flashlightGlow * volumeCoeff) * color.a; + #endif + + color.a *= volumeCoeff; + } + return color; + } + + vec4 raymarchWSRfog( + const in vec3 origin, + const in vec3 endPos, + const in vec2 dither, + const in vec3 LightColor, + const in vec3 AmbientColor, + const in vec3 AveragedAmbientColor, + const in int SAMPLECOUNT + ){ + #ifndef TOGGLE_VL_FOG + return vec4(0.0,0.0,0.0,1.0); + #endif + if(length(origin-endPos) < 0.001) return vec4(0.0,0.0,0.0,1.0); + + float mult = float(VL_SAMPLES) / float(SAMPLECOUNT) * 1.15; + + //project pixel position into projected shadowmap space + vec3 dVWorld = endPos-origin - gbufferModelViewInverse[3].xyz; + + float rayLength = length(dVWorld); + + vec3 rayDir = normalize(endPos-origin); + + float maxLength = min(rayLength, far)/rayLength; + + dVWorld *= maxLength; + + float dL = length(dVWorld)/8.0; + + const float expFactor = 11.0; + + /// ------------- COLOR/LIGHTING STUFF ------------- \\\ + + vec3 color = vec3(0.0); + vec3 finalAbsorbance = vec3(1.0); + + float totalAbsorbance = 1.0; + + // float fogAbsorbance = 1.0; + // float atmosphereAbsorbance = 1.0; + vec3 atmosphereAbsorbance = vec3(1.0); + + float SdotV = dot(WsunVec, rayDir); + + ///// ----- fog lighting + //Mie phase + somewhat simulates multiple scattering (Horizon zero down cloud approx) + float sunPhase = fogPhase(SdotV)*5.0; + float skyPhase = 0.5 + pow(1.0-pow(1.0-clamp(rayDir.y*0.5+0.5,0.0,1.0),2.0),5.0)*2.0; + float rayL = phaseRayleigh(SdotV); + + vec3 rC = vec3(sky_coefficientRayleighR*1e-6, sky_coefficientRayleighG*1e-5, sky_coefficientRayleighB*1e-5) ; + vec3 mC = vec3(fog_coefficientMieR*1e-6, fog_coefficientMieG*1e-6, fog_coefficientMieB*1e-6); + + #if defined EXCLUDE_WRITE_TO_LUT && defined USE_CUSTOM_FOG_LIGHTING_COLORS + LightColor = dot(LightColor,vec3(0.21, 0.72, 0.07)) * vec3(DIRECTLIGHT_FOG_R,DIRECTLIGHT_FOG_G,DIRECTLIGHT_FOG_B); + AmbientColor = dot(AmbientColor,vec3(0.21, 0.72, 0.07)) * vec3(INDIRECTLIGHT_FOG_R,INDIRECTLIGHT_FOG_G,INDIRECTLIGHT_FOG_B); + #endif + + vec3 skyLightPhased = AmbientColor; + vec3 LightSourcePhased = LightColor; + + skyLightPhased *= skyPhase; + LightSourcePhased *= sunPhase; + + #ifdef AMBIENT_LIGHT_ONLY + LightSourcePhased = vec3(0.0); + #endif + + #ifdef PER_BIOME_ENVIRONMENT + vec3 biomeDirect = LightSourcePhased; + vec3 biomeIndirect = skyLightPhased; + float inBiome = BiomeVLFogColors(biomeDirect, biomeIndirect); + #endif + + float inACave = 1.0 - caveDetection; + float lightLevelZero = pow(clamp(eyeBrightnessSmooth.y/240.0 ,0.0,1.0),3.0); + + // SkyLightColor *= lightLevelZero*0.9 + 0.1; + // vec3 finalsceneColor = vec3(0.0); + + + for (int i = 0; i < SAMPLECOUNT; i++) { + float d = (pow(expFactor, float(i+dither.y)/float(SAMPLECOUNT))/expFactor - 1.0/expFactor)/(1-1.0/expFactor); + float dd = pow(expFactor, float(i+dither.x)/float(SAMPLECOUNT)) * log(expFactor) / float(SAMPLECOUNT)/(expFactor-1.0); + + // #ifdef VOLUMETRIC_CLOUDS + // // check if the fog intersects clouds + // if(length(d*dVWorld) > cloudPlaneDistance) break; + // #endif + + vec3 progressP = gbufferModelViewInverse[3].xyz + d*dVWorld + origin; + vec3 progressW = progressP + cameraPosition; + + //------------------------------------ + //------ SAMPLE SHADOWS FOR FOG EFFECTS + //------------------------------------ + #ifdef CUSTOM_MOON_ROTATION + vec3 fragposition = mat3(customShadowMatrixSSBO) * progressP + customShadowMatrixSSBO[3].xyz; + #else + vec3 fragposition = mat3(shadowModelView) * progressP + shadowModelView[3].xyz; + #endif + fragposition = diagonal3(shadowProjection) * fragposition + shadowProjection[3].xyz; + + #if defined DISTORT_SHADOWMAP && defined OVERWORLD_SHADER + float distortFactor = calcDistort(fragposition.xy); + #else + float distortFactor = 1.0; + #endif + + vec3 shadowPos = vec3(fragposition.xy * distortFactor, fragposition.z); + + vec3 sh = vec3(1.0); + if (abs(shadowPos.x) < 1.0-0.5/2048. && abs(shadowPos.y) < 1.0-0.5/2048.){ + shadowPos = shadowPos*vec3(0.5,0.5,0.5/6.0)+0.5; + + #ifdef TRANSLUCENT_COLORED_SHADOWS + sh = vec3(texture(shadowtex0, shadowPos).x); + + if(texture(shadowtex1, shadowPos).x > shadowPos.z && sh.x < 1.0){ + vec4 translucentShadow = texture(shadowcolor0, shadowPos.xy); + if(translucentShadow.a < 0.9) sh = normalize(translucentShadow.rgb+0.0001); + } + #else + sh = vec3(texture(shadow, shadowPos).x); + #endif + } + + sh *= GetCloudShadow(progressW, WsunVec); + + + #ifdef PER_BIOME_ENVIRONMENT + float maxDistance = inBiome * min(max(1.0 - length(d*dVWorld.xz)/(32*8),0.0)*2.0,1.0); + float fogDensity = cloudVol(progressW, maxDistance) * inACave * mult; + #else + float fogDensity = cloudVol(progressW, 0.0) * inACave * mult; + #endif + + //------------------------------------ + //------ MAIN FOG EFFECT + //------------------------------------ + float fogVolumeCoeff = exp(-fogDensity*dd*dL); // this is like beer-lambert law or something + + #ifdef PER_BIOME_ENVIRONMENT + vec3 indirectLight = mix(skyLightPhased, biomeIndirect, maxDistance); + vec3 DirectLight = mix(LightSourcePhased, biomeDirect, maxDistance) * sh; + #else + vec3 indirectLight = skyLightPhased; + vec3 DirectLight = LightSourcePhased * sh; + #endif + + vec3 Lightning = Iris_Lightningflash_VLfog(progressP); + vec3 lighting = DirectLight + indirectLight + 0.0025 * Lightning; + + color += (lighting - lighting * fogVolumeCoeff) * totalAbsorbance; + + // kill fog absorbance when in caves. + totalAbsorbance *= mix(1.0, fogVolumeCoeff, lightLevelZero); + + if(totalAbsorbance < 0.01) break; + + //------------------------------------ + //------ ATMOSPHERE HAZE EFFECT + //------------------------------------ + + // maximum range for atmosphere haze, basically. + float planetVolume = smoothstep(1.0 - exp(clamp(1.0 - length(progressP) / (16.0*150.0), 0.0,1.0) * -10.0), 0.0, progressP.y-500.0); + + // just air + vec2 airCoef = exp2(-max(progressW.y-SEA_LEVEL,0.0)/vec2(8.0e3, 1.2e3)*vec2(6.0,7.0)) * 192.0 * Haze_amount * planetVolume; + + // Pbr for air, yolo mix between mie and rayleigh for water droplets + vec3 rL = rC*airCoef.x; + vec3 m = mC*(airCoef.y+min(Haze_amount*1.25,1.0)); + vec3 airDensity = rL + m; + + // calculate the atmosphere haze seperately and purely additive to color, do not contribute to absorbtion. + vec3 atmosphereVolumeCoeff = exp(-airDensity*dd*dL); + // vec3 Atmosphere = LightSourcePhased * sh * (rayL*rL + sunPhase*m) + AveragedAmbientColor * (rL+m); + vec3 Atmosphere = (LightSourcePhased * sh * (rayL*rL + sunPhase*m) + AveragedAmbientColor * airDensity * (lightLevelZero*0.99 + 0.01)) * inACave; + color += (Atmosphere - Atmosphere * atmosphereVolumeCoeff) / (airDensity+1e-6) * atmosphereAbsorbance; + + + atmosphereAbsorbance *= atmosphereVolumeCoeff; + + // totalAbsorbance *= dot(atmosphereVolumeCoeff,vec3(0.33333)); + } + + // sceneColor = finalsceneColor; + + // atmosphereAlpha = atmosphereAbsorbance; + + return vec4(color, totalAbsorbance); + } + + vec4 WSRwaterVolumetrics(vec3 origin, vec3 endPos, vec2 dither, vec3 ambient, vec3 lightSource, vec3 LPV){ + if(length(origin-endPos) < 0.001) return vec4(0.0,0.0,0.0,1.0); + const int SAMPLECOUNT = 3; + float lightSourceCheck = float(sunElevation > 1e-5)*2.0 - 1.0; + + vec3 waterCoefs = vec3(Water_Absorb_R, Water_Absorb_G, Water_Absorb_B); + vec3 scatterCoef = Dirt_Amount * vec3(Dirt_Scatter_R, Dirt_Scatter_G, Dirt_Scatter_B) / 3.14; + + //project pixel position into projected shadowmap space + vec3 dVWorld = endPos-origin - gbufferModelViewInverse[3].xyz; + + float rayLength = length(dVWorld); + + float maxLength = min(rayLength, far)/rayLength; + + dVWorld *= maxLength; + + vec3 absorbance = vec3(1.0); + vec3 vL = vec3(0.0); + + #ifdef OVERWORLD_SHADER + vec3 rayDir = normalize(endPos-origin); + float VdotL = dot(WsunVec, rayDir); + float phase = fogPhase(VdotL) * 5.0; + #else + const float phase = 0.0; + #endif + + float thing = -normalize(dVWorld).y; + thing = clamp(thing + 0.333,0.0,1.0); + thing = pow(1.0-pow(1.0-thing,2.0),2.0); + thing *= 15.0; + + const float expFactor = 11.0; + for (int i=0;i pos.z && sh.x < 1.0){ + vec4 translucentShadow = texture(shadowcolor0, pos.xy); + if(translucentShadow.a < 0.9) sh = normalize(translucentShadow.rgb+0.0001); + } + #else + sh = vec3(texture(shadow, pos).x); + #endif + } + + sh *= GetCloudShadow(progressW, WsunVec * lightSourceCheck); + + #endif + + float bubble = exp2(-10.0 * clamp(1.0 - length(d*dVWorld) / 16.0, 0.0,1.0)); + float caustics = max(max(waterCaustics(progressW, WsunVec, -(progressW.y - waterEnteredAltitude)), phase*0.5) * mix(0.5, 1.5, bubble), phase); + + vec3 sunAbsorbance = exp(-waterCoefs * (distanceFromWaterSurface/abs(WsunVec.y))); + vec3 WaterAbsorbance = exp(-waterCoefs * (distanceFromWaterSurface + thing)); + + vec3 Directlight = lightSource * sh * phase * caustics * sunAbsorbance; + + vec3 _ambient = ambient; + + // #ifdef BIOME_TINT_WATER + // _ambient *= sqrt(fogColor); + // Directlight *= pow(fogColor, vec3(0.01,0.01,3.75)); + // #endif + + #ifdef OVERWORLD_SHADER + float horizontalDist = length((progressP.xz) - lightningBoltPosition.xz); + if (horizontalDist < 250.0 && lightningBoltPosition.w > 0.0) { + float lightningIntensity = exp(-horizontalDist * 0.02) * lightningFlash; + _ambient = mix(_ambient, vec3(1.3,1.5,3.0) * sh, lightningIntensity); + } + #endif + + vec3 Indirectlight = _ambient * WaterAbsorbance; + + #if defined LPV_VL_FOG_ILLUMINATION && defined IS_LPV_ENABLED && defined LPV_VL_FOG_ILLUMINATION_HANDHELD_WATER + float lightRange = 0.0; + vec3 handLightCol = GetHandLight(heldItemId, progressP, lightRange); + + vec3 handLightCol2 = GetHandLight(heldItemId2, progressP, lightRange); + + Indirectlight += (handLightCol + handLightCol2) * TORCH_AMOUNT * (LPV_VL_FOG_ILLUMINATION_BRIGHTNESS / 100.0) * 0.2 * exp(-waterCoefs * (length(progressP) + 0.05 * thing)); + #endif + + + vec3 light = (Indirectlight + Directlight + LPV) * scatterCoef; + + vec3 volumeCoeff = exp(-waterCoefs * length(dd*dVWorld)); + vL += (light - light * volumeCoeff) / waterCoefs * absorbance; + absorbance *= volumeCoeff; + + } + + return vec4(vL, dot(absorbance,vec3(0.333333))); + } + #endif + float getPhotonicsEmission(vec3 Albedo) { + vec3 hsv = RgbToHsv(Albedo); + float emissive = smoothstep(0.05, 0.15, hsv.y) * pow(hsv.z, 3.5); + return emissive * 0.5; + } + + void photonicsEmission( + inout vec3 Lighting, + vec3 Albedo, + float Emission + ){ + if( Emission < 254.5/255.0) Lighting = mix(Lighting, Albedo * 5.0 * Emissive_Brightness, pow(Emission, Emissive_Curve)); + } + + void photonicsReflectionShading(inout vec4 color, const in vec3 normal, const in vec3 worldPos, const in float noise, in vec3 DirectLightColor, const in vec3 AmbientLightColor, const in int blockID, const in float skylightmap) { + + float SkylightDir = normal.y; + SkylightDir = SkylightDir*0.5+0.5; + + vec2 lightmap = vec2(0.0, skylightmap); + if(abs(blockID-197) <= 1 || blockID == 242) lightmap.x = 1.0; + + float skylight = mix(0.08 + 0.92*(1.0-lightmap.y), 1.0, SkylightDir); + vec3 Indirect_lighting = doIndirectLighting(AmbientLightColor * skylight, vec3(1.0), lightmap.y); + vec3 playerPosition = worldPos-cameraPosition; + Indirect_lighting += doBlockLightLightingVoxel(vec3(TORCH_R,TORCH_G,TORCH_B), lightmap.x, playerPosition, GetLpvPosition(playerPosition)); + + float shadowMapFalloff = smoothstep(0.0, 1.0, min(max(1.0 - length(playerPosition) / (shadowDistance+16),0.0)*5.0,1.0)); + + float sh = 1.0; + #if defined OVERWORLD_SHADER || defined END_ISLAND_LIGHT && defined END_SHADER + sh = ComputePhotonicsShadowMap(DirectLightColor, playerPosition, shadowMapFalloff, noise, normal); + + float lightLeakFix = clamp(pow(eyeBrightnessSmooth.y/240. + lightmap.y, 2.0), 0.0, 1.0); + sh *= lightLeakFix; + #endif + + #ifdef OVERWORLD_SHADER + sh *= GetCloudShadow(worldPos, WsunVec); + + + float NdotL = clamp((-15.0 + dot(normal, WsunVec)*255.0) / 240.0, 0.0, 1.0); + if(blockID == BLOCK_SSS_STRONG || blockID == BLOCK_SSS_STRONG3 || blockID == BLOCK_AIR_WAVING || blockID == BLOCK_SSS_STRONG_2 || + blockID == BLOCK_GROUND_WAVING || blockID == BLOCK_GROUND_WAVING_VERTICAL || + blockID == BLOCK_GRASS_SHORT || blockID == BLOCK_GRASS_TALL_UPPER || blockID == BLOCK_GRASS_TALL_LOWER || + blockID == BLOCK_SSS_WEAK || blockID == BLOCK_CACTUS || blockID == BLOCK_SSS_WEAK_2 || + blockID == BLOCK_CELESTIUM || (blockID >= 269 && blockID <= 274) || blockID == BLOCK_SNOW_LAYERS || blockID == BLOCK_CARPET || + blockID == BLOCK_AMETHYST_BUD_MEDIUM || blockID == BLOCK_AMETHYST_BUD_LARGE || blockID == BLOCK_AMETHYST_CLUSTER || + blockID == BLOCK_BAMBOO || blockID == BLOCK_SAPLING || blockID == BLOCK_VINE || blockID == BLOCK_VINE_OTHER) + { + NdotL = mix(NdotL, 1.0, 0.25); + } + #else + float NdotL = 1.0; + #endif + vec3 albedo = color.rgb; + color.rgb *= Indirect_lighting + DirectLightColor * sh * NdotL; + + float EMISSIVE = 0.0; + // normal block lightsources + if(blockID >= 100 && blockID < 282) { + EMISSIVE = 0.5; + if(blockID == 266 || (blockID >= 276 && blockID <= 281)) EMISSIVE = 0.2; // sculk stuff + else if(blockID == 195) EMISSIVE = 2.3; // glow lichen + else if(blockID == 185) EMISSIVE = 1.5; // crying obsidian + else if(blockID == 105) EMISSIVE = 2.0; // brewing stand + + else if(blockID == 236) EMISSIVE = 1.0; // respawn anchor + else if(blockID == 101) EMISSIVE = 0.7; // large amethyst bud + else if(blockID == 103) EMISSIVE = 1.0; // amethyst cluster + else if(blockID == 244) EMISSIVE = 1.5; // soul fire + EMISSIVE *= getPhotonicsEmission(albedo); + EMISSIVE = clamp(EMISSIVE, 0.0, 1.0); + photonicsEmission(color.rgb, albedo, EMISSIVE); + } + + #if EMISSIVE_ORES > 0 + if(blockID == 502) { + EMISSIVE = EMISSIVE_ORES_STRENGTH; + EMISSIVE *= getPhotonicsEmission(albedo); + EMISSIVE = clamp(EMISSIVE, 0.0, 1.0); + photonicsEmission(color.rgb, albedo, EMISSIVE); + } + #endif + + } +#endif + +vec4 photonicsReflection( + vec3 reflectedVector, + vec3 origin, + vec2 noise, + vec3 flatNormal, + inout float backgroundReflectMask, + inout vec3 backgroundTint +) { + vec4 color = vec4(0.0); + + #if defined PHOTONICS_INCLUDED && defined PHOTONICS && defined VOXEL_REFLECTIONS + RayJob ray = RayJob( + cameraPosition + origin - world_offset + 0.005f * flatNormal, + reflectedVector, + vec3(0), vec3(0), vec3(0), false + ); + + translucentHit[10] translucentHitRays; + uint translucentHits; + int blockID = 0; + + translucentHitRays[0].hitColor = vec4(0.0); + + float skylightmap = 0.0; + + trace_wsr(ray, true, translucentHitRays, translucentHits, blockID, skylightmap); + + bool hitTranslucent = translucentHits > 0u; + if(!hitTranslucent && !ray.result_hit) return color; + + vec3 DirectLightColor = lightSourceColorSSBO / 1400.0; + vec3 AmbientLightColor = averageSkyCol_CloudsSSBO; + vec3 indirectLightColor = skyGroundColSSBO / 1200.0; + + vec3 indirectLight = AmbientLightColor * skyLightLevelSmooth * ambient_brightness / 1200.0; + float minimumLightAmount = 0.02*nightVision + 0.001 * mix(MIN_LIGHT_AMOUNT_INSIDE, MIN_LIGHT_AMOUNT, clamp(skyLightLevelSmooth, 0.0, 1.0)); + indirectLight += vec3(1.0) * minimumLightAmount; + + vec3 indirectLight_fog = indirectLightColor * ambient_brightness; + indirectLight_fog += vec3(1.0) * (0.02*nightVision + 0.001 * mix(MIN_LIGHT_AMOUNT_INSIDE, MIN_LIGHT_AMOUNT, skyLightLevelSmooth)); + + #ifdef USE_CUSTOM_DIFFUSE_LIGHTING_COLORS + DirectLightColor = luma(DirectLightColor) * vec3(DIRECTLIGHT_DIFFUSE_R,DIRECTLIGHT_DIFFUSE_G,DIRECTLIGHT_DIFFUSE_B); + AmbientLightColor = luma(AmbientLightColor) * vec3(INDIRECTLIGHT_DIFFUSE_R,INDIRECTLIGHT_DIFFUSE_G,INDIRECTLIGHT_DIFFUSE_B); + #endif + + AmbientLightColor *= ambient_brightness / 900.0; + + vec3 endPosW = ray.result_position + world_offset; + vec3 endPos = endPosW - cameraPosition; + + for (uint i = 0; i < translucentHits; i++) { + vec4 sampleColor = translucentHitRays[i].hitColor; + // return vec4(sampleColor.rgb, 1.0); + + sampleColor.rgb = toLinear(sampleColor.rgb); + + photonicsReflectionShading(sampleColor, translucentHitRays[i].hitNormal, translucentHitRays[i].hitPos + world_offset, noise.y, DirectLightColor, AmbientLightColor, translucentHitRays[i].hitID, translucentHitRays[i].skylight); + + sampleColor.a *= (1.0 - color.a); + color.rgb += sampleColor.rgb * sampleColor.a; + color.a += sampleColor.a; + + if(color.a > 0.995) return color; + } + + backgroundTint = mix(normalize(translucentHitRays[0].hitColor.rgb+1e-7), vec3(1.0), min(max(0.1-translucentHitRays[0].hitColor.a,0.0) * 10.0,1.0)); + + if (ray.result_hit) { + vec4 sampleColor = vec4(toLinear(ray.result_color), 1.0); + + photonicsReflectionShading(sampleColor, ray.result_normal, endPosW, noise.y, DirectLightColor, AmbientLightColor, blockID, skylightmap); + + #if defined VOXEL_REFLECTIONS_FOG && defined OVERWORLD_SHADER + if(hitTranslucent && isEyeInWater != 1) { + vec4 fog = raymarchWSRfog(translucentHitRays[0].hitPos + world_offset - cameraPosition, endPos, noise, DirectLightColor, indirectLight_fog, indirectLight, 3); + + sampleColor.rgb = sampleColor.rgb * fog.a; + sampleColor.rgb += fog.rgb; + } + #endif + + sampleColor.rgb *= backgroundTint; + + sampleColor.a *= (1.0 - color.a); + color.rgb += sampleColor.rgb * sampleColor.a; + color.a += sampleColor.a; + } else { + backgroundReflectMask = 1.0-color.a; + } + + #if defined VOXEL_REFLECTIONS_FOG && defined OVERWORLD_SHADER + if(hitTranslucent && isEyeInWater != 1) endPos = translucentHitRays[0].hitPos + world_offset - cameraPosition; + + #ifdef VOXEL_REFLECTIONS_LPV_FOG + vec4 LPVfog = raymarchWSR_LPV(origin, endPos, noise.x); + #endif + + vec4 fog; + if(isEyeInWater == 1) { + fog = WSRwaterVolumetrics(origin, endPos, noise, DirectLightColor, indirectLight, LPVfog.rgb); + } else { + fog = raymarchWSRfog(origin, endPos, noise, DirectLightColor, indirectLight_fog, indirectLight, 4); + } + + #ifdef VOXEL_REFLECTIONS_LPV_FOG + fog.a *= LPVfog.a; + fog.rgb = fog.rgb * LPVfog.a + LPVfog.rgb; + #endif + + color.rgb = color.rgb * fog.a; + color.rgb += fog.rgb; + #endif + #endif + + return color; +} + +vec4 getEnvironmentReflections( + vec3 reflectedVector, + vec3 flatNormal, + vec3 normal, + vec3 origin, + vec3 viewPos, + vec2 noise, bool isHand, float roughness, - inout float backgroundReflectMask + inout float backgroundReflectMask, + inout vec3 backgroundTint + #ifdef FORWARD_SPECULAR + ,bool isWater + #endif ){ vec4 reflection = vec4(0.0); @@ -280,12 +2150,22 @@ vec4 screenSpaceReflections( #ifdef DEFERRED_SPECULAR quality = float(DEFERRED_SSR_QUALITY); #endif - + vec3 raytracePos = vec3(0.0); bool depthCheck = false; - - vec3 raytracePos = rayTraceSpeculars(reflectedVector, viewPos, noise, quality, isHand, reflectionLength, depthCheck); + // if (raytracePos.z > 1.001 || distance(gl_FragCoord.xy*texelSize, raytracePos.xy) < 0.002) return reflection; - if (raytracePos.z > 1.00001) return reflection; + + #if defined VOXEL_REFLECTIONS && defined PHOTONICS && defined PHOTONICS_INCLUDED + // raytracePos = rayTraceSpeculars(mat3(gbufferModelView) * reflectedVector, viewPos, noise, quality, isHand, reflectionLength, depthCheck); + //if(raytracePos.z > 1.0) + { + if(dot(reflectedVector, flatNormal) < 0.0) return reflection; + return photonicsReflection(reflectedVector, origin, noise, flatNormal, backgroundReflectMask, backgroundTint); + } + #else + raytracePos = rayTraceSpeculars(mat3(gbufferModelView) * reflectedVector, viewPos, noise.y, quality, isHand, reflectionLength, depthCheck); + if (raytracePos.z > 1.00001) return reflection; + #endif // use higher LOD as the reflection goes on, to blur it. this helps denoise a little. @@ -382,7 +2262,7 @@ float getReflectionVisibility(float f0, float roughness){ // derived from N and K from labPBR wiki https://shaderlabs.org/wiki/LabPBR_Material_Standard // using ((1.0 - N)^2 + K^2) / ((1.0 + N)^2 + K^2) -vec3 HCM_F0 [8] = vec3[]( +const vec3 HCM_F0 [8] = vec3[]( vec3(0.531228825312, 0.51235724246, 0.495828545714),// iron vec3(0.944229966045, 0.77610211732, 0.373402004593),// gold vec3(0.912298031535, 0.91385063144, 0.919680580954),// Aluminum @@ -396,10 +2276,12 @@ vec3 HCM_F0 [8] = vec3[]( vec3 specularReflections( in vec3 viewPos, // toScreenspace(vec3(screenUV, depth) - in vec3 playerPos, // normalized - in vec3 lightPos, // should be in world space - in vec3 noise, // x = bluenoise y = interleaved gradient noise + in vec3 playerPos, + in vec3 NplayerPos, // normalized + in vec3 lightVec, // light direction in world space + in vec2 noise, // x = bluenoise y = interleaved gradient noise + in vec3 flatNormal, in vec3 normal, // normals in world space in float roughness, // red channel of specular texture _S in float f0, // green channel of specular texture _S @@ -435,15 +2317,15 @@ vec3 specularReflections( // get reflected vector mat3 basis = CoordBase(normal); - vec3 viewDir = -playerPos*basis; + vec3 viewDir = -NplayerPos*basis; #if defined FORWARD_ROUGH_REFLECTION || defined DEFERRED_ROUGH_REFLECTION vec3 samplePoints = SampleVNDFGGX(viewDir, roughness, noise.xy); vec3 reflectedVector_L = basis * reflect(-normalize(viewDir), samplePoints); - reflectedVector_L = isHand ? reflect(playerPos, normal) : reflectedVector_L; + reflectedVector_L = isHand ? reflect(NplayerPos, normal) : reflectedVector_L; #else - vec3 reflectedVector_L = reflect(playerPos, normal); + vec3 reflectedVector_L = reflect(NplayerPos, normal); #endif float VdotN = dot(-normalize(viewDir), vec3(0.0,0.0,1.0)); @@ -476,7 +2358,7 @@ vec3 specularReflections( vec3 specularReflections = diffuseLighting; float reflectionVisibilty = getReflectionVisibility(f0, roughness); - + vec4 enviornmentReflection = vec4(0.0); float backgroundReflectMask = lightmap; @@ -497,7 +2379,15 @@ vec3 specularReflections( #endif #if DEFERRED_SSR_QUALITY > 0 || FORWARD_SSR_QUALITY > 0 - enviornmentReflection = screenSpaceReflections(mat3(gbufferModelView) * reflectedVector_L, viewPos, noise.z, isHand, roughness, backgroundReflectMask); + vec3 backgroundTint = vec3(1.0); + enviornmentReflection = getEnvironmentReflections(reflectedVector_L, flatNormal, normal, playerPos, viewPos, noise, isHand, roughness, backgroundReflectMask, backgroundTint + #ifdef FORWARD_SPECULAR + ,isWater + #endif + ); + #ifdef VOXEL_REFLECTIONS + backgroundReflection *= backgroundTint; + #endif // darkening for metals. vec3 DarkenedDiffuseLighting = isMetal ? diffuseLighting * (1.0-enviornmentReflection.a) * (1.0-lightmap) : diffuseLighting; #else @@ -522,7 +2412,7 @@ vec3 specularReflections( #endif #if defined OVERWORLD_SHADER && SUN_SPECULAR_MULT > 0 - vec3 lightSourceReflection = backgroundReflectMask*SUN_SPECULAR_MULT * lightColor * GGX(normal, -playerPos, lightPos, roughness, reflectance, metalAlbedoTint); + vec3 lightSourceReflection = backgroundReflectMask*SUN_SPECULAR_MULT * lightColor * GGX(normal, -NplayerPos, lightVec, roughness, reflectance, metalAlbedoTint); #if DEFERRED_SSR_QUALITY > 0 || FORWARD_SSR_QUALITY > 0 specularReflections += mix(lightSourceReflection, vec3(0.0), enviornmentReflection.a); #else diff --git a/shaders/lib/voxel_common.glsl b/shaders/lib/voxel_common.glsl index 31ef7fd..184d92f 100644 --- a/shaders/lib/voxel_common.glsl +++ b/shaders/lib/voxel_common.glsl @@ -1,7 +1,17 @@ #ifdef RENDER_SHADOW layout(r16ui) uniform uimage3D imgVoxelMask; + // layout(r8ui) uniform uimage3D imgQuarterVoxelMask; +// + // layout(std430, binding = 5) buffer voxelSSBO { + // vec4[6] voxelData[]; + // }; #else layout(r16ui) uniform readonly uimage3D imgVoxelMask; + // layout(r8ui) uniform readonly uimage3D imgQuarterVoxelMask; +// + // layout(std430, binding = 5) readonly buffer voxelSSBO { + // vec4[6] voxelData[]; + // }; #endif #if defined IS_LPV_ENABLED || defined SHADER_GRASS @@ -11,4 +21,5 @@ const uint VoxelSize = uint(5); const uvec3 VoxelSize3 = uvec3(VoxelSize); #endif + #define BLOCK_EMPTY 0 diff --git a/shaders/lib/voxel_write.glsl b/shaders/lib/voxel_write.glsl index 2245415..02705cc 100644 --- a/shaders/lib/voxel_write.glsl +++ b/shaders/lib/voxel_write.glsl @@ -7,12 +7,85 @@ ivec3 GetVoxelIndex(const in vec3 playerPos) { return ivec3(floor(playerPos + cameraOffset) + VoxelSize3/2u); } +// ivec3 GetVoxelIndex2(const in vec3 playerPos) { +// #if !defined IS_LPV_ENABLED && !defined SHADER_GRASS +// vec3 cameraOffset = fract(cameraPositionFract-relativeEyePosition); +// #else +// vec3 cameraOffset = fract(cameraPositionFract); +// #endif +// return ivec3(floor(playerPos + cameraOffset) + VoxelSize3/8u); +// } + void SetVoxelBlock(const in ivec3 voxelPos, const in uint blockId) { if (clamp(voxelPos, ivec3(0), ivec3(VoxelSize-1u)) != voxelPos) return; + + // imageStore(imgQuarterVoxelMask, voxelPos / 4, uvec4(1u)); imageStore(imgVoxelMask, voxelPos, uvec4(blockId)); } +// #ifdef SAVE_VOXEL_STUFF +// int voxelIndex(ivec3 voxelPos) { +// return voxelPos.x + voxelPos.y * int(VoxelSize) + voxelPos.z * int(VoxelSize*VoxelSize); +// } +// +// int voxelNormalIndex(vec3 voxelNormal) { +// return clamp(int(abs(voxelNormal.x)*(voxelNormal.x*0.5+0.5) + abs(voxelNormal.y)*(voxelNormal.y*0.5+2.5) + abs(voxelNormal.z)*(voxelNormal.z*0.5+4.5) + 0.5), 0, 5); +// } +// +// float encodeVec2_16(vec2 a){ +// const vec2 constant1 = vec2( 1., 65536.) / 4294967295.; +// vec2 temp = floor( a * 65535. ); +// return temp.x*constant1.x+temp.y*constant1.y; +// } +// +// float encodeVec2_16(float a, float b){ +// return encodeVec2_16(vec2(a,b)); +// } +// +// vec2 decodeVec2_16(float a){ +// const vec2 constant1 = 4294967294. / vec2( 65536., 4294967295.); +// const float constant2 = 65536. / 65535.; +// return fract( a * constant1 ) * constant2 ; +// } +// +// void SaveVoxelData(const in ivec3 voxelPos, in vec2 midTex, in vec2 lightcoord, const in uint voxelId, in vec3 originPos) { +// if (clamp(voxelPos, ivec3(0), ivec3(VoxelSize-1u)) != voxelPos) return; +// +// if(voxelId > 0u) { +// vec3 worldNormal = viewToWorld(normalize(gl_NormalMatrix * gl_Normal)); +// float fractYpos = fract(originPos.y+cameraPosition.y); +// float xzLength = length(fract(originPos.xz+cameraPosition.xz) - vec2(0.5)); +// +// if(voxelId == BLOCK_HOPPER && (dot(at_midBlock.xz, worldNormal.xz) < 0.0 || abs(worldNormal.y) > 0.001) +// || voxelId == BLOCK_END_PORTAL_FRAME && xzLength < 0.4 +// || voxelId == BLOCK_GRASS && alphaTestRef >= 0.1 +// || voxelId >= 22 && voxelId < 38 && fractYpos < 0.99 && fractYpos > 0.01 +// || (voxelId == BLOCK_LANTERN || voxelId == BLOCK_SOUL_LANTERN || voxelId == BLOCK_COPPER_LANTERN) && xzLength < 0.185 +// || voxelId == 419 && (xzLength > 0.501 || abs(worldNormal.x) < 0.99) +// ) return; +// +// float encodedRB = encodeVec2(gl_Color.rb); +// vec2 _color = vec2(encodedRB, gl_Color.g); +// +// midTex.r = encodeVec2_16(midTex); +// midTex.g = encodeVec2(lightcoord); +// +// if(voxelId == 419 || voxelId == BLOCK_HOPPER || voxelId == 178 || voxelId >= 11 && voxelId <= 21 || voxelId == BLOCK_LPV_MIN || voxelId == BLOCK_GROUND_WAVING || voxelId > 300 && voxelId < 335 || voxelId >= BLOCK_SSS_STRONG3 && voxelId <= 87 || (voxelId >= 22 && voxelId < 38 && abs(worldNormal.y) < 0.01)) { +// voxelData[voxelIndex(voxelPos)][0] = vec4(midTex, _color); +// voxelData[voxelIndex(voxelPos)][1] = vec4(midTex, _color); +// voxelData[voxelIndex(voxelPos)][2] = vec4(midTex, _color); +// voxelData[voxelIndex(voxelPos)][3] = vec4(midTex, _color); +// voxelData[voxelIndex(voxelPos)][4] = vec4(midTex, _color); +// voxelData[voxelIndex(voxelPos)][5] = vec4(midTex, _color); +// } +// else +// voxelData[voxelIndex(voxelPos)][voxelNormalIndex(worldNormal)] = vec4(midTex, _color); +// +// } +// } +// #endif + void PopulateShadowVoxel(const in vec3 playerPos) { uint voxelId = 0u; vec3 originPos = playerPos; @@ -41,6 +114,10 @@ void PopulateShadowVoxel(const in vec3 playerPos) { if (voxelId == 0u) voxelId = 1u; originPos += at_midBlock.xyz/64.0; + + // #ifdef SAVE_VOXEL_STUFF + // SaveVoxelData(GetVoxelIndex(originPos), mc_midTexCoord.xy, gl_MultiTexCoord1.xy / 240.0, voxelId, playerPos); + // #endif } #if !defined IS_LPV_ENABLED && !defined SHADER_GRASS @@ -57,7 +134,7 @@ void PopulateShadowVoxel(const in vec3 playerPos) { if (blockEntityId > 0 && blockEntityId < 500 && blockEntityId != BLOCK_ENCHANTING_TABLE) voxelId = uint(blockEntityId); } - else if (currentRenderedItemId > 100 && currentRenderedItemId < 300) { + else if (currentRenderedItemId > 100 && currentRenderedItemId < 276) { #if MC_VERSION > 12100 && ((MC_VERSION != 12109 && MC_VERSION != 12110) || IRIS_VERSION >= 10907) if (entityId != ENTITY_ITEM_FRAME && entityId != ENTITY_CURRENT_PLAYER) #else diff --git a/shaders/ph_lights.json b/shaders/ph_lights.json new file mode 100644 index 0000000..2a93e0d --- /dev/null +++ b/shaders/ph_lights.json @@ -0,0 +1,378 @@ +{ + "defines": { + "colors": { + "generic": "#646464" + }, + "intensities": { + "default": 1 + }, + "radii": { + "default": 1 + }, + "falloffs": { + "default": 1 + } + }, + "lights": { + "lantern": { + "intensity": 40, + "radius": 6.5, + "falloff": 0.6, + "color": "rgb(1.0,0.5,0.25)", + "is_traced": true, + "blocks": [ + "*198" + ] + }, + "soul_lantern" : { + "intensity": 30, + "radius": 4.25, + "falloff": 0.4, + "color": "rgb(0.1, 0.6, 1.0)", + "is_traced": true, + "blocks": [ + "*245" + ] + }, + "copper_lantern" : { + "intensity": 30, + "radius": 4.25, + "falloff": 0.4, + "color": "rgb(0.1, 0.8, 0.3)", + "is_traced": true, + "blocks": [ + "*269" + ] + }, + "sea_lantern" : { + "intensity": 45, + "radius": 4.5, + "falloff": 0.4, + "color": "rgb(0.553, 0.748, 0.859)", + "is_traced": true, + "blocks": [ + "*242" + ] + }, + "glowstone" : { + "intensity": 45, + "radius": 4.5, + "falloff": 0.4, + "color": "rgb(0.747, 0.594, 0.326)", + "is_traced": true, + "blocks": [ + "*196" + ] + }, + "torch" : { + "intensity": 35, + "radius": 4.25, + "falloff": 0.4, + "color": "rgb(1.0,0.5,0.25)", + "is_traced": true, + "blocks": [ + "*247" + ] + }, + "soul_torch" : { + "intensity": 25, + "radius": 4.25, + "falloff": 0.4, + "color": "rgb(0.1, 0.6, 1.0)", + "is_traced": true, + "blocks": [ + "*246" + ] + }, + "copper_torch" : { + "intensity": 25, + "radius": 4.25, + "falloff": 0.4, + "color": "rgb(0.1, 0.8, 0.3)", + "is_traced": true, + "blocks": [ + "*268" + ] + }, + "redstone_torch" : { + "intensity": 25, + "radius": 4.25, + "falloff": 0.4, + "color": "rgb(0.939, 0.305, 0.164)", + "is_traced": true, + "blocks": [ + "*219" + ] + }, + "crying_obsidian" : { + "intensity": 20, + "radius": 3.0, + "falloff": 0.4, + "color": "rgb(0.390, 0.065, 0.646)", + "is_traced": true, + "blocks": [ + "*185" + ] + }, + "froglight_ochre" : { + "intensity": 35, + "radius": 4.0, + "falloff": 0.4, + "color": "rgb(0.768, 0.648, 0.108)", + "is_traced": true, + "blocks": [ + "*191" + ] + }, + "froglight_pearlescent" : { + "intensity": 35, + "radius": 4.0, + "falloff": 0.4, + "color": "rgb(0.737, 0.435, 0.658)", + "is_traced": true, + "blocks": [ + "*192" + ] + }, + "froglight_verdant" : { + "intensity": 35, + "radius": 4.0, + "falloff": 0.4, + "color": "rgb(0.463, 0.763, 0.409)", + "is_traced": true, + "blocks": [ + "*193" + ] + }, + "glow_lichen" : { + "intensity": 50, + "radius": 1.5, + "falloff": 0.45, + "color": "rgb(0.1, 0.2, 0.12)", + "is_traced": true, + "blocks": [ + "*270" + ] + }, + "end_rod" : { + "intensity": 50, + "radius": 5.5, + "falloff": 0.5, + "color": "rgb(0.957, 0.929, 0.875)", + "is_traced": true, + "blocks": [ + "*188" + ] + }, + "shroomlight" : { + "intensity": 45, + "radius": 4.5, + "falloff": 0.5, + "color": "rgb(0.848, 0.469, 0.205)", + "is_traced": true, + "blocks": [ + "*243" + ] + }, + "fire" : { + "intensity": 30, + "radius": 3.5, + "falloff": 0.5, + "color": "rgb(0.864, 0.598, 0.348)", + "is_traced": true, + "blocks": [ + "*189" + ] + }, + "soul_fire" : { + "intensity": 25, + "radius": 3.5, + "falloff": 0.5, + "color": "rgb(0.1, 0.6, 1.0)", + "is_traced": true, + "blocks": [ + "*244" + ] + }, + "enchanting_table" : { + "intensity": 25, + "radius": 1.5, + "falloff": 0.5, + "color": "rgb(0.416, 0.509, 0.979)", + "is_traced": true, + "blocks": [ + "*267" + ] + }, + "beacon" : { + "intensity": 45, + "radius": 4.5, + "falloff": 0.5, + "color": "rgb(1, 1, 1)", + "is_traced": true, + "blocks": [ + "*104" + ] + }, + "redstone_lamp" : { + "intensity": 45, + "radius": 4.0, + "falloff": 0.4, + "color": "rgb(0.953, 0.796, 0.496)", + "is_traced": true, + "blocks": [ + "*217" + ] + }, + "magma_block" : { + "intensity": 15, + "radius": 2.0, + "falloff": 0.5, + "color": "rgb(0.747, 0.323, 0.110)", + "is_traced": true, + "blocks": [ + "*215" + ] + }, + "brewing_stand" : { + "intensity": 18, + "radius": 1.0, + "falloff": 0.5, + "color": "rgb(0.636, 0.509, 0.179)", + "is_traced": true, + "blocks": [ + "*105" + ] + }, + "candles_lit_1" : { + "intensity": 20, + "radius": 1.0, + "falloff": 0.5, + "color": "rgb(1.0, 0.4, 0.1)", + "is_traced": true, + "blocks": [ + "*174" + ] + }, + "candles_lit_2" : { + "intensity": 20, + "radius": 2.0, + "falloff": 0.5, + "color": "rgb(1.0, 0.4, 0.1)", + "is_traced": true, + "blocks": [ + "*175" + ] + }, + "candles_lit_3" : { + "intensity": 20, + "radius": 3.0, + "falloff": 0.5, + "color": "rgb(1.0, 0.4, 0.1)", + "is_traced": true, + "blocks": [ + "*176" + ] + }, + "candles_lit_4" : { + "intensity": 20, + "radius": 4.0, + "falloff": 0.5, + "color": "rgb(1.0, 0.4, 0.1)", + "is_traced": true, + "blocks": [ + "*177" + ] + }, + "lava" : { + "intensity": 40, + "radius": 10.0, + "falloff": 0.25, + "color": "rgb(0.959, 0.302, 0.106)", + "is_traced": true, + "blocks": [ + "*199" + ] + }, + "nether_portal" : { + "intensity": 15, + "radius": 4.6, + "falloff": 0.3, + "color": "rgb(0.502, 0.165, 0.831)", + "is_traced": true, + "blocks": [ + "*337" + ] + }, + "copper_bulb" : { + "intensity": 25, + "radius": 15.0, + "falloff": 0.45, + "color": "rgb(1.0, 0.7, 0.6)", + "is_traced": true, + "blocks": [ + "*180" + ] + }, + "exposed_copper_bulb" : { + "intensity": 25, + "radius": 12.0, + "falloff": 0.45, + "color": "rgb(1.0, 0.7, 0.6)", + "is_traced": true, + "blocks": [ + "*181" + ] + }, + "oxidized_copper_bulb" : { + "intensity": 25, + "radius": 4.0, + "falloff": 0.45, + "color": "rgb(1.0, 0.7, 0.6)", + "is_traced": true, + "blocks": [ + "*182" + ] + }, + "weathered_copper_bulb" : { + "intensity": 25, + "radius": 8.0, + "falloff": 0.45, + "color": "rgb(1.0, 0.7, 0.6)", + "is_traced": true, + "blocks": [ + "*183" + ] + }, + "cave_berries" : { + "intensity": 15, + "radius": 4.0, + "falloff": 0.35, + "color": "rgb(1.0, 1.0, 0.1)", + "is_traced": true, + "blocks": [ + "*178" + ] + }, + "jack_o_lantern" : { + "intensity": 25, + "radius": 10.0, + "falloff": 0.55, + "color": "rgb(0.864, 0.598, 0.348)", + "is_traced": true, + "blocks": [ + "*197" + ] + }, + "powered_rail" : { + "intensity": 20, + "radius": 5.0, + "falloff": 0.55, + "color": "rgb(0.939, 0.305, 0.164)", + "is_traced": true, + "blocks": [ + "*216" + ] + } + } +} \ No newline at end of file diff --git a/shaders/photonics/photonics.glsl b/shaders/photonics/photonics.glsl new file mode 100644 index 0000000..e69de29 diff --git a/shaders/photonics/shader_interface.glsl b/shaders/photonics/shader_interface.glsl new file mode 100644 index 0000000..34a1cd8 --- /dev/null +++ b/shaders/photonics/shader_interface.glsl @@ -0,0 +1,119 @@ +#include "/lib/settings.glsl" +#include "/lib/SSBOs.glsl" + +uniform sampler2D colortex1;// albedo, detailed_normal +uniform sampler2D colortex8;// flat_normal + +uniform vec3 sunPosition; +uniform float near; +uniform float far; +uniform float worldTime; + +uniform vec2 taa_offset; +uniform mat4 gbufferProjection; +uniform mat4 gbufferModelView; +uniform vec2 texelSize; +uniform float skyLightLevelSmooth; +uniform int framemod8; + +#include "/lib/res_params.glsl" + +#include "/lib/util.glsl" + +vec3 toScreenSpace(vec3 p) { + vec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw); + vec3 p3 = p * 2. - 1.; + vec4 fragposition = iProjDiag * p3.xyzz + gbufferProjectionInverse[3]; + return fragposition.xyz / fragposition.w; +} + +#include "/lib/DistantHorizons_projections.glsl" + +#include "/lib/TAA_jitter.glsl" + +#ifdef TAA + vec2 TAA_Offset = offsets[framemod8]; +#else + vec2 TAA_Offset = vec2(0.0); +#endif + +vec3 toLinear(vec3 sRGB){ + return sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878); +} + + +#define load_tex_coord gl_FragCoord.xy * texelSize + +vec2 decodeVec2(float a){ + const vec2 constant1 = 65535. / vec2( 256., 65536.); + const float constant2 = 256. / 255.; + return fract( a * constant1 ) * constant2 ; +} + +vec3 decode (vec2 encn){ + vec3 n = vec3(0.0); + encn = encn * 2.0 - 1.0; + n.xy = abs(encn); + n.z = 1.0 - n.x - n.y; + n.xy = n.z <= 0.0 ? (1.0 - n.yx) * sign(encn) : encn; + return clamp(normalize(n.xyz),-1.0,1.0); +} + +#ifdef DISTANT_HORIZONS + uniform sampler2D dhDepthTex; + #define dhVoxyDepthTex dhDepthTex +#endif + +#ifdef VOXY + uniform sampler2D vxDepthTexTrans; + #define dhVoxyDepthTex vxDepthTexTrans +#endif + +vec3 load_world_position() { + float z = texelFetch(depthtex0, ivec2(gl_FragCoord.xy), 0).x; + + vec3 viewPos = toScreenSpace(vec3(load_tex_coord/RENDER_SCALE - TAA_Offset*texelSize*0.5, z)); + + vec3 feetPlayerPos = mat3(gbufferModelViewInverse) * viewPos + gbufferModelViewInverse[3].xyz; + return feetPlayerPos + cameraPosition; +} + +void load_fragment_variables(out vec3 albedo, out vec3 world_pos, out vec3 world_normal, out vec3 world_normal_mapped) { + vec4 data = texelFetch(colortex1, ivec2(gl_FragCoord.xy), 0); + + vec4 dataUnpacked0 = vec4(decodeVec2(data.x),decodeVec2(data.y)); // albedo, masks + vec4 dataUnpacked1 = vec4(decodeVec2(data.z),decodeVec2(data.w)); // normals, lightmaps + + albedo = toLinear(vec3(dataUnpacked0.xz,dataUnpacked1.x)); + + world_normal_mapped = decode(dataUnpacked0.yw); + + vec4 SpecularData = texelFetch(colortex8, ivec2(gl_FragCoord.xy), 0); + vec4 specdataUnpacked0 = vec4(decodeVec2(SpecularData.x),decodeVec2(SpecularData.y)); + vec4 specdataUnpacked1 = vec4(decodeVec2(SpecularData.z),decodeVec2(SpecularData.w)); + + world_normal = normalize(vec3(specdataUnpacked0.yw,specdataUnpacked1.y) * 2.0 - 1.0); + + world_pos = load_world_position() - 0.01f * world_normal; +} + +#ifdef SMOOTH_SUN_ROTATION + vec3 sun_direction = WsunVecSmooth; +#else + vec3 sun_direction = normalize(mat3(gbufferModelViewInverse) * sunPosition); +#endif + +vec3 AmbientLightColor = averageSkyCol_CloudsSSBO/1200.0; +vec3 indirect_light_color = AmbientLightColor * ambient_brightness; + +vec2 get_taa_jitter() { + #ifdef TAA + return vec2(offsets[framemod8]*0.5*texelSize); + #else + return vec2(0.0); + #endif +} + +bool is_in_world() { + return texelFetch(depthtex0, ivec2(gl_FragCoord.xy), 0).x <= 0.9999f; +} \ No newline at end of file diff --git a/shaders/photonics/write_indirect.glsl b/shaders/photonics/write_indirect.glsl new file mode 100644 index 0000000..8e0cd2b --- /dev/null +++ b/shaders/photonics/write_indirect.glsl @@ -0,0 +1,5 @@ +writeonly uniform image2D colorimg15; + +void write_indirect(vec3 color) { + imageStore(colorimg15, ivec2(gl_FragCoord.xy), vec4(color, 1f)); +} \ No newline at end of file diff --git a/shaders/shaders.properties b/shaders/shaders.properties index 59ad127..b5dff25 100644 --- a/shaders/shaders.properties +++ b/shaders/shaders.properties @@ -4,17 +4,17 @@ #=============== EVERYTHING BELOW HERE IS NOT FOR CUSTOM SCENE CONTROLLER STUFF AND SHOULD NOT BE MODIFIED UNLESS YOU KNOW EXACTLY WHAT YOU ARE DOING =============== #==================================================================================================================================================================== -profile.POTATO = QUARTER_RES_SSR !TERRAIN_SHADOW_ON_CLOUDS LPV_HANDHELD_SHADOWS_QUALITY:0 !SHADER_GRASS !HQ_CLOUD_UPSAMPLE WATER_INTERACTION:0 WATER_SIM_DISTANCE:1 WATER_SIM_SCALE:0 WATER_SIM_FRAMERATE:30 !MOON_NORMALS RAINBOW:0 !CUSTOM_MOON_ROTATION CUSTOM_SHADOWS_QUALITY:0 !END_ISLAND_LIGHT CloudLayer0_distance:10000.0 CloudLayer1_distance:10000.0 !RIPPLE_PUDDLES !RIPPLE_WATER PUDDLE_MODE:0 ShaderSnow:0 CUMULONIMBUS:0 CloudLayer0 !CloudLayer1 !CloudLayer2 !CloudLayer3 VL_RENDER_SCALE:0.25 indirect_effect:VANILLA_AO RAY_COUNT:4 VL_SAMPLES:4 !REALMOON shadowMapResolution:512 shadowDistance:64.0 !DH_SCREENSPACE_REFLECTIONS !LPV_ENABLED !SAND_STORMS !SNOW_STORMS TAA_UPSCALING SCALE_FACTOR:0.7 SHARPENING:55 EXPOSURE_MULTIPLIER:1.0 ambientsss_brightness:1.0 TONEMAP:ToneMap_AgX_minimal_merlin AO_Strength:1.0 SCREENSPACE_DIRECT_SSS_BLENDING:0.5 WATER_CAUSTICS_POWER:1.0 Sky_Brightness:1.0 TOD_Fog_mult:1.0 Water_Absorb_R:0.392389 Water_Absorb_G:0.108329 Water_Absorb_B:0.0660636 Dirt_Scatter_B:0.39 Dirt_Scatter_G:0.39 Dirt_Scatter_R:0.6 ambient_brightness:1.0 WHITE_BALANCE:6500 Sun_temp:6300 Haze_amount:1.0 CROSSTALK:0.0 BLOOM_STRENGTH:1.0 SATURATION:0.0 Dirt_Amount:0.1 Dirt_Absorb_R:0.68 Dirt_Absorb_G:0.4 Dirt_Absorb_B:0.38 -profile.VERY_LOW = QUARTER_RES_SSR !TERRAIN_SHADOW_ON_CLOUDS LPV_HANDHELD_SHADOWS_QUALITY:0 !SHADER_GRASS !HQ_CLOUD_UPSAMPLE WATER_INTERACTION:1 WATER_SIM_DISTANCE:1 WATER_SIM_SCALE:0 WATER_SIM_FRAMERATE:30 !MOON_NORMALS RAINBOW:0 !CUSTOM_MOON_ROTATION CUSTOM_SHADOWS_QUALITY:0 !END_ISLAND_LIGHT CloudLayer0_distance:100000.0 CloudLayer1_distance:100000.0 !RIPPLE_PUDDLES !RIPPLE_WATER PUDDLE_MODE:0 ShaderSnow:0 CUMULONIMBUS:0 CloudLayer0 !CloudLayer1 !CloudLayer2 !CloudLayer3 VL_RENDER_SCALE:0.25 indirect_effect:VANILLA_AO RAY_COUNT:4 VL_SAMPLES:4 REALMOON shadowMapResolution:1024 shadowDistance:96.0 !DH_SCREENSPACE_REFLECTIONS !LPV_ENABLED !SAND_STORMS !SNOW_STORMS TAA_UPSCALING SCALE_FACTOR:0.8 SHARPENING:50 EXPOSURE_MULTIPLIER:1.0 ambientsss_brightness:1.0 TONEMAP:ToneMap_AgX_minimal_merlin AO_Strength:1.0 SCREENSPACE_DIRECT_SSS_BLENDING:0.5 WATER_CAUSTICS_POWER:1.0 Sky_Brightness:1.0 TOD_Fog_mult:1.0 Water_Absorb_R:0.392389 Water_Absorb_G:0.108329 Water_Absorb_B:0.0660636 Dirt_Scatter_B:0.39 Dirt_Scatter_G:0.39 Dirt_Scatter_R:0.6 ambient_brightness:1.0 WHITE_BALANCE:6500 Sun_temp:6300 Haze_amount:1.0 CROSSTALK:0.0 BLOOM_STRENGTH:1.0 SATURATION:0.0 Dirt_Amount:0.1 Dirt_Absorb_R:0.68 Dirt_Absorb_G:0.4 Dirt_Absorb_B:0.38 -profile.LOW = QUARTER_RES_SSR !TERRAIN_SHADOW_ON_CLOUDS LPV_HANDHELD_SHADOWS_QUALITY:0 !SHADER_GRASS !HQ_CLOUD_UPSAMPLE WATER_INTERACTION:2 WATER_SIM_DISTANCE:2 WATER_SIM_SCALE:0 WATER_SIM_FRAMERATE:30 !MOON_NORMALS RAINBOW:1 CUSTOM_MOON_ROTATION CUSTOM_SHADOWS_QUALITY:0 !END_ISLAND_LIGHT CloudLayer0_distance:100000.0 CloudLayer1_distance:100000.0 !RIPPLE_PUDDLES !RIPPLE_WATER PUDDLE_MODE:0 ShaderSnow:0 CUMULONIMBUS:0 CloudLayer0 !CloudLayer1 CloudLayer2 !CloudLayer3 VL_RENDER_SCALE:0.25 indirect_effect:SSAO_FILTERED RAY_COUNT:4 VL_SAMPLES:6 REALMOON shadowMapResolution:1536 shadowDistance:112.0 !DH_SCREENSPACE_REFLECTIONS !LPV_ENABLED SAND_STORMS SNOW_STORMS TAA_UPSCALING SCALE_FACTOR:0.9 SHARPENING:45 EXPOSURE_MULTIPLIER:1.0 ambientsss_brightness:1.0 TONEMAP:ToneMap_AgX_minimal_merlin AO_Strength:1.0 SCREENSPACE_DIRECT_SSS_BLENDING:0.5 WATER_CAUSTICS_POWER:1.0 Sky_Brightness:1.0 TOD_Fog_mult:1.0 Water_Absorb_R:0.392389 Water_Absorb_G:0.108329 Water_Absorb_B:0.0660636 Dirt_Scatter_B:0.39 Dirt_Scatter_G:0.39 Dirt_Scatter_R:0.6 ambient_brightness:1.0 WHITE_BALANCE:6500 Sun_temp:6300 Haze_amount:1.0 CROSSTALK:0.0 BLOOM_STRENGTH:1.0 SATURATION:0.0 Dirt_Amount:0.1 Dirt_Absorb_R:0.68 Dirt_Absorb_G:0.4 Dirt_Absorb_B:0.38 -profile.MEDIUM = QUARTER_RES_SSR !TERRAIN_SHADOW_ON_CLOUDS LPV_HANDHELD_SHADOWS_QUALITY:0 !SHADER_GRASS HQ_CLOUD_UPSAMPLE WATER_INTERACTION:2 WATER_SIM_DISTANCE:2 WATER_SIM_SCALE:1 WATER_SIM_FRAMERATE:30 MOON_NORMALS RAINBOW:1 CUSTOM_MOON_ROTATION CUSTOM_SHADOWS_QUALITY:1 END_ISLAND_LIGHT CloudLayer0_distance:100000.0 CloudLayer1_distance:100000.0 !RIPPLE_PUDDLES RIPPLE_WATER PUDDLE_MODE:0 ShaderSnow:0 CUMULONIMBUS:0 CloudLayer0 CloudLayer1 CloudLayer2 !CloudLayer3 VL_RENDER_SCALE:0.5 indirect_effect:SSAO_FILTERED RAY_COUNT:4 VL_SAMPLES:6 REALMOON shadowMapResolution:2048 shadowDistance:128.0 DH_SCREENSPACE_REFLECTIONS !LPV_ENABLED SAND_STORMS SNOW_STORMS !TAA_UPSCALING SCALE_FACTOR:0.75 SHARPENING:45 EXPOSURE_MULTIPLIER:1.0 ambientsss_brightness:1.0 TONEMAP:ToneMap_AgX_minimal_merlin AO_Strength:1.0 SCREENSPACE_DIRECT_SSS_BLENDING:0.5 WATER_CAUSTICS_POWER:1.0 Sky_Brightness:1.0 TOD_Fog_mult:1.0 Water_Absorb_R:0.392389 Water_Absorb_G:0.108329 Water_Absorb_B:0.0660636 Dirt_Scatter_B:0.39 Dirt_Scatter_G:0.39 Dirt_Scatter_R:0.6 ambient_brightness:1.0 WHITE_BALANCE:6500 Sun_temp:6300 Haze_amount:1.0 CROSSTALK:0.0 BLOOM_STRENGTH:1.0 SATURATION:0.0 Dirt_Amount:0.1 Dirt_Absorb_R:0.68 Dirt_Absorb_G:0.4 Dirt_Absorb_B:0.38 -profile.ALTERNATE_MEDIUM = QUARTER_RES_SSR !TERRAIN_SHADOW_ON_CLOUDS LPV_HANDHELD_SHADOWS_QUALITY:0 !SHADER_GRASS HQ_CLOUD_UPSAMPLE WATER_INTERACTION:2 WATER_SIM_DISTANCE:2 WATER_SIM_SCALE:1 WATER_SIM_FRAMERATE:30 MOON_NORMALS RAINBOW:1 CUSTOM_MOON_ROTATION CUSTOM_SHADOWS_QUALITY:1 END_ISLAND_LIGHT CloudLayer0_distance:100000.0 CloudLayer1_distance:100000.0 !RIPPLE_PUDDLES RIPPLE_WATER PUDDLE_MODE:0 ShaderSnow:0 CUMULONIMBUS:0 CloudLayer0 CloudLayer1 CloudLayer2 !CloudLayer3 VL_RENDER_SCALE:0.5 indirect_effect:SSAO_FILTERED RAY_COUNT:4 VL_SAMPLES:6 REALMOON shadowMapResolution:2048 shadowDistance:128.0 DH_SCREENSPACE_REFLECTIONS !LPV_ENABLED SAND_STORMS SNOW_STORMS !TAA_UPSCALING SCALE_FACTOR:0.75 SHARPENING:45 EXPOSURE_MULTIPLIER:1.1 ambientsss_brightness:0.7 TONEMAP:ToneMap_Hejl2015 AO_Strength:0.4 SCREENSPACE_DIRECT_SSS_BLENDING:0.4 WATER_CAUSTICS_POWER:0.55 Sky_Brightness:0.7 TOD_Fog_mult:0.5 Water_Absorb_R:0.38 Water_Absorb_G:0.28 Water_Absorb_B:0.36 Dirt_Scatter_B:0.14 Dirt_Scatter_G:0.13 Dirt_Scatter_R:0.14 ambient_brightness:0.7 WHITE_BALANCE:7000 Sun_temp:6200 Haze_amount:0.6 CROSSTALK:0.14 BLOOM_STRENGTH:0.5 SATURATION:-0.16 Dirt_Amount:2.0 Dirt_Absorb_R:1.0 Dirt_Absorb_G:1.0 Dirt_Absorb_B:1.0 -profile.HIGH = QUARTER_RES_SSR TERRAIN_SHADOW_ON_CLOUDS LPV_HANDHELD_SHADOWS_QUALITY:0 !SHADER_GRASS HQ_CLOUD_UPSAMPLE WATER_INTERACTION:2 WATER_SIM_DISTANCE:2 WATER_SIM_SCALE:1 WATER_SIM_FRAMERATE:60 MOON_NORMALS RAINBOW:1 CUSTOM_MOON_ROTATION CUSTOM_SHADOWS_QUALITY:1 END_ISLAND_LIGHT CloudLayer0_distance:100000.0 CloudLayer1_distance:100000.0 RIPPLE_PUDDLES RIPPLE_WATER PUDDLE_MODE:1 ShaderSnow:1 CUMULONIMBUS:0 CloudLayer0 CloudLayer1 CloudLayer2 !CloudLayer3 VL_RENDER_SCALE:0.5 indirect_effect:SSAO_FILTERED RAY_COUNT:4 VL_SAMPLES:8 REALMOON shadowMapResolution:2560 shadowDistance:128.0 DH_SCREENSPACE_REFLECTIONS LPV_ENABLED SAND_STORMS SNOW_STORMS !TAA_UPSCALING SCALE_FACTOR:0.75 SHARPENING:45 EXPOSURE_MULTIPLIER:1.0 ambientsss_brightness:1.0 TONEMAP:ToneMap_AgX_minimal_merlin AO_Strength:1.0 SCREENSPACE_DIRECT_SSS_BLENDING:0.5 WATER_CAUSTICS_POWER:1.0 Sky_Brightness:1.0 TOD_Fog_mult:1.0 Water_Absorb_R:0.392389 Water_Absorb_G:0.108329 Water_Absorb_B:0.0660636 Dirt_Scatter_B:0.39 Dirt_Scatter_G:0.39 Dirt_Scatter_R:0.6 ambient_brightness:1.0 WHITE_BALANCE:6500 Sun_temp:6300 Haze_amount:1.0 CROSSTALK:0.0 BLOOM_STRENGTH:1.0 SATURATION:0.0 Dirt_Amount:0.1 Dirt_Absorb_R:0.68 Dirt_Absorb_G:0.4 Dirt_Absorb_B:0.38 -profile.ALTERNATE_HIGH = QUARTER_RES_SSR TERRAIN_SHADOW_ON_CLOUDS LPV_HANDHELD_SHADOWS_QUALITY:0 !SHADER_GRASS HQ_CLOUD_UPSAMPLE WATER_INTERACTION:2 WATER_SIM_DISTANCE:2 WATER_SIM_SCALE:1 WATER_SIM_FRAMERATE:60 MOON_NORMALS RAINBOW:1 CUSTOM_MOON_ROTATION CUSTOM_SHADOWS_QUALITY:1 END_ISLAND_LIGHT CloudLayer0_distance:100000.0 CloudLayer1_distance:100000.0 RIPPLE_PUDDLES RIPPLE_WATER PUDDLE_MODE:1 ShaderSnow:1 CUMULONIMBUS:0 CloudLayer0 CloudLayer1 CloudLayer2 !CloudLayer3 VL_RENDER_SCALE:0.5 indirect_effect:SSAO_FILTERED RAY_COUNT:4 VL_SAMPLES:8 REALMOON shadowMapResolution:2560 shadowDistance:128.0 DH_SCREENSPACE_REFLECTIONS LPV_ENABLED SAND_STORMS SNOW_STORMS !TAA_UPSCALING SCALE_FACTOR:0.75 SHARPENING:45 EXPOSURE_MULTIPLIER:1.1 ambientsss_brightness:0.7 TONEMAP:ToneMap_Hejl2015 AO_Strength:0.4 SCREENSPACE_DIRECT_SSS_BLENDING:0.4 WATER_CAUSTICS_POWER:0.55 Sky_Brightness:0.7 TOD_Fog_mult:0.5 Water_Absorb_R:0.38 Water_Absorb_G:0.28 Water_Absorb_B:0.36 Dirt_Scatter_B:0.14 Dirt_Scatter_G:0.13 Dirt_Scatter_R:0.14 ambient_brightness:0.7 WHITE_BALANCE:7000 Sun_temp:6200 Haze_amount:0.6 CROSSTALK:0.14 BLOOM_STRENGTH:0.5 SATURATION:-0.16 Dirt_Amount:2.0 Dirt_Absorb_R:1.0 Dirt_Absorb_G:1.0 Dirt_Absorb_B:1.0 -profile.HIGH_GRASS = QUARTER_RES_SSR TERRAIN_SHADOW_ON_CLOUDS LPV_HANDHELD_SHADOWS_QUALITY:0 SHADER_GRASS HQ_CLOUD_UPSAMPLE WATER_INTERACTION:2 WATER_SIM_DISTANCE:2 WATER_SIM_SCALE:1 WATER_SIM_FRAMERATE:60 MOON_NORMALS RAINBOW:1 CUSTOM_MOON_ROTATION CUSTOM_SHADOWS_QUALITY:1 END_ISLAND_LIGHT CloudLayer0_distance:100000.0 CloudLayer1_distance:100000.0 RIPPLE_PUDDLES RIPPLE_WATER PUDDLE_MODE:1 ShaderSnow:1 CUMULONIMBUS:0 CloudLayer0 CloudLayer1 CloudLayer2 !CloudLayer3 VL_RENDER_SCALE:0.5 indirect_effect:SSAO_FILTERED RAY_COUNT:4 VL_SAMPLES:8 REALMOON shadowMapResolution:2560 shadowDistance:128.0 DH_SCREENSPACE_REFLECTIONS LPV_ENABLED SAND_STORMS SNOW_STORMS !TAA_UPSCALING SCALE_FACTOR:0.75 SHARPENING:45 EXPOSURE_MULTIPLIER:1.0 ambientsss_brightness:1.0 TONEMAP:ToneMap_AgX_minimal_merlin AO_Strength:1.0 SCREENSPACE_DIRECT_SSS_BLENDING:0.5 WATER_CAUSTICS_POWER:1.0 Sky_Brightness:1.0 TOD_Fog_mult:1.0 Water_Absorb_R:0.392389 Water_Absorb_G:0.108329 Water_Absorb_B:0.0660636 Dirt_Scatter_B:0.39 Dirt_Scatter_G:0.39 Dirt_Scatter_R:0.6 ambient_brightness:1.0 WHITE_BALANCE:6500 Sun_temp:6300 Haze_amount:1.0 CROSSTALK:0.0 BLOOM_STRENGTH:1.0 SATURATION:0.0 Dirt_Amount:0.1 Dirt_Absorb_R:0.68 Dirt_Absorb_G:0.4 Dirt_Absorb_B:0.38 -profile.ALTERNATE_HIGH_GRASS = QUARTER_RES_SSR TERRAIN_SHADOW_ON_CLOUDS LPV_HANDHELD_SHADOWS_QUALITY:0 SHADER_GRASS HQ_CLOUD_UPSAMPLE WATER_INTERACTION:2 WATER_SIM_DISTANCE:2 WATER_SIM_SCALE:1 WATER_SIM_FRAMERATE:60 MOON_NORMALS RAINBOW:1 CUSTOM_MOON_ROTATION CUSTOM_SHADOWS_QUALITY:1 END_ISLAND_LIGHT CloudLayer0_distance:100000.0 CloudLayer1_distance:100000.0 RIPPLE_PUDDLES RIPPLE_WATER PUDDLE_MODE:1 ShaderSnow:1 CUMULONIMBUS:0 CloudLayer0 CloudLayer1 CloudLayer2 !CloudLayer3 VL_RENDER_SCALE:0.5 indirect_effect:SSAO_FILTERED RAY_COUNT:4 VL_SAMPLES:8 REALMOON shadowMapResolution:2560 shadowDistance:128.0 DH_SCREENSPACE_REFLECTIONS LPV_ENABLED SAND_STORMS SNOW_STORMS !TAA_UPSCALING SCALE_FACTOR:0.75 SHARPENING:45 EXPOSURE_MULTIPLIER:1.1 ambientsss_brightness:0.7 TONEMAP:ToneMap_Hejl2015 AO_Strength:0.4 SCREENSPACE_DIRECT_SSS_BLENDING:0.4 WATER_CAUSTICS_POWER:0.55 Sky_Brightness:0.7 TOD_Fog_mult:0.5 Water_Absorb_R:0.38 Water_Absorb_G:0.28 Water_Absorb_B:0.36 Dirt_Scatter_B:0.14 Dirt_Scatter_G:0.13 Dirt_Scatter_R:0.14 ambient_brightness:0.7 WHITE_BALANCE:7000 Sun_temp:6200 Haze_amount:0.6 CROSSTALK:0.14 BLOOM_STRENGTH:0.5 SATURATION:-0.16 Dirt_Amount:2.0 Dirt_Absorb_R:1.0 Dirt_Absorb_G:1.0 Dirt_Absorb_B:1.0 -profile.VERY_HIGH = !QUARTER_RES_SSR TERRAIN_SHADOW_ON_CLOUDS LPV_HANDHELD_SHADOWS_QUALITY:1 SHADER_GRASS HQ_CLOUD_UPSAMPLE WATER_INTERACTION:2 WATER_SIM_DISTANCE:3 WATER_SIM_SCALE:1 WATER_SIM_FRAMERATE:60 MOON_NORMALS RAINBOW:1 CUSTOM_MOON_ROTATION CUSTOM_SHADOWS_QUALITY:2 END_ISLAND_LIGHT CloudLayer0_distance:100000.0 CloudLayer1_distance:100000.0 RIPPLE_PUDDLES RIPPLE_WATER PUDDLE_MODE:1 ShaderSnow:1 CUMULONIMBUS:0 CloudLayer0 CloudLayer1 CloudLayer2 CloudLayer3 VL_RENDER_SCALE:1.0 indirect_effect:SSAO_HQ RAY_COUNT:4 VL_SAMPLES:8 REALMOON shadowMapResolution:3172 shadowDistance:144.0 DH_SCREENSPACE_REFLECTIONS LPV_ENABLED SAND_STORMS SNOW_STORMS !TAA_UPSCALING SCALE_FACTOR:0.75 SHARPENING:45 EXPOSURE_MULTIPLIER:1.0 ambientsss_brightness:1.0 TONEMAP:ToneMap_AgX_minimal_merlin AO_Strength:1.0 SCREENSPACE_DIRECT_SSS_BLENDING:0.5 WATER_CAUSTICS_POWER:1.0 Sky_Brightness:1.0 TOD_Fog_mult:1.0 Water_Absorb_R:0.392389 Water_Absorb_G:0.108329 Water_Absorb_B:0.0660636 Dirt_Scatter_B:0.39 Dirt_Scatter_G:0.39 Dirt_Scatter_R:0.6 ambient_brightness:1.0 WHITE_BALANCE:6500 Sun_temp:6300 Haze_amount:1.0 CROSSTALK:0.0 BLOOM_STRENGTH:1.0 SATURATION:0.0 Dirt_Amount:0.1 Dirt_Absorb_R:0.68 Dirt_Absorb_G:0.4 Dirt_Absorb_B:0.38 -profile.ULTRA = !QUARTER_RES_SSR TERRAIN_SHADOW_ON_CLOUDS LPV_HANDHELD_SHADOWS_QUALITY:1 SHADER_GRASS HQ_CLOUD_UPSAMPLE WATER_INTERACTION:2 WATER_SIM_DISTANCE:3 WATER_SIM_SCALE:2 WATER_SIM_FRAMERATE:60 MOON_NORMALS RAINBOW:1 CUSTOM_MOON_ROTATION CUSTOM_SHADOWS_QUALITY:2 END_ISLAND_LIGHT CloudLayer0_distance:100000.0 CloudLayer1_distance:100000.0 RIPPLE_PUDDLES RIPPLE_WATER PUDDLE_MODE:1 ShaderSnow:1 CUMULONIMBUS:1 CloudLayer0 CloudLayer1 CloudLayer2 CloudLayer3 VL_RENDER_SCALE:1.0 indirect_effect:SSRT_AO_GI RAY_COUNT:6 VL_SAMPLES:10 REALMOON shadowMapResolution:4096 shadowDistance:144.0 DH_SCREENSPACE_REFLECTIONS LPV_ENABLED SAND_STORMS SNOW_STORMS !TAA_UPSCALING SCALE_FACTOR:0.75 SHARPENING:45 EXPOSURE_MULTIPLIER:1.0 ambientsss_brightness:1.0 TONEMAP:ToneMap_AgX_minimal_merlin AO_Strength:1.0 SCREENSPACE_DIRECT_SSS_BLENDING:0.5 WATER_CAUSTICS_POWER:1.0 Sky_Brightness:1.0 TOD_Fog_mult:1.0 Water_Absorb_R:0.392389 Water_Absorb_G:0.108329 Water_Absorb_B:0.0660636 Dirt_Scatter_B:0.39 Dirt_Scatter_G:0.39 Dirt_Scatter_R:0.6 ambient_brightness:1.0 WHITE_BALANCE:6500 Sun_temp:6300 Haze_amount:1.0 CROSSTALK:0.0 BLOOM_STRENGTH:1.0 SATURATION:0.0 Dirt_Amount:0.1 Dirt_Absorb_R:0.68 Dirt_Absorb_G:0.4 Dirt_Absorb_B:0.38 +profile.POTATO = QUARTER_RES_SSR !TERRAIN_SHADOW_ON_CLOUDS LPV_HANDHELD_SHADOWS_QUALITY:0 !SHADER_GRASS_SETTING !HQ_CLOUD_UPSAMPLE WATER_INTERACTION:0 WATER_SIM_DISTANCE:1 WATER_SIM_SCALE:0 WATER_SIM_FRAMERATE:30 !MOON_NORMALS RAINBOW:0 !CUSTOM_MOON_ROTATION CUSTOM_SHADOWS_QUALITY:0 !END_ISLAND_LIGHT CloudLayer0_distance:10000.0 CloudLayer1_distance:10000.0 !RIPPLE_PUDDLES !RIPPLE_WATER PUDDLE_MODE:0 ShaderSnow:0 CUMULONIMBUS:0 CloudLayer0 !CloudLayer1 !CloudLayer2 !CloudLayer3 VL_RENDER_SCALE:0.25 indirect_effect:VANILLA_AO RAY_COUNT:4 VL_SAMPLES:4 !REALMOON shadowMapResolution:512 shadowDistance:64.0 !DH_SCREENSPACE_REFLECTIONS !LPV_ENABLED !SAND_STORMS !SNOW_STORMS TAA_UPSCALING SCALE_FACTOR:0.7 SHARPENING:55 EXPOSURE_MULTIPLIER:1.0 ambientsss_brightness:1.0 TONEMAP:ToneMap_AgX_minimal_merlin AO_Strength:1.0 SCREENSPACE_DIRECT_SSS_BLENDING:0.5 WATER_CAUSTICS_POWER:1.0 Sky_Brightness:1.0 TOD_Fog_mult:1.0 Water_Absorb_R:0.392389 Water_Absorb_G:0.108329 Water_Absorb_B:0.0660636 Dirt_Scatter_B:0.39 Dirt_Scatter_G:0.39 Dirt_Scatter_R:0.6 ambient_brightness:1.0 WHITE_BALANCE:6500 Sun_temp:6300 Haze_amount:1.0 CROSSTALK:0.0 BLOOM_STRENGTH:1.0 SATURATION:0.0 Dirt_Amount:0.1 Dirt_Absorb_R:0.68 Dirt_Absorb_G:0.4 Dirt_Absorb_B:0.38 +profile.VERY_LOW = QUARTER_RES_SSR !TERRAIN_SHADOW_ON_CLOUDS LPV_HANDHELD_SHADOWS_QUALITY:0 !SHADER_GRASS_SETTING !HQ_CLOUD_UPSAMPLE WATER_INTERACTION:1 WATER_SIM_DISTANCE:1 WATER_SIM_SCALE:0 WATER_SIM_FRAMERATE:30 !MOON_NORMALS RAINBOW:0 !CUSTOM_MOON_ROTATION CUSTOM_SHADOWS_QUALITY:0 !END_ISLAND_LIGHT CloudLayer0_distance:100000.0 CloudLayer1_distance:100000.0 !RIPPLE_PUDDLES !RIPPLE_WATER PUDDLE_MODE:0 ShaderSnow:0 CUMULONIMBUS:0 CloudLayer0 !CloudLayer1 !CloudLayer2 !CloudLayer3 VL_RENDER_SCALE:0.25 indirect_effect:VANILLA_AO RAY_COUNT:4 VL_SAMPLES:4 REALMOON shadowMapResolution:1024 shadowDistance:96.0 !DH_SCREENSPACE_REFLECTIONS !LPV_ENABLED !SAND_STORMS !SNOW_STORMS TAA_UPSCALING SCALE_FACTOR:0.8 SHARPENING:50 EXPOSURE_MULTIPLIER:1.0 ambientsss_brightness:1.0 TONEMAP:ToneMap_AgX_minimal_merlin AO_Strength:1.0 SCREENSPACE_DIRECT_SSS_BLENDING:0.5 WATER_CAUSTICS_POWER:1.0 Sky_Brightness:1.0 TOD_Fog_mult:1.0 Water_Absorb_R:0.392389 Water_Absorb_G:0.108329 Water_Absorb_B:0.0660636 Dirt_Scatter_B:0.39 Dirt_Scatter_G:0.39 Dirt_Scatter_R:0.6 ambient_brightness:1.0 WHITE_BALANCE:6500 Sun_temp:6300 Haze_amount:1.0 CROSSTALK:0.0 BLOOM_STRENGTH:1.0 SATURATION:0.0 Dirt_Amount:0.1 Dirt_Absorb_R:0.68 Dirt_Absorb_G:0.4 Dirt_Absorb_B:0.38 +profile.LOW = QUARTER_RES_SSR !TERRAIN_SHADOW_ON_CLOUDS LPV_HANDHELD_SHADOWS_QUALITY:0 !SHADER_GRASS_SETTING !HQ_CLOUD_UPSAMPLE WATER_INTERACTION:2 WATER_SIM_DISTANCE:2 WATER_SIM_SCALE:0 WATER_SIM_FRAMERATE:30 !MOON_NORMALS RAINBOW:1 CUSTOM_MOON_ROTATION CUSTOM_SHADOWS_QUALITY:0 !END_ISLAND_LIGHT CloudLayer0_distance:100000.0 CloudLayer1_distance:100000.0 !RIPPLE_PUDDLES !RIPPLE_WATER PUDDLE_MODE:0 ShaderSnow:0 CUMULONIMBUS:0 CloudLayer0 !CloudLayer1 CloudLayer2 !CloudLayer3 VL_RENDER_SCALE:0.25 indirect_effect:SSAO_FILTERED RAY_COUNT:4 VL_SAMPLES:6 REALMOON shadowMapResolution:1536 shadowDistance:112.0 !DH_SCREENSPACE_REFLECTIONS !LPV_ENABLED SAND_STORMS SNOW_STORMS TAA_UPSCALING SCALE_FACTOR:0.9 SHARPENING:45 EXPOSURE_MULTIPLIER:1.0 ambientsss_brightness:1.0 TONEMAP:ToneMap_AgX_minimal_merlin AO_Strength:1.0 SCREENSPACE_DIRECT_SSS_BLENDING:0.5 WATER_CAUSTICS_POWER:1.0 Sky_Brightness:1.0 TOD_Fog_mult:1.0 Water_Absorb_R:0.392389 Water_Absorb_G:0.108329 Water_Absorb_B:0.0660636 Dirt_Scatter_B:0.39 Dirt_Scatter_G:0.39 Dirt_Scatter_R:0.6 ambient_brightness:1.0 WHITE_BALANCE:6500 Sun_temp:6300 Haze_amount:1.0 CROSSTALK:0.0 BLOOM_STRENGTH:1.0 SATURATION:0.0 Dirt_Amount:0.1 Dirt_Absorb_R:0.68 Dirt_Absorb_G:0.4 Dirt_Absorb_B:0.38 +profile.MEDIUM = QUARTER_RES_SSR !TERRAIN_SHADOW_ON_CLOUDS LPV_HANDHELD_SHADOWS_QUALITY:0 !SHADER_GRASS_SETTING HQ_CLOUD_UPSAMPLE WATER_INTERACTION:2 WATER_SIM_DISTANCE:2 WATER_SIM_SCALE:1 WATER_SIM_FRAMERATE:30 MOON_NORMALS RAINBOW:1 CUSTOM_MOON_ROTATION CUSTOM_SHADOWS_QUALITY:1 END_ISLAND_LIGHT CloudLayer0_distance:100000.0 CloudLayer1_distance:100000.0 !RIPPLE_PUDDLES RIPPLE_WATER PUDDLE_MODE:0 ShaderSnow:0 CUMULONIMBUS:0 CloudLayer0 CloudLayer1 CloudLayer2 !CloudLayer3 VL_RENDER_SCALE:0.5 indirect_effect:SSAO_FILTERED RAY_COUNT:4 VL_SAMPLES:6 REALMOON shadowMapResolution:2048 shadowDistance:128.0 DH_SCREENSPACE_REFLECTIONS !LPV_ENABLED SAND_STORMS SNOW_STORMS !TAA_UPSCALING SCALE_FACTOR:0.75 SHARPENING:45 EXPOSURE_MULTIPLIER:1.0 ambientsss_brightness:1.0 TONEMAP:ToneMap_AgX_minimal_merlin AO_Strength:1.0 SCREENSPACE_DIRECT_SSS_BLENDING:0.5 WATER_CAUSTICS_POWER:1.0 Sky_Brightness:1.0 TOD_Fog_mult:1.0 Water_Absorb_R:0.392389 Water_Absorb_G:0.108329 Water_Absorb_B:0.0660636 Dirt_Scatter_B:0.39 Dirt_Scatter_G:0.39 Dirt_Scatter_R:0.6 ambient_brightness:1.0 WHITE_BALANCE:6500 Sun_temp:6300 Haze_amount:1.0 CROSSTALK:0.0 BLOOM_STRENGTH:1.0 SATURATION:0.0 Dirt_Amount:0.1 Dirt_Absorb_R:0.68 Dirt_Absorb_G:0.4 Dirt_Absorb_B:0.38 +profile.ALTERNATE_MEDIUM = QUARTER_RES_SSR !TERRAIN_SHADOW_ON_CLOUDS LPV_HANDHELD_SHADOWS_QUALITY:0 !SHADER_GRASS_SETTING HQ_CLOUD_UPSAMPLE WATER_INTERACTION:2 WATER_SIM_DISTANCE:2 WATER_SIM_SCALE:1 WATER_SIM_FRAMERATE:30 MOON_NORMALS RAINBOW:1 CUSTOM_MOON_ROTATION CUSTOM_SHADOWS_QUALITY:1 END_ISLAND_LIGHT CloudLayer0_distance:100000.0 CloudLayer1_distance:100000.0 !RIPPLE_PUDDLES RIPPLE_WATER PUDDLE_MODE:0 ShaderSnow:0 CUMULONIMBUS:0 CloudLayer0 CloudLayer1 CloudLayer2 !CloudLayer3 VL_RENDER_SCALE:0.5 indirect_effect:SSAO_FILTERED RAY_COUNT:4 VL_SAMPLES:6 REALMOON shadowMapResolution:2048 shadowDistance:128.0 DH_SCREENSPACE_REFLECTIONS !LPV_ENABLED SAND_STORMS SNOW_STORMS !TAA_UPSCALING SCALE_FACTOR:0.75 SHARPENING:45 EXPOSURE_MULTIPLIER:1.1 ambientsss_brightness:0.7 TONEMAP:ToneMap_Hejl2015 AO_Strength:0.4 SCREENSPACE_DIRECT_SSS_BLENDING:0.4 WATER_CAUSTICS_POWER:0.55 Sky_Brightness:0.7 TOD_Fog_mult:0.5 Water_Absorb_R:0.38 Water_Absorb_G:0.28 Water_Absorb_B:0.36 Dirt_Scatter_B:0.14 Dirt_Scatter_G:0.13 Dirt_Scatter_R:0.14 ambient_brightness:0.7 WHITE_BALANCE:7000 Sun_temp:6200 Haze_amount:0.6 CROSSTALK:0.14 BLOOM_STRENGTH:0.5 SATURATION:-0.16 Dirt_Amount:2.0 Dirt_Absorb_R:1.0 Dirt_Absorb_G:1.0 Dirt_Absorb_B:1.0 +profile.HIGH = QUARTER_RES_SSR TERRAIN_SHADOW_ON_CLOUDS LPV_HANDHELD_SHADOWS_QUALITY:0 !SHADER_GRASS_SETTING HQ_CLOUD_UPSAMPLE WATER_INTERACTION:2 WATER_SIM_DISTANCE:2 WATER_SIM_SCALE:1 WATER_SIM_FRAMERATE:60 MOON_NORMALS RAINBOW:1 CUSTOM_MOON_ROTATION CUSTOM_SHADOWS_QUALITY:1 END_ISLAND_LIGHT CloudLayer0_distance:100000.0 CloudLayer1_distance:100000.0 RIPPLE_PUDDLES RIPPLE_WATER PUDDLE_MODE:1 ShaderSnow:1 CUMULONIMBUS:0 CloudLayer0 CloudLayer1 CloudLayer2 !CloudLayer3 VL_RENDER_SCALE:0.5 indirect_effect:SSAO_FILTERED RAY_COUNT:4 VL_SAMPLES:8 REALMOON shadowMapResolution:2560 shadowDistance:128.0 DH_SCREENSPACE_REFLECTIONS LPV_ENABLED SAND_STORMS SNOW_STORMS !TAA_UPSCALING SCALE_FACTOR:0.75 SHARPENING:45 EXPOSURE_MULTIPLIER:1.0 ambientsss_brightness:1.0 TONEMAP:ToneMap_AgX_minimal_merlin AO_Strength:1.0 SCREENSPACE_DIRECT_SSS_BLENDING:0.5 WATER_CAUSTICS_POWER:1.0 Sky_Brightness:1.0 TOD_Fog_mult:1.0 Water_Absorb_R:0.392389 Water_Absorb_G:0.108329 Water_Absorb_B:0.0660636 Dirt_Scatter_B:0.39 Dirt_Scatter_G:0.39 Dirt_Scatter_R:0.6 ambient_brightness:1.0 WHITE_BALANCE:6500 Sun_temp:6300 Haze_amount:1.0 CROSSTALK:0.0 BLOOM_STRENGTH:1.0 SATURATION:0.0 Dirt_Amount:0.1 Dirt_Absorb_R:0.68 Dirt_Absorb_G:0.4 Dirt_Absorb_B:0.38 +profile.ALTERNATE_HIGH = QUARTER_RES_SSR TERRAIN_SHADOW_ON_CLOUDS LPV_HANDHELD_SHADOWS_QUALITY:0 !SHADER_GRASS_SETTING HQ_CLOUD_UPSAMPLE WATER_INTERACTION:2 WATER_SIM_DISTANCE:2 WATER_SIM_SCALE:1 WATER_SIM_FRAMERATE:60 MOON_NORMALS RAINBOW:1 CUSTOM_MOON_ROTATION CUSTOM_SHADOWS_QUALITY:1 END_ISLAND_LIGHT CloudLayer0_distance:100000.0 CloudLayer1_distance:100000.0 RIPPLE_PUDDLES RIPPLE_WATER PUDDLE_MODE:1 ShaderSnow:1 CUMULONIMBUS:0 CloudLayer0 CloudLayer1 CloudLayer2 !CloudLayer3 VL_RENDER_SCALE:0.5 indirect_effect:SSAO_FILTERED RAY_COUNT:4 VL_SAMPLES:8 REALMOON shadowMapResolution:2560 shadowDistance:128.0 DH_SCREENSPACE_REFLECTIONS LPV_ENABLED SAND_STORMS SNOW_STORMS !TAA_UPSCALING SCALE_FACTOR:0.75 SHARPENING:45 EXPOSURE_MULTIPLIER:1.1 ambientsss_brightness:0.7 TONEMAP:ToneMap_Hejl2015 AO_Strength:0.4 SCREENSPACE_DIRECT_SSS_BLENDING:0.4 WATER_CAUSTICS_POWER:0.55 Sky_Brightness:0.7 TOD_Fog_mult:0.5 Water_Absorb_R:0.38 Water_Absorb_G:0.28 Water_Absorb_B:0.36 Dirt_Scatter_B:0.14 Dirt_Scatter_G:0.13 Dirt_Scatter_R:0.14 ambient_brightness:0.7 WHITE_BALANCE:7000 Sun_temp:6200 Haze_amount:0.6 CROSSTALK:0.14 BLOOM_STRENGTH:0.5 SATURATION:-0.16 Dirt_Amount:2.0 Dirt_Absorb_R:1.0 Dirt_Absorb_G:1.0 Dirt_Absorb_B:1.0 +profile.HIGH_GRASS = QUARTER_RES_SSR TERRAIN_SHADOW_ON_CLOUDS LPV_HANDHELD_SHADOWS_QUALITY:0 SHADER_GRASS_SETTING HQ_CLOUD_UPSAMPLE WATER_INTERACTION:2 WATER_SIM_DISTANCE:2 WATER_SIM_SCALE:1 WATER_SIM_FRAMERATE:60 MOON_NORMALS RAINBOW:1 CUSTOM_MOON_ROTATION CUSTOM_SHADOWS_QUALITY:1 END_ISLAND_LIGHT CloudLayer0_distance:100000.0 CloudLayer1_distance:100000.0 RIPPLE_PUDDLES RIPPLE_WATER PUDDLE_MODE:1 ShaderSnow:1 CUMULONIMBUS:0 CloudLayer0 CloudLayer1 CloudLayer2 !CloudLayer3 VL_RENDER_SCALE:0.5 indirect_effect:SSAO_FILTERED RAY_COUNT:4 VL_SAMPLES:8 REALMOON shadowMapResolution:2560 shadowDistance:128.0 DH_SCREENSPACE_REFLECTIONS LPV_ENABLED SAND_STORMS SNOW_STORMS !TAA_UPSCALING SCALE_FACTOR:0.75 SHARPENING:45 EXPOSURE_MULTIPLIER:1.0 ambientsss_brightness:1.0 TONEMAP:ToneMap_AgX_minimal_merlin AO_Strength:1.0 SCREENSPACE_DIRECT_SSS_BLENDING:0.5 WATER_CAUSTICS_POWER:1.0 Sky_Brightness:1.0 TOD_Fog_mult:1.0 Water_Absorb_R:0.392389 Water_Absorb_G:0.108329 Water_Absorb_B:0.0660636 Dirt_Scatter_B:0.39 Dirt_Scatter_G:0.39 Dirt_Scatter_R:0.6 ambient_brightness:1.0 WHITE_BALANCE:6500 Sun_temp:6300 Haze_amount:1.0 CROSSTALK:0.0 BLOOM_STRENGTH:1.0 SATURATION:0.0 Dirt_Amount:0.1 Dirt_Absorb_R:0.68 Dirt_Absorb_G:0.4 Dirt_Absorb_B:0.38 +profile.ALTERNATE_HIGH_GRASS = QUARTER_RES_SSR TERRAIN_SHADOW_ON_CLOUDS LPV_HANDHELD_SHADOWS_QUALITY:0 SHADER_GRASS_SETTING HQ_CLOUD_UPSAMPLE WATER_INTERACTION:2 WATER_SIM_DISTANCE:2 WATER_SIM_SCALE:1 WATER_SIM_FRAMERATE:60 MOON_NORMALS RAINBOW:1 CUSTOM_MOON_ROTATION CUSTOM_SHADOWS_QUALITY:1 END_ISLAND_LIGHT CloudLayer0_distance:100000.0 CloudLayer1_distance:100000.0 RIPPLE_PUDDLES RIPPLE_WATER PUDDLE_MODE:1 ShaderSnow:1 CUMULONIMBUS:0 CloudLayer0 CloudLayer1 CloudLayer2 !CloudLayer3 VL_RENDER_SCALE:0.5 indirect_effect:SSAO_FILTERED RAY_COUNT:4 VL_SAMPLES:8 REALMOON shadowMapResolution:2560 shadowDistance:128.0 DH_SCREENSPACE_REFLECTIONS LPV_ENABLED SAND_STORMS SNOW_STORMS !TAA_UPSCALING SCALE_FACTOR:0.75 SHARPENING:45 EXPOSURE_MULTIPLIER:1.1 ambientsss_brightness:0.7 TONEMAP:ToneMap_Hejl2015 AO_Strength:0.4 SCREENSPACE_DIRECT_SSS_BLENDING:0.4 WATER_CAUSTICS_POWER:0.55 Sky_Brightness:0.7 TOD_Fog_mult:0.5 Water_Absorb_R:0.38 Water_Absorb_G:0.28 Water_Absorb_B:0.36 Dirt_Scatter_B:0.14 Dirt_Scatter_G:0.13 Dirt_Scatter_R:0.14 ambient_brightness:0.7 WHITE_BALANCE:7000 Sun_temp:6200 Haze_amount:0.6 CROSSTALK:0.14 BLOOM_STRENGTH:0.5 SATURATION:-0.16 Dirt_Amount:2.0 Dirt_Absorb_R:1.0 Dirt_Absorb_G:1.0 Dirt_Absorb_B:1.0 +profile.VERY_HIGH = !QUARTER_RES_SSR TERRAIN_SHADOW_ON_CLOUDS LPV_HANDHELD_SHADOWS_QUALITY:1 SHADER_GRASS_SETTING HQ_CLOUD_UPSAMPLE WATER_INTERACTION:2 WATER_SIM_DISTANCE:3 WATER_SIM_SCALE:1 WATER_SIM_FRAMERATE:60 MOON_NORMALS RAINBOW:1 CUSTOM_MOON_ROTATION CUSTOM_SHADOWS_QUALITY:2 END_ISLAND_LIGHT CloudLayer0_distance:100000.0 CloudLayer1_distance:100000.0 RIPPLE_PUDDLES RIPPLE_WATER PUDDLE_MODE:1 ShaderSnow:1 CUMULONIMBUS:0 CloudLayer0 CloudLayer1 CloudLayer2 CloudLayer3 VL_RENDER_SCALE:1.0 indirect_effect:SSAO_HQ RAY_COUNT:4 VL_SAMPLES:8 REALMOON shadowMapResolution:3172 shadowDistance:144.0 DH_SCREENSPACE_REFLECTIONS LPV_ENABLED SAND_STORMS SNOW_STORMS !TAA_UPSCALING SCALE_FACTOR:0.75 SHARPENING:45 EXPOSURE_MULTIPLIER:1.0 ambientsss_brightness:1.0 TONEMAP:ToneMap_AgX_minimal_merlin AO_Strength:1.0 SCREENSPACE_DIRECT_SSS_BLENDING:0.5 WATER_CAUSTICS_POWER:1.0 Sky_Brightness:1.0 TOD_Fog_mult:1.0 Water_Absorb_R:0.392389 Water_Absorb_G:0.108329 Water_Absorb_B:0.0660636 Dirt_Scatter_B:0.39 Dirt_Scatter_G:0.39 Dirt_Scatter_R:0.6 ambient_brightness:1.0 WHITE_BALANCE:6500 Sun_temp:6300 Haze_amount:1.0 CROSSTALK:0.0 BLOOM_STRENGTH:1.0 SATURATION:0.0 Dirt_Amount:0.1 Dirt_Absorb_R:0.68 Dirt_Absorb_G:0.4 Dirt_Absorb_B:0.38 +profile.ULTRA = !QUARTER_RES_SSR TERRAIN_SHADOW_ON_CLOUDS LPV_HANDHELD_SHADOWS_QUALITY:1 SHADER_GRASS_SETTING HQ_CLOUD_UPSAMPLE WATER_INTERACTION:2 WATER_SIM_DISTANCE:3 WATER_SIM_SCALE:2 WATER_SIM_FRAMERATE:60 MOON_NORMALS RAINBOW:1 CUSTOM_MOON_ROTATION CUSTOM_SHADOWS_QUALITY:2 END_ISLAND_LIGHT CloudLayer0_distance:100000.0 CloudLayer1_distance:100000.0 RIPPLE_PUDDLES RIPPLE_WATER PUDDLE_MODE:1 ShaderSnow:1 CUMULONIMBUS:1 CloudLayer0 CloudLayer1 CloudLayer2 CloudLayer3 VL_RENDER_SCALE:1.0 indirect_effect:SSRT_AO_GI RAY_COUNT:6 VL_SAMPLES:10 REALMOON shadowMapResolution:4096 shadowDistance:144.0 DH_SCREENSPACE_REFLECTIONS LPV_ENABLED SAND_STORMS SNOW_STORMS !TAA_UPSCALING SCALE_FACTOR:0.75 SHARPENING:45 EXPOSURE_MULTIPLIER:1.0 ambientsss_brightness:1.0 TONEMAP:ToneMap_AgX_minimal_merlin AO_Strength:1.0 SCREENSPACE_DIRECT_SSS_BLENDING:0.5 WATER_CAUSTICS_POWER:1.0 Sky_Brightness:1.0 TOD_Fog_mult:1.0 Water_Absorb_R:0.392389 Water_Absorb_G:0.108329 Water_Absorb_B:0.0660636 Dirt_Scatter_B:0.39 Dirt_Scatter_G:0.39 Dirt_Scatter_R:0.6 ambient_brightness:1.0 WHITE_BALANCE:6500 Sun_temp:6300 Haze_amount:1.0 CROSSTALK:0.0 BLOOM_STRENGTH:1.0 SATURATION:0.0 Dirt_Amount:0.1 Dirt_Absorb_R:0.68 Dirt_Absorb_G:0.4 Dirt_Absorb_B:0.38 clouds=off @@ -28,12 +28,37 @@ rain.depth = false beacon.beam.depth = true sky = false -photonics.enabled=true - iris.features.required = SSBO COMPUTE_SHADERS iris.features.optional = ENTITY_TRANSLUCENT REVERSED_CULLING CUSTOM_IMAGES BLOCK_EMISSION_ATTRIBUTE TESSELLATION_SHADERS FADE_VARIABLE TEXTURE_FILTERING +#ifdef PHOTONICS + photonics.enabled=PHOTONICS_ACTIVE + #if defined TAA_UPSCALING && defined TAA + photonics.renderScale = SCALE_FACTOR + #else + photonics.renderScale = 1.0 + #endif + #ifdef ENABLE_PHOTONICS_GI + photonics.enableGi=true + #else + photonics.enableGi=false + #endif + #ifdef ENABLE_PHOTONICS_BLOCKLIGHT + photonics.enableBlockLight=true + #else + photonics.enableBlockLight=false + #endif + #ifdef ENABLE_PHOTONICS_HANDHELD + photonics.enableHandheldLight=true + #else + photonics.enableHandheldLight=false + #endif + photonics.maxLights = PHOTONICS_MAX_LIGHTS + photonics.maxSamples = PHOTONICS_MAX_SAMPLES + photonics.alphaMode = PHOTONICS_ALPHA_MODE +#endif + #ifdef REALMOON customTexture.moon = texture/moon.png #ifdef MOON_NORMALS @@ -216,12 +241,12 @@ alphaTest.gbuffers_beaconbeam = off alphaTest.gbuffers_armor_glint = off alphaTest.gbuffers_damagedblock = off -sliders = PATCHY_WAVE_BLEND WAVES_A_RADIUS WAVES_B_RADIUS PHOTONICS_INDIRECT_BRIGHTNESS TEXTURE_RESOLUTION PALE_GARDEN_UNIFORM_DENSITY PALE_GARDEN_CLOUDY_DENSITY PALE_GARDEN_R PALE_GARDEN_G PALE_GARDEN_B GTAO_SLICES RAIN_BRIGHTNESS RAIN_MODE UNDERWATER_BLOOMY_FOG ENCHANT_GLINT_BRIGHTNESS EMISSIVE_TRIMS_STRENGTH RAY_STEPS FISHEYE_STRENGTH SCREENSPACE_CONTACT_SHADOWS PIXELIZATION_STRENGTH MAX_COLORS_PER_CHANNEL RAINBOW_SELECT_BOX CLOUD_SAMPLES AmbientLightThunder_R AmbientLightThunder_G AmbientLightThunder_B GRASS_RANDOMNESS GRASS_WAVY_STRENGTH GRASS_RANGE GRASS_QUALITY GRASS_DENSITY REPLACE_SHORT_GRASS GRASS_THICKNESS_FALLOFF SHORT_GRASS_HEIGHT BASE_GRASS_HEIGHT GRASS_BASE_THICKNESS FILM_GRAIN_STRENGTH PUDDLE_MODE FLASHLIGHT_SHADOWS_STRENGTH LPV_HANDHELD_SHADOWS_STRENGTH AURORA_R AURORA_G AURORA_B AURORA_LOCATION AURORA_MOON AURORA_BRIGHTNESS AURORA_CHANCE WATER_SIM_STRENGTH WATER_SIM_FRAMERATE WATER_SIM_SCALE WATER_SIM_DISTANCE dayStartTick nightStartTick daySpeed nightSpeed FAKE_REFRACTION_AMOUNT FAKE_DISPERSION_AMOUNT REFRACTION_SMUDGE_AMOUNT NORMAL_MAP_MULT DEFERRED_SSR_QUALITY FORWARD_SSR_QUALITY RAINBOW_TIME RAINBOW RAINBOW_DISTANCE RAINBOW_BRIGHTNESS VORTEX_LIGHT_COL_R VORTEX_LIGHT_COL_G VORTEX_LIGHT_COL_B END_LIGHTNING_COL_R END_LIGHTNING_COL_G END_LIGHTNING_COL_B END_HAZE_DENSTIY NETHER_CEILING_SMOKE_DENSITY NETHER_HAZE_DENSITY Max_Filter_Depth_END Min_Shadow_Filter_Radius_END MOON_TIME_OFFSET EARTH_ROTATION_TILT CUSTOM_SHADOWS_QUALITY MOON_LATITUDE MOON_SIZE_SETTING MONTH_LENGTH LIGHTNING_SHADOWS WHITE_BALANCE STARS_BRIGHTNESS STARS_AMOUNT AmbientLightEnd_R AmbientLightEnd_G AmbientLightEnd_B CloudLayer0_distance CloudLayer1_distance CloudLayer2_distance CloudLayer3_distance BLEND_FACTOR_DURING_MOVEMENT CloudLayer0_detail CloudLayer1_detail MIN_LIGHT_AMOUNT_INSIDE CUMULONIMBUS_FADE_TIME CUMULONIMBUS NOISE_RESOLUTION NOISE_INTENSITY NOISE_DROPOFF WAVE_DETAIL DH_CHUNK_FADING CLOUD_MOVEMENT_TYPE LIGHTLEAKFIX_MODE EMISSIVE_ORES_STRENGTH RIPPLE_STRENGTH RIPPLE_INTENSITY CUSTOM_LIGHTNING_SCALE CUSTOM_LIGHTNING_R CUSTOM_LIGHTNING_G CUSTOM_LIGHTNING_B CUSTOM_LIGHTNING_TEX CUSTOM_LIGHTNING_POS_X CUSTOM_LIGHTNING_POS_Y CUSTOM_LIGHTNING_POS_Z CUMULONIMBUS_LIGHTNING_BRIGHTNESS CUMULONIMBUS_LIGHTNING_DELAY ShaderSnow ShaderSnowStrength BorderFogIntensity CAVE_DETECTION ON_FIRE_DISTORT_EFFECT_STRENGTH USE_CUSTOM_SKY_GROUND_LIGHTING_COLORS DIRECTLIGHT_DIFFUSE_R DIRECTLIGHT_DIFFUSE_G DIRECTLIGHT_DIFFUSE_B INDIRECTLIGHT_DIFFUSE_R INDIRECTLIGHT_DIFFUSE_G INDIRECTLIGHT_DIFFUSE_B DIRECTLIGHT_CLOUDS_R DIRECTLIGHT_CLOUDS_G DIRECTLIGHT_CLOUDS_B INDIRECTLIGHT_CLOUDS_R INDIRECTLIGHT_CLOUDS_G INDIRECTLIGHT_CLOUDS_B DIRECTLIGHT_FOG_R DIRECTLIGHT_FOG_G DIRECTLIGHT_FOG_B INDIRECTLIGHT_FOG_R INDIRECTLIGHT_FOG_G INDIRECTLIGHT_FOG_B SKY_GROUND_R SKY_GROUND_G SKY_GROUND_B DOF_DISPERSION_MULT FLASHLIGHT_BRIGHTNESS_MULT FLASHLIGHT_BRIGHTNESS_FALLOFF_MULT FLASHLIGHT_RANGE FLASHLIGHT_SIZE FLASHLIGHT_R FLASHLIGHT_G FLASHLIGHT_B LOW_HEALTH_EFFECT_START CRITICALLY_LOW_HEALTH_EFFECT_START CloudLayer2_scale CloudLayer0_scale CloudLayer1_scale CloudLayer3_scale CloudLayer0_tallness CloudLayer1_tallness EXPOSURE_DARKENING EXPOSURE_BRIGHTENING VIGNETTE_STRENGTH CURVATURE_AMOUNT MINIMUM_WATER_ABSORBANCE CHROMATIC_ABERRATION_STRENGTH SELECT_BOX_COL_R SELECT_BOX_COL_G SELECT_BOX_COL_B LPV_VL_FOG_ILLUMINATION_BRIGHTNESS minRayMarchSteps MOTION_BLUR_STRENGTH OVERDRAW_MAX_DISTANCE DAY0_l3_coverage DAY0_l3_density DAY1_l3_coverage DAY1_l3_density DAY2_l3_coverage DAY2_l3_density DAY3_l3_coverage DAY3_l3_density DAY4_l3_coverage DAY4_l3_density DAY5_l3_coverage DAY5_l3_density DAY6_l3_coverage DAY6_l3_density DAY7_l3_coverage DAY7_l3_density DAY8_l3_coverage DAY8_l3_density DAY9_l3_coverage DAY9_l3_density DAY0_l0_coverage DAY0_l1_coverage DAY0_l2_coverage DAY0_ufog_density DAY0_l0_density DAY0_l1_density DAY0_l2_density DAY0_cfog_density DAY1_l0_coverage DAY1_l1_coverage DAY1_l2_coverage DAY1_ufog_density DAY1_l0_density DAY1_l1_density DAY1_l2_density DAY1_cfog_density DAY2_l0_coverage DAY2_l1_coverage DAY2_l2_coverage DAY2_ufog_density DAY2_l0_density DAY2_l1_density DAY2_l2_density DAY2_cfog_density DAY3_l0_coverage DAY3_l1_coverage DAY3_l2_coverage DAY3_ufog_density DAY3_l0_density DAY3_l1_density DAY3_l2_density DAY3_cfog_density DAY4_l0_coverage DAY4_l1_coverage DAY4_l2_coverage DAY4_ufog_density DAY4_l0_density DAY4_l1_density DAY4_l2_density DAY4_cfog_density DAY5_l0_coverage DAY5_l1_coverage DAY5_l2_coverage DAY5_ufog_density DAY5_l0_density DAY5_l1_density DAY5_l2_density DAY5_cfog_density DAY6_l0_coverage DAY6_l1_coverage DAY6_l2_coverage DAY6_ufog_density DAY6_l0_density DAY6_l1_density DAY6_l2_density DAY6_cfog_density DAY7_l0_coverage DAY7_l1_coverage DAY7_l2_coverage DAY7_ufog_density DAY7_l0_density DAY7_l1_density DAY7_l2_density DAY7_cfog_density DAY8_l0_coverage DAY8_l1_coverage DAY8_l2_coverage DAY8_ufog_density DAY8_l0_density DAY8_l1_density DAY8_l2_density DAY8_cfog_density DAY9_l0_coverage DAY9_l1_coverage DAY9_l2_coverage DAY9_ufog_density DAY9_l0_density DAY9_l1_density DAY9_l2_density DAY9_cfog_density sss_density_multiplier sss_absorbance_multiplier MOTION_AMOUNT TONEMAP WATER_WAVE_SPEED WATER_CAUSTICS_BRIGHTNESS WATER_CAUSTICS_POWER DEBUG_VIEW entityShadowDistanceMul HANDHELD_LIGHT_RANGE CLOUD_SHADOW_AMOUNT CloudLayer0_coverage CloudLayer0_density CloudLayer0_height CloudLayer1_coverage CloudLayer1_density CloudLayer1_height CloudLayer2_coverage CloudLayer2_density CloudLayer2_height CloudLayer3_coverage CloudLayer3_density CloudLayer3_height PLANET_GROUND_BRIGHTNESS FOG_START_HEIGHT WATER_WAVE_STRENGTH SWAMP_UNIFORM_DENSITY SWAMP_CLOUDY_DENSITY SWAMP_R SWAMP_G SWAMP_B JUNGLE_UNIFORM_DENSITY JUNGLE_CLOUDY_DENSITY JUNGLE_R JUNGLE_G JUNGLE_B DARKFOREST_UNIFORM_DENSITY DARKFOREST_CLOUDY_DENSITY DARKFOREST_R DARKFOREST_G DARKFOREST_B NETHER_PLUME_DENSITY END_STORM_DENSTIY LIT_PARTICLE_BRIGHTNESS UPPER_CURVE LOWER_CURVE EMISSIVE_TYPE_SETTING SCALE_FACTOR ambientsss_brightness SSS_TYPE_SETTING Cloud_Speed Cloud_Speed_Rain Cloud_Speed_Thunder ORB_ColMult ORB_X ORB_Y ORB_Z ORB_R ORB_G ORB_B TOD_Fog_mult Morning_Uniform_Fog Noon_Uniform_Fog Evening_Uniform_Fog Night_Uniform_Fog Morning_Cloudy_Fog Noon_Cloudy_Fog Evening_Cloudy_Fog Night_Cloudy_Fog Summer_Leaf_R Summer_Leaf_G Summer_Leaf_B Fall_Leaf_R Fall_Leaf_G Fall_Leaf_B Winter_Leaf_R Winter_Leaf_G Winter_Leaf_B Spring_Leaf_R Spring_Leaf_G Spring_Leaf_B Summer_R Summer_G Summer_B Fall_R Fall_G Fall_B Winter_R Winter_G Winter_B Spring_R Spring_G Spring_B Season_Length CaveFogFallOff CaveFogColor_R CaveFogColor_G CaveFogColor_B indirect_effect GI_Strength ambient_brightness AmbientLightRain_R AmbientLightRain_G AmbientLightRain_B AmbientLight_R AmbientLight_G AmbientLight_B Rain_coverage Thunder_coverage Moon_temp Haze_amount RainFog_amount Sun_temp Puddle_Size Puddle_Reflection_Sharpness LabSSS_Curve Emissive_Curve Emissive_Brightness AO_Strength BLOOMY_FOG WAVY_SPEED WAVY_STRENGTH BLOOM_STRENGTH shadowDistance Sky_Brightness fog_coefficientMieR fog_coefficientMieG fog_coefficientMieB sun_illuminance sunColorG sunColorB sunColorR sky_mieg sky_coefficientMieB sky_coefficientMieG sky_coefficientMieR sky_coefficientRayleighB sky_coefficientRayleighG sky_coefficientRayleighR CLOUDS_QUALITY EXPOSURE_MULTIPLIER MIN_LIGHT_AMOUNT TORCH_R TORCH_G TORCH_B TORCH_AMOUNT shadowMapResolution sunPathRotation BLEND_FACTOR VL_SAMPLES Exposure_Speed POM_DEPTH MAX_ITERATIONS MAX_DIST ambientOcclusionLevel SEA_LEVEL moon_illuminance moonColorR moonColorG moonColorB fog_coefficientRayleighR fog_coefficientRayleighG SATURATION Manual_exposure_value focal fstop MANUAL_FOCUS SHADOW_FILTER_SAMPLE_COUNT Max_Filter_Depth VPS_Search_Samples Min_Shadow_Filter_Radius Max_Shadow_Filter_Radius Water_Top_Layer fog_coefficientRayleighB SHARPENING rayMarchSampleCount Dirt_Amount Dirt_Scatter_R Dirt_Scatter_G Dirt_Scatter_B Dirt_Absorb_R Dirt_Absorb_G Dirt_Absorb_B Water_Absorb_R Water_Absorb_G Water_Absorb_B Purkinje_strength Purkinje_strength Purkinje_R Purkinje_G Purkinje_B DoF_Adaptation_Speed Purkinje_Multiplier CROSSTALK VL_RENDER_SCALE BLOOM_QUALITY VL_RENDER_SCALE RAY_COUNT STEPS STEP_LENGTH cloud_LevelOfDetail cloud_ShadowLevelOfDetail cloud_LevelOfDetailLQ cloud_ShadowLevelOfDetailLQ minRayMarchSteps maxRayMarchSteps minRayMarchStepsLQ maxRayMarchStepsLQ fbmAmount fbmPower1 fbmPower2 ROUGHNESS_THRESHOLD SUN_SPECULAR_MULT reflection_quality DOF_QUALITY DOF_ANAMORPHIC_RATIO AEROCHROME_PINKNESS DOF_JITTER_FOCUS JITTER_STRENGTH SHADOWS_GRADE_R MIDS_GRADE_R HIGHLIGHTS_GRADE_R SHADOWS_GRADE_G MIDS_GRADE_G HIGHLIGHTS_GRADE_G SHADOWS_GRADE_B MIDS_GRADE_B HIGHLIGHTS_GRADE_B SHADOWS_GRADE_MUL MIDS_GRADE_MUL HIGHLIGHTS_GRADE_MUL LPV_SATURATION LPV_TINT_SATURATION LPV_NORMAL_STRENGTH +sliders = PHOTONICS_MAX_SAMPLES PHOTONICS_MAX_LIGHTS PHOTONICS_ALPHA_MODE PATCHY_WAVE_BLEND WAVES_A_RADIUS WAVES_B_RADIUS PHOTONICS_INDIRECT_BRIGHTNESS TEXTURE_RESOLUTION PALE_GARDEN_UNIFORM_DENSITY PALE_GARDEN_CLOUDY_DENSITY PALE_GARDEN_R PALE_GARDEN_G PALE_GARDEN_B GTAO_SLICES RAIN_BRIGHTNESS RAIN_MODE UNDERWATER_BLOOMY_FOG ENCHANT_GLINT_BRIGHTNESS EMISSIVE_TRIMS_STRENGTH RAY_STEPS FISHEYE_STRENGTH SCREENSPACE_CONTACT_SHADOWS PIXELIZATION_STRENGTH MAX_COLORS_PER_CHANNEL RAINBOW_SELECT_BOX CLOUD_SAMPLES AmbientLightThunder_R AmbientLightThunder_G AmbientLightThunder_B GRASS_RANDOMNESS GRASS_WAVY_STRENGTH GRASS_RANGE GRASS_QUALITY GRASS_DENSITY REPLACE_SHORT_GRASS GRASS_THICKNESS_FALLOFF SHORT_GRASS_HEIGHT BASE_GRASS_HEIGHT GRASS_BASE_THICKNESS FILM_GRAIN_STRENGTH PUDDLE_MODE FLASHLIGHT_SHADOWS_STRENGTH LPV_HANDHELD_SHADOWS_STRENGTH AURORA_R AURORA_G AURORA_B AURORA_LOCATION AURORA_MOON AURORA_BRIGHTNESS AURORA_CHANCE WATER_SIM_STRENGTH WATER_SIM_FRAMERATE WATER_SIM_SCALE WATER_SIM_DISTANCE dayStartTick nightStartTick daySpeed nightSpeed FAKE_REFRACTION_AMOUNT FAKE_DISPERSION_AMOUNT REFRACTION_SMUDGE_AMOUNT NORMAL_MAP_MULT DEFERRED_SSR_QUALITY FORWARD_SSR_QUALITY RAINBOW_TIME RAINBOW RAINBOW_DISTANCE RAINBOW_BRIGHTNESS VORTEX_LIGHT_COL_R VORTEX_LIGHT_COL_G VORTEX_LIGHT_COL_B END_LIGHTNING_COL_R END_LIGHTNING_COL_G END_LIGHTNING_COL_B END_HAZE_DENSTIY NETHER_CEILING_SMOKE_DENSITY NETHER_HAZE_DENSITY Max_Filter_Depth_END Min_Shadow_Filter_Radius_END MOON_TIME_OFFSET EARTH_ROTATION_TILT CUSTOM_SHADOWS_QUALITY MOON_LATITUDE MOON_SIZE_SETTING MONTH_LENGTH LIGHTNING_SHADOWS WHITE_BALANCE STARS_BRIGHTNESS STARS_AMOUNT AmbientLightEnd_R AmbientLightEnd_G AmbientLightEnd_B CloudLayer0_distance CloudLayer1_distance CloudLayer2_distance CloudLayer3_distance BLEND_FACTOR_DURING_MOVEMENT CloudLayer0_detail CloudLayer1_detail MIN_LIGHT_AMOUNT_INSIDE CUMULONIMBUS_FADE_TIME CUMULONIMBUS NOISE_RESOLUTION NOISE_INTENSITY NOISE_DROPOFF WAVE_DETAIL DH_CHUNK_FADING CLOUD_MOVEMENT_TYPE LIGHTLEAKFIX_MODE EMISSIVE_ORES_STRENGTH RIPPLE_STRENGTH RIPPLE_INTENSITY CUSTOM_LIGHTNING_SCALE CUSTOM_LIGHTNING_R CUSTOM_LIGHTNING_G CUSTOM_LIGHTNING_B CUSTOM_LIGHTNING_TEX CUSTOM_LIGHTNING_POS_X CUSTOM_LIGHTNING_POS_Y CUSTOM_LIGHTNING_POS_Z CUMULONIMBUS_LIGHTNING_BRIGHTNESS CUMULONIMBUS_LIGHTNING_DELAY ShaderSnow ShaderSnowStrength BorderFogIntensity CAVE_DETECTION ON_FIRE_DISTORT_EFFECT_STRENGTH USE_CUSTOM_SKY_GROUND_LIGHTING_COLORS DIRECTLIGHT_DIFFUSE_R DIRECTLIGHT_DIFFUSE_G DIRECTLIGHT_DIFFUSE_B INDIRECTLIGHT_DIFFUSE_R INDIRECTLIGHT_DIFFUSE_G INDIRECTLIGHT_DIFFUSE_B DIRECTLIGHT_CLOUDS_R DIRECTLIGHT_CLOUDS_G DIRECTLIGHT_CLOUDS_B INDIRECTLIGHT_CLOUDS_R INDIRECTLIGHT_CLOUDS_G INDIRECTLIGHT_CLOUDS_B DIRECTLIGHT_FOG_R DIRECTLIGHT_FOG_G DIRECTLIGHT_FOG_B INDIRECTLIGHT_FOG_R INDIRECTLIGHT_FOG_G INDIRECTLIGHT_FOG_B SKY_GROUND_R SKY_GROUND_G SKY_GROUND_B DOF_DISPERSION_MULT FLASHLIGHT_BRIGHTNESS_MULT FLASHLIGHT_BRIGHTNESS_FALLOFF_MULT FLASHLIGHT_RANGE FLASHLIGHT_SIZE FLASHLIGHT_R FLASHLIGHT_G FLASHLIGHT_B LOW_HEALTH_EFFECT_START CRITICALLY_LOW_HEALTH_EFFECT_START CloudLayer2_scale CloudLayer0_scale CloudLayer1_scale CloudLayer3_scale CloudLayer0_tallness CloudLayer1_tallness EXPOSURE_DARKENING EXPOSURE_BRIGHTENING VIGNETTE_STRENGTH CURVATURE_AMOUNT MINIMUM_WATER_ABSORBANCE CHROMATIC_ABERRATION_STRENGTH SELECT_BOX_COL_R SELECT_BOX_COL_G SELECT_BOX_COL_B LPV_VL_FOG_ILLUMINATION_BRIGHTNESS minRayMarchSteps MOTION_BLUR_STRENGTH OVERDRAW_MAX_DISTANCE DAY0_l3_coverage DAY0_l3_density DAY1_l3_coverage DAY1_l3_density DAY2_l3_coverage DAY2_l3_density DAY3_l3_coverage DAY3_l3_density DAY4_l3_coverage DAY4_l3_density DAY5_l3_coverage DAY5_l3_density DAY6_l3_coverage DAY6_l3_density DAY7_l3_coverage DAY7_l3_density DAY8_l3_coverage DAY8_l3_density DAY9_l3_coverage DAY9_l3_density DAY0_l0_coverage DAY0_l1_coverage DAY0_l2_coverage DAY0_ufog_density DAY0_l0_density DAY0_l1_density DAY0_l2_density DAY0_cfog_density DAY1_l0_coverage DAY1_l1_coverage DAY1_l2_coverage DAY1_ufog_density DAY1_l0_density DAY1_l1_density DAY1_l2_density DAY1_cfog_density DAY2_l0_coverage DAY2_l1_coverage DAY2_l2_coverage DAY2_ufog_density DAY2_l0_density DAY2_l1_density DAY2_l2_density DAY2_cfog_density DAY3_l0_coverage DAY3_l1_coverage DAY3_l2_coverage DAY3_ufog_density DAY3_l0_density DAY3_l1_density DAY3_l2_density DAY3_cfog_density DAY4_l0_coverage DAY4_l1_coverage DAY4_l2_coverage DAY4_ufog_density DAY4_l0_density DAY4_l1_density DAY4_l2_density DAY4_cfog_density DAY5_l0_coverage DAY5_l1_coverage DAY5_l2_coverage DAY5_ufog_density DAY5_l0_density DAY5_l1_density DAY5_l2_density DAY5_cfog_density DAY6_l0_coverage DAY6_l1_coverage DAY6_l2_coverage DAY6_ufog_density DAY6_l0_density DAY6_l1_density DAY6_l2_density DAY6_cfog_density DAY7_l0_coverage DAY7_l1_coverage DAY7_l2_coverage DAY7_ufog_density DAY7_l0_density DAY7_l1_density DAY7_l2_density DAY7_cfog_density DAY8_l0_coverage DAY8_l1_coverage DAY8_l2_coverage DAY8_ufog_density DAY8_l0_density DAY8_l1_density DAY8_l2_density DAY8_cfog_density DAY9_l0_coverage DAY9_l1_coverage DAY9_l2_coverage DAY9_ufog_density DAY9_l0_density DAY9_l1_density DAY9_l2_density DAY9_cfog_density sss_density_multiplier sss_absorbance_multiplier MOTION_AMOUNT TONEMAP WATER_WAVE_SPEED WATER_CAUSTICS_BRIGHTNESS WATER_CAUSTICS_POWER DEBUG_VIEW entityShadowDistanceMul HANDHELD_LIGHT_RANGE CLOUD_SHADOW_AMOUNT CloudLayer0_coverage CloudLayer0_density CloudLayer0_height CloudLayer1_coverage CloudLayer1_density CloudLayer1_height CloudLayer2_coverage CloudLayer2_density CloudLayer2_height CloudLayer3_coverage CloudLayer3_density CloudLayer3_height PLANET_GROUND_BRIGHTNESS FOG_START_HEIGHT WATER_WAVE_STRENGTH SWAMP_UNIFORM_DENSITY SWAMP_CLOUDY_DENSITY SWAMP_R SWAMP_G SWAMP_B JUNGLE_UNIFORM_DENSITY JUNGLE_CLOUDY_DENSITY JUNGLE_R JUNGLE_G JUNGLE_B DARKFOREST_UNIFORM_DENSITY DARKFOREST_CLOUDY_DENSITY DARKFOREST_R DARKFOREST_G DARKFOREST_B NETHER_PLUME_DENSITY END_STORM_DENSTIY LIT_PARTICLE_BRIGHTNESS UPPER_CURVE LOWER_CURVE EMISSIVE_TYPE_SETTING SCALE_FACTOR ambientsss_brightness SSS_TYPE_SETTING Cloud_Speed Cloud_Speed_Rain Cloud_Speed_Thunder ORB_ColMult ORB_X ORB_Y ORB_Z ORB_R ORB_G ORB_B TOD_Fog_mult Morning_Uniform_Fog Noon_Uniform_Fog Evening_Uniform_Fog Night_Uniform_Fog Morning_Cloudy_Fog Noon_Cloudy_Fog Evening_Cloudy_Fog Night_Cloudy_Fog Summer_Leaf_R Summer_Leaf_G Summer_Leaf_B Fall_Leaf_R Fall_Leaf_G Fall_Leaf_B Winter_Leaf_R Winter_Leaf_G Winter_Leaf_B Spring_Leaf_R Spring_Leaf_G Spring_Leaf_B Summer_R Summer_G Summer_B Fall_R Fall_G Fall_B Winter_R Winter_G Winter_B Spring_R Spring_G Spring_B Season_Length CaveFogFallOff CaveFogColor_R CaveFogColor_G CaveFogColor_B indirect_effect GI_Strength ambient_brightness AmbientLightRain_R AmbientLightRain_G AmbientLightRain_B AmbientLight_R AmbientLight_G AmbientLight_B Rain_coverage Thunder_coverage Moon_temp Haze_amount RainFog_amount Sun_temp Puddle_Size Puddle_Reflection_Sharpness LabSSS_Curve Emissive_Curve Emissive_Brightness AO_Strength BLOOMY_FOG WAVY_SPEED WAVY_STRENGTH BLOOM_STRENGTH shadowDistance Sky_Brightness fog_coefficientMieR fog_coefficientMieG fog_coefficientMieB sun_illuminance sunColorG sunColorB sunColorR sky_mieg sky_coefficientMieB sky_coefficientMieG sky_coefficientMieR sky_coefficientRayleighB sky_coefficientRayleighG sky_coefficientRayleighR CLOUDS_QUALITY EXPOSURE_MULTIPLIER MIN_LIGHT_AMOUNT TORCH_R TORCH_G TORCH_B TORCH_AMOUNT shadowMapResolution sunPathRotation BLEND_FACTOR VL_SAMPLES Exposure_Speed POM_DEPTH MAX_ITERATIONS MAX_DIST ambientOcclusionLevel SEA_LEVEL moon_illuminance moonColorR moonColorG moonColorB fog_coefficientRayleighR fog_coefficientRayleighG SATURATION Manual_exposure_value focal fstop MANUAL_FOCUS SHADOW_FILTER_SAMPLE_COUNT Max_Filter_Depth VPS_Search_Samples Min_Shadow_Filter_Radius Max_Shadow_Filter_Radius Water_Top_Layer fog_coefficientRayleighB SHARPENING rayMarchSampleCount Dirt_Amount Dirt_Scatter_R Dirt_Scatter_G Dirt_Scatter_B Dirt_Absorb_R Dirt_Absorb_G Dirt_Absorb_B Water_Absorb_R Water_Absorb_G Water_Absorb_B Purkinje_strength Purkinje_strength Purkinje_R Purkinje_G Purkinje_B DoF_Adaptation_Speed Purkinje_Multiplier CROSSTALK VL_RENDER_SCALE BLOOM_QUALITY VL_RENDER_SCALE RAY_COUNT STEPS STEP_LENGTH cloud_LevelOfDetail cloud_ShadowLevelOfDetail cloud_LevelOfDetailLQ cloud_ShadowLevelOfDetailLQ minRayMarchSteps maxRayMarchSteps minRayMarchStepsLQ maxRayMarchStepsLQ fbmAmount fbmPower1 fbmPower2 ROUGHNESS_THRESHOLD SUN_SPECULAR_MULT reflection_quality DOF_QUALITY DOF_ANAMORPHIC_RATIO AEROCHROME_PINKNESS DOF_JITTER_FOCUS JITTER_STRENGTH SHADOWS_GRADE_R MIDS_GRADE_R HIGHLIGHTS_GRADE_R SHADOWS_GRADE_G MIDS_GRADE_G HIGHLIGHTS_GRADE_G SHADOWS_GRADE_B MIDS_GRADE_B HIGHLIGHTS_GRADE_B SHADOWS_GRADE_MUL MIDS_GRADE_MUL HIGHLIGHTS_GRADE_MUL LPV_SATURATION LPV_TINT_SATURATION LPV_NORMAL_STRENGTH screen.columns=2 screen = \ SHADER_VERSION_LABEL \ - \ + \ [Direct_Light] [World] \ [Ambient_light] [Fog] \ [Post_Processing] [Clouds] \ @@ -334,7 +359,7 @@ SHADER_VERSION_LABEL \ screen.Foliage = WAVY_PLANTS WAVY_STRENGTH \ WAVY_SPEED \ \ - SHADER_GRASS GRASS_QUALITY \ + SHADER_GRASS_SETTING GRASS_QUALITY \ GRASS_DENSITY GRASS_RANGE \ REPLACE_SHORT_GRASS GRASS_WAVY_STRENGTH \ GRASS_BASE_THICKNESS GRASS_THICKNESS_FALLOFF \ @@ -527,7 +552,7 @@ SHADER_VERSION_LABEL \ ######## MOD SUPPORT SETTINGS screen.Mod_support = [DISTANT_HORIZONS_SETTINGS] [PHYSICS_MOD_OCEAN] [VOXY_SETTINGS] CAELUM_SUPPORT [PHOTONICS_SETTINGS] screen.PHOTONICS_SETTINGS.columns = 1 - screen.PHOTONICS_SETTINGS = PHOTONICS_ENABLED PHOTONICS_INDIRECT_BRIGHTNESS PHOTONICS_GI_ONLY PHOTONICS_FLOODFILL_FOG_LIGHT_PROPAGATION + screen.PHOTONICS_SETTINGS = PHOTONICS_ACTIVE PHOTONICS_MAX_SAMPLES PHOTONICS_MAX_LIGHTS PHOTONICS_INDIRECT_BRIGHTNESS PHOTONICS_ALPHA_MODE PHOTONICS_FLOODFILL_FOG_LIGHT_PROPAGATION VOXEL_REFLECTIONS MIRROR_IRON VOXEL_REFLECTIONS_FOG VOXEL_REFLECTIONS_LPV_FOG screen.DISTANT_HORIZONS_SETTINGS.columns = 1 screen.DISTANT_HORIZONS_SETTINGS = DH_OVERDRAW_PREVENTION OVERDRAW_MAX_DISTANCE DH_CHUNK_FADING DH_AMBIENT_OCCLUSION DH_SUBSURFACE_SCATTERING DH_SCREENSPACE_REFLECTIONS DH_TAA_JITTER DH_NOISE_TEXTURE NOISE_RESOLUTION NOISE_INTENSITY NOISE_DROPOFF DISTANT_HORIZONS_SHADOWMAP shadowDistance shadowMapResolution TOGGLE_VL_FOG VOLUMETRIC_CLOUDS @@ -540,7 +565,7 @@ SHADER_VERSION_LABEL \ screen.Misc_Settings = [EXPERIMENTAL_STUFF] [DEBUG_STUFF] [LEGACY_STUFF] TRANSLUCENT_ENTITIES [selection_box_outline] [scene_controller] AEROCHROME_MODE AEROCHROME_PINKNESS AEROCHROME_WOOL_ENABLED screen.EXPERIMENTAL_STUFF.columns = 2 - screen.EXPERIMENTAL_STUFF = BLOOMY_PARTICLES BIOME_TINT_WATER HYPER_DETAILED_WAVES LIT_PARTICLE_BRIGHTNESS WATER_CAUSTICS_BRIGHTNESS WATER_CAUSTICS_POWER FORCE_TRANSLUCENT_GLASS LARGE_WAVE_DISPLACEMENT VANILLA_LIKE_WATER PIXELATED PIXELIZATION_STRENGTH MAX_COLORS_PER_CHANNEL HARDCODED_EMISSIVES_APPROX TRANSLUCENT_ENTITIES_DITHER_FALLBACK ENCHANT_GLINT_BRIGHTNESS LPV_VL_FOG_ILLUMINATION_HANDHELD WAVING_MULTIPART_GRASS + screen.EXPERIMENTAL_STUFF = BLOOMY_PARTICLES BIOME_TINT_WATER HYPER_DETAILED_WAVES LIT_PARTICLE_BRIGHTNESS WATER_CAUSTICS_BRIGHTNESS WATER_CAUSTICS_POWER FORCE_TRANSLUCENT_GLASS LARGE_WAVE_DISPLACEMENT VANILLA_LIKE_WATER PIXELATED PIXELIZATION_STRENGTH MAX_COLORS_PER_CHANNEL HARDCODED_EMISSIVES_APPROX TRANSLUCENT_ENTITIES_DITHER_FALLBACK ENCHANT_GLINT_BRIGHTNESS LPV_VL_FOG_ILLUMINATION_HANDHELD WAVING_MULTIPART_GRASS SHADER_GRASS_UNSUPPORTED_FIX screen.DEBUG_STUFF.columns = 2 screen.DEBUG_STUFF = [the_end_orb] DEBUG_VIEW display_LUT WhiteWorld SSS_view AMBIENT_LIGHT_ONLY LIGHTNING_FLASH DISABLE_ENCHANT_GLINT DISABLE_VANILLA_EMISSIVES PARTICLE_RENDERING_FIX ISOLATE_RESOURCEPACK_SKY CAVE_DETECTION @@ -955,9 +980,23 @@ uniform.int.dhVoxyRenderDistance = dhRenderDistance #endif -############################### -####### FLOODFILL STUFF ####### -############################### +################################# +####### VOXEL BASED STUFF ####### +################################# + +### #if defined VOXEL_REFLECTIONS +### +### bufferObject.5 = 1610612736 +### #if LPV_SIZE == 8 +### image.imgQuarterVoxelMask = none RED_INTEGER R8UI UNSIGNED_BYTE true false 64 64 64 +### #elif LPV_SIZE == 7 +### image.imgQuarterVoxelMask = none RED_INTEGER R8UI UNSIGNED_BYTE true false 32 32 32 +### #else +### image.imgQuarterVoxelMask = none RED_INTEGER R8UI UNSIGNED_BYTE true false 16 16 16 +### #endif +### +### customTexture.gtexture=minecraft:textures/atlas/blocks.png +### #endif #if defined LPV_ENABLED || (WATER_INTERACTION == 2 && IRIS_VERSION < 11004) || (defined SHADER_GRASS && (defined GRASS_DETECT_FALLOFF || defined GRASS_DETECT_INV_FALLOFF || REPLACE_SHORT_GRASS > 0)) image.imgBlockData = texBlockData RG_INTEGER RG32UI UNSIGNED_INT false false 2048 @@ -981,9 +1020,13 @@ uniform.int.dhVoxyRenderDistance = dhRenderDistance program.world-1/shadowcomp.enabled = false #endif #else - program.world1/setup.enabled = false - program.world0/setup.enabled = false - program.world-1/setup.enabled = false + #if defined PHOTONICS && defined PHOTONICS_ACTIVE && !defined ENABLE_PHOTONICS_HANDHELD + image.imgBlockData = texBlockData RG_INTEGER RG32UI UNSIGNED_INT false false 2048 + #else + program.world1/setup.enabled = false + program.world0/setup.enabled = false + program.world-1/setup.enabled = false + #endif #ifndef END_ISLAND_LIGHT program.world1/shadow.enabled = false @@ -996,7 +1039,7 @@ uniform.int.dhVoxyRenderDistance = dhRenderDistance program.world-1/shadowcomp.enabled = false #endif -bufferObject.6 = 1024 +bufferObject.4 = 1024 #if defined CUSTOM_MOON_ROTATION customTexture.CoronaTex = texture/corona.png