4 Commits

Author SHA1 Message Date
d33a617c99 Added Sildurs Enhanced Default Shaderpack 2025-06-08 01:32:29 +02:00
fec642b75d readme 2025-06-07 06:04:17 +02:00
samsonsin
a0da10b73a change version number 2025-06-06 23:52:43 +02:00
samsonsin
4685d77b98 Added WorldEditCuiFe-v1.0.7-mf-1.7.10-10.13.4.1566.jar 2025-06-05 20:39:46 +02:00
49 changed files with 2177 additions and 1 deletions

View File

@@ -0,0 +1,2 @@
#Sun Jun 08 01:23:13 CEST 2025
TAA=false

View File

@@ -0,0 +1,88 @@
#Forge mods may add custom block mapping as "assets/<modid>/shaders/block.properties" in the mod JAR file.
#Format "block.<id>=<block1> <block2> ..."
#Only one line per block ID is allowed.
# Short format
#block.31=red_flower yellow_flower reeds
# Long format
#block.32=minecraft:red_flower ic2:nether_flower botania:reeds
# Properties
#block.33=minecraft:red_flower:type=white_tulip minecraft:red_flower:type=pink_tulip botania:reeds:type=green
# Block ID, Metadata (backwards compatibility)
#block.34=38:6 38:7 83
#==================================================================================================================
#if MC_VERSION >= 12006
# WAVING ENTITIES
# small grass, fern
block.10031 = short_grass fern
# Small entities
block.10059 = wheat dead_bush brown_mushroom red_mushroom oak_sapling spruce_sapling birch_sapling jungle_sapling acacia_sapling dark_oak_sapling dandelion poppy blue_orchid allium azure_bluet red_tulip orange_tulip white_tulip pink_tulip oxeye_daisy carrots beetroots potatoes lily_of_the_valley wither_rose cornflower sweet_berry_bush crimson_fungus warped_fungus crimson_roots warped_roots nether_sprouts mangrove_propagule cherry_sapling pink_petals torchflower_crop torchflower pale_oak_sapling closed_eyeblossom open_eyeblossom bush firefly_bush cactus_flower wildflowers short_dry_grass tall_dry_grass
# Tall grass/Tall flowers
block.10175 = sunflower:half=lower lilac:half=lower tall_grass:half=lower large_fern:half=lower rose_bush:half=lower peony:half=lower small_dripleaf:half=lower pitcher_plant:half=lower
block.10176 = sunflower:half=upper lilac:half=upper tall_grass:half=upper large_fern:half=upper rose_bush:half=upper peony:half=upper small_dripleaf:half=upper big_dripleaf big_dripleaf_stem azalea flowering_azalea pitcher_plant:half=upper
# Inverted lower half, so they hang from the ceiling
block.10177 = hanging_roots
# Leaves
block.10018 = oak_leaves spruce_leaves birch_leaves jungle_leaves acacia_leaves dark_oak_leaves azalea_leaves flowering_azalea_leaves mangrove_leaves cherry_leaves pale_oak_leaves
# vines
block.10106 = vine weeping_vines_plant weeping_vines twisting_vines_plant twisting_vines cave_vines_plant cave_vines pale_hanging_moss
# lilypad
block.10111 = lily_pad
# fire
block.10051 = fire
# Lava
block.10010 = lava
# REFLECTIONS
# Water reflections (8, 9), also used for waving water
block.10008 = water
# Transparent reflections, ice(79), stained glass(95, 160), slimeblock(165)
block.10079 = ice honey_block slime_block white_stained_glass orange_stained_glass magenta_stained_glass light_blue_stained_glass yellow_stained_glass lime_stained_glass pink_stained_glass gray_stained_glass light_gray_stained_glass cyan_stained_glass purple_stained_glass blue_stained_glass brown_stained_glass green_stained_glass red_stained_glass black_stained_glass white_stained_glass_pane orange_stained_glass_pane magenta_stained_glass_pane light_blue_stained_glass_pane yellow_stained_glass_pane lime_stained_glass_pane pink_stained_glass_pane gray_stained_glass_pane light_gray_stained_glass_pane cyan_stained_glass_pane purple_stained_glass_pane blue_stained_glass_pane brown_stained_glass_pane green_stained_glass_pane red_stained_glass_pane black_stained_glass_pane
# Emissive entities (glowstone 89)
block.10089 = vault glowstone torch wall_torch redstone_torch:lit=true redstone_wall_torch:lit=true redstone_lamp:lit=true furnace:lit=true blast_furnace:lit=true smoker:lit=true jack_o_lantern beacon campfire lantern:hanging=false shroomlight candle:lit=true white_candle:lit=true orange_candle:lit=true magenta_candle:lit=true light_blue_candle:lit=true yellow_candle:lit=true lime_candle:lit=true pink_candle:lit=true gray_candle:lit=true black_candle:lit=true light_gray_candle:lit=true red_candle:lit=true cyan_candle:lit=true purple_candle:lit=true blue_candle:lit=true brown_candle:lit=true green_candle:lit=true glow_item_frame glow_lichen light cave_vines_plant:berries=true cave_vines:berries=true
block.10090 = lantern:hanging=true soul_lantern:hanging=true
block.10091 = soul_fire soul_lantern soul_torch soul_campfire:lit=true
# blocks that shouldn't be diffused
block.20000 = cobweb nether_wart spore_blossom pitcher_crop
block.10300 = lectern
# Fallback for 1.20.2 and below:
#elif MC_VERSION >= 11300
block.10031 = grass fern
block.10059 = wheat dead_bush brown_mushroom red_mushroom oak_sapling spruce_sapling birch_sapling jungle_sapling acacia_sapling dark_oak_sapling dandelion poppy blue_orchid allium azure_bluet red_tulip orange_tulip white_tulip pink_tulip oxeye_daisy carrots beetroots potatoes lily_of_the_valley wither_rose cornflower sweet_berry_bush crimson_fungus warped_fungus crimson_roots warped_roots nether_sprouts mangrove_propagule cherry_sapling pink_petals torchflower_crop torchflower
block.10175 = sunflower:half=lower lilac:half=lower tall_grass:half=lower large_fern:half=lower rose_bush:half=lower peony:half=lower small_dripleaf:half=lower pitcher_plant:half=lower
block.10176 = sunflower:half=upper lilac:half=upper tall_grass:half=upper large_fern:half=upper rose_bush:half=upper peony:half=upper small_dripleaf:half=upper big_dripleaf big_dripleaf_stem azalea flowering_azalea pitcher_plant:half=upper
block.10177 = hanging_roots
block.10018 = oak_leaves spruce_leaves birch_leaves jungle_leaves acacia_leaves dark_oak_leaves azalea_leaves flowering_azalea_leaves mangrove_leaves cherry_leaves
block.10106 = vine weeping_vines_plant weeping_vines twisting_vines_plant twisting_vines cave_vines_plant cave_vines
block.10111 = lily_pad
block.10051 = fire
block.10010 = lava
block.10008 = water
block.10079 = ice honey_block slime_block white_stained_glass orange_stained_glass magenta_stained_glass light_blue_stained_glass yellow_stained_glass lime_stained_glass pink_stained_glass gray_stained_glass light_gray_stained_glass cyan_stained_glass purple_stained_glass blue_stained_glass brown_stained_glass green_stained_glass red_stained_glass black_stained_glass white_stained_glass_pane orange_stained_glass_pane magenta_stained_glass_pane light_blue_stained_glass_pane yellow_stained_glass_pane lime_stained_glass_pane pink_stained_glass_pane gray_stained_glass_pane light_gray_stained_glass_pane cyan_stained_glass_pane purple_stained_glass_pane blue_stained_glass_pane brown_stained_glass_pane green_stained_glass_pane red_stained_glass_pane black_stained_glass_pane
block.10089 = glowstone torch wall_torch redstone_torch:lit=true redstone_wall_torch:lit=true redstone_lamp:lit=true furnace:lit=true blast_furnace:lit=true smoker:lit=true jack_o_lantern beacon campfire lantern:hanging=false shroomlight candle:lit=true white_candle:lit=true orange_candle:lit=true magenta_candle:lit=true light_blue_candle:lit=true yellow_candle:lit=true lime_candle:lit=true pink_candle:lit=true gray_candle:lit=true black_candle:lit=true light_gray_candle:lit=true red_candle:lit=true cyan_candle:lit=true purple_candle:lit=true blue_candle:lit=true brown_candle:lit=true green_candle:lit=true glow_item_frame glow_lichen light cave_vines_plant:berries=true cave_vines:berries=true
block.10090 = lantern:hanging=true soul_lantern:hanging=true
block.10091 = soul_fire soul_lantern soul_torch soul_campfire:lit=true
block.20000 = cobweb nether_wart spore_blossom pitcher_crop
block.10300 = lectern
# Fallback for 1.12.2 and below:
#else
block.10031 = tallgrass
block.10059 = wheat deadbush sapling yellow_flower red_flower carrots beetroot potatoes
block.10175 = double_plant:half=lower
block.10176 = double_plant:half=upper
block.10018 = leaves leaves2
block.10106 = vine
block.10111 = waterlily
block.10051 = fire
block.10010 = flowing_lava lava
block.10008 = flowing_water water
block.10079 = ice slime stained_glass stained_glass_pane
block.20000 = web nether_wart
block.10089 = glowstone torch wall_torch redstone_torch redstone_wall_torch jack_o_lantern redstone_lamp beacon campfire lantern
#endif

View File

@@ -0,0 +1,332 @@
#version 120
/* DRAWBUFFERS:02 */ //0=gcolor, 2=gnormal for normals
/*
Sildur's Enhanced Default:
https://www.patreon.com/Sildur
https://sildurs-shaders.github.io/
https://twitter.com/Sildurs_shaders
https://www.curseforge.com/minecraft/customization/sildurs-enhanced-default
Permissions:
You are not allowed to edit, copy code or share my shaderpack under a different name or claim it as yours.
*/
#define composite0
#include "shaders.settings"
varying vec2 texcoord;
varying vec4 color;
uniform vec3 shadowLightPosition;
uniform mat4 gbufferProjectionInverse;
uniform sampler2D texture;
uniform sampler2D gnormal; //used by reflections and celshading
uniform sampler2D depthtex0;
uniform sampler2D depthtex1;
uniform float viewWidth;
uniform float viewHeight;
uniform float near;
uniform float far;
uniform int isEyeInWater;
vec3 decode (vec2 enc){
vec2 fenc = enc*4-2;
float f = dot(fenc,fenc);
float g = sqrt(1-f/4.0);
vec3 n;
n.xy = fenc*g;
n.z = 1-f/2;
return n;
}
float cdist(vec2 coord) {
return clamp(1.0 - max(abs(coord.s-0.5),abs(coord.t-0.5))*2.0, 0.0, 1.0);
}
vec3 screenSpace(vec2 coord, float depth){
vec4 pos = gbufferProjectionInverse * (vec4(coord, depth, 1.0) * 2.0 - 1.0);
return pos.xyz/pos.w;
}
vec3 toScreenSpace(vec3 pos) {
vec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw);
vec3 p3 = pos * 2.0 - 1.0;
vec4 fragposition = iProjDiag * p3.xyzz + gbufferProjectionInverse[3];
return fragposition.xyz / fragposition.w;
}
#ifdef SSAO
uniform float aspectRatio;
const vec2 check_offsets[25] = vec2[25](vec2(-0.4894566f,-0.3586783f),
vec2(-0.1717194f,0.6272162f),
vec2(-0.4709477f,-0.01774091f),
vec2(-0.9910634f,0.03831699f),
vec2(-0.2101292f,0.2034733f),
vec2(-0.7889516f,-0.5671548f),
vec2(-0.1037751f,-0.1583221f),
vec2(-0.5728408f,0.3416965f),
vec2(-0.1863332f,0.5697952f),
vec2(0.3561834f,0.007138769f),
vec2(0.2868255f,-0.5463203f),
vec2(-0.4640967f,-0.8804076f),
vec2(0.1969438f,0.6236954f),
vec2(0.6999109f,0.6357007f),
vec2(-0.3462536f,0.8966291f),
vec2(0.172607f,0.2832828f),
vec2(0.4149241f,0.8816f),
vec2(0.136898f,-0.9716249f),
vec2(-0.6272043f,0.6721309f),
vec2(-0.8974028f,0.4271871f),
vec2(0.5551881f,0.324069f),
vec2(0.9487136f,0.2605085f),
vec2(0.7140148f,-0.312601f),
vec2(0.0440252f,0.9363738f),
vec2(0.620311f,-0.6673451f)
);
//modified version of Yuriy O'Donnell's SSDO (License MIT -> https://github.com/kayru/dssdo)
float calcSSDO(vec3 fragpos, vec3 normal){
float finalAO = 0.0;
float radius = 0.05 / (fragpos.z);
const float attenuation_angle_threshold = 0.1;
const int num_samples = 16;
const float ao_weight = 1.0;
for( int i=0; i<num_samples; ++i ){
vec2 texOffset = pow(length(check_offsets[i].xy),0.5)*radius*vec2(1.0,aspectRatio)*normalize(check_offsets[i].xy);
vec2 newTC = texcoord+texOffset;
vec3 t0 = toScreenSpace(vec3(newTC, texture2D(depthtex0, newTC).x));
vec3 center_to_sample = t0.xyz - fragpos.xyz;
float dist = length(center_to_sample);
vec3 center_to_sample_normalized = center_to_sample / dist;
float attenuation = 1.0-clamp(dist/6.0,0.0,1.0);
float dp = dot(normal, center_to_sample_normalized);
attenuation = sqrt(max(dp,0.0))*attenuation*attenuation * step(attenuation_angle_threshold, dp);
finalAO += attenuation * (ao_weight / num_samples);
}
return pow(1.0-finalAO, 0.5);
}
#endif
#ifdef Reflections
uniform mat4 gbufferProjection;
uniform ivec2 eyeBrightnessSmooth;
vec3 nvec3(vec4 pos) {
return pos.xyz/pos.w;
}
vec4 raytrace(vec4 color, vec3 normal) {
vec3 fragpos0 = screenSpace(texcoord.xy, texture2D(depthtex0, texcoord.xy).x);
vec3 rvector = reflect(fragpos0.xyz, normal.xyz);
rvector = normalize(rvector);
vec3 start = fragpos0 + rvector;
vec3 tvector = rvector;
int sr = 0;
const int maxf = 3; //number of refinements
const float ref = 0.2; //refinement multiplier
const int rsteps = 15;
const float inc = 2.2; //increasement factor at each step
for(int i=0;i<rsteps;i++){
vec3 pos = nvec3(gbufferProjection * vec4(start, 1.0)) * 0.5 + 0.5;
if(pos.x < 0 || pos.x > 1 || pos.y < 0 || pos.y > 1 || pos.z < 0 || pos.z > 1.0) break;
vec3 fragpos1 = screenSpace(pos.xy, texture2D(depthtex1, pos.st).x);
float err = distance(start, fragpos1);
if(err < pow(length(rvector),1.35)){
sr++;
if(sr >= maxf){
color = texture2D(texture, pos.st);
color.a = cdist(pos.st);
break;
}
tvector -= rvector;
rvector *= ref;
}
rvector *= inc;
tvector += rvector;
start = fragpos0 + tvector;
}
return color;
}/*--------------------------------------*/
#endif
#ifdef Refractions
uniform sampler2D noisetex;
uniform float frameTimeCounter;
uniform vec3 cameraPosition;
uniform mat4 gbufferModelViewInverse;
mat2 rmatrix(float rad){
return mat2(vec2(cos(rad), -sin(rad)), vec2(sin(rad), cos(rad)));
}
float calcWaves(vec2 coord){
vec2 movement = abs(vec2(0.0, -frameTimeCounter * 0.31365))*0.90; //make it a bit slower than in vibrant shaders
coord *= 0.262144;
vec2 coord0 = coord * rmatrix(1.0) - movement * 4.0;
coord0.y *= 3.0;
vec2 coord1 = coord * rmatrix(0.5) - movement * 1.5;
coord1.y *= 3.0;
float wave = 1.0 - texture2D(noisetex,coord0 * 0.005).x * 10.0; //big waves
wave += texture2D(noisetex,coord1 * 0.010416).x * 7.0; //small waves
wave *= 0.0157;
return wave;
}
vec2 calcBump(vec2 coord){
const vec2 deltaPos = vec2(0.25, 0.0);
float h0 = calcWaves(coord);
float h1 = calcWaves(coord + deltaPos.xy);
float h2 = calcWaves(coord - deltaPos.xy);
float h3 = calcWaves(coord + deltaPos.yx);
float h4 = calcWaves(coord - deltaPos.yx);
float xDelta = ((h1-h0)+(h0-h2));
float yDelta = ((h3-h0)+(h0-h4));
return vec2(xDelta,yDelta)*0.05;
}
#endif
#ifdef Celshading
float pw = 1.0/ viewWidth;
float ph = 1.0/ viewHeight;
float getdepth(vec2 coord) {
return texture2D(depthtex0,coord).x;
}
vec3 celshade(vec3 c) {
//edge detect
float dtresh = 1/(far-near)* 0.0005;
vec4 dc = vec4(getdepth(texcoord.xy));
vec4 sa = vec4(getdepth(texcoord.xy + vec2(-pw,-ph)),
getdepth(texcoord.xy + vec2(pw,-ph)),
getdepth(texcoord.xy + vec2(-pw,0.0)),
getdepth(texcoord.xy + vec2(0.0,ph)));
//opposite side samples
vec4 sb = vec4(getdepth(texcoord.xy + vec2(pw,ph)),
getdepth(texcoord.xy + vec2(-pw,ph)),
getdepth(texcoord.xy + vec2(pw,0.0)),
getdepth(texcoord.xy + vec2(0.0,-ph)));
vec4 dd = abs(2.0* dc - sa - sb) - dtresh;
dd = step(dd.xyzw, vec4(0.0));
float e = clamp(dot(dd,vec4(0.25f)),0.0,1.0);
return c*e;
}
#endif
#ifdef Godrays
varying vec2 lightPos;
float land = 1.0-near/far/far;
float getnoise(vec2 pos) {
return fract(sin(dot(pos ,vec2(18.9898f,28.633f))) * 4378.5453f);
}
vec3 calcRays(vec3 color){
vec2 deltatexcoord = vec2(lightPos - texcoord) * 0.04;
#if grays_quality == 1
vec2 noisetc = texcoord; //fast unfiltered
#elif grays_quality == 2
vec2 noisetc = texcoord + deltatexcoord*getnoise(texcoord); //slow filtered
#endif
float gr = 1.0;
for (int i = 0; i < 20; i++) {
float depth0 = texture2D(depthtex0, noisetc).x;
noisetc += deltatexcoord;
gr += dot(step(land, depth0), 1.0)*cdist(noisetc);
}
gr /= 20.0;
vec3 gfragpos0 = screenSpace(texcoord.xy, texture2D(depthtex0, texcoord.xy).x);
float lightpos = clamp(dot(normalize(gfragpos0.xyz), normalize(shadowLightPosition.xyz)), 0.0, 1.0)*gr*grays_intensity;
return color *= 1.0+lightpos*color * (1.0 - isEyeInWater);
}
#endif
#ifdef skyReflection
uniform vec3 skyColor;
#endif
void main() {
vec4 tex = texture2D(texture, texcoord.xy)*color;
vec3 normal = texture2D(gnormal, texcoord.xy).xyz; //vec2 for normals, z=mat
vec3 newnormal = decode(normal.xy);
vec3 fragPos = toScreenSpace(vec3(texcoord, texture2D(depthtex0, texcoord.xy).x));
float getmat = normal.z*2.0;
//bool iswater = getmat > 0.9 && getmat < 1.1;
bool isreflective = getmat > 0.9 && getmat < 2.1;
bool isice = getmat > 1.9 && getmat < 2.1;
bool iswaterlava = (isEyeInWater == 1.0 || isEyeInWater == 2.0);
#ifdef SSAO
vec3 ao_normal = normalize(cross(dFdx(fragPos),dFdy(fragPos)));
if(!iswaterlava)tex.rgb *= mix(calcSSDO(fragPos, ao_normal), 1.0, 1.0-exp(-length(fragPos)/(0.2*far-near))); //set an offset and scale ao with render distance
#endif
#ifdef Celshading
if(!isreflective)tex.rgb = mix(celshade(tex.rgb), tex.rgb, 1.0-exp(-length(fragPos)/(0.3*far-near))); //set an offset and scale celshading with render distance
#endif
#ifdef Reflections
if(isreflective && isEyeInWater < 0.9){
#ifdef skyReflection
vec3 finalskyC = mix(tex.rgb, skyColor.rgb, clamp((eyeBrightnessSmooth.y/255.0-2.0/16.0)*1.5,0.0,1.0)); //change skycolor to texcolor in low light areas to prevent day/night issues.
vec4 relfcolor = vec4(finalskyC*0.75, 1.0);
#else
vec4 relfcolor = tex;
#endif
vec4 reflection = raytrace(relfcolor, newnormal.xyz);
//tex.rgb = mix(tex.rgb, reflection.rgb, tex.a*reflection.a);
vec3 normfrag1 = normalize(screenSpace(texcoord.xy, texture2D(depthtex1, texcoord.xy).x));
vec3 rVector = reflect(normfrag1, normalize(newnormal.xyz));
vec3 hV= normalize(rVector - normfrag1);
float normalDotEye = dot(hV, normfrag1);
float F0 = 0.09;
float fresnel = pow(clamp(1.0 + normalDotEye,0.0,1.0), 4.0) ;
fresnel = fresnel+F0*(1.0-fresnel);
#ifdef Refractions
vec4 fragpos0 = gbufferProjectionInverse * (vec4(texcoord, texture2D(depthtex0, texcoord).x, 1.0) * 2.0 - 1.0);
fragpos0 /= fragpos0.w;
vec2 wpos = (gbufferModelViewInverse*fragpos0).xz+cameraPosition.xz;
if(!isice)tex.rgb = texture2D(texture, (texcoord.xy+calcBump(wpos))).rgb*color.rgb;
#endif
reflection.rgb = mix(relfcolor.rgb, reflection.rgb, reflection.a); //maybe change tex with skycolor
tex.rgb = mix(tex.rgb, reflection.rgb, fresnel*1.25);
}
#endif
#ifdef Godrays
tex.rgb = calcRays(tex.rgb);
#endif
#ifdef depthbuffer
float c = (2.0 * near) / (far + near - texture2D(depthtex0, texcoord.xy).x * (far - near)); //convert to linear values
tex.rgb = vec3(c);
#endif
#ifdef draw_refnormals
tex.rgb = normal.rgb;
#endif
gl_FragData[0] = tex;
gl_FragData[1] = vec4(0.0); //improves performance
}

View File

@@ -0,0 +1,35 @@
#version 120
/*
Sildur's Enhanced Default:
https://www.patreon.com/Sildur
https://sildurs-shaders.github.io/
https://twitter.com/Sildurs_shaders
https://www.curseforge.com/minecraft/customization/sildurs-enhanced-default
Permissions:
You are not allowed to edit, copy code or share my shaderpack under a different name or claim it as yours.
*/
#define composite0
#include "shaders.settings"
varying vec2 texcoord;
varying vec4 color;
#ifdef Godrays
varying vec2 lightPos;
#endif
uniform vec3 sunPosition;
uniform mat4 gbufferProjection;
void main() {
gl_Position = ftransform();
texcoord = (gl_MultiTexCoord0).xy;
#ifdef Godrays
vec4 tpos = vec4(sunPosition,1.0)*gbufferProjection;
tpos = vec4(tpos.xyz/tpos.w,1.0);
vec2 pos1 = tpos.xy/tpos.z;
lightPos = pos1*0.5+0.5;
#endif
color = gl_Color;
}

View File

@@ -0,0 +1,167 @@
#version 120
/* DRAWBUFFERS:3 */
/*
Sildur's Enhanced Default:
https://www.patreon.com/Sildur
https://sildurs-shaders.github.io/
https://twitter.com/Sildurs_shaders
https://www.curseforge.com/minecraft/customization/sildurs-enhanced-default
Permissions:
You are not allowed to edit, copy code or share my shaderpack under a different name or claim it as yours.
*/
#define composite1
#include "shaders.settings"
/* Temporal anti-aliasing (TAA) and adaptive sharpening implementation based on Chocapic13, all credits belong to him:
https://www.minecraftforum.net/forums/mapping-and-modding-java-edition/minecraft-mods/1293898-1-14-chocapic13s-shaders */
varying vec2 texcoord;
uniform sampler2D colortex0; //everything
#ifdef TAA
const bool colortex3Clear = false;
uniform sampler2D colortex3; //TAA mixed with everything
uniform sampler2D depthtex0;
uniform float viewHeight;
uniform float viewWidth;
vec2 texelSize = vec2(1.0/viewWidth,1.0/viewHeight);
uniform mat4 gbufferProjectionInverse;
uniform mat4 gbufferModelViewInverse;
uniform mat4 gbufferPreviousProjection;
uniform mat4 gbufferPreviousModelView;
uniform vec3 cameraPosition;
uniform vec3 previousCameraPosition;
#define BLEND_FACTOR 0.1 //[0.01 0.02 0.03 0.04 0.05 0.06 0.08 0.1 0.12 0.14 0.16] higher values = more flickering but sharper image, lower values = less flickering but the image will be blurrier
#define MOTION_REJECTION 1.0 //[0.0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.5] //Higher values=sharper image in motion at the cost of flickering
#define ANTI_GHOSTING 0.0 //[0.0 0.25 0.5 0.75 1.0] High values reduce ghosting but may create flickering
#define FLICKER_REDUCTION 1.0 //[0.0 0.25 0.5 0.75 1.0] High values reduce flickering but may reduce sharpness
#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z)
#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz)
vec3 toClipSpace3Prev(vec3 viewSpacePosition) {
return projMAD(gbufferPreviousProjection, viewSpacePosition) / -viewSpacePosition.z * 0.5 + 0.5;
}
vec3 toScreenSpace(vec3 p) {
vec4 iProjDiag = vec4(gbufferProjectionInverse[0].x, gbufferProjectionInverse[1].y, gbufferProjectionInverse[2].zw);
vec3 p3 = p * 2.0 - 1.0;
vec4 fragposition = iProjDiag * p3.xyzz + gbufferProjectionInverse[3];
return fragposition.xyz / fragposition.w;
}
//returns the projected coordinates of the closest point to the camera in the 3x3 neighborhood
vec3 closestToCamera5taps(vec2 texcoord){
vec2 du = vec2(texelSize.x*2., 0.0);
vec2 dv = vec2(0.0, texelSize.y*2.);
vec3 dtl = vec3(texcoord,0.) + vec3(-texelSize, texture2D(depthtex0, texcoord - dv - du).x);
vec3 dtr = vec3(texcoord,0.) + vec3( texelSize.x, -texelSize.y, texture2D(depthtex0, texcoord - dv + du).x);
vec3 dmc = vec3(texcoord,0.) + vec3( 0.0, 0.0, texture2D(depthtex0, texcoord).x);
vec3 dbl = vec3(texcoord,0.) + vec3(-texelSize.x, texelSize.y, texture2D(depthtex0, texcoord + dv - du).x);
vec3 dbr = vec3(texcoord,0.) + vec3( texelSize.x, texelSize.y, texture2D(depthtex0, texcoord + dv + du).x);
vec3 dmin = dmc;
dmin = dmin.z > dtr.z? dtr : dmin;
dmin = dmin.z > dtl.z? dtl : dmin;
dmin = dmin.z > dbl.z? dbl : dmin;
dmin = dmin.z > dbr.z? dbr : dmin;
return dmin;
}
//approximation from SMAA presentation from siggraph 2016
vec3 FastCatmulRom(sampler2D colorTex, vec2 texcoord, vec4 rtMetrics, float sharpenAmount){
vec2 position = rtMetrics.zw * texcoord;
vec2 centerPosition = floor(position - 0.5) + 0.5;
vec2 f = position - centerPosition;
vec2 f2 = f * f;
vec2 f3 = f * f2;
float c = sharpenAmount;
vec2 w0 = -c * f3 + 2.0 * c * f2 - c * f;
vec2 w1 = (2.0 - c) * f3 - (3.0 - c) * f2 + 1.0;
vec2 w2 = -(2.0 - c) * f3 + (3.0 - 2.0 * c) * f2 + c * f;
vec2 w3 = c * f3 - c * f2;
vec2 w12 = w1 + w2;
vec2 tc12 = rtMetrics.xy * (centerPosition + w2 / w12);
vec3 centerColor = texture2D(colorTex, vec2(tc12.x, tc12.y)).rgb;
vec2 tc0 = rtMetrics.xy * (centerPosition - 1.0);
vec2 tc3 = rtMetrics.xy * (centerPosition + 2.0);
vec4 color = vec4(texture2D(colorTex, vec2(tc12.x, tc0.y )).rgb, 1.0) * (w12.x * w0.y ) +
vec4(texture2D(colorTex, vec2(tc0.x, tc12.y)).rgb, 1.0) * (w0.x * w12.y) +
vec4(centerColor, 1.0) * (w12.x * w12.y) +
vec4(texture2D(colorTex, vec2(tc3.x, tc12.y)).rgb, 1.0) * (w3.x * w12.y) +
vec4(texture2D(colorTex, vec2(tc12.x, tc3.y )).rgb, 1.0) * (w12.x * w3.y );
return color.rgb/color.a;
}
vec3 calcTAA(){
//reproject previous frame
vec3 closestToCamera = closestToCamera5taps(texcoord);
vec3 fragposition = toScreenSpace(closestToCamera);
fragposition = mat3(gbufferModelViewInverse) * fragposition + gbufferModelViewInverse[3].xyz + (cameraPosition - previousCameraPosition);
vec3 previousPosition = mat3(gbufferPreviousModelView) * fragposition + gbufferPreviousModelView[3].xyz;
previousPosition = toClipSpace3Prev(previousPosition);
previousPosition.xy = texcoord + (previousPosition.xy - closestToCamera.xy);
//to reduce error propagation caused by interpolation during history resampling, we will introduce back some aliasing in motion
vec2 d = 0.5-abs(fract(previousPosition.xy*vec2(viewWidth,viewHeight)-texcoord*vec2(viewWidth,viewHeight))-0.5);
float rej = dot(d,d)*MOTION_REJECTION;
//reject history if off-screen and early exit
if (previousPosition.x < 0.0 || previousPosition.y < 0.0 || previousPosition.x > 1.0 || previousPosition.y > 1.0) return texture2D(colortex0, texcoord).rgb;
//Samples current frame 3x3 neighboorhood
vec3 albedoCurrent0 = texture2D(colortex0, texcoord).rgb;
vec3 albedoCurrent1 = texture2D(colortex0, texcoord + vec2(texelSize.x,texelSize.y)).rgb;
vec3 albedoCurrent2 = texture2D(colortex0, texcoord + vec2(texelSize.x,-texelSize.y)).rgb;
vec3 albedoCurrent3 = texture2D(colortex0, texcoord + vec2(-texelSize.x,-texelSize.y)).rgb;
vec3 albedoCurrent4 = texture2D(colortex0, texcoord + vec2(-texelSize.x,texelSize.y)).rgb;
vec3 albedoCurrent5 = texture2D(colortex0, texcoord + vec2(0.0,texelSize.y)).rgb;
vec3 albedoCurrent6 = texture2D(colortex0, texcoord + vec2(0.0,-texelSize.y)).rgb;
vec3 albedoCurrent7 = texture2D(colortex0, texcoord + vec2(-texelSize.x,0.0)).rgb;
vec3 albedoCurrent8 = texture2D(colortex0, texcoord + vec2(texelSize.x,0.0)).rgb;
if(TAA_sharpness > 0.0){ //turn sharpening off if set to 0.0
vec3 m1 = (albedoCurrent0 + albedoCurrent1 + albedoCurrent2 + albedoCurrent3 + albedoCurrent4 + albedoCurrent5 + albedoCurrent6 + albedoCurrent7 + albedoCurrent8)/9.0;
vec3 std = abs(albedoCurrent0 - m1) + abs(albedoCurrent1 - m1) + abs(albedoCurrent2 - m1) + abs(albedoCurrent3 - m1) + abs(albedoCurrent3 - m1) +
abs(albedoCurrent4 - m1) + abs(albedoCurrent5 - m1) + abs(albedoCurrent6 - m1) + abs(albedoCurrent7 - m1) + abs(albedoCurrent8 - m1);
float contrast = 1.0 - dot(std,vec3(0.299, 0.587, 0.114))/9.0;
albedoCurrent0 = albedoCurrent0*(1.0+TAA_sharpness*contrast)-(albedoCurrent5+albedoCurrent6+albedoCurrent7+albedoCurrent8+(albedoCurrent1 + albedoCurrent2 + albedoCurrent3 + albedoCurrent4)/2.0)/6.0*TAA_sharpness*contrast;
}
//Assuming the history color is a blend of the 3x3 neighborhood, we clamp the history to the min and max of each channel in the 3x3 neighborhood
vec3 cMax = max(max(max(albedoCurrent0,albedoCurrent1),albedoCurrent2),max(albedoCurrent3,max(albedoCurrent4,max(albedoCurrent5,max(albedoCurrent6,max(albedoCurrent7,albedoCurrent8))))));
vec3 cMin = min(min(min(albedoCurrent0,albedoCurrent1),albedoCurrent2),min(albedoCurrent3,min(albedoCurrent4,min(albedoCurrent5,min(albedoCurrent6,min(albedoCurrent7,albedoCurrent8))))));
vec3 albedoPrev = FastCatmulRom(colortex3, previousPosition.xy,vec4(texelSize, 1.0/texelSize), 0.82).xyz;
vec3 finalcAcc = clamp(albedoPrev,cMin,cMax);
//increases blending factor if history is far away from aabb, reduces ghosting at the cost of some flickering
float luma = dot(albedoPrev,vec3(0.21, 0.72, 0.07));
float isclamped = distance(albedoPrev,finalcAcc)/luma;
//reduces blending factor if current texel is far from history, reduces flickering
float lumDiff2 = distance(albedoPrev,albedoCurrent0)/luma;
lumDiff2 = 1.0-clamp(lumDiff2*lumDiff2,0.0,1.0)*FLICKER_REDUCTION;
//Blend current pixel with clamped history
return mix(finalcAcc,albedoCurrent0,clamp(BLEND_FACTOR*lumDiff2+rej+isclamped*ANTI_GHOSTING+0.01,0.0,1.0));
}
#endif
void main() {
#ifdef TAA
gl_FragData[0] = vec4(calcTAA(), 1.0);
#else
gl_FragData[0] = texture2D(colortex0, texcoord); //if TAA is disabled just passthrough data from composite0, previous buffer.
#endif
}

View File

@@ -0,0 +1,18 @@
#version 120
/*
Sildur's Enhanced Default:
https://www.patreon.com/Sildur
https://sildurs-shaders.github.io/
https://twitter.com/Sildurs_shaders
https://www.curseforge.com/minecraft/customization/sildurs-enhanced-default
Permissions:
You are not allowed to edit, copy code or share my shaderpack under a different name or claim it as yours.
*/
varying vec2 texcoord;
void main() {
gl_Position = ftransform();
texcoord = gl_MultiTexCoord0.xy;
}

View File

@@ -0,0 +1 @@
entity.11000=minecraft:lightning_bolt

View File

@@ -0,0 +1,154 @@
#version 120
/*
Sildur's Enhanced Default:
https://www.patreon.com/Sildur
https://sildurs-shaders.github.io/
https://twitter.com/Sildurs_shaders
https://www.curseforge.com/minecraft/customization/sildurs-enhanced-default
Permissions:
You are not allowed to edit, copy code or share my shaderpack under a different name or claim it as yours.
*/
#define final
#include "shaders.settings"
varying vec2 texcoord;
varying vec4 color;
uniform sampler2D colortex3; //taa mixed with everything
//Disable uneeded samplers and such if neither dof nor motionblur is used.
#ifdef Depth_of_Field
#define Blur
#endif
#ifdef Motionblur
#define Blur
#endif
#ifdef Blur
uniform sampler2D depthtex0; //everything
uniform sampler2D depthtex1; //everything but transparency
uniform sampler2D depthtex2; //everything but transparency+hand
uniform vec3 cameraPosition;
uniform vec3 previousCameraPosition;
uniform mat4 gbufferProjectionInverse;
uniform mat4 gbufferPreviousProjection;
uniform mat4 gbufferModelViewInverse;
uniform mat4 gbufferPreviousModelView;
#endif
#ifdef Depth_of_Field
uniform float near;
uniform float far;
uniform float viewWidth;
uniform float aspectRatio;
//Dof constant values
const float focal = 0.024;
float aperture = 0.008;
const float sizemult = DoF_Strength;
uniform float centerDepthSmooth;
const float centerDepthHalflife = 2.0f;
float ld(float depth) {
return (2.0 * near) / (far + near - depth * (far - near));
}
float fast_blur[9] = float[9](-0.5, -0.375, -0.25, -0.125, 0.0, 0.125, 0.25, 0.375, 0.5);
vec3 calcDof(vec3 color, float depth0, float depth1){
float pw = 1.0/ viewWidth;
float z = ld(depth0)*far;
#ifdef smoothDof
float focus = ld(centerDepthSmooth)*far;
#else
float focus = ld(texture2D(depthtex0, vec2(0.5)).r)*far;
#endif
float pcoc = min(abs(aperture * (focal * (z - focus)) / (z * (focus - focal)))*sizemult,pw*15.0);
#ifdef Distance_Blur
float getdist = 1-(exp(-pow(ld(depth1)/Dof_Distance_View*far,4.0)*4.0));
if(depth1 < 1.0-near/far/far)pcoc = getdist*pw*20.0;
#endif
for ( int i = 0; i < 9; i++) {
color += texture2D(colortex3, texcoord.xy + fast_blur[i]*pcoc*vec2(1.0,aspectRatio)).rgb;
}
return color*0.11; //*0.11 = / 9
}
#endif
#ifdef Motionblur
vec3 calcMotionBlur(vec3 color, float depth1){
vec4 currentPosition = vec4(texcoord.xy, depth1, 1.0)*2.0-1.0;
vec4 fragposition = gbufferProjectionInverse * currentPosition;
fragposition = gbufferModelViewInverse * fragposition;
fragposition /= fragposition.w;
fragposition.xyz += cameraPosition;
vec4 previousPosition = fragposition;
previousPosition.xyz -= previousCameraPosition;
previousPosition = gbufferPreviousModelView * previousPosition;
previousPosition = gbufferPreviousProjection * previousPosition;
previousPosition /= previousPosition.w;
vec2 velocity = (currentPosition - previousPosition).st * MB_strength;
vec2 coord = texcoord.st + velocity;
int mb = 1;
for (int i = 0; i < 15; ++i, coord += velocity) {
if (coord.s > 1.0 || coord.t > 1.0 || coord.s < 0.0 || coord.t < 0.0) break;
color += texture2D(colortex3, coord).xyz;
++mb;
}
return color /= mb;
}
#endif
#ifdef Tonemap
vec3 Uncharted2Tonemap(vec3 x) {
float A = 0.28;
float B = 0.29;
float C = 0.08; //default 0.010
float D = 0.2;
float E = 0.025;
float F = 0.35;
return ((x*(A*x+C*B)+D*E)/(x*(A*x+B)+D*F))-E/F;
}
#endif
void main() {
vec4 tex = texture2D(colortex3, texcoord.xy)*color;
#ifdef Blur
//Setup depths, do it here because amd drivers suck and texture reads outside of void main or functions are broken, thanks amd
float depth0 = texture2D(depthtex0, texcoord.xy).x;
float depth1 = texture2D(depthtex1, texcoord.xy).x;
float depth2 = texture2D(depthtex2, texcoord.xy).x;
bool hand = depth0 < depth2;
if(depth0 < depth1 || !hand){
#ifdef Depth_of_Field
tex.rgb = calcDof(tex.rgb, depth0, depth1);
#endif
#ifdef Motionblur
tex.rgb = calcMotionBlur(tex.rgb, depth1);
#endif
}
#endif
#ifdef Crossprocess
tex.r = (tex.r*1.3)+(tex.b+tex.g)*(-0.1);
tex.g = (tex.g*1.2)+(tex.r+tex.b)*(-0.1);
tex.b = (tex.b*1.1)+(tex.r+tex.g)*(-0.1);
tex = tex / (tex + 2.2) * (1.0+2.0);
#endif
#ifdef Tonemap
tex.rgb = Uncharted2Tonemap(tex.rgb)*gamma;
#endif
gl_FragData[0] = tex;
}

View File

@@ -0,0 +1,23 @@
#version 120
/*
Sildur's Enhanced Default:
https://www.patreon.com/Sildur
https://sildurs-shaders.github.io/
https://twitter.com/Sildurs_shaders
https://www.curseforge.com/minecraft/customization/sildurs-enhanced-default
Permissions:
You are not allowed to edit, copy code or share my shaderpack under a different name or claim it as yours.
*/
varying vec2 texcoord;
varying vec4 color;
void main() {
gl_Position = ftransform();
texcoord = (gl_MultiTexCoord0).xy;
color = gl_Color;
}

View File

@@ -0,0 +1,39 @@
#version 120
/* DRAWBUFFERS:02 */ //0=gcolor, 2=gnormal for normals
/*
Sildur's Enhanced Default:
https://www.patreon.com/Sildur
https://sildurs-shaders.github.io/
https://twitter.com/Sildurs_shaders
https://www.curseforge.com/minecraft/customization/sildurs-enhanced-default
Permissions:
You are not allowed to edit, copy code or share my shaderpack under a different name or claim it as yours.
*/
#define gbuffers_clouds
#include "shaders.settings"
varying vec2 texcoord;
varying vec4 color;
uniform sampler2D texture;
#ifdef Fog
const int GL_LINEAR = 9729;
const int GL_EXP = 2048;
uniform int fogMode;
#endif
void main() {
gl_FragData[0] = texture2D(texture, texcoord.xy)*color;
gl_FragData[1] = vec4(0.0); //fill normal buffer with 0.0, improves performance
#ifdef Fog
if (fogMode == GL_EXP) {
gl_FragData[0].rgb = mix(gl_FragData[0].rgb, gl_Fog.color.rgb, 1.0 - clamp(exp(-gl_Fog.density * gl_FogFragCoord), 0.0, 1.0));
} else if (fogMode == GL_LINEAR) {
gl_FragData[0].rgb = mix(gl_FragData[0].rgb, gl_Fog.color.rgb, clamp((gl_FogFragCoord - gl_Fog.start) * gl_Fog.scale, 0.0, 1.0));
}
#endif
}

View File

@@ -0,0 +1,45 @@
#version 120
/*
Sildur's Enhanced Default:
https://www.patreon.com/Sildur
https://sildurs-shaders.github.io/
https://twitter.com/Sildurs_shaders
https://www.curseforge.com/minecraft/customization/sildurs-enhanced-default
Permissions:
You are not allowed to edit, copy code or share my shaderpack under a different name or claim it as yours.
*/
#define composite1
#include "shaders.settings"
varying vec2 texcoord;
varying vec4 color;
#ifdef TAA
uniform float viewHeight;
uniform float viewWidth;
vec2 texelSize = vec2(1.0/viewWidth,1.0/viewHeight);
uniform int framemod8;
const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.),
vec2(-1.,3.)/8.,
vec2(5.0,1.)/8.,
vec2(-3,-5.)/8.,
vec2(-5.,5.)/8.,
vec2(-7.,-1.)/8.,
vec2(3,7.)/8.,
vec2(7.,-7.)/8.);
#endif
void main() {
gl_Position = ftransform();
gl_FogFragCoord = length(gl_Position.xyz);
#ifdef TAA
gl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize;
#endif
texcoord = (gl_MultiTexCoord0).xy;
color = gl_Color;
}

View File

@@ -0,0 +1,32 @@
#version 120
/* DRAWBUFFERS:02 */ //0=gcolor, 2=gnormal for normals
/*
Sildur's Enhanced Default:
https://www.patreon.com/Sildur
https://sildurs-shaders.github.io/
https://twitter.com/Sildurs_shaders
https://www.curseforge.com/minecraft/customization/sildurs-enhanced-default
Permissions:
You are not allowed to edit, copy code or share my shaderpack under a different name or claim it as yours.
*/
varying vec4 color;
uniform int isEyeInWater;
const int GL_LINEAR = 9729;
const int GL_EXP = 2048;
uniform int fogMode;
void main() {
gl_FragData[0] = color;
if (fogMode == GL_EXP) {
gl_FragData[0].rgb = mix(gl_FragData[0].rgb, gl_Fog.color.rgb, 1.0 - clamp(exp(-gl_Fog.density * gl_FogFragCoord), 0.0, 1.0));
} else if (fogMode == GL_LINEAR) {
gl_FragData[0].rgb = mix(gl_FragData[0].rgb, gl_Fog.color.rgb, clamp((gl_FogFragCoord - gl_Fog.start) * gl_Fog.scale, 0.0, 1.0));
} else if (isEyeInWater == 1.0 || isEyeInWater == 2.0){
gl_FragData[0].rgb = mix(gl_FragData[0].rgb, gl_Fog.color.rgb, 1.0 - clamp(exp(-gl_Fog.density * gl_FogFragCoord), 0.0, 1.0));
}
gl_FragData[1] = vec4(0.0); //fills normal buffer with 0.0, improves overall performance
}

View File

@@ -0,0 +1,21 @@
#version 120
/*
Sildur's Enhanced Default:
https://www.patreon.com/Sildur
https://sildurs-shaders.github.io/
https://twitter.com/Sildurs_shaders
https://www.curseforge.com/minecraft/customization/sildurs-enhanced-default
Permissions:
You are not allowed to edit, copy code or share my shaderpack under a different name or claim it as yours.
*/
varying vec4 color;
void main() {
gl_Position = ftransform();
gl_FogFragCoord = gl_Position.z;
color = gl_Color;
}

View File

@@ -0,0 +1,22 @@
#version 120
/* DRAWBUFFERS:02 */ //0=gcolor, 2=gnormal for normals
/*
Sildur's Enhanced Default:
https://www.patreon.com/Sildur
https://sildurs-shaders.github.io/
https://twitter.com/Sildurs_shaders
https://www.curseforge.com/minecraft/customization/sildurs-enhanced-default
Permissions:
You are not allowed to edit, copy code or share my shaderpack under a different name or claim it as yours.
*/
varying vec2 texcoord;
varying vec4 color;
uniform sampler2D texture;
void main() {
gl_FragData[0] = texture2D(texture, texcoord.xy)*color;
gl_FragData[1] = vec4(0.0); //fills normal buffer with 0.0, improves overall performance
}

View File

@@ -0,0 +1,41 @@
#version 120
/*
Sildur's Enhanced Default:
https://www.patreon.com/Sildur
https://sildurs-shaders.github.io/
https://twitter.com/Sildurs_shaders
https://www.curseforge.com/minecraft/customization/sildurs-enhanced-default
Permissions:
You are not allowed to edit, copy code or share my shaderpack under a different name or claim it as yours.
*/
#define composite1
#include "shaders.settings"
varying vec2 texcoord;
varying vec4 color;
#ifdef TAA
uniform float viewWidth;
uniform float viewHeight;
vec2 texelSize = vec2(1.0/viewWidth,1.0/viewHeight);
uniform int framemod8;
const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.),
vec2(-1.,3.)/8.,
vec2(5.0,1.)/8.,
vec2(-3,-5.)/8.,
vec2(-5.,5.)/8.,
vec2(-7.,-1.)/8.,
vec2(3,7.)/8.,
vec2(7.,-7.)/8.);
#endif
void main() {
gl_Position = ftransform();
#ifdef TAA
gl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize;
#endif
texcoord = (gl_MultiTexCoord0).xy;
color = gl_Color;
}

View File

@@ -0,0 +1,264 @@
#version 120
/* DRAWBUFFERS:02 */ //0=gcolor, 2=gnormal for normals
/*
Sildur's Enhanced Default:
https://www.patreon.com/Sildur
https://sildurs-shaders.github.io/
https://twitter.com/Sildurs_shaders
https://www.curseforge.com/minecraft/customization/sildurs-enhanced-default
Permissions:
You are not allowed to edit, copy code or share my shaderpack under a different name or claim it as yours.
*/
#define gbuffers_textured
#include "shaders.settings"
//Setup constants
const int noiseTextureResolution = 128;
//----------------------------------------------------------------
/* Don't remove me
const int gcolorFormat = RGBA8;
const int gnormalFormat = RGB10_A2;
const int compositeFormat = RGBA8;
-----------------------------------------*/
varying vec4 color;
varying vec3 vworldpos;
varying mat3 tbnMatrix;
varying vec2 texcoord;
varying vec2 lmcoord;
varying float iswater;
varying float mat;
uniform sampler2D normals;
uniform sampler2D texture;
uniform sampler2D lightmap;
uniform float rainStrength;
uniform vec4 entityColor;
uniform int isEyeInWater;
uniform int entityId;
uniform ivec2 eyeBrightnessSmooth;
uniform vec3 shadowLightPosition;
#ifdef Fog
const int GL_LINEAR = 9729;
const int GL_EXP = 2048;
uniform int fogMode;
#endif
#ifdef Reflections
uniform sampler2D noisetex;
uniform float frameTimeCounter;
mat2 rmatrix(float rad){
return mat2(vec2(cos(rad), -sin(rad)), vec2(sin(rad), cos(rad)));
}
float calcWaves(vec2 coord){
vec2 movement = abs(vec2(0.0, -frameTimeCounter * 0.31365*iswater));
coord *= 0.262144;
vec2 coord0 = coord * rmatrix(1.0) - movement * 4.0;
coord0.y *= 3.0;
vec2 coord1 = coord * rmatrix(0.5) - movement * 1.5;
coord1.y *= 3.0;
vec2 coord2 = coord + movement * 0.5;
coord2.y *= 3.0;
float wave = 1.0 - texture2D(noisetex,coord0 * 0.005).x * 10.0; //big waves
wave += texture2D(noisetex,coord1 * 0.010416).x * 7.0; //small waves
wave += sqrt(texture2D(noisetex,coord2 * 0.045).x * 6.5) * 1.33;//noise texture
wave *= 0.0157;
return wave;
}
vec3 calcBump(vec2 coord){
const vec2 deltaPos = vec2(0.25, 0.0);
float h0 = calcWaves(coord);
float h1 = calcWaves(coord + deltaPos.xy);
float h2 = calcWaves(coord - deltaPos.xy);
float h3 = calcWaves(coord + deltaPos.yx);
float h4 = calcWaves(coord - deltaPos.yx);
float xDelta = ((h1-h0)+(h0-h2));
float yDelta = ((h3-h0)+(h0-h4));
return vec3(vec2(xDelta,yDelta)*0.45, 0.55); //z = 1.0-0.5
}
#endif
varying float NdotLight;
#ifdef Shadows
varying float NdotL;
varying vec3 getShadowpos;
uniform sampler2DShadow shadowtex0; //normal shadows
uniform sampler2DShadow shadowtex1; //colored shadows
uniform sampler2D shadowcolor0;
//Hacky lightmap setup for emissive blocks, todo
float modlmap = 13.0-lmcoord.s*12.35;
float torch_lightmap = max(1.5/(modlmap*modlmap)-0.00945,0.0);
vec3 emissiveLight = clamp(vec3(1.25)*torch_lightmap, 0.0, 1.0); //emissive lightmap
float shadowfilter(sampler2DShadow shadowtexture){
vec2 offset = vec2(0.25, -0.25) / shadowMapResolution;
return clamp(dot(vec4(shadow2D(shadowtexture,vec3(getShadowpos.xy + offset.xx, getShadowpos.z)).x,
shadow2D(shadowtexture,vec3(getShadowpos.xy + offset.yx, getShadowpos.z)).x,
shadow2D(shadowtexture,vec3(getShadowpos.xy + offset.xy, getShadowpos.z)).x,
shadow2D(shadowtexture,vec3(getShadowpos.xy + offset.yy, getShadowpos.z)).x),vec4(0.25))*NdotL,0.0,1.0);
}
vec3 calcShadows(vec3 c){
vec3 finalShading = vec3(0.0);
if(NdotL > 0.0 && rainStrength < 0.9){ //optimization, disable shadows during rain for performance boost
float shading = shadowfilter(shadowtex0);
#ifdef Colored_Shadows
float cshading = shadowfilter(shadowtex1);
finalShading = texture2D(shadowcolor0, getShadowpos.xy).rgb*(cshading-shading) + shading;
#else
finalShading = vec3(shading);
#endif
//avoid light leaking underground
finalShading *= mix(max(lmcoord.t-2.0/16.0,0.0)*1.14285714286,1.0,clamp((eyeBrightnessSmooth.y/255.0-2.0/16.)*4.0,0.0,1.0));
finalShading *= (1.0 - rainStrength); //smoother transition while disabling shadows during rain
finalShading *= (1.0 - iswater); //disable shadows on water plane(not fully, 1.0-0.95)
}
return c * (1.0+finalShading+emissiveLight) * slight;
}
#endif
#if nMap == 2
#extension GL_ARB_shader_texture_lod : enable
varying float dist;
varying vec3 viewVector;
varying vec4 vtexcoordam; // .st for add, .pq for mul
varying vec2 vtexcoord;
varying float isblock; //mc_Entity.x, hack to only apply pom to blocks
bool block = isblock > 0.0 || isblock < 0.0; //get defined and undefined blocks
uniform ivec2 atlasSize;
vec2 atlasAspect = vec2(atlasSize.y/float(atlasSize.x), atlasSize.x/float(atlasSize.y));
mat2 dFdxy = mat2(dFdx(vtexcoord.xy*vtexcoordam.pq), dFdy(vtexcoord.xy*vtexcoordam.pq));
vec4 readNormal(in vec2 coord){
return texture2DGradARB(normals,fract(coord)*vtexcoordam.pq+vtexcoordam.st,dFdxy[0],dFdxy[1]);
}
vec4 calcPOM(vec4 albedo){
if(block){ //only apply to blocks else return albedo
vec2 newCoord = vtexcoord.xy*vtexcoordam.pq+vtexcoordam.st;
if (dist < POM_DIST && viewVector.z < 0.0 && readNormal(vtexcoord.xy).a < 1.0){
const float res_stepths = 0.33 * POM_RES;
vec2 viewCorrection = max(vec2(vtexcoordam.q/vtexcoordam.p*atlasAspect.x,1.0), vec2(1.0,vtexcoordam.p/vtexcoordam.q*atlasAspect.y));
vec2 pstepth = viewCorrection * viewVector.xy * POM_DEPTH / (-viewVector.z * POM_RES);
vec2 coord = vtexcoord.xy;
for (int i= 0; i < res_stepths && (readNormal(coord.xy).a < 1.0-float(i)/POM_RES); ++i) coord += pstepth;
newCoord = fract(coord.xy)*vtexcoordam.pq+vtexcoordam.st;
}
albedo = texture2DGradARB(texture, newCoord, dFdxy[0],dFdxy[1])* texture2D(lightmap, lmcoord.st)*color;
//vec4 specularity = texture2DGradARB(specular, newCoord, dcdx, dcdy);
vec3 bmap = normalize((texture2DGradARB(normals, newCoord, dFdxy[0],dFdxy[1]).rgb*2.0-1.0) * tbnMatrix);
float bmaplight = max(dot(bmap, normalize(shadowLightPosition)),0.0);
#ifdef Shadows
albedo.rgb *= clamp((1.0 + bmaplight - 1.0 * NdotLight) * 0.75, 1.0, 1.5);
#else
albedo.rgb *= clamp(1.0 + bmaplight - 1.0 * NdotLight, 1.0, 1.5);
#endif
#ifdef draw_bmap
if(block)albedo.rgb = bmap;
#endif
return albedo;
} else return albedo;
}
#endif
vec4 encode (vec3 n){
return vec4(n.xy*inversesqrt(n.z*8.0+8.0) + 0.5, mat/2.0, 1.0);
}
void main() {
#ifndef customLight
vec4 tex = texture2D(texture, texcoord.st) * texture2D(lightmap, lmcoord.xy) * color;
#else
//Mix default MC skylight with custom emissive light
vec4 tex = texture2D(texture, texcoord.st) * color;
float torchmap = clamp(lmcoord.x-0.5/16.0, 0.0, 1.0); //must be clamped to fix enchanted items
tex.rgb *= mix(texture2D(lightmap, vec2(0.5 / 16.0, lmcoord.y)).rgb, vec3(emissive_R,emissive_G,emissive_B)*torchmap, torchmap);
#endif
vec4 normal = vec4(0.0); //fill the buffer with 0.0 if not needed, improves performance
#if nMap == 1
vec3 bmap = normalize((texture2D(normals, texcoord.xy).xyz*2.0-1.0) * tbnMatrix);
float bmaplight = max(dot(bmap, normalize(shadowLightPosition)),0.0);
#ifdef Shadows
tex.rgb *= clamp((1.0 + bmaplight - 1.0 * NdotLight) * 0.75, 1.0, 1.5);
#else
tex.rgb *= clamp(1.0 + bmaplight - 1.0 * NdotLight, 1.0, 1.5);
#endif
#ifdef draw_bmap
tex.rgb = bmap;
#endif
#elif nMap == 2
tex = calcPOM(tex);
#endif
#ifdef Shadows
tex.rgb = calcShadows(tex.rgb);
#else
tex.rgb *= (1.0 + NdotLight) * 0.6; //improve visuals without shadows enabled
#endif
#ifdef Colorboost
tex.rgb = pow(tex.rgb*1.20, vec3(1.20));
#endif
#ifdef MobsFlashRed
tex.rgb = mix(tex.rgb,entityColor.rgb,entityColor.a);
#endif
#ifdef Reflections
vec2 waterpos = (vworldpos.xz - vworldpos.y);
if(mat > 0.9)normal = vec4(normalize(calcBump(waterpos) * tbnMatrix), 1.0); //mat > 0.9 so that only reflective blocks alter normals, boosts performance by about 30%. mat=reflective
#endif
if(iswater > 0.1){
if(isEyeInWater > 0.9)tex.a = 0.9; //improve alpha underwater, default is 1 (opaque)
#ifdef waterTex
tex.rgb *= 1.25; //improve colors on water
#else
#if MC_VERSION < 11300 //Add a watercolor fallback for 1.12.2 and below, for some reason color.rgb turns out grey in older versions.
tex = mix(tex, vec4(0.0, 0.275, 0.525, 0.75), 1.0) * texture2D(lightmap, lmcoord.st);
#else
tex.rgb = mix(tex.rgb, color.rgb*0.5, 1.0) * texture2D(lightmap, lmcoord.st).rgb;
#endif
#endif
}
//Fix lightning bolts
if(entityId == 11000.0) tex = texture2D(lightmap, lmcoord.xy)*color;
gl_FragData[0] = tex;
gl_FragData[1] = encode(normal.xyz);
#ifdef Fog
if (fogMode == GL_EXP) {
gl_FragData[0].rgb = mix(gl_FragData[0].rgb, gl_Fog.color.rgb, 1.0 - clamp(exp(-gl_Fog.density * gl_FogFragCoord), 0.0, 1.0));
} else if (fogMode == GL_LINEAR) {
gl_FragData[0].rgb = mix(gl_FragData[0].rgb, gl_Fog.color.rgb, clamp((gl_FogFragCoord - gl_Fog.start) * gl_Fog.scale, 0.0, 1.0));
} else if (isEyeInWater == 1.0 || isEyeInWater == 2.0){
gl_FragData[0].rgb = mix(gl_FragData[0].rgb, gl_Fog.color.rgb, 1.0 - clamp(exp(-gl_Fog.density * gl_FogFragCoord), 0.0, 1.0));
}
#endif
}

View File

@@ -0,0 +1,347 @@
#version 120
/*
Sildur's Enhanced Default:
https://www.patreon.com/Sildur
https://sildurs-shaders.github.io/
https://twitter.com/Sildurs_shaders
https://www.curseforge.com/minecraft/customization/sildurs-enhanced-default
Permissions:
You are not allowed to edit, copy code or share my shaderpack under a different name or claim it as yours.
*/
#define gbuffers_textured
#include "shaders.settings"
//Moving entities IDs
//See block.properties for mapped ids
#define ENTITY_SMALLGRASS 10031.0 //
#define ENTITY_LOWERGRASS 10175.0 //lower half only in 1.13+
#define ENTITY_UPPERGRASS 10176.0 //upper half only used in 1.13+
#define ENTITY_SMALLENTS 10059.0 //sapplings(6), dandelion(37), rose(38), carrots(141), potatoes(142), beetroot(207)
#define ENTITY_LEAVES 10018.0 //161 new leaves
#define ENTITY_VINES 10106.0
#define ENTITY_WATER 10008.0 //9
#define ENTITY_LILYPAD 10111.0 //
#define ENTITY_ICE 10079.0 //transparent reflections, stained glass(95, 160), slimeblock(165)
#define ENTITY_FIRE 10051.0 //
#define ENTITY_LAVA 10010.0 //11
#define ENTITY_EMISSIVE 10089.0 //emissive blocks defined in block.properties
#define ENITIY_SOULFIRE 10091.0
#define ENTITY_WAVING_LANTERN 10090.0
#define ENTITY_INVERTED_LOWER 10177.0 //hanging_roots
#define ENTITY_NON_DIFFUSE 20000.0
varying vec4 color;
varying vec3 vworldpos;
varying mat3 tbnMatrix;
varying vec2 texcoord;
varying vec2 lmcoord;
varying float iswater;
varying float mat;
attribute vec4 mc_Entity;
attribute vec4 mc_midTexCoord;
attribute vec4 at_tangent; //xyz = tangent vector, w = handedness, added in 1.7.10
uniform vec3 cameraPosition;
uniform mat4 gbufferModelView;
uniform mat4 gbufferModelViewInverse;
//moving stuff
uniform float frameTimeCounter;
const float PI = 3.14;
float pi2wt = (150.79*frameTimeCounter) * animationSpeed;
vec3 calcWave(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 = sin(pi2wt*fm + dot(pos, vec3(0.5))) * mm + ma;
vec3 d012 = sin(vec3(f0, f1, f2)*pi2wt);
vec3 ret;
ret.x = pi2wt*f3 + d012.x + d012.y - pos.x + pos.z + pos.y;
ret.z = pi2wt*f4 + d012.y + d012.z + pos.x - pos.z + pos.y;
ret.y = pi2wt*f5 + d012.z + d012.x + pos.z + pos.y - pos.y;
ret = sin(ret)*magnitude;
return ret;
}
vec3 calcMove(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 = calcWave(pos , 0.0027, 0.0400, 0.0400, 0.0127, 0.0089, 0.0114, 0.0063, 0.0224, 0.0015) * amp1;
vec3 move2 = calcWave(pos+move1, 0.0348, 0.0400, 0.0400, f0, f1, f2, f3, f4, f5) * amp2;
return move1+move2;
}/*---*/
varying float NdotLight;
#ifdef Shadows
varying float NdotL;
uniform vec3 shadowLightPosition;
varying vec3 getShadowpos;
uniform mat4 shadowProjection;
uniform mat4 shadowModelView;
#define diagonal3(mat) vec3((mat)[0].x, (mat)[1].y, (mat)[2].z)
vec3 calcShadows(in vec3 shadowpos, in vec3 norm){
shadowpos = mat3(shadowModelView) * shadowpos + shadowModelView[3].xyz;
shadowpos = diagonal3(shadowProjection) * shadowpos + shadowProjection[3].xyz;
float distortion = ((1.0 - SHADOW_MAP_BIAS) + length(shadowpos.xy * 1.25) * SHADOW_MAP_BIAS) * 0.85;
shadowpos.xy /= distortion;
NdotL = clamp(dot(norm, normalize(shadowLightPosition))*1.02-0.02,0.0,1.0);
float bias = distortion*distortion*(0.0046*tan(acos(NdotL)));
//Certain things shouldn't be diffused, also adjust bias for cheap self shadowing fix
if (mc_Entity.x == ENTITY_SMALLGRASS
|| mc_Entity.x == ENTITY_LOWERGRASS
|| mc_Entity.x == ENTITY_UPPERGRASS
|| mc_Entity.x == ENTITY_SMALLENTS
|| mc_Entity.x == ENTITY_LEAVES
|| mc_Entity.x == ENTITY_VINES
|| mc_Entity.x == ENTITY_LILYPAD
|| mc_Entity.x == ENTITY_FIRE
|| mc_Entity.x == ENTITY_WAVING_LANTERN
|| mc_Entity.x == ENTITY_EMISSIVE
|| mc_Entity.x == ENTITY_NON_DIFFUSE) {
NdotL = 0.75;
bias = 0.0010;
}
shadowpos.xyz = shadowpos.xyz * 0.5 + 0.5;
shadowpos.z -= bias;
return shadowpos.xyz;
}
#else
uniform vec3 shadowLightPosition;
#endif
#if nMap == 2
varying float dist;
varying vec3 viewVector;
varying vec4 vtexcoordam; // .st for add, .pq for mul
varying vec2 vtexcoord;
varying float isblock; //mc_Entity.x, hack to only apply pom to blocks
#endif
#ifdef TAA
uniform float viewWidth;
uniform float viewHeight;
vec2 texelSize = vec2(1.0/viewWidth,1.0/viewHeight);
uniform int framemod8;
const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.),
vec2(-1.,3.)/8.,
vec2(5.0,1.)/8.,
vec2(-3,-5.)/8.,
vec2(-5.,5.)/8.,
vec2(-7.,-1.)/8.,
vec2(3,7.)/8.,
vec2(7.,-7.)/8.);
#endif
#ifdef HandLight
uniform int isEyeInWater;
uniform int heldBlockLightValue;
uniform int heldBlockLightValue2;
#endif
void main() {
//Positioning
texcoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy;
lmcoord = (gl_TextureMatrix[1] * gl_MultiTexCoord1).xy;
#ifdef HandLight
bool underwaterlava = (isEyeInWater == 1.0 || isEyeInWater == 2.0);
if(!underwaterlava) lmcoord.x = max(lmcoord.x, max(max(float(heldBlockLightValue), float(heldBlockLightValue2)) - 1.0 - length(gl_ModelViewMatrix * gl_Vertex), 0.0) / 15.0);
#endif
vec3 position = mat3(gbufferModelViewInverse) * (gl_ModelViewMatrix * gl_Vertex).xyz + gbufferModelViewInverse[3].xyz;
vworldpos = position.xyz + cameraPosition;
bool istopv = gl_MultiTexCoord0.t < mc_midTexCoord.t;
#ifdef Waving_Tallgrass
if (mc_Entity.x == ENTITY_LOWERGRASS && istopv || mc_Entity.x == ENTITY_UPPERGRASS)
position.xyz += calcMove(vworldpos.xyz,
0.0041,
0.0070,
0.0044,
0.0038,
0.0240,
0.0000,
vec3(0.8,0.0,0.8),
vec3(0.4,0.0,0.4));
#endif
if (istopv) {
#ifdef Waving_Grass
if ( mc_Entity.x == ENTITY_SMALLGRASS)
position.xyz += calcMove(vworldpos.xyz,
0.0041,
0.0070,
0.0044,
0.0038,
0.0063,
0.0000,
vec3(3.0,1.6,3.0),
vec3(0.0,0.0,0.0));
#endif
#ifdef Waving_Entities
if (mc_Entity.x == ENTITY_SMALLENTS)
position.xyz += calcMove(vworldpos.xyz,
0.0041,
0.0070,
0.0044,
0.0038,
0.0240,
0.0000,
vec3(0.8,0.0,0.8),
vec3(0.4,0.0,0.4));
#endif
#ifdef Waving_Fire
if ( mc_Entity.x == ENTITY_FIRE)
position.xyz += calcMove(vworldpos.xyz,
0.0105,
0.0096,
0.0087,
0.0063,
0.0097,
0.0156,
vec3(1.2,0.4,1.2),
vec3(0.8,0.8,0.8));
#endif
}
#ifdef Waving_Leaves
if ( mc_Entity.x == ENTITY_LEAVES)
position.xyz += calcMove(vworldpos.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));
#endif
#ifdef Waving_Vines
if ( mc_Entity.x == ENTITY_VINES)
position.xyz += calcMove(vworldpos.xyz,
0.0040,
0.0064,
0.0043,
0.0035,
0.0037,
0.0041,
vec3(0.5,1.0,0.5),
vec3(0.25,0.5,0.25));
if (mc_Entity.x == ENTITY_INVERTED_LOWER && gl_MultiTexCoord0.t > mc_midTexCoord.t)
position.xyz += calcMove(vworldpos.xyz,
0.0041,
0.0070,
0.0044,
0.0038,
0.0240,
0.0000,
vec3(0.8,0.0,0.8),
vec3(0.4,0.0,0.4));
#endif
#ifdef Waving_Lava
if(mc_Entity.x == ENTITY_LAVA){
float fy = fract(vworldpos.y + 0.001);
float wave = 0.05 * sin(2 * PI * (frameTimeCounter*0.2 + vworldpos.x / 7.0 + vworldpos.z / 13.0))
+ 0.05 * sin(2 * PI * (frameTimeCounter*0.15 + vworldpos.x / 11.0 + vworldpos.z / 5.0));
position.y += clamp(wave, -fy, 1.0-fy)*0.5;
}
#endif
iswater = 0.0;
if(mc_Entity.x == ENTITY_WATER)iswater = 0.95; //don't fully remove shadows on water plane
#ifdef Waving_Water
if(mc_Entity.x == ENTITY_WATER || mc_Entity.x == ENTITY_LILYPAD) { //water, lilypads
float fy = fract(vworldpos.y + 0.001);
float wave = 0.05 * sin(2 * PI * (frameTimeCounter*0.8 + vworldpos.x / 2.5 + vworldpos.z / 5.0))
+ 0.05 * sin(2 * PI * (frameTimeCounter*0.6 + vworldpos.x / 6.0 + vworldpos.z / 12.0));
position.y += clamp(wave, -fy, 1.0-fy)*waves_amplitude;
}
#endif
#ifdef Waving_Lanterns
if(mc_Entity.x == ENTITY_WAVING_LANTERN){
vec3 fxyz = fract(vworldpos.xyz + 0.001);
float wave = 0.025 * sin(2 * PI * (frameTimeCounter*0.4 + vworldpos.x * 0.5 + vworldpos.z * 0.5));
//+ 0.025 * sin(2 * PI * (frameTimeCounter*0.4 + worldpos.y *0.25 + worldpos.z *0.25));
float waveY = 0.05 * cos(frameTimeCounter*2.0 + vworldpos.y);
position.x -= clamp(wave, -fxyz.x, 1.0-fxyz.x);
position.y += clamp(waveY*0.25, -fxyz.y, 1.0-fxyz.y)+0.015;
position.z += clamp(wave*0.45, -fxyz.z, 1.0-fxyz.z);
}
#endif
mat = 0.0;
#ifdef Reflections
#ifdef WaterReflection
if(mc_Entity.x == ENTITY_WATER)mat = 1.0;
#endif
#ifdef TransparentReflections
if(mc_Entity.x == ENTITY_ICE)mat = 2.0; //various ids are mapped to ice in block.properties
#endif
#endif
gl_Position = gl_ProjectionMatrix * gbufferModelView * vec4(position, 1.0);
#ifdef TAA
gl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize;
#endif
//Fog
gl_FogFragCoord = length(position.xyz);
color = gl_Color;
//Fix colors on emissive blocks
if(mc_Entity.x == ENTITY_EMISSIVE || mc_Entity.x == ENITIY_SOULFIRE || mc_Entity.x == ENTITY_LAVA || mc_Entity.x == ENTITY_FIRE || mc_Entity.x == ENTITY_WAVING_LANTERN || mc_Entity.x == 10300.0)color = vec4(1.0);
if(mc_Entity.x == ENITIY_SOULFIRE || mc_Entity.x == ENTITY_WAVING_LANTERN) lmcoord.x = 1.0; //increase brightness of emissive soul objects.
//Bump & Parallax mapping
vec3 normal = normalize(gl_NormalMatrix * gl_Normal);
vec3 tangent = normalize(gl_NormalMatrix * at_tangent.xyz);
vec3 binormal = normalize(gl_NormalMatrix * cross(at_tangent.xyz, gl_Normal.xyz) * at_tangent.w);
tbnMatrix = mat3(tangent.x, binormal.x, normal.x,
tangent.y, binormal.y, normal.y,
tangent.z, binormal.z, normal.z);
#if nMap == 2
isblock = mc_Entity.x;
if(mc_Entity.x == ENTITY_EMISSIVE || mc_Entity.x == 10300.0)isblock = -1.0; //enable bump and parallax mapping for defined ids.
vec2 midcoord = (gl_TextureMatrix[0] * mc_midTexCoord).st;
vec2 texcoordminusmid = texcoord.xy-midcoord;
vtexcoordam.pq = abs(texcoordminusmid)*2;
vtexcoordam.st = min(texcoord.xy ,midcoord-texcoordminusmid);
vtexcoord.xy = sign(texcoordminusmid)*0.5+0.5;
viewVector = tbnMatrix * (mat3(gl_ModelViewMatrix) * gl_Vertex.xyz + gl_ModelViewMatrix[3].xyz);
dist = length(gl_ModelViewMatrix * gl_Vertex);
#endif
#ifdef Shadows
getShadowpos = calcShadows(position, normal);
#else
NdotLight = clamp(dot(normal, normalize(shadowLightPosition))*1.02-0.02,0.0,1.0);
if (mc_Entity.x == ENTITY_SMALLGRASS
|| mc_Entity.x == ENTITY_LOWERGRASS
|| mc_Entity.x == ENTITY_UPPERGRASS
|| mc_Entity.x == ENTITY_SMALLENTS
|| mc_Entity.x == ENTITY_LEAVES
|| mc_Entity.x == ENTITY_VINES
|| mc_Entity.x == ENTITY_LILYPAD
|| mc_Entity.x == ENTITY_FIRE
|| mc_Entity.x == ENTITY_WAVING_LANTERN
|| mc_Entity.x == ENTITY_EMISSIVE
|| mc_Entity.x == ENTITY_NON_DIFFUSE) {
NdotLight = 0.60;
}
#endif
}

View File

@@ -0,0 +1,215 @@
# Change effect names through language instead of the shader itself
# How to change names and comments:
# option.EffectName=New effect name
# option.EffectName.comment=Your comment.
#
# Change screen names through language instead of properties
# How to change screen names and give them comments:
# screen.ScreenName=New screen name
# screen.ScreenName.comment=Your comment
#
# Tooltip lines ending with "!" are automatically shown red.
# example: option.SHADOW_FILTER.comment=Smooth out shadows. Very small performance hit!.
#Options
#############################
option.TAA_sharpness=sharpening
option.HandLight=Handheld Lighting
option.HandLight.comment=Toggle handheld lighting.
option.Celshading=Celshading
option.Celshading.comment=Adds a black outline to everything, creating a comic look. Just like in borderlands.
option.skyReflection=Sky reflection
option.skyReflection.comment=Reflect and blend the default skycolor. Makes water waves more visible. WIP
option.Reflections=Reflections
option.Reflections.comment=Toggle reflections for transparent blocks, like water, stained glass and ice.
option.Refl_Quality=Reflections Quality
option.Refl_Quality.comment=Adjust the quality of reflections. Fancy increases the accuracy of the raytracer which reduces glitches at the cost of performance.
value.Refl_Quality.1=Fast
value.Refl_Quality.2=Fancy
option.WaterReflection=Water reflections
option.WaterReflection.comment=See block.properties to add custom water ids.
option.TransparentReflections=Transparent reflections
option.TransparentReflections.comment=See block.properties to adjust reflective blocks.
option.Depth_of_Field=Depth of Field
option.Depth_of_Field.comment=Simulates eye focusing on objects. §4Low performance impact
option.DoF_Strength=Dof strength
option.DoF_Strength.comment=Changes the strength of the blurring effect.
value.DoF_Strength.60=Low
value.DoF_Strength.90=Default
value.DoF_Strength.120=High
value.DoF_Strength.150=Very High
option.smoothDof=Smooth Transition
option.smoothDof.comment=Toggle a smooth transition between clear and blurry while focusing on something.
option.Distance_Blur=Distance Blur
option.Distance_Blur.comment=§4Requires Depth of Field to be enabled. Replaces eye focusing effect with distance being blurred instead.
option.Dof_Distance_View=Blur view distance
option.Dof_Distance_View.comment=Adjust the view distance of blur.
value.Dof_Distance_View.128=Near
value.Dof_Distance_View.256=Default
value.Dof_Distance_View.384=Far
value.Dof_Distance_View.512=Very Far
option.Motionblur=Motionblur
option.Motionblur.comment=Blurres your view/camera during movemenent. Doesn't work with Depth of Field.
option.MB_strength=Blur strength
option.MB_strength.comment=Adjust the blur strength of Motionblur.
value.MB_strength.0.008=Low
value.MB_strength.0.014=Default
value.MB_strength.0.020=High
option.sunPathRotation=Sun/Moon angle
option.sunPathRotation.comment=Adjust sun and moon angle.
value.sunPathRotation.-0.15f=Default
value.sunPathRotation.-40.0f=Alternative
option.Godrays=Godrays
option.Godrays.comment=Toggle godrays.
option.grays_quality=Godrays quality
option.grays_quality.comment=Adjust godrays quality, fast causes a low performance hit while fancy causes a high performance hit.
value.grays_quality.1=Fast
value.grays_quality.2=Fancy
option.grays_intensity=Godrays intensity
option.Colored_Shadows=Colored Shadows
option.Colored_Shadows.comment=Toggle colored shadows. Tints shadows color if passing through stained glass.
option.grass_shadows=Grass shadows
option.grass_shadows.comment=Toggle grass shadows.
option.shadowMapResolution=Shadows resolution
option.shadowMapResolution.comment=Change the shadows resolution.
value.shadowMapResolution.512=Very Low
value.shadowMapResolution.1024=Low
value.shadowMapResolution.2048=Medium
value.shadowMapResolution.3072=High
value.shadowMapResolution.4096=Very High
value.shadowMapResolution.8192=Extreme
option.shadowDistance=Shadows view distance
option.shadowDistance.comment=Change the view distance of shadows.
value.shadowDistance.60.0=Very Near
value.shadowDistance.90.0=Near
value.shadowDistance.120.0=Far
value.shadowDistance.150.0=Very Far
value.shadowDistance.180.0=To Far
value.shadowDistance.210.0=Way to Far
option.slight=Lighting strength
option.slight.comment=Adjust the lighting strength of shadows/light
option.Whiteworld=Whiteworld
option.Whiteworld.comment=Makes the ground white, mostly used for debugging. This option was added because it was requested alot. I suppose it looks kinda neat for screenshots.
option.waterTex=Water texture
option.waterTex.comment=Toggle resoucepack water texture.
option.MobsFlashRed=Damage flash
option.MobsFlashRed.comment=Makes mobs and the player flash red when hurt.
option.Colorboost=Color boost
option.Colorboost.comment=If enabled, gives default colors a little kick.
option.Waving_Leaves=Waving Leaves
option.Waving_Leaves.comment=
option.Waving_Vines=Waving Vines
option.Waving_Vines.comment=
option.Waving_Grass=Waving Grass
option.Waving_Grass.comment=
option.Waving_Tallgrass=Waving Tallgrass
option.Waving_Tallgrass.comment=
option.Waving_Fire=Waving Fire
option.Waving_Fire.comment=
option.Waving_Lanterns=Waving Lanterns
option.Waving_Lava=Waving Lava
option.Waving_Lava.comment=
option.Waving_Water=Waving Water
option.Waving_Water.comment=Includes waving lilypads.
option.waves_amplitude=Waves amplitude
option.waves_amplitude.comment=Adjust waves amplitude of waving water.
option.Waving_Entities=Waving Entities
option.Waving_Entities.comment=Includes: Saplings, small flowers, wheat, carrots, potatoes and beetroot.
option.depthbuffer=Depthbuffer
option.depthbuffer.comment=If enabled draw the depth buffer.
option.draw_refnormals=Draw reflection normals
option.draw_bmap=Draw bumpmap normals
option.nMap=RP Support
option.nMap.comment=Enable bump or parallax support for resourcepacks, the resourcepack must support it.
value.nMap.0=Off
value.nMap.1=Bumpmapping
value.nMap.2=Parallax
option.POM_RES=RP Resolution
option.POM_RES.comment=Increasing the resolution past the rp resolution makes it smoother.
option.POM_DEPTH=POM Depth
option.POM_DEPTH.comment=Adjust the depth of parallax mapping, to high values might look weird.
option.POM_DIST=POM Distance
option.POM_DIST.comment=Adjust the distance at which parallax mapping renders.
option.ambientOcclusionLevel=Default Minecraft AO
option.ambientOcclusionLevel.comment=Minecraft comes with it's own kind of ambient occlusion.
option.customLight=Custom Lightmap
option.customLight.comment=Toggle custom lightmap and adjust the colors for emissive light.
option.emissive_R=red
option.emissive_G=green
option.emissive_B=blue
#----------------------------------------------------
#Screens
screen.AA_SCREEN=Antialiasing
screen.AA_SCREEN.comment=Toggle antialiasing (TAA) and adaptive sharpening.
screen.AO_SCREEN=Ambient Occlusion
screen.AO_SCREEN.comment=Toggle ambient occlusion (SSAO) and adjust minecrafts default ambient occlusion.
screen.COLOR_SCREEN=Colors
screen.COLOR_SCREEN.comment=Contains colorboost and crossprocess(color filter)
screen.DOF_SCREEN=Depth of field
screen.DOF_SCREEN.comment=Change things related to Depth of Field.
screen.NORMALMAP_SCREEN=Normal map
screen.NORMALMAP_SCREEN.comment=Enable bump or parallax support if the resourcepack supports it.
screen.MOTION_SCREEN=Motionblur
screen.MOTION_SCREEN.comment=Change things related to Motionblur.
screen.REFLECTIONS_SCREEN=Reflections
screen.REFLECTIONS_SCREEN.comment=Contains reflections related things.
screen.SHADOWS_SCREEN=Shadows
screen.SHADOWS_SCREEN.comment=Contains shadow related things, like shadow view distance.
screen.SKY_SCREEN=Sky
screen.SKY_SCREEN.comment=Contains sky related things, like godrays.
screen.WAVING_SCREEN=Waving Objects
screen.WAVING_SCREEN.comment=Contains grass, wheat, leaves etc.
screen.MISC_SCREEN=Misc
screen.MISC_SCREEN.comment=Contains debugging stuff and whatever
#----------------------------------------------------

View File

@@ -0,0 +1,65 @@
#Global Settings
# Set clouds type or turn clouds off
# The clouds are also controlled by "Video Settings -> Details -> Clouds" with higher priority
# clouds=fast|fancy|off
# Enable or disable old hand light
# Backwards compatibility for shader packs not supporting main and off hand.
# When enabled uses the handheld item with higher light value for the main hand.
# The old hand light is also controlled by "Video Settings -> Shaders -> Old Hand Light" with higher priority
#oldHandLight=true|false
# Enable or disable old block lighting with fixed multiplier
# The old block lighting is also controlled by "Video Settings -> Shaders -> Old Lighting" with higher priority
# oldLighting=true|false
oldLighting=false
# Enable or disable rendering of translucent blocks (water, stained glass) in the shadow pass
# shadowTranslucent=true|false
shadowTranslucent=true
frustum.culling=true
# Enable or disable the dynamic hand light from "Dynamic Lights"
# This option can be used to disable the dynamic hand light from "Dynamic Lights" if the shader implements its own hand light.
# dynamicHandLight=true|false
# Enable or disable underwater screen overlay
# underwaterOverlay=true|false
# Enable or disable sun rendering
# sun=true|false
sun=true
# Enable or disable moon rendering
# moon=true|false
moon=true
# Disable the shadow progam if shadows are disabled
program.shadow.enabled=Shadows
#Final screen
screen=<profile> <empty> <empty> <empty> [AA_SCREEN] [AO_SCREEN] [COLOR_SCREEN] [DOF_SCREEN] [NORMALMAP_SCREEN] [MOTION_SCREEN] [REFLECTIONS_SCREEN] [SKY_SCREEN] [SHADOWS_SCREEN] [WAVING_SCREEN] [MISC_SCREEN] Celshading Fog MobsFlashRed
#Sub-screens:
screen.AA_SCREEN=TAA TAA_sharpness
screen.AO_SCREEN=SSAO ambientOcclusionLevel
screen.COLOR_SCREEN=Tonemap gamma Colorboost <empty> Crossprocess <empty> HandLight <empty> customLight emissive_R <empty> emissive_G <empty> emissive_B
screen.DOF_SCREEN=Depth_of_Field DoF_Strength smoothDof <empty> Distance_Blur Dof_Distance_View
screen.NORMALMAP_SCREEN=nMap POM_RES <empty> POM_DIST <empty> POM_DEPTH
screen.MOTION_SCREEN=Motionblur MB_strength
screen.SHADOWS_SCREEN=Shadows Colored_Shadows grass_shadows shadowMapResolution shadowDistance slight sunPathRotation
screen.SKY_SCREEN=Godrays grays_quality <empty> grays_intensity
screen.REFLECTIONS_SCREEN=Reflections Refractions WaterReflection waterTex TransparentReflections skyReflection
screen.WAVING_SCREEN=animationSpeed <empty> Waving_Grass Waving_Tallgrass Waving_Entities Waving_Leaves Waving_Vines Waving_Fire Waving_Lanterns Waving_Lava Waving_Water waves_amplitude
screen.MISC_SCREEN=depthbuffer draw_refnormals <empty> draw_bmap
screen.WIP=*
sliders=gamma emissive_R emissive_G emissive_B ambientOcclusionLevel TAA_sharpness
# Used for TAA
#uniform.vec2.texelSize=vec2(1.0/viewWidth,1.0/viewHeight) //doesnt work in 1.7.10
uniform.int.framemod8=fmod(frameCounter, 8)
profile.Fast=TAA:false SSAO:false HandLight:true customLight:false Celshading:false MobsFlashRed:true Fog:true Tonemap:false Colorboost:false Crossprocess:false Depth_of_Field:false Distance_Blur:false nMap:0 Motionblur:false Shadows:true Colored_Shadows:true grass_shadows:true shadowMapResolution:1024 shadowDistance:90.0 Godrays:false grays_quality:1 Reflections:true Refractions:false WaterReflection:true waterTex:true TransparentReflections:true skyReflection:false Waving_Grass:true Waving_Tallgrass:true Waving_Entities:true Waving_Leaves:true Waving_Vines:true Waving_Fire:true Waving_Lava:true Waving_Water:true Waving_Lanterns:true
profile.Fancy=TAA:true SSAO:true HandLight:true customLight:false Celshading:false MobsFlashRed:true Fog:true Tonemap:false Colorboost:false Crossprocess:false Depth_of_Field:false Distance_Blur:false nMap:0 Motionblur:false Shadows:true Colored_Shadows:true grass_shadows:true shadowMapResolution:2048 shadowDistance:110.0 Godrays:true grays_quality:2 Reflections:true Refractions:true WaterReflection:true waterTex:true TransparentReflections:true skyReflection:true Waving_Grass:true Waving_Tallgrass:true Waving_Entities:true Waving_Leaves:true Waving_Vines:true Waving_Fire:true Waving_Lava:true Waving_Water:true Waving_Lanterns:true

View File

@@ -0,0 +1,112 @@
/*
Sildur's Enhanced Default:
https://www.patreon.com/Sildur
https://sildurs-shaders.github.io/
https://twitter.com/Sildurs_shaders
https://www.curseforge.com/minecraft/customization/sildurs-enhanced-default
Permissions:
You are not allowed to edit, copy code or share my shaderpack under a different name or claim it as yours.
*/
#ifdef composite0
#define SSAO //Toggle custom ambient occlusion.
const float ambientOcclusionLevel = 1.0f; //Adjust minecrafts inbuild ambient occlusion. [0.0f 0.1f 0.2f 0.3f 0.4f 0.5f 0.6f 0.7f 0.8f 0.9f 1.0f]
//#define Celshading //Cel shades everything, making it look somewhat like Borderlands.
#define Reflections //Toggle reflections, also adjust in gbuffers_textured.fsh
#define Refractions //Toggle refractions / distortion caused by waves.
#define skyReflection //Reflect and blend the default skycolor. Makes water waves more visible. WIP
#define Godrays //Toggle godrays
#define grays_quality 2 //[1 2] 1=fast 2=fancy
#define grays_intensity 0.65 //Adjust godrays intensity [0.35 0.5 0.65 0.70 0.85 1.0]
//Debugging stuff
//#define depthbuffer //Draw depth buffer
//#define draw_refnormals //Draw reflection normals, actually composite normals but only reflections are stored in the buffer.
#endif
#ifdef composite1
#define TAA //Toggle temporal anti-aliasing (TAA)
#define TAA_sharpness 0.65 //[0.0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1.0 1.05 1.1 1.15 1.2 1.25 1.3 1.35 1.4 1.45 1.5] Adjust sharpening strength. 0.0 turns sharpening completly off.
#endif
#ifdef final
//#define Crossprocess //It's like a color filter, alters all colors abit if enabled.
//#define Depth_of_Field //Simulates eye focusing on objects. Low performance impact
//#define Distance_Blur //Requires Depth of Field to be enabled. Replaces eye focusing effect with distance being blurred instead.
#define smoothDof //Toggle smooth transition between clear and blurry.
#define DoF_Strength 90 //[60 90 120 150]
#define Dof_Distance_View 256 //[128 256 384 512]
//#define Motionblur //Blurres your view/camera during movemenent. Low performance impact. Doesn't work with Depth of Field.
#define MB_strength 0.014 //[0.008 0.014 0.020]
//#define Tonemap //Toggle tonemapping, slightly altering colors / color balance. Based of vibrant shaders, which uses uncharted2tonemap.
#define gamma 2.2 //Adjust gamma used by tonemapping. [1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0]
#endif
#ifdef gbuffers_clouds
#define Fog //Toggle default fog.
#endif
#ifdef gbuffers_textured
//#define Colorboost //Gives default colors a little kick
#define MobsFlashRed
#define Fog //Toggle default fog.
#define Reflections //Toggle reflections, also adjust in composite.fsh
#define WaterReflection
#define TransparentReflections //see block.properties, transparent blocks are assigned to ice (79)
#define Shadows //Also adjust in vertex, SHADOW_MAP_BIAS is also in vertex
#ifdef Shadows
#define Colored_Shadows
#define slight 0.55 //[0.50 0.55 0.60 0.65 0.70 0.75 0.80]
#define SHADOW_MAP_BIAS 0.80
const int shadowMapResolution = 2048; //Shadows resolution. [512 1024 2048 3072 4096 8192]
const float shadowDistance = 110.0; //Draw distance of shadows.[60.0 90.0 120.0 150.0 180.0 210.0]
const float shadowDistanceRenderMul = 1.0f;
const bool shadowHardwareFiltering0 = true;
const bool shadowHardwareFiltering1 = true;
#endif
const float sunPathRotation = -40.0f; //[-10.0 -20.0 -30.0 -40.0f -50.0 -60.0 -70.0 -80.0 -0.15f -0.0 10.0 20.0 30.0 40.0 50.0 60.0 70.0 80.0]
#define waterTex //Toggle water texture
#define nMap 0 //[0 1 2]0=Off 1=Bumpmapping, 2=Parallax, also adjust in vertex
#define POM_RES 32 //Texture / Resourcepack resolution. [32 64 128 256 512 1024 2048]
#define POM_DIST 16.0 //[8.0 16.0 24.0 32.0 40.0 48.0 56.0 64.0]
#define POM_DEPTH 0.30 //[0.10 0.20 0.30 0.40 0.50 0.60 0.70 0.80 0.90 1.0]
//#define draw_bmap //Draw bmap normals
#define HandLight //Toggle handheld lighting.
//#define customLight //Toggle custom light support for emissive blocks.
#define emissive_R 3.0 //[0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0]
#define emissive_G 1.5 //[0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0]
#define emissive_B 0.5 //[0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0]
#define animationSpeed 1.0 //[0.25 0.5 0.75 1.0 1.25 1.5 1.75 2.0]
#define Waving_Leaves
#define Waving_Vines
#define Waving_Grass
#define Waving_Entities //Includes: Saplings, small flowers, wheat, carrots, potatoes and beetroot.
#define Waving_Tallgrass
#define Waving_Fire
#define Waving_Lava
#define Waving_Water
#define Waving_Lanterns
#define waves_amplitude 0.65 //[0.55 0.65 0.75 0.85 0.95 1.05 1.15 1.25 1.35 1.45 1.55 1.65 1.75 1.85 1.95 2.05]
#define TAA
#endif
#ifdef shadowprogram
#define Shadows
#define SHADOW_MAP_BIAS 0.80
#define grass_shadows
#endif

View File

@@ -0,0 +1,25 @@
#version 120
/* DRAWBUFFERS:02 */ //0=gcolor, 2=gnormal for normals
/*
Sildur's Enhanced Default:
https://www.patreon.com/Sildur
https://sildurs-shaders.github.io/
https://twitter.com/Sildurs_shaders
https://www.curseforge.com/minecraft/customization/sildurs-enhanced-default
Permissions:
You are not allowed to edit, copy code or share my shaderpack under a different name or claim it as yours.
*/
varying vec3 texcoord;
uniform sampler2D texture;
uniform int blockEntityId;
void main() {
vec4 color = texture2D(texture, texcoord.xy)*texcoord.z;
if(blockEntityId == 10089.0)color *= 0.0; //remove beacon beam shadows, 10089 is actually the id of all emissive blocks but only the beam should be a block entity
gl_FragData[0] = color;
gl_FragData[1] = vec4(0.0); //improves performance
}

View File

@@ -0,0 +1,42 @@
#version 120
/*
Sildur's Enhanced Default:
https://www.patreon.com/Sildur
https://sildurs-shaders.github.io/
https://twitter.com/Sildurs_shaders
https://www.curseforge.com/minecraft/customization/sildurs-enhanced-default
Permissions:
You are not allowed to edit, copy code or share my shaderpack under a different name or claim it as yours.
*/
#define shadowprogram
#include "shaders.settings"
varying vec3 texcoord;
attribute vec4 mc_Entity;
#ifdef Shadows
vec2 calcShadowDistortion(in vec2 shadowpos) {
float distortion = ((1.0 - SHADOW_MAP_BIAS) + length(shadowpos.xy * 1.25) * SHADOW_MAP_BIAS) * 0.85;
return shadowpos.xy / distortion;
}
#endif
void main() {
vec4 position = gl_ModelViewProjectionMatrix * gl_Vertex;
#ifdef Shadows
position.xy = calcShadowDistortion(position.xy);
#endif
gl_Position = position;
texcoord.xy = (gl_MultiTexCoord0).xy;
texcoord.z = 1.0;
if(mc_Entity.x == 10008.0) texcoord.z = 0.0;
#ifndef grass_shadows
if(mc_Entity.x == 10031.0 || mc_Entity.x == 10175.0 || mc_Entity.x == 10176.0) texcoord.z = 0.0;
#endif
}

View File

@@ -0,0 +1 @@
#include "/composite.fsh"

View File

@@ -0,0 +1 @@
#include "/composite.vsh"

View File

@@ -0,0 +1 @@
#include "/composite1.fsh"

View File

@@ -0,0 +1 @@
#include "/composite1.vsh"

View File

@@ -0,0 +1 @@
#include "/final.fsh"

View File

@@ -0,0 +1 @@
#include "/final.vsh"

View File

@@ -0,0 +1 @@
#include "/gbuffers_skytextured.fsh"

View File

@@ -0,0 +1 @@
#include "/gbuffers_skytextured.vsh"

View File

@@ -0,0 +1 @@
#include "/gbuffers_textured.fsh"

View File

@@ -0,0 +1 @@
#include "/gbuffers_textured.vsh"

View File

@@ -0,0 +1,4 @@
#version 120
//Iris needs dummy files or nether and end are broken if shadowtextures are loaded (since MC 1.21)
void main() {
}

View File

@@ -0,0 +1,4 @@
#version 120
//Iris needs dummy files or nether and end are broken if shadowtextures are loaded (since MC 1.21)
void main() {
}

View File

@@ -0,0 +1 @@
#include "/composite.fsh"

View File

@@ -0,0 +1 @@
#include "/composite.vsh"

View File

@@ -0,0 +1 @@
#include "/composite1.fsh"

View File

@@ -0,0 +1 @@
#include "/composite1.vsh"

View File

@@ -0,0 +1 @@
#include "/final.fsh"

View File

@@ -0,0 +1 @@
#include "/final.vsh"

View File

@@ -0,0 +1 @@
#include "/gbuffers_skytextured.fsh"

View File

@@ -0,0 +1 @@
#include "/gbuffers_skytextured.vsh"

View File

@@ -0,0 +1 @@
#include "/gbuffers_textured.fsh"

View File

@@ -0,0 +1 @@
#include "/gbuffers_textured.vsh"

View File

@@ -0,0 +1,4 @@
#version 120
//Iris needs dummy files or nether and end are broken if shadowtextures are loaded (since MC 1.21)
void main() {
}

View File

@@ -0,0 +1,4 @@
#version 120
//Iris needs dummy files or nether and end are broken if shadowtextures are loaded (since MC 1.21)
void main() {
}

50
README.md Normal file
View File

@@ -0,0 +1,50 @@
# Gregtech: New Bastards Custom Clientpack
Welcome to the Gregtech: New Horizons Clientpack!
## Installation Instructions
### Easy Way
The easy way is to download the latest release or the repo itself. Import the .zip file into your Prism Launcher. When updating, do the same then move modified files to the new instance.
### Hard Way (Recommended)
The recommended install method is to clone the repo using git into your `\Prism Launcher\instances\`. Then play directly on that downloaded repo. You can make your own local branch to save your local progress or just use git stash. This allows you to pull the lastest version and do a merge locally to preserve data. I recommend using a git GUI like github desktop or Visual Studio Code.
#### Windows
Run these commands. Be sure to enter in the path to your instance folder.
Install git:
```
winget install git.git
```
Use git to download Clientpack
```
git clone https://gitea.emblad.com/samsonsin/Gregtech-New-Bastards "<PATH-TO-PRISMLAUNCHER\INSTANCES>\Gregtech-New-Bastards"
```
## 🛠 Modifications
### Server Mods
- [sharedprospecting](https://github.com/Lyfts/SharedProspecting/releases/download/2.0.3/sharedprospecting-2.0.3.jar)
- [worldedit](https://github.com/GTNewHorizons/worldedit-gtnh/releases/download/v0.0.8/worldedit-v0.0.8.jar)
- [Dynmap](https://github.com/GTNewHorizons/GTNH-Web-Map/releases/download/0.3.39/gtnh-web-map-0.3.39.jar)
- [FancyDiscord](https://www.curseforge.com/minecraft/mc-mods/fancydiscord/files/all?page=1&pageSize=20&version=1.7.10)
### Client Mods
- [better-foliage](https://www.curseforge.com/minecraft/mc-mods/better-foliage)
- [itemphysic-lite](https://www.curseforge.com/minecraft/mc-mods/itemphysic-lite)
- [mAtmos](https://www.curseforge.com/minecraft/mc-mods/matmos)
- [nofog](https://www.curseforge.com/minecraft/mc-mods/nofog)
- [extreme-sound-muffler-legacy](https://www.curseforge.com/minecraft/mc-mods/extreme-sound-muffler-legacy)
- [Sound-Physics](https://github.com/mist475/Sound-Physics)
- [DynamicSurroundings](https://github.com/mist475/DynamicSurroundings)
- [DEConfig-Integration](https://github.com/Drathonix/DEConfig-Integration)
- [WorldEditCUI](https://www.curseforge.com/minecraft/mc-mods/worldeditcui-forge-edition/download/2390420)
- [Journeymap Unlimited](https://www.curseforge.com/minecraft/mc-mods/journeymap/download/6114229)
### 🎨 Resource Packs & Shaders
- [Faithful x32](https://wiki.gtnewhorizons.com/wiki/Resource_Packs)
- [Complementary Shaders (Sampsa's discord version)](https://wiki.gtnewhorizons.com/wiki/Shaders)
- [Sildur's Enhanced Default](https://www.curseforge.com/minecraft/shaders/sildurs-enhanced-default/files/6558920)
---

View File

@@ -10,6 +10,6 @@ OverrideMemory=false
OverrideNativeWorkarounds=false OverrideNativeWorkarounds=false
OverrideWindow=false OverrideWindow=false
iconKey=gtnh_icon iconKey=gtnh_icon
name=Gregtech: New Bastards v2.7.4.2 name=Gregtech: New Bastards v2.7.4.4
notes= notes=
ConfigVersion=1.2 ConfigVersion=1.2