From 3084e6296579bdc67a23f009647ba85641abf885 Mon Sep 17 00:00:00 2001 From: Merlin1809 <88194861+Merlin1809@users.noreply.github.com> Date: Wed, 25 Mar 2026 21:51:34 +0100 Subject: [PATCH 1/3] same as last one but without mistake --- shaders/shaders.properties | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/shaders/shaders.properties b/shaders/shaders.properties index 4297b94..3c64d36 100644 --- a/shaders/shaders.properties +++ b/shaders/shaders.properties @@ -155,14 +155,14 @@ iext.geometry.gbuffers_terrain=false particles.before.deferred=false particles.ordering=after -program.world0/gbuffers_entities_translucent.enabled = TRANSLUCENT_ENTITIES && IS_IRIS || defined IRIS_REQUIRES_SEPARATE_ENTITY_DRAWS -program.world0/gbuffers_block_translucent.enabled = TRANSLUCENT_ENTITIES && IS_IRIS || defined IRIS_REQUIRES_SEPARATE_ENTITY_DRAWS +program.world0/gbuffers_entities_translucent.enabled = TRANSLUCENT_ENTITIES && IS_IRIS || IRIS_REQUIRES_SEPARATE_ENTITY_DRAWS +program.world0/gbuffers_block_translucent.enabled = TRANSLUCENT_ENTITIES && IS_IRIS || IRIS_REQUIRES_SEPARATE_ENTITY_DRAWS -program.world-1/gbuffers_entities_translucent.enabled = TRANSLUCENT_ENTITIES && IS_IRIS || defined IRIS_REQUIRES_SEPARATE_ENTITY_DRAWS -program.world-1/gbuffers_block_translucent.enabled = TRANSLUCENT_ENTITIES && IS_IRIS || defined IRIS_REQUIRES_SEPARATE_ENTITY_DRAWS +program.world-1/gbuffers_entities_translucent.enabled = TRANSLUCENT_ENTITIES && IS_IRIS || IRIS_REQUIRES_SEPARATE_ENTITY_DRAWS +program.world-1/gbuffers_block_translucent.enabled = TRANSLUCENT_ENTITIES && IS_IRIS || IRIS_REQUIRES_SEPARATE_ENTITY_DRAWS -program.world1/gbuffers_entities_translucent.enabled = TRANSLUCENT_ENTITIES && IS_IRIS || defined IRIS_REQUIRES_SEPARATE_ENTITY_DRAWS -program.world1/gbuffers_block_translucent.enabled = TRANSLUCENT_ENTITIES && IS_IRIS || defined IRIS_REQUIRES_SEPARATE_ENTITY_DRAWS +program.world1/gbuffers_entities_translucent.enabled = TRANSLUCENT_ENTITIES && IS_IRIS || IRIS_REQUIRES_SEPARATE_ENTITY_DRAWS +program.world1/gbuffers_block_translucent.enabled = TRANSLUCENT_ENTITIES && IS_IRIS || IRIS_REQUIRES_SEPARATE_ENTITY_DRAWS #if defined DISTANT_HORIZONS && defined IS_IRIS From 43f847d5767a5d82442ef1b5def9732d7fbe0490 Mon Sep 17 00:00:00 2001 From: Merlin1809 <88194861+Merlin1809@users.noreply.github.com> Date: Wed, 25 Mar 2026 22:22:51 +0100 Subject: [PATCH 2/3] add support for dynamic trees BOP leaves and saplings, make active creaking hard emissive with hardcoded emission, fix the last mistake again, fix bugged shadows with 3d skin layers on 1.21+ --- shaders/block.properties | 10 +- shaders/lang/en_us.lang | 2 +- shaders/lang/zh_cn.lang | 2 +- shaders/shaders.properties | 15 +- shaders/world0/shadow_entities.fsh | 59 ++++++ shaders/world0/shadow_entities.vsh | 280 +++++++++++++++++++++++++++++ 6 files changed, 357 insertions(+), 11 deletions(-) create mode 100644 shaders/world0/shadow_entities.fsh create mode 100644 shaders/world0/shadow_entities.vsh diff --git a/shaders/block.properties b/shaders/block.properties index a2c697c..946ffbd 100644 --- a/shaders/block.properties +++ b/shaders/block.properties @@ -30,7 +30,8 @@ block.14=minecraft:small_dripleaf:half=upper minecraft:pitcher_plant:half=upper block.15=acacia_sapling birch_sapling cherry_sapling crimson_sapling dark_oak_sapling jungle_sapling mangrove_sapling oak_sapling pale_oak_sapling spruce_sapling warped_sapling \ - biomesoplenty:hellbark_sapling biomesoplenty:empyreal_sapling biomesoplenty:origin_sapling biomesoplenty:flowering_oak_sapling biomesoplenty:cypress_sapling biomesoplenty:snowblossom_sapling biomesoplenty:rainbow_birch_sapling biomesoplenty:fir_sapling biomesoplenty:red_maple_sapling biomesoplenty:orange_maple_sapling biomesoplenty:yellow_maple_sapling biomesoplenty:redwood_sapling biomesoplenty:mahogany_sapling biomesoplenty:jacaranda_sapling biomesoplenty:palm_sapling biomesoplenty:willow_sapling biomesoplenty:dead_sapling biomesoplenty:magic_sapling biomesoplenty:umbran_sapling + biomesoplenty:hellbark_sapling biomesoplenty:empyreal_sapling biomesoplenty:origin_sapling biomesoplenty:flowering_oak_sapling biomesoplenty:cypress_sapling biomesoplenty:snowblossom_sapling biomesoplenty:rainbow_birch_sapling biomesoplenty:fir_sapling biomesoplenty:red_maple_sapling biomesoplenty:orange_maple_sapling biomesoplenty:yellow_maple_sapling biomesoplenty:redwood_sapling biomesoplenty:mahogany_sapling biomesoplenty:jacaranda_sapling biomesoplenty:palm_sapling biomesoplenty:willow_sapling biomesoplenty:dead_sapling biomesoplenty:magic_sapling biomesoplenty:umbran_sapling \ + dtbop:aspen_sapling dtbop:dark_poplar_sapling dtbop:dying_sapling dtbop:fir_sapling dtbop:flowering_oak_sapling dtbop:glowshroom_sapling dtbop:hellbark_sapling dtbop:jacaranda_sapling dtbop:magic_poplar_sapling dtbop:mahogany_sapling dtbop:orange_maple_sapling dtbop:palm_sapling dtbop:pine_sapling dtbop:poplar_sapling dtbop:rainbow_birch_sapling dtbop:red_maple_sapling dtbop:redwood_sapling dtbop:snowblossom_sapling dtbop:spruce_poplar_sapling dtbop:toadstool_sapling dtbop:umbran_sapling dtbop:willow_sapling dtbop:yellow_maple_sapling #ifdef BOES_EARTH_BLOCKSTATES #define vine_entry vine:is_on_leaves=false #else @@ -159,7 +160,10 @@ block.56=minecraft:pale_hanging_moss minecraft:azalea_leaves minecraft:flowering natures_spirit:frosty_redwood_leaves natures_spirit:redwood_leaves natures_spirit:sugi_leaves natures_spirit:wisteria_leaves natures_spirit:white_wisteria_leaves natures_spirit:blue_wisteria_leaves natures_spirit:pink_wisteria_leaves natures_spirit:purple_wisteria_leaves natures_spirit:part_white_wisteria_leaves natures_spirit:part_blue_wisteria_leaves natures_spirit:part_pink_wisteria_leaves natures_spirit:part_purple_wisteria_leaves natures_spirit:frosty_fir_leaves natures_spirit:fir_leaves natures_spirit:willow_leaves natures_spirit:aspen_leaves natures_spirit:red_maple_leaves natures_spirit:orange_maple_leaves natures_spirit:yellow_maple_leaves natures_spirit:cypress_leaves natures_spirit:olive_leaves natures_spirit:joshua_leaves natures_spirit:ghaf_leaves natures_spirit:palo_verde_leaves natures_spirit:coconut_leaves natures_spirit:cedar_leaves natures_spirit:larch_leaves natures_spirit:yellow_larch_leaves natures_spirit:mahogany_leaves natures_spirit:saxaul_leaves \ twilightforest:twilight_oak_leaves twilightforest:canopy_leaves twilightforest:dark_leaves twilightforest:hardened_dark_leaves \ vinery:dark_cherry_leaves vinery:apple_leaves \ - westerosblocks:vine_jasmine westerosblocks:apple_fruit_leaves westerosblocks:apricot_fruit_leaves westerosblocks:cherry_fruit_leaves westerosblocks:purple_grape_fruit_leaves westerosblocks:lemon_fruit_leaves westerosblocks:lime_fruit_leaves westerosblocks:orange_fruit_leaves westerosblocks:peach_fruit_leaves westerosblocks:plum_fruit_leaves westerosblocks:pomegranate_fruit_leaves westerosblocks:weirwood_leaves westerosblocks:hop_fruit_leaves westerosblocks:olive_fruit_leaves westerosblocks:palm_leaves westerosblocks:white_grape_fruit_leaves + 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 \ + dtbop:acacia_twiglet_leaves dtbop:acacia_undergrowth_leaves dtbop:cherry_twiglet_leaves dtbop:cypress_willow_leaves dtbop:dark_oak_twiglet_leaves dtbop:dark_poplar_leaves dtbop:dying_leaves dtbop:hellbark_bush_leaves dtbop:hellbark_leaves dtbop:jacaranda_leaves dtbop:jungle_twiglet_leaves dtbop:magic_poplar_leaves dtbop:mahogany_leaves dtbop:mangrove_twiglet_leaves dtbop:mega_dark_oak_leaves dtbop:oak_twiglet_leaves dtbop:orange_maple_leaves dtbop:pine_leaves dtbop:poplar_leaves dtbop:rainbow_birch_leaves dtbop:redwood_leaves dtbop:snowblossom_leaves dtbop:snowblossom_twiglet_leaves dtbop:sparse_acacia_leaves dtbop:sparse_oak_leaves dtbop:spruce_poplar_leaves dtbop:spruce_twiglet_leaves dtbop:spruce_undergrowth_leaves dtbop:umbran_leaves \ + dtbop:aspen_leaves dtbop:fir_leaves dtbop:flowering_oak_undergrowth_leaves dtbop:maple_twiglet_leaves dtbop:palm_leaves dtbop:red_maple_leaves dtbop:willow_leaves dtbop:yellow_maple_leaves \ + dtbop:flowering_oak_leaves block.57=birch_button:face=floor:facing=north cherry_button:face=floor:facing=north crimson_button:face=floor:facing=north dark_oak_button:face=floor:facing=north jungle_button:face=floor:facing=north mangrove_button:face=floor:facing=north oak_button:face=floor:facing=north pale_oak_button:face=floor:facing=north spruce_button:face=floor:facing=north warped_button:face=floor:facing=north polished_blackstone_button:face=floor:facing=north stone_button:face=floor:facing=north birch_button:face=floor:facing=south cherry_button:face=floor:facing=south crimson_button:face=floor:facing=south dark_oak_button:face=floor:facing=south jungle_button:face=floor:facing=south mangrove_button:face=floor:facing=south oak_button:face=floor:facing=south pale_oak_button:face=floor:facing=south spruce_button:face=floor:facing=south warped_button:face=floor:facing=south polished_blackstone_button:face=floor:facing=south stone_button:face=floor:facing=south block.58=birch_button:face=floor:facing=east cherry_button:face=floor:facing=east crimson_button:face=floor:facing=east dark_oak_button:face=floor:facing=east jungle_button:face=floor:facing=east mangrove_button:face=floor:facing=east oak_button:face=floor:facing=east pale_oak_button:face=floor:facing=east spruce_button:face=floor:facing=east warped_button:face=floor:facing=east polished_blackstone_button:face=floor:facing=east stone_button:face=floor:facing=east birch_button:face=floor:facing=west cherry_button:face=floor:facing=west crimson_button:face=floor:facing=west dark_oak_button:face=floor:facing=west jungle_button:face=floor:facing=west mangrove_button:face=floor:facing=west oak_button:face=floor:facing=west pale_oak_button:face=floor:facing=west spruce_button:face=floor:facing=west warped_button:face=floor:facing=west polished_blackstone_button:face=floor:facing=west stone_button:face=floor:facing=west @@ -554,7 +558,7 @@ block.199=lava minecraft:lava_cauldron \ flying_stuff:molten_metal:lit=true \ mcwlights:lava_lamp:lit=true -block.200=light:level=1 +block.200=light:level=1 creaking_heart:creaking_heart_state=awake block.201=light:level=2 diff --git a/shaders/lang/en_us.lang b/shaders/lang/en_us.lang index 6ef66ac..445ebb3 100644 --- a/shaders/lang/en_us.lang +++ b/shaders/lang/en_us.lang @@ -1,6 +1,6 @@ option.SHADER_VERSION_LABEL = §d§lECLIPSE§r - A Bliss Edit prefix.SHADER_VERSION_LABEL = V - value.SHADER_VERSION_LABEL.482 = 8.0.1 + value.SHADER_VERSION_LABEL.482 = 8.0.2 iris_extension.keybind.key0.name=Flashlight diff --git a/shaders/lang/zh_cn.lang b/shaders/lang/zh_cn.lang index dcf6d2a..6bae15e 100644 --- a/shaders/lang/zh_cn.lang +++ b/shaders/lang/zh_cn.lang @@ -1,6 +1,6 @@ option.SHADER_VERSION_LABEL = §d§lECLIPSE§r - Bliss 编辑版 prefix.SHADER_VERSION_LABEL = 版本 - value.SHADER_VERSION_LABEL.482 = 8.0.1 + value.SHADER_VERSION_LABEL.482 = 8.0.2 # 如果你是来翻译的,这不是玩笑,这些选项的功能正如其名 profile.POTATO=§4土豆 (极低配置) diff --git a/shaders/shaders.properties b/shaders/shaders.properties index 3c64d36..35f8048 100644 --- a/shaders/shaders.properties +++ b/shaders/shaders.properties @@ -155,14 +155,16 @@ iext.geometry.gbuffers_terrain=false particles.before.deferred=false particles.ordering=after -program.world0/gbuffers_entities_translucent.enabled = TRANSLUCENT_ENTITIES && IS_IRIS || IRIS_REQUIRES_SEPARATE_ENTITY_DRAWS -program.world0/gbuffers_block_translucent.enabled = TRANSLUCENT_ENTITIES && IS_IRIS || IRIS_REQUIRES_SEPARATE_ENTITY_DRAWS +#if defined TRANSLUCENT_ENTITIES && defined IS_IRIS || defined IRIS_REQUIRES_SEPARATE_ENTITY_DRAWS + program.world0/gbuffers_entities_translucent.enabled = true + program.world0/gbuffers_block_translucent.enabled = true -program.world-1/gbuffers_entities_translucent.enabled = TRANSLUCENT_ENTITIES && IS_IRIS || IRIS_REQUIRES_SEPARATE_ENTITY_DRAWS -program.world-1/gbuffers_block_translucent.enabled = TRANSLUCENT_ENTITIES && IS_IRIS || IRIS_REQUIRES_SEPARATE_ENTITY_DRAWS + program.world-1/gbuffers_entities_translucent.enabled = true + program.world-1/gbuffers_block_translucent.enabled = true -program.world1/gbuffers_entities_translucent.enabled = TRANSLUCENT_ENTITIES && IS_IRIS || IRIS_REQUIRES_SEPARATE_ENTITY_DRAWS -program.world1/gbuffers_block_translucent.enabled = TRANSLUCENT_ENTITIES && IS_IRIS || IRIS_REQUIRES_SEPARATE_ENTITY_DRAWS + program.world1/gbuffers_entities_translucent.enabled = true + program.world1/gbuffers_block_translucent.enabled = true +#endif #if defined DISTANT_HORIZONS && defined IS_IRIS @@ -226,6 +228,7 @@ blend.gbuffers_skybasic = SRC_ALPHA ONE ONE ONE blend.shadow = ONE ZERO ONE ZERO +blend.shadow_entities = ONE ZERO ONE ZERO # Disable blending blend.gbuffers_terrain = off blend.gbuffers_hand = off diff --git a/shaders/world0/shadow_entities.fsh b/shaders/world0/shadow_entities.fsh new file mode 100644 index 0000000..9087637 --- /dev/null +++ b/shaders/world0/shadow_entities.fsh @@ -0,0 +1,59 @@ +#version 430 compatibility + +#include "/lib/settings.glsl" + +in DATA { + vec2 texcoord; + vec3 color; + vec3 playerpos; +}; + +uniform sampler2D gtexture; +uniform sampler2D noisetex; + +#if defined DISTANT_HORIZONS && DH_CHUNK_FADING > 1 + uniform float far; +#endif + +in float LIGHTNING; +uniform float frameTimeCounter; + +float blueNoise(){ + return fract(texelFetch(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 ); +} + +uniform int renderStage; + +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// +//////////////////////////////VOID MAIN////////////////////////////// + + +void main() { + if (LIGHTNING > 0.0) discard; + + #if defined DISTANT_HORIZONS && DH_CHUNK_FADING > 1 + float viewDist = length(playerpos); + float minDist = min(shadowDistance, far); + + float ditherFade = smoothstep(0.93 * minDist, minDist, viewDist); + + if (step(ditherFade, blueNoise()) == 0.0) discard; + #endif + + vec4 shadowColor = vec4(texture(gtexture,texcoord.xy).rgb * color, textureLod(gtexture, texcoord.xy, 0).a); + + // #ifdef TRANSLUCENT_COLORED_SHADOWS + // if(shadowColor.a > 0.9999) shadowColor.rgb = vec3(0.0); + // #endif + + gl_FragData[0] = shadowColor; + + // gl_FragData[0] = vec4(texture(tex,texcoord.xy).rgb * color.rgb, textureLod(tex, texcoord.xy, 0).a); + + #ifdef Stochastic_Transparent_Shadows + if(gl_FragData[0].a < blueNoise()) { discard; return;} + #endif +} diff --git a/shaders/world0/shadow_entities.vsh b/shaders/world0/shadow_entities.vsh new file mode 100644 index 0000000..8f1dc92 --- /dev/null +++ b/shaders/world0/shadow_entities.vsh @@ -0,0 +1,280 @@ +#version 430 compatibility +#include "/lib/SSBOs.glsl" + + +#include "/lib/settings.glsl" +#if defined IS_LPV_ENABLED || (WATER_INTERACTION == 2 && IRIS_VERSION < 11004) || defined SHADER_GRASS + #extension GL_ARB_explicit_attrib_location: enable + #extension GL_ARB_shader_image_load_store: enable +#endif + +#define RENDER_SHADOW +#define ENTITIES_SHADOW + +uniform float alphaTestRef; +uniform vec3 previousCameraPosition; +// #define SAVE_VOXEL_STUFF + +/* +!! DO NOT REMOVE !! +This code is from Chocapic13' shaders +Read the terms of modification and sharing before changing something below please ! +!! DO NOT REMOVE !! +*/ + +out DATA { + vec2 texcoord; + vec3 color; + vec3 playerpos; +}; + +in vec4 mc_midTexCoord; +in vec4 mc_Entity; + +#define SHADOW_MAP_BIAS 0.5 +const float PI = 3.1415927; + +uniform mat4 shadowProjectionInverse; +uniform mat4 shadowProjection; +uniform mat4 shadowModelViewInverse; +uniform mat4 shadowModelView; +uniform mat4 gbufferModelView; +uniform mat4 gbufferModelViewInverse; +uniform mat4 gbufferProjection; +uniform mat4 gbufferProjectionInverse; +uniform int hideGUI; +uniform vec3 cameraPosition; +uniform vec3 relativeEyePosition; +uniform float frameTimeCounter; +uniform int frameCounter; +uniform float screenBrightness; +uniform vec3 sunVec; +uniform float aspectRatio; +uniform float sunElevation; +uniform vec3 sunPosition; +uniform float lightSign; +uniform float cosFov; +uniform vec3 shadowViewDir; +uniform vec3 shadowCamera; +uniform vec3 shadowLightVec; +uniform float shadowMaxProj; + +uniform int blockEntityId; +uniform int entityId; + +//encoding by jodie +float encodeVec2(vec2 a){ + const vec2 constant1 = vec2( 1., 256.) / 65535.; + vec2 temp = floor( a * 255. ); + return temp.x*constant1.x+temp.y*constant1.y; +} +float encodeVec2(float x,float y){ + return encodeVec2(vec2(x,y)); +} +vec3 viewToWorld(vec3 viewPos) { + vec4 pos; + pos.xyz = viewPos; + pos.w = 0.0; + pos = shadowModelViewInverse * pos; + return pos.xyz; +} + +#include "/lib/Shadow_Params.glsl" +#include "/lib/bokeh.glsl" +#include "/lib/blocks.glsl" +#include "/lib/entities.glsl" + +#if defined IS_LPV_ENABLED || (WATER_INTERACTION == 2 && IRIS_VERSION < 11004) || defined SHADER_GRASS + #ifdef IRIS_FEATURE_BLOCK_EMISSION_ATTRIBUTE + in vec4 at_midBlock; + #else + in vec3 at_midBlock; + #endif + uniform int currentRenderedItemId; + uniform int renderStage; + + #include "/lib/voxel_common.glsl" + #include "/lib/voxel_write.glsl" +#endif + +const float PI48 = 150.796447372*WAVY_SPEED; +float pi2wt = PI48*frameTimeCounter; + +out float LIGHTNING; + +vec2 calcWave(in vec3 pos) { + + float magnitude = abs(sin(dot(vec4(frameTimeCounter, pos),vec4(1.0,0.005,0.005,0.005)))*0.5+0.72)*0.013; + vec2 ret = (sin(pi2wt*vec2(0.0063,0.0015)*4. - pos.xz + pos.y*0.05)+0.1)*magnitude; + + return ret; +} + +vec3 calcMovePlants(in vec3 pos) { + vec2 move1 = calcWave(pos ); + float move1y = -length(move1); + return vec3(move1.x,move1y,move1.y)*5.*WAVY_STRENGTH/255.0; +} + +vec3 calcWaveLeaves(in vec3 pos, in float fm, in float mm, in float ma, in float f0, in float f1, in float f2, in float f3, in float f4, in float f5) { + + float magnitude = abs(sin(dot(vec4(frameTimeCounter, pos),vec4(1.0,0.005,0.005,0.005)))*0.5+0.72)*0.013; + vec3 ret = (sin(pi2wt*vec3(0.0063,0.0224,0.0015)*1.5 - pos))*magnitude; + + return ret; +} + +vec3 calcMoveLeaves(in vec3 pos, in float f0, in float f1, in float f2, in float f3, in float f4, in float f5, in vec3 amp1, in vec3 amp2) { + vec3 move1 = calcWaveLeaves(pos , 0.0054, 0.0400, 0.0400, 0.0127, 0.0089, 0.0114, 0.0063, 0.0224, 0.0015) * amp1; + return move1*5.*WAVY_STRENGTH/255.; +} +bool intersectCone(float coneHalfAngle, vec3 coneTip , vec3 coneAxis, vec3 rayOrig, vec3 rayDir, float maxZ) +{ + vec3 co = rayOrig - coneTip; + float prod = dot(normalize(co),coneAxis); + if (prod <= -coneHalfAngle) return true; //In view frustrum + + float a = dot(rayDir,coneAxis)*dot(rayDir,coneAxis) - coneHalfAngle*coneHalfAngle; + float b = 2. * (dot(rayDir,coneAxis)*dot(co,coneAxis) - dot(rayDir,co)*coneHalfAngle*coneHalfAngle); + float c = dot(co,coneAxis)*dot(co,coneAxis) - dot(co,co)*coneHalfAngle*coneHalfAngle; + + float det = b*b - 4.*a*c; + if (det < 0.) return false; // No intersection with either forward cone and backward cone + + det = sqrt(det); + float t2 = (-b + det) / (2. * a); + if (t2 <= 0.0 || t2 >= maxZ) return false; //Idk why it works + + return true; +} +#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) +#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) + + + +// uniform float far; +uniform float dhVoxyFarPlane; + +#include "/lib/DistantHorizons_projections.glsl" + +vec4 toClipSpace3(vec3 viewSpacePosition) { + + // mat4 projection = DH_shadowProjectionTweak(gl_ProjectionMatrix); + + return vec4(projMAD(gl_ProjectionMatrix, viewSpacePosition),1.0); +} + +// uniform int renderStage; + +// uniform mat4 gbufferModelViewInverse; +void main() { + texcoord.xy = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy; + color = gl_Color.rgb; + + vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz; + + + // playerpos = vec4(0.0); + // playerpos = gbufferModelViewInverse * (gl_ModelViewMatrix * gl_Vertex); + + // mat4 Custom_ViewMatrix = BuildShadowViewMatrix(LightDir); + // mat4 Custom_ProjectionMatrix = BuildShadowProjectionMatrix(); + + // position = gl_Vertex.xyz; + + // if((renderStage == 10 || renderStage == 12) && mc_Entity.x != 3000) { + // position = (shadowModelViewInverse * vec4(gl_Vertex.xyz,1.0)).xyz; + // } + + // position = mat3(Custom_ViewMatrix) * position + Custom_ViewMatrix[3].xyz; + + // HHHHHHHHH ITS THE JITTER DOF HERE TO SAY HELLO + // It turns out 'position' above is just viewPos lmao + // #ifdef DOF_JITTER_SHADOW + // // CLIP SPACE + // vec2 jitter = clamp(jitter_offsets[frameCounter % 64], -1.0, 1.0); + // jitter = rotate(radians(float(frameCounter))) * jitter; + // jitter.y *= aspectRatio; + // jitter.x *= DOF_ANAMORPHIC_RATIO; + + // vec4 clipPos = gbufferProjection * vec4(position, 1.0); + + // // CLIP SPACE -> VIEW SPACE + // vec3 viewPos = (gbufferProjectionInverse * clipPos).xyz; + + // // Focus distance + // #if DOF_JITTER_FOCUS < 0 + // float focusMul = clipPos.z - mix(pow(512.0, screenBrightness), 512.0 * screenBrightness, 0.25); + // #else + // float focusMul = clipPos.z - DOF_JITTER_FOCUS; + // #endif + + // // CLIP SPACE -> SHADOW CLIP SPACE + // vec3 jitterViewPos = (gbufferProjectionInverse * vec4(jitter, 1.0, 1.0)).xyz; + // // vec3 jitterFeetPos = (gbufferModelViewInverse * vec4(jitterViewPos, 1.0)).xyz; + // // vec3 jitterShadowViewPos = (shadowModelView * vec4(jitterFeetPos, 1.0)).xyz; + // // vec4 jitterShadowClipPos = gl_ProjectionMatrix * vec4(jitterShadowViewPos, 1.0); + + // // vec4 totalOffset = jitterShadowClipPos * JITTER_STRENGTH * focusMul * 1e-2; + + // position += jitterViewPos * focusMul * 1e-2; + // if(focusMul < 10.0) { + // gl_Position = vec4(-1.0); + // return; + // } + // #endif + + // #if defined IS_LPV_ENABLED || defined WAVY_PLANTS || !defined PLANET_CURVATURE + playerpos = mat3(shadowModelViewInverse) * position + shadowModelViewInverse[3].xyz; + // #endif + + #if defined IS_LPV_ENABLED && defined MC_GL_ARB_shader_image_load_store || (WATER_INTERACTION == 2 && IRIS_VERSION < 11004) || defined SHADER_GRASS + PopulateShadowVoxel(playerpos); + #endif + + // #ifdef WAVY_PLANTS + // bool istopv = gl_MultiTexCoord0.t < mc_midTexCoord.t; + // if ( + // ( + // blockId == BLOCK_GROUND_WAVING || blockId == BLOCK_GROUND_WAVING_VERTICAL || + // blockId == BLOCK_GRASS_SHORT || (blockId == BLOCK_GRASS_TALL_UPPER && istopv) || + // blockId == BLOCK_SAPLING + // ) && length(position.xy) < 24.0 + // ) { + // playerpos += calcMovePlants(playerpos + cameraPosition)*gl_MultiTexCoord1.y; + // position = mat3(shadowModelView) * playerpos + shadowModelView[3].xyz; + // } + + // 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; + // } + // #endif + + vec3 worldpos = playerpos; + + LIGHTNING = 0.0; + if (entityId == ENTITY_LIGHTNING) LIGHTNING = 1.0; + + #ifdef PLANET_CURVATURE + float curvature = length(worldpos.xz) / (16*8); + worldpos.y -= curvature*curvature * CURVATURE_AMOUNT; + #endif + + #ifdef CUSTOM_MOON_ROTATION + position = mat3(customShadowMatrixSSBO) * worldpos + customShadowMatrixSSBO[3].xyz; + #else + position = mat3(shadowModelView) * worldpos + shadowModelView[3].xyz; + #endif + + #ifdef DISTORT_SHADOWMAP + if (entityId == ENTITY_SSS_MEDIUM || entityId == ENTITY_SLIME) + position.xyz = position.xyz - normalize(gl_NormalMatrix * gl_Normal) * 0.25; + + gl_Position = BiasShadowProjection(toClipSpace3(position)); + #else + gl_Position = toClipSpace3(position); + #endif + + gl_Position.z /= 6.0; +} \ No newline at end of file From aaf2f7a7ce4a889602422ed7d7b0ddb29588f9f0 Mon Sep 17 00:00:00 2001 From: Merlin1809 <88194861+Merlin1809@users.noreply.github.com> Date: Wed, 25 Mar 2026 22:35:41 +0100 Subject: [PATCH 3/3] fix the same thing again for the fourth time --- shaders/shaders.properties | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/shaders/shaders.properties b/shaders/shaders.properties index 35f8048..df2296d 100644 --- a/shaders/shaders.properties +++ b/shaders/shaders.properties @@ -155,15 +155,15 @@ iext.geometry.gbuffers_terrain=false particles.before.deferred=false particles.ordering=after -#if defined TRANSLUCENT_ENTITIES && defined IS_IRIS || defined IRIS_REQUIRES_SEPARATE_ENTITY_DRAWS - program.world0/gbuffers_entities_translucent.enabled = true - program.world0/gbuffers_block_translucent.enabled = true +#if !(defined TRANSLUCENT_ENTITIES && defined IS_IRIS || defined IRIS_REQUIRES_SEPARATE_ENTITY_DRAWS) + program.world0/gbuffers_entities_translucent.enabled = false + program.world0/gbuffers_block_translucent.enabled = false - program.world-1/gbuffers_entities_translucent.enabled = true - program.world-1/gbuffers_block_translucent.enabled = true + program.world-1/gbuffers_entities_translucent.enabled = false + program.world-1/gbuffers_block_translucent.enabled = false - program.world1/gbuffers_entities_translucent.enabled = true - program.world1/gbuffers_block_translucent.enabled = true + program.world1/gbuffers_entities_translucent.enabled = false + program.world1/gbuffers_block_translucent.enabled = false #endif #if defined DISTANT_HORIZONS && defined IS_IRIS @@ -1052,9 +1052,10 @@ uniform.int.dhVoxyRenderDistance = dhRenderDistance #ifndef END_ISLAND_LIGHT program.world1/shadow.enabled = false - program.world1/begin.enabled = false + program.world1/shadow_entities.enabled = false #endif program.world-1/shadow.enabled = false + program.world-1/shadow_entities.enabled = false program.world1/shadowcomp.enabled = false program.world0/shadowcomp.enabled = false