From c4b51fcf9ac04aff7df8897137aa0eaf449c0ddc Mon Sep 17 00:00:00 2001 From: NULL511 Date: Wed, 1 May 2024 13:40:52 -0400 Subject: [PATCH 01/22] floodfill voxel mask --- shaders/lib/lpv_common.glsl | 11 +++++++++++ shaders/lib/lpv_write.glsl | 5 +++++ shaders/lib/settings.glsl | 12 ++++++++++++ shaders/shaders.properties | 25 +++++++++++++++++++++++- shaders/world0/shadow.vsh | 38 ++++++++++++++++++++++++++----------- 5 files changed, 79 insertions(+), 12 deletions(-) create mode 100644 shaders/lib/lpv_common.glsl create mode 100644 shaders/lib/lpv_write.glsl diff --git a/shaders/lib/lpv_common.glsl b/shaders/lib/lpv_common.glsl new file mode 100644 index 0000000..f597b3b --- /dev/null +++ b/shaders/lib/lpv_common.glsl @@ -0,0 +1,11 @@ +const uint LpvSize = uint(exp2(LPV_SIZE)); + +layout(r16ui) uniform uimage3D imgVoxelMask; + +// #if defined RENDER_SHADOWCOMP || defined RENDER_GBUFFER +// layout(r16ui) uniform uimage2D imgVoxelMask; +// #elif defined RENDER_BEGIN || defined RENDER_GEOMETRY || defined RENDER_VERTEX +// layout(r16ui) uniform writeonly uimage2D imgVoxelMask; +// #else +// layout(r16ui) uniform readonly uimage2D imgVoxelMask; +// #endif diff --git a/shaders/lib/lpv_write.glsl b/shaders/lib/lpv_write.glsl new file mode 100644 index 0000000..3f48e83 --- /dev/null +++ b/shaders/lib/lpv_write.glsl @@ -0,0 +1,5 @@ +void SetVoxelBlock(const in vec3 playerPos, const in uint blockId) { + vec3 cameraOffset = fract(cameraPosition); + ivec3 voxelPos = ivec3(floor(playerPos + cameraOffset + LpvSize/2u)); + imageStore(imgVoxelMask, voxelPos, uvec4(blockId)); +} diff --git a/shaders/lib/settings.glsl b/shaders/lib/settings.glsl index da90382..b5cef8c 100644 --- a/shaders/lib/settings.glsl +++ b/shaders/lib/settings.glsl @@ -669,6 +669,18 @@ const vec3 aerochrome_color = mix(vec3(1.0, 0.0, 0.0), vec3(0.715, 0.303, 0.631) #define DH_KNOWN_ISSUES 0 // [0 1 2 3 4 5] +/////////////////////////////////////////// +// ----- DISTANT HORIZONS SETTINGS ----- // +/////////////////////////////////////////// + +#define LPV_ENABLED +#define LPV_SIZE 7 // [6 7 8] + +#if defined LPV_ENABLED && defined IRIS_FEATURE_CUSTOM_IMAGES + #define IS_LPV_ENABLED +#endif + + //////////////////////////////// // ----- DEBUG SETTINGS ----- // //////////////////////////////// diff --git a/shaders/shaders.properties b/shaders/shaders.properties index fa38741..a2d01b0 100644 --- a/shaders/shaders.properties +++ b/shaders/shaders.properties @@ -8,6 +8,8 @@ separateAo = true rain.depth = false beacon.beam.depth = true +iris.features.optional=ENTITY_TRANSLUCENT REVERSED_CULLING COMPUTE_SHADERS CUSTOM_IMAGES + #if RESOURCEPACK_SKY == 2 sun=true moon=true @@ -602,4 +604,25 @@ variable.float.shSunZ = (shadowModelView.0.2 * wSunX + shadowModelView.1.2 * wSu uniform.vec3.shadowLightVec = vec3(lightSign*shSunX, lightSign*shSunY, lightSign*shSunZ) -uniform.float.shadowMaxProj = 150.0/abs(sunPosY) \ No newline at end of file +uniform.float.shadowMaxProj = 150.0/abs(sunPosY) + + +############################### +####### FLOODFILL STUFF ####### +############################### + +#if defined LPV_ENABLED && defined IRIS_FEATURE_CUSTOM_IMAGES + #if LPV_SIZE == 8 + image.imgVoxelMask=none RED_INTEGER R16UI UNSIGNED_SHORT true false 256 256 256 + image.imgLpv1=none RGBA RGBA8 BYTE false false 256 256 256 + image.imgLpv2=none RGBA RGBA8 BYTE false false 256 256 256 + #elif LPV_SIZE == 7 + image.imgVoxelMask=none RED_INTEGER R16UI UNSIGNED_SHORT true false 128 128 128 + image.imgLpv1=none RGBA RGBA8 BYTE false false 128 128 128 + image.imgLpv2=none RGBA RGBA8 BYTE false false 128 128 128 + #elif LPV_SIZE == 6 + image.imgVoxelMask=none RED_INTEGER R16UI UNSIGNED_SHORT true false 64 64 64 + image.imgLpv1=none RGBA RGBA8 BYTE false false 64 64 64 + image.imgLpv2=none RGBA RGBA8 BYTE false false 64 64 64 + #endif +#endif diff --git a/shaders/world0/shadow.vsh b/shaders/world0/shadow.vsh index c8c26ef..5d04f81 100644 --- a/shaders/world0/shadow.vsh +++ b/shaders/world0/shadow.vsh @@ -1,5 +1,8 @@ #version 120 #include "/lib/settings.glsl" +#ifdef IS_LPV_ENABLED + #extension GL_EXT_shader_image_load_store: enable +#endif @@ -46,6 +49,11 @@ uniform int entityId; #include "/lib/Shadow_Params.glsl" #include "/lib/bokeh.glsl" +#ifdef IS_LPV_ENABLED + #include "/lib/lpv_common.glsl" + #include "/lib/lpv_write.glsl" +#endif + const float PI48 = 150.796447372*WAVY_SPEED; float pi2wt = PI48*frameTimeCounter; @@ -170,18 +178,26 @@ void main() { // } // #endif + uint blockId = uint(mc_Entity.x + 0.5); + + #if defined IS_LPV_ENABLED || defined WAVY_PLANTS + vec3 playerpos = mat3(shadowModelViewInverse) * position + shadowModelViewInverse[3].xyz; + #endif + + #if defined IS_LPV_ENABLED && defined MC_GL_EXT_shader_image_load_store + SetVoxelBlock(playerpos, blockId); + #endif + #ifdef WAVY_PLANTS bool istopv = gl_MultiTexCoord0.t < mc_midTexCoord.t; - if ((mc_Entity.x == 10001 || mc_Entity.x == 10009 && istopv) && length(position.xy) < 24.0) { - vec3 worldpos = mat3(shadowModelViewInverse) * position + shadowModelViewInverse[3].xyz; - worldpos.xyz += calcMovePlants(worldpos.xyz + cameraPosition)*gl_MultiTexCoord1.y; - position = mat3(shadowModelView) * worldpos + shadowModelView[3].xyz ; + if ((blockId == 10001u || blockId == 10009u && istopv) && length(position.xy) < 24.0) { + playerpos += calcMovePlants(playerpos + cameraPosition)*gl_MultiTexCoord1.y; + position = mat3(shadowModelView) * playerpos + shadowModelView[3].xyz; } - if (mc_Entity.x == 10003 && length(position.xy) < 24.0) { - vec3 worldpos = mat3(shadowModelViewInverse) * position + shadowModelViewInverse[3].xyz; - worldpos.xyz += calcMoveLeaves(worldpos.xyz + cameraPosition, 0.0040, 0.0064, 0.0043, 0.0035, 0.0037, 0.0041, vec3(1.0,0.2,1.0), vec3(0.5,0.1,0.5))*gl_MultiTexCoord1.y; - position = mat3(shadowModelView) * worldpos + shadowModelView[3].xyz ; + if (blockId == 10003u && length(position.xy) < 24.0) { + playerpos += calcMoveLeaves(playerpos + cameraPosition, 0.0040, 0.0064, 0.0043, 0.0035, 0.0037, 0.0041, vec3(1.0,0.2,1.0), vec3(0.5,0.1,0.5))*gl_MultiTexCoord1.y; + position = mat3(shadowModelView) * playerpos + shadowModelView[3].xyz; } #endif @@ -193,13 +209,13 @@ void main() { - if(mc_Entity.x == 8 ) gl_Position.w = -1.0; + if (blockId == 8u) gl_Position.w = -1.0; // color.a = 1.0; - // if(mc_Entity.x != 10002) color.a = 0.0; + // if(blockId != 10002) color.a = 0.0; // materials = 0.0; - // if(mc_Entity.x == 8) materials = 1.0; + // if(blockId == 8) materials = 1.0; /// this is to ease the shadow acne on big fat entities like ghasts. From 2f6b51bbff978d654c8cf3e19e59b7b1a9ca2cfe Mon Sep 17 00:00:00 2001 From: NULL511 Date: Wed, 1 May 2024 16:32:25 -0400 Subject: [PATCH 02/22] floodfill propagation --- shaders/lib/blocks.glsl | 790 ++++++++++++++++++ shaders/lib/hsv.glsl | 17 + shaders/lib/lpv_blocks.glsl | 29 + shaders/lib/lpv_common.glsl | 8 +- shaders/lib/voxel_common.glsl | 6 + shaders/lib/voxel_read.glsl | 12 + .../lib/{lpv_write.glsl => voxel_write.glsl} | 4 +- shaders/shaders.properties | 22 +- shaders/world0/shadow.vsh | 5 +- shaders/world0/shadowcomp.csh | 204 +++++ 10 files changed, 1083 insertions(+), 14 deletions(-) create mode 100644 shaders/lib/blocks.glsl create mode 100644 shaders/lib/hsv.glsl create mode 100644 shaders/lib/lpv_blocks.glsl create mode 100644 shaders/lib/voxel_common.glsl create mode 100644 shaders/lib/voxel_read.glsl rename shaders/lib/{lpv_write.glsl => voxel_write.glsl} (59%) create mode 100644 shaders/world0/shadowcomp.csh diff --git a/shaders/lib/blocks.glsl b/shaders/lib/blocks.glsl new file mode 100644 index 0000000..32db8cf --- /dev/null +++ b/shaders/lib/blocks.glsl @@ -0,0 +1,790 @@ +#define BLOCK_WATER 10 +#define BLOCK_ALLIUM 100 +#define BLOCK_AZALEA 101 +#define BLOCK_AZURE_BLUET 102 +#define BLOCK_BAMBOO 103 +#define BLOCK_BEETROOTS 104 +#define BLOCK_BIG_DRIPLEAF 105 +#define BLOCK_BIG_DRIPLEAF_STEM 106 +#define BLOCK_BLUE_ORCHID 107 +#define BLOCK_BROWN_MUSHROOM_PLANT 108 +#define BLOCK_CARROTS 109 +#define BLOCK_CAVE_VINE 110 +#define BLOCK_CHORUS_FLOWER 111 +#define BLOCK_CORNFLOWER 112 +#define BLOCK_CRIMSON_FUNGUS 113 +#define BLOCK_CRIMSON_ROOTS 114 +#define BLOCK_DANDELION 115 +#define BLOCK_DEAD_BUSH 116 +#define BLOCK_FERN 117 +#define BLOCK_GRASS 118 +#define BLOCK_HANGING_ROOTS 119 +#define BLOCK_KELP 120 +#define BLOCK_LARGE_FERN_LOWER 121 +#define BLOCK_LARGE_FERN_UPPER 122 +#define BLOCK_LILAC_LOWER 123 +#define BLOCK_LILAC_UPPER 124 +#define BLOCK_LILY_OF_THE_VALLEY 125 +#define BLOCK_LILY_PAD 126 +#define BLOCK_MANGROVE_PROPAGULE 127 +#define BLOCK_NETHER_SPROUTS 128 +#define BLOCK_NETHER_WART 129 +#define BLOCK_OXEYE_DAISY 130 +#define BLOCK_PEONY_LOWER 131 +#define BLOCK_PEONY_UPPER 132 +#define BLOCK_PINK_PETALS 133 +#define BLOCK_PITCHER_CROP 134 +#define BLOCK_PITCHER_PLANT 135 +#define BLOCK_POPPY 136 +#define BLOCK_POTATOES 137 +#define BLOCK_RED_MUSHROOM_PLANT 138 +#define BLOCK_ROSE_BUSH_LOWER 139 +#define BLOCK_ROSE_BUSH_UPPER 140 +#define BLOCK_SAPLING 141 +#define BLOCK_SCULK_VEIN 142 +#define BLOCK_SEA_PICKLE_DRY_1 143 +#define BLOCK_SEA_PICKLE_DRY_2 144 +#define BLOCK_SEA_PICKLE_DRY_3 145 +#define BLOCK_SEA_PICKLE_DRY_4 146 +#define BLOCK_SEAGRASS 147 +#define BLOCK_SMALL_DRIPLEAF 148 +#define BLOCK_SPORE_BLOSSOM 149 +#define BLOCK_SUGAR_CANE 150 +#define BLOCK_SUNFLOWER_LOWER 151 +#define BLOCK_SUNFLOWER_UPPER 152 +#define BLOCK_SWEET_BERRY_BUSH 153 +#define BLOCK_TALL_GRASS_LOWER 154 +#define BLOCK_TALL_GRASS_UPPER 155 +#define BLOCK_TORCHFLOWER 156 +#define BLOCK_TULIP 157 +#define BLOCK_TWISTING_VINES 158 +#define BLOCK_VINE 159 +#define BLOCK_WARPED_FUNGUS 160 +#define BLOCK_WARPED_ROOTS 161 +#define BLOCK_WEEPING_VINES 162 +#define BLOCK_WHEAT 163 +#define BLOCK_WITHER_ROSE 164 +#define BLOCK_MUSHROOM_SPORES 165 +#define BLOCK_AMETHYST 200 +#define BLOCK_AMETHYST_BUD_LARGE 201 +#define BLOCK_AMETHYST_BUD_MEDIUM 202 +#define BLOCK_AMETHYST_BUD_SMALL 203 +#define BLOCK_AMETHYST_CLUSTER 204 +#define BLOCK_BEACON 205 +#define BLOCK_BLAST_FURNACE_LIT_N 206 +#define BLOCK_BLAST_FURNACE_LIT_E 207 +#define BLOCK_BLAST_FURNACE_LIT_S 208 +#define BLOCK_BLAST_FURNACE_LIT_W 209 +#define BLOCK_BREWING_STAND 210 +#define BLOCK_CAMPFIRE_LIT_N_S 211 +#define BLOCK_CAMPFIRE_LIT_W_E 212 +#define BLOCK_CAVEVINE_BERRIES 213 +#define BLOCK_COMPARATOR_LIT 214 +#define BLOCK_COPPER_BULB_LIT 215 +#define BLOCK_COPPER_BULB_EXPOSED_LIT 216 +#define BLOCK_COPPER_BULB_OXIDIZED_LIT 217 +#define BLOCK_COPPER_BULB_WEATHERED_LIT 218 +#define BLOCK_CRYING_OBSIDIAN 219 +#define BLOCK_DIAMOND 220 +#define BLOCK_EMERALD 221 +#define BLOCK_END_ROD 222 +#define BLOCK_FIRE 223 +#define BLOCK_FROGLIGHT_OCHRE 224 +#define BLOCK_FROGLIGHT_PEARLESCENT 225 +#define BLOCK_FROGLIGHT_VERDANT 226 +#define BLOCK_FURNACE_LIT_N 227 +#define BLOCK_FURNACE_LIT_E 228 +#define BLOCK_FURNACE_LIT_S 229 +#define BLOCK_FURNACE_LIT_W 230 +#define BLOCK_GLOWSTONE 231 +#define BLOCK_GLOW_LICHEN 232 +#define BLOCK_LAPIS 233 +#define BLOCK_JACK_O_LANTERN_N 234 +#define BLOCK_JACK_O_LANTERN_E 235 +#define BLOCK_JACK_O_LANTERN_S 236 +#define BLOCK_JACK_O_LANTERN_W 237 +#define BLOCK_LANTERN_CEIL 238 +#define BLOCK_LANTERN_FLOOR 239 +#define BLOCK_LAVA 240 +#define BLOCK_LIGHT_1 241 +#define BLOCK_LIGHT_2 242 +#define BLOCK_LIGHT_3 243 +#define BLOCK_LIGHT_4 244 +#define BLOCK_LIGHT_5 245 +#define BLOCK_LIGHT_6 246 +#define BLOCK_LIGHT_7 247 +#define BLOCK_LIGHT_8 248 +#define BLOCK_LIGHT_9 249 +#define BLOCK_LIGHT_10 250 +#define BLOCK_LIGHT_11 251 +#define BLOCK_LIGHT_12 252 +#define BLOCK_LIGHT_13 253 +#define BLOCK_LIGHT_14 254 +#define BLOCK_LIGHT_15 255 +#define BLOCK_LIGHTING_ROD_POWERED 256 +#define BLOCK_MAGMA 257 +#define BLOCK_NETHER_PORTAL 258 +#define BLOCK_RAIL_POWERED 259 +#define BLOCK_REDSTONE 260 +#define BLOCK_REDSTONE_ILLUMINATOR_14 261 +#define BLOCK_REDSTONE_ILLUMINATOR_13 262 +#define BLOCK_REDSTONE_ILLUMINATOR_12 263 +#define BLOCK_REDSTONE_ILLUMINATOR_11 264 +#define BLOCK_REDSTONE_ILLUMINATOR_10 265 +#define BLOCK_REDSTONE_ILLUMINATOR_9 266 +#define BLOCK_REDSTONE_ILLUMINATOR_8 267 +#define BLOCK_REDSTONE_ILLUMINATOR_7 268 +#define BLOCK_REDSTONE_ILLUMINATOR_6 269 +#define BLOCK_REDSTONE_ILLUMINATOR_5 270 +#define BLOCK_REDSTONE_ILLUMINATOR_4 271 +#define BLOCK_REDSTONE_ILLUMINATOR_3 272 +#define BLOCK_REDSTONE_ILLUMINATOR_2 273 +#define BLOCK_REDSTONE_ILLUMINATOR_1 274 +#define BLOCK_REDSTONE_ILLUMINATOR_0 275 +#define BLOCK_REDSTONE_LAMP_LIT 276 +#define BLOCK_REDSTONE_ORE_LIT 277 +#define BLOCK_REDSTONE_TORCH_FLOOR_LIT 278 +#define BLOCK_REDSTONE_TORCH_WALL_N_LIT 279 +#define BLOCK_REDSTONE_TORCH_WALL_E_LIT 280 +#define BLOCK_REDSTONE_TORCH_WALL_S_LIT 281 +#define BLOCK_REDSTONE_TORCH_WALL_W_LIT 282 +#define BLOCK_REDSTONE_WIRE_1 283 +#define BLOCK_REDSTONE_WIRE_2 284 +#define BLOCK_REDSTONE_WIRE_3 285 +#define BLOCK_REDSTONE_WIRE_4 286 +#define BLOCK_REDSTONE_WIRE_5 287 +#define BLOCK_REDSTONE_WIRE_6 288 +#define BLOCK_REDSTONE_WIRE_7 289 +#define BLOCK_REDSTONE_WIRE_8 290 +#define BLOCK_REDSTONE_WIRE_9 291 +#define BLOCK_REDSTONE_WIRE_10 292 +#define BLOCK_REDSTONE_WIRE_11 293 +#define BLOCK_REDSTONE_WIRE_12 294 +#define BLOCK_REDSTONE_WIRE_13 295 +#define BLOCK_REDSTONE_WIRE_14 296 +#define BLOCK_REDSTONE_WIRE_15 297 +#define BLOCK_REPEATER_LIT 298 +#define BLOCK_RESPAWN_ANCHOR_4 299 +#define BLOCK_RESPAWN_ANCHOR_3 300 +#define BLOCK_RESPAWN_ANCHOR_2 301 +#define BLOCK_RESPAWN_ANCHOR_1 302 +#define BLOCK_SCULK_CATALYST 303 +#define BLOCK_SEA_LANTERN 304 +#define BLOCK_SEA_PICKLE_WET_1 305 +#define BLOCK_SEA_PICKLE_WET_2 306 +#define BLOCK_SEA_PICKLE_WET_3 307 +#define BLOCK_SEA_PICKLE_WET_4 308 +#define BLOCK_SHROOMLIGHT 309 +#define BLOCK_SMOKER_LIT_N 310 +#define BLOCK_SMOKER_LIT_E 311 +#define BLOCK_SMOKER_LIT_S 312 +#define BLOCK_SMOKER_LIT_W 313 +#define BLOCK_SOUL_CAMPFIRE_LIT_N_S 314 +#define BLOCK_SOUL_CAMPFIRE_LIT_W_E 315 +#define BLOCK_SOUL_FIRE 316 +#define BLOCK_SOUL_LANTERN_CEIL 317 +#define BLOCK_SOUL_LANTERN_FLOOR 318 +#define BLOCK_SOUL_TORCH_FLOOR 319 +#define BLOCK_SOUL_TORCH_WALL_N 320 +#define BLOCK_SOUL_TORCH_WALL_E 321 +#define BLOCK_SOUL_TORCH_WALL_S 322 +#define BLOCK_SOUL_TORCH_WALL_W 323 +#define BLOCK_TORCH_FLOOR 324 +#define BLOCK_TORCH_WALL_N 325 +#define BLOCK_TORCH_WALL_E 326 +#define BLOCK_TORCH_WALL_S 327 +#define BLOCK_TORCH_WALL_W 328 +#define BLOCK_CREATE_XP 329 +#define BLOCK_ROSE_QUARTZ_LAMP_LIT 330 +#define BLOCK_DECO_LAMP_BLUE_LIT 331 +#define BLOCK_DECO_LAMP_GREEN_LIT 332 +#define BLOCK_DECO_LAMP_RED_LIT 333 +#define BLOCK_DECO_LAMP_YELLOW_LIT 334 +#define BLOCK_STREET_LAMP_LIT 335 +#define BLOCK_SOUL_STREET_LAMP_LIT 336 +#define BLOCK_PAPER_LAMP_LIT_BLACK 337 +#define BLOCK_PAPER_LAMP_LIT_BLUE 338 +#define BLOCK_PAPER_LAMP_LIT_BROWN 339 +#define BLOCK_PAPER_LAMP_LIT_CYAN 340 +#define BLOCK_PAPER_LAMP_LIT_GRAY 341 +#define BLOCK_PAPER_LAMP_LIT_GREEN 342 +#define BLOCK_PAPER_LAMP_LIT_LIGHT_BLUE 343 +#define BLOCK_PAPER_LAMP_LIT_LIGHT_GRAY 344 +#define BLOCK_PAPER_LAMP_LIT_LIME 345 +#define BLOCK_PAPER_LAMP_LIT_MAGENTA 346 +#define BLOCK_PAPER_LAMP_LIT_ORANGE 347 +#define BLOCK_PAPER_LAMP_LIT_PINK 348 +#define BLOCK_PAPER_LAMP_LIT_PURPLE 349 +#define BLOCK_PAPER_LAMP_LIT_RED 350 +#define BLOCK_PAPER_LAMP_LIT_WHITE 351 +#define BLOCK_PAPER_LAMP_LIT_YELLOW 352 +#define BLOCK_LAMP_LIT_BLACK 353 +#define BLOCK_LAMP_LIT_BLUE 354 +#define BLOCK_LAMP_LIT_BROWN 355 +#define BLOCK_LAMP_LIT_CYAN 356 +#define BLOCK_LAMP_LIT_GRAY 357 +#define BLOCK_LAMP_LIT_GREEN 358 +#define BLOCK_LAMP_LIT_LIGHT_BLUE 359 +#define BLOCK_LAMP_LIT_LIGHT_GRAY 360 +#define BLOCK_LAMP_LIT_LIME 361 +#define BLOCK_LAMP_LIT_MAGENTA 362 +#define BLOCK_LAMP_LIT_ORANGE 363 +#define BLOCK_LAMP_LIT_PINK 364 +#define BLOCK_LAMP_LIT_PURPLE 365 +#define BLOCK_LAMP_LIT_RED 366 +#define BLOCK_LAMP_LIT_WHITE 367 +#define BLOCK_LAMP_LIT_YELLOW 368 +#define BLOCK_CEILING_LIGHT_LIT_BLACK 369 +#define BLOCK_CEILING_LIGHT_LIT_BLUE 370 +#define BLOCK_CEILING_LIGHT_LIT_BROWN 371 +#define BLOCK_CEILING_LIGHT_LIT_CYAN 372 +#define BLOCK_CEILING_LIGHT_LIT_GRAY 373 +#define BLOCK_CEILING_LIGHT_LIT_GREEN 374 +#define BLOCK_CEILING_LIGHT_LIT_LIGHT_BLUE 375 +#define BLOCK_CEILING_LIGHT_LIT_LIGHT_GRAY 376 +#define BLOCK_CEILING_LIGHT_LIT_LIME 377 +#define BLOCK_CEILING_LIGHT_LIT_MAGENTA 378 +#define BLOCK_CEILING_LIGHT_LIT_ORANGE 379 +#define BLOCK_CEILING_LIGHT_LIT_PINK 380 +#define BLOCK_CEILING_LIGHT_LIT_PURPLE 381 +#define BLOCK_CEILING_LIGHT_LIT_RED 382 +#define BLOCK_CEILING_LIGHT_LIT_WHITE 383 +#define BLOCK_CEILING_LIGHT_LIT_YELLOW 384 +#define BLOCK_END_STONE_LAMP 385 +#define BLOCK_ANVIL_N_S 400 +#define BLOCK_ANVIL_W_E 401 +#define BLOCK_BED_HEAD_N 402 +#define BLOCK_BED_HEAD_E 403 +#define BLOCK_BED_HEAD_S 404 +#define BLOCK_BED_HEAD_W 405 +#define BLOCK_BED_FOOT_N 406 +#define BLOCK_BED_FOOT_E 407 +#define BLOCK_BED_FOOT_S 408 +#define BLOCK_BED_FOOT_W 409 +#define BLOCK_BELL_FLOOR_N_S 410 +#define BLOCK_BELL_FLOOR_W_E 411 +#define BLOCK_BELL_WALL_N 412 +#define BLOCK_BELL_WALL_E 413 +#define BLOCK_BELL_WALL_S 414 +#define BLOCK_BELL_WALL_W 415 +#define BLOCK_BELL_WALL_N_S 416 +#define BLOCK_BELL_WALL_W_E 417 +#define BLOCK_BELL_CEILING 418 +#define BLOCK_CACTUS 419 +#define BLOCK_CAKE 420 +#define BLOCK_CAMPFIRE_N_S 421 +#define BLOCK_CAMPFIRE_W_E 422 +#define BLOCK_CANDLE_CAKE 423 +#define BLOCK_CANDLE_CAKE_LIT 424 +#define BLOCK_CANDLES_1 425 +#define BLOCK_CANDLES_2 426 +#define BLOCK_CANDLES_3 427 +#define BLOCK_CANDLES_4 428 +#define BLOCK_PLAIN_CANDLES_LIT_1 429 +#define BLOCK_PLAIN_CANDLES_LIT_2 430 +#define BLOCK_PLAIN_CANDLES_LIT_3 431 +#define BLOCK_PLAIN_CANDLES_LIT_4 432 +#define BLOCK_BLACK_CANDLES_LIT_1 433 +#define BLOCK_BLACK_CANDLES_LIT_2 434 +#define BLOCK_BLACK_CANDLES_LIT_3 435 +#define BLOCK_BLACK_CANDLES_LIT_4 436 +#define BLOCK_BLUE_CANDLES_LIT_1 437 +#define BLOCK_BLUE_CANDLES_LIT_2 438 +#define BLOCK_BLUE_CANDLES_LIT_3 439 +#define BLOCK_BLUE_CANDLES_LIT_4 440 +#define BLOCK_BROWN_CANDLES_LIT_1 441 +#define BLOCK_BROWN_CANDLES_LIT_2 442 +#define BLOCK_BROWN_CANDLES_LIT_3 443 +#define BLOCK_BROWN_CANDLES_LIT_4 444 +#define BLOCK_CYAN_CANDLES_LIT_1 445 +#define BLOCK_CYAN_CANDLES_LIT_2 446 +#define BLOCK_CYAN_CANDLES_LIT_3 447 +#define BLOCK_CYAN_CANDLES_LIT_4 448 +#define BLOCK_GRAY_CANDLES_LIT_1 449 +#define BLOCK_GRAY_CANDLES_LIT_2 450 +#define BLOCK_GRAY_CANDLES_LIT_3 451 +#define BLOCK_GRAY_CANDLES_LIT_4 452 +#define BLOCK_GREEN_CANDLES_LIT_1 453 +#define BLOCK_GREEN_CANDLES_LIT_2 454 +#define BLOCK_GREEN_CANDLES_LIT_3 455 +#define BLOCK_GREEN_CANDLES_LIT_4 456 +#define BLOCK_LIGHT_BLUE_CANDLES_LIT_1 457 +#define BLOCK_LIGHT_BLUE_CANDLES_LIT_2 458 +#define BLOCK_LIGHT_BLUE_CANDLES_LIT_3 459 +#define BLOCK_LIGHT_BLUE_CANDLES_LIT_4 460 +#define BLOCK_LIGHT_GRAY_CANDLES_LIT_1 461 +#define BLOCK_LIGHT_GRAY_CANDLES_LIT_2 462 +#define BLOCK_LIGHT_GRAY_CANDLES_LIT_3 463 +#define BLOCK_LIGHT_GRAY_CANDLES_LIT_4 464 +#define BLOCK_LIME_CANDLES_LIT_1 465 +#define BLOCK_LIME_CANDLES_LIT_2 466 +#define BLOCK_LIME_CANDLES_LIT_3 467 +#define BLOCK_LIME_CANDLES_LIT_4 468 +#define BLOCK_MAGENTA_CANDLES_LIT_1 469 +#define BLOCK_MAGENTA_CANDLES_LIT_2 470 +#define BLOCK_MAGENTA_CANDLES_LIT_3 471 +#define BLOCK_MAGENTA_CANDLES_LIT_4 472 +#define BLOCK_ORANGE_CANDLES_LIT_1 473 +#define BLOCK_ORANGE_CANDLES_LIT_2 474 +#define BLOCK_ORANGE_CANDLES_LIT_3 475 +#define BLOCK_ORANGE_CANDLES_LIT_4 476 +#define BLOCK_PINK_CANDLES_LIT_1 477 +#define BLOCK_PINK_CANDLES_LIT_2 478 +#define BLOCK_PINK_CANDLES_LIT_3 479 +#define BLOCK_PINK_CANDLES_LIT_4 480 +#define BLOCK_PURPLE_CANDLES_LIT_1 481 +#define BLOCK_PURPLE_CANDLES_LIT_2 482 +#define BLOCK_PURPLE_CANDLES_LIT_3 483 +#define BLOCK_PURPLE_CANDLES_LIT_4 484 +#define BLOCK_RED_CANDLES_LIT_1 485 +#define BLOCK_RED_CANDLES_LIT_2 486 +#define BLOCK_RED_CANDLES_LIT_3 487 +#define BLOCK_RED_CANDLES_LIT_4 488 +#define BLOCK_WHITE_CANDLES_LIT_1 489 +#define BLOCK_WHITE_CANDLES_LIT_2 490 +#define BLOCK_WHITE_CANDLES_LIT_3 491 +#define BLOCK_WHITE_CANDLES_LIT_4 492 +#define BLOCK_YELLOW_CANDLES_LIT_1 493 +#define BLOCK_YELLOW_CANDLES_LIT_2 494 +#define BLOCK_YELLOW_CANDLES_LIT_3 495 +#define BLOCK_YELLOW_CANDLES_LIT_4 496 +#define BLOCK_CANDLES_LIT_1 497 +#define BLOCK_CANDLES_LIT_2 498 +#define BLOCK_CANDLES_LIT_3 499 +#define BLOCK_CANDLES_LIT_4 500 +#define BLOCK_CANDLE_HOLDER_LIT_1 501 +#define BLOCK_CANDLE_HOLDER_LIT_2 502 +#define BLOCK_CANDLE_HOLDER_LIT_3 503 +#define BLOCK_CANDLE_HOLDER_LIT_4 504 +#define BLOCK_CARPET 505 +#define BLOCK_CAULDRON 506 +#define BLOCK_CAULDRON_LAVA 507 +#define BLOCK_CHEST_N 508 +#define BLOCK_CHEST_E 509 +#define BLOCK_CHEST_S 510 +#define BLOCK_CHEST_W 511 +#define BLOCK_CHEST_LEFT_N 512 +#define BLOCK_CHEST_LEFT_E 513 +#define BLOCK_CHEST_LEFT_S 514 +#define BLOCK_CHEST_LEFT_W 515 +#define BLOCK_CHEST_RIGHT_N 516 +#define BLOCK_CHEST_RIGHT_E 517 +#define BLOCK_CHEST_RIGHT_S 518 +#define BLOCK_CHEST_RIGHT_W 519 +#define BLOCK_COCOA_0_N 520 +#define BLOCK_COCOA_0_E 521 +#define BLOCK_COCOA_0_W 522 +#define BLOCK_COCOA_0_S 523 +#define BLOCK_COCOA_1_N 524 +#define BLOCK_COCOA_1_E 525 +#define BLOCK_COCOA_1_W 526 +#define BLOCK_COCOA_1_S 527 +#define BLOCK_COCOA_2_N 528 +#define BLOCK_COCOA_2_E 529 +#define BLOCK_COCOA_2_W 530 +#define BLOCK_COCOA_2_S 531 +#define BLOCK_COMPARATOR 532 +#define BLOCK_COMPOSTER 533 +#define BLOCK_DAYLIGHT_DETECTOR 534 +#define BLOCK_DECORATED_POT 535 +#define BLOCK_ENCHANTING_TABLE 536 +#define BLOCK_END_PORTAL_FRAME 537 +#define BLOCK_FLOWER_POT 538 +#define BLOCK_GRINDSTONE_FLOOR_N_S 539 +#define BLOCK_GRINDSTONE_FLOOR_W_E 540 +#define BLOCK_GRINDSTONE_WALL_N 541 +#define BLOCK_GRINDSTONE_WALL_E 542 +#define BLOCK_GRINDSTONE_WALL_S 543 +#define BLOCK_GRINDSTONE_WALL_W 544 +#define BLOCK_HOPPER_DOWN 545 +#define BLOCK_HOPPER_N 546 +#define BLOCK_HOPPER_E 547 +#define BLOCK_HOPPER_S 548 +#define BLOCK_HOPPER_W 549 +#define BLOCK_LECTERN 550 +#define BLOCK_LIGHTNING_ROD_N 551 +#define BLOCK_LIGHTNING_ROD_E 552 +#define BLOCK_LIGHTNING_ROD_S 553 +#define BLOCK_LIGHTNING_ROD_W 554 +#define BLOCK_LIGHTNING_ROD_UP 555 +#define BLOCK_LIGHTNING_ROD_DOWN 556 +#define BLOCK_PATHWAY 557 +#define BLOCK_PISTON_EXTENDED_N 558 +#define BLOCK_PISTON_EXTENDED_E 559 +#define BLOCK_PISTON_EXTENDED_S 560 +#define BLOCK_PISTON_EXTENDED_W 561 +#define BLOCK_PISTON_EXTENDED_UP 562 +#define BLOCK_PISTON_EXTENDED_DOWN 563 +#define BLOCK_PISTON_HEAD_N 564 +#define BLOCK_PISTON_HEAD_E 565 +#define BLOCK_PISTON_HEAD_S 566 +#define BLOCK_PISTON_HEAD_W 567 +#define BLOCK_PISTON_HEAD_UP 568 +#define BLOCK_PISTON_HEAD_DOWN 569 +#define BLOCK_POTTED_PLANT 570 +#define BLOCK_PRESSURE_PLATE 571 +#define BLOCK_PRESSURE_PLATE_DOWN 572 +#define BLOCK_REPEATER 573 +#define BLOCK_SCULK_SENSOR 574 +#define BLOCK_SCULK_SHRIEKER 575 +#define BLOCK_SHULKER_BOX 576 +#define BLOCK_SIGN_WALL_N 577 +#define BLOCK_SIGN_WALL_E 578 +#define BLOCK_SIGN_WALL_S 579 +#define BLOCK_SIGN_WALL_W 580 +#define BLOCK_SNIFFER_EGG 581 +#define BLOCK_SNOW_LAYERS_1 582 +#define BLOCK_SNOW_LAYERS_2 583 +#define BLOCK_SNOW_LAYERS_3 584 +#define BLOCK_SNOW_LAYERS_4 585 +#define BLOCK_SNOW_LAYERS_5 586 +#define BLOCK_SNOW_LAYERS_6 587 +#define BLOCK_SNOW_LAYERS_7 588 +#define BLOCK_STONECUTTER 589 +#define BLOCK_CREATE_BASIN 590 +#define BLOCK_CREATE_BLAZE_BURNER 591 +#define BLOCK_CREATE_CHUTE 592 +#define BLOCK_CREATE_CLUTCH_X 593 +#define BLOCK_CREATE_CLUTCH_Y 594 +#define BLOCK_CREATE_CLUTCH_Z 595 +#define BLOCK_CREATE_CONTENT_OBSERVER_N 596 +#define BLOCK_CREATE_CONTENT_OBSERVER_E 597 +#define BLOCK_CREATE_CONTENT_OBSERVER_S 598 +#define BLOCK_CREATE_CONTENT_OBSERVER_W 599 +#define BLOCK_CREATE_COPYCAT_PANEL_N 600 +#define BLOCK_CREATE_COPYCAT_PANEL_E 601 +#define BLOCK_CREATE_COPYCAT_PANEL_S 602 +#define BLOCK_CREATE_COPYCAT_PANEL_W 603 +#define BLOCK_CREATE_COPYCAT_PANEL_UP 604 +#define BLOCK_CREATE_COPYCAT_PANEL_DOWN 605 +#define BLOCK_CREATE_COPYCAT_STEP_BOTTOM_N 606 +#define BLOCK_CREATE_COPYCAT_STEP_BOTTOM_E 607 +#define BLOCK_CREATE_COPYCAT_STEP_BOTTOM_S 608 +#define BLOCK_CREATE_COPYCAT_STEP_BOTTOM_W 609 +#define BLOCK_CREATE_COPYCAT_STEP_TOP_N 610 +#define BLOCK_CREATE_COPYCAT_STEP_TOP_E 611 +#define BLOCK_CREATE_COPYCAT_STEP_TOP_S 612 +#define BLOCK_CREATE_COPYCAT_STEP_TOP_W 613 +#define BLOCK_CREATE_DEPOT 614 +#define BLOCK_CREATE_DISPLAY_BOARD_N_S 615 +#define BLOCK_CREATE_DISPLAY_BOARD_W_E 616 +#define BLOCK_CREATE_ENCASED_FAN_N 617 +#define BLOCK_CREATE_ENCASED_FAN_E 618 +#define BLOCK_CREATE_ENCASED_FAN_S 619 +#define BLOCK_CREATE_ENCASED_FAN_W 620 +#define BLOCK_CREATE_ENCASED_FAN_UP 621 +#define BLOCK_CREATE_ENCASED_FAN_DOWN 622 +#define BLOCK_CREATE_GEARBOX_X 623 +#define BLOCK_CREATE_GEARBOX_Y 624 +#define BLOCK_CREATE_GEARBOX_Z 625 +#define BLOCK_CREATE_GEARSHIFT_X 626 +#define BLOCK_CREATE_GEARSHIFT_Y 627 +#define BLOCK_CREATE_GEARSHIFT_Z 628 +#define BLOCK_CREATE_GIRDER_X 629 +#define BLOCK_CREATE_GIRDER_X_TOP 630 +#define BLOCK_CREATE_GIRDER_X_BOTTOM 631 +#define BLOCK_CREATE_GIRDER_X_TOP_BOTTOM 632 +#define BLOCK_CREATE_GIRDER_Y 633 +#define BLOCK_CREATE_GIRDER_Z 634 +#define BLOCK_CREATE_GIRDER_Z_TOP 635 +#define BLOCK_CREATE_GIRDER_Z_BOTTOM 636 +#define BLOCK_CREATE_GIRDER_Z_TOP_BOTTOM 637 +#define BLOCK_CREATE_GIRDER_XZ 638 +#define BLOCK_CREATE_ITEM_DRAIN 639 +#define BLOCK_CREATE_MILLSTONE 640 +#define BLOCK_CREATE_NIXIE_TUBE_FLOOR_N_S 641 +#define BLOCK_CREATE_NIXIE_TUBE_FLOOR_W_E 642 +#define BLOCK_CREATE_NIXIE_TUBE_CEIL_N_S 643 +#define BLOCK_CREATE_NIXIE_TUBE_CEIL_W_E 644 +#define BLOCK_CREATE_NIXIE_TUBE_WALL_N 645 +#define BLOCK_CREATE_NIXIE_TUBE_WALL_E 646 +#define BLOCK_CREATE_NIXIE_TUBE_WALL_S 647 +#define BLOCK_CREATE_NIXIE_TUBE_WALL_W 648 +#define BLOCK_CREATE_PIPE_U_D 649 +#define BLOCK_CREATE_PIPE_N_S 650 +#define BLOCK_CREATE_PIPE_W_E 651 +#define BLOCK_CREATE_PIPE_N_W 652 +#define BLOCK_CREATE_PIPE_N_E 653 +#define BLOCK_CREATE_PIPE_S_W 654 +#define BLOCK_CREATE_PIPE_S_E 655 +#define BLOCK_CREATE_PIPE_U_N 656 +#define BLOCK_CREATE_PIPE_U_E 657 +#define BLOCK_CREATE_PIPE_U_S 658 +#define BLOCK_CREATE_PIPE_U_W 659 +#define BLOCK_CREATE_PIPE_D_N 660 +#define BLOCK_CREATE_PIPE_D_E 661 +#define BLOCK_CREATE_PIPE_D_S 662 +#define BLOCK_CREATE_PIPE_D_W 663 +#define BLOCK_CREATE_SCAFFOLDING_BOTTOM 664 +#define BLOCK_CREATE_SEAT 665 +#define BLOCK_CREATE_SHAFT_X 666 +#define BLOCK_CREATE_SHAFT_Y 667 +#define BLOCK_CREATE_SHAFT_Z 668 +#define BLOCK_CREATE_SPEED_CONTROLLER_X 669 +#define BLOCK_CREATE_SPEED_CONTROLLER_Z 670 +#define BLOCK_CREATE_SPOUT 671 +#define BLOCK_CREATE_SUPPORT_VERTICAL 672 +#define BLOCK_CREATE_SUPPORT_N_S 673 +#define BLOCK_CREATE_SUPPORT_W_E 674 +#define BLOCK_CREATE_TRACK_SIGNAL 675 +#define BLOCK_CREATE_TRACK_STATION 676 +#define BLOCK_CREATE_WEIGHTED_EJECTOR_N_S 677 +#define BLOCK_CREATE_WEIGHTED_EJECTOR_W_E 678 +#define BLOCK_CRANK_UP 679 +#define BLOCK_CRANK_DOWN 680 +#define BLOCK_CRANK_N 681 +#define BLOCK_CRANK_E 682 +#define BLOCK_CRANK_S 683 +#define BLOCK_CRANK_W 684 +#define BLOCK_FAUCET_N 685 +#define BLOCK_FAUCET_E 686 +#define BLOCK_FAUCET_S 687 +#define BLOCK_FAUCET_W 688 +#define BLOCK_BUTTON_FLOOR_N_S 689 +#define BLOCK_BUTTON_FLOOR_W_E 690 +#define BLOCK_BUTTON_CEILING_N_S 691 +#define BLOCK_BUTTON_CEILING_W_E 692 +#define BLOCK_BUTTON_WALL_N 693 +#define BLOCK_BUTTON_WALL_E 694 +#define BLOCK_BUTTON_WALL_S 695 +#define BLOCK_BUTTON_WALL_W 696 +#define BLOCK_CHORUS_DOWN 697 +#define BLOCK_CHORUS_UP_DOWN 698 +#define BLOCK_CHORUS_OTHER 699 +#define BLOCK_DOOR_N 700 +#define BLOCK_DOOR_E 701 +#define BLOCK_DOOR_S 702 +#define BLOCK_DOOR_W 703 +#define BLOCK_TRAPDOOR_BOTTOM 704 +#define BLOCK_TRAPDOOR_MIN 704 +#define BLOCK_TRAPDOOR_TOP 705 +#define BLOCK_TRAPDOOR_N 706 +#define BLOCK_TRAPDOOR_E 707 +#define BLOCK_TRAPDOOR_S 708 +#define BLOCK_TRAPDOOR_W 709 +#define BLOCK_TRAPDOOR_MAX 709 +#define BLOCK_LEVER_FLOOR_N_S 710 +#define BLOCK_LEVER_FLOOR_W_E 711 +#define BLOCK_LEVER_CEILING_N_S 712 +#define BLOCK_LEVER_CEILING_W_E 713 +#define BLOCK_LEVER_WALL_N 714 +#define BLOCK_LEVER_WALL_E 715 +#define BLOCK_LEVER_WALL_S 716 +#define BLOCK_LEVER_WALL_W 717 +#define BLOCK_TRIPWIRE_HOOK_N 718 +#define BLOCK_TRIPWIRE_HOOK_E 719 +#define BLOCK_TRIPWIRE_HOOK_S 720 +#define BLOCK_TRIPWIRE_HOOK_W 721 +#define BLOCK_SLAB_TOP 722 +#define BLOCK_SLAB_BOTTOM 723 +#define BLOCK_SLAB_VERTICAL_N 724 +#define BLOCK_SLAB_VERTICAL_E 725 +#define BLOCK_SLAB_VERTICAL_S 726 +#define BLOCK_SLAB_VERTICAL_W 727 +#define BLOCK_STAIRS_BOTTOM_N 728 +#define BLOCK_STAIRS_MIN 728 +#define BLOCK_STAIRS_BOTTOM_E 729 +#define BLOCK_STAIRS_BOTTOM_S 730 +#define BLOCK_STAIRS_BOTTOM_W 731 +#define BLOCK_STAIRS_BOTTOM_INNER_S_E 732 +#define BLOCK_STAIRS_BOTTOM_INNER_S_W 733 +#define BLOCK_STAIRS_BOTTOM_INNER_N_W 734 +#define BLOCK_STAIRS_BOTTOM_INNER_N_E 735 +#define BLOCK_STAIRS_BOTTOM_OUTER_N_W 736 +#define BLOCK_STAIRS_BOTTOM_OUTER_N_E 737 +#define BLOCK_STAIRS_BOTTOM_OUTER_S_E 738 +#define BLOCK_STAIRS_BOTTOM_OUTER_S_W 739 +#define BLOCK_STAIRS_TOP_N 740 +#define BLOCK_STAIRS_TOP_E 741 +#define BLOCK_STAIRS_TOP_S 742 +#define BLOCK_STAIRS_TOP_W 743 +#define BLOCK_STAIRS_TOP_INNER_S_E 744 +#define BLOCK_STAIRS_TOP_INNER_S_W 745 +#define BLOCK_STAIRS_TOP_INNER_N_W 746 +#define BLOCK_STAIRS_TOP_INNER_N_E 747 +#define BLOCK_STAIRS_TOP_OUTER_N_W 748 +#define BLOCK_STAIRS_TOP_OUTER_N_E 749 +#define BLOCK_STAIRS_TOP_OUTER_S_E 750 +#define BLOCK_STAIRS_TOP_OUTER_S_W 751 +#define BLOCK_STAIRS_MAX 751 +#define BLOCK_FENCE_POST 752 +#define BLOCK_FENCE_N 753 +#define BLOCK_FENCE_E 754 +#define BLOCK_FENCE_S 755 +#define BLOCK_FENCE_W 756 +#define BLOCK_FENCE_N_S 757 +#define BLOCK_FENCE_W_E 758 +#define BLOCK_FENCE_N_W 759 +#define BLOCK_FENCE_N_E 760 +#define BLOCK_FENCE_S_W 761 +#define BLOCK_FENCE_S_E 762 +#define BLOCK_FENCE_W_N_E 763 +#define BLOCK_FENCE_W_S_E 764 +#define BLOCK_FENCE_N_W_S 765 +#define BLOCK_FENCE_N_E_S 766 +#define BLOCK_FENCE_ALL 767 +#define BLOCK_FENCE_GATE_CLOSED_N_S 768 +#define BLOCK_FENCE_GATE_CLOSED_W_E 769 +#define BLOCK_WALL_POST 770 +#define BLOCK_WALL_MIN 770 +#define BLOCK_WALL_POST_LOW_N 771 +#define BLOCK_WALL_POST_LOW_E 772 +#define BLOCK_WALL_POST_LOW_S 773 +#define BLOCK_WALL_POST_LOW_W 774 +#define BLOCK_WALL_POST_LOW_N_S 775 +#define BLOCK_WALL_POST_LOW_W_E 776 +#define BLOCK_WALL_POST_LOW_N_W 777 +#define BLOCK_WALL_POST_LOW_N_E 778 +#define BLOCK_WALL_POST_LOW_S_W 779 +#define BLOCK_WALL_POST_LOW_S_E 780 +#define BLOCK_WALL_POST_LOW_N_W_S 781 +#define BLOCK_WALL_POST_LOW_N_E_S 782 +#define BLOCK_WALL_POST_LOW_W_N_E 783 +#define BLOCK_WALL_POST_LOW_W_S_E 784 +#define BLOCK_WALL_POST_LOW_ALL 785 +#define BLOCK_WALL_POST_TALL_N 786 +#define BLOCK_WALL_POST_TALL_E 787 +#define BLOCK_WALL_POST_TALL_S 788 +#define BLOCK_WALL_POST_TALL_W 789 +#define BLOCK_WALL_POST_TALL_N_S 790 +#define BLOCK_WALL_POST_TALL_W_E 791 +#define BLOCK_WALL_POST_TALL_N_W 792 +#define BLOCK_WALL_POST_TALL_N_E 793 +#define BLOCK_WALL_POST_TALL_S_W 794 +#define BLOCK_WALL_POST_TALL_S_E 795 +#define BLOCK_WALL_POST_TALL_N_W_S 796 +#define BLOCK_WALL_POST_TALL_N_E_S 797 +#define BLOCK_WALL_POST_TALL_W_N_E 798 +#define BLOCK_WALL_POST_TALL_W_S_E 799 +#define BLOCK_WALL_POST_TALL_ALL 800 +#define BLOCK_WALL_POST_TALL_N_LOW_S 801 +#define BLOCK_WALL_POST_TALL_E_LOW_W 802 +#define BLOCK_WALL_POST_TALL_S_LOW_N 803 +#define BLOCK_WALL_POST_TALL_W_LOW_E 804 +#define BLOCK_WALL_POST_TALL_N_S_LOW_W_E 805 +#define BLOCK_WALL_POST_TALL_W_E_LOW_N_S 806 +#define BLOCK_WALL_POST_TALL_N_W_LOW_S_E 807 +#define BLOCK_WALL_POST_TALL_N_E_LOW_S_W 808 +#define BLOCK_WALL_POST_TALL_S_W_LOW_N_E 809 +#define BLOCK_WALL_POST_TALL_S_E_LOW_N_W 810 +#define BLOCK_WALL_LOW_N_S 811 +#define BLOCK_WALL_LOW_W_E 812 +#define BLOCK_WALL_LOW_N_W 813 +#define BLOCK_WALL_LOW_N_E 814 +#define BLOCK_WALL_LOW_S_W 815 +#define BLOCK_WALL_LOW_S_E 816 +#define BLOCK_WALL_LOW_ALL 817 +#define BLOCK_WALL_TALL_N_S 818 +#define BLOCK_WALL_TALL_W_E 819 +#define BLOCK_WALL_TALL_N_W 820 +#define BLOCK_WALL_TALL_N_E 821 +#define BLOCK_WALL_TALL_S_W 822 +#define BLOCK_WALL_TALL_S_E 823 +#define BLOCK_WALL_TALL_ALL 824 +#define BLOCK_WALL_TALL_N_S_LOW_W_E 825 +#define BLOCK_WALL_TALL_W_E_LOW_N_S 826 +#define BLOCK_WALL_MAX 826 +#define BLOCK_HONEY 827 +#define BLOCK_LEAVES 828 +#define BLOCK_LEAVES_CHERRY 829 +#define BLOCK_POWDER_SNOW 830 +#define BLOCK_ROOTS 831 +#define BLOCK_SLIME 832 +#define BLOCK_SNOW 833 +#define BLOCK_STAINED_GLASS_BLACK 834 +#define BLOCK_STAINED_GLASS_BLUE 835 +#define BLOCK_STAINED_GLASS_BROWN 836 +#define BLOCK_STAINED_GLASS_CYAN 837 +#define BLOCK_STAINED_GLASS_GRAY 838 +#define BLOCK_STAINED_GLASS_GREEN 839 +#define BLOCK_STAINED_GLASS_LIGHT_BLUE 840 +#define BLOCK_STAINED_GLASS_LIGHT_GRAY 841 +#define BLOCK_STAINED_GLASS_LIME 842 +#define BLOCK_STAINED_GLASS_MAGENTA 843 +#define BLOCK_STAINED_GLASS_ORANGE 844 +#define BLOCK_STAINED_GLASS_PINK 845 +#define BLOCK_STAINED_GLASS_PURPLE 846 +#define BLOCK_STAINED_GLASS_RED 847 +#define BLOCK_STAINED_GLASS_WHITE 848 +#define BLOCK_STAINED_GLASS_YELLOW 849 +#define BLOCK_TINTED_GLASS 850 +#define BLOCK_CANDLE_HOLDER_UNLIT 851 +#define BLOCK_CHAIN 900 +#define BLOCK_COBWEB 901 +#define BLOCK_CORAL 902 +#define BLOCK_CORAL_FAN 903 +#define BLOCK_CORAL_WALL_FAN 904 +#define BLOCK_FENCE_GATE_OPEN 905 +#define BLOCK_GLASS 906 +#define BLOCK_GLASS_PANE 907 +#define BLOCK_ICE 908 +#define BLOCK_IRON_BARS 909 +#define BLOCK_LADDER 910 +#define BLOCK_LIGHT_0 911 +#define BLOCK_POINTED_DRIPSTONE 912 +#define BLOCK_RAIL 913 +#define BLOCK_REDSTONE_TORCH 914 +#define BLOCK_REDSTONE_WIRE 915 +#define BLOCK_SCAFFOLDING 916 +#define BLOCK_SPAWNER 917 +#define BLOCK_STEM 918 +#define BLOCK_TRIPWIRE 919 +#define BLOCK_TURTLE_EGG 920 +#define BLOCK_WALL_NONE 921 +#define BLOCK_BIGGLOBE_CHARRED_GRASS 922 +#define BLOCK_BIGGLOBE_FLINT 923 +#define BLOCK_BIGGLOBE_ROCK 924 +#define BLOCK_BIGGLOBE_STICK 925 +#define BLOCK_BIGGLOBE_WART_WEED 926 +#define BLOCK_CREATE_CUCKOO_CLOCK 927 +#define BLOCK_CREATE_FUNNEL 928 +#define BLOCK_CREATE_GLASS_DOOR 929 +#define BLOCK_CREATE_GLASS_TRAPDOOR 930 +#define BLOCK_CREATE_GANTRY_SHAFT_POWERED 931 +#define BLOCK_CREATE_LADDER 932 +#define BLOCK_CREATE_MOTOR 933 +#define BLOCK_CREATE_PISTON_POLE 934 +#define BLOCK_CREATE_REDSTONE_LINK 935 +#define BLOCK_CREATE_SPEEDOMETER 936 +#define BLOCK_CREATE_STRESSOMETER 937 +#define BLOCK_CREATE_TRACK 938 +#define BLOCK_CREATE_WINDOW_PANE 939 +#define BLOCK_DECO_CATWALK 940 +#define BLOCK_DECO_CATWALK_STAIRS 941 +#define BLOCK_MESH_FENCE 942 +#define BLOCK_DECO_LAMP_UNLIT 943 +#define BLOCK_DECO_DECAL 944 +#define BLOCK_DECO_PLACARD 945 +#define BLOCK_STREET_LAMP_UNLIT 946 +#define BLOCK_SOUL_STREET_LAMP_UNLIT 947 +#define BLOCK_STREET_LAMP_SUPPORT 948 +#define BLOCK_PAPER_LAMP_UNLIT 949 +#define BLOCK_WIND_VANE 950 +#define BLOCK_MI_PIPE 951 +#define BLOCK_BLUE_ICE 1000 +#define BLOCK_BROWN_MUSHROOM 1001 +#define BLOCK_BUDDING_AMETHYST 1002 +#define BLOCK_CALCITE 1003 +#define BLOCK_COAL 1004 +#define BLOCK_CONCRETE 1005 +#define BLOCK_COPPER 1006 +#define BLOCK_COPPER_EXPOSED 1007 +#define BLOCK_COPPER_WEATHERED 1008 +#define BLOCK_GLAZED_TERRACOTTA 1009 +#define BLOCK_GOLD 1010 +#define BLOCK_HONEYCOMB 1011 +#define BLOCK_IRON 1012 +#define BLOCK_MUD 1013 +#define BLOCK_MUSHROOM_STEM 1014 +#define BLOCK_NETHERRACK 1015 +#define BLOCK_OBSIDIAN 1016 +#define BLOCK_PACKED_ICE 1017 +#define BLOCK_POLISHED 1018 +#define BLOCK_PURPUR 1019 +#define BLOCK_QUARTZ 1020 +#define BLOCK_RAW_COPPER 1021 +#define BLOCK_RAW_GOLD 1022 +#define BLOCK_RAW_IRON 1023 +#define BLOCK_REDSTONE_ILLUMINATOR_OFF 1024 +#define BLOCK_RED_MUSHROOM 1025 +#define BLOCK_WOOL 1026 diff --git a/shaders/lib/hsv.glsl b/shaders/lib/hsv.glsl new file mode 100644 index 0000000..599aa90 --- /dev/null +++ b/shaders/lib/hsv.glsl @@ -0,0 +1,17 @@ +vec3 RgbToHsv(const in vec3 c) { + const vec4 K = vec4(0.0, -1.0, 2.0, -3.0) / 3.0; + const float e = 1.0e-10; + + vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g)); + vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r)); + + float d = q.x - min(q.w, q.y); + return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); +} + +vec3 HsvToRgb(const in vec3 c) { + const vec4 K = vec4(3.0, 2.0, 1.0, 9.0) / 3.0; + + vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); + return c.z * mix(K.xxx, saturate(p - K.xxx), c.y); +} diff --git a/shaders/lib/lpv_blocks.glsl b/shaders/lib/lpv_blocks.glsl new file mode 100644 index 0000000..5003c7e --- /dev/null +++ b/shaders/lib/lpv_blocks.glsl @@ -0,0 +1,29 @@ +struct LpvBlockData { // 12 x1280 =? + uint data; // 4 + uint LightColor; // 4 + uint LightRangeSize; // 4 + // uint LightMetadata; +}; + +#ifdef RENDER_SETUP + layout(binding = 0) writeonly buffer lpvBlockData +#else + layout(binding = 0) readonly buffer lpvBlockData +#endif +{ + LpvBlockData LpvBlockMap[]; +}; + +uint BuildBlockLpvData(uint mixMask, float mixWeight) { + uint data = uint(saturate(mixWeight) * 255.0); + + data = data | (mixMask << 8); + + return data; +} + +void ParseBlockLpvData(const in uint data, out uint mixMask, out float mixWeight) { + mixWeight = (data & 0xFF) / 255.0; + + mixMask = (data >> 8) & 0xFF; +} diff --git a/shaders/lib/lpv_common.glsl b/shaders/lib/lpv_common.glsl index f597b3b..d7d1037 100644 --- a/shaders/lib/lpv_common.glsl +++ b/shaders/lib/lpv_common.glsl @@ -1,6 +1,8 @@ -const uint LpvSize = uint(exp2(LPV_SIZE)); +layout(rgba8) uniform image3D imgLpv1; +layout(rgba8) uniform image3D imgLpv2; -layout(r16ui) uniform uimage3D imgVoxelMask; +const uint LpvSize = uint(exp2(LPV_SIZE)); +const uvec3 LpvSize3 = uvec3(LpvSize); // #if defined RENDER_SHADOWCOMP || defined RENDER_GBUFFER // layout(r16ui) uniform uimage2D imgVoxelMask; @@ -9,3 +11,5 @@ layout(r16ui) uniform uimage3D imgVoxelMask; // #else // layout(r16ui) uniform readonly uimage2D imgVoxelMask; // #endif + +#define LIGHT_NONE 0 diff --git a/shaders/lib/voxel_common.glsl b/shaders/lib/voxel_common.glsl new file mode 100644 index 0000000..429fb3e --- /dev/null +++ b/shaders/lib/voxel_common.glsl @@ -0,0 +1,6 @@ +layout(r16ui) uniform uimage3D imgVoxelMask; + +const uint VoxelSize = uint(exp2(LPV_SIZE)); +const uvec3 VoxelSize3 = uvec3(VoxelSize); + +#define BLOCK_EMPTY 0 diff --git a/shaders/lib/voxel_read.glsl b/shaders/lib/voxel_read.glsl new file mode 100644 index 0000000..9d1c0d7 --- /dev/null +++ b/shaders/lib/voxel_read.glsl @@ -0,0 +1,12 @@ +uint GetVoxelBlock(const in ivec3 voxelPos) { + // TODO: exit early if outside bounds + return imageLoad(imgVoxelMask, voxelPos).r; +} + +uint GetVoxelBlock(const in vec3 playerPos) { + vec3 cameraOffset = fract(cameraPosition); + ivec3 voxelPos = ivec3(floor(playerPos + cameraOffset + VoxelSize/2u)); + + // TODO: exit early if outside bounds + return imageLoad(imgVoxelMask, voxelPos).r; +} diff --git a/shaders/lib/lpv_write.glsl b/shaders/lib/voxel_write.glsl similarity index 59% rename from shaders/lib/lpv_write.glsl rename to shaders/lib/voxel_write.glsl index 3f48e83..4af48f8 100644 --- a/shaders/lib/lpv_write.glsl +++ b/shaders/lib/voxel_write.glsl @@ -1,5 +1,7 @@ void SetVoxelBlock(const in vec3 playerPos, const in uint blockId) { vec3 cameraOffset = fract(cameraPosition); - ivec3 voxelPos = ivec3(floor(playerPos + cameraOffset + LpvSize/2u)); + ivec3 voxelPos = ivec3(floor(playerPos + cameraOffset + VoxelSize/2u)); + + // TODO: exit early if outside bounds imageStore(imgVoxelMask, voxelPos, uvec4(blockId)); } diff --git a/shaders/shaders.properties b/shaders/shaders.properties index a2d01b0..bd6f7ff 100644 --- a/shaders/shaders.properties +++ b/shaders/shaders.properties @@ -612,17 +612,21 @@ uniform.float.shadowMaxProj = 150.0/abs(sunPosY) ############################### #if defined LPV_ENABLED && defined IRIS_FEATURE_CUSTOM_IMAGES + bufferObject.0=20480 + #if LPV_SIZE == 8 - image.imgVoxelMask=none RED_INTEGER R16UI UNSIGNED_SHORT true false 256 256 256 - image.imgLpv1=none RGBA RGBA8 BYTE false false 256 256 256 - image.imgLpv2=none RGBA RGBA8 BYTE false false 256 256 256 + image.imgVoxelMask = none RED_INTEGER R16UI UNSIGNED_SHORT true false 256 256 256 + image.imgLpv1 = none RGBA RGBA8 BYTE false false 256 256 256 + image.imgLpv2 = none RGBA RGBA8 BYTE false false 256 256 256 #elif LPV_SIZE == 7 - image.imgVoxelMask=none RED_INTEGER R16UI UNSIGNED_SHORT true false 128 128 128 - image.imgLpv1=none RGBA RGBA8 BYTE false false 128 128 128 - image.imgLpv2=none RGBA RGBA8 BYTE false false 128 128 128 + image.imgVoxelMask = none RED_INTEGER R16UI UNSIGNED_SHORT true false 128 128 128 + image.imgLpv1 = none RGBA RGBA8 BYTE false false 128 128 128 + image.imgLpv2 = none RGBA RGBA8 BYTE false false 128 128 128 #elif LPV_SIZE == 6 - image.imgVoxelMask=none RED_INTEGER R16UI UNSIGNED_SHORT true false 64 64 64 - image.imgLpv1=none RGBA RGBA8 BYTE false false 64 64 64 - image.imgLpv2=none RGBA RGBA8 BYTE false false 64 64 64 + image.imgVoxelMask = none RED_INTEGER R16UI UNSIGNED_SHORT true false 64 64 64 + image.imgLpv1 = none RGBA RGBA8 BYTE false false 64 64 64 + image.imgLpv2 = none RGBA RGBA8 BYTE false false 64 64 64 #endif +#else + program.shadowcomp.enabled = false #endif diff --git a/shaders/world0/shadow.vsh b/shaders/world0/shadow.vsh index 5d04f81..f49b019 100644 --- a/shaders/world0/shadow.vsh +++ b/shaders/world0/shadow.vsh @@ -50,8 +50,8 @@ uniform int entityId; #include "/lib/bokeh.glsl" #ifdef IS_LPV_ENABLED - #include "/lib/lpv_common.glsl" - #include "/lib/lpv_write.glsl" + #include "/lib/voxel_common.glsl" + #include "/lib/voxel_write.glsl" #endif const float PI48 = 150.796447372*WAVY_SPEED; @@ -185,6 +185,7 @@ void main() { #endif #if defined IS_LPV_ENABLED && defined MC_GL_EXT_shader_image_load_store + // TODO: limit to blocks; entities later SetVoxelBlock(playerpos, blockId); #endif diff --git a/shaders/world0/shadowcomp.csh b/shaders/world0/shadowcomp.csh new file mode 100644 index 0000000..ec191b2 --- /dev/null +++ b/shaders/world0/shadowcomp.csh @@ -0,0 +1,204 @@ +#version 430 compatibility + +#include "/lib/settings.glsl" + +layout (local_size_x = 8, local_size_y = 8, local_size_z = 8) in; + +#if LPV_SIZE == 8 + const ivec3 workGroups = ivec3(32, 32, 32); +#elif LPV_SIZE == 7 + const ivec3 workGroups = ivec3(16, 16, 16); +#elif LPV_SIZE == 6 + const ivec3 workGroups = ivec3(8, 8, 8); +#endif + +#ifdef IS_LPV_ENABLED + shared vec4 lpvSharedData[10*10*10]; + shared uint voxelSharedData[10*10*10]; + + const vec2 LpvBlockSkyFalloff = vec2(0.96, 0.96); + const vec2 LpvBlockSkyRange = vec2(1.0, 24.0); + const ivec3 lpvFlatten = ivec3(1, 10, 100); + + #define GAMMA 2.2 + #define EPSILON 1e-6 + + + // varying vec2 texcoord; + // uniform sampler2D tex; + // uniform sampler2D noisetex; + uniform int frameCounter; + // uniform float frameTimeCounter; + uniform vec3 cameraPosition; + // varying vec4 color; + + // #include "/lib/waterBump.glsl" + #include "/lib/hsv.glsl" + #include "/lib/blocks.glsl" + #include "/lib/lpv_common.glsl" + #include "/lib/lpv_blocks.glsl" + #include "/lib/voxel_common.glsl" + #include "/lib/voxel_read.glsl" + + // uniform mat4 gbufferProjectionInverse; + // uniform mat4 gbufferModelViewInverse; + // uniform mat4 gbufferModelView; + // uniform mat4 shadowModelView; + // uniform mat4 shadowModelViewInverse; + // uniform mat4 shadowProjection; + + int sumOf(ivec3 vec) {return vec.x + vec.y + vec.z;} + + vec3 RGBToLinear(const in vec3 color) { + return pow(color, vec3(GAMMA)); + } + + vec3 Lpv_RgbToHsv(const in vec3 lightColor, const in float lightRange) { + vec3 lightValue = RgbToHsv(lightColor); + lightValue.b = lightRange / LpvBlockSkyRange.x; + return lightValue; + } + + vec4 GetLpvValue(in ivec3 texCoord) { + if (clamp(texCoord, ivec3(0), ivec3(LpvSize) - 1) != texCoord) return vec4(0.0); + + vec4 lpvSample = (frameCounter % 2) == 0 + ? imageLoad(imgLpv2, texCoord) + : imageLoad(imgLpv1, texCoord); + + lpvSample.ba = exp2(lpvSample.ba * LpvBlockSkyRange) - 1.0; + lpvSample.rgb = HsvToRgb(lpvSample.rgb); + + return lpvSample; + } + + int getSharedCoord(ivec3 pos) { + return sumOf(pos * lpvFlatten); + } + + vec4 sampleShared(ivec3 pos) { + return lpvSharedData[getSharedCoord(pos + 1)]; + } + + vec4 sampleShared(ivec3 pos, int mask_index) { + int shared_index = getSharedCoord(pos + 1); + + float mixWeight = 1.0; + uint mixMask = 0xFFFF; + uint blockId = voxelSharedData[shared_index]; + + if (blockId > 0 && blockId != BLOCK_EMPTY) + ParseBlockLpvData(LpvBlockMap[blockId].data, mixMask, mixWeight); + + return lpvSharedData[shared_index] * ((mixMask >> mask_index) & 1u);// * mixWeight; + } + + vec4 mixNeighbours(const in ivec3 fragCoord, const in uint mask) { + vec4 nX1 = sampleShared(fragCoord + ivec3(-1, 0, 0), 1) * ((mask ) & 1u); + vec4 nX2 = sampleShared(fragCoord + ivec3( 1, 0, 0), 0) * ((mask >> 1) & 1u); + vec4 nY1 = sampleShared(fragCoord + ivec3( 0, -1, 0), 3) * ((mask >> 2) & 1u); + vec4 nY2 = sampleShared(fragCoord + ivec3( 0, 1, 0), 2) * ((mask >> 3) & 1u); + vec4 nZ1 = sampleShared(fragCoord + ivec3( 0, 0, -1), 5) * ((mask >> 4) & 1u); + vec4 nZ2 = sampleShared(fragCoord + ivec3( 0, 0, 1), 4) * ((mask >> 5) & 1u); + + const vec4 avgFalloff = (1.0/6.0) * LpvBlockSkyFalloff.xxxy; + return (nX1 + nX2 + nY1 + nY2 + nZ1 + nZ2) * avgFalloff; + } + + void PopulateSharedIndex(const in ivec3 imgCoordOffset, const in ivec3 workGroupOffset, const in uint i) { + ivec3 pos = workGroupOffset + ivec3(i / lpvFlatten) % 10; + + ivec3 lpvPos = imgCoordOffset + pos; + lpvSharedData[i] = GetLpvValue(lpvPos); + voxelSharedData[i] = GetVoxelBlock(lpvPos); + } + + void PopulateShared() { + uint i = uint(gl_LocalInvocationIndex) * 2u; + if (i >= 1000u) return; + + // ivec3 voxelOffset = GetLPVVoxelOffset(); + ivec3 imgCoordOffset = ivec3(0);//GetLPVFrameOffset(); + ivec3 workGroupOffset = ivec3(gl_WorkGroupID * gl_WorkGroupSize) - 1; + + PopulateSharedIndex(imgCoordOffset, workGroupOffset, i); + PopulateSharedIndex(imgCoordOffset, workGroupOffset, i + 1u); + } +#endif + + +////////////////////////////// VOID MAIN ////////////////////////////// + +void main() { + #ifdef IS_LPV_ENABLED + uvec3 chunkPos = gl_WorkGroupID * gl_WorkGroupSize; + if (any(greaterThanEqual(chunkPos, LpvSize3))) return; + + PopulateShared(); + + barrier(); + + ivec3 imgCoord = ivec3(gl_GlobalInvocationID); + if (any(greaterThanEqual(imgCoord, LpvSize3))) return; + + // vec3 blockLocalPos = gridCell * LIGHT_BIN_SIZE + blockCell - VoxelBlockCenter + cameraOffset + 0.5; + + // vec3 viewDir = gbufferModelViewInverse[2].xyz; + vec3 lpvCenter = vec3(0.0);//GetLpvCenter(cameraPosition, viewDir); + vec3 blockLocalPos = imgCoord - lpvCenter + 0.5; + + vec4 lightValue = vec4(0.0); + uint mixMask = 0xFFFF; + vec3 tint = vec3(1.0); + + uint blockId = voxelSharedData[getSharedCoord(ivec3(gl_LocalInvocationID) + 1)]; + float mixWeight = blockId == BLOCK_EMPTY ? 1.0 : 0.0; + + LpvBlockData blockData = LpvBlockMap[blockId]; + if (blockId > 0 && blockId != BLOCK_EMPTY) + ParseBlockLpvData(blockData.data, mixMask, mixWeight); + + #ifdef LPV_GLASS_TINT + if (blockId >= BLOCK_HONEY && blockId <= BLOCK_TINTED_GLASS) { + tint = GetLightGlassTint(blockId); + mixWeight = 1.0; + } + #endif + + if (mixWeight > EPSILON) { + vec4 lightMixed = mixNeighbours(ivec3(gl_LocalInvocationID), mixMask); + lightMixed.rgb *= mixWeight * tint; + lightValue += lightMixed; + } + + lightValue.rgb = RgbToHsv(lightValue.rgb); + lightValue.ba = log2(lightValue.ba + 1.0) / LpvBlockSkyRange; + + #if LIGHTING_MODE >= LIGHTING_MODE_FLOODFILL + if (blockId > 0 && blockId != BLOCK_EMPTY) { + //uint lightType = LpvBlockMap[blockId].lightType; + + //if (lightType != LIGHT_NONE && lightType != LIGHT_IGNORED) { + //StaticLightData lightInfo = StaticLightMap[lightType]; + vec3 lightColor = unpackUnorm4x8(blockData.LightColor).rgb; + vec2 lightRangeSize = unpackUnorm4x8(blockData.LightRangeSize).xy; + float lightRange = lightRangeSize.x * 255.0; + + lightColor = RGBToLinear(lightColor); + + // #ifdef LIGHTING_FLICKER + // vec2 lightNoise = GetDynLightNoise(cameraPosition + blockLocalPos); + // ApplyLightFlicker(lightColor, lightType, lightNoise); + // #endif + + lightValue.rgb = Lpv_RgbToHsv(lightColor, lightRange); + //} + } + #endif + + if (frameCounter % 2 == 0) + imageStore(imgLpv1, imgCoord, lightValue); + else + imageStore(imgLpv2, imgCoord, lightValue); + #endif +} From 2c4eea5b261a19b970a2f74b2ba3c20756526931 Mon Sep 17 00:00:00 2001 From: NULL511 Date: Wed, 1 May 2024 16:59:19 -0400 Subject: [PATCH 03/22] floodfill static block/light data --- shaders/lib/blocks.glsl | 792 +--------------------------------- shaders/lib/lpv_render.glsl | 216 ++++++++++ shaders/world0/setup.csh | 59 +++ shaders/world0/shadowcomp.csh | 36 +- 4 files changed, 287 insertions(+), 816 deletions(-) create mode 100644 shaders/lib/lpv_render.glsl create mode 100644 shaders/world0/setup.csh diff --git a/shaders/lib/blocks.glsl b/shaders/lib/blocks.glsl index 32db8cf..06492ab 100644 --- a/shaders/lib/blocks.glsl +++ b/shaders/lib/blocks.glsl @@ -1,790 +1,2 @@ -#define BLOCK_WATER 10 -#define BLOCK_ALLIUM 100 -#define BLOCK_AZALEA 101 -#define BLOCK_AZURE_BLUET 102 -#define BLOCK_BAMBOO 103 -#define BLOCK_BEETROOTS 104 -#define BLOCK_BIG_DRIPLEAF 105 -#define BLOCK_BIG_DRIPLEAF_STEM 106 -#define BLOCK_BLUE_ORCHID 107 -#define BLOCK_BROWN_MUSHROOM_PLANT 108 -#define BLOCK_CARROTS 109 -#define BLOCK_CAVE_VINE 110 -#define BLOCK_CHORUS_FLOWER 111 -#define BLOCK_CORNFLOWER 112 -#define BLOCK_CRIMSON_FUNGUS 113 -#define BLOCK_CRIMSON_ROOTS 114 -#define BLOCK_DANDELION 115 -#define BLOCK_DEAD_BUSH 116 -#define BLOCK_FERN 117 -#define BLOCK_GRASS 118 -#define BLOCK_HANGING_ROOTS 119 -#define BLOCK_KELP 120 -#define BLOCK_LARGE_FERN_LOWER 121 -#define BLOCK_LARGE_FERN_UPPER 122 -#define BLOCK_LILAC_LOWER 123 -#define BLOCK_LILAC_UPPER 124 -#define BLOCK_LILY_OF_THE_VALLEY 125 -#define BLOCK_LILY_PAD 126 -#define BLOCK_MANGROVE_PROPAGULE 127 -#define BLOCK_NETHER_SPROUTS 128 -#define BLOCK_NETHER_WART 129 -#define BLOCK_OXEYE_DAISY 130 -#define BLOCK_PEONY_LOWER 131 -#define BLOCK_PEONY_UPPER 132 -#define BLOCK_PINK_PETALS 133 -#define BLOCK_PITCHER_CROP 134 -#define BLOCK_PITCHER_PLANT 135 -#define BLOCK_POPPY 136 -#define BLOCK_POTATOES 137 -#define BLOCK_RED_MUSHROOM_PLANT 138 -#define BLOCK_ROSE_BUSH_LOWER 139 -#define BLOCK_ROSE_BUSH_UPPER 140 -#define BLOCK_SAPLING 141 -#define BLOCK_SCULK_VEIN 142 -#define BLOCK_SEA_PICKLE_DRY_1 143 -#define BLOCK_SEA_PICKLE_DRY_2 144 -#define BLOCK_SEA_PICKLE_DRY_3 145 -#define BLOCK_SEA_PICKLE_DRY_4 146 -#define BLOCK_SEAGRASS 147 -#define BLOCK_SMALL_DRIPLEAF 148 -#define BLOCK_SPORE_BLOSSOM 149 -#define BLOCK_SUGAR_CANE 150 -#define BLOCK_SUNFLOWER_LOWER 151 -#define BLOCK_SUNFLOWER_UPPER 152 -#define BLOCK_SWEET_BERRY_BUSH 153 -#define BLOCK_TALL_GRASS_LOWER 154 -#define BLOCK_TALL_GRASS_UPPER 155 -#define BLOCK_TORCHFLOWER 156 -#define BLOCK_TULIP 157 -#define BLOCK_TWISTING_VINES 158 -#define BLOCK_VINE 159 -#define BLOCK_WARPED_FUNGUS 160 -#define BLOCK_WARPED_ROOTS 161 -#define BLOCK_WEEPING_VINES 162 -#define BLOCK_WHEAT 163 -#define BLOCK_WITHER_ROSE 164 -#define BLOCK_MUSHROOM_SPORES 165 -#define BLOCK_AMETHYST 200 -#define BLOCK_AMETHYST_BUD_LARGE 201 -#define BLOCK_AMETHYST_BUD_MEDIUM 202 -#define BLOCK_AMETHYST_BUD_SMALL 203 -#define BLOCK_AMETHYST_CLUSTER 204 -#define BLOCK_BEACON 205 -#define BLOCK_BLAST_FURNACE_LIT_N 206 -#define BLOCK_BLAST_FURNACE_LIT_E 207 -#define BLOCK_BLAST_FURNACE_LIT_S 208 -#define BLOCK_BLAST_FURNACE_LIT_W 209 -#define BLOCK_BREWING_STAND 210 -#define BLOCK_CAMPFIRE_LIT_N_S 211 -#define BLOCK_CAMPFIRE_LIT_W_E 212 -#define BLOCK_CAVEVINE_BERRIES 213 -#define BLOCK_COMPARATOR_LIT 214 -#define BLOCK_COPPER_BULB_LIT 215 -#define BLOCK_COPPER_BULB_EXPOSED_LIT 216 -#define BLOCK_COPPER_BULB_OXIDIZED_LIT 217 -#define BLOCK_COPPER_BULB_WEATHERED_LIT 218 -#define BLOCK_CRYING_OBSIDIAN 219 -#define BLOCK_DIAMOND 220 -#define BLOCK_EMERALD 221 -#define BLOCK_END_ROD 222 -#define BLOCK_FIRE 223 -#define BLOCK_FROGLIGHT_OCHRE 224 -#define BLOCK_FROGLIGHT_PEARLESCENT 225 -#define BLOCK_FROGLIGHT_VERDANT 226 -#define BLOCK_FURNACE_LIT_N 227 -#define BLOCK_FURNACE_LIT_E 228 -#define BLOCK_FURNACE_LIT_S 229 -#define BLOCK_FURNACE_LIT_W 230 -#define BLOCK_GLOWSTONE 231 -#define BLOCK_GLOW_LICHEN 232 -#define BLOCK_LAPIS 233 -#define BLOCK_JACK_O_LANTERN_N 234 -#define BLOCK_JACK_O_LANTERN_E 235 -#define BLOCK_JACK_O_LANTERN_S 236 -#define BLOCK_JACK_O_LANTERN_W 237 -#define BLOCK_LANTERN_CEIL 238 -#define BLOCK_LANTERN_FLOOR 239 -#define BLOCK_LAVA 240 -#define BLOCK_LIGHT_1 241 -#define BLOCK_LIGHT_2 242 -#define BLOCK_LIGHT_3 243 -#define BLOCK_LIGHT_4 244 -#define BLOCK_LIGHT_5 245 -#define BLOCK_LIGHT_6 246 -#define BLOCK_LIGHT_7 247 -#define BLOCK_LIGHT_8 248 -#define BLOCK_LIGHT_9 249 -#define BLOCK_LIGHT_10 250 -#define BLOCK_LIGHT_11 251 -#define BLOCK_LIGHT_12 252 -#define BLOCK_LIGHT_13 253 -#define BLOCK_LIGHT_14 254 -#define BLOCK_LIGHT_15 255 -#define BLOCK_LIGHTING_ROD_POWERED 256 -#define BLOCK_MAGMA 257 -#define BLOCK_NETHER_PORTAL 258 -#define BLOCK_RAIL_POWERED 259 -#define BLOCK_REDSTONE 260 -#define BLOCK_REDSTONE_ILLUMINATOR_14 261 -#define BLOCK_REDSTONE_ILLUMINATOR_13 262 -#define BLOCK_REDSTONE_ILLUMINATOR_12 263 -#define BLOCK_REDSTONE_ILLUMINATOR_11 264 -#define BLOCK_REDSTONE_ILLUMINATOR_10 265 -#define BLOCK_REDSTONE_ILLUMINATOR_9 266 -#define BLOCK_REDSTONE_ILLUMINATOR_8 267 -#define BLOCK_REDSTONE_ILLUMINATOR_7 268 -#define BLOCK_REDSTONE_ILLUMINATOR_6 269 -#define BLOCK_REDSTONE_ILLUMINATOR_5 270 -#define BLOCK_REDSTONE_ILLUMINATOR_4 271 -#define BLOCK_REDSTONE_ILLUMINATOR_3 272 -#define BLOCK_REDSTONE_ILLUMINATOR_2 273 -#define BLOCK_REDSTONE_ILLUMINATOR_1 274 -#define BLOCK_REDSTONE_ILLUMINATOR_0 275 -#define BLOCK_REDSTONE_LAMP_LIT 276 -#define BLOCK_REDSTONE_ORE_LIT 277 -#define BLOCK_REDSTONE_TORCH_FLOOR_LIT 278 -#define BLOCK_REDSTONE_TORCH_WALL_N_LIT 279 -#define BLOCK_REDSTONE_TORCH_WALL_E_LIT 280 -#define BLOCK_REDSTONE_TORCH_WALL_S_LIT 281 -#define BLOCK_REDSTONE_TORCH_WALL_W_LIT 282 -#define BLOCK_REDSTONE_WIRE_1 283 -#define BLOCK_REDSTONE_WIRE_2 284 -#define BLOCK_REDSTONE_WIRE_3 285 -#define BLOCK_REDSTONE_WIRE_4 286 -#define BLOCK_REDSTONE_WIRE_5 287 -#define BLOCK_REDSTONE_WIRE_6 288 -#define BLOCK_REDSTONE_WIRE_7 289 -#define BLOCK_REDSTONE_WIRE_8 290 -#define BLOCK_REDSTONE_WIRE_9 291 -#define BLOCK_REDSTONE_WIRE_10 292 -#define BLOCK_REDSTONE_WIRE_11 293 -#define BLOCK_REDSTONE_WIRE_12 294 -#define BLOCK_REDSTONE_WIRE_13 295 -#define BLOCK_REDSTONE_WIRE_14 296 -#define BLOCK_REDSTONE_WIRE_15 297 -#define BLOCK_REPEATER_LIT 298 -#define BLOCK_RESPAWN_ANCHOR_4 299 -#define BLOCK_RESPAWN_ANCHOR_3 300 -#define BLOCK_RESPAWN_ANCHOR_2 301 -#define BLOCK_RESPAWN_ANCHOR_1 302 -#define BLOCK_SCULK_CATALYST 303 -#define BLOCK_SEA_LANTERN 304 -#define BLOCK_SEA_PICKLE_WET_1 305 -#define BLOCK_SEA_PICKLE_WET_2 306 -#define BLOCK_SEA_PICKLE_WET_3 307 -#define BLOCK_SEA_PICKLE_WET_4 308 -#define BLOCK_SHROOMLIGHT 309 -#define BLOCK_SMOKER_LIT_N 310 -#define BLOCK_SMOKER_LIT_E 311 -#define BLOCK_SMOKER_LIT_S 312 -#define BLOCK_SMOKER_LIT_W 313 -#define BLOCK_SOUL_CAMPFIRE_LIT_N_S 314 -#define BLOCK_SOUL_CAMPFIRE_LIT_W_E 315 -#define BLOCK_SOUL_FIRE 316 -#define BLOCK_SOUL_LANTERN_CEIL 317 -#define BLOCK_SOUL_LANTERN_FLOOR 318 -#define BLOCK_SOUL_TORCH_FLOOR 319 -#define BLOCK_SOUL_TORCH_WALL_N 320 -#define BLOCK_SOUL_TORCH_WALL_E 321 -#define BLOCK_SOUL_TORCH_WALL_S 322 -#define BLOCK_SOUL_TORCH_WALL_W 323 -#define BLOCK_TORCH_FLOOR 324 -#define BLOCK_TORCH_WALL_N 325 -#define BLOCK_TORCH_WALL_E 326 -#define BLOCK_TORCH_WALL_S 327 -#define BLOCK_TORCH_WALL_W 328 -#define BLOCK_CREATE_XP 329 -#define BLOCK_ROSE_QUARTZ_LAMP_LIT 330 -#define BLOCK_DECO_LAMP_BLUE_LIT 331 -#define BLOCK_DECO_LAMP_GREEN_LIT 332 -#define BLOCK_DECO_LAMP_RED_LIT 333 -#define BLOCK_DECO_LAMP_YELLOW_LIT 334 -#define BLOCK_STREET_LAMP_LIT 335 -#define BLOCK_SOUL_STREET_LAMP_LIT 336 -#define BLOCK_PAPER_LAMP_LIT_BLACK 337 -#define BLOCK_PAPER_LAMP_LIT_BLUE 338 -#define BLOCK_PAPER_LAMP_LIT_BROWN 339 -#define BLOCK_PAPER_LAMP_LIT_CYAN 340 -#define BLOCK_PAPER_LAMP_LIT_GRAY 341 -#define BLOCK_PAPER_LAMP_LIT_GREEN 342 -#define BLOCK_PAPER_LAMP_LIT_LIGHT_BLUE 343 -#define BLOCK_PAPER_LAMP_LIT_LIGHT_GRAY 344 -#define BLOCK_PAPER_LAMP_LIT_LIME 345 -#define BLOCK_PAPER_LAMP_LIT_MAGENTA 346 -#define BLOCK_PAPER_LAMP_LIT_ORANGE 347 -#define BLOCK_PAPER_LAMP_LIT_PINK 348 -#define BLOCK_PAPER_LAMP_LIT_PURPLE 349 -#define BLOCK_PAPER_LAMP_LIT_RED 350 -#define BLOCK_PAPER_LAMP_LIT_WHITE 351 -#define BLOCK_PAPER_LAMP_LIT_YELLOW 352 -#define BLOCK_LAMP_LIT_BLACK 353 -#define BLOCK_LAMP_LIT_BLUE 354 -#define BLOCK_LAMP_LIT_BROWN 355 -#define BLOCK_LAMP_LIT_CYAN 356 -#define BLOCK_LAMP_LIT_GRAY 357 -#define BLOCK_LAMP_LIT_GREEN 358 -#define BLOCK_LAMP_LIT_LIGHT_BLUE 359 -#define BLOCK_LAMP_LIT_LIGHT_GRAY 360 -#define BLOCK_LAMP_LIT_LIME 361 -#define BLOCK_LAMP_LIT_MAGENTA 362 -#define BLOCK_LAMP_LIT_ORANGE 363 -#define BLOCK_LAMP_LIT_PINK 364 -#define BLOCK_LAMP_LIT_PURPLE 365 -#define BLOCK_LAMP_LIT_RED 366 -#define BLOCK_LAMP_LIT_WHITE 367 -#define BLOCK_LAMP_LIT_YELLOW 368 -#define BLOCK_CEILING_LIGHT_LIT_BLACK 369 -#define BLOCK_CEILING_LIGHT_LIT_BLUE 370 -#define BLOCK_CEILING_LIGHT_LIT_BROWN 371 -#define BLOCK_CEILING_LIGHT_LIT_CYAN 372 -#define BLOCK_CEILING_LIGHT_LIT_GRAY 373 -#define BLOCK_CEILING_LIGHT_LIT_GREEN 374 -#define BLOCK_CEILING_LIGHT_LIT_LIGHT_BLUE 375 -#define BLOCK_CEILING_LIGHT_LIT_LIGHT_GRAY 376 -#define BLOCK_CEILING_LIGHT_LIT_LIME 377 -#define BLOCK_CEILING_LIGHT_LIT_MAGENTA 378 -#define BLOCK_CEILING_LIGHT_LIT_ORANGE 379 -#define BLOCK_CEILING_LIGHT_LIT_PINK 380 -#define BLOCK_CEILING_LIGHT_LIT_PURPLE 381 -#define BLOCK_CEILING_LIGHT_LIT_RED 382 -#define BLOCK_CEILING_LIGHT_LIT_WHITE 383 -#define BLOCK_CEILING_LIGHT_LIT_YELLOW 384 -#define BLOCK_END_STONE_LAMP 385 -#define BLOCK_ANVIL_N_S 400 -#define BLOCK_ANVIL_W_E 401 -#define BLOCK_BED_HEAD_N 402 -#define BLOCK_BED_HEAD_E 403 -#define BLOCK_BED_HEAD_S 404 -#define BLOCK_BED_HEAD_W 405 -#define BLOCK_BED_FOOT_N 406 -#define BLOCK_BED_FOOT_E 407 -#define BLOCK_BED_FOOT_S 408 -#define BLOCK_BED_FOOT_W 409 -#define BLOCK_BELL_FLOOR_N_S 410 -#define BLOCK_BELL_FLOOR_W_E 411 -#define BLOCK_BELL_WALL_N 412 -#define BLOCK_BELL_WALL_E 413 -#define BLOCK_BELL_WALL_S 414 -#define BLOCK_BELL_WALL_W 415 -#define BLOCK_BELL_WALL_N_S 416 -#define BLOCK_BELL_WALL_W_E 417 -#define BLOCK_BELL_CEILING 418 -#define BLOCK_CACTUS 419 -#define BLOCK_CAKE 420 -#define BLOCK_CAMPFIRE_N_S 421 -#define BLOCK_CAMPFIRE_W_E 422 -#define BLOCK_CANDLE_CAKE 423 -#define BLOCK_CANDLE_CAKE_LIT 424 -#define BLOCK_CANDLES_1 425 -#define BLOCK_CANDLES_2 426 -#define BLOCK_CANDLES_3 427 -#define BLOCK_CANDLES_4 428 -#define BLOCK_PLAIN_CANDLES_LIT_1 429 -#define BLOCK_PLAIN_CANDLES_LIT_2 430 -#define BLOCK_PLAIN_CANDLES_LIT_3 431 -#define BLOCK_PLAIN_CANDLES_LIT_4 432 -#define BLOCK_BLACK_CANDLES_LIT_1 433 -#define BLOCK_BLACK_CANDLES_LIT_2 434 -#define BLOCK_BLACK_CANDLES_LIT_3 435 -#define BLOCK_BLACK_CANDLES_LIT_4 436 -#define BLOCK_BLUE_CANDLES_LIT_1 437 -#define BLOCK_BLUE_CANDLES_LIT_2 438 -#define BLOCK_BLUE_CANDLES_LIT_3 439 -#define BLOCK_BLUE_CANDLES_LIT_4 440 -#define BLOCK_BROWN_CANDLES_LIT_1 441 -#define BLOCK_BROWN_CANDLES_LIT_2 442 -#define BLOCK_BROWN_CANDLES_LIT_3 443 -#define BLOCK_BROWN_CANDLES_LIT_4 444 -#define BLOCK_CYAN_CANDLES_LIT_1 445 -#define BLOCK_CYAN_CANDLES_LIT_2 446 -#define BLOCK_CYAN_CANDLES_LIT_3 447 -#define BLOCK_CYAN_CANDLES_LIT_4 448 -#define BLOCK_GRAY_CANDLES_LIT_1 449 -#define BLOCK_GRAY_CANDLES_LIT_2 450 -#define BLOCK_GRAY_CANDLES_LIT_3 451 -#define BLOCK_GRAY_CANDLES_LIT_4 452 -#define BLOCK_GREEN_CANDLES_LIT_1 453 -#define BLOCK_GREEN_CANDLES_LIT_2 454 -#define BLOCK_GREEN_CANDLES_LIT_3 455 -#define BLOCK_GREEN_CANDLES_LIT_4 456 -#define BLOCK_LIGHT_BLUE_CANDLES_LIT_1 457 -#define BLOCK_LIGHT_BLUE_CANDLES_LIT_2 458 -#define BLOCK_LIGHT_BLUE_CANDLES_LIT_3 459 -#define BLOCK_LIGHT_BLUE_CANDLES_LIT_4 460 -#define BLOCK_LIGHT_GRAY_CANDLES_LIT_1 461 -#define BLOCK_LIGHT_GRAY_CANDLES_LIT_2 462 -#define BLOCK_LIGHT_GRAY_CANDLES_LIT_3 463 -#define BLOCK_LIGHT_GRAY_CANDLES_LIT_4 464 -#define BLOCK_LIME_CANDLES_LIT_1 465 -#define BLOCK_LIME_CANDLES_LIT_2 466 -#define BLOCK_LIME_CANDLES_LIT_3 467 -#define BLOCK_LIME_CANDLES_LIT_4 468 -#define BLOCK_MAGENTA_CANDLES_LIT_1 469 -#define BLOCK_MAGENTA_CANDLES_LIT_2 470 -#define BLOCK_MAGENTA_CANDLES_LIT_3 471 -#define BLOCK_MAGENTA_CANDLES_LIT_4 472 -#define BLOCK_ORANGE_CANDLES_LIT_1 473 -#define BLOCK_ORANGE_CANDLES_LIT_2 474 -#define BLOCK_ORANGE_CANDLES_LIT_3 475 -#define BLOCK_ORANGE_CANDLES_LIT_4 476 -#define BLOCK_PINK_CANDLES_LIT_1 477 -#define BLOCK_PINK_CANDLES_LIT_2 478 -#define BLOCK_PINK_CANDLES_LIT_3 479 -#define BLOCK_PINK_CANDLES_LIT_4 480 -#define BLOCK_PURPLE_CANDLES_LIT_1 481 -#define BLOCK_PURPLE_CANDLES_LIT_2 482 -#define BLOCK_PURPLE_CANDLES_LIT_3 483 -#define BLOCK_PURPLE_CANDLES_LIT_4 484 -#define BLOCK_RED_CANDLES_LIT_1 485 -#define BLOCK_RED_CANDLES_LIT_2 486 -#define BLOCK_RED_CANDLES_LIT_3 487 -#define BLOCK_RED_CANDLES_LIT_4 488 -#define BLOCK_WHITE_CANDLES_LIT_1 489 -#define BLOCK_WHITE_CANDLES_LIT_2 490 -#define BLOCK_WHITE_CANDLES_LIT_3 491 -#define BLOCK_WHITE_CANDLES_LIT_4 492 -#define BLOCK_YELLOW_CANDLES_LIT_1 493 -#define BLOCK_YELLOW_CANDLES_LIT_2 494 -#define BLOCK_YELLOW_CANDLES_LIT_3 495 -#define BLOCK_YELLOW_CANDLES_LIT_4 496 -#define BLOCK_CANDLES_LIT_1 497 -#define BLOCK_CANDLES_LIT_2 498 -#define BLOCK_CANDLES_LIT_3 499 -#define BLOCK_CANDLES_LIT_4 500 -#define BLOCK_CANDLE_HOLDER_LIT_1 501 -#define BLOCK_CANDLE_HOLDER_LIT_2 502 -#define BLOCK_CANDLE_HOLDER_LIT_3 503 -#define BLOCK_CANDLE_HOLDER_LIT_4 504 -#define BLOCK_CARPET 505 -#define BLOCK_CAULDRON 506 -#define BLOCK_CAULDRON_LAVA 507 -#define BLOCK_CHEST_N 508 -#define BLOCK_CHEST_E 509 -#define BLOCK_CHEST_S 510 -#define BLOCK_CHEST_W 511 -#define BLOCK_CHEST_LEFT_N 512 -#define BLOCK_CHEST_LEFT_E 513 -#define BLOCK_CHEST_LEFT_S 514 -#define BLOCK_CHEST_LEFT_W 515 -#define BLOCK_CHEST_RIGHT_N 516 -#define BLOCK_CHEST_RIGHT_E 517 -#define BLOCK_CHEST_RIGHT_S 518 -#define BLOCK_CHEST_RIGHT_W 519 -#define BLOCK_COCOA_0_N 520 -#define BLOCK_COCOA_0_E 521 -#define BLOCK_COCOA_0_W 522 -#define BLOCK_COCOA_0_S 523 -#define BLOCK_COCOA_1_N 524 -#define BLOCK_COCOA_1_E 525 -#define BLOCK_COCOA_1_W 526 -#define BLOCK_COCOA_1_S 527 -#define BLOCK_COCOA_2_N 528 -#define BLOCK_COCOA_2_E 529 -#define BLOCK_COCOA_2_W 530 -#define BLOCK_COCOA_2_S 531 -#define BLOCK_COMPARATOR 532 -#define BLOCK_COMPOSTER 533 -#define BLOCK_DAYLIGHT_DETECTOR 534 -#define BLOCK_DECORATED_POT 535 -#define BLOCK_ENCHANTING_TABLE 536 -#define BLOCK_END_PORTAL_FRAME 537 -#define BLOCK_FLOWER_POT 538 -#define BLOCK_GRINDSTONE_FLOOR_N_S 539 -#define BLOCK_GRINDSTONE_FLOOR_W_E 540 -#define BLOCK_GRINDSTONE_WALL_N 541 -#define BLOCK_GRINDSTONE_WALL_E 542 -#define BLOCK_GRINDSTONE_WALL_S 543 -#define BLOCK_GRINDSTONE_WALL_W 544 -#define BLOCK_HOPPER_DOWN 545 -#define BLOCK_HOPPER_N 546 -#define BLOCK_HOPPER_E 547 -#define BLOCK_HOPPER_S 548 -#define BLOCK_HOPPER_W 549 -#define BLOCK_LECTERN 550 -#define BLOCK_LIGHTNING_ROD_N 551 -#define BLOCK_LIGHTNING_ROD_E 552 -#define BLOCK_LIGHTNING_ROD_S 553 -#define BLOCK_LIGHTNING_ROD_W 554 -#define BLOCK_LIGHTNING_ROD_UP 555 -#define BLOCK_LIGHTNING_ROD_DOWN 556 -#define BLOCK_PATHWAY 557 -#define BLOCK_PISTON_EXTENDED_N 558 -#define BLOCK_PISTON_EXTENDED_E 559 -#define BLOCK_PISTON_EXTENDED_S 560 -#define BLOCK_PISTON_EXTENDED_W 561 -#define BLOCK_PISTON_EXTENDED_UP 562 -#define BLOCK_PISTON_EXTENDED_DOWN 563 -#define BLOCK_PISTON_HEAD_N 564 -#define BLOCK_PISTON_HEAD_E 565 -#define BLOCK_PISTON_HEAD_S 566 -#define BLOCK_PISTON_HEAD_W 567 -#define BLOCK_PISTON_HEAD_UP 568 -#define BLOCK_PISTON_HEAD_DOWN 569 -#define BLOCK_POTTED_PLANT 570 -#define BLOCK_PRESSURE_PLATE 571 -#define BLOCK_PRESSURE_PLATE_DOWN 572 -#define BLOCK_REPEATER 573 -#define BLOCK_SCULK_SENSOR 574 -#define BLOCK_SCULK_SHRIEKER 575 -#define BLOCK_SHULKER_BOX 576 -#define BLOCK_SIGN_WALL_N 577 -#define BLOCK_SIGN_WALL_E 578 -#define BLOCK_SIGN_WALL_S 579 -#define BLOCK_SIGN_WALL_W 580 -#define BLOCK_SNIFFER_EGG 581 -#define BLOCK_SNOW_LAYERS_1 582 -#define BLOCK_SNOW_LAYERS_2 583 -#define BLOCK_SNOW_LAYERS_3 584 -#define BLOCK_SNOW_LAYERS_4 585 -#define BLOCK_SNOW_LAYERS_5 586 -#define BLOCK_SNOW_LAYERS_6 587 -#define BLOCK_SNOW_LAYERS_7 588 -#define BLOCK_STONECUTTER 589 -#define BLOCK_CREATE_BASIN 590 -#define BLOCK_CREATE_BLAZE_BURNER 591 -#define BLOCK_CREATE_CHUTE 592 -#define BLOCK_CREATE_CLUTCH_X 593 -#define BLOCK_CREATE_CLUTCH_Y 594 -#define BLOCK_CREATE_CLUTCH_Z 595 -#define BLOCK_CREATE_CONTENT_OBSERVER_N 596 -#define BLOCK_CREATE_CONTENT_OBSERVER_E 597 -#define BLOCK_CREATE_CONTENT_OBSERVER_S 598 -#define BLOCK_CREATE_CONTENT_OBSERVER_W 599 -#define BLOCK_CREATE_COPYCAT_PANEL_N 600 -#define BLOCK_CREATE_COPYCAT_PANEL_E 601 -#define BLOCK_CREATE_COPYCAT_PANEL_S 602 -#define BLOCK_CREATE_COPYCAT_PANEL_W 603 -#define BLOCK_CREATE_COPYCAT_PANEL_UP 604 -#define BLOCK_CREATE_COPYCAT_PANEL_DOWN 605 -#define BLOCK_CREATE_COPYCAT_STEP_BOTTOM_N 606 -#define BLOCK_CREATE_COPYCAT_STEP_BOTTOM_E 607 -#define BLOCK_CREATE_COPYCAT_STEP_BOTTOM_S 608 -#define BLOCK_CREATE_COPYCAT_STEP_BOTTOM_W 609 -#define BLOCK_CREATE_COPYCAT_STEP_TOP_N 610 -#define BLOCK_CREATE_COPYCAT_STEP_TOP_E 611 -#define BLOCK_CREATE_COPYCAT_STEP_TOP_S 612 -#define BLOCK_CREATE_COPYCAT_STEP_TOP_W 613 -#define BLOCK_CREATE_DEPOT 614 -#define BLOCK_CREATE_DISPLAY_BOARD_N_S 615 -#define BLOCK_CREATE_DISPLAY_BOARD_W_E 616 -#define BLOCK_CREATE_ENCASED_FAN_N 617 -#define BLOCK_CREATE_ENCASED_FAN_E 618 -#define BLOCK_CREATE_ENCASED_FAN_S 619 -#define BLOCK_CREATE_ENCASED_FAN_W 620 -#define BLOCK_CREATE_ENCASED_FAN_UP 621 -#define BLOCK_CREATE_ENCASED_FAN_DOWN 622 -#define BLOCK_CREATE_GEARBOX_X 623 -#define BLOCK_CREATE_GEARBOX_Y 624 -#define BLOCK_CREATE_GEARBOX_Z 625 -#define BLOCK_CREATE_GEARSHIFT_X 626 -#define BLOCK_CREATE_GEARSHIFT_Y 627 -#define BLOCK_CREATE_GEARSHIFT_Z 628 -#define BLOCK_CREATE_GIRDER_X 629 -#define BLOCK_CREATE_GIRDER_X_TOP 630 -#define BLOCK_CREATE_GIRDER_X_BOTTOM 631 -#define BLOCK_CREATE_GIRDER_X_TOP_BOTTOM 632 -#define BLOCK_CREATE_GIRDER_Y 633 -#define BLOCK_CREATE_GIRDER_Z 634 -#define BLOCK_CREATE_GIRDER_Z_TOP 635 -#define BLOCK_CREATE_GIRDER_Z_BOTTOM 636 -#define BLOCK_CREATE_GIRDER_Z_TOP_BOTTOM 637 -#define BLOCK_CREATE_GIRDER_XZ 638 -#define BLOCK_CREATE_ITEM_DRAIN 639 -#define BLOCK_CREATE_MILLSTONE 640 -#define BLOCK_CREATE_NIXIE_TUBE_FLOOR_N_S 641 -#define BLOCK_CREATE_NIXIE_TUBE_FLOOR_W_E 642 -#define BLOCK_CREATE_NIXIE_TUBE_CEIL_N_S 643 -#define BLOCK_CREATE_NIXIE_TUBE_CEIL_W_E 644 -#define BLOCK_CREATE_NIXIE_TUBE_WALL_N 645 -#define BLOCK_CREATE_NIXIE_TUBE_WALL_E 646 -#define BLOCK_CREATE_NIXIE_TUBE_WALL_S 647 -#define BLOCK_CREATE_NIXIE_TUBE_WALL_W 648 -#define BLOCK_CREATE_PIPE_U_D 649 -#define BLOCK_CREATE_PIPE_N_S 650 -#define BLOCK_CREATE_PIPE_W_E 651 -#define BLOCK_CREATE_PIPE_N_W 652 -#define BLOCK_CREATE_PIPE_N_E 653 -#define BLOCK_CREATE_PIPE_S_W 654 -#define BLOCK_CREATE_PIPE_S_E 655 -#define BLOCK_CREATE_PIPE_U_N 656 -#define BLOCK_CREATE_PIPE_U_E 657 -#define BLOCK_CREATE_PIPE_U_S 658 -#define BLOCK_CREATE_PIPE_U_W 659 -#define BLOCK_CREATE_PIPE_D_N 660 -#define BLOCK_CREATE_PIPE_D_E 661 -#define BLOCK_CREATE_PIPE_D_S 662 -#define BLOCK_CREATE_PIPE_D_W 663 -#define BLOCK_CREATE_SCAFFOLDING_BOTTOM 664 -#define BLOCK_CREATE_SEAT 665 -#define BLOCK_CREATE_SHAFT_X 666 -#define BLOCK_CREATE_SHAFT_Y 667 -#define BLOCK_CREATE_SHAFT_Z 668 -#define BLOCK_CREATE_SPEED_CONTROLLER_X 669 -#define BLOCK_CREATE_SPEED_CONTROLLER_Z 670 -#define BLOCK_CREATE_SPOUT 671 -#define BLOCK_CREATE_SUPPORT_VERTICAL 672 -#define BLOCK_CREATE_SUPPORT_N_S 673 -#define BLOCK_CREATE_SUPPORT_W_E 674 -#define BLOCK_CREATE_TRACK_SIGNAL 675 -#define BLOCK_CREATE_TRACK_STATION 676 -#define BLOCK_CREATE_WEIGHTED_EJECTOR_N_S 677 -#define BLOCK_CREATE_WEIGHTED_EJECTOR_W_E 678 -#define BLOCK_CRANK_UP 679 -#define BLOCK_CRANK_DOWN 680 -#define BLOCK_CRANK_N 681 -#define BLOCK_CRANK_E 682 -#define BLOCK_CRANK_S 683 -#define BLOCK_CRANK_W 684 -#define BLOCK_FAUCET_N 685 -#define BLOCK_FAUCET_E 686 -#define BLOCK_FAUCET_S 687 -#define BLOCK_FAUCET_W 688 -#define BLOCK_BUTTON_FLOOR_N_S 689 -#define BLOCK_BUTTON_FLOOR_W_E 690 -#define BLOCK_BUTTON_CEILING_N_S 691 -#define BLOCK_BUTTON_CEILING_W_E 692 -#define BLOCK_BUTTON_WALL_N 693 -#define BLOCK_BUTTON_WALL_E 694 -#define BLOCK_BUTTON_WALL_S 695 -#define BLOCK_BUTTON_WALL_W 696 -#define BLOCK_CHORUS_DOWN 697 -#define BLOCK_CHORUS_UP_DOWN 698 -#define BLOCK_CHORUS_OTHER 699 -#define BLOCK_DOOR_N 700 -#define BLOCK_DOOR_E 701 -#define BLOCK_DOOR_S 702 -#define BLOCK_DOOR_W 703 -#define BLOCK_TRAPDOOR_BOTTOM 704 -#define BLOCK_TRAPDOOR_MIN 704 -#define BLOCK_TRAPDOOR_TOP 705 -#define BLOCK_TRAPDOOR_N 706 -#define BLOCK_TRAPDOOR_E 707 -#define BLOCK_TRAPDOOR_S 708 -#define BLOCK_TRAPDOOR_W 709 -#define BLOCK_TRAPDOOR_MAX 709 -#define BLOCK_LEVER_FLOOR_N_S 710 -#define BLOCK_LEVER_FLOOR_W_E 711 -#define BLOCK_LEVER_CEILING_N_S 712 -#define BLOCK_LEVER_CEILING_W_E 713 -#define BLOCK_LEVER_WALL_N 714 -#define BLOCK_LEVER_WALL_E 715 -#define BLOCK_LEVER_WALL_S 716 -#define BLOCK_LEVER_WALL_W 717 -#define BLOCK_TRIPWIRE_HOOK_N 718 -#define BLOCK_TRIPWIRE_HOOK_E 719 -#define BLOCK_TRIPWIRE_HOOK_S 720 -#define BLOCK_TRIPWIRE_HOOK_W 721 -#define BLOCK_SLAB_TOP 722 -#define BLOCK_SLAB_BOTTOM 723 -#define BLOCK_SLAB_VERTICAL_N 724 -#define BLOCK_SLAB_VERTICAL_E 725 -#define BLOCK_SLAB_VERTICAL_S 726 -#define BLOCK_SLAB_VERTICAL_W 727 -#define BLOCK_STAIRS_BOTTOM_N 728 -#define BLOCK_STAIRS_MIN 728 -#define BLOCK_STAIRS_BOTTOM_E 729 -#define BLOCK_STAIRS_BOTTOM_S 730 -#define BLOCK_STAIRS_BOTTOM_W 731 -#define BLOCK_STAIRS_BOTTOM_INNER_S_E 732 -#define BLOCK_STAIRS_BOTTOM_INNER_S_W 733 -#define BLOCK_STAIRS_BOTTOM_INNER_N_W 734 -#define BLOCK_STAIRS_BOTTOM_INNER_N_E 735 -#define BLOCK_STAIRS_BOTTOM_OUTER_N_W 736 -#define BLOCK_STAIRS_BOTTOM_OUTER_N_E 737 -#define BLOCK_STAIRS_BOTTOM_OUTER_S_E 738 -#define BLOCK_STAIRS_BOTTOM_OUTER_S_W 739 -#define BLOCK_STAIRS_TOP_N 740 -#define BLOCK_STAIRS_TOP_E 741 -#define BLOCK_STAIRS_TOP_S 742 -#define BLOCK_STAIRS_TOP_W 743 -#define BLOCK_STAIRS_TOP_INNER_S_E 744 -#define BLOCK_STAIRS_TOP_INNER_S_W 745 -#define BLOCK_STAIRS_TOP_INNER_N_W 746 -#define BLOCK_STAIRS_TOP_INNER_N_E 747 -#define BLOCK_STAIRS_TOP_OUTER_N_W 748 -#define BLOCK_STAIRS_TOP_OUTER_N_E 749 -#define BLOCK_STAIRS_TOP_OUTER_S_E 750 -#define BLOCK_STAIRS_TOP_OUTER_S_W 751 -#define BLOCK_STAIRS_MAX 751 -#define BLOCK_FENCE_POST 752 -#define BLOCK_FENCE_N 753 -#define BLOCK_FENCE_E 754 -#define BLOCK_FENCE_S 755 -#define BLOCK_FENCE_W 756 -#define BLOCK_FENCE_N_S 757 -#define BLOCK_FENCE_W_E 758 -#define BLOCK_FENCE_N_W 759 -#define BLOCK_FENCE_N_E 760 -#define BLOCK_FENCE_S_W 761 -#define BLOCK_FENCE_S_E 762 -#define BLOCK_FENCE_W_N_E 763 -#define BLOCK_FENCE_W_S_E 764 -#define BLOCK_FENCE_N_W_S 765 -#define BLOCK_FENCE_N_E_S 766 -#define BLOCK_FENCE_ALL 767 -#define BLOCK_FENCE_GATE_CLOSED_N_S 768 -#define BLOCK_FENCE_GATE_CLOSED_W_E 769 -#define BLOCK_WALL_POST 770 -#define BLOCK_WALL_MIN 770 -#define BLOCK_WALL_POST_LOW_N 771 -#define BLOCK_WALL_POST_LOW_E 772 -#define BLOCK_WALL_POST_LOW_S 773 -#define BLOCK_WALL_POST_LOW_W 774 -#define BLOCK_WALL_POST_LOW_N_S 775 -#define BLOCK_WALL_POST_LOW_W_E 776 -#define BLOCK_WALL_POST_LOW_N_W 777 -#define BLOCK_WALL_POST_LOW_N_E 778 -#define BLOCK_WALL_POST_LOW_S_W 779 -#define BLOCK_WALL_POST_LOW_S_E 780 -#define BLOCK_WALL_POST_LOW_N_W_S 781 -#define BLOCK_WALL_POST_LOW_N_E_S 782 -#define BLOCK_WALL_POST_LOW_W_N_E 783 -#define BLOCK_WALL_POST_LOW_W_S_E 784 -#define BLOCK_WALL_POST_LOW_ALL 785 -#define BLOCK_WALL_POST_TALL_N 786 -#define BLOCK_WALL_POST_TALL_E 787 -#define BLOCK_WALL_POST_TALL_S 788 -#define BLOCK_WALL_POST_TALL_W 789 -#define BLOCK_WALL_POST_TALL_N_S 790 -#define BLOCK_WALL_POST_TALL_W_E 791 -#define BLOCK_WALL_POST_TALL_N_W 792 -#define BLOCK_WALL_POST_TALL_N_E 793 -#define BLOCK_WALL_POST_TALL_S_W 794 -#define BLOCK_WALL_POST_TALL_S_E 795 -#define BLOCK_WALL_POST_TALL_N_W_S 796 -#define BLOCK_WALL_POST_TALL_N_E_S 797 -#define BLOCK_WALL_POST_TALL_W_N_E 798 -#define BLOCK_WALL_POST_TALL_W_S_E 799 -#define BLOCK_WALL_POST_TALL_ALL 800 -#define BLOCK_WALL_POST_TALL_N_LOW_S 801 -#define BLOCK_WALL_POST_TALL_E_LOW_W 802 -#define BLOCK_WALL_POST_TALL_S_LOW_N 803 -#define BLOCK_WALL_POST_TALL_W_LOW_E 804 -#define BLOCK_WALL_POST_TALL_N_S_LOW_W_E 805 -#define BLOCK_WALL_POST_TALL_W_E_LOW_N_S 806 -#define BLOCK_WALL_POST_TALL_N_W_LOW_S_E 807 -#define BLOCK_WALL_POST_TALL_N_E_LOW_S_W 808 -#define BLOCK_WALL_POST_TALL_S_W_LOW_N_E 809 -#define BLOCK_WALL_POST_TALL_S_E_LOW_N_W 810 -#define BLOCK_WALL_LOW_N_S 811 -#define BLOCK_WALL_LOW_W_E 812 -#define BLOCK_WALL_LOW_N_W 813 -#define BLOCK_WALL_LOW_N_E 814 -#define BLOCK_WALL_LOW_S_W 815 -#define BLOCK_WALL_LOW_S_E 816 -#define BLOCK_WALL_LOW_ALL 817 -#define BLOCK_WALL_TALL_N_S 818 -#define BLOCK_WALL_TALL_W_E 819 -#define BLOCK_WALL_TALL_N_W 820 -#define BLOCK_WALL_TALL_N_E 821 -#define BLOCK_WALL_TALL_S_W 822 -#define BLOCK_WALL_TALL_S_E 823 -#define BLOCK_WALL_TALL_ALL 824 -#define BLOCK_WALL_TALL_N_S_LOW_W_E 825 -#define BLOCK_WALL_TALL_W_E_LOW_N_S 826 -#define BLOCK_WALL_MAX 826 -#define BLOCK_HONEY 827 -#define BLOCK_LEAVES 828 -#define BLOCK_LEAVES_CHERRY 829 -#define BLOCK_POWDER_SNOW 830 -#define BLOCK_ROOTS 831 -#define BLOCK_SLIME 832 -#define BLOCK_SNOW 833 -#define BLOCK_STAINED_GLASS_BLACK 834 -#define BLOCK_STAINED_GLASS_BLUE 835 -#define BLOCK_STAINED_GLASS_BROWN 836 -#define BLOCK_STAINED_GLASS_CYAN 837 -#define BLOCK_STAINED_GLASS_GRAY 838 -#define BLOCK_STAINED_GLASS_GREEN 839 -#define BLOCK_STAINED_GLASS_LIGHT_BLUE 840 -#define BLOCK_STAINED_GLASS_LIGHT_GRAY 841 -#define BLOCK_STAINED_GLASS_LIME 842 -#define BLOCK_STAINED_GLASS_MAGENTA 843 -#define BLOCK_STAINED_GLASS_ORANGE 844 -#define BLOCK_STAINED_GLASS_PINK 845 -#define BLOCK_STAINED_GLASS_PURPLE 846 -#define BLOCK_STAINED_GLASS_RED 847 -#define BLOCK_STAINED_GLASS_WHITE 848 -#define BLOCK_STAINED_GLASS_YELLOW 849 -#define BLOCK_TINTED_GLASS 850 -#define BLOCK_CANDLE_HOLDER_UNLIT 851 -#define BLOCK_CHAIN 900 -#define BLOCK_COBWEB 901 -#define BLOCK_CORAL 902 -#define BLOCK_CORAL_FAN 903 -#define BLOCK_CORAL_WALL_FAN 904 -#define BLOCK_FENCE_GATE_OPEN 905 -#define BLOCK_GLASS 906 -#define BLOCK_GLASS_PANE 907 -#define BLOCK_ICE 908 -#define BLOCK_IRON_BARS 909 -#define BLOCK_LADDER 910 -#define BLOCK_LIGHT_0 911 -#define BLOCK_POINTED_DRIPSTONE 912 -#define BLOCK_RAIL 913 -#define BLOCK_REDSTONE_TORCH 914 -#define BLOCK_REDSTONE_WIRE 915 -#define BLOCK_SCAFFOLDING 916 -#define BLOCK_SPAWNER 917 -#define BLOCK_STEM 918 -#define BLOCK_TRIPWIRE 919 -#define BLOCK_TURTLE_EGG 920 -#define BLOCK_WALL_NONE 921 -#define BLOCK_BIGGLOBE_CHARRED_GRASS 922 -#define BLOCK_BIGGLOBE_FLINT 923 -#define BLOCK_BIGGLOBE_ROCK 924 -#define BLOCK_BIGGLOBE_STICK 925 -#define BLOCK_BIGGLOBE_WART_WEED 926 -#define BLOCK_CREATE_CUCKOO_CLOCK 927 -#define BLOCK_CREATE_FUNNEL 928 -#define BLOCK_CREATE_GLASS_DOOR 929 -#define BLOCK_CREATE_GLASS_TRAPDOOR 930 -#define BLOCK_CREATE_GANTRY_SHAFT_POWERED 931 -#define BLOCK_CREATE_LADDER 932 -#define BLOCK_CREATE_MOTOR 933 -#define BLOCK_CREATE_PISTON_POLE 934 -#define BLOCK_CREATE_REDSTONE_LINK 935 -#define BLOCK_CREATE_SPEEDOMETER 936 -#define BLOCK_CREATE_STRESSOMETER 937 -#define BLOCK_CREATE_TRACK 938 -#define BLOCK_CREATE_WINDOW_PANE 939 -#define BLOCK_DECO_CATWALK 940 -#define BLOCK_DECO_CATWALK_STAIRS 941 -#define BLOCK_MESH_FENCE 942 -#define BLOCK_DECO_LAMP_UNLIT 943 -#define BLOCK_DECO_DECAL 944 -#define BLOCK_DECO_PLACARD 945 -#define BLOCK_STREET_LAMP_UNLIT 946 -#define BLOCK_SOUL_STREET_LAMP_UNLIT 947 -#define BLOCK_STREET_LAMP_SUPPORT 948 -#define BLOCK_PAPER_LAMP_UNLIT 949 -#define BLOCK_WIND_VANE 950 -#define BLOCK_MI_PIPE 951 -#define BLOCK_BLUE_ICE 1000 -#define BLOCK_BROWN_MUSHROOM 1001 -#define BLOCK_BUDDING_AMETHYST 1002 -#define BLOCK_CALCITE 1003 -#define BLOCK_COAL 1004 -#define BLOCK_CONCRETE 1005 -#define BLOCK_COPPER 1006 -#define BLOCK_COPPER_EXPOSED 1007 -#define BLOCK_COPPER_WEATHERED 1008 -#define BLOCK_GLAZED_TERRACOTTA 1009 -#define BLOCK_GOLD 1010 -#define BLOCK_HONEYCOMB 1011 -#define BLOCK_IRON 1012 -#define BLOCK_MUD 1013 -#define BLOCK_MUSHROOM_STEM 1014 -#define BLOCK_NETHERRACK 1015 -#define BLOCK_OBSIDIAN 1016 -#define BLOCK_PACKED_ICE 1017 -#define BLOCK_POLISHED 1018 -#define BLOCK_PURPUR 1019 -#define BLOCK_QUARTZ 1020 -#define BLOCK_RAW_COPPER 1021 -#define BLOCK_RAW_GOLD 1022 -#define BLOCK_RAW_IRON 1023 -#define BLOCK_REDSTONE_ILLUMINATOR_OFF 1024 -#define BLOCK_RED_MUSHROOM 1025 -#define BLOCK_WOOL 1026 +#define BLOCK_WATER 8 +#define BLOCK_LIGHT_SOURCES 10005 diff --git a/shaders/lib/lpv_render.glsl b/shaders/lib/lpv_render.glsl new file mode 100644 index 0000000..1533662 --- /dev/null +++ b/shaders/lib/lpv_render.glsl @@ -0,0 +1,216 @@ +vec4 cubic(const in float v) { + vec4 n = vec4(1.0, 2.0, 3.0, 4.0) - v; + vec4 s = n * n * n; + float x = s.x; + float y = s.y - 4.0 * s.x; + float z = s.z - 4.0 * s.y + 6.0 * s.x; + float w = 6.0 - x - y - z; + return vec4(x, y, z, w) * (1.0/6.0); +} + +float LpvVoxelTest(const in ivec3 voxelCoord) { + ivec3 gridCell = ivec3(floor(voxelCoord / LIGHT_BIN_SIZE)); + uint gridIndex = GetVoxelGridCellIndex(gridCell); + ivec3 blockCell = voxelCoord - gridCell * LIGHT_BIN_SIZE; + + uint blockId = GetVoxelBlockMask(blockCell, gridIndex); + return IsTraceOpenBlock(blockId) ? 1.0 : 0.0; +} + +vec4 SampleLpvNearest(const in ivec3 lpvPos) { + vec4 lpvSample = (frameCounter % 2) == 0 + #ifndef RENDER_GBUFFER + ? texelFetch(texLPV_1, lpvPos, 0) + : texelFetch(texLPV_2, lpvPos, 0); + #else + ? texelFetch(texLPV_2, lpvPos, 0) + : texelFetch(texLPV_1, lpvPos, 0); + #endif + + lpvSample.rgb = HsvToRgb(lpvSample.rgb); + + return lpvSample / DynamicLightRangeF; +} + +vec4 SampleLpvLinear(const in vec3 lpvPos) { + // vec3 pos = lpvPos - 0.49999; + vec3 pos = lpvPos - 0.5; + ivec3 lpvCoord = ivec3(floor(pos)); + vec3 lpvF = fract(pos); + + vec4 sample_x1y1z1 = SampleLpvNearest(lpvCoord + ivec3(0, 0, 0)); + vec4 sample_x2y1z1 = SampleLpvNearest(lpvCoord + ivec3(1, 0, 0)); + vec4 sample_x1y2z1 = SampleLpvNearest(lpvCoord + ivec3(0, 1, 0)); + vec4 sample_x2y2z1 = SampleLpvNearest(lpvCoord + ivec3(1, 1, 0)); + + vec4 sample_x1y1z2 = SampleLpvNearest(lpvCoord + ivec3(0, 0, 1)); + vec4 sample_x2y1z2 = SampleLpvNearest(lpvCoord + ivec3(1, 0, 1)); + vec4 sample_x1y2z2 = SampleLpvNearest(lpvCoord + ivec3(0, 1, 1)); + vec4 sample_x2y2z2 = SampleLpvNearest(lpvCoord + ivec3(1, 1, 1)); + + #ifdef LPV_VOXEL_TEST + vec3 lpvCameraOffset = fract(cameraPosition); + vec3 voxelCameraOffset = fract(cameraPosition / LIGHT_BIN_SIZE) * LIGHT_BIN_SIZE; + ivec3 voxelPos = ivec3(lpvPos - SceneLPVCenter + VoxelBlockCenter + voxelCameraOffset - lpvCameraOffset + 0.5); + + float voxel_x1y1z1 = LpvVoxelTest(voxelPos + ivec3(0, 0, 0)); + float voxel_x2y1z1 = LpvVoxelTest(voxelPos + ivec3(1, 0, 0)); + float voxel_x1y2z1 = LpvVoxelTest(voxelPos + ivec3(0, 1, 0)); + float voxel_x2y2z1 = LpvVoxelTest(voxelPos + ivec3(1, 1, 0)); + + float voxel_x1y1z2 = LpvVoxelTest(voxelPos + ivec3(0, 0, 1)); + float voxel_x2y1z2 = LpvVoxelTest(voxelPos + ivec3(1, 0, 1)); + float voxel_x1y2z2 = LpvVoxelTest(voxelPos + ivec3(0, 1, 1)); + float voxel_x2y2z2 = LpvVoxelTest(voxelPos + ivec3(1, 1, 1)); + + sample_x1y1z1 *= voxel_x1y1z1; + sample_x2y1z1 *= voxel_x2y1z1; + sample_x1y2z1 *= voxel_x1y2z1; + sample_x2y2z1 *= voxel_x2y2z1; + + sample_x1y1z2 *= voxel_x1y1z2; + sample_x2y1z2 *= voxel_x2y1z2; + sample_x1y2z2 *= voxel_x1y2z2; + sample_x2y2z2 *= voxel_x2y2z2; + + + // TODO: Add special checks for avoiding diagonal blending between occluded edges/corners + + // TODO: preload voxel grid into array + // then prevent blending if all but current and opposing quadrants are empty + + // ivec3 iq = 1 - ivec3(step(vec3(0.5), lpvF)); + // float voxel_iqx = 1.0 - LpvVoxelTest(ivec3(voxelPos) + ivec3(iq.x, 0, 0)); + // float voxel_iqy = 1.0 - LpvVoxelTest(ivec3(voxelPos) + ivec3(0, iq.y, 0)); + // float voxel_iqz = 1.0 - LpvVoxelTest(ivec3(voxelPos) + ivec3(0, 0, iq.z)); + // float voxel_corner = 1.0 - voxel_iqx * voxel_iqy * voxel_iqz; + + // float voxel_y1 = LpvVoxelTest(ivec3(voxelPos + vec3(0, 0, 0))); + // sample_x1y1z1 *= voxel_y1; + // sample_x2y1z1 *= voxel_y1; + // sample_x1y1z2 *= voxel_y1; + // sample_x2y1z2 *= voxel_y1; + + // float voxel_y2 = LpvVoxelTest(voxelPos + ivec3(0, 1, 0)); + // sample_x1y2z1 *= voxel_y2; + // sample_x2y2z1 *= voxel_y2; + // sample_x1y2z2 *= voxel_y2; + // sample_x2y2z2 *= voxel_y2; + #endif + + vec4 sample_y1z1 = mix(sample_x1y1z1, sample_x2y1z1, lpvF.x); + vec4 sample_y2z1 = mix(sample_x1y2z1, sample_x2y2z1, lpvF.x); + + vec4 sample_y1z2 = mix(sample_x1y1z2, sample_x2y1z2, lpvF.x); + vec4 sample_y2z2 = mix(sample_x1y2z2, sample_x2y2z2, lpvF.x); + + vec4 sample_z1 = mix(sample_y1z1, sample_y2z1, lpvF.y); + vec4 sample_z2 = mix(sample_y1z2, sample_y2z2, lpvF.y); + + return mix(sample_z1, sample_z2, lpvF.z);// * voxel_corner; +} + +vec4 SampleLpvCubic(in vec3 lpvPos) { + vec3 pos = lpvPos - 0.5; + vec3 texF = fract(pos); + pos = floor(pos); + + vec4 cubic_x = cubic(texF.x); + vec4 cubic_y = cubic(texF.y); + vec4 cubic_z = cubic(texF.z); + + vec3 pos_min = pos - 0.5; + vec3 pos_max = pos + 1.5; + + vec3 s_min = vec3(cubic_x.x, cubic_y.x, cubic_z.x) + vec3(cubic_x.y, cubic_y.y, cubic_z.y); + vec3 s_max = vec3(cubic_x.z, cubic_y.z, cubic_z.z) + vec3(cubic_x.w, cubic_y.w, cubic_z.w); + + vec3 offset_min = pos_min + vec3(cubic_x.y, cubic_y.y, cubic_z.y) / s_min; + vec3 offset_max = pos_max + vec3(cubic_x.w, cubic_y.w, cubic_z.w) / s_max; + + vec4 sample_x1y1z1 = SampleLpvLinear(vec3(offset_max.x, offset_max.y, offset_max.z)); + vec4 sample_x2y1z1 = SampleLpvLinear(vec3(offset_min.x, offset_max.y, offset_max.z)); + vec4 sample_x1y2z1 = SampleLpvLinear(vec3(offset_max.x, offset_min.y, offset_max.z)); + vec4 sample_x2y2z1 = SampleLpvLinear(vec3(offset_min.x, offset_min.y, offset_max.z)); + + vec4 sample_x1y1z2 = SampleLpvLinear(vec3(offset_max.x, offset_max.y, offset_min.z)); + vec4 sample_x2y1z2 = SampleLpvLinear(vec3(offset_min.x, offset_max.y, offset_min.z)); + vec4 sample_x1y2z2 = SampleLpvLinear(vec3(offset_max.x, offset_min.y, offset_min.z)); + vec4 sample_x2y2z2 = SampleLpvLinear(vec3(offset_min.x, offset_min.y, offset_min.z)); + + #ifdef LPV_VOXEL_TEST + vec3 lpvCameraOffset = fract(cameraPosition); + vec3 voxelCameraOffset = fract(cameraPosition / LIGHT_BIN_SIZE) * LIGHT_BIN_SIZE; + ivec3 voxelPos = ivec3(lpvPos - SceneLPVCenter + VoxelBlockCenter + voxelCameraOffset - lpvCameraOffset + 0.5); + + float voxel_x1y1z1 = LpvVoxelTest(voxelPos + ivec3(1, 1, 1)); + float voxel_x2y1z1 = LpvVoxelTest(voxelPos + ivec3(0, 1, 1)); + float voxel_x1y2z1 = LpvVoxelTest(voxelPos + ivec3(1, 0, 1)); + float voxel_x2y2z1 = LpvVoxelTest(voxelPos + ivec3(0, 0, 1)); + + float voxel_x1y1z2 = LpvVoxelTest(voxelPos + ivec3(1, 1, 0)); + float voxel_x2y1z2 = LpvVoxelTest(voxelPos + ivec3(0, 1, 0)); + float voxel_x1y2z2 = LpvVoxelTest(voxelPos + ivec3(1, 0, 0)); + float voxel_x2y2z2 = LpvVoxelTest(voxelPos + ivec3(0, 0, 0)); + + sample_x1y1z1 *= voxel_x1y1z1; + sample_x2y1z1 *= voxel_x2y1z1; + sample_x1y2z1 *= voxel_x1y2z1; + sample_x2y2z1 *= voxel_x2y2z1; + + sample_x1y1z2 *= voxel_x1y1z2; + sample_x2y1z2 *= voxel_x2y1z2; + sample_x1y2z2 *= voxel_x1y2z2; + sample_x2y2z2 *= voxel_x2y2z2; + #endif + + vec3 mixF = s_min / (s_min + s_max); + + vec4 sample_y1z1 = mix(sample_x1y1z1, sample_x2y1z1, mixF.x); + vec4 sample_y2z1 = mix(sample_x1y2z1, sample_x2y2z1, mixF.x); + + vec4 sample_y1z2 = mix(sample_x1y1z2, sample_x2y1z2, mixF.x); + vec4 sample_y2z2 = mix(sample_x1y2z2, sample_x2y2z2, mixF.x); + + vec4 sample_z1 = mix(sample_y1z1, sample_y2z1, mixF.y); + vec4 sample_z2 = mix(sample_y1z2, sample_y2z2, mixF.y); + + return mix(sample_z1, sample_z2, mixF.z); +} + +vec4 SampleLpv(const in vec3 samplePos) { + #if LPV_SAMPLE_MODE == LPV_SAMPLE_CUBIC + vec4 lpvSample = SampleLpvCubic(samplePos); + #elif LPV_SAMPLE_MODE == LPV_SAMPLE_LINEAR + vec4 lpvSample = SampleLpvLinear(samplePos); + #else + ivec3 coord = ivec3(samplePos); + vec4 lpvSample = SampleLpvNearest(coord); + #endif + + return lpvSample; +} + +vec4 SampleLpv(const in vec3 lpvPos, const in vec3 geoNormal, const in vec3 texNormal) { + #if MATERIAL_NORMALS != 0 + vec3 samplePos = lpvPos - 0.5 * geoNormal + texNormal; + #else + vec3 samplePos = lpvPos + 0.5 * geoNormal; + #endif + + return SampleLpv(samplePos); +} + +// vec3 GetLpvBlockLight(in vec4 lpvSample, const in float power) { +// return (lpvSample.rgb * LPV_BLOCKLIGHT_SCALE) / 8.0 * DynamicLightBrightness; +// } + +vec3 GetLpvBlockLight(const in vec4 lpvSample) { + // return GetLpvBlockLight(lpvSample, 1.0); + return (1.0/8.0) * (lpvSample.rgb * LPV_BLOCKLIGHT_SCALE) * DynamicLightBrightness; +} + +float GetLpvSkyLight(const in vec4 lpvSample) { + float skyLight = saturate(lpvSample.a); + return _pow2(skyLight); +} diff --git a/shaders/world0/setup.csh b/shaders/world0/setup.csh new file mode 100644 index 0000000..d2fd305 --- /dev/null +++ b/shaders/world0/setup.csh @@ -0,0 +1,59 @@ +#version 430 compatibility + +#define RENDER_SETUP + +#include "/lib/settings.glsl" + +layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in; + +const ivec3 workGroups = ivec3(4, 5, 1); + +#ifdef IS_LPV_ENABLED + #include "/lib/lpv_blocks.glsl" + + + vec3 GetSceneLightColor(const in uint blockId) { + if (blockId == 10005) return vec3(1.0); + return vec3(0.0); + } + + float GetSceneLightRange(const in uint blockId) { + if (blockId == 10005) return 12.0; + return 0.0; + } + + void GetLpvBlockMask(const in uint blockId, out float mixWeight, out uint mixMask) { + mixWeight = 0.0; + mixMask = 0xFFFF; + } +#endif + + +void main() { + #ifdef IS_LPV_ENABLED + uint blockId = uint(gl_GlobalInvocationID.x + gl_GlobalInvocationID.y * 32); + //if (blockId >= 1280) return; + + LpvBlockData block; + + uint mixMask; + float mixWeight; + GetLpvBlockMask(blockId, mixWeight, mixMask); + block.data = BuildBlockLpvData(mixMask, mixWeight); + + // vec3 lightOffset = GetSceneLightOffset(lightType); + vec3 lightColor = GetSceneLightColor(blockId); + float lightRange = GetSceneLightRange(blockId); + float lightSize = 0.0;//GetSceneLightSize(lightType); + // bool lightTraced = GetLightTraced(lightType); + // bool lightSelfTraced = GetLightSelfTraced(lightType); + + // light.Offset = packSnorm4x8(vec4(lightOffset, 0.0)); + block.LightColor = packUnorm4x8(vec4(lightColor, 0.0)); + block.LightRangeSize = packUnorm4x8(vec4(lightRange/255.0, lightSize, 0.0, 0.0)); + // light.LightMetadata = (lightTraced ? 1u : 0u); + // light.LightMetadata |= (lightSelfTraced ? 1u : 0u) << 1u; + + LpvBlockMap[blockId] = block; + #endif +} diff --git a/shaders/world0/shadowcomp.csh b/shaders/world0/shadowcomp.csh index ec191b2..504a165 100644 --- a/shaders/world0/shadowcomp.csh +++ b/shaders/world0/shadowcomp.csh @@ -24,15 +24,9 @@ layout (local_size_x = 8, local_size_y = 8, local_size_z = 8) in; #define EPSILON 1e-6 - // varying vec2 texcoord; - // uniform sampler2D tex; - // uniform sampler2D noisetex; uniform int frameCounter; - // uniform float frameTimeCounter; uniform vec3 cameraPosition; - // varying vec4 color; - // #include "/lib/waterBump.glsl" #include "/lib/hsv.glsl" #include "/lib/blocks.glsl" #include "/lib/lpv_common.glsl" @@ -40,12 +34,7 @@ layout (local_size_x = 8, local_size_y = 8, local_size_z = 8) in; #include "/lib/voxel_common.glsl" #include "/lib/voxel_read.glsl" - // uniform mat4 gbufferProjectionInverse; // uniform mat4 gbufferModelViewInverse; - // uniform mat4 gbufferModelView; - // uniform mat4 shadowModelView; - // uniform mat4 shadowModelViewInverse; - // uniform mat4 shadowProjection; int sumOf(ivec3 vec) {return vec.x + vec.y + vec.z;} @@ -141,8 +130,6 @@ void main() { ivec3 imgCoord = ivec3(gl_GlobalInvocationID); if (any(greaterThanEqual(imgCoord, LpvSize3))) return; - // vec3 blockLocalPos = gridCell * LIGHT_BIN_SIZE + blockCell - VoxelBlockCenter + cameraOffset + 0.5; - // vec3 viewDir = gbufferModelViewInverse[2].xyz; vec3 lpvCenter = vec3(0.0);//GetLpvCenter(cameraPosition, viewDir); vec3 blockLocalPos = imgCoord - lpvCenter + 0.5; @@ -176,23 +163,20 @@ void main() { #if LIGHTING_MODE >= LIGHTING_MODE_FLOODFILL if (blockId > 0 && blockId != BLOCK_EMPTY) { - //uint lightType = LpvBlockMap[blockId].lightType; + vec3 lightColor = unpackUnorm4x8(blockData.LightColor).rgb; + vec2 lightRangeSize = unpackUnorm4x8(blockData.LightRangeSize).xy; + float lightRange = lightRangeSize.x * 255.0; - //if (lightType != LIGHT_NONE && lightType != LIGHT_IGNORED) { - //StaticLightData lightInfo = StaticLightMap[lightType]; - vec3 lightColor = unpackUnorm4x8(blockData.LightColor).rgb; - vec2 lightRangeSize = unpackUnorm4x8(blockData.LightRangeSize).xy; - float lightRange = lightRangeSize.x * 255.0; + lightColor = RGBToLinear(lightColor); - lightColor = RGBToLinear(lightColor); - - // #ifdef LIGHTING_FLICKER - // vec2 lightNoise = GetDynLightNoise(cameraPosition + blockLocalPos); - // ApplyLightFlicker(lightColor, lightType, lightNoise); - // #endif + // #ifdef LIGHTING_FLICKER + // vec2 lightNoise = GetDynLightNoise(cameraPosition + blockLocalPos); + // ApplyLightFlicker(lightColor, lightType, lightNoise); + // #endif + if (lightRange > EPSILON) { lightValue.rgb = Lpv_RgbToHsv(lightColor, lightRange); - //} + } } #endif From 3ab6b68165b4da769b84a153b76bfbbd77e755b0 Mon Sep 17 00:00:00 2001 From: NULL511 Date: Thu, 2 May 2024 12:43:30 -0400 Subject: [PATCH 04/22] kinda working --- shaders/block.properties | 24 ++- shaders/dimensions/all_particles.fsh | 15 +- shaders/dimensions/all_translucent.fsh | 13 +- shaders/dimensions/composite1.fsh | 14 +- shaders/lib/blocks.glsl | 19 +- shaders/lib/diffuse_lighting.glsl | 14 +- shaders/lib/lpv_common.glsl | 7 +- shaders/lib/lpv_render.glsl | 265 +++++++++++++------------ shaders/lib/settings.glsl | 8 +- shaders/lib/voxel_common.glsl | 5 + shaders/lib/voxel_read.glsl | 4 +- shaders/lib/voxel_write.glsl | 3 +- shaders/shaders.properties | 7 +- shaders/world0/setup.csh | 62 +++--- shaders/world0/shadow.vsh | 17 +- shaders/world0/shadowcomp.csh | 30 ++- 16 files changed, 306 insertions(+), 201 deletions(-) diff --git a/shaders/block.properties b/shaders/block.properties index 992493f..290af81 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -30,7 +30,29 @@ block.10008 = minecraft:grass_block:snowy=false ####### ----- lightsources ----- ####### - block.10005 = minecraft:sculk_sensor:sculk_sensor_phase=active minecraft:soul_fire minecraft:soul_campfire:lit=true minecraft:cave_vines_plant:berries=true minecraft:soul_lantern minecraft:soul_torch minecraft:soul_wall_torch minecraft:conduit minecraft:beacon minecraft:sea_pickle minecraft:respawn_anchor:charges=4 minecraft:smoker:lit=true minecraft:sea_lantern minecraft:cave_vines:berries=true minecraft:glowstone minecraft:torch minecraft:wall_torch minecraft:lava minecraft:fire minecraft:redstone_torch minecraft:redstone_wall_torch minecraft:jack_o_lantern minecraft:magma_block minecraft:redstone_lamp:lit=true minecraft:lantern minecraft:campfire:lit=true minecraft:shroomlight minecraft:end_rod minecraft:end_gateway minecraft:lava minecraft:fire westerosblocks:safe_fire conquest:white_paper_lantern conquest:yellow_paper_lantern conquest:small_red_paper_lantern conquest:chinese_palace_lantern conquest:campfire conquest:brazier conquest:hanging_brazier conquest:chandelier conquest:candelabra conquest:cross_chandelier conquest:iron_candelabrum_1 conquest:golden_candelabrum_1 conquest:candle conquest:hanging_candle_holder conquest:candle_in_a_lantern conquest:candles conquest:hand_candle conquest:torch_with_grille conquest:elven_hand_light conquest:ship_lantern conquest:victorian_lantern conquest:small_lantern conquest:big_lantern conquest:hanging_oil_lamp conquest:oil_lamp conquest:terracotta_oil_lamp conquest:invisible_light_low conquest:invisible_light_medium conquest:invisible_light + #block.10005 = minecraft:sculk_sensor:sculk_sensor_phase=active minecraft:soul_fire minecraft:soul_campfire:lit=true minecraft:cave_vines_plant:berries=true minecraft:soul_lantern minecraft:soul_torch minecraft:soul_wall_torch minecraft:conduit minecraft:beacon minecraft:sea_pickle minecraft:respawn_anchor:charges=4 minecraft:smoker:lit=true minecraft:sea_lantern minecraft:cave_vines:berries=true minecraft:glowstone minecraft:torch minecraft:wall_torch minecraft:lava minecraft:fire minecraft:redstone_torch minecraft:redstone_wall_torch minecraft:jack_o_lantern minecraft:magma_block minecraft:redstone_lamp:lit=true minecraft:lantern minecraft:campfire:lit=true minecraft:shroomlight minecraft:end_rod minecraft:end_gateway minecraft:lava minecraft:fire westerosblocks:safe_fire conquest:white_paper_lantern conquest:yellow_paper_lantern conquest:small_red_paper_lantern conquest:chinese_palace_lantern conquest:campfire conquest:brazier conquest:hanging_brazier conquest:chandelier conquest:candelabra conquest:cross_chandelier conquest:iron_candelabrum_1 conquest:golden_candelabrum_1 conquest:candle conquest:hanging_candle_holder conquest:candle_in_a_lantern conquest:candles conquest:hand_candle conquest:torch_with_grille conquest:elven_hand_light conquest:ship_lantern conquest:victorian_lantern conquest:small_lantern conquest:big_lantern conquest:hanging_oil_lamp conquest:oil_lamp conquest:terracotta_oil_lamp conquest:invisible_light_low conquest:invisible_light_medium conquest:invisible_light + block.1000 = cave_vines_plant:berries=true cave_vines:berries=true + block.1001 = soul_fire soul_campfire:lit=true + block.1002 = soul_lantern + block.1003 = soul_torch soul_wall_torch + block.1004 = conduit + block.1005 = beacon + block.1006 = sea_pickle + block.1007 = respawn_anchor:charges=4 + block.1008 = smoker:lit=true + block.1009 = sea_lantern + block.1010 = glowstone + block.1011 = torch wall_torch + block.1012 = lava + block.1013 = fire + block.1014 = redstone_torch redstone_wall_torch + block.1015 = jack_o_lantern + block.1016 = magma_block + block.1017 = redstone_lamp:lit=true + block.1018 = lantern + block.1019 = campfire:lit=true + block.1020 = shroomlight + block.1021 = end_rod minecraft:end_gateway westerosblocks:safe_fire conquest:white_paper_lantern conquest:yellow_paper_lantern conquest:small_red_paper_lantern conquest:chinese_palace_lantern conquest:campfire conquest:brazier conquest:hanging_brazier conquest:chandelier conquest:candelabra conquest:cross_chandelier conquest:iron_candelabrum_1 conquest:golden_candelabrum_1 conquest:candle conquest:hanging_candle_holder conquest:candle_in_a_lantern conquest:candles conquest:hand_candle conquest:torch_with_grille conquest:elven_hand_light conquest:ship_lantern conquest:victorian_lantern conquest:small_lantern conquest:big_lantern conquest:hanging_oil_lamp conquest:oil_lamp conquest:terracotta_oil_lamp conquest:invisible_light_low conquest:invisible_light_medium conquest:invisible_light ####### ----- reflective translucents / glass ----- ####### block.10002 = minecraft:slime_block minecraft:nether_portal minecraft:honey_block ice minecraft:frosted_ice minecraft:black_stained_glass minecraft:black_stained_glass_pane minecraft:blue_stained_glass minecraft:blue_stained_glass_pane minecraft:brown_stained_glass minecraft:brown_stained_glass_pane minecraft:cyan_stained_glass minecraft:cyan_stained_glass_pane minecraft:gray_stained_glass minecraft:gray_stained_glass_pane minecraft:green_stained_glass minecraft:green_stained_glass_pane minecraft:light_blue_stained_glass minecraft:light_blue_stained_glass_pane minecraft:light_gray_stained_glass minecraft:light_gray_stained_glass_pane minecraft:lime_stained_glass minecraft:lime_stained_glass_pane minecraft:magenta_stained_glass minecraft:magenta_stained_glass_pane minecraft:orange_stained_glass minecraft:orange_stained_glass_pane minecraft:pink_stained_glass minecraft:pink_stained_glass_pane minecraft:purple_stained_glass minecraft:purple_stained_glass_pane minecraft:red_stained_glass minecraft:red_stained_glass_pane minecraft:white_stained_glass minecraft:white_stained_glass_pane minecraft:yellow_stained_glass minecraft:yellow_stained_glass_pane minecraft:glass_pane minecraft:glass diff --git a/shaders/dimensions/all_particles.fsh b/shaders/dimensions/all_particles.fsh index 5326e26..a237464 100644 --- a/shaders/dimensions/all_particles.fsh +++ b/shaders/dimensions/all_particles.fsh @@ -1,4 +1,9 @@ #include "/lib/settings.glsl" + +#ifdef IS_LPV_ENABLED + #extension GL_EXT_shader_image_load_store: enable +#endif + #include "/lib/res_params.glsl" varying vec4 lmtexcoord; @@ -56,6 +61,14 @@ flat varying float HELD_ITEM_BRIGHTNESS; #include "/lib/volumetricClouds.glsl" #endif +#ifdef IS_LPV_ENABLED + uniform int frameCounter; + + #include "/lib/hsv.glsl" + #include "/lib/lpv_common.glsl" + #include "/lib/lpv_render.glsl" +#endif + #include "/lib/diffuse_lighting.glsl" #include "/lib/sky_gradient.glsl" @@ -226,7 +239,7 @@ void main() { vec3 AmbientLightColor = vec3(1.0); #endif - Indirect_lighting = DoAmbientLightColor(AmbientLightColor,MinimumLightColor, Torch_Color, clamp(lightmap.xy,0,1)); + Indirect_lighting = DoAmbientLightColor(feetPlayerPos, AmbientLightColor,MinimumLightColor, Torch_Color, clamp(lightmap.xy,0,1)); #ifdef LINES gl_FragData[0].rgb = (Indirect_lighting + Direct_lighting) * toLinear(color.rgb); diff --git a/shaders/dimensions/all_translucent.fsh b/shaders/dimensions/all_translucent.fsh index 1e8a449..d3b885f 100644 --- a/shaders/dimensions/all_translucent.fsh +++ b/shaders/dimensions/all_translucent.fsh @@ -1,4 +1,9 @@ #include "/lib/settings.glsl" + +#ifdef IS_LPV_ENABLED + #extension GL_EXT_shader_image_load_store: enable +#endif + #include "/lib/res_params.glsl" varying vec4 lmtexcoord; @@ -97,6 +102,12 @@ uniform vec3 nsunColor; #include "/lib/end_fog.glsl" #endif +#ifdef IS_LPV_ENABLED + #include "/lib/hsv.glsl" + #include "/lib/lpv_common.glsl" + #include "/lib/lpv_render.glsl" +#endif + #include "/lib/diffuse_lighting.glsl" float blueNoise(){ @@ -572,7 +583,7 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 ) AmbientLightColor *= clamp(1.5 + dot(WS_normal, normalize(feetPlayerPos))*0.5,0,2); #endif - Indirect_lighting = DoAmbientLightColor(AmbientLightColor, MinimumLightColor, vec3(TORCH_R,TORCH_G,TORCH_B), lightmap.xy); + Indirect_lighting = DoAmbientLightColor(feetPlayerPos, AmbientLightColor, MinimumLightColor, vec3(TORCH_R,TORCH_G,TORCH_B), lightmap.xy); #ifdef ENTITIES Albedo.rgb = mix(Albedo.rgb, entityColor.rgb, clamp(entityColor.a*1.5,0,1)); diff --git a/shaders/dimensions/composite1.fsh b/shaders/dimensions/composite1.fsh index cfb441f..e782fa8 100644 --- a/shaders/dimensions/composite1.fsh +++ b/shaders/dimensions/composite1.fsh @@ -1,4 +1,9 @@ #include "/lib/settings.glsl" + +#ifdef IS_LPV_ENABLED + #extension GL_EXT_shader_image_load_store: enable +#endif + #include "/lib/res_params.glsl" @@ -162,6 +167,12 @@ vec3 toScreenSpace(vec3 p) { #include "/lib/volumetricClouds.glsl" #endif +#ifdef IS_LPV_ENABLED + #include "/lib/hsv.glsl" + #include "/lib/lpv_common.glsl" + #include "/lib/lpv_render.glsl" +#endif + #include "/lib/diffuse_lighting.glsl" float ld(float dist) { @@ -1256,7 +1267,8 @@ void main() { #endif - Indirect_lighting = DoAmbientLightColor(Indirect_lighting, MinimumLightColor, vec3(TORCH_R,TORCH_G,TORCH_B), lightmap.xy); + vec3 lpvPos = GetLpvPosition(feetPlayerPos) - 0.5*FlatNormals + slopednormal; + Indirect_lighting = DoAmbientLightColor(lpvPos, Indirect_lighting, MinimumLightColor, vec3(TORCH_R,TORCH_G,TORCH_B), lightmap.xy); Indirect_lighting *= Absorbtion; #ifdef OVERWORLD_SHADER diff --git a/shaders/lib/blocks.glsl b/shaders/lib/blocks.glsl index 06492ab..979b0ff 100644 --- a/shaders/lib/blocks.glsl +++ b/shaders/lib/blocks.glsl @@ -1,2 +1,19 @@ #define BLOCK_WATER 8 -#define BLOCK_LIGHT_SOURCES 10005 + +#define BLOCK_CAVE_VINE_BERRIES 1000 +#define BLOCK_SOUL_FIRE 1001 +#define BLOCK_SOUL_LANTERN 1002 +#define BLOCK_SOUL_TORCH 1003 + +#define BLOCK_SEA_LANTERN 1009 +#define BLOCK_GLOWSTONE 1010 +#define BLOCK_TORCH 1011 +#define BLOCK_LAVA 1012 +#define BLOCK_FIRE 1013 +#define BLOCK_REDSTONE_TORCH 1014 + +#define BLOCK_MAGMA 1016 + +#define BLOCK_LANTERN 1018 + +#define BLOCK_SHROOMLIGHT 1020 diff --git a/shaders/lib/diffuse_lighting.glsl b/shaders/lib/diffuse_lighting.glsl index ee28b9f..8d3348c 100644 --- a/shaders/lib/diffuse_lighting.glsl +++ b/shaders/lib/diffuse_lighting.glsl @@ -1,4 +1,5 @@ vec3 DoAmbientLightColor( + vec3 lpvPos, vec3 SkyColor, vec3 MinimumColor, vec3 TorchColor, @@ -12,11 +13,16 @@ vec3 DoAmbientLightColor( vec3 IndirectLight = max(SkyColor * ambient_brightness * skyLM, MinimumLight); // do torch lighting. - // float TorchLM = 10.0 - ( 1.0 / (pow(exp(-0.5*inversesqrt(Lightmap.x)),5.0)+0.1)); - // TorchLM = pow(TorchLM/4,10) + pow(Lightmap.x,1.5)*0.5; + #if defined IS_LPV_ENABLED && defined MC_GL_EXT_shader_image_load_store + vec4 lpvSample = SampleLpv(lpvPos); + vec3 TorchLight = GetLpvBlockLight(lpvSample); + #else + // float TorchLM = 10.0 - ( 1.0 / (pow(exp(-0.5*inversesqrt(Lightmap.x)),5.0)+0.1)); + // TorchLM = pow(TorchLM/4,10) + pow(Lightmap.x,1.5)*0.5; - float TorchLM = pow(Lightmap.x,10.0)*5.0 + pow(Lightmap.x,1.5); - vec3 TorchLight = TorchColor * TORCH_AMOUNT * TorchLM * (1.0 + LightLevelZero*dot(SkyColor * ambient_brightness,vec3(0.3333))); + float TorchLM = pow(Lightmap.x,10.0)*5.0 + pow(Lightmap.x,1.5); + vec3 TorchLight = TorchColor * TORCH_AMOUNT * TorchLM * (1.0 + LightLevelZero*dot(SkyColor * ambient_brightness,vec3(0.3333))); + #endif return IndirectLight + TorchLight; } diff --git a/shaders/lib/lpv_common.glsl b/shaders/lib/lpv_common.glsl index d7d1037..57c7d32 100644 --- a/shaders/lib/lpv_common.glsl +++ b/shaders/lib/lpv_common.glsl @@ -12,4 +12,9 @@ const uvec3 LpvSize3 = uvec3(LpvSize); // layout(r16ui) uniform readonly uimage2D imgVoxelMask; // #endif -#define LIGHT_NONE 0 +// #define LIGHT_NONE 0 + +vec3 GetLpvPosition(const in vec3 playerPos) { + vec3 cameraOffset = fract(cameraPosition); + return playerPos + cameraOffset + LpvSize3/2u + 0.5; +} diff --git a/shaders/lib/lpv_render.glsl b/shaders/lib/lpv_render.glsl index 1533662..13ebfae 100644 --- a/shaders/lib/lpv_render.glsl +++ b/shaders/lib/lpv_render.glsl @@ -1,35 +1,35 @@ -vec4 cubic(const in float v) { - vec4 n = vec4(1.0, 2.0, 3.0, 4.0) - v; - vec4 s = n * n * n; - float x = s.x; - float y = s.y - 4.0 * s.x; - float z = s.z - 4.0 * s.y + 6.0 * s.x; - float w = 6.0 - x - y - z; - return vec4(x, y, z, w) * (1.0/6.0); -} +// vec4 cubic(const in float v) { +// vec4 n = vec4(1.0, 2.0, 3.0, 4.0) - v; +// vec4 s = n * n * n; +// float x = s.x; +// float y = s.y - 4.0 * s.x; +// float z = s.z - 4.0 * s.y + 6.0 * s.x; +// float w = 6.0 - x - y - z; +// return vec4(x, y, z, w) * (1.0/6.0); +// } -float LpvVoxelTest(const in ivec3 voxelCoord) { - ivec3 gridCell = ivec3(floor(voxelCoord / LIGHT_BIN_SIZE)); - uint gridIndex = GetVoxelGridCellIndex(gridCell); - ivec3 blockCell = voxelCoord - gridCell * LIGHT_BIN_SIZE; +// float LpvVoxelTest(const in ivec3 voxelCoord) { +// ivec3 gridCell = ivec3(floor(voxelCoord / LIGHT_BIN_SIZE)); +// uint gridIndex = GetVoxelGridCellIndex(gridCell); +// ivec3 blockCell = voxelCoord - gridCell * LIGHT_BIN_SIZE; - uint blockId = GetVoxelBlockMask(blockCell, gridIndex); - return IsTraceOpenBlock(blockId) ? 1.0 : 0.0; -} +// uint blockId = GetVoxelBlockMask(blockCell, gridIndex); +// return IsTraceOpenBlock(blockId) ? 1.0 : 0.0; +// } vec4 SampleLpvNearest(const in ivec3 lpvPos) { vec4 lpvSample = (frameCounter % 2) == 0 - #ifndef RENDER_GBUFFER - ? texelFetch(texLPV_1, lpvPos, 0) - : texelFetch(texLPV_2, lpvPos, 0); - #else - ? texelFetch(texLPV_2, lpvPos, 0) - : texelFetch(texLPV_1, lpvPos, 0); - #endif + // #ifndef RENDER_GBUFFER + ? imageLoad(imgLpv1, lpvPos) + : imageLoad(imgLpv2, lpvPos); + // #else + // ? imageLoad(imgLpv2, lpvPos, 0) + // : imageLoad(imgLpv1, lpvPos, 0); + // #endif lpvSample.rgb = HsvToRgb(lpvSample.rgb); - return lpvSample / DynamicLightRangeF; + return lpvSample;// / DynamicLightRangeF; } vec4 SampleLpvLinear(const in vec3 lpvPos) { @@ -48,55 +48,55 @@ vec4 SampleLpvLinear(const in vec3 lpvPos) { vec4 sample_x1y2z2 = SampleLpvNearest(lpvCoord + ivec3(0, 1, 1)); vec4 sample_x2y2z2 = SampleLpvNearest(lpvCoord + ivec3(1, 1, 1)); - #ifdef LPV_VOXEL_TEST - vec3 lpvCameraOffset = fract(cameraPosition); - vec3 voxelCameraOffset = fract(cameraPosition / LIGHT_BIN_SIZE) * LIGHT_BIN_SIZE; - ivec3 voxelPos = ivec3(lpvPos - SceneLPVCenter + VoxelBlockCenter + voxelCameraOffset - lpvCameraOffset + 0.5); + // #ifdef LPV_VOXEL_TEST + // vec3 lpvCameraOffset = fract(cameraPosition); + // vec3 voxelCameraOffset = fract(cameraPosition / LIGHT_BIN_SIZE) * LIGHT_BIN_SIZE; + // ivec3 voxelPos = ivec3(lpvPos - SceneLPVCenter + VoxelBlockCenter + voxelCameraOffset - lpvCameraOffset + 0.5); - float voxel_x1y1z1 = LpvVoxelTest(voxelPos + ivec3(0, 0, 0)); - float voxel_x2y1z1 = LpvVoxelTest(voxelPos + ivec3(1, 0, 0)); - float voxel_x1y2z1 = LpvVoxelTest(voxelPos + ivec3(0, 1, 0)); - float voxel_x2y2z1 = LpvVoxelTest(voxelPos + ivec3(1, 1, 0)); + // float voxel_x1y1z1 = LpvVoxelTest(voxelPos + ivec3(0, 0, 0)); + // float voxel_x2y1z1 = LpvVoxelTest(voxelPos + ivec3(1, 0, 0)); + // float voxel_x1y2z1 = LpvVoxelTest(voxelPos + ivec3(0, 1, 0)); + // float voxel_x2y2z1 = LpvVoxelTest(voxelPos + ivec3(1, 1, 0)); - float voxel_x1y1z2 = LpvVoxelTest(voxelPos + ivec3(0, 0, 1)); - float voxel_x2y1z2 = LpvVoxelTest(voxelPos + ivec3(1, 0, 1)); - float voxel_x1y2z2 = LpvVoxelTest(voxelPos + ivec3(0, 1, 1)); - float voxel_x2y2z2 = LpvVoxelTest(voxelPos + ivec3(1, 1, 1)); + // float voxel_x1y1z2 = LpvVoxelTest(voxelPos + ivec3(0, 0, 1)); + // float voxel_x2y1z2 = LpvVoxelTest(voxelPos + ivec3(1, 0, 1)); + // float voxel_x1y2z2 = LpvVoxelTest(voxelPos + ivec3(0, 1, 1)); + // float voxel_x2y2z2 = LpvVoxelTest(voxelPos + ivec3(1, 1, 1)); - sample_x1y1z1 *= voxel_x1y1z1; - sample_x2y1z1 *= voxel_x2y1z1; - sample_x1y2z1 *= voxel_x1y2z1; - sample_x2y2z1 *= voxel_x2y2z1; + // sample_x1y1z1 *= voxel_x1y1z1; + // sample_x2y1z1 *= voxel_x2y1z1; + // sample_x1y2z1 *= voxel_x1y2z1; + // sample_x2y2z1 *= voxel_x2y2z1; - sample_x1y1z2 *= voxel_x1y1z2; - sample_x2y1z2 *= voxel_x2y1z2; - sample_x1y2z2 *= voxel_x1y2z2; - sample_x2y2z2 *= voxel_x2y2z2; + // sample_x1y1z2 *= voxel_x1y1z2; + // sample_x2y1z2 *= voxel_x2y1z2; + // sample_x1y2z2 *= voxel_x1y2z2; + // sample_x2y2z2 *= voxel_x2y2z2; - // TODO: Add special checks for avoiding diagonal blending between occluded edges/corners + // // TODO: Add special checks for avoiding diagonal blending between occluded edges/corners - // TODO: preload voxel grid into array - // then prevent blending if all but current and opposing quadrants are empty + // // TODO: preload voxel grid into array + // // then prevent blending if all but current and opposing quadrants are empty - // ivec3 iq = 1 - ivec3(step(vec3(0.5), lpvF)); - // float voxel_iqx = 1.0 - LpvVoxelTest(ivec3(voxelPos) + ivec3(iq.x, 0, 0)); - // float voxel_iqy = 1.0 - LpvVoxelTest(ivec3(voxelPos) + ivec3(0, iq.y, 0)); - // float voxel_iqz = 1.0 - LpvVoxelTest(ivec3(voxelPos) + ivec3(0, 0, iq.z)); - // float voxel_corner = 1.0 - voxel_iqx * voxel_iqy * voxel_iqz; + // // ivec3 iq = 1 - ivec3(step(vec3(0.5), lpvF)); + // // float voxel_iqx = 1.0 - LpvVoxelTest(ivec3(voxelPos) + ivec3(iq.x, 0, 0)); + // // float voxel_iqy = 1.0 - LpvVoxelTest(ivec3(voxelPos) + ivec3(0, iq.y, 0)); + // // float voxel_iqz = 1.0 - LpvVoxelTest(ivec3(voxelPos) + ivec3(0, 0, iq.z)); + // // float voxel_corner = 1.0 - voxel_iqx * voxel_iqy * voxel_iqz; - // float voxel_y1 = LpvVoxelTest(ivec3(voxelPos + vec3(0, 0, 0))); - // sample_x1y1z1 *= voxel_y1; - // sample_x2y1z1 *= voxel_y1; - // sample_x1y1z2 *= voxel_y1; - // sample_x2y1z2 *= voxel_y1; + // // float voxel_y1 = LpvVoxelTest(ivec3(voxelPos + vec3(0, 0, 0))); + // // sample_x1y1z1 *= voxel_y1; + // // sample_x2y1z1 *= voxel_y1; + // // sample_x1y1z2 *= voxel_y1; + // // sample_x2y1z2 *= voxel_y1; - // float voxel_y2 = LpvVoxelTest(voxelPos + ivec3(0, 1, 0)); - // sample_x1y2z1 *= voxel_y2; - // sample_x2y2z1 *= voxel_y2; - // sample_x1y2z2 *= voxel_y2; - // sample_x2y2z2 *= voxel_y2; - #endif + // // float voxel_y2 = LpvVoxelTest(voxelPos + ivec3(0, 1, 0)); + // // sample_x1y2z1 *= voxel_y2; + // // sample_x2y2z1 *= voxel_y2; + // // sample_x1y2z2 *= voxel_y2; + // // sample_x2y2z2 *= voxel_y2; + // #endif vec4 sample_y1z1 = mix(sample_x1y1z1, sample_x2y1z1, lpvF.x); vec4 sample_y2z1 = mix(sample_x1y2z1, sample_x2y2z1, lpvF.x); @@ -110,96 +110,98 @@ vec4 SampleLpvLinear(const in vec3 lpvPos) { return mix(sample_z1, sample_z2, lpvF.z);// * voxel_corner; } -vec4 SampleLpvCubic(in vec3 lpvPos) { - vec3 pos = lpvPos - 0.5; - vec3 texF = fract(pos); - pos = floor(pos); +// vec4 SampleLpvCubic(in vec3 lpvPos) { +// vec3 pos = lpvPos - 0.5; +// vec3 texF = fract(pos); +// pos = floor(pos); - vec4 cubic_x = cubic(texF.x); - vec4 cubic_y = cubic(texF.y); - vec4 cubic_z = cubic(texF.z); +// vec4 cubic_x = cubic(texF.x); +// vec4 cubic_y = cubic(texF.y); +// vec4 cubic_z = cubic(texF.z); - vec3 pos_min = pos - 0.5; - vec3 pos_max = pos + 1.5; +// vec3 pos_min = pos - 0.5; +// vec3 pos_max = pos + 1.5; - vec3 s_min = vec3(cubic_x.x, cubic_y.x, cubic_z.x) + vec3(cubic_x.y, cubic_y.y, cubic_z.y); - vec3 s_max = vec3(cubic_x.z, cubic_y.z, cubic_z.z) + vec3(cubic_x.w, cubic_y.w, cubic_z.w); +// vec3 s_min = vec3(cubic_x.x, cubic_y.x, cubic_z.x) + vec3(cubic_x.y, cubic_y.y, cubic_z.y); +// vec3 s_max = vec3(cubic_x.z, cubic_y.z, cubic_z.z) + vec3(cubic_x.w, cubic_y.w, cubic_z.w); - vec3 offset_min = pos_min + vec3(cubic_x.y, cubic_y.y, cubic_z.y) / s_min; - vec3 offset_max = pos_max + vec3(cubic_x.w, cubic_y.w, cubic_z.w) / s_max; +// vec3 offset_min = pos_min + vec3(cubic_x.y, cubic_y.y, cubic_z.y) / s_min; +// vec3 offset_max = pos_max + vec3(cubic_x.w, cubic_y.w, cubic_z.w) / s_max; - vec4 sample_x1y1z1 = SampleLpvLinear(vec3(offset_max.x, offset_max.y, offset_max.z)); - vec4 sample_x2y1z1 = SampleLpvLinear(vec3(offset_min.x, offset_max.y, offset_max.z)); - vec4 sample_x1y2z1 = SampleLpvLinear(vec3(offset_max.x, offset_min.y, offset_max.z)); - vec4 sample_x2y2z1 = SampleLpvLinear(vec3(offset_min.x, offset_min.y, offset_max.z)); +// vec4 sample_x1y1z1 = SampleLpvLinear(vec3(offset_max.x, offset_max.y, offset_max.z)); +// vec4 sample_x2y1z1 = SampleLpvLinear(vec3(offset_min.x, offset_max.y, offset_max.z)); +// vec4 sample_x1y2z1 = SampleLpvLinear(vec3(offset_max.x, offset_min.y, offset_max.z)); +// vec4 sample_x2y2z1 = SampleLpvLinear(vec3(offset_min.x, offset_min.y, offset_max.z)); - vec4 sample_x1y1z2 = SampleLpvLinear(vec3(offset_max.x, offset_max.y, offset_min.z)); - vec4 sample_x2y1z2 = SampleLpvLinear(vec3(offset_min.x, offset_max.y, offset_min.z)); - vec4 sample_x1y2z2 = SampleLpvLinear(vec3(offset_max.x, offset_min.y, offset_min.z)); - vec4 sample_x2y2z2 = SampleLpvLinear(vec3(offset_min.x, offset_min.y, offset_min.z)); +// vec4 sample_x1y1z2 = SampleLpvLinear(vec3(offset_max.x, offset_max.y, offset_min.z)); +// vec4 sample_x2y1z2 = SampleLpvLinear(vec3(offset_min.x, offset_max.y, offset_min.z)); +// vec4 sample_x1y2z2 = SampleLpvLinear(vec3(offset_max.x, offset_min.y, offset_min.z)); +// vec4 sample_x2y2z2 = SampleLpvLinear(vec3(offset_min.x, offset_min.y, offset_min.z)); - #ifdef LPV_VOXEL_TEST - vec3 lpvCameraOffset = fract(cameraPosition); - vec3 voxelCameraOffset = fract(cameraPosition / LIGHT_BIN_SIZE) * LIGHT_BIN_SIZE; - ivec3 voxelPos = ivec3(lpvPos - SceneLPVCenter + VoxelBlockCenter + voxelCameraOffset - lpvCameraOffset + 0.5); +// // #ifdef LPV_VOXEL_TEST +// // vec3 lpvCameraOffset = fract(cameraPosition); +// // vec3 voxelCameraOffset = fract(cameraPosition / LIGHT_BIN_SIZE) * LIGHT_BIN_SIZE; +// // ivec3 voxelPos = ivec3(lpvPos - SceneLPVCenter + VoxelBlockCenter + voxelCameraOffset - lpvCameraOffset + 0.5); - float voxel_x1y1z1 = LpvVoxelTest(voxelPos + ivec3(1, 1, 1)); - float voxel_x2y1z1 = LpvVoxelTest(voxelPos + ivec3(0, 1, 1)); - float voxel_x1y2z1 = LpvVoxelTest(voxelPos + ivec3(1, 0, 1)); - float voxel_x2y2z1 = LpvVoxelTest(voxelPos + ivec3(0, 0, 1)); +// // float voxel_x1y1z1 = LpvVoxelTest(voxelPos + ivec3(1, 1, 1)); +// // float voxel_x2y1z1 = LpvVoxelTest(voxelPos + ivec3(0, 1, 1)); +// // float voxel_x1y2z1 = LpvVoxelTest(voxelPos + ivec3(1, 0, 1)); +// // float voxel_x2y2z1 = LpvVoxelTest(voxelPos + ivec3(0, 0, 1)); - float voxel_x1y1z2 = LpvVoxelTest(voxelPos + ivec3(1, 1, 0)); - float voxel_x2y1z2 = LpvVoxelTest(voxelPos + ivec3(0, 1, 0)); - float voxel_x1y2z2 = LpvVoxelTest(voxelPos + ivec3(1, 0, 0)); - float voxel_x2y2z2 = LpvVoxelTest(voxelPos + ivec3(0, 0, 0)); +// // float voxel_x1y1z2 = LpvVoxelTest(voxelPos + ivec3(1, 1, 0)); +// // float voxel_x2y1z2 = LpvVoxelTest(voxelPos + ivec3(0, 1, 0)); +// // float voxel_x1y2z2 = LpvVoxelTest(voxelPos + ivec3(1, 0, 0)); +// // float voxel_x2y2z2 = LpvVoxelTest(voxelPos + ivec3(0, 0, 0)); - sample_x1y1z1 *= voxel_x1y1z1; - sample_x2y1z1 *= voxel_x2y1z1; - sample_x1y2z1 *= voxel_x1y2z1; - sample_x2y2z1 *= voxel_x2y2z1; +// // sample_x1y1z1 *= voxel_x1y1z1; +// // sample_x2y1z1 *= voxel_x2y1z1; +// // sample_x1y2z1 *= voxel_x1y2z1; +// // sample_x2y2z1 *= voxel_x2y2z1; - sample_x1y1z2 *= voxel_x1y1z2; - sample_x2y1z2 *= voxel_x2y1z2; - sample_x1y2z2 *= voxel_x1y2z2; - sample_x2y2z2 *= voxel_x2y2z2; - #endif +// // sample_x1y1z2 *= voxel_x1y1z2; +// // sample_x2y1z2 *= voxel_x2y1z2; +// // sample_x1y2z2 *= voxel_x1y2z2; +// // sample_x2y2z2 *= voxel_x2y2z2; +// // #endif - vec3 mixF = s_min / (s_min + s_max); +// vec3 mixF = s_min / (s_min + s_max); - vec4 sample_y1z1 = mix(sample_x1y1z1, sample_x2y1z1, mixF.x); - vec4 sample_y2z1 = mix(sample_x1y2z1, sample_x2y2z1, mixF.x); +// vec4 sample_y1z1 = mix(sample_x1y1z1, sample_x2y1z1, mixF.x); +// vec4 sample_y2z1 = mix(sample_x1y2z1, sample_x2y2z1, mixF.x); - vec4 sample_y1z2 = mix(sample_x1y1z2, sample_x2y1z2, mixF.x); - vec4 sample_y2z2 = mix(sample_x1y2z2, sample_x2y2z2, mixF.x); +// vec4 sample_y1z2 = mix(sample_x1y1z2, sample_x2y1z2, mixF.x); +// vec4 sample_y2z2 = mix(sample_x1y2z2, sample_x2y2z2, mixF.x); - vec4 sample_z1 = mix(sample_y1z1, sample_y2z1, mixF.y); - vec4 sample_z2 = mix(sample_y1z2, sample_y2z2, mixF.y); +// vec4 sample_z1 = mix(sample_y1z1, sample_y2z1, mixF.y); +// vec4 sample_z2 = mix(sample_y1z2, sample_y2z2, mixF.y); - return mix(sample_z1, sample_z2, mixF.z); -} +// return mix(sample_z1, sample_z2, mixF.z); +// } vec4 SampleLpv(const in vec3 samplePos) { - #if LPV_SAMPLE_MODE == LPV_SAMPLE_CUBIC - vec4 lpvSample = SampleLpvCubic(samplePos); - #elif LPV_SAMPLE_MODE == LPV_SAMPLE_LINEAR + // #if LPV_SAMPLE_MODE == LPV_SAMPLE_CUBIC + // vec4 lpvSample = SampleLpvCubic(samplePos); + // #elif LPV_SAMPLE_MODE == LPV_SAMPLE_LINEAR vec4 lpvSample = SampleLpvLinear(samplePos); - #else - ivec3 coord = ivec3(samplePos); - vec4 lpvSample = SampleLpvNearest(coord); - #endif + // #else + // ivec3 coord = ivec3(samplePos); + // vec4 lpvSample = SampleLpvNearest(coord); + // #endif return lpvSample; } -vec4 SampleLpv(const in vec3 lpvPos, const in vec3 geoNormal, const in vec3 texNormal) { - #if MATERIAL_NORMALS != 0 - vec3 samplePos = lpvPos - 0.5 * geoNormal + texNormal; - #else - vec3 samplePos = lpvPos + 0.5 * geoNormal; - #endif +// vec4 SampleLpv(const in vec3 playerPos, const in vec3 geoNormal, const in vec3 texNormal) { +// ivec3 lpvPos = GetLpvPosition(playerPos); - return SampleLpv(samplePos); -} +// // #if MATERIAL_NORMALS != 0 +// vec3 samplePos = lpvPos - 0.5 * geoNormal + texNormal; +// // #else +// // vec3 samplePos = lpvPos + 0.5 * geoNormal; +// // #endif + +// return SampleLpvLinear(samplePos); +// } // vec3 GetLpvBlockLight(in vec4 lpvSample, const in float power) { // return (lpvSample.rgb * LPV_BLOCKLIGHT_SCALE) / 8.0 * DynamicLightBrightness; @@ -207,10 +209,11 @@ vec4 SampleLpv(const in vec3 lpvPos, const in vec3 geoNormal, const in vec3 texN vec3 GetLpvBlockLight(const in vec4 lpvSample) { // return GetLpvBlockLight(lpvSample, 1.0); - return (1.0/8.0) * (lpvSample.rgb * LPV_BLOCKLIGHT_SCALE) * DynamicLightBrightness; + return 4.0 * lpvSample.rgb;// * LPV_BLOCKLIGHT_SCALE);// * DynamicLightBrightness; } float GetLpvSkyLight(const in vec4 lpvSample) { float skyLight = saturate(lpvSample.a); - return _pow2(skyLight); + // return _pow2(skyLight); + return skyLight*skyLight; } diff --git a/shaders/lib/settings.glsl b/shaders/lib/settings.glsl index b5cef8c..bdc833c 100644 --- a/shaders/lib/settings.glsl +++ b/shaders/lib/settings.glsl @@ -673,11 +673,13 @@ const vec3 aerochrome_color = mix(vec3(1.0, 0.0, 0.0), vec3(0.715, 0.303, 0.631) // ----- DISTANT HORIZONS SETTINGS ----- // /////////////////////////////////////////// -#define LPV_ENABLED +//#define LPV_ENABLED #define LPV_SIZE 7 // [6 7 8] -#if defined LPV_ENABLED && defined IRIS_FEATURE_CUSTOM_IMAGES - #define IS_LPV_ENABLED +#ifdef LPV_ENABLED + #ifdef IRIS_FEATURE_CUSTOM_IMAGES + #define IS_LPV_ENABLED + #endif #endif diff --git a/shaders/lib/voxel_common.glsl b/shaders/lib/voxel_common.glsl index 429fb3e..2940063 100644 --- a/shaders/lib/voxel_common.glsl +++ b/shaders/lib/voxel_common.glsl @@ -4,3 +4,8 @@ const uint VoxelSize = uint(exp2(LPV_SIZE)); const uvec3 VoxelSize3 = uvec3(VoxelSize); #define BLOCK_EMPTY 0 + +ivec3 GetVoxelIndex(const in vec3 playerPos) { + vec3 cameraOffset = fract(cameraPosition); + return ivec3(floor(playerPos + cameraOffset + VoxelSize3/2u)); +} diff --git a/shaders/lib/voxel_read.glsl b/shaders/lib/voxel_read.glsl index 9d1c0d7..0ba4006 100644 --- a/shaders/lib/voxel_read.glsl +++ b/shaders/lib/voxel_read.glsl @@ -1,11 +1,11 @@ uint GetVoxelBlock(const in ivec3 voxelPos) { // TODO: exit early if outside bounds + return imageLoad(imgVoxelMask, voxelPos).r; } uint GetVoxelBlock(const in vec3 playerPos) { - vec3 cameraOffset = fract(cameraPosition); - ivec3 voxelPos = ivec3(floor(playerPos + cameraOffset + VoxelSize/2u)); + ivec3 voxelPos = GetVoxelIndex(playerPos); // TODO: exit early if outside bounds return imageLoad(imgVoxelMask, voxelPos).r; diff --git a/shaders/lib/voxel_write.glsl b/shaders/lib/voxel_write.glsl index 4af48f8..d1a797c 100644 --- a/shaders/lib/voxel_write.glsl +++ b/shaders/lib/voxel_write.glsl @@ -1,6 +1,5 @@ void SetVoxelBlock(const in vec3 playerPos, const in uint blockId) { - vec3 cameraOffset = fract(cameraPosition); - ivec3 voxelPos = ivec3(floor(playerPos + cameraOffset + VoxelSize/2u)); + ivec3 voxelPos = GetVoxelIndex(playerPos); // TODO: exit early if outside bounds imageStore(imgVoxelMask, voxelPos, uvec4(blockId)); diff --git a/shaders/shaders.properties b/shaders/shaders.properties index bd6f7ff..6b31a03 100644 --- a/shaders/shaders.properties +++ b/shaders/shaders.properties @@ -8,7 +8,7 @@ separateAo = true rain.depth = false beacon.beam.depth = true -iris.features.optional=ENTITY_TRANSLUCENT REVERSED_CULLING COMPUTE_SHADERS CUSTOM_IMAGES +iris.features.optional=ENTITY_TRANSLUCENT REVERSED_CULLING COMPUTE_SHADERS CUSTOM_IMAGES SSBO #if RESOURCEPACK_SKY == 2 sun=true @@ -120,7 +120,7 @@ BLISS_SHADERS \ ######## LIGHTING ### DIRECT LIGHT screen.Direct_Light.columns=1 - screen.Direct_Light = TRANSLUCENT_COLORED_SHADOWS [Shadows] [Subsurface_Scattering] [Sun_and_Moon_Colors] OLD_LIGHTLEAK_FIX sunPathRotation sun_illuminance MOONPHASE_BASED_MOONLIGHT moon_illuminance + screen.Direct_Light = TRANSLUCENT_COLORED_SHADOWS [Shadows] [Subsurface_Scattering] [Sun_and_Moon_Colors] OLD_LIGHTLEAK_FIX sunPathRotation sun_illuminance MOONPHASE_BASED_MOONLIGHT moon_illuminance LPV_ENABLED screen.Shadows.columns=1 screen.Shadows = SCREENSPACE_CONTACT_SHADOWS RENDER_ENTITY_SHADOWS entityShadowDistanceMul [Filtering] shadowMapResolution shadowDistance shadowDistanceRenderMul @@ -611,7 +611,8 @@ uniform.float.shadowMaxProj = 150.0/abs(sunPosY) ####### FLOODFILL STUFF ####### ############################### -#if defined LPV_ENABLED && defined IRIS_FEATURE_CUSTOM_IMAGES +# if defined LPV_ENABLED && defined IRIS_FEATURE_CUSTOM_IMAGES +#ifdef LPV_ENABLED bufferObject.0=20480 #if LPV_SIZE == 8 diff --git a/shaders/world0/setup.csh b/shaders/world0/setup.csh index d2fd305..19be854 100644 --- a/shaders/world0/setup.csh +++ b/shaders/world0/setup.csh @@ -9,23 +9,8 @@ layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in; const ivec3 workGroups = ivec3(4, 5, 1); #ifdef IS_LPV_ENABLED + #include "/lib/blocks.glsl" #include "/lib/lpv_blocks.glsl" - - - vec3 GetSceneLightColor(const in uint blockId) { - if (blockId == 10005) return vec3(1.0); - return vec3(0.0); - } - - float GetSceneLightRange(const in uint blockId) { - if (blockId == 10005) return 12.0; - return 0.0; - } - - void GetLpvBlockMask(const in uint blockId, out float mixWeight, out uint mixMask) { - mixWeight = 0.0; - mixMask = 0xFFFF; - } #endif @@ -34,25 +19,38 @@ void main() { uint blockId = uint(gl_GlobalInvocationID.x + gl_GlobalInvocationID.y * 32); //if (blockId >= 1280) return; + vec3 lightColor = vec3(0.0); + float lightRange = 0.0; + float mixWeight = 0.0; + uint mixMask = 0xFFFF; + + switch (blockId) { + case BLOCK_GLOWSTONE: + lightColor = vec3(0.8, 0.7, 0.1); + lightRange = 15.0; + break; + case BLOCK_REDSTONE_TORCH: + lightColor = vec3(1.0, 0.1, 0.1); + lightRange = 7.0; + break; + case BLOCK_SEA_LANTERN: + lightColor = vec3(1.0); + lightRange = 15.0; + break; + case BLOCK_SOUL_TORCH: + lightColor = vec3(0.1, 0.6, 1.0); + lightRange = 10.0; + break; + case BLOCK_TORCH: + lightColor = vec3(1.0, 0.6, 0.1); + lightRange = 14.0; + break; + } + LpvBlockData block; - - uint mixMask; - float mixWeight; - GetLpvBlockMask(blockId, mixWeight, mixMask); block.data = BuildBlockLpvData(mixMask, mixWeight); - - // vec3 lightOffset = GetSceneLightOffset(lightType); - vec3 lightColor = GetSceneLightColor(blockId); - float lightRange = GetSceneLightRange(blockId); - float lightSize = 0.0;//GetSceneLightSize(lightType); - // bool lightTraced = GetLightTraced(lightType); - // bool lightSelfTraced = GetLightSelfTraced(lightType); - - // light.Offset = packSnorm4x8(vec4(lightOffset, 0.0)); block.LightColor = packUnorm4x8(vec4(lightColor, 0.0)); - block.LightRangeSize = packUnorm4x8(vec4(lightRange/255.0, lightSize, 0.0, 0.0)); - // light.LightMetadata = (lightTraced ? 1u : 0u); - // light.LightMetadata |= (lightSelfTraced ? 1u : 0u) << 1u; + block.LightRangeSize = packUnorm4x8(vec4(lightRange/255.0, 0.0, 0.0, 0.0)); LpvBlockMap[blockId] = block; #endif diff --git a/shaders/world0/shadow.vsh b/shaders/world0/shadow.vsh index f49b019..6c908d8 100644 --- a/shaders/world0/shadow.vsh +++ b/shaders/world0/shadow.vsh @@ -50,6 +50,9 @@ uniform int entityId; #include "/lib/bokeh.glsl" #ifdef IS_LPV_ENABLED + attribute vec3 at_midBlock; + uniform int renderStage; + #include "/lib/voxel_common.glsl" #include "/lib/voxel_write.glsl" #endif @@ -185,8 +188,18 @@ void main() { #endif #if defined IS_LPV_ENABLED && defined MC_GL_EXT_shader_image_load_store - // TODO: limit to blocks; entities later - SetVoxelBlock(playerpos, blockId); + if ( + renderStage == MC_RENDER_STAGE_TERRAIN_SOLID || + renderStage == MC_RENDER_STAGE_TERRAIN_CUTOUT || + renderStage == MC_RENDER_STAGE_TERRAIN_CUTOUT_MIPPED || + renderStage == MC_RENDER_STAGE_TERRAIN_TRANSLUCENT + ) { + uint voxelId = blockId; + if (voxelId == 0u) voxelId = 1u; + + vec3 origin = playerpos + at_midBlock/64.0; + SetVoxelBlock(origin, voxelId); + } #endif #ifdef WAVY_PLANTS diff --git a/shaders/world0/shadowcomp.csh b/shaders/world0/shadowcomp.csh index 504a165..90cb5ad 100644 --- a/shaders/world0/shadowcomp.csh +++ b/shaders/world0/shadowcomp.csh @@ -131,8 +131,8 @@ void main() { if (any(greaterThanEqual(imgCoord, LpvSize3))) return; // vec3 viewDir = gbufferModelViewInverse[2].xyz; - vec3 lpvCenter = vec3(0.0);//GetLpvCenter(cameraPosition, viewDir); - vec3 blockLocalPos = imgCoord - lpvCenter + 0.5; + //vec3 lpvCenter = vec3(0.0);//GetLpvCenter(cameraPosition, viewDir); + //vec3 blockLocalPos = imgCoord - lpvCenter + 0.5; vec4 lightValue = vec4(0.0); uint mixMask = 0xFFFF; @@ -161,24 +161,22 @@ void main() { lightValue.rgb = RgbToHsv(lightValue.rgb); lightValue.ba = log2(lightValue.ba + 1.0) / LpvBlockSkyRange; - #if LIGHTING_MODE >= LIGHTING_MODE_FLOODFILL - if (blockId > 0 && blockId != BLOCK_EMPTY) { - vec3 lightColor = unpackUnorm4x8(blockData.LightColor).rgb; - vec2 lightRangeSize = unpackUnorm4x8(blockData.LightRangeSize).xy; - float lightRange = lightRangeSize.x * 255.0; + if (blockId > 0 && blockId != BLOCK_EMPTY) { + vec3 lightColor = unpackUnorm4x8(blockData.LightColor).rgb; + vec2 lightRangeSize = unpackUnorm4x8(blockData.LightRangeSize).xy; + float lightRange = lightRangeSize.x * 255.0; - lightColor = RGBToLinear(lightColor); + lightColor = RGBToLinear(lightColor); - // #ifdef LIGHTING_FLICKER - // vec2 lightNoise = GetDynLightNoise(cameraPosition + blockLocalPos); - // ApplyLightFlicker(lightColor, lightType, lightNoise); - // #endif + // #ifdef LIGHTING_FLICKER + // vec2 lightNoise = GetDynLightNoise(cameraPosition + blockLocalPos); + // ApplyLightFlicker(lightColor, lightType, lightNoise); + // #endif - if (lightRange > EPSILON) { - lightValue.rgb = Lpv_RgbToHsv(lightColor, lightRange); - } + if (lightRange > EPSILON) { + lightValue.rgb = Lpv_RgbToHsv(lightColor, lightRange); } - #endif + } if (frameCounter % 2 == 0) imageStore(imgLpv1, imgCoord, lightValue); From da5654476cd1b6b436cea4e70fc17a562dbde4d2 Mon Sep 17 00:00:00 2001 From: NULL511 Date: Thu, 2 May 2024 13:00:51 -0400 Subject: [PATCH 05/22] fix geo-normal space; cleanup --- shaders/dimensions/composite1.fsh | 4 +- shaders/lib/diffuse_lighting.glsl | 2 +- shaders/lib/lpv_common.glsl | 4 +- shaders/lib/lpv_render.glsl | 113 +----------------------------- shaders/world0/shadowcomp.csh | 1 - 5 files changed, 10 insertions(+), 114 deletions(-) diff --git a/shaders/dimensions/composite1.fsh b/shaders/dimensions/composite1.fsh index e782fa8..498829a 100644 --- a/shaders/dimensions/composite1.fsh +++ b/shaders/dimensions/composite1.fsh @@ -1267,7 +1267,9 @@ void main() { #endif - vec3 lpvPos = GetLpvPosition(feetPlayerPos) - 0.5*FlatNormals + slopednormal; + vec3 lpvPos = GetLpvPosition(feetPlayerPos) + 0.5*viewToWorld(FlatNormals); + // vec3 lpvPos = GetLpvPosition(feetPlayerPos) - 0.5*FlatNormals + slopednormal; + Indirect_lighting = DoAmbientLightColor(lpvPos, Indirect_lighting, MinimumLightColor, vec3(TORCH_R,TORCH_G,TORCH_B), lightmap.xy); Indirect_lighting *= Absorbtion; diff --git a/shaders/lib/diffuse_lighting.glsl b/shaders/lib/diffuse_lighting.glsl index 8d3348c..760d0e2 100644 --- a/shaders/lib/diffuse_lighting.glsl +++ b/shaders/lib/diffuse_lighting.glsl @@ -14,7 +14,7 @@ vec3 DoAmbientLightColor( // do torch lighting. #if defined IS_LPV_ENABLED && defined MC_GL_EXT_shader_image_load_store - vec4 lpvSample = SampleLpv(lpvPos); + vec4 lpvSample = SampleLpvLinear(lpvPos); vec3 TorchLight = GetLpvBlockLight(lpvSample); #else // float TorchLM = 10.0 - ( 1.0 / (pow(exp(-0.5*inversesqrt(Lightmap.x)),5.0)+0.1)); diff --git a/shaders/lib/lpv_common.glsl b/shaders/lib/lpv_common.glsl index 57c7d32..8c8b649 100644 --- a/shaders/lib/lpv_common.glsl +++ b/shaders/lib/lpv_common.glsl @@ -4,6 +4,8 @@ layout(rgba8) uniform image3D imgLpv2; const uint LpvSize = uint(exp2(LPV_SIZE)); const uvec3 LpvSize3 = uvec3(LpvSize); +const vec2 LpvBlockSkyRange = vec2(1.0, 24.0); + // #if defined RENDER_SHADOWCOMP || defined RENDER_GBUFFER // layout(r16ui) uniform uimage2D imgVoxelMask; // #elif defined RENDER_BEGIN || defined RENDER_GEOMETRY || defined RENDER_VERTEX @@ -16,5 +18,5 @@ const uvec3 LpvSize3 = uvec3(LpvSize); vec3 GetLpvPosition(const in vec3 playerPos) { vec3 cameraOffset = fract(cameraPosition); - return playerPos + cameraOffset + LpvSize3/2u + 0.5; + return playerPos + cameraOffset + LpvSize3/2u; } diff --git a/shaders/lib/lpv_render.glsl b/shaders/lib/lpv_render.glsl index 13ebfae..a78439b 100644 --- a/shaders/lib/lpv_render.glsl +++ b/shaders/lib/lpv_render.glsl @@ -1,13 +1,3 @@ -// vec4 cubic(const in float v) { -// vec4 n = vec4(1.0, 2.0, 3.0, 4.0) - v; -// vec4 s = n * n * n; -// float x = s.x; -// float y = s.y - 4.0 * s.x; -// float z = s.z - 4.0 * s.y + 6.0 * s.x; -// float w = 6.0 - x - y - z; -// return vec4(x, y, z, w) * (1.0/6.0); -// } - // float LpvVoxelTest(const in ivec3 voxelCoord) { // ivec3 gridCell = ivec3(floor(voxelCoord / LIGHT_BIN_SIZE)); // uint gridIndex = GetVoxelGridCellIndex(gridCell); @@ -27,13 +17,13 @@ vec4 SampleLpvNearest(const in ivec3 lpvPos) { // : imageLoad(imgLpv1, lpvPos, 0); // #endif + lpvSample.ba = exp2(lpvSample.ba * LpvBlockSkyRange) - 1.0; lpvSample.rgb = HsvToRgb(lpvSample.rgb); - return lpvSample;// / DynamicLightRangeF; + return lpvSample; } vec4 SampleLpvLinear(const in vec3 lpvPos) { - // vec3 pos = lpvPos - 0.49999; vec3 pos = lpvPos - 0.5; ivec3 lpvCoord = ivec3(floor(pos)); vec3 lpvF = fract(pos); @@ -110,106 +100,9 @@ vec4 SampleLpvLinear(const in vec3 lpvPos) { return mix(sample_z1, sample_z2, lpvF.z);// * voxel_corner; } -// vec4 SampleLpvCubic(in vec3 lpvPos) { -// vec3 pos = lpvPos - 0.5; -// vec3 texF = fract(pos); -// pos = floor(pos); - -// vec4 cubic_x = cubic(texF.x); -// vec4 cubic_y = cubic(texF.y); -// vec4 cubic_z = cubic(texF.z); - -// vec3 pos_min = pos - 0.5; -// vec3 pos_max = pos + 1.5; - -// vec3 s_min = vec3(cubic_x.x, cubic_y.x, cubic_z.x) + vec3(cubic_x.y, cubic_y.y, cubic_z.y); -// vec3 s_max = vec3(cubic_x.z, cubic_y.z, cubic_z.z) + vec3(cubic_x.w, cubic_y.w, cubic_z.w); - -// vec3 offset_min = pos_min + vec3(cubic_x.y, cubic_y.y, cubic_z.y) / s_min; -// vec3 offset_max = pos_max + vec3(cubic_x.w, cubic_y.w, cubic_z.w) / s_max; - -// vec4 sample_x1y1z1 = SampleLpvLinear(vec3(offset_max.x, offset_max.y, offset_max.z)); -// vec4 sample_x2y1z1 = SampleLpvLinear(vec3(offset_min.x, offset_max.y, offset_max.z)); -// vec4 sample_x1y2z1 = SampleLpvLinear(vec3(offset_max.x, offset_min.y, offset_max.z)); -// vec4 sample_x2y2z1 = SampleLpvLinear(vec3(offset_min.x, offset_min.y, offset_max.z)); - -// vec4 sample_x1y1z2 = SampleLpvLinear(vec3(offset_max.x, offset_max.y, offset_min.z)); -// vec4 sample_x2y1z2 = SampleLpvLinear(vec3(offset_min.x, offset_max.y, offset_min.z)); -// vec4 sample_x1y2z2 = SampleLpvLinear(vec3(offset_max.x, offset_min.y, offset_min.z)); -// vec4 sample_x2y2z2 = SampleLpvLinear(vec3(offset_min.x, offset_min.y, offset_min.z)); - -// // #ifdef LPV_VOXEL_TEST -// // vec3 lpvCameraOffset = fract(cameraPosition); -// // vec3 voxelCameraOffset = fract(cameraPosition / LIGHT_BIN_SIZE) * LIGHT_BIN_SIZE; -// // ivec3 voxelPos = ivec3(lpvPos - SceneLPVCenter + VoxelBlockCenter + voxelCameraOffset - lpvCameraOffset + 0.5); - -// // float voxel_x1y1z1 = LpvVoxelTest(voxelPos + ivec3(1, 1, 1)); -// // float voxel_x2y1z1 = LpvVoxelTest(voxelPos + ivec3(0, 1, 1)); -// // float voxel_x1y2z1 = LpvVoxelTest(voxelPos + ivec3(1, 0, 1)); -// // float voxel_x2y2z1 = LpvVoxelTest(voxelPos + ivec3(0, 0, 1)); - -// // float voxel_x1y1z2 = LpvVoxelTest(voxelPos + ivec3(1, 1, 0)); -// // float voxel_x2y1z2 = LpvVoxelTest(voxelPos + ivec3(0, 1, 0)); -// // float voxel_x1y2z2 = LpvVoxelTest(voxelPos + ivec3(1, 0, 0)); -// // float voxel_x2y2z2 = LpvVoxelTest(voxelPos + ivec3(0, 0, 0)); - -// // sample_x1y1z1 *= voxel_x1y1z1; -// // sample_x2y1z1 *= voxel_x2y1z1; -// // sample_x1y2z1 *= voxel_x1y2z1; -// // sample_x2y2z1 *= voxel_x2y2z1; - -// // sample_x1y1z2 *= voxel_x1y1z2; -// // sample_x2y1z2 *= voxel_x2y1z2; -// // sample_x1y2z2 *= voxel_x1y2z2; -// // sample_x2y2z2 *= voxel_x2y2z2; -// // #endif - -// vec3 mixF = s_min / (s_min + s_max); - -// vec4 sample_y1z1 = mix(sample_x1y1z1, sample_x2y1z1, mixF.x); -// vec4 sample_y2z1 = mix(sample_x1y2z1, sample_x2y2z1, mixF.x); - -// vec4 sample_y1z2 = mix(sample_x1y1z2, sample_x2y1z2, mixF.x); -// vec4 sample_y2z2 = mix(sample_x1y2z2, sample_x2y2z2, mixF.x); - -// vec4 sample_z1 = mix(sample_y1z1, sample_y2z1, mixF.y); -// vec4 sample_z2 = mix(sample_y1z2, sample_y2z2, mixF.y); - -// return mix(sample_z1, sample_z2, mixF.z); -// } - -vec4 SampleLpv(const in vec3 samplePos) { - // #if LPV_SAMPLE_MODE == LPV_SAMPLE_CUBIC - // vec4 lpvSample = SampleLpvCubic(samplePos); - // #elif LPV_SAMPLE_MODE == LPV_SAMPLE_LINEAR - vec4 lpvSample = SampleLpvLinear(samplePos); - // #else - // ivec3 coord = ivec3(samplePos); - // vec4 lpvSample = SampleLpvNearest(coord); - // #endif - - return lpvSample; -} - -// vec4 SampleLpv(const in vec3 playerPos, const in vec3 geoNormal, const in vec3 texNormal) { -// ivec3 lpvPos = GetLpvPosition(playerPos); - -// // #if MATERIAL_NORMALS != 0 -// vec3 samplePos = lpvPos - 0.5 * geoNormal + texNormal; -// // #else -// // vec3 samplePos = lpvPos + 0.5 * geoNormal; -// // #endif - -// return SampleLpvLinear(samplePos); -// } - -// vec3 GetLpvBlockLight(in vec4 lpvSample, const in float power) { -// return (lpvSample.rgb * LPV_BLOCKLIGHT_SCALE) / 8.0 * DynamicLightBrightness; -// } - vec3 GetLpvBlockLight(const in vec4 lpvSample) { // return GetLpvBlockLight(lpvSample, 1.0); - return 4.0 * lpvSample.rgb;// * LPV_BLOCKLIGHT_SCALE);// * DynamicLightBrightness; + return 8.0 * lpvSample.rgb;// * LPV_BLOCKLIGHT_SCALE);// * DynamicLightBrightness; } float GetLpvSkyLight(const in vec4 lpvSample) { diff --git a/shaders/world0/shadowcomp.csh b/shaders/world0/shadowcomp.csh index 90cb5ad..6ee7ac9 100644 --- a/shaders/world0/shadowcomp.csh +++ b/shaders/world0/shadowcomp.csh @@ -17,7 +17,6 @@ layout (local_size_x = 8, local_size_y = 8, local_size_z = 8) in; shared uint voxelSharedData[10*10*10]; const vec2 LpvBlockSkyFalloff = vec2(0.96, 0.96); - const vec2 LpvBlockSkyRange = vec2(1.0, 24.0); const ivec3 lpvFlatten = ivec3(1, 10, 100); #define GAMMA 2.2 From f33b07115222af13016e1a70ae8f3350093d8612 Mon Sep 17 00:00:00 2001 From: NULL511 Date: Thu, 2 May 2024 13:06:48 -0400 Subject: [PATCH 06/22] fix floodfill lightmap fallback --- shaders/dimensions/composite1.fsh | 8 ++++++-- shaders/lib/diffuse_lighting.glsl | 16 ++++++++++------ 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/shaders/dimensions/composite1.fsh b/shaders/dimensions/composite1.fsh index 498829a..56f7d5e 100644 --- a/shaders/dimensions/composite1.fsh +++ b/shaders/dimensions/composite1.fsh @@ -1267,9 +1267,13 @@ void main() { #endif - vec3 lpvPos = GetLpvPosition(feetPlayerPos) + 0.5*viewToWorld(FlatNormals); + #ifdef IS_LPV_ENABLED + vec3 lpvPos = GetLpvPosition(feetPlayerPos) + 0.5*viewToWorld(FlatNormals); + #else + const vec3 lpvPos = vec3(0.0); + #endif // vec3 lpvPos = GetLpvPosition(feetPlayerPos) - 0.5*FlatNormals + slopednormal; - + Indirect_lighting = DoAmbientLightColor(lpvPos, Indirect_lighting, MinimumLightColor, vec3(TORCH_R,TORCH_G,TORCH_B), lightmap.xy); Indirect_lighting *= Absorbtion; diff --git a/shaders/lib/diffuse_lighting.glsl b/shaders/lib/diffuse_lighting.glsl index 760d0e2..fd033ab 100644 --- a/shaders/lib/diffuse_lighting.glsl +++ b/shaders/lib/diffuse_lighting.glsl @@ -13,15 +13,19 @@ vec3 DoAmbientLightColor( vec3 IndirectLight = max(SkyColor * ambient_brightness * skyLM, MinimumLight); // do torch lighting. + // float TorchLM = 10.0 - ( 1.0 / (pow(exp(-0.5*inversesqrt(Lightmap.x)),5.0)+0.1)); + // TorchLM = pow(TorchLM/4,10) + pow(Lightmap.x,1.5)*0.5; + + float TorchLM = pow(Lightmap.x,10.0)*5.0 + pow(Lightmap.x,1.5); + vec3 TorchLight = TorchColor * TORCH_AMOUNT * TorchLM * (1.0 + LightLevelZero*dot(SkyColor * ambient_brightness,vec3(0.3333))); + #if defined IS_LPV_ENABLED && defined MC_GL_EXT_shader_image_load_store vec4 lpvSample = SampleLpvLinear(lpvPos); - vec3 TorchLight = GetLpvBlockLight(lpvSample); - #else - // float TorchLM = 10.0 - ( 1.0 / (pow(exp(-0.5*inversesqrt(Lightmap.x)),5.0)+0.1)); - // TorchLM = pow(TorchLM/4,10) + pow(Lightmap.x,1.5)*0.5; + vec3 LpvTorchLight = GetLpvBlockLight(lpvSample); - float TorchLM = pow(Lightmap.x,10.0)*5.0 + pow(Lightmap.x,1.5); - vec3 TorchLight = TorchColor * TORCH_AMOUNT * TorchLM * (1.0 + LightLevelZero*dot(SkyColor * ambient_brightness,vec3(0.3333))); + // TODO: needs work, just binary transition for now + float LpvFadeF = clamp(lpvPos, vec3(0.0), LpvSize3 - 1.0) == lpvPos ? 1.0 : 0.0; + TorchLight = mix(TorchLight, LpvTorchLight, LpvFadeF); #endif return IndirectLight + TorchLight; From 852d995db085b63819bdf668394d8af3e7e5f86f Mon Sep 17 00:00:00 2001 From: NULL511 Date: Thu, 2 May 2024 14:18:49 -0400 Subject: [PATCH 07/22] fix floodfill frame offset --- shaders/dimensions/composite1.fsh | 3 ++- shaders/lib/lpv_blocks.glsl | 9 +++------ shaders/lib/lpv_common.glsl | 15 +++------------ shaders/lib/lpv_render.glsl | 12 ++++-------- shaders/lib/voxel_common.glsl | 4 +++- shaders/lib/voxel_read.glsl | 10 +++++----- shaders/lib/voxel_write.glsl | 2 +- shaders/shaders.properties | 4 ++++ shaders/world0/setup.csh | 6 ++---- shaders/world0/shadow.vsh | 5 +++-- shaders/world0/shadowcomp.csh | 23 ++++++++++------------- 11 files changed, 40 insertions(+), 53 deletions(-) diff --git a/shaders/dimensions/composite1.fsh b/shaders/dimensions/composite1.fsh index 56f7d5e..46354a9 100644 --- a/shaders/dimensions/composite1.fsh +++ b/shaders/dimensions/composite1.fsh @@ -1269,10 +1269,10 @@ void main() { #ifdef IS_LPV_ENABLED vec3 lpvPos = GetLpvPosition(feetPlayerPos) + 0.5*viewToWorld(FlatNormals); + // vec3 lpvPos = GetLpvPosition(feetPlayerPos) - 0.5*FlatNormals + slopednormal; #else const vec3 lpvPos = vec3(0.0); #endif - // vec3 lpvPos = GetLpvPosition(feetPlayerPos) - 0.5*FlatNormals + slopednormal; Indirect_lighting = DoAmbientLightColor(lpvPos, Indirect_lighting, MinimumLightColor, vec3(TORCH_R,TORCH_G,TORCH_B), lightmap.xy); @@ -1284,6 +1284,7 @@ void main() { #ifdef SSS_view Indirect_lighting = vec3(3.0); #endif + ///////////////////////////////////////////////////////////////////////////////////// ///////////////////////////// EFFECTS FOR INDIRECT ///////////////////////////// ///////////////////////////////////////////////////////////////////////////////////// diff --git a/shaders/lib/lpv_blocks.glsl b/shaders/lib/lpv_blocks.glsl index 5003c7e..dba0484 100644 --- a/shaders/lib/lpv_blocks.glsl +++ b/shaders/lib/lpv_blocks.glsl @@ -1,8 +1,6 @@ -struct LpvBlockData { // 12 x1280 =? - uint data; // 4 - uint LightColor; // 4 - uint LightRangeSize; // 4 - // uint LightMetadata; +struct LpvBlockData { // 8 x1280 =? + uint MaskWeight; // 4 + uint ColorRange; // 4 }; #ifdef RENDER_SETUP @@ -24,6 +22,5 @@ uint BuildBlockLpvData(uint mixMask, float mixWeight) { void ParseBlockLpvData(const in uint data, out uint mixMask, out float mixWeight) { mixWeight = (data & 0xFF) / 255.0; - mixMask = (data >> 8) & 0xFF; } diff --git a/shaders/lib/lpv_common.glsl b/shaders/lib/lpv_common.glsl index 8c8b649..8b196ad 100644 --- a/shaders/lib/lpv_common.glsl +++ b/shaders/lib/lpv_common.glsl @@ -1,21 +1,12 @@ layout(rgba8) uniform image3D imgLpv1; layout(rgba8) uniform image3D imgLpv2; +// How far light propagates (block, sky) +const vec2 LpvBlockSkyRange = vec2(15.0, 24.0); + const uint LpvSize = uint(exp2(LPV_SIZE)); const uvec3 LpvSize3 = uvec3(LpvSize); -const vec2 LpvBlockSkyRange = vec2(1.0, 24.0); - -// #if defined RENDER_SHADOWCOMP || defined RENDER_GBUFFER -// layout(r16ui) uniform uimage2D imgVoxelMask; -// #elif defined RENDER_BEGIN || defined RENDER_GEOMETRY || defined RENDER_VERTEX -// layout(r16ui) uniform writeonly uimage2D imgVoxelMask; -// #else -// layout(r16ui) uniform readonly uimage2D imgVoxelMask; -// #endif - -// #define LIGHT_NONE 0 - vec3 GetLpvPosition(const in vec3 playerPos) { vec3 cameraOffset = fract(cameraPosition); return playerPos + cameraOffset + LpvSize3/2u; diff --git a/shaders/lib/lpv_render.glsl b/shaders/lib/lpv_render.glsl index a78439b..3137630 100644 --- a/shaders/lib/lpv_render.glsl +++ b/shaders/lib/lpv_render.glsl @@ -9,22 +9,18 @@ vec4 SampleLpvNearest(const in ivec3 lpvPos) { vec4 lpvSample = (frameCounter % 2) == 0 - // #ifndef RENDER_GBUFFER ? imageLoad(imgLpv1, lpvPos) : imageLoad(imgLpv2, lpvPos); - // #else - // ? imageLoad(imgLpv2, lpvPos, 0) - // : imageLoad(imgLpv1, lpvPos, 0); - // #endif - lpvSample.ba = exp2(lpvSample.ba * LpvBlockSkyRange) - 1.0; + //lpvSample.ba = exp2(lpvSample.ba * LpvBlockSkyRange) - 1.0; + lpvSample.b = (lpvSample.b*lpvSample.b) * LpvBlockSkyRange.x; lpvSample.rgb = HsvToRgb(lpvSample.rgb); return lpvSample; } vec4 SampleLpvLinear(const in vec3 lpvPos) { - vec3 pos = lpvPos - 0.5; + vec3 pos = lpvPos;// - 0.5; ivec3 lpvCoord = ivec3(floor(pos)); vec3 lpvF = fract(pos); @@ -102,7 +98,7 @@ vec4 SampleLpvLinear(const in vec3 lpvPos) { vec3 GetLpvBlockLight(const in vec4 lpvSample) { // return GetLpvBlockLight(lpvSample, 1.0); - return 8.0 * lpvSample.rgb;// * LPV_BLOCKLIGHT_SCALE);// * DynamicLightBrightness; + return lpvSample.rgb;// * LPV_BLOCKLIGHT_SCALE);// * DynamicLightBrightness; } float GetLpvSkyLight(const in vec4 lpvSample) { diff --git a/shaders/lib/voxel_common.glsl b/shaders/lib/voxel_common.glsl index 2940063..eaa6e1c 100644 --- a/shaders/lib/voxel_common.glsl +++ b/shaders/lib/voxel_common.glsl @@ -3,9 +3,11 @@ layout(r16ui) uniform uimage3D imgVoxelMask; const uint VoxelSize = uint(exp2(LPV_SIZE)); const uvec3 VoxelSize3 = uvec3(VoxelSize); +const float voxelDistance = 64.0; + #define BLOCK_EMPTY 0 ivec3 GetVoxelIndex(const in vec3 playerPos) { vec3 cameraOffset = fract(cameraPosition); - return ivec3(floor(playerPos + cameraOffset + VoxelSize3/2u)); + return ivec3(floor(playerPos + cameraOffset) + VoxelSize3/2u); } diff --git a/shaders/lib/voxel_read.glsl b/shaders/lib/voxel_read.glsl index 0ba4006..118a3ce 100644 --- a/shaders/lib/voxel_read.glsl +++ b/shaders/lib/voxel_read.glsl @@ -4,9 +4,9 @@ uint GetVoxelBlock(const in ivec3 voxelPos) { return imageLoad(imgVoxelMask, voxelPos).r; } -uint GetVoxelBlock(const in vec3 playerPos) { - ivec3 voxelPos = GetVoxelIndex(playerPos); +// uint GetVoxelBlock(const in vec3 playerPos) { +// ivec3 voxelPos = GetVoxelIndex(playerPos); - // TODO: exit early if outside bounds - return imageLoad(imgVoxelMask, voxelPos).r; -} +// // TODO: exit early if outside bounds +// return imageLoad(imgVoxelMask, voxelPos).r; +// } diff --git a/shaders/lib/voxel_write.glsl b/shaders/lib/voxel_write.glsl index d1a797c..b9705b6 100644 --- a/shaders/lib/voxel_write.glsl +++ b/shaders/lib/voxel_write.glsl @@ -1,6 +1,6 @@ void SetVoxelBlock(const in vec3 playerPos, const in uint blockId) { ivec3 voxelPos = GetVoxelIndex(playerPos); + if (clamp(voxelPos, ivec3(0), ivec3(VoxelSize-1u)) != voxelPos) return; - // TODO: exit early if outside bounds imageStore(imgVoxelMask, voxelPos, uvec4(blockId)); } diff --git a/shaders/shaders.properties b/shaders/shaders.properties index 6b31a03..ef0e453 100644 --- a/shaders/shaders.properties +++ b/shaders/shaders.properties @@ -18,6 +18,10 @@ iris.features.optional=ENTITY_TRANSLUCENT REVERSED_CULLING COMPUTE_SHADERS CUSTO moon=false #endif +#ifdef LPV_ENABLED + shadow.culling = reversed +#endif + #ifndef RENDER_ENTITY_SHADOWS shadowBlockEntities = false shadowEntities = false diff --git a/shaders/world0/setup.csh b/shaders/world0/setup.csh index 19be854..92af98b 100644 --- a/shaders/world0/setup.csh +++ b/shaders/world0/setup.csh @@ -48,10 +48,8 @@ void main() { } LpvBlockData block; - block.data = BuildBlockLpvData(mixMask, mixWeight); - block.LightColor = packUnorm4x8(vec4(lightColor, 0.0)); - block.LightRangeSize = packUnorm4x8(vec4(lightRange/255.0, 0.0, 0.0, 0.0)); - + block.MaskWeight = BuildBlockLpvData(mixMask, mixWeight); + block.ColorRange = packUnorm4x8(vec4(lightColor, lightRange/255.0)); LpvBlockMap[blockId] = block; #endif } diff --git a/shaders/world0/shadow.vsh b/shaders/world0/shadow.vsh index 6c908d8..c9f7ba2 100644 --- a/shaders/world0/shadow.vsh +++ b/shaders/world0/shadow.vsh @@ -197,8 +197,9 @@ void main() { uint voxelId = blockId; if (voxelId == 0u) voxelId = 1u; - vec3 origin = playerpos + at_midBlock/64.0; - SetVoxelBlock(origin, voxelId); + vec3 originPos = playerpos + at_midBlock/64.0; + + SetVoxelBlock(originPos, voxelId); } #endif diff --git a/shaders/world0/shadowcomp.csh b/shaders/world0/shadowcomp.csh index 6ee7ac9..3c359bb 100644 --- a/shaders/world0/shadowcomp.csh +++ b/shaders/world0/shadowcomp.csh @@ -25,6 +25,7 @@ layout (local_size_x = 8, local_size_y = 8, local_size_z = 8) in; uniform int frameCounter; uniform vec3 cameraPosition; + uniform vec3 previousCameraPosition; #include "/lib/hsv.glsl" #include "/lib/blocks.glsl" @@ -76,7 +77,7 @@ layout (local_size_x = 8, local_size_y = 8, local_size_z = 8) in; uint blockId = voxelSharedData[shared_index]; if (blockId > 0 && blockId != BLOCK_EMPTY) - ParseBlockLpvData(LpvBlockMap[blockId].data, mixMask, mixWeight); + ParseBlockLpvData(LpvBlockMap[blockId].MaskWeight, mixMask, mixWeight); return lpvSharedData[shared_index] * ((mixMask >> mask_index) & 1u);// * mixWeight; } @@ -96,17 +97,16 @@ layout (local_size_x = 8, local_size_y = 8, local_size_z = 8) in; void PopulateSharedIndex(const in ivec3 imgCoordOffset, const in ivec3 workGroupOffset, const in uint i) { ivec3 pos = workGroupOffset + ivec3(i / lpvFlatten) % 10; - ivec3 lpvPos = imgCoordOffset + pos; - lpvSharedData[i] = GetLpvValue(lpvPos); - voxelSharedData[i] = GetVoxelBlock(lpvPos); + //ivec3 lpvPos = imgCoordOffset + pos; + lpvSharedData[i] = GetLpvValue(imgCoordOffset + pos); + voxelSharedData[i] = GetVoxelBlock(pos); } void PopulateShared() { uint i = uint(gl_LocalInvocationIndex) * 2u; if (i >= 1000u) return; - // ivec3 voxelOffset = GetLPVVoxelOffset(); - ivec3 imgCoordOffset = ivec3(0);//GetLPVFrameOffset(); + ivec3 imgCoordOffset = ivec3(floor(cameraPosition) - floor(previousCameraPosition)); ivec3 workGroupOffset = ivec3(gl_WorkGroupID * gl_WorkGroupSize) - 1; PopulateSharedIndex(imgCoordOffset, workGroupOffset, i); @@ -140,9 +140,8 @@ void main() { uint blockId = voxelSharedData[getSharedCoord(ivec3(gl_LocalInvocationID) + 1)]; float mixWeight = blockId == BLOCK_EMPTY ? 1.0 : 0.0; - LpvBlockData blockData = LpvBlockMap[blockId]; if (blockId > 0 && blockId != BLOCK_EMPTY) - ParseBlockLpvData(blockData.data, mixMask, mixWeight); + ParseBlockLpvData(LpvBlockMap[blockId].MaskWeight, mixMask, mixWeight); #ifdef LPV_GLASS_TINT if (blockId >= BLOCK_HONEY && blockId <= BLOCK_TINTED_GLASS) { @@ -161,11 +160,9 @@ void main() { lightValue.ba = log2(lightValue.ba + 1.0) / LpvBlockSkyRange; if (blockId > 0 && blockId != BLOCK_EMPTY) { - vec3 lightColor = unpackUnorm4x8(blockData.LightColor).rgb; - vec2 lightRangeSize = unpackUnorm4x8(blockData.LightRangeSize).xy; - float lightRange = lightRangeSize.x * 255.0; - - lightColor = RGBToLinear(lightColor); + vec4 lightColorRange = unpackUnorm4x8(LpvBlockMap[blockId].ColorRange); + vec3 lightColor = RGBToLinear(lightColorRange.rgb); + float lightRange = lightColorRange.a * 255.0; // #ifdef LIGHTING_FLICKER // vec2 lightNoise = GetDynLightNoise(cameraPosition + blockLocalPos); From 4814cbb6664e5c1032f6e95010e3acb33387e8f6 Mon Sep 17 00:00:00 2001 From: NULL511 Date: Thu, 2 May 2024 14:25:20 -0400 Subject: [PATCH 08/22] lpv align fix --- shaders/lib/lpv_render.glsl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/shaders/lib/lpv_render.glsl b/shaders/lib/lpv_render.glsl index 3137630..1a1b3a4 100644 --- a/shaders/lib/lpv_render.glsl +++ b/shaders/lib/lpv_render.glsl @@ -20,7 +20,7 @@ vec4 SampleLpvNearest(const in ivec3 lpvPos) { } vec4 SampleLpvLinear(const in vec3 lpvPos) { - vec3 pos = lpvPos;// - 0.5; + vec3 pos = lpvPos - 0.5; ivec3 lpvCoord = ivec3(floor(pos)); vec3 lpvF = fract(pos); @@ -98,7 +98,7 @@ vec4 SampleLpvLinear(const in vec3 lpvPos) { vec3 GetLpvBlockLight(const in vec4 lpvSample) { // return GetLpvBlockLight(lpvSample, 1.0); - return lpvSample.rgb;// * LPV_BLOCKLIGHT_SCALE);// * DynamicLightBrightness; + return 3.0 * lpvSample.rgb;// * LPV_BLOCKLIGHT_SCALE);// * DynamicLightBrightness; } float GetLpvSkyLight(const in vec4 lpvSample) { From 5eca39a6116981eb6b838d55487c391bd378c1d6 Mon Sep 17 00:00:00 2001 From: NULL511 Date: Thu, 2 May 2024 14:36:06 -0400 Subject: [PATCH 09/22] floodfill fix tex-normal; cleanup --- shaders/dimensions/composite1.fsh | 4 +- shaders/lib/lpv_render.glsl | 65 +------------------------------ shaders/lib/voxel_read.glsl | 10 +---- 3 files changed, 6 insertions(+), 73 deletions(-) diff --git a/shaders/dimensions/composite1.fsh b/shaders/dimensions/composite1.fsh index 46354a9..47a61b9 100644 --- a/shaders/dimensions/composite1.fsh +++ b/shaders/dimensions/composite1.fsh @@ -1268,8 +1268,8 @@ void main() { #endif #ifdef IS_LPV_ENABLED - vec3 lpvPos = GetLpvPosition(feetPlayerPos) + 0.5*viewToWorld(FlatNormals); - // vec3 lpvPos = GetLpvPosition(feetPlayerPos) - 0.5*FlatNormals + slopednormal; + // vec3 lpvPos = GetLpvPosition(feetPlayerPos) + 0.5*viewToWorld(FlatNormals); + vec3 lpvPos = GetLpvPosition(feetPlayerPos) - 0.5*viewToWorld(FlatNormals) + slopednormal; #else const vec3 lpvPos = vec3(0.0); #endif diff --git a/shaders/lib/lpv_render.glsl b/shaders/lib/lpv_render.glsl index 1a1b3a4..56e8815 100644 --- a/shaders/lib/lpv_render.glsl +++ b/shaders/lib/lpv_render.glsl @@ -1,12 +1,3 @@ -// float LpvVoxelTest(const in ivec3 voxelCoord) { -// ivec3 gridCell = ivec3(floor(voxelCoord / LIGHT_BIN_SIZE)); -// uint gridIndex = GetVoxelGridCellIndex(gridCell); -// ivec3 blockCell = voxelCoord - gridCell * LIGHT_BIN_SIZE; - -// uint blockId = GetVoxelBlockMask(blockCell, gridIndex); -// return IsTraceOpenBlock(blockId) ? 1.0 : 0.0; -// } - vec4 SampleLpvNearest(const in ivec3 lpvPos) { vec4 lpvSample = (frameCounter % 2) == 0 ? imageLoad(imgLpv1, lpvPos) @@ -34,56 +25,6 @@ vec4 SampleLpvLinear(const in vec3 lpvPos) { vec4 sample_x1y2z2 = SampleLpvNearest(lpvCoord + ivec3(0, 1, 1)); vec4 sample_x2y2z2 = SampleLpvNearest(lpvCoord + ivec3(1, 1, 1)); - // #ifdef LPV_VOXEL_TEST - // vec3 lpvCameraOffset = fract(cameraPosition); - // vec3 voxelCameraOffset = fract(cameraPosition / LIGHT_BIN_SIZE) * LIGHT_BIN_SIZE; - // ivec3 voxelPos = ivec3(lpvPos - SceneLPVCenter + VoxelBlockCenter + voxelCameraOffset - lpvCameraOffset + 0.5); - - // float voxel_x1y1z1 = LpvVoxelTest(voxelPos + ivec3(0, 0, 0)); - // float voxel_x2y1z1 = LpvVoxelTest(voxelPos + ivec3(1, 0, 0)); - // float voxel_x1y2z1 = LpvVoxelTest(voxelPos + ivec3(0, 1, 0)); - // float voxel_x2y2z1 = LpvVoxelTest(voxelPos + ivec3(1, 1, 0)); - - // float voxel_x1y1z2 = LpvVoxelTest(voxelPos + ivec3(0, 0, 1)); - // float voxel_x2y1z2 = LpvVoxelTest(voxelPos + ivec3(1, 0, 1)); - // float voxel_x1y2z2 = LpvVoxelTest(voxelPos + ivec3(0, 1, 1)); - // float voxel_x2y2z2 = LpvVoxelTest(voxelPos + ivec3(1, 1, 1)); - - // sample_x1y1z1 *= voxel_x1y1z1; - // sample_x2y1z1 *= voxel_x2y1z1; - // sample_x1y2z1 *= voxel_x1y2z1; - // sample_x2y2z1 *= voxel_x2y2z1; - - // sample_x1y1z2 *= voxel_x1y1z2; - // sample_x2y1z2 *= voxel_x2y1z2; - // sample_x1y2z2 *= voxel_x1y2z2; - // sample_x2y2z2 *= voxel_x2y2z2; - - - // // TODO: Add special checks for avoiding diagonal blending between occluded edges/corners - - // // TODO: preload voxel grid into array - // // then prevent blending if all but current and opposing quadrants are empty - - // // ivec3 iq = 1 - ivec3(step(vec3(0.5), lpvF)); - // // float voxel_iqx = 1.0 - LpvVoxelTest(ivec3(voxelPos) + ivec3(iq.x, 0, 0)); - // // float voxel_iqy = 1.0 - LpvVoxelTest(ivec3(voxelPos) + ivec3(0, iq.y, 0)); - // // float voxel_iqz = 1.0 - LpvVoxelTest(ivec3(voxelPos) + ivec3(0, 0, iq.z)); - // // float voxel_corner = 1.0 - voxel_iqx * voxel_iqy * voxel_iqz; - - // // float voxel_y1 = LpvVoxelTest(ivec3(voxelPos + vec3(0, 0, 0))); - // // sample_x1y1z1 *= voxel_y1; - // // sample_x2y1z1 *= voxel_y1; - // // sample_x1y1z2 *= voxel_y1; - // // sample_x2y1z2 *= voxel_y1; - - // // float voxel_y2 = LpvVoxelTest(voxelPos + ivec3(0, 1, 0)); - // // sample_x1y2z1 *= voxel_y2; - // // sample_x2y2z1 *= voxel_y2; - // // sample_x1y2z2 *= voxel_y2; - // // sample_x2y2z2 *= voxel_y2; - // #endif - vec4 sample_y1z1 = mix(sample_x1y1z1, sample_x2y1z1, lpvF.x); vec4 sample_y2z1 = mix(sample_x1y2z1, sample_x2y2z1, lpvF.x); @@ -93,16 +34,14 @@ vec4 SampleLpvLinear(const in vec3 lpvPos) { vec4 sample_z1 = mix(sample_y1z1, sample_y2z1, lpvF.y); vec4 sample_z2 = mix(sample_y1z2, sample_y2z2, lpvF.y); - return mix(sample_z1, sample_z2, lpvF.z);// * voxel_corner; + return mix(sample_z1, sample_z2, lpvF.z); } vec3 GetLpvBlockLight(const in vec4 lpvSample) { - // return GetLpvBlockLight(lpvSample, 1.0); - return 3.0 * lpvSample.rgb;// * LPV_BLOCKLIGHT_SCALE);// * DynamicLightBrightness; + return 3.0 * lpvSample.rgb; } float GetLpvSkyLight(const in vec4 lpvSample) { float skyLight = saturate(lpvSample.a); - // return _pow2(skyLight); return skyLight*skyLight; } diff --git a/shaders/lib/voxel_read.glsl b/shaders/lib/voxel_read.glsl index 118a3ce..a8a4e18 100644 --- a/shaders/lib/voxel_read.glsl +++ b/shaders/lib/voxel_read.glsl @@ -1,12 +1,6 @@ uint GetVoxelBlock(const in ivec3 voxelPos) { - // TODO: exit early if outside bounds + if (clamp(voxelPos, ivec3(0), ivec3(VoxelSize3-1u)) != voxelPos) + return BLOCK_EMPTY; return imageLoad(imgVoxelMask, voxelPos).r; } - -// uint GetVoxelBlock(const in vec3 playerPos) { -// ivec3 voxelPos = GetVoxelIndex(playerPos); - -// // TODO: exit early if outside bounds -// return imageLoad(imgVoxelMask, voxelPos).r; -// } From 28a51779a04916b7bf4af3545548f9bea1b4c0e2 Mon Sep 17 00:00:00 2001 From: NULL511 Date: Thu, 2 May 2024 16:33:55 -0400 Subject: [PATCH 10/22] floodfill more lights --- shaders/block.properties | 60 ++++++++++------- shaders/lib/blocks.glsl | 44 +++++++----- shaders/lib/lpv_blocks.glsl | 4 +- shaders/lib/lpv_render.glsl | 3 +- shaders/world0/setup.csh | 122 ++++++++++++++++++++++++++++++---- shaders/world0/shadowcomp.csh | 15 ++--- 6 files changed, 183 insertions(+), 65 deletions(-) diff --git a/shaders/block.properties b/shaders/block.properties index 290af81..cc34256 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -15,7 +15,7 @@ block.10004 = minecraft:flowering_azalea minecraft:tall_seagrass minecraft:seagrass minecraft:kelp minecraft:large_fern:half=lower minecraft:tall_grass minecraft:tall_seagrass minecraft:kelp_plant minecraft:peony minecraft:rose_bush minecraft:lilac minecraft:sunflower:half=lower minecraft:packed_ice minecraft:blue_ice minecraft:melon_stem minecraft:pumpkin_stem minecraft:attached_melon_stem minecraft:attached_pumpkin_stem minecraft:lily_pad westerosblocks:blackberry_bush westerosblocks:blueberry_bush westerosblocks:raspberry_bush westerosblocks:juniper_bush westerosblocks:red_rose_bush westerosblocks:pink_rose_bush westerosblocks:white_rose_bush westerosblocks:yellow_rose_bush westerosblocks:yellow_wildflowers westerosblocks:green_spiny_herb westerosblocks:green_leafy_herb westerosblocks:orange_marigolds westerosblocks:orange_trollius westerosblocks:blue_forgetmenots westerosblocks:pink_wildflowers westerosblocks:yellow_tansy westerosblocks:blue_flax westerosblocks:white_daisies westerosblocks:yellow_daisies westerosblocks:green_scrub_grass westerosblocks:dead_scrub_grass westerosblocks:yellow_bedstraw westerosblocks:orange_bells westerosblocks:blue_bells westerosblocks:blue_swamp_bells westerosblocks:yellow_buttercups westerosblocks:orange_bog_asphodel westerosblocks:yellow_lupine westerosblocks:blue_hyacinth westerosblocks:pink_thistle westerosblocks:yellow_dandelions westerosblocks:yellow_daffodils westerosblocks:yellow_roses westerosblocks:strawberry_bush westerosblocks:white_lilyofthevalley westerosblocks:yellow_bells westerosblocks:yellow_sunflower westerosblocks:white_roses westerosblocks:red_dark_roses westerosblocks:yellow_hellebore westerosblocks:meadow_fescue westerosblocks:red_poppies westerosblocks:red_roses westerosblocks:purple_pansies westerosblocks:purple_roses westerosblocks:orange_sun_star westerosblocks:pink_primrose westerosblocks:red_aster westerosblocks:blue_chicory westerosblocks:red_flowering_spiny_herb westerosblocks:purple_foxglove westerosblocks:pink_allium westerosblocks:purple_violets westerosblocks:white_chamomile westerosblocks:red_tulips westerosblocks:white_peony westerosblocks:purple_alpine_sowthistle westerosblocks:red_carnations westerosblocks:magenta_roses westerosblocks:red_chrysanthemum westerosblocks:blue_orchid westerosblocks:yellow_rudbeckia westerosblocks:pink_tulips westerosblocks:cranberry_bush westerosblocks:purple_lavender westerosblocks:red_sourleaf_bush westerosblocks:pink_sweet_peas westerosblocks:red_sorrel westerosblocks:pink_roses westerosblocks:unshaded_grass westerosblocks:cow_parsely westerosblocks:bracken westerosblocks:lady_fern westerosblocks:nettle westerosblocks:dead_bracken westerosblocks:fireweed westerosblocks:heather westerosblocks:red_fern westerosblocks:dock_leaf westerosblocks:jasmine_vines westerosblocks:dappled_moss westerosblocks:cushion_moss_wall westerosblocks:hemp_short westerosblocks:hemp_tall westerosblocks:hemp_dense westerosblocks:crop_carrots westerosblocks:crop_wheat westerosblocks:crop_turnips westerosblocks:crop_peas westerosblocks:cattails westerosblocks:jungle_tall_fern westerosblocks:jungle_tall_grass westerosblocks:savanna_tall_grass \ ## weak sss - block.10006 = minecraft:amethyst_block minecraft:budding_amethyst minecraft:small_amethyst_bud minecraft:medium_amethyst_bud minecraft:large_amethyst_bud minecraft:amethyst_cluster minecraft:pitcher_plant minecraft:small_dripleaf minecraft:grass_block:snowy=true minecraft:snow_block minecraft:snow powder_snow cobweb red_mushroom_block brown_mushroom_block weeping_vines weeping_vines_plant twisting_vines twisting_vines_plant vine tube_coral tube_coral_block tube_coral_fan tube_coral_wall_fan horn_coral horn_coral_block horn_coral_fan horn_coral_wall_fan fire_coral fire_coral_block fire_coral_fan fire_coral_wall_fan dead_brain_coral dead_brain_coral_block dead_brain_coral_fan dead_brain_coral_wall_fan dead_bubble_coral dead_bubble_coral_block dead_bubble_coral_fan dead_bubble_coral_wall_fan dead_bush dead_fire_coral dead_fire_coral_block dead_fire_coral_fan dead_fire_coral_wall_fan dead_horn_coral dead_horn_coral_block dead_horn_coral_fan dead_horn_coral_wall_fan dead_tube_coral dead_tube_coral_block dead_tube_coral_fan dead_tube_coral_wall_fan bubble_coral bubble_coral_block bubble_coral_fan bubble_coral_wall_fan brain_coral brain_coral_block brain_coral_fan brain_coral_wall_fan bamboo bamboo_sapling minecraft:spore_blossom minecraft:cave_vines minecraft:cave_vines_plant minecraft:glow_lichen minecraft:melon minecraft:pumpkin minecraft:big_dripleaf minecraft:big_dripleaf_stem minecraft:cactus minecraft:hay_block minecraft:brown_mushroom minecraft:mushroom_stem minecraft:sugar_cane minecraft:crimson_fungus minecraft:warped_fungus minecraft:sea_pickle minecraft:honeycomb_block + block.10006 = minecraft:amethyst_block minecraft:budding_amethyst minecraft:small_amethyst_bud minecraft:medium_amethyst_bud minecraft:large_amethyst_bud minecraft:amethyst_cluster minecraft:pitcher_plant minecraft:small_dripleaf minecraft:grass_block:snowy=true minecraft:snow_block minecraft:snow powder_snow cobweb red_mushroom_block brown_mushroom_block weeping_vines weeping_vines_plant twisting_vines twisting_vines_plant vine tube_coral tube_coral_block tube_coral_fan tube_coral_wall_fan horn_coral horn_coral_block horn_coral_fan horn_coral_wall_fan fire_coral fire_coral_block fire_coral_fan fire_coral_wall_fan dead_brain_coral dead_brain_coral_block dead_brain_coral_fan dead_brain_coral_wall_fan dead_bubble_coral dead_bubble_coral_block dead_bubble_coral_fan dead_bubble_coral_wall_fan dead_bush dead_fire_coral dead_fire_coral_block dead_fire_coral_fan dead_fire_coral_wall_fan dead_horn_coral dead_horn_coral_block dead_horn_coral_fan dead_horn_coral_wall_fan dead_tube_coral dead_tube_coral_block dead_tube_coral_fan dead_tube_coral_wall_fan bubble_coral bubble_coral_block bubble_coral_fan bubble_coral_wall_fan brain_coral brain_coral_block brain_coral_fan brain_coral_wall_fan bamboo bamboo_sapling minecraft:spore_blossom minecraft:cave_vines minecraft:cave_vines_plant minecraft:glow_lichen minecraft:melon minecraft:pumpkin minecraft:big_dripleaf minecraft:big_dripleaf_stem minecraft:cactus minecraft:hay_block minecraft:brown_mushroom minecraft:mushroom_stem minecraft:sugar_cane minecraft:crimson_fungus minecraft:warped_fungus minecraft:sea_pickle:waterlogged=false minecraft:honeycomb_block ## weak sss block.200 = minecraft:white_wool minecraft:orange_wool minecraft:magenta_wool minecraft:light_blue_wool minecraft:yellow_wool minecraft:lime_wool minecraft:pink_wool minecraft:gray_wool minecraft:light_gray_wool minecraft:cyan_wool minecraft:purple_wool minecraft:blue_wool minecraft:brown_wool minecraft:green_wool minecraft:red_wool minecraft:black_wool minecraft:orange_carpet minecraft:magenta_carpet minecraft:light_blue_carpet minecraft:yellow_carpet minecraft:lime_carpet minecraft:pink_carpet minecraft:gray_carpet minecraft:light_gray_carpet minecraft:cyan_carpet minecraft:purple_carpet minecraft:blue_carpet minecraft:brown_carpet minecraft:green_carpet minecraft:red_carpet minecraft:black_carpet 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 @@ -30,32 +30,44 @@ block.10008 = minecraft:grass_block:snowy=false ####### ----- lightsources ----- ####### - #block.10005 = minecraft:sculk_sensor:sculk_sensor_phase=active minecraft:soul_fire minecraft:soul_campfire:lit=true minecraft:cave_vines_plant:berries=true minecraft:soul_lantern minecraft:soul_torch minecraft:soul_wall_torch minecraft:conduit minecraft:beacon minecraft:sea_pickle minecraft:respawn_anchor:charges=4 minecraft:smoker:lit=true minecraft:sea_lantern minecraft:cave_vines:berries=true minecraft:glowstone minecraft:torch minecraft:wall_torch minecraft:lava minecraft:fire minecraft:redstone_torch minecraft:redstone_wall_torch minecraft:jack_o_lantern minecraft:magma_block minecraft:redstone_lamp:lit=true minecraft:lantern minecraft:campfire:lit=true minecraft:shroomlight minecraft:end_rod minecraft:end_gateway minecraft:lava minecraft:fire westerosblocks:safe_fire conquest:white_paper_lantern conquest:yellow_paper_lantern conquest:small_red_paper_lantern conquest:chinese_palace_lantern conquest:campfire conquest:brazier conquest:hanging_brazier conquest:chandelier conquest:candelabra conquest:cross_chandelier conquest:iron_candelabrum_1 conquest:golden_candelabrum_1 conquest:candle conquest:hanging_candle_holder conquest:candle_in_a_lantern conquest:candles conquest:hand_candle conquest:torch_with_grille conquest:elven_hand_light conquest:ship_lantern conquest:victorian_lantern conquest:small_lantern conquest:big_lantern conquest:hanging_oil_lamp conquest:oil_lamp conquest:terracotta_oil_lamp conquest:invisible_light_low conquest:invisible_light_medium conquest:invisible_light - block.1000 = cave_vines_plant:berries=true cave_vines:berries=true - block.1001 = soul_fire soul_campfire:lit=true - block.1002 = soul_lantern - block.1003 = soul_torch soul_wall_torch - block.1004 = conduit - block.1005 = beacon - block.1006 = sea_pickle - block.1007 = respawn_anchor:charges=4 - block.1008 = smoker:lit=true - block.1009 = sea_lantern + block.1001 = beacon + block.1002 = cave_vines_plant:berries=true cave_vines:berries=true + block.1003 = conduit + block.1004 = end_gateway + block.1005 = end_rod + block.1006 = fire campfire:lit=true + block.1007 = ochre_froglight + block.1008 = pearlescent_froglight + block.1009 = verdant_froglight block.1010 = glowstone - block.1011 = torch wall_torch - block.1012 = lava - block.1013 = fire - block.1014 = redstone_torch redstone_wall_torch - block.1015 = jack_o_lantern - block.1016 = magma_block - block.1017 = redstone_lamp:lit=true - block.1018 = lantern - block.1019 = campfire:lit=true - block.1020 = shroomlight - block.1021 = end_rod minecraft:end_gateway westerosblocks:safe_fire conquest:white_paper_lantern conquest:yellow_paper_lantern conquest:small_red_paper_lantern conquest:chinese_palace_lantern conquest:campfire conquest:brazier conquest:hanging_brazier conquest:chandelier conquest:candelabra conquest:cross_chandelier conquest:iron_candelabrum_1 conquest:golden_candelabrum_1 conquest:candle conquest:hanging_candle_holder conquest:candle_in_a_lantern conquest:candles conquest:hand_candle conquest:torch_with_grille conquest:elven_hand_light conquest:ship_lantern conquest:victorian_lantern conquest:small_lantern conquest:big_lantern conquest:hanging_oil_lamp conquest:oil_lamp conquest:terracotta_oil_lamp conquest:invisible_light_low conquest:invisible_light_medium conquest:invisible_light + block.1011 = jack_o_lantern + block.1012 = lantern + block.1013 = lava + block.1014 = magma_block + block.1015 = redstone_lamp:lit=true + block.1016 = redstone_torch:lit=true redstone_wall_torch:lit=true + block.1017 = respawn_anchor:charges=4 + block.1018 = sculk_sensor:sculk_sensor_phase=active + block.1019 = sea_pickle:waterlogged=true:pickles=1 + block.1020 = sea_pickle:waterlogged=true:pickles=2 + block.1021 = sea_pickle:waterlogged=true:pickles=3 + block.1022 = sea_pickle:waterlogged=true:pickles=4 + block.1023 = sea_lantern + block.1024 = shroomlight + block.1025 = smoker:lit=true + block.1026 = soul_fire soul_campfire:lit=true + block.1027 = soul_lantern + block.1028 = soul_torch soul_wall_torch + block.1029 = torch wall_torch + + block.1100 = westerosblocks:safe_fire + block.1101 = conquest:white_paper_lantern conquest:yellow_paper_lantern conquest:small_red_paper_lantern conquest:chinese_palace_lantern conquest:campfire conquest:brazier conquest:hanging_brazier conquest:chandelier conquest:candelabra conquest:cross_chandelier conquest:iron_candelabrum_1 conquest:golden_candelabrum_1 conquest:candle conquest:hanging_candle_holder conquest:candle_in_a_lantern conquest:candles conquest:hand_candle conquest:torch_with_grille conquest:elven_hand_light conquest:ship_lantern conquest:victorian_lantern conquest:small_lantern conquest:big_lantern conquest:hanging_oil_lamp conquest:oil_lamp conquest:terracotta_oil_lamp conquest:invisible_light_low conquest:invisible_light_medium conquest:invisible_light ####### ----- reflective translucents / glass ----- ####### - block.10002 = minecraft:slime_block minecraft:nether_portal minecraft:honey_block ice minecraft:frosted_ice minecraft:black_stained_glass minecraft:black_stained_glass_pane minecraft:blue_stained_glass minecraft:blue_stained_glass_pane minecraft:brown_stained_glass minecraft:brown_stained_glass_pane minecraft:cyan_stained_glass minecraft:cyan_stained_glass_pane minecraft:gray_stained_glass minecraft:gray_stained_glass_pane minecraft:green_stained_glass minecraft:green_stained_glass_pane minecraft:light_blue_stained_glass minecraft:light_blue_stained_glass_pane minecraft:light_gray_stained_glass minecraft:light_gray_stained_glass_pane minecraft:lime_stained_glass minecraft:lime_stained_glass_pane minecraft:magenta_stained_glass minecraft:magenta_stained_glass_pane minecraft:orange_stained_glass minecraft:orange_stained_glass_pane minecraft:pink_stained_glass minecraft:pink_stained_glass_pane minecraft:purple_stained_glass minecraft:purple_stained_glass_pane minecraft:red_stained_glass minecraft:red_stained_glass_pane minecraft:white_stained_glass minecraft:white_stained_glass_pane minecraft:yellow_stained_glass minecraft:yellow_stained_glass_pane minecraft:glass_pane minecraft:glass + # block.10002 = minecraft:slime_block minecraft:nether_portal minecraft:honey_block ice minecraft:frosted_ice minecraft:black_stained_glass minecraft:black_stained_glass_pane minecraft:blue_stained_glass minecraft:blue_stained_glass_pane minecraft:brown_stained_glass minecraft:brown_stained_glass_pane minecraft:cyan_stained_glass minecraft:cyan_stained_glass_pane minecraft:gray_stained_glass minecraft:gray_stained_glass_pane minecraft:green_stained_glass minecraft:green_stained_glass_pane minecraft:light_blue_stained_glass minecraft:light_blue_stained_glass_pane minecraft:light_gray_stained_glass minecraft:light_gray_stained_glass_pane minecraft:lime_stained_glass minecraft:lime_stained_glass_pane minecraft:magenta_stained_glass minecraft:magenta_stained_glass_pane minecraft:orange_stained_glass minecraft:orange_stained_glass_pane minecraft:pink_stained_glass minecraft:pink_stained_glass_pane minecraft:purple_stained_glass minecraft:purple_stained_glass_pane minecraft:red_stained_glass minecraft:red_stained_glass_pane minecraft:white_stained_glass minecraft:white_stained_glass_pane minecraft:yellow_stained_glass minecraft:yellow_stained_glass_pane minecraft:glass_pane minecraft:glass + block.10002 = minecraft:slime_block minecraft:honey_block ice minecraft:frosted_ice minecraft:black_stained_glass minecraft:black_stained_glass_pane minecraft:blue_stained_glass minecraft:blue_stained_glass_pane minecraft:brown_stained_glass minecraft:brown_stained_glass_pane minecraft:cyan_stained_glass minecraft:cyan_stained_glass_pane minecraft:gray_stained_glass minecraft:gray_stained_glass_pane minecraft:green_stained_glass minecraft:green_stained_glass_pane minecraft:light_blue_stained_glass minecraft:light_blue_stained_glass_pane minecraft:light_gray_stained_glass minecraft:light_gray_stained_glass_pane minecraft:lime_stained_glass minecraft:lime_stained_glass_pane minecraft:magenta_stained_glass minecraft:magenta_stained_glass_pane minecraft:orange_stained_glass minecraft:orange_stained_glass_pane minecraft:pink_stained_glass minecraft:pink_stained_glass_pane minecraft:purple_stained_glass minecraft:purple_stained_glass_pane minecraft:red_stained_glass minecraft:red_stained_glass_pane minecraft:white_stained_glass minecraft:white_stained_glass_pane minecraft:yellow_stained_glass minecraft:yellow_stained_glass_pane minecraft:glass_pane minecraft:glass + + block.1200 = nether_portal ####### ----- misc ----- ####### ## all blocks here get exluded from POM. diff --git a/shaders/lib/blocks.glsl b/shaders/lib/blocks.glsl index 979b0ff..aa00a20 100644 --- a/shaders/lib/blocks.glsl +++ b/shaders/lib/blocks.glsl @@ -1,19 +1,33 @@ #define BLOCK_WATER 8 -#define BLOCK_CAVE_VINE_BERRIES 1000 -#define BLOCK_SOUL_FIRE 1001 -#define BLOCK_SOUL_LANTERN 1002 -#define BLOCK_SOUL_TORCH 1003 - -#define BLOCK_SEA_LANTERN 1009 +#define BLOCK_BEACON 1001 +#define BLOCK_CAVE_VINE_BERRIES 1002 +#define BLOCK_CONDUIT 1003 +#define BLOCK_END_GATEWAY 1004 +#define BLOCK_END_ROD 1005 +#define BLOCK_FIRE 1006 +#define BLOCK_FROGLIGHT_OCHRE 1007 +#define BLOCK_FROGLIGHT_PEARLESCENT 1008 +#define BLOCK_FROGLIGHT_VERDANT 1009 #define BLOCK_GLOWSTONE 1010 -#define BLOCK_TORCH 1011 -#define BLOCK_LAVA 1012 -#define BLOCK_FIRE 1013 -#define BLOCK_REDSTONE_TORCH 1014 +#define BLOCK_JACK_O_LANTERN 1011 +#define BLOCK_LANTERN 1012 +#define BLOCK_LAVA 1013 +#define BLOCK_MAGMA 1014 +#define BLOCK_REDSTONE_LAMP_LIT 1015 +#define BLOCK_REDSTONE_TORCH_LIT 1016 +#define BLOCK_RESPAWN_ANCHOR_4 1017 +#define BLOCK_SCULK_SENSOR_ACTIVE 1018 +#define BLOCK_SEA_PICKLE_WET_1 1019 +#define BLOCK_SEA_PICKLE_WET_2 1020 +#define BLOCK_SEA_PICKLE_WET_3 1021 +#define BLOCK_SEA_PICKLE_WET_4 1022 +#define BLOCK_SEA_LANTERN 1023 +#define BLOCK_SHROOMLIGHT 1024 +#define BLOCK_SMOKER_LIT 1025 +#define BLOCK_SOUL_FIRE 1026 +#define BLOCK_SOUL_LANTERN 1027 +#define BLOCK_SOUL_TORCH 1028 +#define BLOCK_TORCH 1029 -#define BLOCK_MAGMA 1016 - -#define BLOCK_LANTERN 1018 - -#define BLOCK_SHROOMLIGHT 1020 +#define BLOCK_NETHER_PORTAL 1200 diff --git a/shaders/lib/lpv_blocks.glsl b/shaders/lib/lpv_blocks.glsl index dba0484..c6f26d9 100644 --- a/shaders/lib/lpv_blocks.glsl +++ b/shaders/lib/lpv_blocks.glsl @@ -1,5 +1,5 @@ struct LpvBlockData { // 8 x1280 =? - uint MaskWeight; // 4 + uint MaskWeight; // 4 uint ColorRange; // 4 }; @@ -12,6 +12,8 @@ struct LpvBlockData { // 8 x1280 =? LpvBlockData LpvBlockMap[]; }; +const int LpvBlockMapOffset = 999; + uint BuildBlockLpvData(uint mixMask, float mixWeight) { uint data = uint(saturate(mixWeight) * 255.0); diff --git a/shaders/lib/lpv_render.glsl b/shaders/lib/lpv_render.glsl index 56e8815..e085b2c 100644 --- a/shaders/lib/lpv_render.glsl +++ b/shaders/lib/lpv_render.glsl @@ -3,8 +3,7 @@ vec4 SampleLpvNearest(const in ivec3 lpvPos) { ? imageLoad(imgLpv1, lpvPos) : imageLoad(imgLpv2, lpvPos); - //lpvSample.ba = exp2(lpvSample.ba * LpvBlockSkyRange) - 1.0; - lpvSample.b = (lpvSample.b*lpvSample.b) * LpvBlockSkyRange.x; + lpvSample.b = pow(lpvSample.b, 4) * LpvBlockSkyRange.x; lpvSample.rgb = HsvToRgb(lpvSample.rgb); return lpvSample; diff --git a/shaders/world0/setup.csh b/shaders/world0/setup.csh index 92af98b..c6a9b51 100644 --- a/shaders/world0/setup.csh +++ b/shaders/world0/setup.csh @@ -13,10 +13,12 @@ const ivec3 workGroups = ivec3(4, 5, 1); #include "/lib/lpv_blocks.glsl" #endif +const vec3 LightColor_SeaPickle = vec3(0.283, 0.394, 0.212); + void main() { #ifdef IS_LPV_ENABLED - uint blockId = uint(gl_GlobalInvocationID.x + gl_GlobalInvocationID.y * 32); + uint blockId = uint(gl_GlobalInvocationID.x + gl_GlobalInvocationID.y * 32 + LpvBlockMapOffset); //if (blockId >= 1280) return; vec3 lightColor = vec3(0.0); @@ -25,18 +27,108 @@ void main() { uint mixMask = 0xFFFF; switch (blockId) { - case BLOCK_GLOWSTONE: - lightColor = vec3(0.8, 0.7, 0.1); - lightRange = 15.0; - break; - case BLOCK_REDSTONE_TORCH: - lightColor = vec3(1.0, 0.1, 0.1); - lightRange = 7.0; - break; - case BLOCK_SEA_LANTERN: + case BLOCK_BEACON: lightColor = vec3(1.0); lightRange = 15.0; break; + case BLOCK_CAVE_VINE_BERRIES: + lightColor = vec3(0.717, 0.541, 0.188); + lightRange = 14.0; + break; + case BLOCK_CONDUIT: + lightColor = vec3(1.0); + lightRange = 15.0; + break; + case BLOCK_END_GATEWAY: + lightColor = vec3(1.0); + lightRange = 15.0; + break; + case BLOCK_END_ROD: + lightColor = vec3(0.957, 0.929, 0.875); + lightRange = 14.0; + break; + case BLOCK_FIRE: + lightColor = vec3(0.864, 0.598, 0.348); + lightRange = 15.0; + break; + case BLOCK_FROGLIGHT_OCHRE: + lightColor = vec3(0.768, 0.648, 0.108); + lightRange = 15.0; + break; + case BLOCK_FROGLIGHT_PEARLESCENT: + lightColor = vec3(0.737, 0.435, 0.658); + lightRange = 15.0; + break; + case BLOCK_FROGLIGHT_VERDANT: + lightColor = vec3(0.463, 0.763, 0.409); + lightRange = 15.0; + break; + case BLOCK_GLOWSTONE: + lightColor = vec3(0.747, 0.594, 0.326); + lightRange = 15.0; + break; + case BLOCK_JACK_O_LANTERN: + lightColor = vec3(1.0, 0.7, 0.1); + lightRange = 15.0; + break; + case BLOCK_LANTERN: + lightColor = vec3(1.0, 0.7, 0.1); + lightRange = 15.0; + break; + case BLOCK_LAVA: + lightColor = vec3(0.804, 0.424, 0.149); + lightRange = 15.0; + break; + case BLOCK_MAGMA: + lightColor = vec3(0.747, 0.323, 0.110); + lightRange = 3.0; + break; + case BLOCK_REDSTONE_LAMP_LIT: + lightColor = vec3(0.953, 0.796, 0.496); + lightRange = 15.0; + break; + case BLOCK_REDSTONE_TORCH_LIT: + lightColor = vec3(0.939, 0.305, 0.164); + lightRange = 7.0; + break; + case BLOCK_RESPAWN_ANCHOR_4: + lightColor = vec3(1.0, 0.2, 1.0); + lightRange = 15.0; + break; + case BLOCK_SCULK_SENSOR_ACTIVE: + lightColor = vec3(0.1, 0.4, 1.0); + lightRange = 1.0; + break; + case BLOCK_SEA_PICKLE_WET_1: + lightColor = LightColor_SeaPickle; + lightRange = 6.0; + break; + case BLOCK_SEA_PICKLE_WET_2: + lightColor = LightColor_SeaPickle; + lightRange = 9.0; + break; + case BLOCK_SEA_PICKLE_WET_3: + lightColor = LightColor_SeaPickle; + lightRange = 12.0; + break; + case BLOCK_SEA_PICKLE_WET_4: + lightColor = LightColor_SeaPickle; + lightRange = 15.0; + break; + case BLOCK_SEA_LANTERN: + lightColor = vec3(0.553, 0.748, 0.859); + lightRange = 15.0; + break; + case BLOCK_SHROOMLIGHT: + lightColor = vec3(0.848, 0.469, 0.205); + lightRange = 15.0; + break; + case BLOCK_SMOKER_LIT: + lightColor = vec3(0.8, 0.7, 0.1); + lightRange = 13.0; + break; + case BLOCK_SOUL_FIRE: + case BLOCK_SOUL_LANTERN: case BLOCK_SOUL_TORCH: lightColor = vec3(0.1, 0.6, 1.0); lightRange = 10.0; @@ -45,11 +137,17 @@ void main() { lightColor = vec3(1.0, 0.6, 0.1); lightRange = 14.0; break; + + + case BLOCK_NETHER_PORTAL: + lightColor = vec3(0.502, 0.165, 0.831); + lightRange = 11.0; + break; } LpvBlockData block; - block.MaskWeight = BuildBlockLpvData(mixMask, mixWeight); block.ColorRange = packUnorm4x8(vec4(lightColor, lightRange/255.0)); - LpvBlockMap[blockId] = block; + block.MaskWeight = BuildBlockLpvData(mixMask, mixWeight); + LpvBlockMap[blockId - LpvBlockMapOffset] = block; #endif } diff --git a/shaders/world0/shadowcomp.csh b/shaders/world0/shadowcomp.csh index 3c359bb..8100506 100644 --- a/shaders/world0/shadowcomp.csh +++ b/shaders/world0/shadowcomp.csh @@ -34,8 +34,6 @@ layout (local_size_x = 8, local_size_y = 8, local_size_z = 8) in; #include "/lib/voxel_common.glsl" #include "/lib/voxel_read.glsl" - // uniform mat4 gbufferModelViewInverse; - int sumOf(ivec3 vec) {return vec.x + vec.y + vec.z;} vec3 RGBToLinear(const in vec3 color) { @@ -77,7 +75,7 @@ layout (local_size_x = 8, local_size_y = 8, local_size_z = 8) in; uint blockId = voxelSharedData[shared_index]; if (blockId > 0 && blockId != BLOCK_EMPTY) - ParseBlockLpvData(LpvBlockMap[blockId].MaskWeight, mixMask, mixWeight); + ParseBlockLpvData(LpvBlockMap[blockId - LpvBlockMapOffset].MaskWeight, mixMask, mixWeight); return lpvSharedData[shared_index] * ((mixMask >> mask_index) & 1u);// * mixWeight; } @@ -141,7 +139,7 @@ void main() { float mixWeight = blockId == BLOCK_EMPTY ? 1.0 : 0.0; if (blockId > 0 && blockId != BLOCK_EMPTY) - ParseBlockLpvData(LpvBlockMap[blockId].MaskWeight, mixMask, mixWeight); + ParseBlockLpvData(LpvBlockMap[blockId - LpvBlockMapOffset].MaskWeight, mixMask, mixWeight); #ifdef LPV_GLASS_TINT if (blockId >= BLOCK_HONEY && blockId <= BLOCK_TINTED_GLASS) { @@ -160,16 +158,11 @@ void main() { lightValue.ba = log2(lightValue.ba + 1.0) / LpvBlockSkyRange; if (blockId > 0 && blockId != BLOCK_EMPTY) { - vec4 lightColorRange = unpackUnorm4x8(LpvBlockMap[blockId].ColorRange); - vec3 lightColor = RGBToLinear(lightColorRange.rgb); + vec4 lightColorRange = unpackUnorm4x8(LpvBlockMap[blockId - LpvBlockMapOffset].ColorRange); float lightRange = lightColorRange.a * 255.0; - // #ifdef LIGHTING_FLICKER - // vec2 lightNoise = GetDynLightNoise(cameraPosition + blockLocalPos); - // ApplyLightFlicker(lightColor, lightType, lightNoise); - // #endif - if (lightRange > EPSILON) { + vec3 lightColor = RGBToLinear(lightColorRange.rgb); lightValue.rgb = Lpv_RgbToHsv(lightColor, lightRange); } } From 6ec7e0187eb6ef9f58896cedb7b6f743a086f855 Mon Sep 17 00:00:00 2001 From: NULL511 Date: Thu, 2 May 2024 17:53:49 -0400 Subject: [PATCH 11/22] floodfill stained glass tinting --- shaders/block.properties | 24 +++++++++-- shaders/lib/blocks.glsl | 23 ++++++++++- shaders/lib/lpv_blocks.glsl | 3 +- shaders/shaders.properties | 2 +- shaders/world0/setup.csh | 76 +++++++++++++++++++++++++++++++++++ shaders/world0/shadowcomp.csh | 24 ++++------- 6 files changed, 130 insertions(+), 22 deletions(-) diff --git a/shaders/block.properties b/shaders/block.properties index cc34256..4e6fca4 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -64,10 +64,28 @@ block.1101 = conquest:white_paper_lantern conquest:yellow_paper_lantern conquest:small_red_paper_lantern conquest:chinese_palace_lantern conquest:campfire conquest:brazier conquest:hanging_brazier conquest:chandelier conquest:candelabra conquest:cross_chandelier conquest:iron_candelabrum_1 conquest:golden_candelabrum_1 conquest:candle conquest:hanging_candle_holder conquest:candle_in_a_lantern conquest:candles conquest:hand_candle conquest:torch_with_grille conquest:elven_hand_light conquest:ship_lantern conquest:victorian_lantern conquest:small_lantern conquest:big_lantern conquest:hanging_oil_lamp conquest:oil_lamp conquest:terracotta_oil_lamp conquest:invisible_light_low conquest:invisible_light_medium conquest:invisible_light ####### ----- reflective translucents / glass ----- ####### - # block.10002 = minecraft:slime_block minecraft:nether_portal minecraft:honey_block ice minecraft:frosted_ice minecraft:black_stained_glass minecraft:black_stained_glass_pane minecraft:blue_stained_glass minecraft:blue_stained_glass_pane minecraft:brown_stained_glass minecraft:brown_stained_glass_pane minecraft:cyan_stained_glass minecraft:cyan_stained_glass_pane minecraft:gray_stained_glass minecraft:gray_stained_glass_pane minecraft:green_stained_glass minecraft:green_stained_glass_pane minecraft:light_blue_stained_glass minecraft:light_blue_stained_glass_pane minecraft:light_gray_stained_glass minecraft:light_gray_stained_glass_pane minecraft:lime_stained_glass minecraft:lime_stained_glass_pane minecraft:magenta_stained_glass minecraft:magenta_stained_glass_pane minecraft:orange_stained_glass minecraft:orange_stained_glass_pane minecraft:pink_stained_glass minecraft:pink_stained_glass_pane minecraft:purple_stained_glass minecraft:purple_stained_glass_pane minecraft:red_stained_glass minecraft:red_stained_glass_pane minecraft:white_stained_glass minecraft:white_stained_glass_pane minecraft:yellow_stained_glass minecraft:yellow_stained_glass_pane minecraft:glass_pane minecraft:glass - block.10002 = minecraft:slime_block minecraft:honey_block ice minecraft:frosted_ice minecraft:black_stained_glass minecraft:black_stained_glass_pane minecraft:blue_stained_glass minecraft:blue_stained_glass_pane minecraft:brown_stained_glass minecraft:brown_stained_glass_pane minecraft:cyan_stained_glass minecraft:cyan_stained_glass_pane minecraft:gray_stained_glass minecraft:gray_stained_glass_pane minecraft:green_stained_glass minecraft:green_stained_glass_pane minecraft:light_blue_stained_glass minecraft:light_blue_stained_glass_pane minecraft:light_gray_stained_glass minecraft:light_gray_stained_glass_pane minecraft:lime_stained_glass minecraft:lime_stained_glass_pane minecraft:magenta_stained_glass minecraft:magenta_stained_glass_pane minecraft:orange_stained_glass minecraft:orange_stained_glass_pane minecraft:pink_stained_glass minecraft:pink_stained_glass_pane minecraft:purple_stained_glass minecraft:purple_stained_glass_pane minecraft:red_stained_glass minecraft:red_stained_glass_pane minecraft:white_stained_glass minecraft:white_stained_glass_pane minecraft:yellow_stained_glass minecraft:yellow_stained_glass_pane minecraft:glass_pane minecraft:glass + block.1201 = glass glass_pane + block.1202 = honey_block + block.1203 = ice frosted_ice + block.1204 = nether_portal + block.1205 = slime_block - block.1200 = nether_portal + block.1220 = black_stained_glass black_stained_glass_pane + block.1221 = blue_stained_glass blue_stained_glass_pane + block.1222 = brown_stained_glass brown_stained_glass_pane + block.1223 = cyan_stained_glass cyan_stained_glass_pane + block.1224 = gray_stained_glass gray_stained_glass_pane + block.1225 = green_stained_glass green_stained_glass_pane + block.1226 = light_blue_stained_glass light_blue_stained_glass_pane + block.1227 = light_gray_stained_glass light_gray_stained_glass_pane + block.1228 = lime_stained_glass lime_stained_glass_pane + block.1229 = magenta_stained_glass magenta_stained_glass_pane + block.1230 = orange_stained_glass orange_stained_glass_pane + block.1231 = pink_stained_glass pink_stained_glass_pane + block.1232 = purple_stained_glass purple_stained_glass_pane + block.1233 = red_stained_glass red_stained_glass_pane + block.1234 = white_stained_glass white_stained_glass_pane + block.1235 = yellow_stained_glass yellow_stained_glass_pane ####### ----- misc ----- ####### ## all blocks here get exluded from POM. diff --git a/shaders/lib/blocks.glsl b/shaders/lib/blocks.glsl index aa00a20..602ca7a 100644 --- a/shaders/lib/blocks.glsl +++ b/shaders/lib/blocks.glsl @@ -30,4 +30,25 @@ #define BLOCK_SOUL_TORCH 1028 #define BLOCK_TORCH 1029 -#define BLOCK_NETHER_PORTAL 1200 +#define BLOCK_GLASS 1201 +#define BLOCK_HONEY 1202 +#define BLOCK_ICE 1203 +#define BLOCK_NETHER_PORTAL 1204 +#define BLOCK_SLIME 1205 + +#define BLOCK_GLASS_BLACK 1220 +#define BLOCK_GLASS_BLUE 1221 +#define BLOCK_GLASS_BROWN 1222 +#define BLOCK_GLASS_CYAN 1223 +#define BLOCK_GLASS_GRAY 1224 +#define BLOCK_GLASS_GREEN 1225 +#define BLOCK_GLASS_LIGHT_BLUE 1226 +#define BLOCK_GLASS_LIGHT_GRAY 1227 +#define BLOCK_GLASS_LIME 1228 +#define BLOCK_GLASS_MAGENTA 1229 +#define BLOCK_GLASS_ORANGE 1230 +#define BLOCK_GLASS_PINK 1231 +#define BLOCK_GLASS_PURPLE 1232 +#define BLOCK_GLASS_RED 1233 +#define BLOCK_GLASS_WHITE 1234 +#define BLOCK_GLASS_YELLOW 1235 diff --git a/shaders/lib/lpv_blocks.glsl b/shaders/lib/lpv_blocks.glsl index c6f26d9..b6a7e74 100644 --- a/shaders/lib/lpv_blocks.glsl +++ b/shaders/lib/lpv_blocks.glsl @@ -1,6 +1,7 @@ -struct LpvBlockData { // 8 x1280 =? +struct LpvBlockData { // 12 x1280 =? uint MaskWeight; // 4 uint ColorRange; // 4 + uint Tint; // 4 }; #ifdef RENDER_SETUP diff --git a/shaders/shaders.properties b/shaders/shaders.properties index ef0e453..2b6a536 100644 --- a/shaders/shaders.properties +++ b/shaders/shaders.properties @@ -617,7 +617,7 @@ uniform.float.shadowMaxProj = 150.0/abs(sunPosY) # if defined LPV_ENABLED && defined IRIS_FEATURE_CUSTOM_IMAGES #ifdef LPV_ENABLED - bufferObject.0=20480 + bufferObject.0=204800 #if LPV_SIZE == 8 image.imgVoxelMask = none RED_INTEGER R16UI UNSIGNED_SHORT true false 256 256 256 diff --git a/shaders/world0/setup.csh b/shaders/world0/setup.csh index c6a9b51..ebd128d 100644 --- a/shaders/world0/setup.csh +++ b/shaders/world0/setup.csh @@ -25,6 +25,7 @@ void main() { float lightRange = 0.0; float mixWeight = 0.0; uint mixMask = 0xFFFF; + vec3 tintColor = vec3(1.0); switch (blockId) { case BLOCK_BEACON: @@ -139,15 +140,90 @@ void main() { break; + case BLOCK_HONEY: + tintColor = vec3(0.984, 0.733, 0.251); + mixWeight = 1.0; + break; case BLOCK_NETHER_PORTAL: lightColor = vec3(0.502, 0.165, 0.831); + tintColor = vec3(0.502, 0.165, 0.831); lightRange = 11.0; + mixWeight = 1.0; + break; + case BLOCK_SLIME: + tintColor = vec3(0.408, 0.725, 0.329); + mixWeight = 1.0; + break; + case BLOCK_GLASS_BLACK: + tintColor = vec3(0.3); + mixWeight = 1.0; + break; + case BLOCK_GLASS_BLUE: + tintColor = vec3(0.1, 0.1, 0.98); + mixWeight = 1.0; + break; + case BLOCK_GLASS_BROWN: + tintColor = vec3(0.566, 0.388, 0.148); + mixWeight = 1.0; + break; + case BLOCK_GLASS_CYAN: + tintColor = vec3(0.082, 0.533, 0.763); + mixWeight = 1.0; + break; + case BLOCK_GLASS_GRAY: + tintColor = vec3(0.4, 0.4, 0.4); + mixWeight = 1.0; + break; + case BLOCK_GLASS_GREEN: + tintColor = vec3(0.125, 0.808, 0.081); + mixWeight = 1.0; + break; + case BLOCK_GLASS_LIGHT_BLUE: + tintColor = vec3(0.320, 0.685, 0.955); + mixWeight = 1.0; + break; + case BLOCK_GLASS_LIGHT_GRAY: + tintColor = vec3(0.7); + mixWeight = 1.0; + break; + case BLOCK_GLASS_LIME: + tintColor = vec3(0.633, 0.924, 0.124); + mixWeight = 1.0; + break; + case BLOCK_GLASS_MAGENTA: + tintColor = vec3(0.698, 0.298, 0.847); + mixWeight = 1.0; + break; + case BLOCK_GLASS_ORANGE: + tintColor = vec3(0.919, 0.586, 0.185); + mixWeight = 1.0; + break; + case BLOCK_GLASS_PINK: + tintColor = vec3(0.949, 0.274, 0.497); + mixWeight = 1.0; + break; + case BLOCK_GLASS_PURPLE: + tintColor = vec3(0.578, 0.170, 0.904); + mixWeight = 1.0; + break; + case BLOCK_GLASS_RED: + tintColor = vec3(0.999, 0.188, 0.188); + mixWeight = 1.0; + break; + case BLOCK_GLASS_WHITE: + tintColor = vec3(0.96, 0.96, 0.96); + mixWeight = 1.0; + break; + case BLOCK_GLASS_YELLOW: + tintColor = vec3(0.965, 0.965, 0.123); + mixWeight = 1.0; break; } LpvBlockData block; block.ColorRange = packUnorm4x8(vec4(lightColor, lightRange/255.0)); block.MaskWeight = BuildBlockLpvData(mixMask, mixWeight); + block.Tint = packUnorm4x8(vec4(tintColor, 0.0)); LpvBlockMap[blockId - LpvBlockMapOffset] = block; #endif } diff --git a/shaders/world0/shadowcomp.csh b/shaders/world0/shadowcomp.csh index 8100506..d4b5a3b 100644 --- a/shaders/world0/shadowcomp.csh +++ b/shaders/world0/shadowcomp.csh @@ -121,43 +121,35 @@ void main() { if (any(greaterThanEqual(chunkPos, LpvSize3))) return; PopulateShared(); - barrier(); ivec3 imgCoord = ivec3(gl_GlobalInvocationID); if (any(greaterThanEqual(imgCoord, LpvSize3))) return; - // vec3 viewDir = gbufferModelViewInverse[2].xyz; - //vec3 lpvCenter = vec3(0.0);//GetLpvCenter(cameraPosition, viewDir); - //vec3 blockLocalPos = imgCoord - lpvCenter + 0.5; - vec4 lightValue = vec4(0.0); uint mixMask = 0xFFFF; - vec3 tint = vec3(1.0); uint blockId = voxelSharedData[getSharedCoord(ivec3(gl_LocalInvocationID) + 1)]; float mixWeight = blockId == BLOCK_EMPTY ? 1.0 : 0.0; + vec3 tintColor = vec3(1.0); - if (blockId > 0 && blockId != BLOCK_EMPTY) + if (blockId > 0u) {//&& blockId != BLOCK_EMPTY) ParseBlockLpvData(LpvBlockMap[blockId - LpvBlockMapOffset].MaskWeight, mixMask, mixWeight); - #ifdef LPV_GLASS_TINT - if (blockId >= BLOCK_HONEY && blockId <= BLOCK_TINTED_GLASS) { - tint = GetLightGlassTint(blockId); - mixWeight = 1.0; - } - #endif - + uint tintData = LpvBlockMap[blockId - LpvBlockMapOffset].Tint; + tintColor = unpackUnorm4x8(tintData).rgb; + } + if (mixWeight > EPSILON) { vec4 lightMixed = mixNeighbours(ivec3(gl_LocalInvocationID), mixMask); - lightMixed.rgb *= mixWeight * tint; + lightMixed.rgb *= RGBToLinear(tintColor) * mixWeight; lightValue += lightMixed; } lightValue.rgb = RgbToHsv(lightValue.rgb); lightValue.ba = log2(lightValue.ba + 1.0) / LpvBlockSkyRange; - if (blockId > 0 && blockId != BLOCK_EMPTY) { + if (blockId > 0u) {// && blockId != BLOCK_EMPTY) { vec4 lightColorRange = unpackUnorm4x8(LpvBlockMap[blockId - LpvBlockMapOffset].ColorRange); float lightRange = lightColorRange.a * 255.0; From d8b5c989e84456190b711f9cb1284c585e01b045 Mon Sep 17 00:00:00 2001 From: NULL511 Date: Thu, 2 May 2024 18:06:40 -0400 Subject: [PATCH 12/22] floodfill legacy blockId fixes --- shaders/dimensions/all_solid.fsh | 2 +- shaders/dimensions/all_solid.vsh | 2 +- shaders/dimensions/all_translucent.vsh | 2 +- shaders/world0/shadow.vsh | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/shaders/dimensions/all_solid.fsh b/shaders/dimensions/all_solid.fsh index 4fab275..a513368 100644 --- a/shaders/dimensions/all_solid.fsh +++ b/shaders/dimensions/all_solid.fsh @@ -442,7 +442,7 @@ void main() { Albedo.rgb = mix(Albedo.rgb, aerochrome_color, 0.3); } #endif - else if(blockID == 8 || blockID == 10002) + else if(blockID == 8 || (blockID >= 1200 && blockID < 1300)) { // IR Absorbsive? Dark. Albedo.rgb = mix(Albedo.rgb, vec3(0.01, 0.08, 0.15), 0.5); diff --git a/shaders/dimensions/all_solid.vsh b/shaders/dimensions/all_solid.vsh index d4a4f85..2aa2998 100644 --- a/shaders/dimensions/all_solid.vsh +++ b/shaders/dimensions/all_solid.vsh @@ -267,7 +267,7 @@ void main() { // if(NameTags > 0) EMISSIVE = 0.9; // normal block lightsources - if(mc_Entity.x == 10005) EMISSIVE = 0.5; + if(mc_Entity.x >= 1000 && mc_Entity.x < 1200) EMISSIVE = 0.5; // special cases light lightning and beacon beams... #ifdef ENTITIES diff --git a/shaders/dimensions/all_translucent.vsh b/shaders/dimensions/all_translucent.vsh index 729b430..107855b 100644 --- a/shaders/dimensions/all_translucent.vsh +++ b/shaders/dimensions/all_translucent.vsh @@ -104,7 +104,7 @@ void main() { gl_Position.z -= 1e-4; } - if (mc_Entity.x == 10002) mat = 0.2; + if (mc_Entity.x >= 1200 && mc_Entity.x < 1300) mat = 0.2; if (mc_Entity.x == 72) mat = 0.5; #if defined ENTITIES || defined BLOCKENTITIES diff --git a/shaders/world0/shadow.vsh b/shaders/world0/shadow.vsh index c9f7ba2..2373ee0 100644 --- a/shaders/world0/shadow.vsh +++ b/shaders/world0/shadow.vsh @@ -226,7 +226,7 @@ void main() { if (blockId == 8u) gl_Position.w = -1.0; // color.a = 1.0; - // if(blockId != 10002) color.a = 0.0; + // if((blockID < 1200 || blockID >= 1300)) color.a = 0.0; // materials = 0.0; From d8eb958a28ccfd69935b883615516b9acc4a47fd Mon Sep 17 00:00:00 2001 From: NULL511 Date: Thu, 2 May 2024 18:35:46 -0400 Subject: [PATCH 13/22] add door masks --- shaders/block.properties | 16 ++++++++++++++++ shaders/lib/blocks.glsl | 12 ++++++++++++ shaders/world0/setup.csh | 26 ++++++++++++++++++++++++-- 3 files changed, 52 insertions(+), 2 deletions(-) diff --git a/shaders/block.properties b/shaders/block.properties index 4e6fca4..d802c3a 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -87,6 +87,22 @@ block.1234 = white_stained_glass white_stained_glass_pane block.1235 = yellow_stained_glass yellow_stained_glass_pane + +####### ----- doors / trapdoors ----- ####### + + block.1301 = 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 create:andesite_door:facing=north:open=false create:brass_door:facing=north:open=false create:copper_door:facing=north:open=false create:train_door:facing=north:open=false createdeco:andesite_door:facing=north:open=false createdeco:brass_door:facing=north:open=false createdeco:cast_iron_door:facing=north:open=false createdeco:copper_door:facing=north:open=false createdeco:gold_door:facing=north:open=false createdeco:iron_door:facing=north:open=false createdeco:netherite_door:facing=north:open=false createdeco:zinc_door:facing=north:open=false supplementaries:gold_door:facing=north:open=false supplementaries:netherite_door:facing=north:open=false 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 create:andesite_door:facing=west:hinge=left:open=true create:brass_door:facing=west:hinge=left:open=true create:copper_door:facing=west:hinge=left:open=true create:train_door:facing=west:hinge=left:open=true createdeco:andesite_door:facing=west:hinge=left:open=true createdeco:brass_door:facing=west:hinge=left:open=true createdeco:cast_iron_door:facing=west:hinge=left:open=true createdeco:copper_door:facing=west:hinge=left:open=true createdeco:gold_door:facing=west:hinge=left:open=true createdeco:iron_door:facing=west:hinge=left:open=true createdeco:netherite_door:facing=west:hinge=left:open=true createdeco:zinc_door:facing=west:hinge=left:open=true supplementaries:gold_door:facing=west:hinge=left:open=true supplementaries:netherite_door:facing=west:hinge=left: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 create:andesite_door:facing=east:hinge=right:open=true create:brass_door:facing=east:hinge=right:open=true create:copper_door:facing=east:hinge=right:open=true create:train_door:facing=east:hinge=right:open=true createdeco:andesite_door:facing=east:hinge=right:open=true createdeco:brass_door:facing=east:hinge=right:open=true createdeco:cast_iron_door:facing=east:hinge=right:open=true createdeco:copper_door:facing=east:hinge=right:open=true createdeco:gold_door:facing=east:hinge=right:open=true createdeco:iron_door:facing=east:hinge=right:open=true createdeco:netherite_door:facing=east:hinge=right:open=true createdeco:zinc_door:facing=east:hinge=right:open=true supplementaries:gold_door:facing=east:hinge=right:open=true supplementaries:netherite_door:facing=east:hinge=right:open=true + block.1302 = acacia_door:facing=east:open=false bamboo_door:facing=east:open=false birch_door:facing=east:open=false cherry_door:facing=east:open=false crimson_door:facing=east:open=false dark_oak_door:facing=east:open=false iron_door:facing=east:open=false jungle_door:facing=east:open=false mangrove_door:facing=east:open=false oak_door:facing=east:open=false spruce_door:facing=east:open=false warped_door:facing=east:open=false copper_door:facing=east:open=false exposed_copper_door:facing=east:open=false weathered_copper_door:facing=east:open=false oxidized_copper_door:facing=east:open=false waxed_copper_door:facing=east:open=false waxed_exposed_copper_door:facing=east:open=false waxed_weathered_copper_door:facing=east:open=false waxed_oxidized_copper_door:facing=east:open=false create:andesite_door:facing=east:open=false create:brass_door:facing=east:open=false create:copper_door:facing=east:open=false create:train_door:facing=east:open=false createdeco:andesite_door:facing=east:open=false createdeco:brass_door:facing=east:open=false createdeco:cast_iron_door:facing=east:open=false createdeco:copper_door:facing=east:open=false createdeco:gold_door:facing=east:open=false createdeco:iron_door:facing=east:open=false createdeco:netherite_door:facing=east:open=false createdeco:zinc_door:facing=east:open=false supplementaries:gold_door:facing=east:open=false supplementaries:netherite_door:facing=east:open=false acacia_door:facing=north:hinge=left:open=true bamboo_door:facing=north:hinge=left:open=true birch_door:facing=north:hinge=left:open=true cherry_door:facing=north:hinge=left:open=true crimson_door:facing=north:hinge=left:open=true dark_oak_door:facing=north:hinge=left:open=true iron_door:facing=north:hinge=left:open=true jungle_door:facing=north:hinge=left:open=true mangrove_door:facing=north:hinge=left:open=true oak_door:facing=north:hinge=left:open=true spruce_door:facing=north:hinge=left:open=true warped_door:facing=north:hinge=left:open=true copper_door:facing=north:hinge=left:open=true exposed_copper_door:facing=north:hinge=left:open=true weathered_copper_door:facing=north:hinge=left:open=true oxidized_copper_door:facing=north:hinge=left:open=true waxed_copper_door:facing=north:hinge=left:open=true waxed_exposed_copper_door:facing=north:hinge=left:open=true waxed_weathered_copper_door:facing=north:hinge=left:open=true waxed_oxidized_copper_door:facing=north:hinge=left:open=true create:andesite_door:facing=north:hinge=left:open=true create:brass_door:facing=north:hinge=left:open=true create:copper_door:facing=north:hinge=left:open=true create:train_door:facing=north:hinge=left:open=true createdeco:andesite_door:facing=north:hinge=left:open=true createdeco:brass_door:facing=north:hinge=left:open=true createdeco:cast_iron_door:facing=north:hinge=left:open=true createdeco:copper_door:facing=north:hinge=left:open=true createdeco:gold_door:facing=north:hinge=left:open=true createdeco:iron_door:facing=north:hinge=left:open=true createdeco:netherite_door:facing=north:hinge=left:open=true createdeco:zinc_door:facing=north:hinge=left:open=true supplementaries:gold_door:facing=north:hinge=left:open=true supplementaries:netherite_door:facing=north:hinge=left:open=true acacia_door:facing=south:hinge=right:open=true bamboo_door:facing=south:hinge=right:open=true birch_door:facing=south:hinge=right:open=true cherry_door:facing=south:hinge=right:open=true crimson_door:facing=south:hinge=right:open=true dark_oak_door:facing=south:hinge=right:open=true iron_door:facing=south:hinge=right:open=true jungle_door:facing=south:hinge=right:open=true mangrove_door:facing=south:hinge=right:open=true oak_door:facing=south:hinge=right:open=true spruce_door:facing=south:hinge=right:open=true warped_door:facing=south:hinge=right:open=true copper_door:facing=south:hinge=right:open=true exposed_copper_door:facing=south:hinge=right:open=true weathered_copper_door:facing=south:hinge=right:open=true oxidized_copper_door:facing=south:hinge=right:open=true waxed_copper_door:facing=south:hinge=right:open=true waxed_exposed_copper_door:facing=south:hinge=right:open=true waxed_weathered_copper_door:facing=south:hinge=right:open=true waxed_oxidized_copper_door:facing=south:hinge=right:open=true create:andesite_door:facing=south:hinge=right:open=true create:brass_door:facing=south:hinge=right:open=true create:copper_door:facing=south:hinge=right:open=true create:train_door:facing=south:hinge=right:open=true createdeco:andesite_door:facing=south:hinge=right:open=true createdeco:brass_door:facing=south:hinge=right:open=true createdeco:cast_iron_door:facing=south:hinge=right:open=true createdeco:copper_door:facing=south:hinge=right:open=true createdeco:gold_door:facing=south:hinge=right:open=true createdeco:iron_door:facing=south:hinge=right:open=true createdeco:netherite_door:facing=south:hinge=right:open=true createdeco:zinc_door:facing=south:hinge=right:open=true supplementaries:gold_door:facing=south:hinge=right:open=true supplementaries:netherite_door:facing=south:hinge=right:open=true + block.1303 = acacia_door:facing=south:open=false bamboo_door:facing=south:open=false birch_door:facing=south:open=false cherry_door:facing=south:open=false crimson_door:facing=south:open=false dark_oak_door:facing=south:open=false iron_door:facing=south:open=false jungle_door:facing=south:open=false mangrove_door:facing=south:open=false oak_door:facing=south:open=false spruce_door:facing=south:open=false warped_door:facing=south:open=false copper_door:facing=south:open=false exposed_copper_door:facing=south:open=false weathered_copper_door:facing=south:open=false oxidized_copper_door:facing=south:open=false waxed_copper_door:facing=south:open=false waxed_exposed_copper_door:facing=south:open=false waxed_weathered_copper_door:facing=south:open=false waxed_oxidized_copper_door:facing=south:open=false create:andesite_door:facing=south:open=false create:brass_door:facing=south:open=false create:copper_door:facing=south:open=false create:train_door:facing=south:open=false createdeco:andesite_door:facing=south:open=false createdeco:brass_door:facing=south:open=false createdeco:cast_iron_door:facing=south:open=false createdeco:copper_door:facing=south:open=false createdeco:gold_door:facing=south:open=false createdeco:iron_door:facing=south:open=false createdeco:netherite_door:facing=south:open=false createdeco:zinc_door:facing=south:open=false supplementaries:gold_door:facing=south:open=false supplementaries:netherite_door:facing=south:open=false acacia_door:facing=east:hinge=left:open=true bamboo_door:facing=east:hinge=left:open=true birch_door:facing=east:hinge=left:open=true cherry_door:facing=east:hinge=left:open=true crimson_door:facing=east:hinge=left:open=true dark_oak_door:facing=east:hinge=left:open=true iron_door:facing=east:hinge=left:open=true jungle_door:facing=east:hinge=left:open=true mangrove_door:facing=east:hinge=left:open=true oak_door:facing=east:hinge=left:open=true spruce_door:facing=east:hinge=left:open=true warped_door:facing=east:hinge=left:open=true copper_door:facing=east:hinge=left:open=true exposed_copper_door:facing=east:hinge=left:open=true weathered_copper_door:facing=east:hinge=left:open=true oxidized_copper_door:facing=east:hinge=left:open=true waxed_copper_door:facing=east:hinge=left:open=true waxed_exposed_copper_door:facing=east:hinge=left:open=true waxed_weathered_copper_door:facing=east:hinge=left:open=true waxed_oxidized_copper_door:facing=east:hinge=left:open=true create:andesite_door:facing=east:hinge=left:open=true create:brass_door:facing=east:hinge=left:open=true create:copper_door:facing=east:hinge=left:open=true create:train_door:facing=east:hinge=left:open=true createdeco:andesite_door:facing=east:hinge=left:open=true createdeco:brass_door:facing=east:hinge=left:open=true createdeco:cast_iron_door:facing=east:hinge=left:open=true createdeco:copper_door:facing=east:hinge=left:open=true createdeco:gold_door:facing=east:hinge=left:open=true createdeco:iron_door:facing=east:hinge=left:open=true createdeco:netherite_door:facing=east:hinge=left:open=true createdeco:zinc_door:facing=east:hinge=left:open=true supplementaries:gold_door:facing=east:hinge=left:open=true supplementaries:netherite_door:facing=east:hinge=left:open=true acacia_door:facing=west:hinge=right:open=true bamboo_door:facing=west:hinge=right:open=true birch_door:facing=west:hinge=right:open=true cherry_door:facing=west:hinge=right:open=true crimson_door:facing=west:hinge=right:open=true dark_oak_door:facing=west:hinge=right:open=true iron_door:facing=west:hinge=right:open=true jungle_door:facing=west:hinge=right:open=true mangrove_door:facing=west:hinge=right:open=true oak_door:facing=west:hinge=right:open=true spruce_door:facing=west:hinge=right:open=true warped_door:facing=west:hinge=right:open=true copper_door:facing=west:hinge=right:open=true exposed_copper_door:facing=west:hinge=right:open=true weathered_copper_door:facing=west:hinge=right:open=true oxidized_copper_door:facing=west:hinge=right:open=true waxed_copper_door:facing=west:hinge=right:open=true waxed_exposed_copper_door:facing=west:hinge=right:open=true waxed_weathered_copper_door:facing=west:hinge=right:open=true waxed_oxidized_copper_door:facing=west:hinge=right:open=true create:andesite_door:facing=west:hinge=right:open=true create:brass_door:facing=west:hinge=right:open=true create:copper_door:facing=west:hinge=right:open=true create:train_door:facing=west:hinge=right:open=true createdeco:andesite_door:facing=west:hinge=right:open=true createdeco:brass_door:facing=west:hinge=right:open=true createdeco:cast_iron_door:facing=west:hinge=right:open=true createdeco:copper_door:facing=west:hinge=right:open=true createdeco:gold_door:facing=west:hinge=right:open=true createdeco:iron_door:facing=west:hinge=right:open=true createdeco:netherite_door:facing=west:hinge=right:open=true createdeco:zinc_door:facing=west:hinge=right:open=true supplementaries:gold_door:facing=west:hinge=right:open=true supplementaries:netherite_door:facing=west:hinge=right:open=true + block.1304 = acacia_door:facing=west:open=false bamboo_door:facing=west:open=false birch_door:facing=west:open=false cherry_door:facing=west:open=false crimson_door:facing=west:open=false dark_oak_door:facing=west:open=false iron_door:facing=west:open=false jungle_door:facing=west:open=false mangrove_door:facing=west:open=false oak_door:facing=west:open=false spruce_door:facing=west:open=false warped_door:facing=west:open=false copper_door:facing=west:open=false exposed_copper_door:facing=west:open=false weathered_copper_door:facing=west:open=false oxidized_copper_door:facing=west:open=false waxed_copper_door:facing=west:open=false waxed_exposed_copper_door:facing=west:open=false waxed_weathered_copper_door:facing=west:open=false waxed_oxidized_copper_door:facing=west:open=false create:andesite_door:facing=west:open=false create:brass_door:facing=west:open=false create:copper_door:facing=west:open=false create:train_door:facing=west:open=false createdeco:andesite_door:facing=west:open=false createdeco:brass_door:facing=west:open=false createdeco:cast_iron_door:facing=west:open=false createdeco:copper_door:facing=west:open=false createdeco:gold_door:facing=west:open=false createdeco:iron_door:facing=west:open=false createdeco:netherite_door:facing=west:open=false createdeco:zinc_door:facing=west:open=false supplementaries:gold_door:facing=west:open=false supplementaries:netherite_door:facing=west:open=false acacia_door:facing=south:hinge=left:open=true bamboo_door:facing=south:hinge=left:open=true birch_door:facing=south:hinge=left:open=true cherry_door:facing=south:hinge=left:open=true crimson_door:facing=south:hinge=left:open=true dark_oak_door:facing=south:hinge=left:open=true iron_door:facing=south:hinge=left:open=true jungle_door:facing=south:hinge=left:open=true mangrove_door:facing=south:hinge=left:open=true oak_door:facing=south:hinge=left:open=true spruce_door:facing=south:hinge=left:open=true warped_door:facing=south:hinge=left:open=true copper_door:facing=south:hinge=left:open=true exposed_copper_door:facing=south:hinge=left:open=true weathered_copper_door:facing=south:hinge=left:open=true oxidized_copper_door:facing=south:hinge=left:open=true waxed_copper_door:facing=south:hinge=left:open=true waxed_exposed_copper_door:facing=south:hinge=left:open=true waxed_weathered_copper_door:facing=south:hinge=left:open=true waxed_oxidized_copper_door:facing=south:hinge=left:open=true create:andesite_door:facing=south:hinge=left:open=true create:brass_door:facing=south:hinge=left:open=true create:copper_door:facing=south:hinge=left:open=true create:train_door:facing=south:hinge=left:open=true createdeco:andesite_door:facing=south:hinge=left:open=true createdeco:brass_door:facing=south:hinge=left:open=true createdeco:cast_iron_door:facing=south:hinge=left:open=true createdeco:copper_door:facing=south:hinge=left:open=true createdeco:gold_door:facing=south:hinge=left:open=true createdeco:iron_door:facing=south:hinge=left:open=true createdeco:netherite_door:facing=south:hinge=left:open=true createdeco:zinc_door:facing=south:hinge=left:open=true supplementaries:gold_door:facing=south:hinge=left:open=true supplementaries:netherite_door:facing=south:hinge=left:open=true acacia_door:facing=north:hinge=right:open=true bamboo_door:facing=north:hinge=right:open=true birch_door:facing=north:hinge=right:open=true cherry_door:facing=north:hinge=right:open=true crimson_door:facing=north:hinge=right:open=true dark_oak_door:facing=north:hinge=right:open=true iron_door:facing=north:hinge=right:open=true jungle_door:facing=north:hinge=right:open=true mangrove_door:facing=north:hinge=right:open=true oak_door:facing=north:hinge=right:open=true spruce_door:facing=north:hinge=right:open=true warped_door:facing=north:hinge=right:open=true copper_door:facing=north:hinge=right:open=true exposed_copper_door:facing=north:hinge=right:open=true weathered_copper_door:facing=north:hinge=right:open=true oxidized_copper_door:facing=north:hinge=right:open=true waxed_copper_door:facing=north:hinge=right:open=true waxed_exposed_copper_door:facing=north:hinge=right:open=true waxed_weathered_copper_door:facing=north:hinge=right:open=true waxed_oxidized_copper_door:facing=north:hinge=right:open=true create:andesite_door:facing=north:hinge=right:open=true create:brass_door:facing=north:hinge=right:open=true create:copper_door:facing=north:hinge=right:open=true create:train_door:facing=north:hinge=right:open=true createdeco:andesite_door:facing=north:hinge=right:open=true createdeco:brass_door:facing=north:hinge=right:open=true createdeco:cast_iron_door:facing=north:hinge=right:open=true createdeco:copper_door:facing=north:hinge=right:open=true createdeco:gold_door:facing=north:hinge=right:open=true createdeco:iron_door:facing=north:hinge=right:open=true createdeco:netherite_door:facing=north:hinge=right:open=true createdeco:zinc_door:facing=north:hinge=right:open=true supplementaries:gold_door:facing=north:hinge=right:open=true supplementaries:netherite_door:facing=north:hinge=right:open=true + + block.1305 = acacia_trapdoor:half=bottom:open=false bamboo_trapdoor:half=bottom:open=false birch_trapdoor:half=bottom:open=false cherry_trapdoor:half=bottom:open=false crimson_trapdoor:half=bottom:open=false dark_oak_trapdoor:half=bottom:open=false iron_trapdoor:half=bottom:open=false jungle_trapdoor:half=bottom:open=false mangrove_trapdoor:half=bottom:open=false oak_trapdoor:half=bottom:open=false spruce_trapdoor:half=bottom:open=false warped_trapdoor:half=bottom:open=false copper_trapdoor:half=bottom:open=false exposed_copper_trapdoor:half=bottom:open=false weathered_copper_trapdoor:half=bottom:open=false oxidized_copper_trapdoor:half=bottom:open=false waxed_copper_trapdoor:half=bottom:open=false waxed_exposed_copper_trapdoor:half=bottom:open=false waxed_weathered_copper_trapdoor:half=bottom:open=false waxed_oxidized_copper_trapdoor:half=bottom:open=false create:train_trapdoor:half=bottom:open=false createdeco:andesite_trapdoor:half=bottom:open=false createdeco:brass_trapdoor:half=bottom:open=false createdeco:cast_iron_trapdoor:half=bottom:open=false createdeco:copper_trapdoor:half=bottom:open=false createdeco:gold_trapdoor:half=bottom:open=false createdeco:iron_trapdoor:half=bottom:open=false createdeco:netherite_trapdoor:half=bottom:open=false createdeco:zinc_trapdoor:half=bottom:open=false supplementaries:gold_trapdoor:half=bottom:open=false supplementaries:iron_trapdoor:half=bottom:open=false supplementaries:netherite_trapdoor:half=bottom:open=false supplementaries:zinc_trapdoor:half=bottom:open=false + block.1306 = acacia_trapdoor:half=top:open=false bamboo_trapdoor:half=top:open=false birch_trapdoor:half=top:open=false cherry_trapdoor:half=top:open=false crimson_trapdoor:half=top:open=false dark_oak_trapdoor:half=top:open=false iron_trapdoor:half=top:open=false jungle_trapdoor:half=top:open=false mangrove_trapdoor:half=top:open=false oak_trapdoor:half=top:open=false spruce_trapdoor:half=top:open=false warped_trapdoor:half=top:open=false copper_trapdoor:half=top:open=false exposed_copper_trapdoor:half=top:open=false weathered_copper_trapdoor:half=top:open=false oxidized_copper_trapdoor:half=top:open=false waxed_copper_trapdoor:half=top:open=false waxed_exposed_copper_trapdoor:half=top:open=false waxed_weathered_copper_trapdoor:half=top:open=false waxed_oxidized_copper_trapdoor:half=top:open=false create:train_trapdoor:half=top:open=false createdeco:andesite_trapdoor:half=top:open=false createdeco:brass_trapdoor:half=top:open=false createdeco:cast_iron_trapdoor:half=top:open=false createdeco:copper_trapdoor:half=top:open=false createdeco:gold_trapdoor:half=top:open=false createdeco:iron_trapdoor:half=top:open=false createdeco:netherite_trapdoor:half=top:open=false createdeco:zinc_trapdoor:half=top:open=false supplementaries:gold_trapdoor:half=top:open=false supplementaries:iron_trapdoor:half=top:open=false supplementaries:netherite_trapdoor:half=top:open=false supplementaries:zinc_trapdoor:half=top:open=false + block.1307 = acacia_trapdoor:facing=north:open=true bamboo_trapdoor:facing=north:open=true birch_trapdoor:facing=north:open=true cherry_trapdoor:facing=north:open=true crimson_trapdoor:facing=north:open=true dark_oak_trapdoor:facing=north:open=true iron_trapdoor:facing=north:open=true jungle_trapdoor:facing=north:open=true mangrove_trapdoor:facing=north:open=true oak_trapdoor:facing=north:open=true spruce_trapdoor:facing=north:open=true warped_trapdoor:facing=north:open=true copper_trapdoor:facing=north:open=true exposed_copper_trapdoor:facing=north:open=true weathered_copper_trapdoor:facing=north:open=true oxidized_copper_trapdoor:facing=north:open=true waxed_copper_trapdoor:facing=north:open=true waxed_exposed_copper_trapdoor:facing=north:open=true waxed_weathered_copper_trapdoor:facing=north:open=true waxed_oxidized_copper_trapdoor:facing=north:open=true create:train_trapdoor:facing=north:open=true createdeco:andesite_trapdoor:facing=north:open=true createdeco:brass_trapdoor:facing=north:open=true createdeco:cast_iron_trapdoor:facing=north:open=true createdeco:copper_trapdoor:facing=north:open=true createdeco:gold_trapdoor:facing=north:open=true createdeco:iron_trapdoor:facing=north:open=true createdeco:netherite_trapdoor:facing=north:open=true createdeco:zinc_trapdoor:facing=north:open=true supplementaries:gold_trapdoor:facing=north:open=true supplementaries:iron_trapdoor:facing=north:open=true supplementaries:netherite_trapdoor:facing=north:open=true supplementaries:zinc_trapdoor:facing=north:open=true + block.1308 = acacia_trapdoor:facing=east:open=true bamboo_trapdoor:facing=east:open=true birch_trapdoor:facing=east:open=true cherry_trapdoor:facing=east:open=true crimson_trapdoor:facing=east:open=true dark_oak_trapdoor:facing=east:open=true iron_trapdoor:facing=east:open=true jungle_trapdoor:facing=east:open=true mangrove_trapdoor:facing=east:open=true oak_trapdoor:facing=east:open=true spruce_trapdoor:facing=east:open=true warped_trapdoor:facing=east:open=true copper_trapdoor:facing=east:open=true exposed_copper_trapdoor:facing=east:open=true weathered_copper_trapdoor:facing=east:open=true oxidized_copper_trapdoor:facing=east:open=true waxed_copper_trapdoor:facing=east:open=true waxed_exposed_copper_trapdoor:facing=east:open=true waxed_weathered_copper_trapdoor:facing=east:open=true waxed_oxidized_copper_trapdoor:facing=east:open=true create:train_trapdoor:facing=east:open=true createdeco:andesite_trapdoor:facing=east:open=true createdeco:brass_trapdoor:facing=east:open=true createdeco:cast_iron_trapdoor:facing=east:open=true createdeco:copper_trapdoor:facing=east:open=true createdeco:gold_trapdoor:facing=east:open=true createdeco:iron_trapdoor:facing=east:open=true createdeco:netherite_trapdoor:facing=east:open=true createdeco:zinc_trapdoor:facing=east:open=true supplementaries:gold_trapdoor:facing=east:open=true supplementaries:iron_trapdoor:facing=east:open=true supplementaries:netherite_trapdoor:facing=east:open=true supplementaries:zinc_trapdoor:facing=east:open=true + block.1309 = acacia_trapdoor:facing=south:open=true bamboo_trapdoor:facing=south:open=true birch_trapdoor:facing=south:open=true cherry_trapdoor:facing=south:open=true crimson_trapdoor:facing=south:open=true dark_oak_trapdoor:facing=south:open=true iron_trapdoor:facing=south:open=true jungle_trapdoor:facing=south:open=true mangrove_trapdoor:facing=south:open=true oak_trapdoor:facing=south:open=true spruce_trapdoor:facing=south:open=true warped_trapdoor:facing=south:open=true copper_trapdoor:facing=south:open=true exposed_copper_trapdoor:facing=south:open=true weathered_copper_trapdoor:facing=south:open=true oxidized_copper_trapdoor:facing=south:open=true waxed_copper_trapdoor:facing=south:open=true waxed_exposed_copper_trapdoor:facing=south:open=true waxed_weathered_copper_trapdoor:facing=south:open=true waxed_oxidized_copper_trapdoor:facing=south:open=true create:train_trapdoor:facing=south:open=true createdeco:andesite_trapdoor:facing=south:open=true createdeco:brass_trapdoor:facing=south:open=true createdeco:cast_iron_trapdoor:facing=south:open=true createdeco:copper_trapdoor:facing=south:open=true createdeco:gold_trapdoor:facing=south:open=true createdeco:iron_trapdoor:facing=south:open=true createdeco:netherite_trapdoor:facing=south:open=true createdeco:zinc_trapdoor:facing=south:open=true supplementaries:gold_trapdoor:facing=south:open=true supplementaries:iron_trapdoor:facing=south:open=true supplementaries:netherite_trapdoor:facing=south:open=true supplementaries:zinc_trapdoor:facing=south:open=true + block.1310 = acacia_trapdoor:facing=west:open=true bamboo_trapdoor:facing=west:open=true birch_trapdoor:facing=west:open=true cherry_trapdoor:facing=west:open=true crimson_trapdoor:facing=west:open=true dark_oak_trapdoor:facing=west:open=true iron_trapdoor:facing=west:open=true jungle_trapdoor:facing=west:open=true mangrove_trapdoor:facing=west:open=true oak_trapdoor:facing=west:open=true spruce_trapdoor:facing=west:open=true warped_trapdoor:facing=west:open=true copper_trapdoor:facing=west:open=true exposed_copper_trapdoor:facing=west:open=true weathered_copper_trapdoor:facing=west:open=true oxidized_copper_trapdoor:facing=west:open=true waxed_copper_trapdoor:facing=west:open=true waxed_exposed_copper_trapdoor:facing=west:open=true waxed_weathered_copper_trapdoor:facing=west:open=true waxed_oxidized_copper_trapdoor:facing=west:open=true create:train_trapdoor:facing=west:open=true createdeco:andesite_trapdoor:facing=west:open=true createdeco:brass_trapdoor:facing=west:open=true createdeco:cast_iron_trapdoor:facing=west:open=true createdeco:copper_trapdoor:facing=west:open=true createdeco:gold_trapdoor:facing=west:open=true createdeco:iron_trapdoor:facing=west:open=true createdeco:netherite_trapdoor:facing=west:open=true createdeco:zinc_trapdoor:facing=west:open=true supplementaries:gold_trapdoor:facing=west:open=true supplementaries:iron_trapdoor:facing=west:open=true supplementaries:netherite_trapdoor:facing=west:open=true supplementaries:zinc_trapdoor:facing=west:open=true + + ####### ----- misc ----- ####### ## all blocks here get exluded from POM. block.2200 = minecraft:oak_sign minecraft:spruce_sign minecraft:birch_sign minecraft:jungle_sign minecraft:acacia_sign minecraft:dark_oak_sign minecraft:mangrove_sign minecraft:crimson_sign minecraft:warped_sign minecraft:oak_wall_sign minecraft:spruce_wall_sign minecraft:birch_wall_sign minecraft:jungle_wall_sign minecraft:acacia_wall_sign minecraft:dark_oak_wall_sign minecraft:mangrove_wall_sign minecraft:crimson_wall_sign minecraft:warped_wall_sign diff --git a/shaders/lib/blocks.glsl b/shaders/lib/blocks.glsl index 602ca7a..bbce7ce 100644 --- a/shaders/lib/blocks.glsl +++ b/shaders/lib/blocks.glsl @@ -52,3 +52,15 @@ #define BLOCK_GLASS_RED 1233 #define BLOCK_GLASS_WHITE 1234 #define BLOCK_GLASS_YELLOW 1235 + +#define BLOCK_DOOR_N 1301 +#define BLOCK_DOOR_E 1302 +#define BLOCK_DOOR_S 1303 +#define BLOCK_DOOR_W 1304 + +#define BLOCK_TRAPDOOR_BOTTOM 1305 +#define BLOCK_TRAPDOOR_TOP 1306 +#define BLOCK_TRAPDOOR_N 1307 +#define BLOCK_TRAPDOOR_E 1308 +#define BLOCK_TRAPDOOR_S 1309 +#define BLOCK_TRAPDOOR_W 1310 diff --git a/shaders/world0/setup.csh b/shaders/world0/setup.csh index ebd128d..ab59e42 100644 --- a/shaders/world0/setup.csh +++ b/shaders/world0/setup.csh @@ -11,9 +11,13 @@ const ivec3 workGroups = ivec3(4, 5, 1); #ifdef IS_LPV_ENABLED #include "/lib/blocks.glsl" #include "/lib/lpv_blocks.glsl" -#endif -const vec3 LightColor_SeaPickle = vec3(0.283, 0.394, 0.212); + const vec3 LightColor_SeaPickle = vec3(0.283, 0.394, 0.212); + + uint BuildLpvMask(const in uint north, const in uint east, const in uint south, const in uint west, const in uint up, const in uint down) { + return east | (west << 1) | (down << 2) | (up << 3) | (south << 4) | (north << 5); + } +#endif void main() { @@ -218,6 +222,24 @@ void main() { tintColor = vec3(0.965, 0.965, 0.123); mixWeight = 1.0; break; + + + case BLOCK_DOOR_N: + mixMask = BuildLpvMask(0u, 1u, 1u, 1u, 1u, 1u); + mixWeight = 1.0; + break; + case BLOCK_DOOR_E: + mixMask = BuildLpvMask(1u, 0u, 1u, 1u, 1u, 1u); + mixWeight = 1.0; + break; + case BLOCK_DOOR_S: + mixMask = BuildLpvMask(1u, 1u, 0u, 1u, 1u, 1u); + mixWeight = 1.0; + break; + case BLOCK_DOOR_W: + mixMask = BuildLpvMask(1u, 1u, 1u, 0u, 1u, 1u); + mixWeight = 1.0; + break; } LpvBlockData block; From 8aa475022672710cba40384dd3c6493ccc28c3ab Mon Sep 17 00:00:00 2001 From: NULL511 Date: Thu, 2 May 2024 18:39:09 -0400 Subject: [PATCH 14/22] add trapdoor masks --- shaders/world0/setup.csh | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/shaders/world0/setup.csh b/shaders/world0/setup.csh index ab59e42..bb9a19f 100644 --- a/shaders/world0/setup.csh +++ b/shaders/world0/setup.csh @@ -13,7 +13,7 @@ const ivec3 workGroups = ivec3(4, 5, 1); #include "/lib/lpv_blocks.glsl" const vec3 LightColor_SeaPickle = vec3(0.283, 0.394, 0.212); - + uint BuildLpvMask(const in uint north, const in uint east, const in uint south, const in uint west, const in uint up, const in uint down) { return east | (west << 1) | (down << 2) | (up << 3) | (south << 4) | (north << 5); } @@ -240,6 +240,32 @@ void main() { mixMask = BuildLpvMask(1u, 1u, 1u, 0u, 1u, 1u); mixWeight = 1.0; break; + + + case BLOCK_TRAPDOOR_BOTTOM: + mixMask = BuildLpvMask(1u, 1u, 1u, 1u, 1u, 0u); + mixWeight = 1.0; + break; + case BLOCK_TRAPDOOR_TOP: + mixMask = BuildLpvMask(1u, 1u, 1u, 1u, 0u, 1u); + mixWeight = 1.0; + break; + case BLOCK_TRAPDOOR_N: + mixMask = BuildLpvMask(0u, 1u, 1u, 1u, 1u, 1u); + mixWeight = 1.0; + break; + case BLOCK_TRAPDOOR_E: + mixMask = BuildLpvMask(1u, 0u, 1u, 1u, 1u, 1u); + mixWeight = 1.0; + break; + case BLOCK_TRAPDOOR_S: + mixMask = BuildLpvMask(1u, 1u, 0u, 1u, 1u, 1u); + mixWeight = 1.0; + break; + case BLOCK_TRAPDOOR_W: + mixMask = BuildLpvMask(1u, 1u, 1u, 0u, 1u, 1u); + mixWeight = 1.0; + break; } LpvBlockData block; From 67af28c76c1b845ae52d6f233f7c9a8a56403dec Mon Sep 17 00:00:00 2001 From: NULL511 Date: Thu, 2 May 2024 18:54:23 -0400 Subject: [PATCH 15/22] add candles --- shaders/block.properties | 60 +++++++++++++++++++++------------------- shaders/lib/blocks.glsl | 60 +++++++++++++++++++++------------------- shaders/world0/setup.csh | 54 +++++++++++++++++++++++++++++------- 3 files changed, 108 insertions(+), 66 deletions(-) diff --git a/shaders/block.properties b/shaders/block.properties index d802c3a..f050600 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -31,34 +31,38 @@ ####### ----- lightsources ----- ####### block.1001 = beacon - block.1002 = cave_vines_plant:berries=true cave_vines:berries=true - block.1003 = conduit - block.1004 = end_gateway - block.1005 = end_rod - block.1006 = fire campfire:lit=true - block.1007 = ochre_froglight - block.1008 = pearlescent_froglight - block.1009 = verdant_froglight - block.1010 = glowstone - block.1011 = jack_o_lantern - block.1012 = lantern - block.1013 = lava - block.1014 = magma_block - block.1015 = redstone_lamp:lit=true - block.1016 = redstone_torch:lit=true redstone_wall_torch:lit=true - block.1017 = respawn_anchor:charges=4 - block.1018 = sculk_sensor:sculk_sensor_phase=active - block.1019 = sea_pickle:waterlogged=true:pickles=1 - block.1020 = sea_pickle:waterlogged=true:pickles=2 - block.1021 = sea_pickle:waterlogged=true:pickles=3 - block.1022 = sea_pickle:waterlogged=true:pickles=4 - block.1023 = sea_lantern - block.1024 = shroomlight - block.1025 = smoker:lit=true - block.1026 = soul_fire soul_campfire:lit=true - block.1027 = soul_lantern - block.1028 = soul_torch soul_wall_torch - block.1029 = torch wall_torch + block.1002 = candle:candles=1:lit=true black_candle:candles=1:lit=true blue_candle:candles=1:lit=true brown_candle:candles=1:lit=true cyan_candle:candles=1:lit=true gray_candle:candles=1:lit=true green_candle:candles=1:lit=true light_blue_candle:candles=1:lit=true light_gray_candle:candles=1:lit=true lime_candle:candles=1:lit=true magenta_candle:candles=1:lit=true orange_candle:candles=1:lit=true pink_candle:candles=1:lit=true purple_candle:candles=1:lit=true red_candle:candles=1:lit=true white_candle:candles=1:lit=true yellow_candle:candles=1:lit=true + block.1003 = candle:candles=2:lit=true black_candle:candles=2:lit=true blue_candle:candles=2:lit=true brown_candle:candles=2:lit=true cyan_candle:candles=2:lit=true gray_candle:candles=2:lit=true green_candle:candles=2:lit=true light_blue_candle:candles=2:lit=true light_gray_candle:candles=2:lit=true lime_candle:candles=2:lit=true magenta_candle:candles=2:lit=true orange_candle:candles=2:lit=true pink_candle:candles=2:lit=true purple_candle:candles=2:lit=true red_candle:candles=2:lit=true white_candle:candles=2:lit=true yellow_candle:candles=2:lit=true + block.1004 = candle:candles=3:lit=true black_candle:candles=3:lit=true blue_candle:candles=3:lit=true brown_candle:candles=3:lit=true cyan_candle:candles=3:lit=true gray_candle:candles=3:lit=true green_candle:candles=3:lit=true light_blue_candle:candles=3:lit=true light_gray_candle:candles=3:lit=true lime_candle:candles=3:lit=true magenta_candle:candles=3:lit=true orange_candle:candles=3:lit=true pink_candle:candles=3:lit=true purple_candle:candles=3:lit=true red_candle:candles=3:lit=true white_candle:candles=3:lit=true yellow_candle:candles=3:lit=true + block.1005 = candle:candles=4:lit=true black_candle:candles=4:lit=true blue_candle:candles=4:lit=true brown_candle:candles=4:lit=true cyan_candle:candles=4:lit=true gray_candle:candles=4:lit=true green_candle:candles=4:lit=true light_blue_candle:candles=4:lit=true light_gray_candle:candles=4:lit=true lime_candle:candles=4:lit=true magenta_candle:candles=4:lit=true orange_candle:candles=4:lit=true pink_candle:candles=4:lit=true purple_candle:candles=4:lit=true red_candle:candles=4:lit=true white_candle:candles=4:lit=true yellow_candle:candles=4:lit=true + block.1006 = cave_vines_plant:berries=true cave_vines:berries=true + block.1007 = conduit + block.1008 = end_gateway + block.1009 = end_rod + block.1010 = fire campfire:lit=true + block.1011 = ochre_froglight + block.1012 = pearlescent_froglight + block.1013 = verdant_froglight + block.1014 = glowstone + block.1015 = jack_o_lantern + block.1016 = lantern + block.1017 = lava + block.1018 = magma_block + block.1019 = redstone_lamp:lit=true + block.1020 = redstone_torch:lit=true redstone_wall_torch:lit=true + block.1021 = respawn_anchor:charges=4 + block.1022 = sculk_sensor:sculk_sensor_phase=active + block.1023 = sea_pickle:waterlogged=true:pickles=1 + block.1024 = sea_pickle:waterlogged=true:pickles=2 + block.1025 = sea_pickle:waterlogged=true:pickles=3 + block.1026 = sea_pickle:waterlogged=true:pickles=4 + block.1027 = sea_lantern + block.1028 = shroomlight + block.1029 = smoker:lit=true + block.1030 = soul_fire soul_campfire:lit=true + block.1031 = soul_lantern + block.1032 = soul_torch soul_wall_torch + block.1033 = torch wall_torch block.1100 = westerosblocks:safe_fire block.1101 = conquest:white_paper_lantern conquest:yellow_paper_lantern conquest:small_red_paper_lantern conquest:chinese_palace_lantern conquest:campfire conquest:brazier conquest:hanging_brazier conquest:chandelier conquest:candelabra conquest:cross_chandelier conquest:iron_candelabrum_1 conquest:golden_candelabrum_1 conquest:candle conquest:hanging_candle_holder conquest:candle_in_a_lantern conquest:candles conquest:hand_candle conquest:torch_with_grille conquest:elven_hand_light conquest:ship_lantern conquest:victorian_lantern conquest:small_lantern conquest:big_lantern conquest:hanging_oil_lamp conquest:oil_lamp conquest:terracotta_oil_lamp conquest:invisible_light_low conquest:invisible_light_medium conquest:invisible_light diff --git a/shaders/lib/blocks.glsl b/shaders/lib/blocks.glsl index bbce7ce..609b36b 100644 --- a/shaders/lib/blocks.glsl +++ b/shaders/lib/blocks.glsl @@ -1,34 +1,38 @@ #define BLOCK_WATER 8 #define BLOCK_BEACON 1001 -#define BLOCK_CAVE_VINE_BERRIES 1002 -#define BLOCK_CONDUIT 1003 -#define BLOCK_END_GATEWAY 1004 -#define BLOCK_END_ROD 1005 -#define BLOCK_FIRE 1006 -#define BLOCK_FROGLIGHT_OCHRE 1007 -#define BLOCK_FROGLIGHT_PEARLESCENT 1008 -#define BLOCK_FROGLIGHT_VERDANT 1009 -#define BLOCK_GLOWSTONE 1010 -#define BLOCK_JACK_O_LANTERN 1011 -#define BLOCK_LANTERN 1012 -#define BLOCK_LAVA 1013 -#define BLOCK_MAGMA 1014 -#define BLOCK_REDSTONE_LAMP_LIT 1015 -#define BLOCK_REDSTONE_TORCH_LIT 1016 -#define BLOCK_RESPAWN_ANCHOR_4 1017 -#define BLOCK_SCULK_SENSOR_ACTIVE 1018 -#define BLOCK_SEA_PICKLE_WET_1 1019 -#define BLOCK_SEA_PICKLE_WET_2 1020 -#define BLOCK_SEA_PICKLE_WET_3 1021 -#define BLOCK_SEA_PICKLE_WET_4 1022 -#define BLOCK_SEA_LANTERN 1023 -#define BLOCK_SHROOMLIGHT 1024 -#define BLOCK_SMOKER_LIT 1025 -#define BLOCK_SOUL_FIRE 1026 -#define BLOCK_SOUL_LANTERN 1027 -#define BLOCK_SOUL_TORCH 1028 -#define BLOCK_TORCH 1029 +#define BLOCK_CANDLES_LIT_1 1002 +#define BLOCK_CANDLES_LIT_2 1003 +#define BLOCK_CANDLES_LIT_3 1004 +#define BLOCK_CANDLES_LIT_4 1005 +#define BLOCK_CAVE_VINE_BERRIES 1006 +#define BLOCK_CONDUIT 1007 +#define BLOCK_END_GATEWAY 1008 +#define BLOCK_END_ROD 1009 +#define BLOCK_FIRE 1010 +#define BLOCK_FROGLIGHT_OCHRE 1011 +#define BLOCK_FROGLIGHT_PEARLESCENT 1012 +#define BLOCK_FROGLIGHT_VERDANT 1013 +#define BLOCK_GLOWSTONE 1014 +#define BLOCK_JACK_O_LANTERN 1015 +#define BLOCK_LANTERN 1016 +#define BLOCK_LAVA 1017 +#define BLOCK_MAGMA 1018 +#define BLOCK_REDSTONE_LAMP_LIT 1019 +#define BLOCK_REDSTONE_TORCH_LIT 1020 +#define BLOCK_RESPAWN_ANCHOR_4 1021 +#define BLOCK_SCULK_SENSOR_ACTIVE 1022 +#define BLOCK_SEA_PICKLE_WET_1 1023 +#define BLOCK_SEA_PICKLE_WET_2 1024 +#define BLOCK_SEA_PICKLE_WET_3 1025 +#define BLOCK_SEA_PICKLE_WET_4 1026 +#define BLOCK_SEA_LANTERN 1027 +#define BLOCK_SHROOMLIGHT 1028 +#define BLOCK_SMOKER_LIT 1029 +#define BLOCK_SOUL_FIRE 1030 +#define BLOCK_SOUL_LANTERN 1031 +#define BLOCK_SOUL_TORCH 1032 +#define BLOCK_TORCH 1033 #define BLOCK_GLASS 1201 #define BLOCK_HONEY 1202 diff --git a/shaders/world0/setup.csh b/shaders/world0/setup.csh index bb9a19f..4e3e8fa 100644 --- a/shaders/world0/setup.csh +++ b/shaders/world0/setup.csh @@ -12,6 +12,7 @@ const ivec3 workGroups = ivec3(4, 5, 1); #include "/lib/blocks.glsl" #include "/lib/lpv_blocks.glsl" + const vec3 LightColor_Candles = vec3(1.0, 0.4, 0.1); const vec3 LightColor_SeaPickle = vec3(0.283, 0.394, 0.212); uint BuildLpvMask(const in uint north, const in uint east, const in uint south, const in uint west, const in uint up, const in uint down) { @@ -36,9 +37,30 @@ void main() { lightColor = vec3(1.0); lightRange = 15.0; break; + case BLOCK_CANDLES_LIT_1: + lightColor = LightColor_Candles; + lightRange = 3.0; + mixWeight = 1.0; + break; + case BLOCK_CANDLES_LIT_2: + lightColor = LightColor_Candles; + lightRange = 6.0; + mixWeight = 1.0; + break; + case BLOCK_CANDLES_LIT_3: + lightColor = LightColor_Candles; + lightRange = 9.0; + mixWeight = 1.0; + break; + case BLOCK_CANDLES_LIT_4: + lightColor = LightColor_Candles; + lightRange = 12.0; + mixWeight = 1.0; + break; case BLOCK_CAVE_VINE_BERRIES: lightColor = vec3(0.717, 0.541, 0.188); lightRange = 14.0; + mixWeight = 1.0; break; case BLOCK_CONDUIT: lightColor = vec3(1.0); @@ -55,6 +77,7 @@ void main() { case BLOCK_FIRE: lightColor = vec3(0.864, 0.598, 0.348); lightRange = 15.0; + mixWeight = 1.0; break; case BLOCK_FROGLIGHT_OCHRE: lightColor = vec3(0.768, 0.648, 0.108); @@ -79,6 +102,7 @@ void main() { case BLOCK_LANTERN: lightColor = vec3(1.0, 0.7, 0.1); lightRange = 15.0; + mixWeight = 0.8; break; case BLOCK_LAVA: lightColor = vec3(0.804, 0.424, 0.149); @@ -107,18 +131,22 @@ void main() { case BLOCK_SEA_PICKLE_WET_1: lightColor = LightColor_SeaPickle; lightRange = 6.0; + mixWeight = 1.0; break; case BLOCK_SEA_PICKLE_WET_2: lightColor = LightColor_SeaPickle; lightRange = 9.0; + mixWeight = 1.0; break; case BLOCK_SEA_PICKLE_WET_3: lightColor = LightColor_SeaPickle; lightRange = 12.0; + mixWeight = 1.0; break; case BLOCK_SEA_PICKLE_WET_4: lightColor = LightColor_SeaPickle; lightRange = 15.0; + mixWeight = 1.0; break; case BLOCK_SEA_LANTERN: lightColor = vec3(0.553, 0.748, 0.859); @@ -133,14 +161,20 @@ void main() { lightRange = 13.0; break; case BLOCK_SOUL_FIRE: + lightColor = vec3(0.1, 0.6, 1.0); + lightRange = 10.0; + mixWeight = 1.0; + break; case BLOCK_SOUL_LANTERN: case BLOCK_SOUL_TORCH: lightColor = vec3(0.1, 0.6, 1.0); lightRange = 10.0; + mixWeight = 0.8; break; case BLOCK_TORCH: lightColor = vec3(1.0, 0.6, 0.1); lightRange = 14.0; + mixWeight = 0.8; break; @@ -226,45 +260,45 @@ void main() { case BLOCK_DOOR_N: mixMask = BuildLpvMask(0u, 1u, 1u, 1u, 1u, 1u); - mixWeight = 1.0; + mixWeight = 0.8; break; case BLOCK_DOOR_E: mixMask = BuildLpvMask(1u, 0u, 1u, 1u, 1u, 1u); - mixWeight = 1.0; + mixWeight = 0.8; break; case BLOCK_DOOR_S: mixMask = BuildLpvMask(1u, 1u, 0u, 1u, 1u, 1u); - mixWeight = 1.0; + mixWeight = 0.8; break; case BLOCK_DOOR_W: mixMask = BuildLpvMask(1u, 1u, 1u, 0u, 1u, 1u); - mixWeight = 1.0; + mixWeight = 0.8; break; case BLOCK_TRAPDOOR_BOTTOM: mixMask = BuildLpvMask(1u, 1u, 1u, 1u, 1u, 0u); - mixWeight = 1.0; + mixWeight = 0.8; break; case BLOCK_TRAPDOOR_TOP: mixMask = BuildLpvMask(1u, 1u, 1u, 1u, 0u, 1u); - mixWeight = 1.0; + mixWeight = 0.8; break; case BLOCK_TRAPDOOR_N: mixMask = BuildLpvMask(0u, 1u, 1u, 1u, 1u, 1u); - mixWeight = 1.0; + mixWeight = 0.8; break; case BLOCK_TRAPDOOR_E: mixMask = BuildLpvMask(1u, 0u, 1u, 1u, 1u, 1u); - mixWeight = 1.0; + mixWeight = 0.8; break; case BLOCK_TRAPDOOR_S: mixMask = BuildLpvMask(1u, 1u, 0u, 1u, 1u, 1u); - mixWeight = 1.0; + mixWeight = 0.8; break; case BLOCK_TRAPDOOR_W: mixMask = BuildLpvMask(1u, 1u, 1u, 0u, 1u, 1u); - mixWeight = 1.0; + mixWeight = 0.8; break; } From c29d08a5f51a3129bfe5cf48f602150e4429d904 Mon Sep 17 00:00:00 2001 From: NULL511 Date: Thu, 2 May 2024 19:15:22 -0400 Subject: [PATCH 16/22] add slabs --- shaders/block.properties | 25 ++++++++++++++----------- shaders/lib/blocks.glsl | 15 +++++++++------ shaders/world0/setup.csh | 8 ++++++++ 3 files changed, 31 insertions(+), 17 deletions(-) diff --git a/shaders/block.properties b/shaders/block.properties index f050600..032e971 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -92,19 +92,22 @@ block.1235 = yellow_stained_glass yellow_stained_glass_pane -####### ----- doors / trapdoors ----- ####### +####### ----- doors / slabs / trapdoors ----- ####### - block.1301 = 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 create:andesite_door:facing=north:open=false create:brass_door:facing=north:open=false create:copper_door:facing=north:open=false create:train_door:facing=north:open=false createdeco:andesite_door:facing=north:open=false createdeco:brass_door:facing=north:open=false createdeco:cast_iron_door:facing=north:open=false createdeco:copper_door:facing=north:open=false createdeco:gold_door:facing=north:open=false createdeco:iron_door:facing=north:open=false createdeco:netherite_door:facing=north:open=false createdeco:zinc_door:facing=north:open=false supplementaries:gold_door:facing=north:open=false supplementaries:netherite_door:facing=north:open=false 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 create:andesite_door:facing=west:hinge=left:open=true create:brass_door:facing=west:hinge=left:open=true create:copper_door:facing=west:hinge=left:open=true create:train_door:facing=west:hinge=left:open=true createdeco:andesite_door:facing=west:hinge=left:open=true createdeco:brass_door:facing=west:hinge=left:open=true createdeco:cast_iron_door:facing=west:hinge=left:open=true createdeco:copper_door:facing=west:hinge=left:open=true createdeco:gold_door:facing=west:hinge=left:open=true createdeco:iron_door:facing=west:hinge=left:open=true createdeco:netherite_door:facing=west:hinge=left:open=true createdeco:zinc_door:facing=west:hinge=left:open=true supplementaries:gold_door:facing=west:hinge=left:open=true supplementaries:netherite_door:facing=west:hinge=left: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 create:andesite_door:facing=east:hinge=right:open=true create:brass_door:facing=east:hinge=right:open=true create:copper_door:facing=east:hinge=right:open=true create:train_door:facing=east:hinge=right:open=true createdeco:andesite_door:facing=east:hinge=right:open=true createdeco:brass_door:facing=east:hinge=right:open=true createdeco:cast_iron_door:facing=east:hinge=right:open=true createdeco:copper_door:facing=east:hinge=right:open=true createdeco:gold_door:facing=east:hinge=right:open=true createdeco:iron_door:facing=east:hinge=right:open=true createdeco:netherite_door:facing=east:hinge=right:open=true createdeco:zinc_door:facing=east:hinge=right:open=true supplementaries:gold_door:facing=east:hinge=right:open=true supplementaries:netherite_door:facing=east:hinge=right:open=true - block.1302 = acacia_door:facing=east:open=false bamboo_door:facing=east:open=false birch_door:facing=east:open=false cherry_door:facing=east:open=false crimson_door:facing=east:open=false dark_oak_door:facing=east:open=false iron_door:facing=east:open=false jungle_door:facing=east:open=false mangrove_door:facing=east:open=false oak_door:facing=east:open=false spruce_door:facing=east:open=false warped_door:facing=east:open=false copper_door:facing=east:open=false exposed_copper_door:facing=east:open=false weathered_copper_door:facing=east:open=false oxidized_copper_door:facing=east:open=false waxed_copper_door:facing=east:open=false waxed_exposed_copper_door:facing=east:open=false waxed_weathered_copper_door:facing=east:open=false waxed_oxidized_copper_door:facing=east:open=false create:andesite_door:facing=east:open=false create:brass_door:facing=east:open=false create:copper_door:facing=east:open=false create:train_door:facing=east:open=false createdeco:andesite_door:facing=east:open=false createdeco:brass_door:facing=east:open=false createdeco:cast_iron_door:facing=east:open=false createdeco:copper_door:facing=east:open=false createdeco:gold_door:facing=east:open=false createdeco:iron_door:facing=east:open=false createdeco:netherite_door:facing=east:open=false createdeco:zinc_door:facing=east:open=false supplementaries:gold_door:facing=east:open=false supplementaries:netherite_door:facing=east:open=false acacia_door:facing=north:hinge=left:open=true bamboo_door:facing=north:hinge=left:open=true birch_door:facing=north:hinge=left:open=true cherry_door:facing=north:hinge=left:open=true crimson_door:facing=north:hinge=left:open=true dark_oak_door:facing=north:hinge=left:open=true iron_door:facing=north:hinge=left:open=true jungle_door:facing=north:hinge=left:open=true mangrove_door:facing=north:hinge=left:open=true oak_door:facing=north:hinge=left:open=true spruce_door:facing=north:hinge=left:open=true warped_door:facing=north:hinge=left:open=true copper_door:facing=north:hinge=left:open=true exposed_copper_door:facing=north:hinge=left:open=true weathered_copper_door:facing=north:hinge=left:open=true oxidized_copper_door:facing=north:hinge=left:open=true waxed_copper_door:facing=north:hinge=left:open=true waxed_exposed_copper_door:facing=north:hinge=left:open=true waxed_weathered_copper_door:facing=north:hinge=left:open=true waxed_oxidized_copper_door:facing=north:hinge=left:open=true create:andesite_door:facing=north:hinge=left:open=true create:brass_door:facing=north:hinge=left:open=true create:copper_door:facing=north:hinge=left:open=true create:train_door:facing=north:hinge=left:open=true createdeco:andesite_door:facing=north:hinge=left:open=true createdeco:brass_door:facing=north:hinge=left:open=true createdeco:cast_iron_door:facing=north:hinge=left:open=true createdeco:copper_door:facing=north:hinge=left:open=true createdeco:gold_door:facing=north:hinge=left:open=true createdeco:iron_door:facing=north:hinge=left:open=true createdeco:netherite_door:facing=north:hinge=left:open=true createdeco:zinc_door:facing=north:hinge=left:open=true supplementaries:gold_door:facing=north:hinge=left:open=true supplementaries:netherite_door:facing=north:hinge=left:open=true acacia_door:facing=south:hinge=right:open=true bamboo_door:facing=south:hinge=right:open=true birch_door:facing=south:hinge=right:open=true cherry_door:facing=south:hinge=right:open=true crimson_door:facing=south:hinge=right:open=true dark_oak_door:facing=south:hinge=right:open=true iron_door:facing=south:hinge=right:open=true jungle_door:facing=south:hinge=right:open=true mangrove_door:facing=south:hinge=right:open=true oak_door:facing=south:hinge=right:open=true spruce_door:facing=south:hinge=right:open=true warped_door:facing=south:hinge=right:open=true copper_door:facing=south:hinge=right:open=true exposed_copper_door:facing=south:hinge=right:open=true weathered_copper_door:facing=south:hinge=right:open=true oxidized_copper_door:facing=south:hinge=right:open=true waxed_copper_door:facing=south:hinge=right:open=true waxed_exposed_copper_door:facing=south:hinge=right:open=true waxed_weathered_copper_door:facing=south:hinge=right:open=true waxed_oxidized_copper_door:facing=south:hinge=right:open=true create:andesite_door:facing=south:hinge=right:open=true create:brass_door:facing=south:hinge=right:open=true create:copper_door:facing=south:hinge=right:open=true create:train_door:facing=south:hinge=right:open=true createdeco:andesite_door:facing=south:hinge=right:open=true createdeco:brass_door:facing=south:hinge=right:open=true createdeco:cast_iron_door:facing=south:hinge=right:open=true createdeco:copper_door:facing=south:hinge=right:open=true createdeco:gold_door:facing=south:hinge=right:open=true createdeco:iron_door:facing=south:hinge=right:open=true createdeco:netherite_door:facing=south:hinge=right:open=true createdeco:zinc_door:facing=south:hinge=right:open=true supplementaries:gold_door:facing=south:hinge=right:open=true supplementaries:netherite_door:facing=south:hinge=right:open=true - block.1303 = acacia_door:facing=south:open=false bamboo_door:facing=south:open=false birch_door:facing=south:open=false cherry_door:facing=south:open=false crimson_door:facing=south:open=false dark_oak_door:facing=south:open=false iron_door:facing=south:open=false jungle_door:facing=south:open=false mangrove_door:facing=south:open=false oak_door:facing=south:open=false spruce_door:facing=south:open=false warped_door:facing=south:open=false copper_door:facing=south:open=false exposed_copper_door:facing=south:open=false weathered_copper_door:facing=south:open=false oxidized_copper_door:facing=south:open=false waxed_copper_door:facing=south:open=false waxed_exposed_copper_door:facing=south:open=false waxed_weathered_copper_door:facing=south:open=false waxed_oxidized_copper_door:facing=south:open=false create:andesite_door:facing=south:open=false create:brass_door:facing=south:open=false create:copper_door:facing=south:open=false create:train_door:facing=south:open=false createdeco:andesite_door:facing=south:open=false createdeco:brass_door:facing=south:open=false createdeco:cast_iron_door:facing=south:open=false createdeco:copper_door:facing=south:open=false createdeco:gold_door:facing=south:open=false createdeco:iron_door:facing=south:open=false createdeco:netherite_door:facing=south:open=false createdeco:zinc_door:facing=south:open=false supplementaries:gold_door:facing=south:open=false supplementaries:netherite_door:facing=south:open=false acacia_door:facing=east:hinge=left:open=true bamboo_door:facing=east:hinge=left:open=true birch_door:facing=east:hinge=left:open=true cherry_door:facing=east:hinge=left:open=true crimson_door:facing=east:hinge=left:open=true dark_oak_door:facing=east:hinge=left:open=true iron_door:facing=east:hinge=left:open=true jungle_door:facing=east:hinge=left:open=true mangrove_door:facing=east:hinge=left:open=true oak_door:facing=east:hinge=left:open=true spruce_door:facing=east:hinge=left:open=true warped_door:facing=east:hinge=left:open=true copper_door:facing=east:hinge=left:open=true exposed_copper_door:facing=east:hinge=left:open=true weathered_copper_door:facing=east:hinge=left:open=true oxidized_copper_door:facing=east:hinge=left:open=true waxed_copper_door:facing=east:hinge=left:open=true waxed_exposed_copper_door:facing=east:hinge=left:open=true waxed_weathered_copper_door:facing=east:hinge=left:open=true waxed_oxidized_copper_door:facing=east:hinge=left:open=true create:andesite_door:facing=east:hinge=left:open=true create:brass_door:facing=east:hinge=left:open=true create:copper_door:facing=east:hinge=left:open=true create:train_door:facing=east:hinge=left:open=true createdeco:andesite_door:facing=east:hinge=left:open=true createdeco:brass_door:facing=east:hinge=left:open=true createdeco:cast_iron_door:facing=east:hinge=left:open=true createdeco:copper_door:facing=east:hinge=left:open=true createdeco:gold_door:facing=east:hinge=left:open=true createdeco:iron_door:facing=east:hinge=left:open=true createdeco:netherite_door:facing=east:hinge=left:open=true createdeco:zinc_door:facing=east:hinge=left:open=true supplementaries:gold_door:facing=east:hinge=left:open=true supplementaries:netherite_door:facing=east:hinge=left:open=true acacia_door:facing=west:hinge=right:open=true bamboo_door:facing=west:hinge=right:open=true birch_door:facing=west:hinge=right:open=true cherry_door:facing=west:hinge=right:open=true crimson_door:facing=west:hinge=right:open=true dark_oak_door:facing=west:hinge=right:open=true iron_door:facing=west:hinge=right:open=true jungle_door:facing=west:hinge=right:open=true mangrove_door:facing=west:hinge=right:open=true oak_door:facing=west:hinge=right:open=true spruce_door:facing=west:hinge=right:open=true warped_door:facing=west:hinge=right:open=true copper_door:facing=west:hinge=right:open=true exposed_copper_door:facing=west:hinge=right:open=true weathered_copper_door:facing=west:hinge=right:open=true oxidized_copper_door:facing=west:hinge=right:open=true waxed_copper_door:facing=west:hinge=right:open=true waxed_exposed_copper_door:facing=west:hinge=right:open=true waxed_weathered_copper_door:facing=west:hinge=right:open=true waxed_oxidized_copper_door:facing=west:hinge=right:open=true create:andesite_door:facing=west:hinge=right:open=true create:brass_door:facing=west:hinge=right:open=true create:copper_door:facing=west:hinge=right:open=true create:train_door:facing=west:hinge=right:open=true createdeco:andesite_door:facing=west:hinge=right:open=true createdeco:brass_door:facing=west:hinge=right:open=true createdeco:cast_iron_door:facing=west:hinge=right:open=true createdeco:copper_door:facing=west:hinge=right:open=true createdeco:gold_door:facing=west:hinge=right:open=true createdeco:iron_door:facing=west:hinge=right:open=true createdeco:netherite_door:facing=west:hinge=right:open=true createdeco:zinc_door:facing=west:hinge=right:open=true supplementaries:gold_door:facing=west:hinge=right:open=true supplementaries:netherite_door:facing=west:hinge=right:open=true - block.1304 = acacia_door:facing=west:open=false bamboo_door:facing=west:open=false birch_door:facing=west:open=false cherry_door:facing=west:open=false crimson_door:facing=west:open=false dark_oak_door:facing=west:open=false iron_door:facing=west:open=false jungle_door:facing=west:open=false mangrove_door:facing=west:open=false oak_door:facing=west:open=false spruce_door:facing=west:open=false warped_door:facing=west:open=false copper_door:facing=west:open=false exposed_copper_door:facing=west:open=false weathered_copper_door:facing=west:open=false oxidized_copper_door:facing=west:open=false waxed_copper_door:facing=west:open=false waxed_exposed_copper_door:facing=west:open=false waxed_weathered_copper_door:facing=west:open=false waxed_oxidized_copper_door:facing=west:open=false create:andesite_door:facing=west:open=false create:brass_door:facing=west:open=false create:copper_door:facing=west:open=false create:train_door:facing=west:open=false createdeco:andesite_door:facing=west:open=false createdeco:brass_door:facing=west:open=false createdeco:cast_iron_door:facing=west:open=false createdeco:copper_door:facing=west:open=false createdeco:gold_door:facing=west:open=false createdeco:iron_door:facing=west:open=false createdeco:netherite_door:facing=west:open=false createdeco:zinc_door:facing=west:open=false supplementaries:gold_door:facing=west:open=false supplementaries:netherite_door:facing=west:open=false acacia_door:facing=south:hinge=left:open=true bamboo_door:facing=south:hinge=left:open=true birch_door:facing=south:hinge=left:open=true cherry_door:facing=south:hinge=left:open=true crimson_door:facing=south:hinge=left:open=true dark_oak_door:facing=south:hinge=left:open=true iron_door:facing=south:hinge=left:open=true jungle_door:facing=south:hinge=left:open=true mangrove_door:facing=south:hinge=left:open=true oak_door:facing=south:hinge=left:open=true spruce_door:facing=south:hinge=left:open=true warped_door:facing=south:hinge=left:open=true copper_door:facing=south:hinge=left:open=true exposed_copper_door:facing=south:hinge=left:open=true weathered_copper_door:facing=south:hinge=left:open=true oxidized_copper_door:facing=south:hinge=left:open=true waxed_copper_door:facing=south:hinge=left:open=true waxed_exposed_copper_door:facing=south:hinge=left:open=true waxed_weathered_copper_door:facing=south:hinge=left:open=true waxed_oxidized_copper_door:facing=south:hinge=left:open=true create:andesite_door:facing=south:hinge=left:open=true create:brass_door:facing=south:hinge=left:open=true create:copper_door:facing=south:hinge=left:open=true create:train_door:facing=south:hinge=left:open=true createdeco:andesite_door:facing=south:hinge=left:open=true createdeco:brass_door:facing=south:hinge=left:open=true createdeco:cast_iron_door:facing=south:hinge=left:open=true createdeco:copper_door:facing=south:hinge=left:open=true createdeco:gold_door:facing=south:hinge=left:open=true createdeco:iron_door:facing=south:hinge=left:open=true createdeco:netherite_door:facing=south:hinge=left:open=true createdeco:zinc_door:facing=south:hinge=left:open=true supplementaries:gold_door:facing=south:hinge=left:open=true supplementaries:netherite_door:facing=south:hinge=left:open=true acacia_door:facing=north:hinge=right:open=true bamboo_door:facing=north:hinge=right:open=true birch_door:facing=north:hinge=right:open=true cherry_door:facing=north:hinge=right:open=true crimson_door:facing=north:hinge=right:open=true dark_oak_door:facing=north:hinge=right:open=true iron_door:facing=north:hinge=right:open=true jungle_door:facing=north:hinge=right:open=true mangrove_door:facing=north:hinge=right:open=true oak_door:facing=north:hinge=right:open=true spruce_door:facing=north:hinge=right:open=true warped_door:facing=north:hinge=right:open=true copper_door:facing=north:hinge=right:open=true exposed_copper_door:facing=north:hinge=right:open=true weathered_copper_door:facing=north:hinge=right:open=true oxidized_copper_door:facing=north:hinge=right:open=true waxed_copper_door:facing=north:hinge=right:open=true waxed_exposed_copper_door:facing=north:hinge=right:open=true waxed_weathered_copper_door:facing=north:hinge=right:open=true waxed_oxidized_copper_door:facing=north:hinge=right:open=true create:andesite_door:facing=north:hinge=right:open=true create:brass_door:facing=north:hinge=right:open=true create:copper_door:facing=north:hinge=right:open=true create:train_door:facing=north:hinge=right:open=true createdeco:andesite_door:facing=north:hinge=right:open=true createdeco:brass_door:facing=north:hinge=right:open=true createdeco:cast_iron_door:facing=north:hinge=right:open=true createdeco:copper_door:facing=north:hinge=right:open=true createdeco:gold_door:facing=north:hinge=right:open=true createdeco:iron_door:facing=north:hinge=right:open=true createdeco:netherite_door:facing=north:hinge=right:open=true createdeco:zinc_door:facing=north:hinge=right:open=true supplementaries:gold_door:facing=north:hinge=right:open=true supplementaries:netherite_door:facing=north:hinge=right:open=true + block.1301 = 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 create:andesite_door:facing=north:open=false create:brass_door:facing=north:open=false create:copper_door:facing=north:open=false create:train_door:facing=north:open=false createdeco:andesite_door:facing=north:open=false createdeco:brass_door:facing=north:open=false createdeco:cast_iron_door:facing=north:open=false createdeco:copper_door:facing=north:open=false createdeco:gold_door:facing=north:open=false createdeco:iron_door:facing=north:open=false createdeco:netherite_door:facing=north:open=false createdeco:zinc_door:facing=north:open=false supplementaries:gold_door:facing=north:open=false supplementaries:netherite_door:facing=north:open=false 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 create:andesite_door:facing=west:hinge=left:open=true create:brass_door:facing=west:hinge=left:open=true create:copper_door:facing=west:hinge=left:open=true create:train_door:facing=west:hinge=left:open=true createdeco:andesite_door:facing=west:hinge=left:open=true createdeco:brass_door:facing=west:hinge=left:open=true createdeco:cast_iron_door:facing=west:hinge=left:open=true createdeco:copper_door:facing=west:hinge=left:open=true createdeco:gold_door:facing=west:hinge=left:open=true createdeco:iron_door:facing=west:hinge=left:open=true createdeco:netherite_door:facing=west:hinge=left:open=true createdeco:zinc_door:facing=west:hinge=left:open=true supplementaries:gold_door:facing=west:hinge=left:open=true supplementaries:netherite_door:facing=west:hinge=left: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 + block.1302 = acacia_door:facing=east:open=false bamboo_door:facing=east:open=false birch_door:facing=east:open=false cherry_door:facing=east:open=false crimson_door:facing=east:open=false dark_oak_door:facing=east:open=false iron_door:facing=east:open=false jungle_door:facing=east:open=false mangrove_door:facing=east:open=false oak_door:facing=east:open=false spruce_door:facing=east:open=false warped_door:facing=east:open=false copper_door:facing=east:open=false exposed_copper_door:facing=east:open=false weathered_copper_door:facing=east:open=false oxidized_copper_door:facing=east:open=false waxed_copper_door:facing=east:open=false waxed_exposed_copper_door:facing=east:open=false waxed_weathered_copper_door:facing=east:open=false waxed_oxidized_copper_door:facing=east:open=false create:andesite_door:facing=east:open=false create:brass_door:facing=east:open=false create:copper_door:facing=east:open=false create:train_door:facing=east:open=false createdeco:andesite_door:facing=east:open=false createdeco:brass_door:facing=east:open=false createdeco:cast_iron_door:facing=east:open=false createdeco:copper_door:facing=east:open=false createdeco:gold_door:facing=east:open=false createdeco:iron_door:facing=east:open=false createdeco:netherite_door:facing=east:open=false createdeco:zinc_door:facing=east:open=false supplementaries:gold_door:facing=east:open=false supplementaries:netherite_door:facing=east:open=false acacia_door:facing=north:hinge=left:open=true bamboo_door:facing=north:hinge=left:open=true birch_door:facing=north:hinge=left:open=true cherry_door:facing=north:hinge=left:open=true crimson_door:facing=north:hinge=left:open=true dark_oak_door:facing=north:hinge=left:open=true iron_door:facing=north:hinge=left:open=true jungle_door:facing=north:hinge=left:open=true mangrove_door:facing=north:hinge=left:open=true oak_door:facing=north:hinge=left:open=true spruce_door:facing=north:hinge=left:open=true warped_door:facing=north:hinge=left:open=true copper_door:facing=north:hinge=left:open=true exposed_copper_door:facing=north:hinge=left:open=true weathered_copper_door:facing=north:hinge=left:open=true oxidized_copper_door:facing=north:hinge=left:open=true waxed_copper_door:facing=north:hinge=left:open=true waxed_exposed_copper_door:facing=north:hinge=left:open=true waxed_weathered_copper_door:facing=north:hinge=left:open=true waxed_oxidized_copper_door:facing=north:hinge=left:open=true create:andesite_door:facing=north:hinge=left:open=true create:brass_door:facing=north:hinge=left:open=true create:copper_door:facing=north:hinge=left:open=true create:train_door:facing=north:hinge=left:open=true createdeco:andesite_door:facing=north:hinge=left:open=true createdeco:brass_door:facing=north:hinge=left:open=true createdeco:cast_iron_door:facing=north:hinge=left:open=true createdeco:copper_door:facing=north:hinge=left:open=true createdeco:gold_door:facing=north:hinge=left:open=true createdeco:iron_door:facing=north:hinge=left:open=true createdeco:netherite_door:facing=north:hinge=left:open=true createdeco:zinc_door:facing=north:hinge=left:open=true supplementaries:gold_door:facing=north:hinge=left:open=true supplementaries:netherite_door:facing=north:hinge=left:open=true acacia_door:facing=south:hinge=right:open=true bamboo_door:facing=south:hinge=right:open=true birch_door:facing=south:hinge=right:open=true cherry_door:facing=south:hinge=right:open=true crimson_door:facing=south:hinge=right:open=true dark_oak_door:facing=south:hinge=right:open=true iron_door:facing=south:hinge=right:open=true jungle_door:facing=south:hinge=right:open=true mangrove_door:facing=south:hinge=right:open=true oak_door:facing=south:hinge=right:open=true spruce_door:facing=south:hinge=right:open=true warped_door:facing=south:hinge=right:open=true copper_door:facing=south:hinge=right:open=true exposed_copper_door:facing=south:hinge=right:open=true weathered_copper_door:facing=south:hinge=right:open=true oxidized_copper_door:facing=south:hinge=right:open=true waxed_copper_door:facing=south:hinge=right:open=true waxed_exposed_copper_door:facing=south:hinge=right:open=true waxed_weathered_copper_door:facing=south:hinge=right:open=true waxed_oxidized_copper_door:facing=south:hinge=right:open=true + block.1303 = acacia_door:facing=south:open=false bamboo_door:facing=south:open=false birch_door:facing=south:open=false cherry_door:facing=south:open=false crimson_door:facing=south:open=false dark_oak_door:facing=south:open=false iron_door:facing=south:open=false jungle_door:facing=south:open=false mangrove_door:facing=south:open=false oak_door:facing=south:open=false spruce_door:facing=south:open=false warped_door:facing=south:open=false copper_door:facing=south:open=false exposed_copper_door:facing=south:open=false weathered_copper_door:facing=south:open=false oxidized_copper_door:facing=south:open=false waxed_copper_door:facing=south:open=false waxed_exposed_copper_door:facing=south:open=false waxed_weathered_copper_door:facing=south:open=false waxed_oxidized_copper_door:facing=south:open=false create:andesite_door:facing=south:open=false create:brass_door:facing=south:open=false create:copper_door:facing=south:open=false create:train_door:facing=south:open=false createdeco:andesite_door:facing=south:open=false createdeco:brass_door:facing=south:open=false createdeco:cast_iron_door:facing=south:open=false createdeco:copper_door:facing=south:open=false createdeco:gold_door:facing=south:open=false createdeco:iron_door:facing=south:open=false createdeco:netherite_door:facing=south:open=false createdeco:zinc_door:facing=south:open=false supplementaries:gold_door:facing=south:open=false supplementaries:netherite_door:facing=south:open=false acacia_door:facing=east:hinge=left:open=true bamboo_door:facing=east:hinge=left:open=true birch_door:facing=east:hinge=left:open=true cherry_door:facing=east:hinge=left:open=true crimson_door:facing=east:hinge=left:open=true dark_oak_door:facing=east:hinge=left:open=true iron_door:facing=east:hinge=left:open=true jungle_door:facing=east:hinge=left:open=true mangrove_door:facing=east:hinge=left:open=true oak_door:facing=east:hinge=left:open=true spruce_door:facing=east:hinge=left:open=true warped_door:facing=east:hinge=left:open=true copper_door:facing=east:hinge=left:open=true exposed_copper_door:facing=east:hinge=left:open=true weathered_copper_door:facing=east:hinge=left:open=true oxidized_copper_door:facing=east:hinge=left:open=true waxed_copper_door:facing=east:hinge=left:open=true waxed_exposed_copper_door:facing=east:hinge=left:open=true waxed_weathered_copper_door:facing=east:hinge=left:open=true waxed_oxidized_copper_door:facing=east:hinge=left:open=true create:andesite_door:facing=east:hinge=left:open=true create:brass_door:facing=east:hinge=left:open=true create:copper_door:facing=east:hinge=left:open=true create:train_door:facing=east:hinge=left:open=true createdeco:andesite_door:facing=east:hinge=left:open=true createdeco:brass_door:facing=east:hinge=left:open=true createdeco:cast_iron_door:facing=east:hinge=left:open=true createdeco:copper_door:facing=east:hinge=left:open=true createdeco:gold_door:facing=east:hinge=left:open=true createdeco:iron_door:facing=east:hinge=left:open=true createdeco:netherite_door:facing=east:hinge=left:open=true createdeco:zinc_door:facing=east:hinge=left:open=true supplementaries:gold_door:facing=east:hinge=left:open=true supplementaries:netherite_door:facing=east:hinge=left:open=true acacia_door:facing=west:hinge=right:open=true bamboo_door:facing=west:hinge=right:open=true birch_door:facing=west:hinge=right:open=true cherry_door:facing=west:hinge=right:open=true crimson_door:facing=west:hinge=right:open=true dark_oak_door:facing=west:hinge=right:open=true iron_door:facing=west:hinge=right:open=true jungle_door:facing=west:hinge=right:open=true mangrove_door:facing=west:hinge=right:open=true oak_door:facing=west:hinge=right:open=true spruce_door:facing=west:hinge=right:open=true warped_door:facing=west:hinge=right:open=true copper_door:facing=west:hinge=right:open=true exposed_copper_door:facing=west:hinge=right:open=true weathered_copper_door:facing=west:hinge=right:open=true oxidized_copper_door:facing=west:hinge=right:open=true waxed_copper_door:facing=west:hinge=right:open=true waxed_exposed_copper_door:facing=west:hinge=right:open=true waxed_weathered_copper_door:facing=west:hinge=right:open=true waxed_oxidized_copper_door:facing=west:hinge=right:open=true + block.1304 = acacia_door:facing=west:open=false bamboo_door:facing=west:open=false birch_door:facing=west:open=false cherry_door:facing=west:open=false crimson_door:facing=west:open=false dark_oak_door:facing=west:open=false iron_door:facing=west:open=false jungle_door:facing=west:open=false mangrove_door:facing=west:open=false oak_door:facing=west:open=false spruce_door:facing=west:open=false warped_door:facing=west:open=false copper_door:facing=west:open=false exposed_copper_door:facing=west:open=false weathered_copper_door:facing=west:open=false oxidized_copper_door:facing=west:open=false waxed_copper_door:facing=west:open=false waxed_exposed_copper_door:facing=west:open=false waxed_weathered_copper_door:facing=west:open=false waxed_oxidized_copper_door:facing=west:open=false create:andesite_door:facing=west:open=false create:brass_door:facing=west:open=false create:copper_door:facing=west:open=false create:train_door:facing=west:open=false createdeco:andesite_door:facing=west:open=false createdeco:brass_door:facing=west:open=false createdeco:cast_iron_door:facing=west:open=false createdeco:copper_door:facing=west:open=false createdeco:gold_door:facing=west:open=false createdeco:iron_door:facing=west:open=false createdeco:netherite_door:facing=west:open=false createdeco:zinc_door:facing=west:open=false supplementaries:gold_door:facing=west:open=false supplementaries:netherite_door:facing=west:open=false acacia_door:facing=south:hinge=left:open=true bamboo_door:facing=south:hinge=left:open=true birch_door:facing=south:hinge=left:open=true cherry_door:facing=south:hinge=left:open=true crimson_door:facing=south:hinge=left:open=true dark_oak_door:facing=south:hinge=left:open=true iron_door:facing=south:hinge=left:open=true jungle_door:facing=south:hinge=left:open=true mangrove_door:facing=south:hinge=left:open=true oak_door:facing=south:hinge=left:open=true spruce_door:facing=south:hinge=left:open=true warped_door:facing=south:hinge=left:open=true copper_door:facing=south:hinge=left:open=true exposed_copper_door:facing=south:hinge=left:open=true weathered_copper_door:facing=south:hinge=left:open=true oxidized_copper_door:facing=south:hinge=left:open=true waxed_copper_door:facing=south:hinge=left:open=true waxed_exposed_copper_door:facing=south:hinge=left:open=true waxed_weathered_copper_door:facing=south:hinge=left:open=true waxed_oxidized_copper_door:facing=south:hinge=left:open=true create:andesite_door:facing=south:hinge=left:open=true create:brass_door:facing=south:hinge=left:open=true create:copper_door:facing=south:hinge=left:open=true create:train_door:facing=south:hinge=left:open=true createdeco:andesite_door:facing=south:hinge=left:open=true createdeco:brass_door:facing=south:hinge=left:open=true createdeco:cast_iron_door:facing=south:hinge=left:open=true createdeco:copper_door:facing=south:hinge=left:open=true createdeco:gold_door:facing=south:hinge=left:open=true createdeco:iron_door:facing=south:hinge=left:open=true createdeco:netherite_door:facing=south:hinge=left:open=true createdeco:zinc_door:facing=south:hinge=left:open=true supplementaries:gold_door:facing=south:hinge=left:open=true supplementaries:netherite_door:facing=south:hinge=left:open=true acacia_door:facing=north:hinge=right:open=true bamboo_door:facing=north:hinge=right:open=true birch_door:facing=north:hinge=right:open=true cherry_door:facing=north:hinge=right:open=true crimson_door:facing=north:hinge=right:open=true dark_oak_door:facing=north:hinge=right:open=true iron_door:facing=north:hinge=right:open=true jungle_door:facing=north:hinge=right:open=true mangrove_door:facing=north:hinge=right:open=true oak_door:facing=north:hinge=right:open=true spruce_door:facing=north:hinge=right:open=true warped_door:facing=north:hinge=right:open=true copper_door:facing=north:hinge=right:open=true exposed_copper_door:facing=north:hinge=right:open=true weathered_copper_door:facing=north:hinge=right:open=true oxidized_copper_door:facing=north:hinge=right:open=true waxed_copper_door:facing=north:hinge=right:open=true waxed_exposed_copper_door:facing=north:hinge=right:open=true waxed_weathered_copper_door:facing=north:hinge=right:open=true waxed_oxidized_copper_door:facing=north:hinge=right:open=true - block.1305 = acacia_trapdoor:half=bottom:open=false bamboo_trapdoor:half=bottom:open=false birch_trapdoor:half=bottom:open=false cherry_trapdoor:half=bottom:open=false crimson_trapdoor:half=bottom:open=false dark_oak_trapdoor:half=bottom:open=false iron_trapdoor:half=bottom:open=false jungle_trapdoor:half=bottom:open=false mangrove_trapdoor:half=bottom:open=false oak_trapdoor:half=bottom:open=false spruce_trapdoor:half=bottom:open=false warped_trapdoor:half=bottom:open=false copper_trapdoor:half=bottom:open=false exposed_copper_trapdoor:half=bottom:open=false weathered_copper_trapdoor:half=bottom:open=false oxidized_copper_trapdoor:half=bottom:open=false waxed_copper_trapdoor:half=bottom:open=false waxed_exposed_copper_trapdoor:half=bottom:open=false waxed_weathered_copper_trapdoor:half=bottom:open=false waxed_oxidized_copper_trapdoor:half=bottom:open=false create:train_trapdoor:half=bottom:open=false createdeco:andesite_trapdoor:half=bottom:open=false createdeco:brass_trapdoor:half=bottom:open=false createdeco:cast_iron_trapdoor:half=bottom:open=false createdeco:copper_trapdoor:half=bottom:open=false createdeco:gold_trapdoor:half=bottom:open=false createdeco:iron_trapdoor:half=bottom:open=false createdeco:netherite_trapdoor:half=bottom:open=false createdeco:zinc_trapdoor:half=bottom:open=false supplementaries:gold_trapdoor:half=bottom:open=false supplementaries:iron_trapdoor:half=bottom:open=false supplementaries:netherite_trapdoor:half=bottom:open=false supplementaries:zinc_trapdoor:half=bottom:open=false - block.1306 = acacia_trapdoor:half=top:open=false bamboo_trapdoor:half=top:open=false birch_trapdoor:half=top:open=false cherry_trapdoor:half=top:open=false crimson_trapdoor:half=top:open=false dark_oak_trapdoor:half=top:open=false iron_trapdoor:half=top:open=false jungle_trapdoor:half=top:open=false mangrove_trapdoor:half=top:open=false oak_trapdoor:half=top:open=false spruce_trapdoor:half=top:open=false warped_trapdoor:half=top:open=false copper_trapdoor:half=top:open=false exposed_copper_trapdoor:half=top:open=false weathered_copper_trapdoor:half=top:open=false oxidized_copper_trapdoor:half=top:open=false waxed_copper_trapdoor:half=top:open=false waxed_exposed_copper_trapdoor:half=top:open=false waxed_weathered_copper_trapdoor:half=top:open=false waxed_oxidized_copper_trapdoor:half=top:open=false create:train_trapdoor:half=top:open=false createdeco:andesite_trapdoor:half=top:open=false createdeco:brass_trapdoor:half=top:open=false createdeco:cast_iron_trapdoor:half=top:open=false createdeco:copper_trapdoor:half=top:open=false createdeco:gold_trapdoor:half=top:open=false createdeco:iron_trapdoor:half=top:open=false createdeco:netherite_trapdoor:half=top:open=false createdeco:zinc_trapdoor:half=top:open=false supplementaries:gold_trapdoor:half=top:open=false supplementaries:iron_trapdoor:half=top:open=false supplementaries:netherite_trapdoor:half=top:open=false supplementaries:zinc_trapdoor:half=top:open=false - block.1307 = acacia_trapdoor:facing=north:open=true bamboo_trapdoor:facing=north:open=true birch_trapdoor:facing=north:open=true cherry_trapdoor:facing=north:open=true crimson_trapdoor:facing=north:open=true dark_oak_trapdoor:facing=north:open=true iron_trapdoor:facing=north:open=true jungle_trapdoor:facing=north:open=true mangrove_trapdoor:facing=north:open=true oak_trapdoor:facing=north:open=true spruce_trapdoor:facing=north:open=true warped_trapdoor:facing=north:open=true copper_trapdoor:facing=north:open=true exposed_copper_trapdoor:facing=north:open=true weathered_copper_trapdoor:facing=north:open=true oxidized_copper_trapdoor:facing=north:open=true waxed_copper_trapdoor:facing=north:open=true waxed_exposed_copper_trapdoor:facing=north:open=true waxed_weathered_copper_trapdoor:facing=north:open=true waxed_oxidized_copper_trapdoor:facing=north:open=true create:train_trapdoor:facing=north:open=true createdeco:andesite_trapdoor:facing=north:open=true createdeco:brass_trapdoor:facing=north:open=true createdeco:cast_iron_trapdoor:facing=north:open=true createdeco:copper_trapdoor:facing=north:open=true createdeco:gold_trapdoor:facing=north:open=true createdeco:iron_trapdoor:facing=north:open=true createdeco:netherite_trapdoor:facing=north:open=true createdeco:zinc_trapdoor:facing=north:open=true supplementaries:gold_trapdoor:facing=north:open=true supplementaries:iron_trapdoor:facing=north:open=true supplementaries:netherite_trapdoor:facing=north:open=true supplementaries:zinc_trapdoor:facing=north:open=true - block.1308 = acacia_trapdoor:facing=east:open=true bamboo_trapdoor:facing=east:open=true birch_trapdoor:facing=east:open=true cherry_trapdoor:facing=east:open=true crimson_trapdoor:facing=east:open=true dark_oak_trapdoor:facing=east:open=true iron_trapdoor:facing=east:open=true jungle_trapdoor:facing=east:open=true mangrove_trapdoor:facing=east:open=true oak_trapdoor:facing=east:open=true spruce_trapdoor:facing=east:open=true warped_trapdoor:facing=east:open=true copper_trapdoor:facing=east:open=true exposed_copper_trapdoor:facing=east:open=true weathered_copper_trapdoor:facing=east:open=true oxidized_copper_trapdoor:facing=east:open=true waxed_copper_trapdoor:facing=east:open=true waxed_exposed_copper_trapdoor:facing=east:open=true waxed_weathered_copper_trapdoor:facing=east:open=true waxed_oxidized_copper_trapdoor:facing=east:open=true create:train_trapdoor:facing=east:open=true createdeco:andesite_trapdoor:facing=east:open=true createdeco:brass_trapdoor:facing=east:open=true createdeco:cast_iron_trapdoor:facing=east:open=true createdeco:copper_trapdoor:facing=east:open=true createdeco:gold_trapdoor:facing=east:open=true createdeco:iron_trapdoor:facing=east:open=true createdeco:netherite_trapdoor:facing=east:open=true createdeco:zinc_trapdoor:facing=east:open=true supplementaries:gold_trapdoor:facing=east:open=true supplementaries:iron_trapdoor:facing=east:open=true supplementaries:netherite_trapdoor:facing=east:open=true supplementaries:zinc_trapdoor:facing=east:open=true - block.1309 = acacia_trapdoor:facing=south:open=true bamboo_trapdoor:facing=south:open=true birch_trapdoor:facing=south:open=true cherry_trapdoor:facing=south:open=true crimson_trapdoor:facing=south:open=true dark_oak_trapdoor:facing=south:open=true iron_trapdoor:facing=south:open=true jungle_trapdoor:facing=south:open=true mangrove_trapdoor:facing=south:open=true oak_trapdoor:facing=south:open=true spruce_trapdoor:facing=south:open=true warped_trapdoor:facing=south:open=true copper_trapdoor:facing=south:open=true exposed_copper_trapdoor:facing=south:open=true weathered_copper_trapdoor:facing=south:open=true oxidized_copper_trapdoor:facing=south:open=true waxed_copper_trapdoor:facing=south:open=true waxed_exposed_copper_trapdoor:facing=south:open=true waxed_weathered_copper_trapdoor:facing=south:open=true waxed_oxidized_copper_trapdoor:facing=south:open=true create:train_trapdoor:facing=south:open=true createdeco:andesite_trapdoor:facing=south:open=true createdeco:brass_trapdoor:facing=south:open=true createdeco:cast_iron_trapdoor:facing=south:open=true createdeco:copper_trapdoor:facing=south:open=true createdeco:gold_trapdoor:facing=south:open=true createdeco:iron_trapdoor:facing=south:open=true createdeco:netherite_trapdoor:facing=south:open=true createdeco:zinc_trapdoor:facing=south:open=true supplementaries:gold_trapdoor:facing=south:open=true supplementaries:iron_trapdoor:facing=south:open=true supplementaries:netherite_trapdoor:facing=south:open=true supplementaries:zinc_trapdoor:facing=south:open=true - block.1310 = acacia_trapdoor:facing=west:open=true bamboo_trapdoor:facing=west:open=true birch_trapdoor:facing=west:open=true cherry_trapdoor:facing=west:open=true crimson_trapdoor:facing=west:open=true dark_oak_trapdoor:facing=west:open=true iron_trapdoor:facing=west:open=true jungle_trapdoor:facing=west:open=true mangrove_trapdoor:facing=west:open=true oak_trapdoor:facing=west:open=true spruce_trapdoor:facing=west:open=true warped_trapdoor:facing=west:open=true copper_trapdoor:facing=west:open=true exposed_copper_trapdoor:facing=west:open=true weathered_copper_trapdoor:facing=west:open=true oxidized_copper_trapdoor:facing=west:open=true waxed_copper_trapdoor:facing=west:open=true waxed_exposed_copper_trapdoor:facing=west:open=true waxed_weathered_copper_trapdoor:facing=west:open=true waxed_oxidized_copper_trapdoor:facing=west:open=true create:train_trapdoor:facing=west:open=true createdeco:andesite_trapdoor:facing=west:open=true createdeco:brass_trapdoor:facing=west:open=true createdeco:cast_iron_trapdoor:facing=west:open=true createdeco:copper_trapdoor:facing=west:open=true createdeco:gold_trapdoor:facing=west:open=true createdeco:iron_trapdoor:facing=west:open=true createdeco:netherite_trapdoor:facing=west:open=true createdeco:zinc_trapdoor:facing=west:open=true supplementaries:gold_trapdoor:facing=west:open=true supplementaries:iron_trapdoor:facing=west:open=true supplementaries:netherite_trapdoor:facing=west:open=true supplementaries:zinc_trapdoor:facing=west:open=true + block.1305 = 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.1306 = 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 + + block.1307 = acacia_trapdoor:half=bottom:open=false bamboo_trapdoor:half=bottom:open=false birch_trapdoor:half=bottom:open=false cherry_trapdoor:half=bottom:open=false crimson_trapdoor:half=bottom:open=false dark_oak_trapdoor:half=bottom:open=false iron_trapdoor:half=bottom:open=false jungle_trapdoor:half=bottom:open=false mangrove_trapdoor:half=bottom:open=false oak_trapdoor:half=bottom:open=false spruce_trapdoor:half=bottom:open=false warped_trapdoor:half=bottom:open=false copper_trapdoor:half=bottom:open=false exposed_copper_trapdoor:half=bottom:open=false weathered_copper_trapdoor:half=bottom:open=false oxidized_copper_trapdoor:half=bottom:open=false waxed_copper_trapdoor:half=bottom:open=false waxed_exposed_copper_trapdoor:half=bottom:open=false waxed_weathered_copper_trapdoor:half=bottom:open=false waxed_oxidized_copper_trapdoor:half=bottom:open=false + block.1308 = acacia_trapdoor:half=top:open=false bamboo_trapdoor:half=top:open=false birch_trapdoor:half=top:open=false cherry_trapdoor:half=top:open=false crimson_trapdoor:half=top:open=false dark_oak_trapdoor:half=top:open=false iron_trapdoor:half=top:open=false jungle_trapdoor:half=top:open=false mangrove_trapdoor:half=top:open=false oak_trapdoor:half=top:open=false spruce_trapdoor:half=top:open=false warped_trapdoor:half=top:open=false copper_trapdoor:half=top:open=false exposed_copper_trapdoor:half=top:open=false weathered_copper_trapdoor:half=top:open=false oxidized_copper_trapdoor:half=top:open=false waxed_copper_trapdoor:half=top:open=false waxed_exposed_copper_trapdoor:half=top:open=false waxed_weathered_copper_trapdoor:half=top:open=false waxed_oxidized_copper_trapdoor:half=top:open=false + block.1309 = acacia_trapdoor:facing=north:open=true bamboo_trapdoor:facing=north:open=true birch_trapdoor:facing=north:open=true cherry_trapdoor:facing=north:open=true crimson_trapdoor:facing=north:open=true dark_oak_trapdoor:facing=north:open=true iron_trapdoor:facing=north:open=true jungle_trapdoor:facing=north:open=true mangrove_trapdoor:facing=north:open=true oak_trapdoor:facing=north:open=true spruce_trapdoor:facing=north:open=true warped_trapdoor:facing=north:open=true copper_trapdoor:facing=north:open=true exposed_copper_trapdoor:facing=north:open=true weathered_copper_trapdoor:facing=north:open=true oxidized_copper_trapdoor:facing=north:open=true waxed_copper_trapdoor:facing=north:open=true waxed_exposed_copper_trapdoor:facing=north:open=true waxed_weathered_copper_trapdoor:facing=north:open=true waxed_oxidized_copper_trapdoor:facing=north:open=true + block.1310 = acacia_trapdoor:facing=east:open=true bamboo_trapdoor:facing=east:open=true birch_trapdoor:facing=east:open=true cherry_trapdoor:facing=east:open=true crimson_trapdoor:facing=east:open=true dark_oak_trapdoor:facing=east:open=true iron_trapdoor:facing=east:open=true jungle_trapdoor:facing=east:open=true mangrove_trapdoor:facing=east:open=true oak_trapdoor:facing=east:open=true spruce_trapdoor:facing=east:open=true warped_trapdoor:facing=east:open=true copper_trapdoor:facing=east:open=true exposed_copper_trapdoor:facing=east:open=true weathered_copper_trapdoor:facing=east:open=true oxidized_copper_trapdoor:facing=east:open=true waxed_copper_trapdoor:facing=east:open=true waxed_exposed_copper_trapdoor:facing=east:open=true waxed_weathered_copper_trapdoor:facing=east:open=true waxed_oxidized_copper_trapdoor:facing=east:open=true + block.1311 = acacia_trapdoor:facing=south:open=true bamboo_trapdoor:facing=south:open=true birch_trapdoor:facing=south:open=true cherry_trapdoor:facing=south:open=true crimson_trapdoor:facing=south:open=true dark_oak_trapdoor:facing=south:open=true iron_trapdoor:facing=south:open=true jungle_trapdoor:facing=south:open=true mangrove_trapdoor:facing=south:open=true oak_trapdoor:facing=south:open=true spruce_trapdoor:facing=south:open=true warped_trapdoor:facing=south:open=true copper_trapdoor:facing=south:open=true exposed_copper_trapdoor:facing=south:open=true weathered_copper_trapdoor:facing=south:open=true oxidized_copper_trapdoor:facing=south:open=true waxed_copper_trapdoor:facing=south:open=true waxed_exposed_copper_trapdoor:facing=south:open=true waxed_weathered_copper_trapdoor:facing=south:open=true waxed_oxidized_copper_trapdoor:facing=south:open=true + block.1312 = acacia_trapdoor:facing=west:open=true bamboo_trapdoor:facing=west:open=true birch_trapdoor:facing=west:open=true cherry_trapdoor:facing=west:open=true crimson_trapdoor:facing=west:open=true dark_oak_trapdoor:facing=west:open=true iron_trapdoor:facing=west:open=true jungle_trapdoor:facing=west:open=true mangrove_trapdoor:facing=west:open=true oak_trapdoor:facing=west:open=true spruce_trapdoor:facing=west:open=true warped_trapdoor:facing=west:open=true copper_trapdoor:facing=west:open=true exposed_copper_trapdoor:facing=west:open=true weathered_copper_trapdoor:facing=west:open=true oxidized_copper_trapdoor:facing=west:open=true waxed_copper_trapdoor:facing=west:open=true waxed_exposed_copper_trapdoor:facing=west:open=true waxed_weathered_copper_trapdoor:facing=west:open=true waxed_oxidized_copper_trapdoor:facing=west:open=true ####### ----- misc ----- ####### diff --git a/shaders/lib/blocks.glsl b/shaders/lib/blocks.glsl index 609b36b..d59ec6a 100644 --- a/shaders/lib/blocks.glsl +++ b/shaders/lib/blocks.glsl @@ -62,9 +62,12 @@ #define BLOCK_DOOR_S 1303 #define BLOCK_DOOR_W 1304 -#define BLOCK_TRAPDOOR_BOTTOM 1305 -#define BLOCK_TRAPDOOR_TOP 1306 -#define BLOCK_TRAPDOOR_N 1307 -#define BLOCK_TRAPDOOR_E 1308 -#define BLOCK_TRAPDOOR_S 1309 -#define BLOCK_TRAPDOOR_W 1310 +#define BLOCK_SLAB_TOP 1305 +#define BLOCK_SLAB_BOTTOM 1306 + +#define BLOCK_TRAPDOOR_BOTTOM 1307 +#define BLOCK_TRAPDOOR_TOP 1308 +#define BLOCK_TRAPDOOR_N 1309 +#define BLOCK_TRAPDOOR_E 1310 +#define BLOCK_TRAPDOOR_S 1311 +#define BLOCK_TRAPDOOR_W 1312 diff --git a/shaders/world0/setup.csh b/shaders/world0/setup.csh index 4e3e8fa..06b370f 100644 --- a/shaders/world0/setup.csh +++ b/shaders/world0/setup.csh @@ -275,6 +275,14 @@ void main() { mixWeight = 0.8; break; + case BLOCK_SLAB_TOP: + mixMask = BuildLpvMask(1u, 1u, 1u, 1u, 0u, 1u); + mixWeight = 0.5; + break; + case BLOCK_SLAB_BOTTOM: + mixMask = BuildLpvMask(1u, 1u, 1u, 1u, 1u, 0u); + mixWeight = 0.5; + break; case BLOCK_TRAPDOOR_BOTTOM: mixMask = BuildLpvMask(1u, 1u, 1u, 1u, 1u, 0u); From 81a937790c053f883b7b28df13741057a02247e7 Mon Sep 17 00:00:00 2001 From: NULL511 Date: Thu, 2 May 2024 23:38:35 -0400 Subject: [PATCH 17/22] clean up; dimension support --- shaders/dimensions/setup.csh | 313 +++++++++++++++++++++++++++++ shaders/dimensions/shadowcomp.csh | 157 +++++++++++++++ shaders/lib/blocks.glsl | 2 + shaders/lib/lpv_render.glsl | 11 +- shaders/lib/voxel_common.glsl | 7 - shaders/lib/voxel_read.glsl | 6 - shaders/lib/voxel_write.glsl | 5 + shaders/shaders.properties | 1 + shaders/world-1/setup.csh | 7 + shaders/world-1/shadowcomp.csh | 5 + shaders/world0/setup.csh | 314 +----------------------------- shaders/world0/shadowcomp.csh | 164 +--------------- shaders/world1/setup.csh | 7 + shaders/world1/shadowcomp.csh | 5 + 14 files changed, 513 insertions(+), 491 deletions(-) create mode 100644 shaders/dimensions/setup.csh create mode 100644 shaders/dimensions/shadowcomp.csh delete mode 100644 shaders/lib/voxel_read.glsl create mode 100644 shaders/world-1/setup.csh create mode 100644 shaders/world-1/shadowcomp.csh create mode 100644 shaders/world1/setup.csh create mode 100644 shaders/world1/shadowcomp.csh diff --git a/shaders/dimensions/setup.csh b/shaders/dimensions/setup.csh new file mode 100644 index 0000000..c9f5ca5 --- /dev/null +++ b/shaders/dimensions/setup.csh @@ -0,0 +1,313 @@ +layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in; + +const ivec3 workGroups = ivec3(4, 5, 1); + +#ifdef IS_LPV_ENABLED + #include "/lib/blocks.glsl" + #include "/lib/lpv_blocks.glsl" + + const vec3 LightColor_Candles = vec3(1.0, 0.4, 0.1); + const vec3 LightColor_SeaPickle = vec3(0.283, 0.394, 0.212); + + uint BuildLpvMask(const in uint north, const in uint east, const in uint south, const in uint west, const in uint up, const in uint down) { + return east | (west << 1) | (down << 2) | (up << 3) | (south << 4) | (north << 5); + } +#endif + + +void main() { + #ifdef IS_LPV_ENABLED + uint blockId = uint(gl_GlobalInvocationID.x + gl_GlobalInvocationID.y * 32 + LpvBlockMapOffset); + //if (blockId >= 1280) return; + + vec3 lightColor = vec3(0.0); + float lightRange = 0.0; + float mixWeight = 0.0; + uint mixMask = 0xFFFF; + vec3 tintColor = vec3(1.0); + + switch (blockId) { + case BLOCK_BEACON: + lightColor = vec3(1.0); + lightRange = 15.0; + break; + case BLOCK_CANDLES_LIT_1: + lightColor = LightColor_Candles; + lightRange = 3.0; + mixWeight = 1.0; + break; + case BLOCK_CANDLES_LIT_2: + lightColor = LightColor_Candles; + lightRange = 6.0; + mixWeight = 1.0; + break; + case BLOCK_CANDLES_LIT_3: + lightColor = LightColor_Candles; + lightRange = 9.0; + mixWeight = 1.0; + break; + case BLOCK_CANDLES_LIT_4: + lightColor = LightColor_Candles; + lightRange = 12.0; + mixWeight = 1.0; + break; + case BLOCK_CAVE_VINE_BERRIES: + lightColor = vec3(0.717, 0.541, 0.188); + lightRange = 14.0; + mixWeight = 1.0; + break; + case BLOCK_CONDUIT: + lightColor = vec3(1.0); + lightRange = 15.0; + break; + case BLOCK_END_GATEWAY: + lightColor = vec3(1.0); + lightRange = 15.0; + break; + case BLOCK_END_ROD: + lightColor = vec3(0.957, 0.929, 0.875); + lightRange = 14.0; + break; + case BLOCK_FIRE: + lightColor = vec3(0.864, 0.598, 0.348); + lightRange = 15.0; + mixWeight = 1.0; + break; + case BLOCK_FROGLIGHT_OCHRE: + lightColor = vec3(0.768, 0.648, 0.108); + lightRange = 15.0; + break; + case BLOCK_FROGLIGHT_PEARLESCENT: + lightColor = vec3(0.737, 0.435, 0.658); + lightRange = 15.0; + break; + case BLOCK_FROGLIGHT_VERDANT: + lightColor = vec3(0.463, 0.763, 0.409); + lightRange = 15.0; + break; + case BLOCK_GLOWSTONE: + lightColor = vec3(0.747, 0.594, 0.326); + lightRange = 15.0; + break; + case BLOCK_JACK_O_LANTERN: + lightColor = vec3(1.0, 0.7, 0.1); + lightRange = 15.0; + break; + case BLOCK_LANTERN: + lightColor = vec3(1.0, 0.7, 0.1); + lightRange = 15.0; + mixWeight = 0.8; + break; + case BLOCK_LAVA: + lightColor = vec3(0.804, 0.424, 0.149); + lightRange = 15.0; + break; + case BLOCK_MAGMA: + lightColor = vec3(0.747, 0.323, 0.110); + lightRange = 3.0; + break; + case BLOCK_REDSTONE_LAMP_LIT: + lightColor = vec3(0.953, 0.796, 0.496); + lightRange = 15.0; + break; + case BLOCK_REDSTONE_TORCH_LIT: + lightColor = vec3(0.939, 0.305, 0.164); + lightRange = 7.0; + break; + case BLOCK_RESPAWN_ANCHOR_4: + lightColor = vec3(1.0, 0.2, 1.0); + lightRange = 15.0; + break; + case BLOCK_SCULK_SENSOR_ACTIVE: + lightColor = vec3(0.1, 0.4, 1.0); + lightRange = 1.0; + break; + case BLOCK_SEA_PICKLE_WET_1: + lightColor = LightColor_SeaPickle; + lightRange = 6.0; + mixWeight = 1.0; + break; + case BLOCK_SEA_PICKLE_WET_2: + lightColor = LightColor_SeaPickle; + lightRange = 9.0; + mixWeight = 1.0; + break; + case BLOCK_SEA_PICKLE_WET_3: + lightColor = LightColor_SeaPickle; + lightRange = 12.0; + mixWeight = 1.0; + break; + case BLOCK_SEA_PICKLE_WET_4: + lightColor = LightColor_SeaPickle; + lightRange = 15.0; + mixWeight = 1.0; + break; + case BLOCK_SEA_LANTERN: + lightColor = vec3(0.553, 0.748, 0.859); + lightRange = 15.0; + break; + case BLOCK_SHROOMLIGHT: + lightColor = vec3(0.848, 0.469, 0.205); + lightRange = 15.0; + break; + case BLOCK_SMOKER_LIT: + lightColor = vec3(0.8, 0.7, 0.1); + lightRange = 13.0; + break; + case BLOCK_SOUL_FIRE: + lightColor = vec3(0.1, 0.6, 1.0); + lightRange = 10.0; + mixWeight = 1.0; + break; + case BLOCK_SOUL_LANTERN: + case BLOCK_SOUL_TORCH: + lightColor = vec3(0.1, 0.6, 1.0); + lightRange = 10.0; + mixWeight = 0.8; + break; + case BLOCK_TORCH: + lightColor = vec3(1.0, 0.6, 0.1); + lightRange = 14.0; + mixWeight = 0.8; + break; + + + case BLOCK_HONEY: + tintColor = vec3(0.984, 0.733, 0.251); + mixWeight = 1.0; + break; + case BLOCK_NETHER_PORTAL: + lightColor = vec3(0.502, 0.165, 0.831); + tintColor = vec3(0.502, 0.165, 0.831); + lightRange = 11.0; + mixWeight = 1.0; + break; + case BLOCK_SLIME: + tintColor = vec3(0.408, 0.725, 0.329); + mixWeight = 1.0; + break; + case BLOCK_GLASS_BLACK: + tintColor = vec3(0.3); + mixWeight = 1.0; + break; + case BLOCK_GLASS_BLUE: + tintColor = vec3(0.1, 0.1, 0.98); + mixWeight = 1.0; + break; + case BLOCK_GLASS_BROWN: + tintColor = vec3(0.566, 0.388, 0.148); + mixWeight = 1.0; + break; + case BLOCK_GLASS_CYAN: + tintColor = vec3(0.082, 0.533, 0.763); + mixWeight = 1.0; + break; + case BLOCK_GLASS_GRAY: + tintColor = vec3(0.4, 0.4, 0.4); + mixWeight = 1.0; + break; + case BLOCK_GLASS_GREEN: + tintColor = vec3(0.125, 0.808, 0.081); + mixWeight = 1.0; + break; + case BLOCK_GLASS_LIGHT_BLUE: + tintColor = vec3(0.320, 0.685, 0.955); + mixWeight = 1.0; + break; + case BLOCK_GLASS_LIGHT_GRAY: + tintColor = vec3(0.7); + mixWeight = 1.0; + break; + case BLOCK_GLASS_LIME: + tintColor = vec3(0.633, 0.924, 0.124); + mixWeight = 1.0; + break; + case BLOCK_GLASS_MAGENTA: + tintColor = vec3(0.698, 0.298, 0.847); + mixWeight = 1.0; + break; + case BLOCK_GLASS_ORANGE: + tintColor = vec3(0.919, 0.586, 0.185); + mixWeight = 1.0; + break; + case BLOCK_GLASS_PINK: + tintColor = vec3(0.949, 0.274, 0.497); + mixWeight = 1.0; + break; + case BLOCK_GLASS_PURPLE: + tintColor = vec3(0.578, 0.170, 0.904); + mixWeight = 1.0; + break; + case BLOCK_GLASS_RED: + tintColor = vec3(0.999, 0.188, 0.188); + mixWeight = 1.0; + break; + case BLOCK_GLASS_WHITE: + tintColor = vec3(0.96, 0.96, 0.96); + mixWeight = 1.0; + break; + case BLOCK_GLASS_YELLOW: + tintColor = vec3(0.965, 0.965, 0.123); + mixWeight = 1.0; + break; + + + case BLOCK_DOOR_N: + mixMask = BuildLpvMask(0u, 1u, 1u, 1u, 1u, 1u); + mixWeight = 0.8; + break; + case BLOCK_DOOR_E: + mixMask = BuildLpvMask(1u, 0u, 1u, 1u, 1u, 1u); + mixWeight = 0.8; + break; + case BLOCK_DOOR_S: + mixMask = BuildLpvMask(1u, 1u, 0u, 1u, 1u, 1u); + mixWeight = 0.8; + break; + case BLOCK_DOOR_W: + mixMask = BuildLpvMask(1u, 1u, 1u, 0u, 1u, 1u); + mixWeight = 0.8; + break; + + case BLOCK_SLAB_TOP: + mixMask = BuildLpvMask(1u, 1u, 1u, 1u, 0u, 1u); + mixWeight = 0.5; + break; + case BLOCK_SLAB_BOTTOM: + mixMask = BuildLpvMask(1u, 1u, 1u, 1u, 1u, 0u); + mixWeight = 0.5; + break; + + case BLOCK_TRAPDOOR_BOTTOM: + mixMask = BuildLpvMask(1u, 1u, 1u, 1u, 1u, 0u); + mixWeight = 0.8; + break; + case BLOCK_TRAPDOOR_TOP: + mixMask = BuildLpvMask(1u, 1u, 1u, 1u, 0u, 1u); + mixWeight = 0.8; + break; + case BLOCK_TRAPDOOR_N: + mixMask = BuildLpvMask(0u, 1u, 1u, 1u, 1u, 1u); + mixWeight = 0.8; + break; + case BLOCK_TRAPDOOR_E: + mixMask = BuildLpvMask(1u, 0u, 1u, 1u, 1u, 1u); + mixWeight = 0.8; + break; + case BLOCK_TRAPDOOR_S: + mixMask = BuildLpvMask(1u, 1u, 0u, 1u, 1u, 1u); + mixWeight = 0.8; + break; + case BLOCK_TRAPDOOR_W: + mixMask = BuildLpvMask(1u, 1u, 1u, 0u, 1u, 1u); + mixWeight = 0.8; + break; + } + + LpvBlockData block; + block.ColorRange = packUnorm4x8(vec4(lightColor, lightRange/255.0)); + block.MaskWeight = BuildBlockLpvData(mixMask, mixWeight); + block.Tint = packUnorm4x8(vec4(tintColor, 0.0)); + LpvBlockMap[blockId - LpvBlockMapOffset] = block; + #endif +} diff --git a/shaders/dimensions/shadowcomp.csh b/shaders/dimensions/shadowcomp.csh new file mode 100644 index 0000000..2693fc0 --- /dev/null +++ b/shaders/dimensions/shadowcomp.csh @@ -0,0 +1,157 @@ +layout (local_size_x = 8, local_size_y = 8, local_size_z = 8) in; + +#if LPV_SIZE == 8 + const ivec3 workGroups = ivec3(32, 32, 32); +#elif LPV_SIZE == 7 + const ivec3 workGroups = ivec3(16, 16, 16); +#elif LPV_SIZE == 6 + const ivec3 workGroups = ivec3(8, 8, 8); +#endif + +#ifdef IS_LPV_ENABLED + shared vec4 lpvSharedData[10*10*10]; + shared uint voxelSharedData[10*10*10]; + + const vec2 LpvBlockSkyFalloff = vec2(0.96, 0.96); + const ivec3 lpvFlatten = ivec3(1, 10, 100); + + #define EPSILON 1e-6 + + + uniform int frameCounter; + uniform vec3 cameraPosition; + uniform vec3 previousCameraPosition; + + #include "/lib/hsv.glsl" + #include "/lib/util.glsl" + #include "/lib/blocks.glsl" + #include "/lib/lpv_common.glsl" + #include "/lib/lpv_blocks.glsl" + #include "/lib/voxel_common.glsl" + + int sumOf(ivec3 vec) {return vec.x + vec.y + vec.z;} + + vec3 Lpv_RgbToHsv(const in vec3 lightColor, const in float lightRange) { + vec3 lightValue = RgbToHsv(lightColor); + lightValue.b = lightRange / LpvBlockSkyRange.x; + return lightValue; + } + + vec4 GetLpvValue(in ivec3 texCoord) { + if (clamp(texCoord, ivec3(0), ivec3(LpvSize) - 1) != texCoord) return vec4(0.0); + + vec4 lpvSample = (frameCounter % 2) == 0 + ? imageLoad(imgLpv2, texCoord) + : imageLoad(imgLpv1, texCoord); + + lpvSample.ba = exp2(lpvSample.ba * LpvBlockSkyRange) - 1.0; + lpvSample.rgb = HsvToRgb(lpvSample.rgb); + + return lpvSample; + } + + int getSharedIndex(ivec3 pos) { + return sumOf(pos * lpvFlatten); + } + + vec4 sampleShared(ivec3 pos, int mask_index) { + int shared_index = getSharedIndex(pos + 1); + + float mixWeight = 1.0; + uint mixMask = 0xFFFF; + uint blockId = voxelSharedData[shared_index]; + + if (blockId > 0 && blockId != BLOCK_EMPTY) + ParseBlockLpvData(LpvBlockMap[blockId - LpvBlockMapOffset].MaskWeight, mixMask, mixWeight); + + return lpvSharedData[shared_index] * ((mixMask >> mask_index) & 1u);// * mixWeight; + } + + vec4 mixNeighbours(const in ivec3 fragCoord, const in uint mask) { + vec4 nX1 = sampleShared(fragCoord + ivec3(-1, 0, 0), 1) * ((mask ) & 1u); + vec4 nX2 = sampleShared(fragCoord + ivec3( 1, 0, 0), 0) * ((mask >> 1) & 1u); + vec4 nY1 = sampleShared(fragCoord + ivec3( 0, -1, 0), 3) * ((mask >> 2) & 1u); + vec4 nY2 = sampleShared(fragCoord + ivec3( 0, 1, 0), 2) * ((mask >> 3) & 1u); + vec4 nZ1 = sampleShared(fragCoord + ivec3( 0, 0, -1), 5) * ((mask >> 4) & 1u); + vec4 nZ2 = sampleShared(fragCoord + ivec3( 0, 0, 1), 4) * ((mask >> 5) & 1u); + + const vec4 avgFalloff = (1.0/6.0) * LpvBlockSkyFalloff.xxxy; + return (nX1 + nX2 + nY1 + nY2 + nZ1 + nZ2) * avgFalloff; + } + + uint GetVoxelBlock(const in ivec3 voxelPos) { + if (clamp(voxelPos, ivec3(0), ivec3(VoxelSize3-1u)) != voxelPos) + return BLOCK_EMPTY; + + return imageLoad(imgVoxelMask, voxelPos).r; + } + + void PopulateSharedIndex(const in ivec3 imgCoordOffset, const in ivec3 workGroupOffset, const in uint i) { + ivec3 pos = workGroupOffset + ivec3(i / lpvFlatten) % 10; + + lpvSharedData[i] = GetLpvValue(imgCoordOffset + pos); + voxelSharedData[i] = GetVoxelBlock(pos); + } +#endif + + +////////////////////////////// VOID MAIN ////////////////////////////// + +void main() { + #ifdef IS_LPV_ENABLED + uvec3 chunkPos = gl_WorkGroupID * gl_WorkGroupSize; + if (any(greaterThanEqual(chunkPos, LpvSize3))) return; + + uint i = uint(gl_LocalInvocationIndex) * 2u; + if (i < 1000u) { + ivec3 imgCoordOffset = ivec3(floor(cameraPosition) - floor(previousCameraPosition)); + ivec3 workGroupOffset = ivec3(gl_WorkGroupID * gl_WorkGroupSize) - 1; + + PopulateSharedIndex(imgCoordOffset, workGroupOffset, i); + PopulateSharedIndex(imgCoordOffset, workGroupOffset, i + 1u); + } + + barrier(); + + ivec3 imgCoord = ivec3(gl_GlobalInvocationID); + if (any(greaterThanEqual(imgCoord, LpvSize3))) return; + + uint blockId = voxelSharedData[getSharedIndex(ivec3(gl_LocalInvocationID) + 1)]; + vec4 lightValue = vec4(0.0); + vec3 tintColor = vec3(1.0); + float mixWeight = 1.0; + uint mixMask = 0xFFFF; + + if (blockId > 0u) { + mixWeight = 0.0; + ParseBlockLpvData(LpvBlockMap[blockId - LpvBlockMapOffset].MaskWeight, mixMask, mixWeight); + + uint tintData = LpvBlockMap[blockId - LpvBlockMapOffset].Tint; + tintColor = unpackUnorm4x8(tintData).rgb; + } + + if (mixWeight > EPSILON) { + vec4 lightMixed = mixNeighbours(ivec3(gl_LocalInvocationID), mixMask); + lightMixed.rgb *= srgbToLinear(tintColor) * mixWeight; + lightValue += lightMixed; + } + + lightValue.rgb = RgbToHsv(lightValue.rgb); + lightValue.ba = log2(lightValue.ba + 1.0) / LpvBlockSkyRange; + + if (blockId > 0u) { + vec4 lightColorRange = unpackUnorm4x8(LpvBlockMap[blockId - LpvBlockMapOffset].ColorRange); + float lightRange = lightColorRange.a * 255.0; + + if (lightRange > EPSILON) { + vec3 lightColor = srgbToLinear(lightColorRange.rgb); + lightValue.rgb = Lpv_RgbToHsv(lightColor, lightRange); + } + } + + if (frameCounter % 2 == 0) + imageStore(imgLpv1, imgCoord, lightValue); + else + imageStore(imgLpv2, imgCoord, lightValue); + #endif +} diff --git a/shaders/lib/blocks.glsl b/shaders/lib/blocks.glsl index d59ec6a..b38013f 100644 --- a/shaders/lib/blocks.glsl +++ b/shaders/lib/blocks.glsl @@ -1,3 +1,5 @@ +#define BLOCK_EMPTY 0 + #define BLOCK_WATER 8 #define BLOCK_BEACON 1001 diff --git a/shaders/lib/lpv_render.glsl b/shaders/lib/lpv_render.glsl index e085b2c..25a3bec 100644 --- a/shaders/lib/lpv_render.glsl +++ b/shaders/lib/lpv_render.glsl @@ -1,9 +1,16 @@ +// LPV falloff curve +const float LpvBlockPower = 4.0; + +// LPV block brightness scale +const float LpvBlockBrightness = 3.0; + + vec4 SampleLpvNearest(const in ivec3 lpvPos) { vec4 lpvSample = (frameCounter % 2) == 0 ? imageLoad(imgLpv1, lpvPos) : imageLoad(imgLpv2, lpvPos); - lpvSample.b = pow(lpvSample.b, 4) * LpvBlockSkyRange.x; + lpvSample.b = pow(lpvSample.b, LpvBlockPower) * LpvBlockSkyRange.x; lpvSample.rgb = HsvToRgb(lpvSample.rgb); return lpvSample; @@ -37,7 +44,7 @@ vec4 SampleLpvLinear(const in vec3 lpvPos) { } vec3 GetLpvBlockLight(const in vec4 lpvSample) { - return 3.0 * lpvSample.rgb; + return LpvBlockBrightness * lpvSample.rgb; } float GetLpvSkyLight(const in vec4 lpvSample) { diff --git a/shaders/lib/voxel_common.glsl b/shaders/lib/voxel_common.glsl index eaa6e1c..2025bc2 100644 --- a/shaders/lib/voxel_common.glsl +++ b/shaders/lib/voxel_common.glsl @@ -4,10 +4,3 @@ const uint VoxelSize = uint(exp2(LPV_SIZE)); const uvec3 VoxelSize3 = uvec3(VoxelSize); const float voxelDistance = 64.0; - -#define BLOCK_EMPTY 0 - -ivec3 GetVoxelIndex(const in vec3 playerPos) { - vec3 cameraOffset = fract(cameraPosition); - return ivec3(floor(playerPos + cameraOffset) + VoxelSize3/2u); -} diff --git a/shaders/lib/voxel_read.glsl b/shaders/lib/voxel_read.glsl deleted file mode 100644 index a8a4e18..0000000 --- a/shaders/lib/voxel_read.glsl +++ /dev/null @@ -1,6 +0,0 @@ -uint GetVoxelBlock(const in ivec3 voxelPos) { - if (clamp(voxelPos, ivec3(0), ivec3(VoxelSize3-1u)) != voxelPos) - return BLOCK_EMPTY; - - return imageLoad(imgVoxelMask, voxelPos).r; -} diff --git a/shaders/lib/voxel_write.glsl b/shaders/lib/voxel_write.glsl index b9705b6..ccd9ced 100644 --- a/shaders/lib/voxel_write.glsl +++ b/shaders/lib/voxel_write.glsl @@ -1,3 +1,8 @@ +ivec3 GetVoxelIndex(const in vec3 playerPos) { + vec3 cameraOffset = fract(cameraPosition); + return ivec3(floor(playerPos + cameraOffset) + VoxelSize3/2u); +} + void SetVoxelBlock(const in vec3 playerPos, const in uint blockId) { ivec3 voxelPos = GetVoxelIndex(playerPos); if (clamp(voxelPos, ivec3(0), ivec3(VoxelSize-1u)) != voxelPos) return; diff --git a/shaders/shaders.properties b/shaders/shaders.properties index 2b6a536..c6410b2 100644 --- a/shaders/shaders.properties +++ b/shaders/shaders.properties @@ -19,6 +19,7 @@ iris.features.optional=ENTITY_TRANSLUCENT REVERSED_CULLING COMPUTE_SHADERS CUSTO #endif #ifdef LPV_ENABLED + shadow.enabled = true shadow.culling = reversed #endif diff --git a/shaders/world-1/setup.csh b/shaders/world-1/setup.csh new file mode 100644 index 0000000..05c4315 --- /dev/null +++ b/shaders/world-1/setup.csh @@ -0,0 +1,7 @@ +#version 430 compatibility + +#define RENDER_SETUP + +#include "/lib/settings.glsl" + +#include "/dimensions/setup.csh" diff --git a/shaders/world-1/shadowcomp.csh b/shaders/world-1/shadowcomp.csh new file mode 100644 index 0000000..23b38a8 --- /dev/null +++ b/shaders/world-1/shadowcomp.csh @@ -0,0 +1,5 @@ +#version 430 compatibility + +#include "/lib/settings.glsl" + +#include "/dimensions/shadowcomp.csh" diff --git a/shaders/world0/setup.csh b/shaders/world0/setup.csh index 06b370f..05c4315 100644 --- a/shaders/world0/setup.csh +++ b/shaders/world0/setup.csh @@ -4,316 +4,4 @@ #include "/lib/settings.glsl" -layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in; - -const ivec3 workGroups = ivec3(4, 5, 1); - -#ifdef IS_LPV_ENABLED - #include "/lib/blocks.glsl" - #include "/lib/lpv_blocks.glsl" - - const vec3 LightColor_Candles = vec3(1.0, 0.4, 0.1); - const vec3 LightColor_SeaPickle = vec3(0.283, 0.394, 0.212); - - uint BuildLpvMask(const in uint north, const in uint east, const in uint south, const in uint west, const in uint up, const in uint down) { - return east | (west << 1) | (down << 2) | (up << 3) | (south << 4) | (north << 5); - } -#endif - - -void main() { - #ifdef IS_LPV_ENABLED - uint blockId = uint(gl_GlobalInvocationID.x + gl_GlobalInvocationID.y * 32 + LpvBlockMapOffset); - //if (blockId >= 1280) return; - - vec3 lightColor = vec3(0.0); - float lightRange = 0.0; - float mixWeight = 0.0; - uint mixMask = 0xFFFF; - vec3 tintColor = vec3(1.0); - - switch (blockId) { - case BLOCK_BEACON: - lightColor = vec3(1.0); - lightRange = 15.0; - break; - case BLOCK_CANDLES_LIT_1: - lightColor = LightColor_Candles; - lightRange = 3.0; - mixWeight = 1.0; - break; - case BLOCK_CANDLES_LIT_2: - lightColor = LightColor_Candles; - lightRange = 6.0; - mixWeight = 1.0; - break; - case BLOCK_CANDLES_LIT_3: - lightColor = LightColor_Candles; - lightRange = 9.0; - mixWeight = 1.0; - break; - case BLOCK_CANDLES_LIT_4: - lightColor = LightColor_Candles; - lightRange = 12.0; - mixWeight = 1.0; - break; - case BLOCK_CAVE_VINE_BERRIES: - lightColor = vec3(0.717, 0.541, 0.188); - lightRange = 14.0; - mixWeight = 1.0; - break; - case BLOCK_CONDUIT: - lightColor = vec3(1.0); - lightRange = 15.0; - break; - case BLOCK_END_GATEWAY: - lightColor = vec3(1.0); - lightRange = 15.0; - break; - case BLOCK_END_ROD: - lightColor = vec3(0.957, 0.929, 0.875); - lightRange = 14.0; - break; - case BLOCK_FIRE: - lightColor = vec3(0.864, 0.598, 0.348); - lightRange = 15.0; - mixWeight = 1.0; - break; - case BLOCK_FROGLIGHT_OCHRE: - lightColor = vec3(0.768, 0.648, 0.108); - lightRange = 15.0; - break; - case BLOCK_FROGLIGHT_PEARLESCENT: - lightColor = vec3(0.737, 0.435, 0.658); - lightRange = 15.0; - break; - case BLOCK_FROGLIGHT_VERDANT: - lightColor = vec3(0.463, 0.763, 0.409); - lightRange = 15.0; - break; - case BLOCK_GLOWSTONE: - lightColor = vec3(0.747, 0.594, 0.326); - lightRange = 15.0; - break; - case BLOCK_JACK_O_LANTERN: - lightColor = vec3(1.0, 0.7, 0.1); - lightRange = 15.0; - break; - case BLOCK_LANTERN: - lightColor = vec3(1.0, 0.7, 0.1); - lightRange = 15.0; - mixWeight = 0.8; - break; - case BLOCK_LAVA: - lightColor = vec3(0.804, 0.424, 0.149); - lightRange = 15.0; - break; - case BLOCK_MAGMA: - lightColor = vec3(0.747, 0.323, 0.110); - lightRange = 3.0; - break; - case BLOCK_REDSTONE_LAMP_LIT: - lightColor = vec3(0.953, 0.796, 0.496); - lightRange = 15.0; - break; - case BLOCK_REDSTONE_TORCH_LIT: - lightColor = vec3(0.939, 0.305, 0.164); - lightRange = 7.0; - break; - case BLOCK_RESPAWN_ANCHOR_4: - lightColor = vec3(1.0, 0.2, 1.0); - lightRange = 15.0; - break; - case BLOCK_SCULK_SENSOR_ACTIVE: - lightColor = vec3(0.1, 0.4, 1.0); - lightRange = 1.0; - break; - case BLOCK_SEA_PICKLE_WET_1: - lightColor = LightColor_SeaPickle; - lightRange = 6.0; - mixWeight = 1.0; - break; - case BLOCK_SEA_PICKLE_WET_2: - lightColor = LightColor_SeaPickle; - lightRange = 9.0; - mixWeight = 1.0; - break; - case BLOCK_SEA_PICKLE_WET_3: - lightColor = LightColor_SeaPickle; - lightRange = 12.0; - mixWeight = 1.0; - break; - case BLOCK_SEA_PICKLE_WET_4: - lightColor = LightColor_SeaPickle; - lightRange = 15.0; - mixWeight = 1.0; - break; - case BLOCK_SEA_LANTERN: - lightColor = vec3(0.553, 0.748, 0.859); - lightRange = 15.0; - break; - case BLOCK_SHROOMLIGHT: - lightColor = vec3(0.848, 0.469, 0.205); - lightRange = 15.0; - break; - case BLOCK_SMOKER_LIT: - lightColor = vec3(0.8, 0.7, 0.1); - lightRange = 13.0; - break; - case BLOCK_SOUL_FIRE: - lightColor = vec3(0.1, 0.6, 1.0); - lightRange = 10.0; - mixWeight = 1.0; - break; - case BLOCK_SOUL_LANTERN: - case BLOCK_SOUL_TORCH: - lightColor = vec3(0.1, 0.6, 1.0); - lightRange = 10.0; - mixWeight = 0.8; - break; - case BLOCK_TORCH: - lightColor = vec3(1.0, 0.6, 0.1); - lightRange = 14.0; - mixWeight = 0.8; - break; - - - case BLOCK_HONEY: - tintColor = vec3(0.984, 0.733, 0.251); - mixWeight = 1.0; - break; - case BLOCK_NETHER_PORTAL: - lightColor = vec3(0.502, 0.165, 0.831); - tintColor = vec3(0.502, 0.165, 0.831); - lightRange = 11.0; - mixWeight = 1.0; - break; - case BLOCK_SLIME: - tintColor = vec3(0.408, 0.725, 0.329); - mixWeight = 1.0; - break; - case BLOCK_GLASS_BLACK: - tintColor = vec3(0.3); - mixWeight = 1.0; - break; - case BLOCK_GLASS_BLUE: - tintColor = vec3(0.1, 0.1, 0.98); - mixWeight = 1.0; - break; - case BLOCK_GLASS_BROWN: - tintColor = vec3(0.566, 0.388, 0.148); - mixWeight = 1.0; - break; - case BLOCK_GLASS_CYAN: - tintColor = vec3(0.082, 0.533, 0.763); - mixWeight = 1.0; - break; - case BLOCK_GLASS_GRAY: - tintColor = vec3(0.4, 0.4, 0.4); - mixWeight = 1.0; - break; - case BLOCK_GLASS_GREEN: - tintColor = vec3(0.125, 0.808, 0.081); - mixWeight = 1.0; - break; - case BLOCK_GLASS_LIGHT_BLUE: - tintColor = vec3(0.320, 0.685, 0.955); - mixWeight = 1.0; - break; - case BLOCK_GLASS_LIGHT_GRAY: - tintColor = vec3(0.7); - mixWeight = 1.0; - break; - case BLOCK_GLASS_LIME: - tintColor = vec3(0.633, 0.924, 0.124); - mixWeight = 1.0; - break; - case BLOCK_GLASS_MAGENTA: - tintColor = vec3(0.698, 0.298, 0.847); - mixWeight = 1.0; - break; - case BLOCK_GLASS_ORANGE: - tintColor = vec3(0.919, 0.586, 0.185); - mixWeight = 1.0; - break; - case BLOCK_GLASS_PINK: - tintColor = vec3(0.949, 0.274, 0.497); - mixWeight = 1.0; - break; - case BLOCK_GLASS_PURPLE: - tintColor = vec3(0.578, 0.170, 0.904); - mixWeight = 1.0; - break; - case BLOCK_GLASS_RED: - tintColor = vec3(0.999, 0.188, 0.188); - mixWeight = 1.0; - break; - case BLOCK_GLASS_WHITE: - tintColor = vec3(0.96, 0.96, 0.96); - mixWeight = 1.0; - break; - case BLOCK_GLASS_YELLOW: - tintColor = vec3(0.965, 0.965, 0.123); - mixWeight = 1.0; - break; - - - case BLOCK_DOOR_N: - mixMask = BuildLpvMask(0u, 1u, 1u, 1u, 1u, 1u); - mixWeight = 0.8; - break; - case BLOCK_DOOR_E: - mixMask = BuildLpvMask(1u, 0u, 1u, 1u, 1u, 1u); - mixWeight = 0.8; - break; - case BLOCK_DOOR_S: - mixMask = BuildLpvMask(1u, 1u, 0u, 1u, 1u, 1u); - mixWeight = 0.8; - break; - case BLOCK_DOOR_W: - mixMask = BuildLpvMask(1u, 1u, 1u, 0u, 1u, 1u); - mixWeight = 0.8; - break; - - case BLOCK_SLAB_TOP: - mixMask = BuildLpvMask(1u, 1u, 1u, 1u, 0u, 1u); - mixWeight = 0.5; - break; - case BLOCK_SLAB_BOTTOM: - mixMask = BuildLpvMask(1u, 1u, 1u, 1u, 1u, 0u); - mixWeight = 0.5; - break; - - case BLOCK_TRAPDOOR_BOTTOM: - mixMask = BuildLpvMask(1u, 1u, 1u, 1u, 1u, 0u); - mixWeight = 0.8; - break; - case BLOCK_TRAPDOOR_TOP: - mixMask = BuildLpvMask(1u, 1u, 1u, 1u, 0u, 1u); - mixWeight = 0.8; - break; - case BLOCK_TRAPDOOR_N: - mixMask = BuildLpvMask(0u, 1u, 1u, 1u, 1u, 1u); - mixWeight = 0.8; - break; - case BLOCK_TRAPDOOR_E: - mixMask = BuildLpvMask(1u, 0u, 1u, 1u, 1u, 1u); - mixWeight = 0.8; - break; - case BLOCK_TRAPDOOR_S: - mixMask = BuildLpvMask(1u, 1u, 0u, 1u, 1u, 1u); - mixWeight = 0.8; - break; - case BLOCK_TRAPDOOR_W: - mixMask = BuildLpvMask(1u, 1u, 1u, 0u, 1u, 1u); - mixWeight = 0.8; - break; - } - - LpvBlockData block; - block.ColorRange = packUnorm4x8(vec4(lightColor, lightRange/255.0)); - block.MaskWeight = BuildBlockLpvData(mixMask, mixWeight); - block.Tint = packUnorm4x8(vec4(tintColor, 0.0)); - LpvBlockMap[blockId - LpvBlockMapOffset] = block; - #endif -} +#include "/dimensions/setup.csh" diff --git a/shaders/world0/shadowcomp.csh b/shaders/world0/shadowcomp.csh index d4b5a3b..23b38a8 100644 --- a/shaders/world0/shadowcomp.csh +++ b/shaders/world0/shadowcomp.csh @@ -2,166 +2,4 @@ #include "/lib/settings.glsl" -layout (local_size_x = 8, local_size_y = 8, local_size_z = 8) in; - -#if LPV_SIZE == 8 - const ivec3 workGroups = ivec3(32, 32, 32); -#elif LPV_SIZE == 7 - const ivec3 workGroups = ivec3(16, 16, 16); -#elif LPV_SIZE == 6 - const ivec3 workGroups = ivec3(8, 8, 8); -#endif - -#ifdef IS_LPV_ENABLED - shared vec4 lpvSharedData[10*10*10]; - shared uint voxelSharedData[10*10*10]; - - const vec2 LpvBlockSkyFalloff = vec2(0.96, 0.96); - const ivec3 lpvFlatten = ivec3(1, 10, 100); - - #define GAMMA 2.2 - #define EPSILON 1e-6 - - - uniform int frameCounter; - uniform vec3 cameraPosition; - uniform vec3 previousCameraPosition; - - #include "/lib/hsv.glsl" - #include "/lib/blocks.glsl" - #include "/lib/lpv_common.glsl" - #include "/lib/lpv_blocks.glsl" - #include "/lib/voxel_common.glsl" - #include "/lib/voxel_read.glsl" - - int sumOf(ivec3 vec) {return vec.x + vec.y + vec.z;} - - vec3 RGBToLinear(const in vec3 color) { - return pow(color, vec3(GAMMA)); - } - - vec3 Lpv_RgbToHsv(const in vec3 lightColor, const in float lightRange) { - vec3 lightValue = RgbToHsv(lightColor); - lightValue.b = lightRange / LpvBlockSkyRange.x; - return lightValue; - } - - vec4 GetLpvValue(in ivec3 texCoord) { - if (clamp(texCoord, ivec3(0), ivec3(LpvSize) - 1) != texCoord) return vec4(0.0); - - vec4 lpvSample = (frameCounter % 2) == 0 - ? imageLoad(imgLpv2, texCoord) - : imageLoad(imgLpv1, texCoord); - - lpvSample.ba = exp2(lpvSample.ba * LpvBlockSkyRange) - 1.0; - lpvSample.rgb = HsvToRgb(lpvSample.rgb); - - return lpvSample; - } - - int getSharedCoord(ivec3 pos) { - return sumOf(pos * lpvFlatten); - } - - vec4 sampleShared(ivec3 pos) { - return lpvSharedData[getSharedCoord(pos + 1)]; - } - - vec4 sampleShared(ivec3 pos, int mask_index) { - int shared_index = getSharedCoord(pos + 1); - - float mixWeight = 1.0; - uint mixMask = 0xFFFF; - uint blockId = voxelSharedData[shared_index]; - - if (blockId > 0 && blockId != BLOCK_EMPTY) - ParseBlockLpvData(LpvBlockMap[blockId - LpvBlockMapOffset].MaskWeight, mixMask, mixWeight); - - return lpvSharedData[shared_index] * ((mixMask >> mask_index) & 1u);// * mixWeight; - } - - vec4 mixNeighbours(const in ivec3 fragCoord, const in uint mask) { - vec4 nX1 = sampleShared(fragCoord + ivec3(-1, 0, 0), 1) * ((mask ) & 1u); - vec4 nX2 = sampleShared(fragCoord + ivec3( 1, 0, 0), 0) * ((mask >> 1) & 1u); - vec4 nY1 = sampleShared(fragCoord + ivec3( 0, -1, 0), 3) * ((mask >> 2) & 1u); - vec4 nY2 = sampleShared(fragCoord + ivec3( 0, 1, 0), 2) * ((mask >> 3) & 1u); - vec4 nZ1 = sampleShared(fragCoord + ivec3( 0, 0, -1), 5) * ((mask >> 4) & 1u); - vec4 nZ2 = sampleShared(fragCoord + ivec3( 0, 0, 1), 4) * ((mask >> 5) & 1u); - - const vec4 avgFalloff = (1.0/6.0) * LpvBlockSkyFalloff.xxxy; - return (nX1 + nX2 + nY1 + nY2 + nZ1 + nZ2) * avgFalloff; - } - - void PopulateSharedIndex(const in ivec3 imgCoordOffset, const in ivec3 workGroupOffset, const in uint i) { - ivec3 pos = workGroupOffset + ivec3(i / lpvFlatten) % 10; - - //ivec3 lpvPos = imgCoordOffset + pos; - lpvSharedData[i] = GetLpvValue(imgCoordOffset + pos); - voxelSharedData[i] = GetVoxelBlock(pos); - } - - void PopulateShared() { - uint i = uint(gl_LocalInvocationIndex) * 2u; - if (i >= 1000u) return; - - ivec3 imgCoordOffset = ivec3(floor(cameraPosition) - floor(previousCameraPosition)); - ivec3 workGroupOffset = ivec3(gl_WorkGroupID * gl_WorkGroupSize) - 1; - - PopulateSharedIndex(imgCoordOffset, workGroupOffset, i); - PopulateSharedIndex(imgCoordOffset, workGroupOffset, i + 1u); - } -#endif - - -////////////////////////////// VOID MAIN ////////////////////////////// - -void main() { - #ifdef IS_LPV_ENABLED - uvec3 chunkPos = gl_WorkGroupID * gl_WorkGroupSize; - if (any(greaterThanEqual(chunkPos, LpvSize3))) return; - - PopulateShared(); - barrier(); - - ivec3 imgCoord = ivec3(gl_GlobalInvocationID); - if (any(greaterThanEqual(imgCoord, LpvSize3))) return; - - vec4 lightValue = vec4(0.0); - uint mixMask = 0xFFFF; - - uint blockId = voxelSharedData[getSharedCoord(ivec3(gl_LocalInvocationID) + 1)]; - float mixWeight = blockId == BLOCK_EMPTY ? 1.0 : 0.0; - vec3 tintColor = vec3(1.0); - - if (blockId > 0u) {//&& blockId != BLOCK_EMPTY) - ParseBlockLpvData(LpvBlockMap[blockId - LpvBlockMapOffset].MaskWeight, mixMask, mixWeight); - - uint tintData = LpvBlockMap[blockId - LpvBlockMapOffset].Tint; - tintColor = unpackUnorm4x8(tintData).rgb; - } - - if (mixWeight > EPSILON) { - vec4 lightMixed = mixNeighbours(ivec3(gl_LocalInvocationID), mixMask); - lightMixed.rgb *= RGBToLinear(tintColor) * mixWeight; - lightValue += lightMixed; - } - - lightValue.rgb = RgbToHsv(lightValue.rgb); - lightValue.ba = log2(lightValue.ba + 1.0) / LpvBlockSkyRange; - - if (blockId > 0u) {// && blockId != BLOCK_EMPTY) { - vec4 lightColorRange = unpackUnorm4x8(LpvBlockMap[blockId - LpvBlockMapOffset].ColorRange); - float lightRange = lightColorRange.a * 255.0; - - if (lightRange > EPSILON) { - vec3 lightColor = RGBToLinear(lightColorRange.rgb); - lightValue.rgb = Lpv_RgbToHsv(lightColor, lightRange); - } - } - - if (frameCounter % 2 == 0) - imageStore(imgLpv1, imgCoord, lightValue); - else - imageStore(imgLpv2, imgCoord, lightValue); - #endif -} +#include "/dimensions/shadowcomp.csh" diff --git a/shaders/world1/setup.csh b/shaders/world1/setup.csh new file mode 100644 index 0000000..05c4315 --- /dev/null +++ b/shaders/world1/setup.csh @@ -0,0 +1,7 @@ +#version 430 compatibility + +#define RENDER_SETUP + +#include "/lib/settings.glsl" + +#include "/dimensions/setup.csh" diff --git a/shaders/world1/shadowcomp.csh b/shaders/world1/shadowcomp.csh new file mode 100644 index 0000000..23b38a8 --- /dev/null +++ b/shaders/world1/shadowcomp.csh @@ -0,0 +1,5 @@ +#version 430 compatibility + +#include "/lib/settings.glsl" + +#include "/dimensions/shadowcomp.csh" From 2c383a7720ed7f931d52e16bd7a02a7deba0cd95 Mon Sep 17 00:00:00 2001 From: NULL511 Date: Fri, 3 May 2024 11:39:21 -0400 Subject: [PATCH 18/22] misc fixes; better light colors --- shaders/block.properties | 74 +++++++++++++++++-------------- shaders/dimensions/composite1.fsh | 9 +++- shaders/dimensions/setup.csh | 34 ++++++++++++-- shaders/lib/blocks.glsl | 71 +++++++++++++++-------------- shaders/lib/lpv_render.glsl | 4 +- shaders/lib/settings.glsl | 1 + shaders/shaders.properties | 2 +- 7 files changed, 119 insertions(+), 76 deletions(-) diff --git a/shaders/block.properties b/shaders/block.properties index 032e971..cd72933 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -15,7 +15,8 @@ block.10004 = minecraft:flowering_azalea minecraft:tall_seagrass minecraft:seagrass minecraft:kelp minecraft:large_fern:half=lower minecraft:tall_grass minecraft:tall_seagrass minecraft:kelp_plant minecraft:peony minecraft:rose_bush minecraft:lilac minecraft:sunflower:half=lower minecraft:packed_ice minecraft:blue_ice minecraft:melon_stem minecraft:pumpkin_stem minecraft:attached_melon_stem minecraft:attached_pumpkin_stem minecraft:lily_pad westerosblocks:blackberry_bush westerosblocks:blueberry_bush westerosblocks:raspberry_bush westerosblocks:juniper_bush westerosblocks:red_rose_bush westerosblocks:pink_rose_bush westerosblocks:white_rose_bush westerosblocks:yellow_rose_bush westerosblocks:yellow_wildflowers westerosblocks:green_spiny_herb westerosblocks:green_leafy_herb westerosblocks:orange_marigolds westerosblocks:orange_trollius westerosblocks:blue_forgetmenots westerosblocks:pink_wildflowers westerosblocks:yellow_tansy westerosblocks:blue_flax westerosblocks:white_daisies westerosblocks:yellow_daisies westerosblocks:green_scrub_grass westerosblocks:dead_scrub_grass westerosblocks:yellow_bedstraw westerosblocks:orange_bells westerosblocks:blue_bells westerosblocks:blue_swamp_bells westerosblocks:yellow_buttercups westerosblocks:orange_bog_asphodel westerosblocks:yellow_lupine westerosblocks:blue_hyacinth westerosblocks:pink_thistle westerosblocks:yellow_dandelions westerosblocks:yellow_daffodils westerosblocks:yellow_roses westerosblocks:strawberry_bush westerosblocks:white_lilyofthevalley westerosblocks:yellow_bells westerosblocks:yellow_sunflower westerosblocks:white_roses westerosblocks:red_dark_roses westerosblocks:yellow_hellebore westerosblocks:meadow_fescue westerosblocks:red_poppies westerosblocks:red_roses westerosblocks:purple_pansies westerosblocks:purple_roses westerosblocks:orange_sun_star westerosblocks:pink_primrose westerosblocks:red_aster westerosblocks:blue_chicory westerosblocks:red_flowering_spiny_herb westerosblocks:purple_foxglove westerosblocks:pink_allium westerosblocks:purple_violets westerosblocks:white_chamomile westerosblocks:red_tulips westerosblocks:white_peony westerosblocks:purple_alpine_sowthistle westerosblocks:red_carnations westerosblocks:magenta_roses westerosblocks:red_chrysanthemum westerosblocks:blue_orchid westerosblocks:yellow_rudbeckia westerosblocks:pink_tulips westerosblocks:cranberry_bush westerosblocks:purple_lavender westerosblocks:red_sourleaf_bush westerosblocks:pink_sweet_peas westerosblocks:red_sorrel westerosblocks:pink_roses westerosblocks:unshaded_grass westerosblocks:cow_parsely westerosblocks:bracken westerosblocks:lady_fern westerosblocks:nettle westerosblocks:dead_bracken westerosblocks:fireweed westerosblocks:heather westerosblocks:red_fern westerosblocks:dock_leaf westerosblocks:jasmine_vines westerosblocks:dappled_moss westerosblocks:cushion_moss_wall westerosblocks:hemp_short westerosblocks:hemp_tall westerosblocks:hemp_dense westerosblocks:crop_carrots westerosblocks:crop_wheat westerosblocks:crop_turnips westerosblocks:crop_peas westerosblocks:cattails westerosblocks:jungle_tall_fern westerosblocks:jungle_tall_grass westerosblocks:savanna_tall_grass \ ## weak sss - block.10006 = minecraft:amethyst_block minecraft:budding_amethyst minecraft:small_amethyst_bud minecraft:medium_amethyst_bud minecraft:large_amethyst_bud minecraft:amethyst_cluster minecraft:pitcher_plant minecraft:small_dripleaf minecraft:grass_block:snowy=true minecraft:snow_block minecraft:snow powder_snow cobweb red_mushroom_block brown_mushroom_block weeping_vines weeping_vines_plant twisting_vines twisting_vines_plant vine tube_coral tube_coral_block tube_coral_fan tube_coral_wall_fan horn_coral horn_coral_block horn_coral_fan horn_coral_wall_fan fire_coral fire_coral_block fire_coral_fan fire_coral_wall_fan dead_brain_coral dead_brain_coral_block dead_brain_coral_fan dead_brain_coral_wall_fan dead_bubble_coral dead_bubble_coral_block dead_bubble_coral_fan dead_bubble_coral_wall_fan dead_bush dead_fire_coral dead_fire_coral_block dead_fire_coral_fan dead_fire_coral_wall_fan dead_horn_coral dead_horn_coral_block dead_horn_coral_fan dead_horn_coral_wall_fan dead_tube_coral dead_tube_coral_block dead_tube_coral_fan dead_tube_coral_wall_fan bubble_coral bubble_coral_block bubble_coral_fan bubble_coral_wall_fan brain_coral brain_coral_block brain_coral_fan brain_coral_wall_fan bamboo bamboo_sapling minecraft:spore_blossom minecraft:cave_vines minecraft:cave_vines_plant minecraft:glow_lichen minecraft:melon minecraft:pumpkin minecraft:big_dripleaf minecraft:big_dripleaf_stem minecraft:cactus minecraft:hay_block minecraft:brown_mushroom minecraft:mushroom_stem minecraft:sugar_cane minecraft:crimson_fungus minecraft:warped_fungus minecraft:sea_pickle:waterlogged=false minecraft:honeycomb_block + block.10006 = minecraft:amethyst_block minecraft:budding_amethyst minecraft:small_amethyst_bud minecraft:pitcher_plant minecraft:small_dripleaf minecraft:grass_block:snowy=true minecraft:snow_block minecraft:snow powder_snow cobweb red_mushroom_block brown_mushroom_block weeping_vines weeping_vines_plant twisting_vines twisting_vines_plant vine tube_coral tube_coral_block tube_coral_fan tube_coral_wall_fan horn_coral horn_coral_block horn_coral_fan horn_coral_wall_fan fire_coral fire_coral_block fire_coral_fan fire_coral_wall_fan dead_brain_coral dead_brain_coral_block dead_brain_coral_fan dead_brain_coral_wall_fan dead_bubble_coral dead_bubble_coral_block dead_bubble_coral_fan dead_bubble_coral_wall_fan dead_bush dead_fire_coral dead_fire_coral_block dead_fire_coral_fan dead_fire_coral_wall_fan dead_horn_coral dead_horn_coral_block dead_horn_coral_fan dead_horn_coral_wall_fan dead_tube_coral dead_tube_coral_block dead_tube_coral_fan dead_tube_coral_wall_fan bubble_coral bubble_coral_block bubble_coral_fan bubble_coral_wall_fan brain_coral brain_coral_block brain_coral_fan brain_coral_wall_fan bamboo bamboo_sapling minecraft:spore_blossom minecraft:cave_vines:berries=false minecraft:cave_vines_plant:berries=false minecraft:glow_lichen minecraft:melon minecraft:pumpkin minecraft:big_dripleaf minecraft:big_dripleaf_stem minecraft:cactus minecraft:hay_block minecraft:brown_mushroom minecraft:mushroom_stem minecraft:sugar_cane minecraft:crimson_fungus minecraft:warped_fungus minecraft:sea_pickle:waterlogged=false minecraft:honeycomb_block + # removed: medium_amethyst_bud large_amethyst_bud amethyst_cluster ## weak sss block.200 = minecraft:white_wool minecraft:orange_wool minecraft:magenta_wool minecraft:light_blue_wool minecraft:yellow_wool minecraft:lime_wool minecraft:pink_wool minecraft:gray_wool minecraft:light_gray_wool minecraft:cyan_wool minecraft:purple_wool minecraft:blue_wool minecraft:brown_wool minecraft:green_wool minecraft:red_wool minecraft:black_wool minecraft:orange_carpet minecraft:magenta_carpet minecraft:light_blue_carpet minecraft:yellow_carpet minecraft:lime_carpet minecraft:pink_carpet minecraft:gray_carpet minecraft:light_gray_carpet minecraft:cyan_carpet minecraft:purple_carpet minecraft:blue_carpet minecraft:brown_carpet minecraft:green_carpet minecraft:red_carpet minecraft:black_carpet 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 @@ -30,39 +31,44 @@ block.10008 = minecraft:grass_block:snowy=false ####### ----- lightsources ----- ####### - block.1001 = beacon - block.1002 = candle:candles=1:lit=true black_candle:candles=1:lit=true blue_candle:candles=1:lit=true brown_candle:candles=1:lit=true cyan_candle:candles=1:lit=true gray_candle:candles=1:lit=true green_candle:candles=1:lit=true light_blue_candle:candles=1:lit=true light_gray_candle:candles=1:lit=true lime_candle:candles=1:lit=true magenta_candle:candles=1:lit=true orange_candle:candles=1:lit=true pink_candle:candles=1:lit=true purple_candle:candles=1:lit=true red_candle:candles=1:lit=true white_candle:candles=1:lit=true yellow_candle:candles=1:lit=true - block.1003 = candle:candles=2:lit=true black_candle:candles=2:lit=true blue_candle:candles=2:lit=true brown_candle:candles=2:lit=true cyan_candle:candles=2:lit=true gray_candle:candles=2:lit=true green_candle:candles=2:lit=true light_blue_candle:candles=2:lit=true light_gray_candle:candles=2:lit=true lime_candle:candles=2:lit=true magenta_candle:candles=2:lit=true orange_candle:candles=2:lit=true pink_candle:candles=2:lit=true purple_candle:candles=2:lit=true red_candle:candles=2:lit=true white_candle:candles=2:lit=true yellow_candle:candles=2:lit=true - block.1004 = candle:candles=3:lit=true black_candle:candles=3:lit=true blue_candle:candles=3:lit=true brown_candle:candles=3:lit=true cyan_candle:candles=3:lit=true gray_candle:candles=3:lit=true green_candle:candles=3:lit=true light_blue_candle:candles=3:lit=true light_gray_candle:candles=3:lit=true lime_candle:candles=3:lit=true magenta_candle:candles=3:lit=true orange_candle:candles=3:lit=true pink_candle:candles=3:lit=true purple_candle:candles=3:lit=true red_candle:candles=3:lit=true white_candle:candles=3:lit=true yellow_candle:candles=3:lit=true - block.1005 = candle:candles=4:lit=true black_candle:candles=4:lit=true blue_candle:candles=4:lit=true brown_candle:candles=4:lit=true cyan_candle:candles=4:lit=true gray_candle:candles=4:lit=true green_candle:candles=4:lit=true light_blue_candle:candles=4:lit=true light_gray_candle:candles=4:lit=true lime_candle:candles=4:lit=true magenta_candle:candles=4:lit=true orange_candle:candles=4:lit=true pink_candle:candles=4:lit=true purple_candle:candles=4:lit=true red_candle:candles=4:lit=true white_candle:candles=4:lit=true yellow_candle:candles=4:lit=true - block.1006 = cave_vines_plant:berries=true cave_vines:berries=true - block.1007 = conduit - block.1008 = end_gateway - block.1009 = end_rod - block.1010 = fire campfire:lit=true - block.1011 = ochre_froglight - block.1012 = pearlescent_froglight - block.1013 = verdant_froglight - block.1014 = glowstone - block.1015 = jack_o_lantern - block.1016 = lantern - block.1017 = lava - block.1018 = magma_block - block.1019 = redstone_lamp:lit=true - block.1020 = redstone_torch:lit=true redstone_wall_torch:lit=true - block.1021 = respawn_anchor:charges=4 - block.1022 = sculk_sensor:sculk_sensor_phase=active - block.1023 = sea_pickle:waterlogged=true:pickles=1 - block.1024 = sea_pickle:waterlogged=true:pickles=2 - block.1025 = sea_pickle:waterlogged=true:pickles=3 - block.1026 = sea_pickle:waterlogged=true:pickles=4 - block.1027 = sea_lantern - block.1028 = shroomlight - block.1029 = smoker:lit=true - block.1030 = soul_fire soul_campfire:lit=true - block.1031 = soul_lantern - block.1032 = soul_torch soul_wall_torch - block.1033 = torch wall_torch + block.1001 = large_amethyst_bud + block.1002 = medium_amethyst_bud + block.1003 = amethyst_cluster + block.1004 = beacon + block.1005 = candle:candles=1:lit=true black_candle:candles=1:lit=true blue_candle:candles=1:lit=true brown_candle:candles=1:lit=true cyan_candle:candles=1:lit=true gray_candle:candles=1:lit=true green_candle:candles=1:lit=true light_blue_candle:candles=1:lit=true light_gray_candle:candles=1:lit=true lime_candle:candles=1:lit=true magenta_candle:candles=1:lit=true orange_candle:candles=1:lit=true pink_candle:candles=1:lit=true purple_candle:candles=1:lit=true red_candle:candles=1:lit=true white_candle:candles=1:lit=true yellow_candle:candles=1:lit=true + block.1006 = candle:candles=2:lit=true black_candle:candles=2:lit=true blue_candle:candles=2:lit=true brown_candle:candles=2:lit=true cyan_candle:candles=2:lit=true gray_candle:candles=2:lit=true green_candle:candles=2:lit=true light_blue_candle:candles=2:lit=true light_gray_candle:candles=2:lit=true lime_candle:candles=2:lit=true magenta_candle:candles=2:lit=true orange_candle:candles=2:lit=true pink_candle:candles=2:lit=true purple_candle:candles=2:lit=true red_candle:candles=2:lit=true white_candle:candles=2:lit=true yellow_candle:candles=2:lit=true + block.1007 = candle:candles=3:lit=true black_candle:candles=3:lit=true blue_candle:candles=3:lit=true brown_candle:candles=3:lit=true cyan_candle:candles=3:lit=true gray_candle:candles=3:lit=true green_candle:candles=3:lit=true light_blue_candle:candles=3:lit=true light_gray_candle:candles=3:lit=true lime_candle:candles=3:lit=true magenta_candle:candles=3:lit=true orange_candle:candles=3:lit=true pink_candle:candles=3:lit=true purple_candle:candles=3:lit=true red_candle:candles=3:lit=true white_candle:candles=3:lit=true yellow_candle:candles=3:lit=true + block.1008 = candle:candles=4:lit=true black_candle:candles=4:lit=true blue_candle:candles=4:lit=true brown_candle:candles=4:lit=true cyan_candle:candles=4:lit=true gray_candle:candles=4:lit=true green_candle:candles=4:lit=true light_blue_candle:candles=4:lit=true light_gray_candle:candles=4:lit=true lime_candle:candles=4:lit=true magenta_candle:candles=4:lit=true orange_candle:candles=4:lit=true pink_candle:candles=4:lit=true purple_candle:candles=4:lit=true red_candle:candles=4:lit=true white_candle:candles=4:lit=true yellow_candle:candles=4:lit=true + block.1009 = cave_vines_plant:berries=true cave_vines:berries=true + block.1010 = conduit + block.1011 = crying_obsidian + block.1012 = end_gateway + block.1013 = end_rod + block.1014 = fire campfire:lit=true + block.1015 = ochre_froglight + block.1016 = pearlescent_froglight + block.1017 = verdant_froglight + block.1018 = glow_lichen + block.1019 = glowstone + block.1020 = jack_o_lantern + block.1021 = lantern + block.1022 = lava + block.1023 = magma_block + block.1024 = redstone_lamp:lit=true + block.1025 = redstone_torch:lit=true redstone_wall_torch:lit=true + block.1026 = respawn_anchor:charges=4 + block.1027 = sculk_sensor:sculk_sensor_phase=active + block.1028 = sea_pickle:waterlogged=true:pickles=1 + block.1029 = sea_pickle:waterlogged=true:pickles=2 + block.1030 = sea_pickle:waterlogged=true:pickles=3 + block.1031 = sea_pickle:waterlogged=true:pickles=4 + block.1032 = sea_lantern + block.1033 = shroomlight + block.1034 = smoker:lit=true + block.1035 = soul_fire soul_campfire:lit=true + block.1036 = soul_lantern + block.1037 = soul_torch soul_wall_torch + block.1038 = torch wall_torch block.1100 = westerosblocks:safe_fire block.1101 = conquest:white_paper_lantern conquest:yellow_paper_lantern conquest:small_red_paper_lantern conquest:chinese_palace_lantern conquest:campfire conquest:brazier conquest:hanging_brazier conquest:chandelier conquest:candelabra conquest:cross_chandelier conquest:iron_candelabrum_1 conquest:golden_candelabrum_1 conquest:candle conquest:hanging_candle_holder conquest:candle_in_a_lantern conquest:candles conquest:hand_candle conquest:torch_with_grille conquest:elven_hand_light conquest:ship_lantern conquest:victorian_lantern conquest:small_lantern conquest:big_lantern conquest:hanging_oil_lamp conquest:oil_lamp conquest:terracotta_oil_lamp conquest:invisible_light_low conquest:invisible_light_medium conquest:invisible_light diff --git a/shaders/dimensions/composite1.fsh b/shaders/dimensions/composite1.fsh index 47a61b9..af38633 100644 --- a/shaders/dimensions/composite1.fsh +++ b/shaders/dimensions/composite1.fsh @@ -1268,8 +1268,13 @@ void main() { #endif #ifdef IS_LPV_ENABLED - // vec3 lpvPos = GetLpvPosition(feetPlayerPos) + 0.5*viewToWorld(FlatNormals); - vec3 lpvPos = GetLpvPosition(feetPlayerPos) - 0.5*viewToWorld(FlatNormals) + slopednormal; + vec3 lpvPos = GetLpvPosition(feetPlayerPos); + + #ifdef LPV_NORMAL_OFFSET + lpvPos += -0.5*viewToWorld(FlatNormals) + slopednormal; + #else + lpvPos += 0.5*viewToWorld(FlatNormals); + #endif #else const vec3 lpvPos = vec3(0.0); #endif diff --git a/shaders/dimensions/setup.csh b/shaders/dimensions/setup.csh index c9f5ca5..f1efa1d 100644 --- a/shaders/dimensions/setup.csh +++ b/shaders/dimensions/setup.csh @@ -6,6 +6,7 @@ const ivec3 workGroups = ivec3(4, 5, 1); #include "/lib/blocks.glsl" #include "/lib/lpv_blocks.glsl" + 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_SeaPickle = vec3(0.283, 0.394, 0.212); @@ -27,6 +28,21 @@ void main() { vec3 tintColor = vec3(1.0); switch (blockId) { + case BLOCK_AMETHYST_BUD_LARGE: + lightColor = LightColor_Amethyst; + lightRange = 4.0; + mixWeight = 0.6; + break; + case BLOCK_AMETHYST_BUD_MEDIUM: + lightColor = LightColor_Amethyst; + lightRange = 2.0; + mixWeight = 0.8; + break; + case BLOCK_AMETHYST_CLUSTER: + lightColor = LightColor_Amethyst; + lightRange = 5.0; + mixWeight = 0.4; + break; case BLOCK_BEACON: lightColor = vec3(1.0); lightRange = 15.0; @@ -52,7 +68,7 @@ void main() { mixWeight = 1.0; break; case BLOCK_CAVE_VINE_BERRIES: - lightColor = vec3(0.717, 0.541, 0.188); + lightColor = vec3(0.651, 0.369, 0.157); lightRange = 14.0; mixWeight = 1.0; break; @@ -60,6 +76,10 @@ void main() { lightColor = vec3(1.0); lightRange = 15.0; break; + case BLOCK_CRYING_OBSIDIAN: + lightColor = vec3(0.390, 0.065, 0.646); + lightRange = 10.0; + break; case BLOCK_END_GATEWAY: lightColor = vec3(1.0); lightRange = 15.0; @@ -85,21 +105,25 @@ void main() { lightColor = vec3(0.463, 0.763, 0.409); lightRange = 15.0; break; + case BLOCK_GLOW_LICHEN: + lightColor = vec3(0.092, 0.217, 0.126); + lightRange = 7.0; + break; case BLOCK_GLOWSTONE: lightColor = vec3(0.747, 0.594, 0.326); lightRange = 15.0; break; case BLOCK_JACK_O_LANTERN: - lightColor = vec3(1.0, 0.7, 0.1); + lightColor = vec3(0.864, 0.598, 0.348); lightRange = 15.0; break; case BLOCK_LANTERN: - lightColor = vec3(1.0, 0.7, 0.1); + lightColor = vec3(0.839, 0.541, 0.2); lightRange = 15.0; mixWeight = 0.8; break; case BLOCK_LAVA: - lightColor = vec3(0.804, 0.424, 0.149); + lightColor = vec3(0.659, 0.302, 0.106); lightRange = 15.0; break; case BLOCK_MAGMA: @@ -304,6 +328,8 @@ void main() { break; } + if (lightRange > 0.0) lightRange += 1.0; + LpvBlockData block; block.ColorRange = packUnorm4x8(vec4(lightColor, lightRange/255.0)); block.MaskWeight = BuildBlockLpvData(mixMask, mixWeight); diff --git a/shaders/lib/blocks.glsl b/shaders/lib/blocks.glsl index b38013f..0b34d97 100644 --- a/shaders/lib/blocks.glsl +++ b/shaders/lib/blocks.glsl @@ -2,39 +2,44 @@ #define BLOCK_WATER 8 -#define BLOCK_BEACON 1001 -#define BLOCK_CANDLES_LIT_1 1002 -#define BLOCK_CANDLES_LIT_2 1003 -#define BLOCK_CANDLES_LIT_3 1004 -#define BLOCK_CANDLES_LIT_4 1005 -#define BLOCK_CAVE_VINE_BERRIES 1006 -#define BLOCK_CONDUIT 1007 -#define BLOCK_END_GATEWAY 1008 -#define BLOCK_END_ROD 1009 -#define BLOCK_FIRE 1010 -#define BLOCK_FROGLIGHT_OCHRE 1011 -#define BLOCK_FROGLIGHT_PEARLESCENT 1012 -#define BLOCK_FROGLIGHT_VERDANT 1013 -#define BLOCK_GLOWSTONE 1014 -#define BLOCK_JACK_O_LANTERN 1015 -#define BLOCK_LANTERN 1016 -#define BLOCK_LAVA 1017 -#define BLOCK_MAGMA 1018 -#define BLOCK_REDSTONE_LAMP_LIT 1019 -#define BLOCK_REDSTONE_TORCH_LIT 1020 -#define BLOCK_RESPAWN_ANCHOR_4 1021 -#define BLOCK_SCULK_SENSOR_ACTIVE 1022 -#define BLOCK_SEA_PICKLE_WET_1 1023 -#define BLOCK_SEA_PICKLE_WET_2 1024 -#define BLOCK_SEA_PICKLE_WET_3 1025 -#define BLOCK_SEA_PICKLE_WET_4 1026 -#define BLOCK_SEA_LANTERN 1027 -#define BLOCK_SHROOMLIGHT 1028 -#define BLOCK_SMOKER_LIT 1029 -#define BLOCK_SOUL_FIRE 1030 -#define BLOCK_SOUL_LANTERN 1031 -#define BLOCK_SOUL_TORCH 1032 -#define BLOCK_TORCH 1033 +#define BLOCK_AMETHYST_BUD_LARGE 1001 +#define BLOCK_AMETHYST_BUD_MEDIUM 1002 +#define BLOCK_AMETHYST_CLUSTER 1003 +#define BLOCK_BEACON 1004 +#define BLOCK_CANDLES_LIT_1 1005 +#define BLOCK_CANDLES_LIT_2 1006 +#define BLOCK_CANDLES_LIT_3 1007 +#define BLOCK_CANDLES_LIT_4 1008 +#define BLOCK_CAVE_VINE_BERRIES 1009 +#define BLOCK_CONDUIT 1010 +#define BLOCK_CRYING_OBSIDIAN 1011 +#define BLOCK_END_GATEWAY 1012 +#define BLOCK_END_ROD 1013 +#define BLOCK_FIRE 1014 +#define BLOCK_FROGLIGHT_OCHRE 1015 +#define BLOCK_FROGLIGHT_PEARLESCENT 1016 +#define BLOCK_FROGLIGHT_VERDANT 1017 +#define BLOCK_GLOW_LICHEN 1018 +#define BLOCK_GLOWSTONE 1019 +#define BLOCK_JACK_O_LANTERN 1020 +#define BLOCK_LANTERN 1021 +#define BLOCK_LAVA 1022 +#define BLOCK_MAGMA 1023 +#define BLOCK_REDSTONE_LAMP_LIT 1024 +#define BLOCK_REDSTONE_TORCH_LIT 1025 +#define BLOCK_RESPAWN_ANCHOR_4 1026 +#define BLOCK_SCULK_SENSOR_ACTIVE 1027 +#define BLOCK_SEA_PICKLE_WET_1 1028 +#define BLOCK_SEA_PICKLE_WET_2 1029 +#define BLOCK_SEA_PICKLE_WET_3 1030 +#define BLOCK_SEA_PICKLE_WET_4 1031 +#define BLOCK_SEA_LANTERN 1032 +#define BLOCK_SHROOMLIGHT 1033 +#define BLOCK_SMOKER_LIT 1034 +#define BLOCK_SOUL_FIRE 1035 +#define BLOCK_SOUL_LANTERN 1036 +#define BLOCK_SOUL_TORCH 1037 +#define BLOCK_TORCH 1038 #define BLOCK_GLASS 1201 #define BLOCK_HONEY 1202 diff --git a/shaders/lib/lpv_render.glsl b/shaders/lib/lpv_render.glsl index 25a3bec..24cba98 100644 --- a/shaders/lib/lpv_render.glsl +++ b/shaders/lib/lpv_render.glsl @@ -1,8 +1,8 @@ // LPV falloff curve -const float LpvBlockPower = 4.0; +const float LpvBlockPower = 5.0; // LPV block brightness scale -const float LpvBlockBrightness = 3.0; +const float LpvBlockBrightness = 2.0; vec4 SampleLpvNearest(const in ivec3 lpvPos) { diff --git a/shaders/lib/settings.glsl b/shaders/lib/settings.glsl index bdc833c..6b21ec9 100644 --- a/shaders/lib/settings.glsl +++ b/shaders/lib/settings.glsl @@ -674,6 +674,7 @@ const vec3 aerochrome_color = mix(vec3(1.0, 0.0, 0.0), vec3(0.715, 0.303, 0.631) /////////////////////////////////////////// //#define LPV_ENABLED +#define LPV_NORMAL_OFFSET #define LPV_SIZE 7 // [6 7 8] #ifdef LPV_ENABLED diff --git a/shaders/shaders.properties b/shaders/shaders.properties index c6410b2..c946035 100644 --- a/shaders/shaders.properties +++ b/shaders/shaders.properties @@ -19,7 +19,7 @@ iris.features.optional=ENTITY_TRANSLUCENT REVERSED_CULLING COMPUTE_SHADERS CUSTO #endif #ifdef LPV_ENABLED - shadow.enabled = true + # shadow.enabled = true shadow.culling = reversed #endif From 8a923d8e6e49752f854f0e413745a06c9a0473e3 Mon Sep 17 00:00:00 2001 From: NULL511 Date: Fri, 3 May 2024 13:39:05 -0400 Subject: [PATCH 19/22] use block.properties template --- shaders/block.properties | 297 +++++++++++++++++++----------- shaders/dimensions/all_solid.fsh | 8 +- shaders/dimensions/all_solid.vsh | 17 +- shaders/lib/blocks.glsl | 73 ++++---- shaders/lib/climate_settings.glsl | 2 +- shaders/lib/voxel_common.glsl | 2 + shaders/world0/shadow.vsh | 11 +- 7 files changed, 244 insertions(+), 166 deletions(-) diff --git a/shaders/block.properties b/shaders/block.properties index cd72933..5c570ac 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -1,132 +1,205 @@ +layer.translucent = minecraft:glass minecraft:glass_pane + +block.8=minecraft:water minecraft:flowing_water + + ####### ----- waving blocks with SSS ----- ####### - ##ground waving - # add a newline to organize for modded blocks - block.10001 = minecraft:sunflower:half=upper minecraft:beetroots minecraft:potatoes minecraft:carrots minecraft:wheat minecraft:nether_wart minecraft:kelp minecraft:large_fern:half=upper minecraft:peony:half=upper minecraft:rose_bush:half=upper minecraft:lilac:half=upper minecraft:crimson_roots minecraft:nether_sprouts minecraft:warped_roots minecraft:seagrass minecraft:tall_seagrass:half=upper minecraft:tall_grass:half=upper minecraft:wither_rose minecraft:lily_of_the_valley minecraft:cornflower minecraft:sweet_berry_bush minecraft:oxeye_daisy minecraft:pink_tulip minecraft:white_tulip minecraft:orange_tulip minecraft:red_tulip minecraft:azure_bluet minecraft:allium minecraft:blue_orchid minecraft:poppy minecraft:dandelion minecraft:dead_bush minecraft:oak_sapling minecraft:spruce_sapling minecraft:birch_sapling minecraft:jungle_sapling minecraft:acacia_sapling minecraft:dark_oak_sapling - - # 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.10009 = minecraft:short_grass minecraft:grass minecraft:fern 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:angelica 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_clematis conquest:white_tulip conquest:wild_dagga conquest:allium conquest:barley conquest:bean_pole conquest:beetroots conquest:cabbage conquest:carrots conquest:common_beans conquest:corn conquest:flax conquest:heirloom_wheat_crops conquest:hemp conquest:lavender 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:sweet_grass conquest:timothy_grass conquest:wavy_hair_grass conquest:pine_cones conquest:spruce_cones conquest:beautyberry_bush conquest:bilberry_bush conquest:blackberry_bush conquest:bog_blueberry_bush conquest:broom_bush conquest:dead_bush conquest:hawthorn_bush conquest:lingonberry_bush conquest:raspberry_bush conquest:alpine_sow_thristle conquest:athelas conquest:autumnal_dwarf_birch conquest:birdsfoot_trefoil conquest:bog_asphodel conquest:bottle_sedge conquest:cattails conquest:common_cow_wheat conquest:cow_parsley conquest:cross leaved heath conquest:dead_reeds conquest:dead_shrubs conquest:desert_shrub conquest:dogs_mercury conquest:dooryard_dock conquest:dry_reeds conquest:greater_fen_sedge conquest:greater_wood_rush conquest:green_meadow_fescue conquest:green_spurge conquest:heather conquest:meadow_fescue conquest:melancholy_thristle conquest:nettles conquest:nightshade conquest:papyrus conquest:purple_wolfs_bane conquest:red_common_cow_wheat conquest:rosebay_willowherb conquest:rushes conquest:wild_shrub conquest:sedge conquest:small_fescue conquest:small_scabious conquest:sweet_woodruff conquest:wild_overgrown_nettles 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:large_fern_1 conquest:large_fern_2 conquest:large_fern_3 conquest:thick_fern conquest:tall_grass conquest:large_fern conquest:sunflower conquest:tall_lilac conquest:peony conquest:rose_bush conquest:tall_seagrass conquest:cypress conquest:young_tree conquest:young_frozen_tree conquest:cross_leaved_heath conquest:jungle_ground_cover conquest:alpine_sow_thistle conquest:duckweed conquest:red_mushroom conquest:brown_mushroom - - ##air waving - # add a newline to organize for modded blocks - block.10003 = minecraft:azalea_leaves minecraft:flowering_azalea_leaves minecraft:cherry_leaves minecraft:mangrove_leaves minecraft:vine minecraft:oak_leaves minecraft:spruce_leaves minecraft:birch_leaves minecraft:jungle_leaves minecraft:acacia_leaves minecraft:dark_oak_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 conquest:apple_tree_leaves conquest:ash_tree_leaves conquest:aspen_leaves conquest:autumnal_aspen_leaves conquest:dark_deciduous_leaves conquest:autumnal_beech_tree_leaves conquest:autumnal_birch_leaves conquest:autumnal_horse_chestnut_leaves conquest:autumnal_maple_leaves conquest:autumnal_oak_leaves conquest:autumnal_weeping_willow_leaves conquest:banana_tree_leaves conquest:beech_tree_leaves conquest:bright_autumnal_beech_tree_leaves conquest:bright_autumnal_weeping_willow_leaves conquest:bushy_joshua_tree_leaves conquest:caribbean_royal_palm_leaves conquest:caribbean_royal_palm_leaves_corner conquest:cherry_tree_leaves conquest:dark_beech_tree_leaves conquest:date_palm_leaves conquest:diseased_horse_chestnut_leaves conquest:downy_willow_leaves conquest:downy_willow_leaves_tip conquest:faded_autumnal_beech_tree_leaves conquest:dead_norway_spruce_needles conquest:orange_larch_leaf_top conquest:yellow_larch_leaf_top conquest:larch_leaf_top conquest:larch_spruce_leaf_top conquest:larch_leaf_slab conquest:larch_leaf_long_branch conquest:larch_leaf_branch conquest:larch_spruce_leaf_top conquest:yellow_larch_spruce_leaf_top conquest:yellow_larch_leaf_slab conquest:yellow_larch_leaf_long_branch conquest:yellow_larch_leaf_branch conquest:orange_larch_spruce_leaf_top conquest:orange_larch_leaf_slab conquest:oranch_larch_leaf_long_branch conquest:orange_larch_leaf_branch conquest:dead_spruce_leaf_top conquest:dead_spruce_leaf_slab conquest:dead_spruce_leaf_long_branch conquest:dead_spruce_leaf_branch conquest:light_spruce_leaf_top conquest:light_spruce_leaf_slab conquest:light_spruce_leaf_long_branch conquest:light_spruce_leaf_branch conquest:goat_willow_leaves conquest:gorse_leaves conquest:grape_vine_leaves conquest:holly_leaves conquest:horse_chestnut_leaves conquest:joshua_tree_leaves conquest:lemon_tree_leaves conquest:old_caribbean_royal_palm_leaves conquest:old_caribbean_royal_palm_leaves_corner conquest:olive_tree_leaves conquest:orange_tree_leaves conquest:pear_tree_leaves conquest:plum_tree_leaves conquest:rowan_leaves conquest:weeping_willow_leaves conquest:wisteria_leaves conquest:yellow_autumnal_weeping_willow_leaves conquest:dark_spruce_needles conquest:dead_pine_needles conquest:dead_spruce_needles conquest:larch_needles conquest:light_spruce_needles conquest:orange_autumnal_larch_needles conquest:pine_needles conquest:yellow_autumnal_larch_needles conquest:dead_deciduous_branches conquest:mistletoe_garland conquest:lilac conquest:pink_cherry_blossoms conquest:purple_cherry_blossoms conquest:red_cherry_blossoms conquest:white_cherry_blossoms conquest:wisteria_blossoms conquest:hanging_moss conquest:lianas conquest:moss_vines conquest:spruce_leaf_top conquest:spruce_leaf_branch conquest:spruce_leaf_slab conquest:spruce_leaf_long_branch conquest:thick_hanging_ivy conquest:thick_ivy conquest:hanging_roots conquest:acacia_branch_tip conquest:acacia_branch_tip_45 conquest:acacia_branch_tip_2 conquest:acacia_branch_tip_2_45 conquest:beech_branch_tip conquest:beech_branch_tip_45 conquest:beech_branch_tip_2 conquest:beech _branch_tip_2_45 conquest:birch_branch_tip conquest:birch_branch_tip_45 conquest:birch_branch_tip_2 conquest:birch_branch_tip_2_45 conquest:oak_branch_tip conquest:oak_branch_tip_45 conquest:oak_branch_tip_2 conquest:oak_branch_tip_2_45 conquest:spruce_branch_tip conquest:spruce_branch_tip_45 conquest:spruce_branch_tip_2 conquest:spruce_branch_tip_2_45 conquest:orange_pine_branch_tip conquest:orange_pine_branch_tip_45 conquest:orange_pine_branch_tip_2 conquest:orange_pine_branch_tip_2_45 + +## ground waving +## add a newline to organize for modded blocks +block.10=minecraft:sunflower:half=upper minecraft:beetroots minecraft:potatoes minecraft:carrots minecraft:wheat minecraft:nether_wart minecraft:kelp minecraft:large_fern:half=upper minecraft:peony:half=upper minecraft:rose_bush:half=upper minecraft:lilac:half=upper minecraft:crimson_roots minecraft:nether_sprouts minecraft:warped_roots minecraft:seagrass minecraft:tall_seagrass:half=upper minecraft:tall_grass:half=upper minecraft:wither_rose minecraft:lily_of_the_valley minecraft:cornflower minecraft:sweet_berry_bush minecraft:oxeye_daisy minecraft:pink_tulip minecraft:white_tulip minecraft:orange_tulip minecraft:red_tulip minecraft:azure_bluet minecraft:allium minecraft:blue_orchid minecraft:poppy minecraft:dandelion minecraft:dead_bush minecraft:oak_sapling minecraft:spruce_sapling minecraft:birch_sapling minecraft:jungle_sapling minecraft:acacia_sapling minecraft:dark_oak_sapling + +## air waving +## add a newline to organize for modded blocks +block.11=minecraft:azalea_leaves minecraft:flowering_azalea_leaves minecraft:cherry_leaves minecraft:mangrove_leaves minecraft:vine minecraft:oak_leaves minecraft:spruce_leaves minecraft:birch_leaves minecraft:jungle_leaves minecraft:acacia_leaves minecraft:dark_oak_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 conquest:apple_tree_leaves conquest:ash_tree_leaves conquest:aspen_leaves conquest:autumnal_aspen_leaves conquest:dark_deciduous_leaves conquest:autumnal_beech_tree_leaves conquest:autumnal_birch_leaves conquest:autumnal_horse_chestnut_leaves conquest:autumnal_maple_leaves conquest:autumnal_oak_leaves conquest:autumnal_weeping_willow_leaves conquest:banana_tree_leaves conquest:beech_tree_leaves conquest:bright_autumnal_beech_tree_leaves conquest:bright_autumnal_weeping_willow_leaves conquest:bushy_joshua_tree_leaves conquest:caribbean_royal_palm_leaves conquest:caribbean_royal_palm_leaves_corner conquest:cherry_tree_leaves conquest:dark_beech_tree_leaves conquest:date_palm_leaves conquest:diseased_horse_chestnut_leaves conquest:downy_willow_leaves conquest:downy_willow_leaves_tip conquest:faded_autumnal_beech_tree_leaves conquest:dead_norway_spruce_needles conquest:orange_larch_leaf_top conquest:yellow_larch_leaf_top conquest:larch_leaf_top conquest:larch_spruce_leaf_top conquest:larch_leaf_slab conquest:larch_leaf_long_branch conquest:larch_leaf_branch conquest:larch_spruce_leaf_top conquest:yellow_larch_spruce_leaf_top conquest:yellow_larch_leaf_slab conquest:yellow_larch_leaf_long_branch conquest:yellow_larch_leaf_branch conquest:orange_larch_spruce_leaf_top conquest:orange_larch_leaf_slab conquest:oranch_larch_leaf_long_branch conquest:orange_larch_leaf_branch conquest:dead_spruce_leaf_top conquest:dead_spruce_leaf_slab conquest:dead_spruce_leaf_long_branch conquest:dead_spruce_leaf_branch conquest:light_spruce_leaf_top conquest:light_spruce_leaf_slab conquest:light_spruce_leaf_long_branch conquest:light_spruce_leaf_branch conquest:goat_willow_leaves conquest:gorse_leaves conquest:grape_vine_leaves conquest:holly_leaves conquest:horse_chestnut_leaves conquest:joshua_tree_leaves conquest:lemon_tree_leaves conquest:old_caribbean_royal_palm_leaves conquest:old_caribbean_royal_palm_leaves_corner conquest:olive_tree_leaves conquest:orange_tree_leaves conquest:pear_tree_leaves conquest:plum_tree_leaves conquest:rowan_leaves conquest:weeping_willow_leaves conquest:wisteria_leaves conquest:yellow_autumnal_weeping_willow_leaves conquest:dark_spruce_needles conquest:dead_pine_needles conquest:dead_spruce_needles conquest:larch_needles conquest:light_spruce_needles conquest:orange_autumnal_larch_needles conquest:pine_needles conquest:yellow_autumnal_larch_needles conquest:dead_deciduous_branches conquest:mistletoe_garland conquest:lilac conquest:pink_cherry_blossoms conquest:purple_cherry_blossoms conquest:red_cherry_blossoms conquest:white_cherry_blossoms conquest:wisteria_blossoms conquest:hanging_moss conquest:lianas conquest:moss_vines conquest:spruce_leaf_top conquest:spruce_leaf_branch conquest:spruce_leaf_slab conquest:spruce_leaf_long_branch conquest:thick_hanging_ivy conquest:thick_ivy conquest:hanging_roots conquest:acacia_branch_tip conquest:acacia_branch_tip_45 conquest:acacia_branch_tip_2 conquest:acacia_branch_tip_2_45 conquest:beech_branch_tip conquest:beech_branch_tip_45 conquest:beech_branch_tip_2 conquest:beech _branch_tip_2_45 conquest:birch_branch_tip conquest:birch_branch_tip_45 conquest:birch_branch_tip_2 conquest:birch_branch_tip_2_45 conquest:oak_branch_tip conquest:oak_branch_tip_45 conquest:oak_branch_tip_2 conquest:oak_branch_tip_2_45 conquest:spruce_branch_tip conquest:spruce_branch_tip_45 conquest:spruce_branch_tip_2 conquest:spruce_branch_tip_2_45 conquest:orange_pine_branch_tip conquest:orange_pine_branch_tip_45 conquest:orange_pine_branch_tip_2 conquest:orange_pine_branch_tip_2_45 + +## 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.12=minecraft:short_grass minecraft:grass minecraft:fern 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:angelica 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_clematis conquest:white_tulip conquest:wild_dagga conquest:allium conquest:barley conquest:bean_pole conquest:beetroots conquest:cabbage conquest:carrots conquest:common_beans conquest:corn conquest:flax conquest:heirloom_wheat_crops conquest:hemp conquest:lavender 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:sweet_grass conquest:timothy_grass conquest:wavy_hair_grass conquest:pine_cones conquest:spruce_cones conquest:beautyberry_bush conquest:bilberry_bush conquest:blackberry_bush conquest:bog_blueberry_bush conquest:broom_bush conquest:dead_bush conquest:hawthorn_bush conquest:lingonberry_bush conquest:raspberry_bush conquest:alpine_sow_thristle conquest:athelas conquest:autumnal_dwarf_birch conquest:birdsfoot_trefoil conquest:bog_asphodel conquest:bottle_sedge conquest:cattails conquest:common_cow_wheat conquest:cow_parsley conquest:cross leaved heath conquest:dead_reeds conquest:dead_shrubs conquest:desert_shrub conquest:dogs_mercury conquest:dooryard_dock conquest:dry_reeds conquest:greater_fen_sedge conquest:greater_wood_rush conquest:green_meadow_fescue conquest:green_spurge conquest:heather conquest:meadow_fescue conquest:melancholy_thristle conquest:nettles conquest:nightshade conquest:papyrus conquest:purple_wolfs_bane conquest:red_common_cow_wheat conquest:rosebay_willowherb conquest:rushes conquest:wild_shrub conquest:sedge conquest:small_fescue conquest:small_scabious conquest:sweet_woodruff conquest:wild_overgrown_nettles 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:large_fern_1 conquest:large_fern_2 conquest:large_fern_3 conquest:thick_fern conquest:tall_grass conquest:large_fern conquest:sunflower conquest:tall_lilac conquest:peony conquest:rose_bush conquest:tall_seagrass conquest:cypress conquest:young_tree conquest:young_frozen_tree conquest:cross_leaved_heath conquest:jungle_ground_cover conquest:alpine_sow_thistle conquest:duckweed conquest:red_mushroom conquest:brown_mushroom + ####### ----- blocks with SSS ----- ####### - ## strong sss - block.10004 = minecraft:flowering_azalea minecraft:tall_seagrass minecraft:seagrass minecraft:kelp minecraft:large_fern:half=lower minecraft:tall_grass minecraft:tall_seagrass minecraft:kelp_plant minecraft:peony minecraft:rose_bush minecraft:lilac minecraft:sunflower:half=lower minecraft:packed_ice minecraft:blue_ice minecraft:melon_stem minecraft:pumpkin_stem minecraft:attached_melon_stem minecraft:attached_pumpkin_stem minecraft:lily_pad westerosblocks:blackberry_bush westerosblocks:blueberry_bush westerosblocks:raspberry_bush westerosblocks:juniper_bush westerosblocks:red_rose_bush westerosblocks:pink_rose_bush westerosblocks:white_rose_bush westerosblocks:yellow_rose_bush westerosblocks:yellow_wildflowers westerosblocks:green_spiny_herb westerosblocks:green_leafy_herb westerosblocks:orange_marigolds westerosblocks:orange_trollius westerosblocks:blue_forgetmenots westerosblocks:pink_wildflowers westerosblocks:yellow_tansy westerosblocks:blue_flax westerosblocks:white_daisies westerosblocks:yellow_daisies westerosblocks:green_scrub_grass westerosblocks:dead_scrub_grass westerosblocks:yellow_bedstraw westerosblocks:orange_bells westerosblocks:blue_bells westerosblocks:blue_swamp_bells westerosblocks:yellow_buttercups westerosblocks:orange_bog_asphodel westerosblocks:yellow_lupine westerosblocks:blue_hyacinth westerosblocks:pink_thistle westerosblocks:yellow_dandelions westerosblocks:yellow_daffodils westerosblocks:yellow_roses westerosblocks:strawberry_bush westerosblocks:white_lilyofthevalley westerosblocks:yellow_bells westerosblocks:yellow_sunflower westerosblocks:white_roses westerosblocks:red_dark_roses westerosblocks:yellow_hellebore westerosblocks:meadow_fescue westerosblocks:red_poppies westerosblocks:red_roses westerosblocks:purple_pansies westerosblocks:purple_roses westerosblocks:orange_sun_star westerosblocks:pink_primrose westerosblocks:red_aster westerosblocks:blue_chicory westerosblocks:red_flowering_spiny_herb westerosblocks:purple_foxglove westerosblocks:pink_allium westerosblocks:purple_violets westerosblocks:white_chamomile westerosblocks:red_tulips westerosblocks:white_peony westerosblocks:purple_alpine_sowthistle westerosblocks:red_carnations westerosblocks:magenta_roses westerosblocks:red_chrysanthemum westerosblocks:blue_orchid westerosblocks:yellow_rudbeckia westerosblocks:pink_tulips westerosblocks:cranberry_bush westerosblocks:purple_lavender westerosblocks:red_sourleaf_bush westerosblocks:pink_sweet_peas westerosblocks:red_sorrel westerosblocks:pink_roses westerosblocks:unshaded_grass westerosblocks:cow_parsely westerosblocks:bracken westerosblocks:lady_fern westerosblocks:nettle westerosblocks:dead_bracken westerosblocks:fireweed westerosblocks:heather westerosblocks:red_fern westerosblocks:dock_leaf westerosblocks:jasmine_vines westerosblocks:dappled_moss westerosblocks:cushion_moss_wall westerosblocks:hemp_short westerosblocks:hemp_tall westerosblocks:hemp_dense westerosblocks:crop_carrots westerosblocks:crop_wheat westerosblocks:crop_turnips westerosblocks:crop_peas westerosblocks:cattails westerosblocks:jungle_tall_fern westerosblocks:jungle_tall_grass westerosblocks:savanna_tall_grass \ - - ## weak sss - block.10006 = minecraft:amethyst_block minecraft:budding_amethyst minecraft:small_amethyst_bud minecraft:pitcher_plant minecraft:small_dripleaf minecraft:grass_block:snowy=true minecraft:snow_block minecraft:snow powder_snow cobweb red_mushroom_block brown_mushroom_block weeping_vines weeping_vines_plant twisting_vines twisting_vines_plant vine tube_coral tube_coral_block tube_coral_fan tube_coral_wall_fan horn_coral horn_coral_block horn_coral_fan horn_coral_wall_fan fire_coral fire_coral_block fire_coral_fan fire_coral_wall_fan dead_brain_coral dead_brain_coral_block dead_brain_coral_fan dead_brain_coral_wall_fan dead_bubble_coral dead_bubble_coral_block dead_bubble_coral_fan dead_bubble_coral_wall_fan dead_bush dead_fire_coral dead_fire_coral_block dead_fire_coral_fan dead_fire_coral_wall_fan dead_horn_coral dead_horn_coral_block dead_horn_coral_fan dead_horn_coral_wall_fan dead_tube_coral dead_tube_coral_block dead_tube_coral_fan dead_tube_coral_wall_fan bubble_coral bubble_coral_block bubble_coral_fan bubble_coral_wall_fan brain_coral brain_coral_block brain_coral_fan brain_coral_wall_fan bamboo bamboo_sapling minecraft:spore_blossom minecraft:cave_vines:berries=false minecraft:cave_vines_plant:berries=false minecraft:glow_lichen minecraft:melon minecraft:pumpkin minecraft:big_dripleaf minecraft:big_dripleaf_stem minecraft:cactus minecraft:hay_block minecraft:brown_mushroom minecraft:mushroom_stem minecraft:sugar_cane minecraft:crimson_fungus minecraft:warped_fungus minecraft:sea_pickle:waterlogged=false minecraft:honeycomb_block - # removed: medium_amethyst_bud large_amethyst_bud amethyst_cluster - ## weak sss - block.200 = minecraft:white_wool minecraft:orange_wool minecraft:magenta_wool minecraft:light_blue_wool minecraft:yellow_wool minecraft:lime_wool minecraft:pink_wool minecraft:gray_wool minecraft:light_gray_wool minecraft:cyan_wool minecraft:purple_wool minecraft:blue_wool minecraft:brown_wool minecraft:green_wool minecraft:red_wool minecraft:black_wool minecraft:orange_carpet minecraft:magenta_carpet minecraft:light_blue_carpet minecraft:yellow_carpet minecraft:lime_carpet minecraft:pink_carpet minecraft:gray_carpet minecraft:light_gray_carpet minecraft:cyan_carpet minecraft:purple_carpet minecraft:blue_carpet minecraft:brown_carpet minecraft:green_carpet minecraft:red_carpet minecraft:black_carpet 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 - - ## weak sss - block.10010 = minecraft:white_wall_banner minecraft:orange_wall_banner minecraft:magenta_wall_banner minecraft:light_blue_wall_banner minecraft:yellow_wall_banner minecraft:lime_wall_banner minecraft:pink_wall_banner minecraft:gray_wall_banner minecraft:light_gray_wall_banner minecraft:cyan_wall_banner minecraft:purple_wall_banner minecraft:blue_wall_banner minecraft:brown_wall_banner minecraft:green_wall_banner minecraft:red_wall_banner minecraft:black_wall_banner minecraft:white_banner minecraft:orange_banner minecraft:magenta_banner minecraft:light_blue_banner minecraft:yellow_banner minecraft:lime_banner minecraft:pink_banner minecraft:gray_banner minecraft:light_gray_banner minecraft:cyan_banner minecraft:purple_banner minecraft:blue_banner minecraft:brown_banner minecraft:green_banner minecraft:red_banner minecraft:black_banner westerosblocks:renly_banner westerosblocks:redwyne_banner westerosblocks:grafton_banner westerosblocks:grey_banner westerosblocks:red_banner westerosblocks:black_banner westerosblocks:the_faith_of_the_seven_banner westerosblocks:cream_banner westerosblocks:blue_banner westerosblocks:brown_banner westerosblocks:cyan_banner westerosblocks:green_banner westerosblocks:orange_banner westerosblocks:pink_banner westerosblocks:purple_banner westerosblocks:lord_of_light_rhllor_banner westerosblocks:yellow_banner westerosblocks:arryn_banner westerosblocks:baratheon_banner westerosblocks:bolton_banner westerosblocks:dayne_banner westerosblocks:frey_banner westerosblocks:greyjoy_banner westerosblocks:hightower_banner westerosblocks:lannister_banner westerosblocks:manderly_banner westerosblocks:martell_banner westerosblocks:stannis_banner westerosblocks:stark_banner westerosblocks:targaryen_banner westerosblocks:tarly_banner westerosblocks:tully_banner westerosblocks:tyrell_banner - - ## weird blocks - block.10007 = minecraft:sand minecraft:red_sand - - ## grass uwu - block.10008 = minecraft:grass_block:snowy=false - +## strong sss +block.13=minecraft:flowering_azalea minecraft:tall_seagrass minecraft:seagrass minecraft:kelp minecraft:large_fern:half=lower minecraft:tall_grass minecraft:tall_seagrass minecraft:kelp_plant minecraft:peony minecraft:rose_bush minecraft:lilac minecraft:sunflower:half=lower minecraft:packed_ice minecraft:blue_ice minecraft:melon_stem minecraft:pumpkin_stem minecraft:attached_melon_stem minecraft:attached_pumpkin_stem minecraft:lily_pad westerosblocks:blackberry_bush westerosblocks:blueberry_bush westerosblocks:raspberry_bush westerosblocks:juniper_bush westerosblocks:red_rose_bush westerosblocks:pink_rose_bush westerosblocks:white_rose_bush westerosblocks:yellow_rose_bush westerosblocks:yellow_wildflowers westerosblocks:green_spiny_herb westerosblocks:green_leafy_herb westerosblocks:orange_marigolds westerosblocks:orange_trollius westerosblocks:blue_forgetmenots westerosblocks:pink_wildflowers westerosblocks:yellow_tansy westerosblocks:blue_flax westerosblocks:white_daisies westerosblocks:yellow_daisies westerosblocks:green_scrub_grass westerosblocks:dead_scrub_grass westerosblocks:yellow_bedstraw westerosblocks:orange_bells westerosblocks:blue_bells westerosblocks:blue_swamp_bells westerosblocks:yellow_buttercups westerosblocks:orange_bog_asphodel westerosblocks:yellow_lupine westerosblocks:blue_hyacinth westerosblocks:pink_thistle westerosblocks:yellow_dandelions westerosblocks:yellow_daffodils westerosblocks:yellow_roses westerosblocks:strawberry_bush westerosblocks:white_lilyofthevalley westerosblocks:yellow_bells westerosblocks:yellow_sunflower westerosblocks:white_roses westerosblocks:red_dark_roses westerosblocks:yellow_hellebore westerosblocks:meadow_fescue westerosblocks:red_poppies westerosblocks:red_roses westerosblocks:purple_pansies westerosblocks:purple_roses westerosblocks:orange_sun_star westerosblocks:pink_primrose westerosblocks:red_aster westerosblocks:blue_chicory westerosblocks:red_flowering_spiny_herb westerosblocks:purple_foxglove westerosblocks:pink_allium westerosblocks:purple_violets westerosblocks:white_chamomile westerosblocks:red_tulips westerosblocks:white_peony westerosblocks:purple_alpine_sowthistle westerosblocks:red_carnations westerosblocks:magenta_roses westerosblocks:red_chrysanthemum westerosblocks:blue_orchid westerosblocks:yellow_rudbeckia westerosblocks:pink_tulips westerosblocks:cranberry_bush westerosblocks:purple_lavender westerosblocks:red_sourleaf_bush westerosblocks:pink_sweet_peas westerosblocks:red_sorrel westerosblocks:pink_roses westerosblocks:unshaded_grass westerosblocks:cow_parsely westerosblocks:bracken westerosblocks:lady_fern westerosblocks:nettle westerosblocks:dead_bracken westerosblocks:fireweed westerosblocks:heather westerosblocks:red_fern westerosblocks:dock_leaf westerosblocks:jasmine_vines westerosblocks:dappled_moss westerosblocks:cushion_moss_wall westerosblocks:hemp_short westerosblocks:hemp_tall westerosblocks:hemp_dense westerosblocks:crop_carrots westerosblocks:crop_wheat westerosblocks:crop_turnips westerosblocks:crop_peas westerosblocks:cattails westerosblocks:jungle_tall_fern westerosblocks:jungle_tall_grass westerosblocks:savanna_tall_grass +## weak sss +block.14=minecraft:amethyst_block minecraft:budding_amethyst minecraft:small_amethyst_bud minecraft:pitcher_plant minecraft:small_dripleaf minecraft:grass_block:snowy=true minecraft:snow_block minecraft:snow powder_snow cobweb red_mushroom_block brown_mushroom_block weeping_vines weeping_vines_plant twisting_vines twisting_vines_plant vine tube_coral tube_coral_block tube_coral_fan tube_coral_wall_fan horn_coral horn_coral_block horn_coral_fan horn_coral_wall_fan fire_coral fire_coral_block fire_coral_fan fire_coral_wall_fan dead_brain_coral dead_brain_coral_block dead_brain_coral_fan dead_brain_coral_wall_fan dead_bubble_coral dead_bubble_coral_block dead_bubble_coral_fan dead_bubble_coral_wall_fan dead_bush dead_fire_coral dead_fire_coral_block dead_fire_coral_fan dead_fire_coral_wall_fan dead_horn_coral dead_horn_coral_block dead_horn_coral_fan dead_horn_coral_wall_fan dead_tube_coral dead_tube_coral_block dead_tube_coral_fan dead_tube_coral_wall_fan bubble_coral bubble_coral_block bubble_coral_fan bubble_coral_wall_fan brain_coral brain_coral_block brain_coral_fan brain_coral_wall_fan bamboo bamboo_sapling minecraft:spore_blossom minecraft:cave_vines:berries=false minecraft:cave_vines_plant:berries=false minecraft:glow_lichen minecraft:melon minecraft:pumpkin minecraft:big_dripleaf minecraft:big_dripleaf_stem minecraft:cactus minecraft:hay_block minecraft:brown_mushroom minecraft:mushroom_stem minecraft:sugar_cane minecraft:crimson_fungus minecraft:warped_fungus minecraft:sea_pickle:waterlogged=false minecraft:honeycomb_block +## removed: medium_amethyst_bud large_amethyst_bud amethyst_cluster + +## weak sss +block.15=minecraft:white_wool minecraft:orange_wool minecraft:magenta_wool minecraft:light_blue_wool minecraft:yellow_wool minecraft:lime_wool minecraft:pink_wool minecraft:gray_wool minecraft:light_gray_wool minecraft:cyan_wool minecraft:purple_wool minecraft:blue_wool minecraft:brown_wool minecraft:green_wool minecraft:red_wool minecraft:black_wool minecraft:orange_carpet minecraft:magenta_carpet minecraft:light_blue_carpet minecraft:yellow_carpet minecraft:lime_carpet minecraft:pink_carpet minecraft:gray_carpet minecraft:light_gray_carpet minecraft:cyan_carpet minecraft:purple_carpet minecraft:blue_carpet minecraft:brown_carpet minecraft:green_carpet minecraft:red_carpet minecraft:black_carpet 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 + +## weak sss +block.16=minecraft:white_wall_banner minecraft:orange_wall_banner minecraft:magenta_wall_banner minecraft:light_blue_wall_banner minecraft:yellow_wall_banner minecraft:lime_wall_banner minecraft:pink_wall_banner minecraft:gray_wall_banner minecraft:light_gray_wall_banner minecraft:cyan_wall_banner minecraft:purple_wall_banner minecraft:blue_wall_banner minecraft:brown_wall_banner minecraft:green_wall_banner minecraft:red_wall_banner minecraft:black_wall_banner minecraft:white_banner minecraft:orange_banner minecraft:magenta_banner minecraft:light_blue_banner minecraft:yellow_banner minecraft:lime_banner minecraft:pink_banner minecraft:gray_banner minecraft:light_gray_banner minecraft:cyan_banner minecraft:purple_banner minecraft:blue_banner minecraft:brown_banner minecraft:green_banner minecraft:red_banner minecraft:black_banner westerosblocks:renly_banner westerosblocks:redwyne_banner westerosblocks:grafton_banner westerosblocks:grey_banner westerosblocks:red_banner westerosblocks:black_banner westerosblocks:the_faith_of_the_seven_banner westerosblocks:cream_banner westerosblocks:blue_banner westerosblocks:brown_banner westerosblocks:cyan_banner westerosblocks:green_banner westerosblocks:orange_banner westerosblocks:pink_banner westerosblocks:purple_banner westerosblocks:lord_of_light_rhllor_banner westerosblocks:yellow_banner westerosblocks:arryn_banner westerosblocks:baratheon_banner westerosblocks:bolton_banner westerosblocks:dayne_banner westerosblocks:frey_banner westerosblocks:greyjoy_banner westerosblocks:hightower_banner westerosblocks:lannister_banner westerosblocks:manderly_banner westerosblocks:martell_banner westerosblocks:stannis_banner westerosblocks:stark_banner westerosblocks:targaryen_banner westerosblocks:tarly_banner westerosblocks:tully_banner westerosblocks:tyrell_banner + +## weird blocks +block.17=minecraft:sand minecraft:red_sand + +## grass uwu +block.18=minecraft:grass_block:snowy=false + + ####### ----- lightsources ----- ####### - block.1001 = large_amethyst_bud - block.1002 = medium_amethyst_bud - block.1003 = amethyst_cluster - block.1004 = beacon - block.1005 = candle:candles=1:lit=true black_candle:candles=1:lit=true blue_candle:candles=1:lit=true brown_candle:candles=1:lit=true cyan_candle:candles=1:lit=true gray_candle:candles=1:lit=true green_candle:candles=1:lit=true light_blue_candle:candles=1:lit=true light_gray_candle:candles=1:lit=true lime_candle:candles=1:lit=true magenta_candle:candles=1:lit=true orange_candle:candles=1:lit=true pink_candle:candles=1:lit=true purple_candle:candles=1:lit=true red_candle:candles=1:lit=true white_candle:candles=1:lit=true yellow_candle:candles=1:lit=true - block.1006 = candle:candles=2:lit=true black_candle:candles=2:lit=true blue_candle:candles=2:lit=true brown_candle:candles=2:lit=true cyan_candle:candles=2:lit=true gray_candle:candles=2:lit=true green_candle:candles=2:lit=true light_blue_candle:candles=2:lit=true light_gray_candle:candles=2:lit=true lime_candle:candles=2:lit=true magenta_candle:candles=2:lit=true orange_candle:candles=2:lit=true pink_candle:candles=2:lit=true purple_candle:candles=2:lit=true red_candle:candles=2:lit=true white_candle:candles=2:lit=true yellow_candle:candles=2:lit=true - block.1007 = candle:candles=3:lit=true black_candle:candles=3:lit=true blue_candle:candles=3:lit=true brown_candle:candles=3:lit=true cyan_candle:candles=3:lit=true gray_candle:candles=3:lit=true green_candle:candles=3:lit=true light_blue_candle:candles=3:lit=true light_gray_candle:candles=3:lit=true lime_candle:candles=3:lit=true magenta_candle:candles=3:lit=true orange_candle:candles=3:lit=true pink_candle:candles=3:lit=true purple_candle:candles=3:lit=true red_candle:candles=3:lit=true white_candle:candles=3:lit=true yellow_candle:candles=3:lit=true - block.1008 = candle:candles=4:lit=true black_candle:candles=4:lit=true blue_candle:candles=4:lit=true brown_candle:candles=4:lit=true cyan_candle:candles=4:lit=true gray_candle:candles=4:lit=true green_candle:candles=4:lit=true light_blue_candle:candles=4:lit=true light_gray_candle:candles=4:lit=true lime_candle:candles=4:lit=true magenta_candle:candles=4:lit=true orange_candle:candles=4:lit=true pink_candle:candles=4:lit=true purple_candle:candles=4:lit=true red_candle:candles=4:lit=true white_candle:candles=4:lit=true yellow_candle:candles=4:lit=true - block.1009 = cave_vines_plant:berries=true cave_vines:berries=true - block.1010 = conduit - block.1011 = crying_obsidian - block.1012 = end_gateway - block.1013 = end_rod - block.1014 = fire campfire:lit=true - block.1015 = ochre_froglight - block.1016 = pearlescent_froglight - block.1017 = verdant_froglight - block.1018 = glow_lichen - block.1019 = glowstone - block.1020 = jack_o_lantern - block.1021 = lantern - block.1022 = lava - block.1023 = magma_block - block.1024 = redstone_lamp:lit=true - block.1025 = redstone_torch:lit=true redstone_wall_torch:lit=true - block.1026 = respawn_anchor:charges=4 - block.1027 = sculk_sensor:sculk_sensor_phase=active - block.1028 = sea_pickle:waterlogged=true:pickles=1 - block.1029 = sea_pickle:waterlogged=true:pickles=2 - block.1030 = sea_pickle:waterlogged=true:pickles=3 - block.1031 = sea_pickle:waterlogged=true:pickles=4 - block.1032 = sea_lantern - block.1033 = shroomlight - block.1034 = smoker:lit=true - block.1035 = soul_fire soul_campfire:lit=true - block.1036 = soul_lantern - block.1037 = soul_torch soul_wall_torch - block.1038 = torch wall_torch - block.1100 = westerosblocks:safe_fire - block.1101 = conquest:white_paper_lantern conquest:yellow_paper_lantern conquest:small_red_paper_lantern conquest:chinese_palace_lantern conquest:campfire conquest:brazier conquest:hanging_brazier conquest:chandelier conquest:candelabra conquest:cross_chandelier conquest:iron_candelabrum_1 conquest:golden_candelabrum_1 conquest:candle conquest:hanging_candle_holder conquest:candle_in_a_lantern conquest:candles conquest:hand_candle conquest:torch_with_grille conquest:elven_hand_light conquest:ship_lantern conquest:victorian_lantern conquest:small_lantern conquest:big_lantern conquest:hanging_oil_lamp conquest:oil_lamp conquest:terracotta_oil_lamp conquest:invisible_light_low conquest:invisible_light_medium conquest:invisible_light +block.1001=large_amethyst_bud + +block.1002=medium_amethyst_bud + +block.1003=amethyst_cluster + +block.1004=beacon + + +block.1005=candle:candles=1:lit=true black_candle:candles=1:lit=true blue_candle:candles=1:lit=true brown_candle:candles=1:lit=true cyan_candle:candles=1:lit=true gray_candle:candles=1:lit=true green_candle:candles=1:lit=true light_blue_candle:candles=1:lit=true light_gray_candle:candles=1:lit=true lime_candle:candles=1:lit=true magenta_candle:candles=1:lit=true orange_candle:candles=1:lit=true pink_candle:candles=1:lit=true purple_candle:candles=1:lit=true red_candle:candles=1:lit=true white_candle:candles=1:lit=true yellow_candle:candles=1:lit=true +block.1006=candle:candles=2:lit=true black_candle:candles=2:lit=true blue_candle:candles=2:lit=true brown_candle:candles=2:lit=true cyan_candle:candles=2:lit=true gray_candle:candles=2:lit=true green_candle:candles=2:lit=true light_blue_candle:candles=2:lit=true light_gray_candle:candles=2:lit=true lime_candle:candles=2:lit=true magenta_candle:candles=2:lit=true orange_candle:candles=2:lit=true pink_candle:candles=2:lit=true purple_candle:candles=2:lit=true red_candle:candles=2:lit=true white_candle:candles=2:lit=true yellow_candle:candles=2:lit=true +block.1007=candle:candles=3:lit=true black_candle:candles=3:lit=true blue_candle:candles=3:lit=true brown_candle:candles=3:lit=true cyan_candle:candles=3:lit=true gray_candle:candles=3:lit=true green_candle:candles=3:lit=true light_blue_candle:candles=3:lit=true light_gray_candle:candles=3:lit=true lime_candle:candles=3:lit=true magenta_candle:candles=3:lit=true orange_candle:candles=3:lit=true pink_candle:candles=3:lit=true purple_candle:candles=3:lit=true red_candle:candles=3:lit=true white_candle:candles=3:lit=true yellow_candle:candles=3:lit=true +block.1008=candle:candles=4:lit=true black_candle:candles=4:lit=true blue_candle:candles=4:lit=true brown_candle:candles=4:lit=true cyan_candle:candles=4:lit=true gray_candle:candles=4:lit=true green_candle:candles=4:lit=true light_blue_candle:candles=4:lit=true light_gray_candle:candles=4:lit=true lime_candle:candles=4:lit=true magenta_candle:candles=4:lit=true orange_candle:candles=4:lit=true pink_candle:candles=4:lit=true purple_candle:candles=4:lit=true red_candle:candles=4:lit=true white_candle:candles=4:lit=true yellow_candle:candles=4:lit=true + +block.1009=cave_vines_plant:berries=true cave_vines:berries=true + +block.1010=conduit + +block.1011=crying_obsidian + +block.1012=end_gateway + +block.1013=end_rod + +block.1014=fire campfire:lit=true + +block.1015=ochre_froglight + +block.1016=pearlescent_froglight + +block.1017=verdant_froglight + +block.1018=glow_lichen + +block.1019=glowstone + +block.1020=jack_o_lantern + +block.1021=lantern + +block.1022=lava + +block.1023=magma_block + +block.1024=redstone_lamp:lit=true + +block.1025=redstone_torch:lit=true redstone_wall_torch:lit=true + +block.1026=respawn_anchor:charges=4 + +block.1027=sculk_sensor:sculk_sensor_phase=active + +block.1028=sea_pickle:waterlogged=true:pickles=1 + +block.1029=sea_pickle:waterlogged=true:pickles=2 + +block.1030=sea_pickle:waterlogged=true:pickles=3 + +block.1031=sea_pickle:waterlogged=true:pickles=4 + +block.1032=sea_lantern + +block.1033=shroomlight + +block.1034=smoker:lit=true + +block.1035=soul_fire soul_campfire:lit=true + +block.1036=soul_lantern + +block.1037=soul_torch soul_wall_torch + +block.1038=torch wall_torch + +block.1100=westerosblocks:safe_fire +block.1101=conquest:white_paper_lantern conquest:yellow_paper_lantern conquest:small_red_paper_lantern conquest:chinese_palace_lantern conquest:campfire conquest:brazier conquest:hanging_brazier conquest:chandelier conquest:candelabra conquest:cross_chandelier conquest:iron_candelabrum_1 conquest:golden_candelabrum_1 conquest:candle conquest:hanging_candle_holder conquest:candle_in_a_lantern conquest:candles conquest:hand_candle conquest:torch_with_grille conquest:elven_hand_light conquest:ship_lantern conquest:victorian_lantern conquest:small_lantern conquest:big_lantern conquest:hanging_oil_lamp conquest:oil_lamp conquest:terracotta_oil_lamp conquest:invisible_light_low conquest:invisible_light_medium conquest:invisible_light + ####### ----- reflective translucents / glass ----- ####### - block.1201 = glass glass_pane - block.1202 = honey_block - block.1203 = ice frosted_ice - block.1204 = nether_portal - block.1205 = slime_block - block.1220 = black_stained_glass black_stained_glass_pane - block.1221 = blue_stained_glass blue_stained_glass_pane - block.1222 = brown_stained_glass brown_stained_glass_pane - block.1223 = cyan_stained_glass cyan_stained_glass_pane - block.1224 = gray_stained_glass gray_stained_glass_pane - block.1225 = green_stained_glass green_stained_glass_pane - block.1226 = light_blue_stained_glass light_blue_stained_glass_pane - block.1227 = light_gray_stained_glass light_gray_stained_glass_pane - block.1228 = lime_stained_glass lime_stained_glass_pane - block.1229 = magenta_stained_glass magenta_stained_glass_pane - block.1230 = orange_stained_glass orange_stained_glass_pane - block.1231 = pink_stained_glass pink_stained_glass_pane - block.1232 = purple_stained_glass purple_stained_glass_pane - block.1233 = red_stained_glass red_stained_glass_pane - block.1234 = white_stained_glass white_stained_glass_pane - block.1235 = yellow_stained_glass yellow_stained_glass_pane +block.1201=glass glass_pane + +block.1202=honey_block + +block.1203=ice frosted_ice + +block.1204=nether_portal + +block.1205=slime_block + +block.1206=black_stained_glass black_stained_glass_pane + +block.1207=blue_stained_glass blue_stained_glass_pane + +block.1208=brown_stained_glass brown_stained_glass_pane + +block.1209=cyan_stained_glass cyan_stained_glass_pane + +block.1210=gray_stained_glass gray_stained_glass_pane + +block.1211=green_stained_glass green_stained_glass_pane + +block.1212=light_blue_stained_glass light_blue_stained_glass_pane + +block.1213=light_gray_stained_glass light_gray_stained_glass_pane + +block.1214=lime_stained_glass lime_stained_glass_pane + +block.1215=magenta_stained_glass magenta_stained_glass_pane + +block.1216=orange_stained_glass orange_stained_glass_pane + +block.1217=pink_stained_glass pink_stained_glass_pane + +block.1218=purple_stained_glass purple_stained_glass_pane + +block.1219=red_stained_glass red_stained_glass_pane + +block.1220=white_stained_glass white_stained_glass_pane + +block.1221=yellow_stained_glass yellow_stained_glass_pane ####### ----- doors / slabs / trapdoors ----- ####### - block.1301 = 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 create:andesite_door:facing=north:open=false create:brass_door:facing=north:open=false create:copper_door:facing=north:open=false create:train_door:facing=north:open=false createdeco:andesite_door:facing=north:open=false createdeco:brass_door:facing=north:open=false createdeco:cast_iron_door:facing=north:open=false createdeco:copper_door:facing=north:open=false createdeco:gold_door:facing=north:open=false createdeco:iron_door:facing=north:open=false createdeco:netherite_door:facing=north:open=false createdeco:zinc_door:facing=north:open=false supplementaries:gold_door:facing=north:open=false supplementaries:netherite_door:facing=north:open=false 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 create:andesite_door:facing=west:hinge=left:open=true create:brass_door:facing=west:hinge=left:open=true create:copper_door:facing=west:hinge=left:open=true create:train_door:facing=west:hinge=left:open=true createdeco:andesite_door:facing=west:hinge=left:open=true createdeco:brass_door:facing=west:hinge=left:open=true createdeco:cast_iron_door:facing=west:hinge=left:open=true createdeco:copper_door:facing=west:hinge=left:open=true createdeco:gold_door:facing=west:hinge=left:open=true createdeco:iron_door:facing=west:hinge=left:open=true createdeco:netherite_door:facing=west:hinge=left:open=true createdeco:zinc_door:facing=west:hinge=left:open=true supplementaries:gold_door:facing=west:hinge=left:open=true supplementaries:netherite_door:facing=west:hinge=left: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 - block.1302 = acacia_door:facing=east:open=false bamboo_door:facing=east:open=false birch_door:facing=east:open=false cherry_door:facing=east:open=false crimson_door:facing=east:open=false dark_oak_door:facing=east:open=false iron_door:facing=east:open=false jungle_door:facing=east:open=false mangrove_door:facing=east:open=false oak_door:facing=east:open=false spruce_door:facing=east:open=false warped_door:facing=east:open=false copper_door:facing=east:open=false exposed_copper_door:facing=east:open=false weathered_copper_door:facing=east:open=false oxidized_copper_door:facing=east:open=false waxed_copper_door:facing=east:open=false waxed_exposed_copper_door:facing=east:open=false waxed_weathered_copper_door:facing=east:open=false waxed_oxidized_copper_door:facing=east:open=false create:andesite_door:facing=east:open=false create:brass_door:facing=east:open=false create:copper_door:facing=east:open=false create:train_door:facing=east:open=false createdeco:andesite_door:facing=east:open=false createdeco:brass_door:facing=east:open=false createdeco:cast_iron_door:facing=east:open=false createdeco:copper_door:facing=east:open=false createdeco:gold_door:facing=east:open=false createdeco:iron_door:facing=east:open=false createdeco:netherite_door:facing=east:open=false createdeco:zinc_door:facing=east:open=false supplementaries:gold_door:facing=east:open=false supplementaries:netherite_door:facing=east:open=false acacia_door:facing=north:hinge=left:open=true bamboo_door:facing=north:hinge=left:open=true birch_door:facing=north:hinge=left:open=true cherry_door:facing=north:hinge=left:open=true crimson_door:facing=north:hinge=left:open=true dark_oak_door:facing=north:hinge=left:open=true iron_door:facing=north:hinge=left:open=true jungle_door:facing=north:hinge=left:open=true mangrove_door:facing=north:hinge=left:open=true oak_door:facing=north:hinge=left:open=true spruce_door:facing=north:hinge=left:open=true warped_door:facing=north:hinge=left:open=true copper_door:facing=north:hinge=left:open=true exposed_copper_door:facing=north:hinge=left:open=true weathered_copper_door:facing=north:hinge=left:open=true oxidized_copper_door:facing=north:hinge=left:open=true waxed_copper_door:facing=north:hinge=left:open=true waxed_exposed_copper_door:facing=north:hinge=left:open=true waxed_weathered_copper_door:facing=north:hinge=left:open=true waxed_oxidized_copper_door:facing=north:hinge=left:open=true create:andesite_door:facing=north:hinge=left:open=true create:brass_door:facing=north:hinge=left:open=true create:copper_door:facing=north:hinge=left:open=true create:train_door:facing=north:hinge=left:open=true createdeco:andesite_door:facing=north:hinge=left:open=true createdeco:brass_door:facing=north:hinge=left:open=true createdeco:cast_iron_door:facing=north:hinge=left:open=true createdeco:copper_door:facing=north:hinge=left:open=true createdeco:gold_door:facing=north:hinge=left:open=true createdeco:iron_door:facing=north:hinge=left:open=true createdeco:netherite_door:facing=north:hinge=left:open=true createdeco:zinc_door:facing=north:hinge=left:open=true supplementaries:gold_door:facing=north:hinge=left:open=true supplementaries:netherite_door:facing=north:hinge=left:open=true acacia_door:facing=south:hinge=right:open=true bamboo_door:facing=south:hinge=right:open=true birch_door:facing=south:hinge=right:open=true cherry_door:facing=south:hinge=right:open=true crimson_door:facing=south:hinge=right:open=true dark_oak_door:facing=south:hinge=right:open=true iron_door:facing=south:hinge=right:open=true jungle_door:facing=south:hinge=right:open=true mangrove_door:facing=south:hinge=right:open=true oak_door:facing=south:hinge=right:open=true spruce_door:facing=south:hinge=right:open=true warped_door:facing=south:hinge=right:open=true copper_door:facing=south:hinge=right:open=true exposed_copper_door:facing=south:hinge=right:open=true weathered_copper_door:facing=south:hinge=right:open=true oxidized_copper_door:facing=south:hinge=right:open=true waxed_copper_door:facing=south:hinge=right:open=true waxed_exposed_copper_door:facing=south:hinge=right:open=true waxed_weathered_copper_door:facing=south:hinge=right:open=true waxed_oxidized_copper_door:facing=south:hinge=right:open=true - block.1303 = acacia_door:facing=south:open=false bamboo_door:facing=south:open=false birch_door:facing=south:open=false cherry_door:facing=south:open=false crimson_door:facing=south:open=false dark_oak_door:facing=south:open=false iron_door:facing=south:open=false jungle_door:facing=south:open=false mangrove_door:facing=south:open=false oak_door:facing=south:open=false spruce_door:facing=south:open=false warped_door:facing=south:open=false copper_door:facing=south:open=false exposed_copper_door:facing=south:open=false weathered_copper_door:facing=south:open=false oxidized_copper_door:facing=south:open=false waxed_copper_door:facing=south:open=false waxed_exposed_copper_door:facing=south:open=false waxed_weathered_copper_door:facing=south:open=false waxed_oxidized_copper_door:facing=south:open=false create:andesite_door:facing=south:open=false create:brass_door:facing=south:open=false create:copper_door:facing=south:open=false create:train_door:facing=south:open=false createdeco:andesite_door:facing=south:open=false createdeco:brass_door:facing=south:open=false createdeco:cast_iron_door:facing=south:open=false createdeco:copper_door:facing=south:open=false createdeco:gold_door:facing=south:open=false createdeco:iron_door:facing=south:open=false createdeco:netherite_door:facing=south:open=false createdeco:zinc_door:facing=south:open=false supplementaries:gold_door:facing=south:open=false supplementaries:netherite_door:facing=south:open=false acacia_door:facing=east:hinge=left:open=true bamboo_door:facing=east:hinge=left:open=true birch_door:facing=east:hinge=left:open=true cherry_door:facing=east:hinge=left:open=true crimson_door:facing=east:hinge=left:open=true dark_oak_door:facing=east:hinge=left:open=true iron_door:facing=east:hinge=left:open=true jungle_door:facing=east:hinge=left:open=true mangrove_door:facing=east:hinge=left:open=true oak_door:facing=east:hinge=left:open=true spruce_door:facing=east:hinge=left:open=true warped_door:facing=east:hinge=left:open=true copper_door:facing=east:hinge=left:open=true exposed_copper_door:facing=east:hinge=left:open=true weathered_copper_door:facing=east:hinge=left:open=true oxidized_copper_door:facing=east:hinge=left:open=true waxed_copper_door:facing=east:hinge=left:open=true waxed_exposed_copper_door:facing=east:hinge=left:open=true waxed_weathered_copper_door:facing=east:hinge=left:open=true waxed_oxidized_copper_door:facing=east:hinge=left:open=true create:andesite_door:facing=east:hinge=left:open=true create:brass_door:facing=east:hinge=left:open=true create:copper_door:facing=east:hinge=left:open=true create:train_door:facing=east:hinge=left:open=true createdeco:andesite_door:facing=east:hinge=left:open=true createdeco:brass_door:facing=east:hinge=left:open=true createdeco:cast_iron_door:facing=east:hinge=left:open=true createdeco:copper_door:facing=east:hinge=left:open=true createdeco:gold_door:facing=east:hinge=left:open=true createdeco:iron_door:facing=east:hinge=left:open=true createdeco:netherite_door:facing=east:hinge=left:open=true createdeco:zinc_door:facing=east:hinge=left:open=true supplementaries:gold_door:facing=east:hinge=left:open=true supplementaries:netherite_door:facing=east:hinge=left:open=true acacia_door:facing=west:hinge=right:open=true bamboo_door:facing=west:hinge=right:open=true birch_door:facing=west:hinge=right:open=true cherry_door:facing=west:hinge=right:open=true crimson_door:facing=west:hinge=right:open=true dark_oak_door:facing=west:hinge=right:open=true iron_door:facing=west:hinge=right:open=true jungle_door:facing=west:hinge=right:open=true mangrove_door:facing=west:hinge=right:open=true oak_door:facing=west:hinge=right:open=true spruce_door:facing=west:hinge=right:open=true warped_door:facing=west:hinge=right:open=true copper_door:facing=west:hinge=right:open=true exposed_copper_door:facing=west:hinge=right:open=true weathered_copper_door:facing=west:hinge=right:open=true oxidized_copper_door:facing=west:hinge=right:open=true waxed_copper_door:facing=west:hinge=right:open=true waxed_exposed_copper_door:facing=west:hinge=right:open=true waxed_weathered_copper_door:facing=west:hinge=right:open=true waxed_oxidized_copper_door:facing=west:hinge=right:open=true - block.1304 = acacia_door:facing=west:open=false bamboo_door:facing=west:open=false birch_door:facing=west:open=false cherry_door:facing=west:open=false crimson_door:facing=west:open=false dark_oak_door:facing=west:open=false iron_door:facing=west:open=false jungle_door:facing=west:open=false mangrove_door:facing=west:open=false oak_door:facing=west:open=false spruce_door:facing=west:open=false warped_door:facing=west:open=false copper_door:facing=west:open=false exposed_copper_door:facing=west:open=false weathered_copper_door:facing=west:open=false oxidized_copper_door:facing=west:open=false waxed_copper_door:facing=west:open=false waxed_exposed_copper_door:facing=west:open=false waxed_weathered_copper_door:facing=west:open=false waxed_oxidized_copper_door:facing=west:open=false create:andesite_door:facing=west:open=false create:brass_door:facing=west:open=false create:copper_door:facing=west:open=false create:train_door:facing=west:open=false createdeco:andesite_door:facing=west:open=false createdeco:brass_door:facing=west:open=false createdeco:cast_iron_door:facing=west:open=false createdeco:copper_door:facing=west:open=false createdeco:gold_door:facing=west:open=false createdeco:iron_door:facing=west:open=false createdeco:netherite_door:facing=west:open=false createdeco:zinc_door:facing=west:open=false supplementaries:gold_door:facing=west:open=false supplementaries:netherite_door:facing=west:open=false acacia_door:facing=south:hinge=left:open=true bamboo_door:facing=south:hinge=left:open=true birch_door:facing=south:hinge=left:open=true cherry_door:facing=south:hinge=left:open=true crimson_door:facing=south:hinge=left:open=true dark_oak_door:facing=south:hinge=left:open=true iron_door:facing=south:hinge=left:open=true jungle_door:facing=south:hinge=left:open=true mangrove_door:facing=south:hinge=left:open=true oak_door:facing=south:hinge=left:open=true spruce_door:facing=south:hinge=left:open=true warped_door:facing=south:hinge=left:open=true copper_door:facing=south:hinge=left:open=true exposed_copper_door:facing=south:hinge=left:open=true weathered_copper_door:facing=south:hinge=left:open=true oxidized_copper_door:facing=south:hinge=left:open=true waxed_copper_door:facing=south:hinge=left:open=true waxed_exposed_copper_door:facing=south:hinge=left:open=true waxed_weathered_copper_door:facing=south:hinge=left:open=true waxed_oxidized_copper_door:facing=south:hinge=left:open=true create:andesite_door:facing=south:hinge=left:open=true create:brass_door:facing=south:hinge=left:open=true create:copper_door:facing=south:hinge=left:open=true create:train_door:facing=south:hinge=left:open=true createdeco:andesite_door:facing=south:hinge=left:open=true createdeco:brass_door:facing=south:hinge=left:open=true createdeco:cast_iron_door:facing=south:hinge=left:open=true createdeco:copper_door:facing=south:hinge=left:open=true createdeco:gold_door:facing=south:hinge=left:open=true createdeco:iron_door:facing=south:hinge=left:open=true createdeco:netherite_door:facing=south:hinge=left:open=true createdeco:zinc_door:facing=south:hinge=left:open=true supplementaries:gold_door:facing=south:hinge=left:open=true supplementaries:netherite_door:facing=south:hinge=left:open=true acacia_door:facing=north:hinge=right:open=true bamboo_door:facing=north:hinge=right:open=true birch_door:facing=north:hinge=right:open=true cherry_door:facing=north:hinge=right:open=true crimson_door:facing=north:hinge=right:open=true dark_oak_door:facing=north:hinge=right:open=true iron_door:facing=north:hinge=right:open=true jungle_door:facing=north:hinge=right:open=true mangrove_door:facing=north:hinge=right:open=true oak_door:facing=north:hinge=right:open=true spruce_door:facing=north:hinge=right:open=true warped_door:facing=north:hinge=right:open=true copper_door:facing=north:hinge=right:open=true exposed_copper_door:facing=north:hinge=right:open=true weathered_copper_door:facing=north:hinge=right:open=true oxidized_copper_door:facing=north:hinge=right:open=true waxed_copper_door:facing=north:hinge=right:open=true waxed_exposed_copper_door:facing=north:hinge=right:open=true waxed_weathered_copper_door:facing=north:hinge=right:open=true waxed_oxidized_copper_door:facing=north:hinge=right:open=true - block.1305 = 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.1306 = 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 +block.1222=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 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 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 - block.1307 = acacia_trapdoor:half=bottom:open=false bamboo_trapdoor:half=bottom:open=false birch_trapdoor:half=bottom:open=false cherry_trapdoor:half=bottom:open=false crimson_trapdoor:half=bottom:open=false dark_oak_trapdoor:half=bottom:open=false iron_trapdoor:half=bottom:open=false jungle_trapdoor:half=bottom:open=false mangrove_trapdoor:half=bottom:open=false oak_trapdoor:half=bottom:open=false spruce_trapdoor:half=bottom:open=false warped_trapdoor:half=bottom:open=false copper_trapdoor:half=bottom:open=false exposed_copper_trapdoor:half=bottom:open=false weathered_copper_trapdoor:half=bottom:open=false oxidized_copper_trapdoor:half=bottom:open=false waxed_copper_trapdoor:half=bottom:open=false waxed_exposed_copper_trapdoor:half=bottom:open=false waxed_weathered_copper_trapdoor:half=bottom:open=false waxed_oxidized_copper_trapdoor:half=bottom:open=false - block.1308 = acacia_trapdoor:half=top:open=false bamboo_trapdoor:half=top:open=false birch_trapdoor:half=top:open=false cherry_trapdoor:half=top:open=false crimson_trapdoor:half=top:open=false dark_oak_trapdoor:half=top:open=false iron_trapdoor:half=top:open=false jungle_trapdoor:half=top:open=false mangrove_trapdoor:half=top:open=false oak_trapdoor:half=top:open=false spruce_trapdoor:half=top:open=false warped_trapdoor:half=top:open=false copper_trapdoor:half=top:open=false exposed_copper_trapdoor:half=top:open=false weathered_copper_trapdoor:half=top:open=false oxidized_copper_trapdoor:half=top:open=false waxed_copper_trapdoor:half=top:open=false waxed_exposed_copper_trapdoor:half=top:open=false waxed_weathered_copper_trapdoor:half=top:open=false waxed_oxidized_copper_trapdoor:half=top:open=false - block.1309 = acacia_trapdoor:facing=north:open=true bamboo_trapdoor:facing=north:open=true birch_trapdoor:facing=north:open=true cherry_trapdoor:facing=north:open=true crimson_trapdoor:facing=north:open=true dark_oak_trapdoor:facing=north:open=true iron_trapdoor:facing=north:open=true jungle_trapdoor:facing=north:open=true mangrove_trapdoor:facing=north:open=true oak_trapdoor:facing=north:open=true spruce_trapdoor:facing=north:open=true warped_trapdoor:facing=north:open=true copper_trapdoor:facing=north:open=true exposed_copper_trapdoor:facing=north:open=true weathered_copper_trapdoor:facing=north:open=true oxidized_copper_trapdoor:facing=north:open=true waxed_copper_trapdoor:facing=north:open=true waxed_exposed_copper_trapdoor:facing=north:open=true waxed_weathered_copper_trapdoor:facing=north:open=true waxed_oxidized_copper_trapdoor:facing=north:open=true - block.1310 = acacia_trapdoor:facing=east:open=true bamboo_trapdoor:facing=east:open=true birch_trapdoor:facing=east:open=true cherry_trapdoor:facing=east:open=true crimson_trapdoor:facing=east:open=true dark_oak_trapdoor:facing=east:open=true iron_trapdoor:facing=east:open=true jungle_trapdoor:facing=east:open=true mangrove_trapdoor:facing=east:open=true oak_trapdoor:facing=east:open=true spruce_trapdoor:facing=east:open=true warped_trapdoor:facing=east:open=true copper_trapdoor:facing=east:open=true exposed_copper_trapdoor:facing=east:open=true weathered_copper_trapdoor:facing=east:open=true oxidized_copper_trapdoor:facing=east:open=true waxed_copper_trapdoor:facing=east:open=true waxed_exposed_copper_trapdoor:facing=east:open=true waxed_weathered_copper_trapdoor:facing=east:open=true waxed_oxidized_copper_trapdoor:facing=east:open=true - block.1311 = acacia_trapdoor:facing=south:open=true bamboo_trapdoor:facing=south:open=true birch_trapdoor:facing=south:open=true cherry_trapdoor:facing=south:open=true crimson_trapdoor:facing=south:open=true dark_oak_trapdoor:facing=south:open=true iron_trapdoor:facing=south:open=true jungle_trapdoor:facing=south:open=true mangrove_trapdoor:facing=south:open=true oak_trapdoor:facing=south:open=true spruce_trapdoor:facing=south:open=true warped_trapdoor:facing=south:open=true copper_trapdoor:facing=south:open=true exposed_copper_trapdoor:facing=south:open=true weathered_copper_trapdoor:facing=south:open=true oxidized_copper_trapdoor:facing=south:open=true waxed_copper_trapdoor:facing=south:open=true waxed_exposed_copper_trapdoor:facing=south:open=true waxed_weathered_copper_trapdoor:facing=south:open=true waxed_oxidized_copper_trapdoor:facing=south:open=true - block.1312 = acacia_trapdoor:facing=west:open=true bamboo_trapdoor:facing=west:open=true birch_trapdoor:facing=west:open=true cherry_trapdoor:facing=west:open=true crimson_trapdoor:facing=west:open=true dark_oak_trapdoor:facing=west:open=true iron_trapdoor:facing=west:open=true jungle_trapdoor:facing=west:open=true mangrove_trapdoor:facing=west:open=true oak_trapdoor:facing=west:open=true spruce_trapdoor:facing=west:open=true warped_trapdoor:facing=west:open=true copper_trapdoor:facing=west:open=true exposed_copper_trapdoor:facing=west:open=true weathered_copper_trapdoor:facing=west:open=true oxidized_copper_trapdoor:facing=west:open=true waxed_copper_trapdoor:facing=west:open=true waxed_exposed_copper_trapdoor:facing=west:open=true waxed_weathered_copper_trapdoor:facing=west:open=true waxed_oxidized_copper_trapdoor:facing=west:open=true +block.1223=acacia_door:facing=east:open=false bamboo_door:facing=east:open=false birch_door:facing=east:open=false cherry_door:facing=east:open=false crimson_door:facing=east:open=false dark_oak_door:facing=east:open=false iron_door:facing=east:open=false jungle_door:facing=east:open=false mangrove_door:facing=east:open=false oak_door:facing=east:open=false spruce_door:facing=east:open=false warped_door:facing=east:open=false copper_door:facing=east:open=false exposed_copper_door:facing=east:open=false weathered_copper_door:facing=east:open=false oxidized_copper_door:facing=east:open=false waxed_copper_door:facing=east:open=false waxed_exposed_copper_door:facing=east:open=false waxed_weathered_copper_door:facing=east:open=false waxed_oxidized_copper_door:facing=east:open=false acacia_door:facing=north:hinge=left:open=true bamboo_door:facing=north:hinge=left:open=true birch_door:facing=north:hinge=left:open=true cherry_door:facing=north:hinge=left:open=true crimson_door:facing=north:hinge=left:open=true dark_oak_door:facing=north:hinge=left:open=true iron_door:facing=north:hinge=left:open=true jungle_door:facing=north:hinge=left:open=true mangrove_door:facing=north:hinge=left:open=true oak_door:facing=north:hinge=left:open=true spruce_door:facing=north:hinge=left:open=true warped_door:facing=north:hinge=left:open=true copper_door:facing=north:hinge=left:open=true exposed_copper_door:facing=north:hinge=left:open=true weathered_copper_door:facing=north:hinge=left:open=true oxidized_copper_door:facing=north:hinge=left:open=true waxed_copper_door:facing=north:hinge=left:open=true waxed_exposed_copper_door:facing=north:hinge=left:open=true waxed_weathered_copper_door:facing=north:hinge=left:open=true waxed_oxidized_copper_door:facing=north:hinge=left:open=true acacia_door:facing=south:hinge=right:open=true bamboo_door:facing=south:hinge=right:open=true birch_door:facing=south:hinge=right:open=true cherry_door:facing=south:hinge=right:open=true crimson_door:facing=south:hinge=right:open=true dark_oak_door:facing=south:hinge=right:open=true iron_door:facing=south:hinge=right:open=true jungle_door:facing=south:hinge=right:open=true mangrove_door:facing=south:hinge=right:open=true oak_door:facing=south:hinge=right:open=true spruce_door:facing=south:hinge=right:open=true warped_door:facing=south:hinge=right:open=true copper_door:facing=south:hinge=right:open=true exposed_copper_door:facing=south:hinge=right:open=true weathered_copper_door:facing=south:hinge=right:open=true oxidized_copper_door:facing=south:hinge=right:open=true waxed_copper_door:facing=south:hinge=right:open=true waxed_exposed_copper_door:facing=south:hinge=right:open=true waxed_weathered_copper_door:facing=south:hinge=right:open=true waxed_oxidized_copper_door:facing=south:hinge=right:open=true + +block.1224=acacia_door:facing=south:open=false bamboo_door:facing=south:open=false birch_door:facing=south:open=false cherry_door:facing=south:open=false crimson_door:facing=south:open=false dark_oak_door:facing=south:open=false iron_door:facing=south:open=false jungle_door:facing=south:open=false mangrove_door:facing=south:open=false oak_door:facing=south:open=false spruce_door:facing=south:open=false warped_door:facing=south:open=false copper_door:facing=south:open=false exposed_copper_door:facing=south:open=false weathered_copper_door:facing=south:open=false oxidized_copper_door:facing=south:open=false waxed_copper_door:facing=south:open=false waxed_exposed_copper_door:facing=south:open=false waxed_weathered_copper_door:facing=south:open=false waxed_oxidized_copper_door:facing=south:open=false acacia_door:facing=east:hinge=left:open=true bamboo_door:facing=east:hinge=left:open=true birch_door:facing=east:hinge=left:open=true cherry_door:facing=east:hinge=left:open=true crimson_door:facing=east:hinge=left:open=true dark_oak_door:facing=east:hinge=left:open=true iron_door:facing=east:hinge=left:open=true jungle_door:facing=east:hinge=left:open=true mangrove_door:facing=east:hinge=left:open=true oak_door:facing=east:hinge=left:open=true spruce_door:facing=east:hinge=left:open=true warped_door:facing=east:hinge=left:open=true copper_door:facing=east:hinge=left:open=true exposed_copper_door:facing=east:hinge=left:open=true weathered_copper_door:facing=east:hinge=left:open=true oxidized_copper_door:facing=east:hinge=left:open=true waxed_copper_door:facing=east:hinge=left:open=true waxed_exposed_copper_door:facing=east:hinge=left:open=true waxed_weathered_copper_door:facing=east:hinge=left:open=true waxed_oxidized_copper_door:facing=east:hinge=left:open=true acacia_door:facing=west:hinge=right:open=true bamboo_door:facing=west:hinge=right:open=true birch_door:facing=west:hinge=right:open=true cherry_door:facing=west:hinge=right:open=true crimson_door:facing=west:hinge=right:open=true dark_oak_door:facing=west:hinge=right:open=true iron_door:facing=west:hinge=right:open=true jungle_door:facing=west:hinge=right:open=true mangrove_door:facing=west:hinge=right:open=true oak_door:facing=west:hinge=right:open=true spruce_door:facing=west:hinge=right:open=true warped_door:facing=west:hinge=right:open=true copper_door:facing=west:hinge=right:open=true exposed_copper_door:facing=west:hinge=right:open=true weathered_copper_door:facing=west:hinge=right:open=true oxidized_copper_door:facing=west:hinge=right:open=true waxed_copper_door:facing=west:hinge=right:open=true waxed_exposed_copper_door:facing=west:hinge=right:open=true waxed_weathered_copper_door:facing=west:hinge=right:open=true waxed_oxidized_copper_door:facing=west:hinge=right:open=true + +block.1225=acacia_door:facing=west:open=false bamboo_door:facing=west:open=false birch_door:facing=west:open=false cherry_door:facing=west:open=false crimson_door:facing=west:open=false dark_oak_door:facing=west:open=false iron_door:facing=west:open=false jungle_door:facing=west:open=false mangrove_door:facing=west:open=false oak_door:facing=west:open=false spruce_door:facing=west:open=false warped_door:facing=west:open=false copper_door:facing=west:open=false exposed_copper_door:facing=west:open=false weathered_copper_door:facing=west:open=false oxidized_copper_door:facing=west:open=false waxed_copper_door:facing=west:open=false waxed_exposed_copper_door:facing=west:open=false waxed_weathered_copper_door:facing=west:open=false waxed_oxidized_copper_door:facing=west:open=false acacia_door:facing=south:hinge=left:open=true bamboo_door:facing=south:hinge=left:open=true birch_door:facing=south:hinge=left:open=true cherry_door:facing=south:hinge=left:open=true crimson_door:facing=south:hinge=left:open=true dark_oak_door:facing=south:hinge=left:open=true iron_door:facing=south:hinge=left:open=true jungle_door:facing=south:hinge=left:open=true mangrove_door:facing=south:hinge=left:open=true oak_door:facing=south:hinge=left:open=true spruce_door:facing=south:hinge=left:open=true warped_door:facing=south:hinge=left:open=true copper_door:facing=south:hinge=left:open=true exposed_copper_door:facing=south:hinge=left:open=true weathered_copper_door:facing=south:hinge=left:open=true oxidized_copper_door:facing=south:hinge=left:open=true waxed_copper_door:facing=south:hinge=left:open=true waxed_exposed_copper_door:facing=south:hinge=left:open=true waxed_weathered_copper_door:facing=south:hinge=left:open=true waxed_oxidized_copper_door:facing=south:hinge=left:open=true acacia_door:facing=north:hinge=right:open=true bamboo_door:facing=north:hinge=right:open=true birch_door:facing=north:hinge=right:open=true cherry_door:facing=north:hinge=right:open=true crimson_door:facing=north:hinge=right:open=true dark_oak_door:facing=north:hinge=right:open=true iron_door:facing=north:hinge=right:open=true jungle_door:facing=north:hinge=right:open=true mangrove_door:facing=north:hinge=right:open=true oak_door:facing=north:hinge=right:open=true spruce_door:facing=north:hinge=right:open=true warped_door:facing=north:hinge=right:open=true copper_door:facing=north:hinge=right:open=true exposed_copper_door:facing=north:hinge=right:open=true weathered_copper_door:facing=north:hinge=right:open=true oxidized_copper_door:facing=north:hinge=right:open=true waxed_copper_door:facing=north:hinge=right:open=true waxed_exposed_copper_door:facing=north:hinge=right:open=true waxed_weathered_copper_door:facing=north:hinge=right:open=true waxed_oxidized_copper_door:facing=north:hinge=right:open=true + + +block.1226=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.1227=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 + + +block.1228=acacia_trapdoor:half=bottom:open=false bamboo_trapdoor:half=bottom:open=false birch_trapdoor:half=bottom:open=false cherry_trapdoor:half=bottom:open=false crimson_trapdoor:half=bottom:open=false dark_oak_trapdoor:half=bottom:open=false iron_trapdoor:half=bottom:open=false jungle_trapdoor:half=bottom:open=false mangrove_trapdoor:half=bottom:open=false oak_trapdoor:half=bottom:open=false spruce_trapdoor:half=bottom:open=false warped_trapdoor:half=bottom:open=false copper_trapdoor:half=bottom:open=false exposed_copper_trapdoor:half=bottom:open=false weathered_copper_trapdoor:half=bottom:open=false oxidized_copper_trapdoor:half=bottom:open=false waxed_copper_trapdoor:half=bottom:open=false waxed_exposed_copper_trapdoor:half=bottom:open=false waxed_weathered_copper_trapdoor:half=bottom:open=false waxed_oxidized_copper_trapdoor:half=bottom:open=false + +block.1229=acacia_trapdoor:half=top:open=false bamboo_trapdoor:half=top:open=false birch_trapdoor:half=top:open=false cherry_trapdoor:half=top:open=false crimson_trapdoor:half=top:open=false dark_oak_trapdoor:half=top:open=false iron_trapdoor:half=top:open=false jungle_trapdoor:half=top:open=false mangrove_trapdoor:half=top:open=false oak_trapdoor:half=top:open=false spruce_trapdoor:half=top:open=false warped_trapdoor:half=top:open=false copper_trapdoor:half=top:open=false exposed_copper_trapdoor:half=top:open=false weathered_copper_trapdoor:half=top:open=false oxidized_copper_trapdoor:half=top:open=false waxed_copper_trapdoor:half=top:open=false waxed_exposed_copper_trapdoor:half=top:open=false waxed_weathered_copper_trapdoor:half=top:open=false waxed_oxidized_copper_trapdoor:half=top:open=false + +block.1230=acacia_trapdoor:facing=north:open=true bamboo_trapdoor:facing=north:open=true birch_trapdoor:facing=north:open=true cherry_trapdoor:facing=north:open=true crimson_trapdoor:facing=north:open=true dark_oak_trapdoor:facing=north:open=true iron_trapdoor:facing=north:open=true jungle_trapdoor:facing=north:open=true mangrove_trapdoor:facing=north:open=true oak_trapdoor:facing=north:open=true spruce_trapdoor:facing=north:open=true warped_trapdoor:facing=north:open=true copper_trapdoor:facing=north:open=true exposed_copper_trapdoor:facing=north:open=true weathered_copper_trapdoor:facing=north:open=true oxidized_copper_trapdoor:facing=north:open=true waxed_copper_trapdoor:facing=north:open=true waxed_exposed_copper_trapdoor:facing=north:open=true waxed_weathered_copper_trapdoor:facing=north:open=true waxed_oxidized_copper_trapdoor:facing=north:open=true + +block.1231=acacia_trapdoor:facing=east:open=true bamboo_trapdoor:facing=east:open=true birch_trapdoor:facing=east:open=true cherry_trapdoor:facing=east:open=true crimson_trapdoor:facing=east:open=true dark_oak_trapdoor:facing=east:open=true iron_trapdoor:facing=east:open=true jungle_trapdoor:facing=east:open=true mangrove_trapdoor:facing=east:open=true oak_trapdoor:facing=east:open=true spruce_trapdoor:facing=east:open=true warped_trapdoor:facing=east:open=true copper_trapdoor:facing=east:open=true exposed_copper_trapdoor:facing=east:open=true weathered_copper_trapdoor:facing=east:open=true oxidized_copper_trapdoor:facing=east:open=true waxed_copper_trapdoor:facing=east:open=true waxed_exposed_copper_trapdoor:facing=east:open=true waxed_weathered_copper_trapdoor:facing=east:open=true waxed_oxidized_copper_trapdoor:facing=east:open=true + +block.1232=acacia_trapdoor:facing=south:open=true bamboo_trapdoor:facing=south:open=true birch_trapdoor:facing=south:open=true cherry_trapdoor:facing=south:open=true crimson_trapdoor:facing=south:open=true dark_oak_trapdoor:facing=south:open=true iron_trapdoor:facing=south:open=true jungle_trapdoor:facing=south:open=true mangrove_trapdoor:facing=south:open=true oak_trapdoor:facing=south:open=true spruce_trapdoor:facing=south:open=true warped_trapdoor:facing=south:open=true copper_trapdoor:facing=south:open=true exposed_copper_trapdoor:facing=south:open=true weathered_copper_trapdoor:facing=south:open=true oxidized_copper_trapdoor:facing=south:open=true waxed_copper_trapdoor:facing=south:open=true waxed_exposed_copper_trapdoor:facing=south:open=true waxed_weathered_copper_trapdoor:facing=south:open=true waxed_oxidized_copper_trapdoor:facing=south:open=true + +block.1233=acacia_trapdoor:facing=west:open=true bamboo_trapdoor:facing=west:open=true birch_trapdoor:facing=west:open=true cherry_trapdoor:facing=west:open=true crimson_trapdoor:facing=west:open=true dark_oak_trapdoor:facing=west:open=true iron_trapdoor:facing=west:open=true jungle_trapdoor:facing=west:open=true mangrove_trapdoor:facing=west:open=true oak_trapdoor:facing=west:open=true spruce_trapdoor:facing=west:open=true warped_trapdoor:facing=west:open=true copper_trapdoor:facing=west:open=true exposed_copper_trapdoor:facing=west:open=true weathered_copper_trapdoor:facing=west:open=true oxidized_copper_trapdoor:facing=west:open=true waxed_copper_trapdoor:facing=west:open=true waxed_exposed_copper_trapdoor:facing=west:open=true waxed_weathered_copper_trapdoor:facing=west:open=true waxed_oxidized_copper_trapdoor:facing=west:open=true ####### ----- misc ----- ####### - ## all blocks here get exluded from POM. - block.2200 = minecraft:oak_sign minecraft:spruce_sign minecraft:birch_sign minecraft:jungle_sign minecraft:acacia_sign minecraft:dark_oak_sign minecraft:mangrove_sign minecraft:crimson_sign minecraft:warped_sign minecraft:oak_wall_sign minecraft:spruce_wall_sign minecraft:birch_wall_sign minecraft:jungle_wall_sign minecraft:acacia_wall_sign minecraft:dark_oak_wall_sign minecraft:mangrove_wall_sign minecraft:crimson_wall_sign minecraft:warped_wall_sign - - ## stuff - block.2100 = minecraft:end_portal - - block.8 = minecraft:water minecraft:flowing_water +## stuff +block.2100=minecraft:end_portal - # workaround mixed render stages - block.3000 = minecraft:redstone_wire - - layer.translucent = minecraft:glass_pane minecraft:glass +## all blocks here get exluded from POM. +block.2200=minecraft:oak_sign minecraft:spruce_sign minecraft:birch_sign minecraft:jungle_sign minecraft:acacia_sign minecraft:dark_oak_sign minecraft:mangrove_sign minecraft:crimson_sign minecraft:warped_sign minecraft:oak_wall_sign minecraft:spruce_wall_sign minecraft:birch_wall_sign minecraft:jungle_wall_sign minecraft:acacia_wall_sign minecraft:dark_oak_wall_sign minecraft:mangrove_wall_sign minecraft:crimson_wall_sign minecraft:warped_wall_sign + +## workaround mixed render stages +block.3000=minecraft:redstone_wire diff --git a/shaders/dimensions/all_solid.fsh b/shaders/dimensions/all_solid.fsh index a513368..0c53a94 100644 --- a/shaders/dimensions/all_solid.fsh +++ b/shaders/dimensions/all_solid.fsh @@ -427,22 +427,22 @@ void main() { #ifdef AEROCHROME_MODE float gray = dot(Albedo.rgb, vec3(0.2, 1.0, 0.07)); - if(blockID == 10001 || blockID == 10003 || blockID == 10004 || blockID == 10006 || blockID == 10009) { + if(blockID == BLOCK_GROUND_WAVING || blockID == BLOCK_AIR_WAVING || blockID == BLOCK_SSS_STRONG || blockID == BLOCK_SSS_WEAK || blockID == BLOCK_GROUND_WAVING_VERTICAL) { // IR Reflective (Pink-red) Albedo.rgb = mix(vec3(gray), aerochrome_color, 0.7); } - else if(blockID == 10008) { + else if(blockID == BLOCK_GRASS) { // Special handling for grass block float strength = 1.0 - color.b; Albedo.rgb = mix(Albedo.rgb, aerochrome_color, strength); } #ifdef AEROCHROME_WOOL_ENABLED - else if(blockID == 200) { + else if(blockID == BLOCK_SSS_WEAK_2) { // Wool Albedo.rgb = mix(Albedo.rgb, aerochrome_color, 0.3); } #endif - else if(blockID == 8 || (blockID >= 1200 && blockID < 1300)) + else if(blockID == BLOCK_WATER || (blockID >= 1200 && blockID < 1300)) { // IR Absorbsive? Dark. Albedo.rgb = mix(Albedo.rgb, vec3(0.01, 0.08, 0.15), 0.5); diff --git a/shaders/dimensions/all_solid.vsh b/shaders/dimensions/all_solid.vsh index 2aa2998..65b3b61 100644 --- a/shaders/dimensions/all_solid.vsh +++ b/shaders/dimensions/all_solid.vsh @@ -2,6 +2,7 @@ #include "/lib/settings.glsl" #include "/lib/res_params.glsl" #include "/lib/bokeh.glsl" +#include "/lib/blocks.glsl" /* !! DO NOT REMOVE !! @@ -229,7 +230,7 @@ void main() { blockID = mc_Entity.x; // velocity = at_velocity; - if(mc_Entity.x == 10009) normalMat.a = 0.60; + if(mc_Entity.x == BLOCK_GROUND_WAVING_VERTICAL) normalMat.a = 0.60; PORTAL = 0; @@ -259,7 +260,7 @@ void main() { #endif - if(mc_Entity.x == 10003) normalMat.a = 0.55; + if(mc_Entity.x == BLOCK_AIR_WAVING) normalMat.a = 0.55; /////// ----- EMISSIVE STUFF ----- /////// EMISSIVE = 0.0; @@ -292,14 +293,14 @@ void main() { /////// ----- SSS ON BLOCKS ----- /////// // strong - if(mc_Entity.x == 10001 || mc_Entity.x == 10003 || mc_Entity.x == 10004 || mc_Entity.x == 10009) SSSAMOUNT = 1.0; + if(mc_Entity.x == BLOCK_GROUND_WAVING || mc_Entity.x == BLOCK_AIR_WAVING || mc_Entity.x == BLOCK_SSS_STRONG || mc_Entity.x == BLOCK_GROUND_WAVING_VERTICAL) SSSAMOUNT = 1.0; // medium - if(mc_Entity.x == 10006 || mc_Entity.x == 200) SSSAMOUNT = 0.75; + if(mc_Entity.x == BLOCK_SSS_WEAK || mc_Entity.x == BLOCK_SSS_WEAK_2) SSSAMOUNT = 0.75; // low #ifdef MISC_BLOCK_SSS - if(mc_Entity.x == 10007 || mc_Entity.x == 10008) SSSAMOUNT = 0.5; // weird SSS on blocks like grass and stuff + if(mc_Entity.x == BLOCK_SSS_WEIRD || mc_Entity.x == BLOCK_GRASS) SSSAMOUNT = 0.5; // weird SSS on blocks like grass and stuff #endif #ifdef ENTITIES @@ -320,7 +321,7 @@ void main() { // strong // medium - if(blockEntityId == 10010) SSSAMOUNT = 0.4; + if(blockEntityId == BLOCK_SSS_WEAK_3) SSSAMOUNT = 0.4; // low @@ -330,13 +331,13 @@ void main() { #ifdef WAVY_PLANTS bool istopv = gl_MultiTexCoord0.t < mc_midTexCoord.t; - if ((mc_Entity.x == 10001 || mc_Entity.x == 10009) && istopv && abs(position.z) < 64.0) { + if ((mc_Entity.x == BLOCK_GROUND_WAVING || mc_Entity.x == BLOCK_GROUND_WAVING_VERTICAL) && istopv && abs(position.z) < 64.0) { vec3 worldpos = mat3(gbufferModelViewInverse) * position + gbufferModelViewInverse[3].xyz + cameraPosition; worldpos.xyz += calcMovePlants(worldpos.xyz)*lmtexcoord.w - cameraPosition; position = mat3(gbufferModelView) * worldpos + gbufferModelView[3].xyz; } - if (mc_Entity.x == 10003 && abs(position.z) < 64.0) { + if (mc_Entity.x == BLOCK_AIR_WAVING && abs(position.z) < 64.0) { vec3 worldpos = mat3(gbufferModelViewInverse) * position + gbufferModelViewInverse[3].xyz + cameraPosition; worldpos.xyz += calcMoveLeaves(worldpos.xyz, 0.0040, 0.0064, 0.0043, 0.0035, 0.0037, 0.0041, vec3(1.0,0.2,1.0), vec3(0.5,0.1,0.5))*lmtexcoord.w - cameraPosition; position = mat3(gbufferModelView) * worldpos + gbufferModelView[3].xyz; diff --git a/shaders/lib/blocks.glsl b/shaders/lib/blocks.glsl index 0b34d97..5b2ff79 100644 --- a/shaders/lib/blocks.glsl +++ b/shaders/lib/blocks.glsl @@ -1,7 +1,13 @@ -#define BLOCK_EMPTY 0 - #define BLOCK_WATER 8 - +#define BLOCK_GROUND_WAVING 10 +#define BLOCK_AIR_WAVING 11 +#define BLOCK_GROUND_WAVING_VERTICAL 12 +#define BLOCK_SSS_STRONG 13 +#define BLOCK_SSS_WEAK 14 +#define BLOCK_SSS_WEAK_2 15 +#define BLOCK_SSS_WEAK_3 16 +#define BLOCK_SSS_WEIRD 17 +#define BLOCK_GRASS 18 #define BLOCK_AMETHYST_BUD_LARGE 1001 #define BLOCK_AMETHYST_BUD_MEDIUM 1002 #define BLOCK_AMETHYST_CLUSTER 1003 @@ -40,41 +46,36 @@ #define BLOCK_SOUL_LANTERN 1036 #define BLOCK_SOUL_TORCH 1037 #define BLOCK_TORCH 1038 - #define BLOCK_GLASS 1201 #define BLOCK_HONEY 1202 #define BLOCK_ICE 1203 #define BLOCK_NETHER_PORTAL 1204 #define BLOCK_SLIME 1205 - -#define BLOCK_GLASS_BLACK 1220 -#define BLOCK_GLASS_BLUE 1221 -#define BLOCK_GLASS_BROWN 1222 -#define BLOCK_GLASS_CYAN 1223 -#define BLOCK_GLASS_GRAY 1224 -#define BLOCK_GLASS_GREEN 1225 -#define BLOCK_GLASS_LIGHT_BLUE 1226 -#define BLOCK_GLASS_LIGHT_GRAY 1227 -#define BLOCK_GLASS_LIME 1228 -#define BLOCK_GLASS_MAGENTA 1229 -#define BLOCK_GLASS_ORANGE 1230 -#define BLOCK_GLASS_PINK 1231 -#define BLOCK_GLASS_PURPLE 1232 -#define BLOCK_GLASS_RED 1233 -#define BLOCK_GLASS_WHITE 1234 -#define BLOCK_GLASS_YELLOW 1235 - -#define BLOCK_DOOR_N 1301 -#define BLOCK_DOOR_E 1302 -#define BLOCK_DOOR_S 1303 -#define BLOCK_DOOR_W 1304 - -#define BLOCK_SLAB_TOP 1305 -#define BLOCK_SLAB_BOTTOM 1306 - -#define BLOCK_TRAPDOOR_BOTTOM 1307 -#define BLOCK_TRAPDOOR_TOP 1308 -#define BLOCK_TRAPDOOR_N 1309 -#define BLOCK_TRAPDOOR_E 1310 -#define BLOCK_TRAPDOOR_S 1311 -#define BLOCK_TRAPDOOR_W 1312 +#define BLOCK_GLASS_BLACK 1206 +#define BLOCK_GLASS_BLUE 1207 +#define BLOCK_GLASS_BROWN 1208 +#define BLOCK_GLASS_CYAN 1209 +#define BLOCK_GLASS_GRAY 1210 +#define BLOCK_GLASS_GREEN 1211 +#define BLOCK_GLASS_LIGHT_BLUE 1212 +#define BLOCK_GLASS_LIGHT_GRAY 1213 +#define BLOCK_GLASS_LIME 1214 +#define BLOCK_GLASS_MAGENTA 1215 +#define BLOCK_GLASS_ORANGE 1216 +#define BLOCK_GLASS_PINK 1217 +#define BLOCK_GLASS_PURPLE 1218 +#define BLOCK_GLASS_RED 1219 +#define BLOCK_GLASS_WHITE 1220 +#define BLOCK_GLASS_YELLOW 1221 +#define BLOCK_DOOR_N 1222 +#define BLOCK_DOOR_E 1223 +#define BLOCK_DOOR_S 1224 +#define BLOCK_DOOR_W 1225 +#define BLOCK_SLAB_TOP 1226 +#define BLOCK_SLAB_BOTTOM 1227 +#define BLOCK_TRAPDOOR_BOTTOM 1228 +#define BLOCK_TRAPDOOR_TOP 1229 +#define BLOCK_TRAPDOOR_N 1230 +#define BLOCK_TRAPDOOR_E 1231 +#define BLOCK_TRAPDOOR_S 1232 +#define BLOCK_TRAPDOOR_W 1233 diff --git a/shaders/lib/climate_settings.glsl b/shaders/lib/climate_settings.glsl index 87715de..4a89a47 100644 --- a/shaders/lib/climate_settings.glsl +++ b/shaders/lib/climate_settings.glsl @@ -32,7 +32,7 @@ SpringCol *= glcolor; // do leaf colors different because thats cool and i like it - if(mc_Entity.x == 10003){ + if(mc_Entity.x == BLOCK_AIR_WAVING){ SummerCol = vec3(Summer_Leaf_R, Summer_Leaf_G, Summer_Leaf_B); AutumnCol = vec3(Fall_Leaf_R, Fall_Leaf_G, Fall_Leaf_B); WinterCol = vec3(Winter_Leaf_R, Winter_Leaf_G, Winter_Leaf_B); diff --git a/shaders/lib/voxel_common.glsl b/shaders/lib/voxel_common.glsl index 2025bc2..138092d 100644 --- a/shaders/lib/voxel_common.glsl +++ b/shaders/lib/voxel_common.glsl @@ -4,3 +4,5 @@ const uint VoxelSize = uint(exp2(LPV_SIZE)); const uvec3 VoxelSize3 = uvec3(VoxelSize); const float voxelDistance = 64.0; + +#define BLOCK_EMPTY 0 diff --git a/shaders/world0/shadow.vsh b/shaders/world0/shadow.vsh index 2373ee0..89fa008 100644 --- a/shaders/world0/shadow.vsh +++ b/shaders/world0/shadow.vsh @@ -48,6 +48,7 @@ uniform int entityId; #include "/lib/Shadow_Params.glsl" #include "/lib/bokeh.glsl" +#include "/lib/blocks.glsl" #ifdef IS_LPV_ENABLED attribute vec3 at_midBlock; @@ -181,7 +182,7 @@ void main() { // } // #endif - uint blockId = uint(mc_Entity.x + 0.5); + int blockId = int(mc_Entity.x + 0.5); #if defined IS_LPV_ENABLED || defined WAVY_PLANTS vec3 playerpos = mat3(shadowModelViewInverse) * position + shadowModelViewInverse[3].xyz; @@ -194,7 +195,7 @@ void main() { renderStage == MC_RENDER_STAGE_TERRAIN_CUTOUT_MIPPED || renderStage == MC_RENDER_STAGE_TERRAIN_TRANSLUCENT ) { - uint voxelId = blockId; + uint voxelId = uint(blockId); if (voxelId == 0u) voxelId = 1u; vec3 originPos = playerpos + at_midBlock/64.0; @@ -205,12 +206,12 @@ void main() { #ifdef WAVY_PLANTS bool istopv = gl_MultiTexCoord0.t < mc_midTexCoord.t; - if ((blockId == 10001u || blockId == 10009u && istopv) && length(position.xy) < 24.0) { + if ((blockId == BLOCK_GROUND_WAVING || blockId == BLOCK_GROUND_WAVING_VERTICAL && istopv) && length(position.xy) < 24.0) { playerpos += calcMovePlants(playerpos + cameraPosition)*gl_MultiTexCoord1.y; position = mat3(shadowModelView) * playerpos + shadowModelView[3].xyz; } - if (blockId == 10003u && length(position.xy) < 24.0) { + if (blockId == BLOCK_AIR_WAVING && length(position.xy) < 24.0) { playerpos += calcMoveLeaves(playerpos + cameraPosition, 0.0040, 0.0064, 0.0043, 0.0035, 0.0037, 0.0041, vec3(1.0,0.2,1.0), vec3(0.5,0.1,0.5))*gl_MultiTexCoord1.y; position = mat3(shadowModelView) * playerpos + shadowModelView[3].xyz; } @@ -224,7 +225,7 @@ void main() { - if (blockId == 8u) gl_Position.w = -1.0; + if (blockId == BLOCK_WATER) gl_Position.w = -1.0; // color.a = 1.0; // if((blockID < 1200 || blockID >= 1300)) color.a = 0.0; From 433b8e03320bd68c6d9489e212c76606efdcdbf4 Mon Sep 17 00:00:00 2001 From: NULL511 Date: Fri, 3 May 2024 14:09:20 -0400 Subject: [PATCH 20/22] disabled fix --- shaders/shaders.properties | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/shaders/shaders.properties b/shaders/shaders.properties index c946035..44762ee 100644 --- a/shaders/shaders.properties +++ b/shaders/shaders.properties @@ -634,5 +634,11 @@ uniform.float.shadowMaxProj = 150.0/abs(sunPosY) image.imgLpv2 = none RGBA RGBA8 BYTE false false 64 64 64 #endif #else - program.shadowcomp.enabled = false + program.world1/setup.enabled = false + program.world0/setup.enabled = false + program.world-1/setup.enabled = false + + program.world1/shadowcomp.enabled = false + program.world0/shadowcomp.enabled = false + program.world-1/shadowcomp.enabled = false #endif From 8d80bb6d6c0c2a2f72c89ddc2947f9cfa14bdd50 Mon Sep 17 00:00:00 2001 From: NULL511 Date: Fri, 3 May 2024 14:53:31 -0400 Subject: [PATCH 21/22] misc fixes; add lang --- shaders/dimensions/all_solid.vsh | 4 ++-- shaders/lang/en_us.lang | 8 ++++++++ shaders/lib/blocks.glsl | 3 +++ shaders/shaders.properties | 6 +++++- shaders/world0/shadow.vsh | 2 +- 5 files changed, 19 insertions(+), 4 deletions(-) diff --git a/shaders/dimensions/all_solid.vsh b/shaders/dimensions/all_solid.vsh index 65b3b61..f4bdebf 100644 --- a/shaders/dimensions/all_solid.vsh +++ b/shaders/dimensions/all_solid.vsh @@ -238,9 +238,9 @@ void main() { #ifdef WORLD // disallow POM to work on signs. - if(blockEntityId == 2200) SIGN = 1; + if(blockEntityId == BLOCK_NO_POM) SIGN = 1; - if(blockEntityId == 2100) PORTAL = 1; + if(blockEntityId == BLOCK_END_PORTAL) PORTAL = 1; #endif NameTags = 0; diff --git a/shaders/lang/en_us.lang b/shaders/lang/en_us.lang index 9b985c4..3d37fb8 100644 --- a/shaders/lang/en_us.lang +++ b/shaders/lang/en_us.lang @@ -72,6 +72,14 @@ screen.Direct_Light = Direct Light option.Max_Shadow_Filter_Radius = Maximum Shadow Filter Radius option.Max_Filter_Depth = Sun Size Factor + screen.LPV = FloodFill + option.LPV_ENABLED = Enabled + option.LPV_SIZE = Size + value.LPV_SIZE.6 = Small [64] + value.LPV_SIZE.7 = Medium [128] + value.LPV_SIZE.8 = Large [256] + option.LPV_NORMAL_OFFSET = Normal-Offset + screen.Subsurface_Scattering = Sub-Surface Scattering option.LabSSS_Curve = LabSSS Curve diff --git a/shaders/lib/blocks.glsl b/shaders/lib/blocks.glsl index 5b2ff79..ac84156 100644 --- a/shaders/lib/blocks.glsl +++ b/shaders/lib/blocks.glsl @@ -79,3 +79,6 @@ #define BLOCK_TRAPDOOR_E 1231 #define BLOCK_TRAPDOOR_S 1232 #define BLOCK_TRAPDOOR_W 1233 +#define BLOCK_END_PORTAL 2100 +#define BLOCK_NO_POM 2200 +#define BLOCK_REDSTONE_WIRE 3000 diff --git a/shaders/shaders.properties b/shaders/shaders.properties index 44762ee..a230b53 100644 --- a/shaders/shaders.properties +++ b/shaders/shaders.properties @@ -125,7 +125,7 @@ BLISS_SHADERS \ ######## LIGHTING ### DIRECT LIGHT screen.Direct_Light.columns=1 - screen.Direct_Light = TRANSLUCENT_COLORED_SHADOWS [Shadows] [Subsurface_Scattering] [Sun_and_Moon_Colors] OLD_LIGHTLEAK_FIX sunPathRotation sun_illuminance MOONPHASE_BASED_MOONLIGHT moon_illuminance LPV_ENABLED + screen.Direct_Light = TRANSLUCENT_COLORED_SHADOWS [Shadows] [Subsurface_Scattering] [Sun_and_Moon_Colors] OLD_LIGHTLEAK_FIX sunPathRotation sun_illuminance MOONPHASE_BASED_MOONLIGHT moon_illuminance [LPV] screen.Shadows.columns=1 screen.Shadows = SCREENSPACE_CONTACT_SHADOWS RENDER_ENTITY_SHADOWS entityShadowDistanceMul [Filtering] shadowMapResolution shadowDistance shadowDistanceRenderMul @@ -165,6 +165,10 @@ BLISS_SHADERS \ screen.Porosity.columns = 1 screen.Porosity = Porosity Puddles Puddle_Size + ### FloodFill + screen.LPV.columns = 1 + screen.LPV = LPV_ENABLED LPV_SIZE LPV_NORMAL_OFFSET + ######## WORLD screen.World.columns=1 screen.World = [Water] [Waving_Stuff] [LabPBR] SKY_GROUND RESOURCEPACK_SKY AEROCHROME_MODE AEROCHROME_PINKNESS AEROCHROME_WOOL_ENABLED diff --git a/shaders/world0/shadow.vsh b/shaders/world0/shadow.vsh index 89fa008..f5c8880 100644 --- a/shaders/world0/shadow.vsh +++ b/shaders/world0/shadow.vsh @@ -140,7 +140,7 @@ void main() { // position = gl_Vertex.xyz; - // if((renderStage == 10 || renderStage == 12) && mc_Entity.x != 3000) { + // if((renderStage == 10 || renderStage == 12) && mc_Entity.x != BLOCK_REDSTONE_WIRE) { // position = (shadowModelViewInverse * vec4(gl_Vertex.xyz,1.0)).xyz; // } From 41a27eb29ef4806db3d1938cc5c808b77faa4dd3 Mon Sep 17 00:00:00 2001 From: NULL511 Date: Fri, 3 May 2024 16:31:48 -0400 Subject: [PATCH 22/22] final fixes --- shaders/lib/settings.glsl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shaders/lib/settings.glsl b/shaders/lib/settings.glsl index 6b21ec9..79813b8 100644 --- a/shaders/lib/settings.glsl +++ b/shaders/lib/settings.glsl @@ -670,7 +670,7 @@ const vec3 aerochrome_color = mix(vec3(1.0, 0.0, 0.0), vec3(0.715, 0.303, 0.631) /////////////////////////////////////////// -// ----- DISTANT HORIZONS SETTINGS ----- // +// ----- FLOODFILL [LPV] SETTINGS ----- // /////////////////////////////////////////// //#define LPV_ENABLED