Merge branch 'X0nk:main' into main

This commit is contained in:
NakiriRuri 2023-07-09 21:44:26 +08:00 committed by GitHub
commit c0581a4a4a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
24 changed files with 346 additions and 289 deletions

View File

@ -35,7 +35,7 @@
####### ----- lightsources ----- ####### ####### ----- lightsources ----- #######
block.10005 = minecraft:sculk_sensor:sculk_sensor_phase=active minecraft:soul_fire minecraft:soul_campfire:lit=true minecraft:cave_vines_plant:berries=true minecraft:soul_lantern minecraft:soul_torch minecraft:soul_wall_torch minecraft:conduit minecraft:beacon minecraft:sea_pickle minecraft:respawn_anchor:charges=4 minecraft:smoker:lit=true minecraft:blast_furnace:lit=true minecraft:furnace:lit=true minecraft:lava_cauldron minecraft:sea_lantern minecraft:cave_vines:berries=true minecraft:glowstone minecraft:torch minecraft:wall_torch minecraft:lava minecraft:fire minecraft:redstone_torch minecraft:redstone_wall_torch minecraft:jack_o_lantern minecraft:magma_block minecraft:redstone_lamp:lit=true minecraft:lantern minecraft:campfire:lit=true minecraft:shroomlight minecraft:end_rod minecraft:end_gateway minecraft:lava minecraft:fire block.10005 = minecraft:candle:lit=true minecraft:sculk_sensor:sculk_sensor_phase=active minecraft:soul_fire minecraft:soul_campfire:lit=true minecraft:cave_vines_plant:berries=true minecraft:soul_lantern minecraft:soul_torch minecraft:soul_wall_torch minecraft:conduit minecraft:beacon minecraft:sea_pickle minecraft:respawn_anchor:charges=4 minecraft:smoker:lit=true minecraft:blast_furnace:lit=true minecraft:furnace:lit=true minecraft:lava_cauldron minecraft:sea_lantern minecraft:cave_vines:berries=true minecraft:glowstone minecraft:torch minecraft:wall_torch minecraft:lava minecraft:fire minecraft:redstone_torch minecraft:redstone_wall_torch minecraft:jack_o_lantern minecraft:magma_block minecraft:redstone_lamp:lit=true minecraft:lantern minecraft:campfire:lit=true minecraft:shroomlight minecraft:end_rod minecraft:end_gateway minecraft:lava minecraft:fire
####### ----- reflective translucents / glass ----- ####### ####### ----- reflective translucents / glass ----- #######

View File

@ -170,16 +170,20 @@ void main() {
vec2 lightmap = dataUnpacked1.yz; vec2 lightmap = dataUnpacked1.yz;
bool translucent = abs(dataUnpacked1.w-0.5) <0.01; // bool lightningBolt = abs(dataUnpacked1.w-0.5) <0.01;
bool translucent2 = abs(dataUnpacked1.w-0.6) <0.01; // Weak translucency // bool isLeaf = abs(dataUnpacked1.w-0.55) <0.01;
bool translucent3 = abs(dataUnpacked1.w-0.55) <0.01; // Weak translucency // bool translucent2 = abs(dataUnpacked1.w-0.6) <0.01; // Weak translucency
bool translucent4 = abs(dataUnpacked1.w-0.65) <0.01; // Weak translucency // bool translucent4 = abs(dataUnpacked1.w-0.65) <0.01; // Weak translucency
bool entities = abs(dataUnpacked1.w-0.45) <0.01; // Weak translucency bool entities = abs(dataUnpacked1.w-0.45) < 0.01;
bool hand = abs(dataUnpacked1.w-0.75) < 0.01; bool hand = abs(dataUnpacked1.w-0.75) < 0.01;
// bool blocklights = abs(dataUnpacked1.w-0.8) <0.01;
float minshadowfilt = Min_Shadow_Filter_Radius; float minshadowfilt = Min_Shadow_Filter_Radius;
float maxshadowfilt = Max_Shadow_Filter_Radius; float maxshadowfilt = Max_Shadow_Filter_Radius;
float NdotL = clamp(dot(normal,WsunVec),0.0,1.0);
float vanillAO = clamp(texture2D(colortex15,texcoord).a,0.0,1.0) ; float vanillAO = clamp(texture2D(colortex15,texcoord).a,0.0,1.0) ;
if(lightmap.y < 0.1 && !entities){ if(lightmap.y < 0.1 && !entities){
@ -191,23 +195,18 @@ void main() {
float SpecularTex = texture2D(colortex8,texcoord).z; float SpecularTex = texture2D(colortex8,texcoord).z;
float LabSSS = clamp((-65.0 + SpecularTex * 255.0) / 190.0 ,0.0,1.0); float LabSSS = clamp((-65.0 + SpecularTex * 255.0) / 190.0 ,0.0,1.0);
#ifndef Variable_Penumbra_Shadows #ifndef Variable_Penumbra_Shadows
if (translucent && !hand) minshadowfilt += 25; if (LabSSS > 0.0 && !hand && NdotL < 0.001) minshadowfilt += 50;
#endif #endif
gl_FragData[0] = vec4(minshadowfilt, 0.1, 0.0, 0.0); gl_FragData[0] = vec4(minshadowfilt, 0.1, 0.0, 0.0);
if (z < 1.0){ if (z < 1.0){
// if( translucent || translucent2) // if( translucent || translucent2)
if (!hand){ if (!hand){
float NdotL = clamp(dot(normal,WsunVec),0.0,1.0);
vec3 fragpos = toScreenSpace(vec3(texcoord/RENDER_SCALE-vec2(tempOffset)*texelSize*0.5,z)); vec3 fragpos = toScreenSpace(vec3(texcoord/RENDER_SCALE-vec2(tempOffset)*texelSize*0.5,z));
@ -232,7 +231,7 @@ void main() {
float mult = maxshadowfilt; float mult = maxshadowfilt;
float avgBlockerDepth = 0.0; float avgBlockerDepth = 0.0;
vec2 scales = vec2(0.0,Max_Filter_Depth); vec2 scales = vec2(0.0, 120.0 - Max_Filter_Depth);
float blockerCount = 0.0; float blockerCount = 0.0;
float rdMul = distortFactor*(1.0+mult)*d0*k/shadowMapResolution; float rdMul = distortFactor*(1.0+mult)*d0*k/shadowMapResolution;
float diffthreshM = diffthresh*mult*d0*k/20.; float diffthreshM = diffthresh*mult*d0*k/20.;
@ -269,5 +268,4 @@ void main() {
} }
} }
} }

View File

@ -12,10 +12,10 @@ const bool shadowHardwareFiltering = true;
flat varying vec3 averageSkyCol_Clouds; flat varying vec3 averageSkyCol_Clouds;
flat varying vec4 lightCol; flat varying vec4 lightCol;
flat varying vec2 rodExposureDepth;
flat varying vec3 WsunVec; flat varying vec3 WsunVec;
flat varying vec2 TAA_Offset; flat varying vec2 TAA_Offset;
flat varying float tempOffsets;
uniform float eyeAltitude; uniform float eyeAltitude;
@ -597,13 +597,11 @@ void rtGI(inout vec3 lighting, vec3 normal,vec2 noise,vec3 fragpos, float lightm
vec3 SubsurfaceScattering_sun(vec3 albedo, float Scattering, float Density, float lightPos){ vec3 SubsurfaceScattering_sun(vec3 albedo, float Scattering, float Density, float lightPos){
float labcurve = pow(Density,LabSSS_Curve); float labcurve = pow(Density,LabSSS_Curve);
float density = sqrt(30 - labcurve*15); float density = sqrt(30 - labcurve*15);
vec3 absorbed = max(1.0 - albedo,0.0) * density; vec3 absorbed = max(1.0 - albedo,0.0);
vec3 scatter = exp(-sqrt(Scattering * absorbed)) * exp(Scattering * -density); vec3 scatter = exp(absorbed * -sqrt(Scattering * 5)) * exp(Scattering * -density);
scatter *= labcurve; scatter *= labcurve;
scatter *= 0.5 + CustomPhase(lightPos, 1.0,30.0)*20; scatter *= 0.5 + CustomPhase(lightPos, 1.0,30.0)*20;
@ -614,9 +612,8 @@ vec3 SubsurfaceScattering_sun(vec3 albedo, float Scattering, float Density, floa
vec3 SubsurfaceScattering_sky(vec3 albedo, float Scattering, float Density){ vec3 SubsurfaceScattering_sky(vec3 albedo, float Scattering, float Density){
vec3 absorbed = max(luma(albedo) - albedo,0.0); vec3 absorbed = max(luma(albedo) - albedo,0.0);
vec3 scatter = sqrt(exp(-(absorbed * Scattering * 15))) * (1.0 - Scattering);
// vec3 scatter = exp(-sqrt(max(Scattering+0.05,0.0) * absorbed * 25)) * exp(Scattering * -5);
vec3 scatter = exp(-sqrt(Scattering * absorbed * 5)) * pow((-Scattering+1.0)*1.25,2.0);
scatter *= pow(Density,LabSSS_Curve); scatter *= pow(Density,LabSSS_Curve);
return scatter; return scatter;
@ -689,18 +686,21 @@ void GriAndEminShadowFix(
float SkyLightmap, float SkyLightmap,
bool Entities bool Entities
){ ){
float DistanceOffset = clamp(0.1 + length(WorldPos) / (shadowMapResolution*0.20), 0.0,1.0) ; float DistanceOffset = clamp(0.1 + length(WorldPos) / (shadowMapResolution*0.20), 0.0,1.0) ;
vec3 Bias = FlatNormal * DistanceOffset; // adjust the bias thingy's strength as it gets farther away. vec3 Bias = FlatNormal * DistanceOffset; // adjust the bias thingy's strength as it gets farther away.
vec3 finalBias = Bias;
// stop lightleaking // stop lightleaking
if(SkyLightmap < 0.1 && !Entities) { vec2 scale = vec2(0.5); scale.y *= 0.5;
WorldPos += mix(Bias, 0.5 * (0.5 - fract(WorldPos + cameraPosition + FlatNormal*0.01 ) ), VanillaAO) ; vec3 zoomShadow = scale.y - scale.x * fract(WorldPos + cameraPosition + Bias*scale.y);
}else{ if(SkyLightmap < 0.1 && !Entities) finalBias = mix(Bias, zoomShadow, clamp(VanillaAO*5,0,1));
WorldPos += Bias;
} WorldPos += finalBias;
} }
void LabEmission( void Emission(
inout vec3 Lighting, inout vec3 Lighting,
vec3 Albedo, vec3 Albedo,
float Emission float Emission
@ -755,7 +755,7 @@ void main() {
float TranslucentDepth = clamp( ld(z0)-ld(z0),0.0,1.0); float TranslucentDepth = clamp( ld(z0)-ld(z0),0.0,1.0);
vec2 tempOffset=TAA_Offset; vec2 tempOffset=TAA_Offset;
vec3 fragpos = toScreenSpace(vec3(texcoord/RENDER_SCALE-vec2(tempOffset)*texelSize*0.5,z)); vec3 fragpos = toScreenSpace(vec3(texcoord/RENDER_SCALE-TAA_Offset*texelSize*0.5,z));
vec3 fragpos_rtshadow = toScreenSpace(vec3(texcoord/RENDER_SCALE,z)); vec3 fragpos_rtshadow = toScreenSpace(vec3(texcoord/RENDER_SCALE,z));
vec3 fragpos_handfix = fragpos; vec3 fragpos_handfix = fragpos;
@ -780,8 +780,8 @@ void main() {
scatterCoef *= 0.1; scatterCoef *= 0.1;
#endif #endif
float noise = blueNoise();
float noise = blueNoise();
float iswaterstuff = texture2D(colortex7,texcoord).a ; float iswaterstuff = texture2D(colortex7,texcoord).a ;
bool iswater = iswaterstuff > 0.99; bool iswater = iswaterstuff > 0.99;
@ -818,10 +818,6 @@ void main() {
#endif #endif
float vanilla_AO = normalAndAO.a; float vanilla_AO = normalAndAO.a;
normalAndAO.a = clamp(pow(normalAndAO.a*5,4),0,1);
bool lightningBolt = abs(dataUnpacked1.w-0.5) <0.01; bool lightningBolt = abs(dataUnpacked1.w-0.5) <0.01;
bool isLeaf = abs(dataUnpacked1.w-0.55) <0.01; bool isLeaf = abs(dataUnpacked1.w-0.55) <0.01;
@ -839,7 +835,6 @@ void main() {
vec3 ambientCoefs = normal/dot(abs(normal),vec3(1.)); vec3 ambientCoefs = normal/dot(abs(normal),vec3(1.));
float lightleakfix = clamp(pow(eyeBrightnessSmooth.y/240. + lightmap.y,2) ,0.0,1.0); float lightleakfix = clamp(pow(eyeBrightnessSmooth.y/240. + lightmap.y,2) ,0.0,1.0);
vec3 DirectLightColor = (lightCol.rgb/80.0); vec3 DirectLightColor = (lightCol.rgb/80.0);
@ -851,13 +846,21 @@ void main() {
vec3 AmbientLightColor = averageSkyCol_Clouds; vec3 AmbientLightColor = averageSkyCol_Clouds;
int shadowmapindicator = 0;
float cloudShadow = 1.0; float cloudShadow = 1.0;
if ( z >= 1.) {//sky if ( z >= 1.) {//sky
#ifdef Compositing_Sky
gl_FragData[0].rgb = vec3(CompSky_R, CompSky_G, CompSky_B);
#else
//////////////////////////////// ////////////////////////////////
//////////////////////////////// SKY STUFF ////////////////////////////////
//////////////////////////////// ////////////////////////////////
#ifdef Compositing_Sky
gl_FragData[0].rgb = vec3(CompSky_R, CompSky_G, CompSky_B);
#else
vec3 background = vec3(0.0); vec3 background = vec3(0.0);
vec3 orbitstar = vec3(np3.x,abs(np3.y),np3.z); vec3 orbitstar = vec3(np3.x,abs(np3.y),np3.z);
@ -874,37 +877,37 @@ void main() {
vec3 skyTEX = skyFromTex(np3,colortex4)/150.0 * 5.0; vec3 skyTEX = skyFromTex(np3,colortex4)/150.0 * 5.0;
background += skyTEX; background += skyTEX;
// eclipse
// color *=max(1.0 - drawSun(dot(lightCol.a * WsunVec, (np3-0.0002)*1.001),0, vec3(1),vec3(0.0)),0.0);
vec4 cloud = texture2D_bicubic(colortex0,texcoord*CLOUDS_QUALITY); vec4 cloud = texture2D_bicubic(colortex0,texcoord*CLOUDS_QUALITY);
if(eyeAltitude < 25000) background = background*cloud.a + cloud.rgb; if(eyeAltitude < 25000) background = background*cloud.a + cloud.rgb;
gl_FragData[0].rgb = clamp(fp10Dither(background ,triangularize(noise)),0.0,65000.); gl_FragData[0].rgb = clamp(fp10Dither(background ,triangularize(noise)),0.0,65000.);
#endif #endif
}else{//land }else{//land
////// ----- direct ----- ////// //////////////////////////////// ////////////////////////////////
//////////////////////////////// DIRECT LIGHTING ////////////////////////////////
//////////////////////////////// ////////////////////////////////
vec3 Direct_lighting = vec3(1.0); vec3 Direct_lighting = vec3(1.0);
float Shadows = clamp(1.0 - filtered.b,0.0,1.0); float Shadows = clamp(1.0 - filtered.b,0.0,1.0);
float SHADOWBLOCKERDEPTBH = filtered.y;
float NdotL = dot(slopednormal,WsunVec); float NdotL = dot(slopednormal,WsunVec);
NdotL = clamp((-15 + NdotL*255.0) / 240.0 ,0.0,1.0); NdotL = clamp((-15 + NdotL*255.0) / 240.0 ,0.0,1.0);
if (abs(filtered.y-0.1) < 0.0004 && !iswater) Shadows = clamp((lightmap.y-0.85)*25,0,1);
float SHADOWBLOCKERDEPTBH = filtered.y;
//if (abs(filtered.y-0.1) < 0.0004 && !iswater) SHADOWBLOCKERDEPTBH = 1.0-clamp((lightmap.y-0.85)*25,0,1);
vec3 SSS = vec3(0.0); float shadowNDOTL = NdotL;
#ifndef Variable_Penumbra_Shadows
if (NdotL > 0.001) { shadowNDOTL += LabSSS;
#endif
vec3 p3_shadow = mat3(gbufferModelViewInverse) * fragpos_handfix + gbufferModelViewInverse[3].xyz; vec3 p3_shadow = mat3(gbufferModelViewInverse) * fragpos_handfix + gbufferModelViewInverse[3].xyz;
GriAndEminShadowFix(p3_shadow, viewToWorld(FlatNormals), normalAndAO.a, lightmap.y, entities); if(!hand) GriAndEminShadowFix(p3_shadow, viewToWorld(FlatNormals), vanilla_AO, lightmap.y, entities);
vec3 projectedShadowPosition = mat3(shadowModelView) * p3_shadow + shadowModelView[3].xyz; vec3 projectedShadowPosition = mat3(shadowModelView) * p3_shadow + shadowModelView[3].xyz;
projectedShadowPosition = diagonal3(shadowProjection) * projectedShadowPosition + shadowProjection[3].xyz; projectedShadowPosition = diagonal3(shadowProjection) * projectedShadowPosition + shadowProjection[3].xyz;
@ -912,29 +915,46 @@ void main() {
//apply distortion //apply distortion
float distortFactor = calcDistort(projectedShadowPosition.xy); float distortFactor = calcDistort(projectedShadowPosition.xy);
projectedShadowPosition.xy *= distortFactor; projectedShadowPosition.xy *= distortFactor;
// Shadows = 0.0;
vec3 shadew = projectedShadowPosition.xyz;
//do shadows only if on shadow map //do shadows only if on shadow map
if (abs(shadew.x) < 1.0-1.5/shadowMapResolution && abs(shadew.y) < 1.0-1.5/shadowMapResolution && abs(shadew.z) < 6.0){ if (abs(projectedShadowPosition.x) < 1.0-1.5/shadowMapResolution && abs(projectedShadowPosition.y) < 1.0-1.5/shadowMapResolution && abs(projectedShadowPosition.z) < 6.0){
if (shadowNDOTL > 0.001){
float diffthresh = 0.0;
// if(hand && eyeBrightness.y/240. > 0.0) diffthresh = 0.0003;
projectedShadowPosition = projectedShadowPosition * vec3(0.5,0.5,0.5/6.0) + vec3(0.5);
Shadows = 0.0; Shadows = 0.0;
projectedShadowPosition = projectedShadowPosition * vec3(0.5,0.5,0.5/6.0) + vec3(0.5);
#ifdef BASIC_SHADOW_FILTER
float rdMul = filtered.x*distortFactor*d0*k/shadowMapResolution; float rdMul = filtered.x*distortFactor*d0*k/shadowMapResolution;
for(int i = 0; i < SHADOW_FILTER_SAMPLE_COUNT; i++){ for(int i = 0; i < SHADOW_FILTER_SAMPLE_COUNT; i++){
// if(hand) noise = 0.0;
vec2 offsetS = tapLocation(i,SHADOW_FILTER_SAMPLE_COUNT,1.618,noise,0.0); vec2 offsetS = tapLocation(i,SHADOW_FILTER_SAMPLE_COUNT,1.618,noise,0.0);
float weight = 1.0+(i+noise)*rdMul/SHADOW_FILTER_SAMPLE_COUNT*shadowMapResolution;
float isShadow = shadow2D(shadow,vec3(projectedShadowPosition + vec3(rdMul*offsetS,-diffthresh*weight))).x; float isShadow = shadow2D(shadow,projectedShadowPosition + vec3(rdMul*offsetS, 0.0) ).x;
Shadows += isShadow/SHADOW_FILTER_SAMPLE_COUNT; Shadows += isShadow/SHADOW_FILTER_SAMPLE_COUNT;
} }
#else
Shadows = shadow2D(shadow, projectedShadowPosition).x;
#endif
} }
shadowmapindicator = 1;
} }
#ifdef Variable_Penumbra_Shadows bool outsideShadowMap = shadowmapindicator < 1;
if(outsideShadowMap && !iswater) Shadows = clamp((lightmap.y-0.8) * 5,0,1);
//////////////////////////////// SUN SSS ////////////////////////////////
vec3 SSS = vec3(0.0);
#ifndef Variable_Penumbra_Shadows
if(LabSSS > 0 ) {
SHADOWBLOCKERDEPTBH = pow(1.0 - Shadows,2);
}
#endif
#if SSS_TYPE != 0
if (outsideShadowMap) SHADOWBLOCKERDEPTBH = 0.0;
float sunSSS_density = LabSSS; float sunSSS_density = LabSSS;
@ -945,29 +965,23 @@ void main() {
SSS = SubsurfaceScattering_sun(albedo, SHADOWBLOCKERDEPTBH, sunSSS_density, clamp(dot(np3, WsunVec),0.0,1.0)) ; SSS = SubsurfaceScattering_sun(albedo, SHADOWBLOCKERDEPTBH, sunSSS_density, clamp(dot(np3, WsunVec),0.0,1.0)) ;
SSS *= DirectLightColor; SSS *= DirectLightColor;
if (isEyeInWater == 0) SSS *= lightleakfix; // light leak fix if (isEyeInWater == 0) SSS *= lightleakfix; // light leak fix
#endif #endif
if (!hand){ if (!hand){
if (abs(filtered.y-0.1) < 0.0004 && LabSSS < 0.0 ) SSS = vec3(0.0);
#ifdef SCREENSPACE_CONTACT_SHADOWS #ifdef SCREENSPACE_CONTACT_SHADOWS
float screenShadow = rayTraceShadow(lightCol.a*sunVec, fragpos_rtshadow, interleaved_gradientNoise());
vec3 vec = lightCol.a*sunVec;
float screenShadow = rayTraceShadow(vec, fragpos_rtshadow, interleaved_gradientNoise());
screenShadow *= screenShadow; screenShadow *= screenShadow;
#ifdef Variable_Penumbra_Shadows Shadows = min(screenShadow, Shadows);
Shadows = min(screenShadow, Shadows + luma(SSS));
if (abs(filtered.y-0.1) < 0.0004 ) SSS *= vec3(Shadows);
#endif
if (outsideShadowMap) SSS *= Shadows;
#endif #endif
} }
#ifdef Variable_Penumbra_Shadows #if SSS_TYPE != 0
SSS *= 1.0-NdotL*Shadows; SSS *= 1.0-clamp(NdotL*Shadows,0,1);
#endif #endif
#ifdef VOLUMETRIC_CLOUDS #ifdef VOLUMETRIC_CLOUDS
@ -978,14 +992,14 @@ void main() {
#endif #endif
#endif #endif
////// ----- indirect ----- ////// //////////////////////////////// ////////////////////////////////
//////////////////////////////// INDIRECT LIGHTING ////////////////////////////////
//////////////////////////////// ////////////////////////////////
vec3 Indirect_lighting = vec3(1.0); vec3 Indirect_lighting = vec3(1.0);
// float cloudOcclusion = GetCloudShadow_occluson(p3 + cameraPosition); // float skylight = clamp(abs(ambientCoefs.y + 1.0),0.35,2.0);
// AmbientLightColor *= cloudOcclusion*0.5+.5; float skylight = clamp(ambientCoefs.y + 0.5,0.25,2.0);
float skylight = clamp(abs(ambientCoefs.y + 1.0),0.35,2.0);
#if indirect_effect == 2 || indirect_effect == 3 || indirect_effect == 4 #if indirect_effect == 2 || indirect_effect == 3 || indirect_effect == 4
if (!hand) skylight = 1.0; if (!hand) skylight = 1.0;
@ -993,39 +1007,31 @@ void main() {
// do this to make underwater shading easier. // do this to make underwater shading easier.
vec2 newLightmap = lightmap.xy; vec2 newLightmap = lightmap.xy;
if((isEyeInWater == 0 && iswater) || (isEyeInWater == 1 && !iswater)) newLightmap.y = clamp(newLightmap.y,0,1); if((isEyeInWater == 0 && iswater) || (isEyeInWater == 1 && !iswater)) newLightmap.y = clamp(newLightmap.y,0,1);
#ifndef ambientSSS_view #ifndef ambientSSS_view
Indirect_lighting = DoAmbientLighting(AmbientLightColor, vec3(TORCH_R,TORCH_G,TORCH_B), newLightmap.xy, skylight); Indirect_lighting = DoAmbientLighting(AmbientLightColor, vec3(TORCH_R,TORCH_G,TORCH_B), newLightmap.xy, skylight);
#endif #endif
vec3 AO = vec3(1.0); vec3 AO = vec3(1.0);
vec3 debug = vec3(0.0); vec3 debug = vec3(0.0);
// vanilla AO // vanilla AO
#if indirect_effect == 0 #if indirect_effect == 0
// AO = vec3(mix(1.0 - exp2(-5 * pow(1-vanilla_AO,3)), 1.0, pow(newLightmap.x,4))) ;
AO = vec3( exp( (vanilla_AO*vanilla_AO) * -5) ) ; AO = vec3( exp( (vanilla_AO*vanilla_AO) * -5) ) ;
#endif #endif
// SSAO + vanilla AO // SSAO + vanilla AO
#if indirect_effect == 1 #if indirect_effect == 1
// AO *= mix(1.0 - exp2(-5 * pow(1-vanilla_AO,3)),1.0, pow(newLightmap.x,4));
AO = vec3( exp( (vanilla_AO*vanilla_AO) * -3) ) ; AO = vec3( exp( (vanilla_AO*vanilla_AO) * -3) ) ;
if (!hand) ssAO(AO, SkySSS, fragpos, 1.0, blueNoise(gl_FragCoord.xy).rg, FlatNormals , texcoord, ambientCoefs, newLightmap.xy, isLeaf); if (!hand) ssAO(AO, SkySSS, fragpos, 1.0, blueNoise(gl_FragCoord.xy).rg, FlatNormals , texcoord, ambientCoefs, newLightmap.xy, isLeaf);
#endif #endif
// GTAO // GTAO
#if indirect_effect == 2 #if indirect_effect == 2
int seed = (frameCounter%40000); int seed = (frameCounter%40000);
vec2 r2 = fract(R2_samples(seed) + blueNoise(gl_FragCoord.xy).rg); vec2 r2 = fract(R2_samples(seed) + blueNoise(gl_FragCoord.xy).rg);
if (!hand) AO = ambient_occlusion(vec3(texcoord/RENDER_SCALE-vec2(tempOffset)*texelSize*0.5,z), fragpos, worldToView(slopednormal), r2, debug) * vec3(1.0); if (!hand) AO = ambient_occlusion(vec3(texcoord/RENDER_SCALE-TAA_Offset*texelSize*0.5,z), fragpos, worldToView(slopednormal), r2, debug) * vec3(1.0);
#endif #endif
// RTAO // RTAO
@ -1044,34 +1050,46 @@ void main() {
Indirect_lighting *= AO; Indirect_lighting *= AO;
//////////////////////////////// SKY SSS ////////////////////////////////
vec3 SSS_forSky = vec3(0.0);
#ifdef Ambient_SSS #ifdef Ambient_SSS
if (!hand){ if (!hand){
vec3 SSS_forSky = vec3(0.0);
#if indirect_effect != 1 #if indirect_effect != 1
ScreenSpace_SSS(SkySSS, fragpos, blueNoise(gl_FragCoord.xy).rg, FlatNormals, isLeaf); ScreenSpace_SSS(SkySSS, fragpos, blueNoise(gl_FragCoord.xy).rg, FlatNormals, isLeaf);
#endif #endif
SSS_forSky = SubsurfaceScattering_sky(albedo, SkySSS, LabSSS);
SSS_forSky *= (AmbientLightColor* 2.0 * ambient_brightness) * 8./150.;
SSS_forSky *= pow(newLightmap.y,3);
// SSS_forSky *= pow(1.0-clamp(abs(ambientCoefs.y+0.5),0.0,1.0),0.1);
SSS += SSS_forSky * pow(1.0-clamp(abs(ambientCoefs.y+0.5),0.0,1.0),0.1); // Indirect_lighting += SubsurfaceScattering_sky(albedo, SkySSS, LabSSS) * ((AmbientLightColor* 2.0 * ambient_brightness)* 8./150.) * pow(newLightmap.y,3); vec3 ambientColor = ((AmbientLightColor * 2.0 * ambient_brightness) * 8./150./3.) * 1.5;
float lightmap = pow(newLightmap.y,3);
float uplimit = clamp(1.0-pow(clamp(ambientCoefs.y + 0.5,0.0,1.0),2),0,1);
SSS_forSky = SubsurfaceScattering_sky(albedo, SkySSS, LabSSS);
SSS_forSky *= ambientColor;
SSS_forSky *= lightmap;
SSS_forSky *= uplimit;
// Combine with the other SSS
SSS += SSS_forSky;
SSS_forSky = vec3((1.0 - SkySSS) * LabSSS);
SSS_forSky *= ambientColor;
SSS_forSky *= lightmap;
////light up dark parts so its more visible
Indirect_lighting = max(Indirect_lighting, SSS_forSky);
} }
#endif #endif
// Indirect_lighting = max(Indirect_lighting, SSS_forSky);
//////////////////////////////// ////////////////////////////////
//////////////////////////////// UNDER WATER SHADING ////////////////////////////////
//////////////////////////////// ////////////////////////////////
////// ----- Under Water Shading ----- //////
vec3 waterabsorb_speculars = vec3(1); vec3 waterabsorb_speculars = vec3(1);
if ((isEyeInWater == 0 && iswater) || (isEyeInWater == 1 && !iswater)){ if ((isEyeInWater == 0 && iswater) || (isEyeInWater == 1 && !iswater)){
vec3 fragpos0 = toScreenSpace(vec3(texcoord/RENDER_SCALE-vec2(tempOffset)*texelSize*0.5,z0)); vec3 fragpos0 = toScreenSpace(vec3(texcoord/RENDER_SCALE-TAA_Offset*texelSize*0.5,z0));
float Vdiff = distance(fragpos,fragpos0); float Vdiff = distance(fragpos,fragpos0);
float VdotU = np3.y; float VdotU = np3.y;
float estimatedDepth = Vdiff * abs(VdotU); //assuming water plane float estimatedDepth = Vdiff * abs(VdotU); //assuming water plane
@ -1103,8 +1121,9 @@ void main() {
} }
//////////////////////////////// ////////////////////////////////
////// ----- Finalize ----- ////// //////////////////////////////// FINALIZE ////////////////////////////////
//////////////////////////////// ////////////////////////////////
#ifdef Seasons #ifdef Seasons
#ifdef Snowy_Winter #ifdef Snowy_Winter
@ -1134,7 +1153,6 @@ void main() {
Direct_lighting = DoDirectLighting(DirectLightColor, Shadows, NdotL, 0.0); Direct_lighting = DoDirectLighting(DirectLightColor, Shadows, NdotL, 0.0);
//combine all light sources
vec3 FINAL_COLOR = Indirect_lighting + Direct_lighting + SSS; vec3 FINAL_COLOR = Indirect_lighting + Direct_lighting + SSS;
#ifndef ambientSSS_view #ifndef ambientSSS_view
@ -1145,34 +1163,34 @@ void main() {
MaterialReflections(FINAL_COLOR, SpecularTex.r, SpecularTex.ggg, albedo, WsunVec, (Shadows*NdotL)*DirectLightColor, lightmap.y, slopednormal, np3, fragpos, vec3(blueNoise(gl_FragCoord.xy).rg, interleaved_gradientNoise()), hand, entities); MaterialReflections(FINAL_COLOR, SpecularTex.r, SpecularTex.ggg, albedo, WsunVec, (Shadows*NdotL)*DirectLightColor, lightmap.y, slopednormal, np3, fragpos, vec3(blueNoise(gl_FragCoord.xy).rg, interleaved_gradientNoise()), hand, entities);
#endif #endif
LabEmission(FINAL_COLOR, albedo, SpecularTex.a); Emission(FINAL_COLOR, albedo, SpecularTex.a);
if(lightningBolt) FINAL_COLOR.rgb += vec3(Lightning_R,Lightning_G,Lightning_B) * 255.0; if(lightningBolt) FINAL_COLOR.rgb += vec3(Lightning_R,Lightning_G,Lightning_B) * 255.0;
gl_FragData[0].rgb = FINAL_COLOR; gl_FragData[0].rgb = FINAL_COLOR;
// if(LabSSS > 0.0) gl_FragData[0].rgb = vec3(0,25,0);
} }
////// ----- Under Water Fog ----- //////
//////////////////////////////// ////////////////////////////////
//////////////////////////////// UNDERWATER FOG ////////////////////////////////
//////////////////////////////// ////////////////////////////////
if (iswater){ if (iswater){
vec3 fragpos0 = toScreenSpace(vec3(texcoord/RENDER_SCALE-vec2(tempOffset)*texelSize*0.5,z0)); vec3 fragpos0 = toScreenSpace(vec3(texcoord/RENDER_SCALE-TAA_Offset*texelSize*0.5,z0));
float Vdiff = distance(fragpos,fragpos0); float Vdiff = distance(fragpos,fragpos0);
float VdotU = np3.y; float VdotU = np3.y;
float estimatedDepth = Vdiff * abs(VdotU) ; //assuming water plane float estimatedDepth = Vdiff * abs(VdotU) ; //assuming water plane
float estimatedSunDepth = estimatedDepth/abs(WsunVec.y); //assuming water plane float estimatedSunDepth = estimatedDepth/abs(WsunVec.y); //assuming water plane
float custom_lightmap_T = pow(texture2D(colortex14, texcoord).a,1.5); float custom_lightmap_T = pow(texture2D(colortex14, texcoord).a,3.0);
vec3 ambientColVol = (averageSkyCol_Clouds*8./150./1.5) * max(custom_lightmap_T,MIN_LIGHT_AMOUNT*0.0015); vec3 ambientColVol = (averageSkyCol_Clouds*8./150./2.) * max(custom_lightmap_T,MIN_LIGHT_AMOUNT*0.0015);
vec3 lightColVol = (lightCol.rgb / 80.); vec3 lightColVol = DirectLightColor;
if (isEyeInWater == 0) waterVolumetrics(gl_FragData[0].rgb, fragpos0, fragpos, estimatedDepth , estimatedSunDepth, Vdiff, noise, totEpsilon, scatterCoef, ambientColVol, lightColVol, dot(np3, WsunVec)); if (isEyeInWater == 0) waterVolumetrics(gl_FragData[0].rgb, fragpos0, fragpos, estimatedDepth , estimatedSunDepth, Vdiff, noise, totEpsilon, scatterCoef, ambientColVol, lightColVol, dot(np3, WsunVec));
} }
#ifdef DOF_JITTER #if DOF_QUALITY == 5
vec3 laserColor; vec3 laserColor;
#if FOCUS_LASER_COLOR == 0 // Red #if FOCUS_LASER_COLOR == 0 // Red
laserColor = vec3(25, 0, 0); laserColor = vec3(25, 0, 0);
@ -1188,10 +1206,12 @@ void main() {
laserColor = vec3(25); laserColor = vec3(25);
#endif #endif
#if DOF_JITTER_FOCUS < 0 #if MANUAL_FOCUS == -2
float focusDist = rodExposureDepth.y*far;
#elif MANUAL_FOCUS == -1
float focusDist = mix(pow(512.0, screenBrightness), 512.0 * screenBrightness, 0.25); float focusDist = mix(pow(512.0, screenBrightness), 512.0 * screenBrightness, 0.25);
#else #else
float focusDist = DOF_JITTER_FOCUS; float focusDist = MANUAL_FOCUS;
#endif #endif
if( hideGUI < 1.0) gl_FragData[0].rgb += laserColor * pow( clamp( 1.0-abs(focusDist-abs(fragpos.z)) ,0,1),25) ; if( hideGUI < 1.0) gl_FragData[0].rgb += laserColor * pow( clamp( 1.0-abs(focusDist-abs(fragpos.z)) ,0,1),25) ;

View File

@ -4,6 +4,7 @@
flat varying vec3 averageSkyCol_Clouds; flat varying vec3 averageSkyCol_Clouds;
flat varying vec4 lightCol; flat varying vec4 lightCol;
flat varying vec2 rodExposureDepth;
flat varying vec3 WsunVec; flat varying vec3 WsunVec;
flat varying float tempOffsets; flat varying float tempOffsets;
@ -54,15 +55,7 @@ flat varying float WinterTimeForSnow;
void main() { void main() {
gl_Position = ftransform(); gl_Position = ftransform();
#ifdef TAA_UPSCALING
gl_Position.xy = (gl_Position.xy*0.5+0.5)*RENDER_SCALE*2.0-1.0;
#endif
tempOffsets = HaltonSeq2(frameCounter%10000);
TAA_Offset = offsets[frameCounter%8];
#ifndef TAA
TAA_Offset = vec2(0.0);
#endif
averageSkyCol_Clouds = texelFetch2D(colortex4,ivec2(0,37),0).rgb; averageSkyCol_Clouds = texelFetch2D(colortex4,ivec2(0,37),0).rgb;
// averageSkyCol = texelFetch2D(colortex4,ivec2(1,37),0).rgb; // averageSkyCol = texelFetch2D(colortex4,ivec2(1,37),0).rgb;
@ -87,4 +80,19 @@ void main() {
YearCycleColor(color1, color2, WinterTimeForSnow); YearCycleColor(color1, color2, WinterTimeForSnow);
#endif #endif
#endif #endif
rodExposureDepth = texelFetch2D(colortex4,ivec2(14,37),0).rg;
rodExposureDepth.y = sqrt(rodExposureDepth.y/65000.0);
TAA_Offset = offsets[frameCounter%8];
#ifndef TAA
TAA_Offset = vec2(0.0);
#endif
#ifdef TAA_UPSCALING
gl_Position.xy = (gl_Position.xy*0.5+0.5)*RENDER_SCALE*2.0-1.0;
#endif
} }

View File

@ -17,7 +17,6 @@ uniform sampler2D colortex5;
uniform sampler2D colortex3; uniform sampler2D colortex3;
// uniform sampler2D colortex6; // uniform sampler2D colortex6;
uniform sampler2D colortex7; uniform sampler2D colortex7;
// uniform sampler2D colortex10;
// uniform sampler2D colortex8; // specular // uniform sampler2D colortex8; // specular
// uniform sampler2D colortex9; // specular // uniform sampler2D colortex9; // specular
uniform sampler2D depthtex0; uniform sampler2D depthtex0;
@ -67,22 +66,20 @@ float ld(float depth) {
return (2.0 * near) / (far + near - depth * (far - near)); // (-depth * (far - near)) = (2.0 * near)/ld - far - near return (2.0 * near) / (far + near - depth * (far - near)); // (-depth * (far - near)) = (2.0 * near)/ld - far - near
} }
// blindness fogs
uniform float blindness;
uniform float darknessFactor;
void main() { void main() {
/* DRAWBUFFERS:7 */ /* DRAWBUFFERS:7 */
float vignette = (1.5-dot(texcoord-0.5,texcoord-0.5)*2.); float vignette = (1.5-dot(texcoord-0.5,texcoord-0.5)*2.);
vec3 col = texture2D(colortex5,texcoord).rgb; vec3 col = texture2D(colortex5,texcoord).rgb;
#if DOF_QUALITY >= 0 #if DOF_QUALITY >= 0 && DOF_QUALITY < 5
/*--------------------------------*/ /*--------------------------------*/
float z = ld(texture2D(depthtex0, texcoord.st*RENDER_SCALE).r)*far; float z = ld(texture2D(depthtex0, texcoord.st*RENDER_SCALE).r)*far;
#ifdef AUTOFOCUS #if MANUAL_FOCUS == -2
float focus = rodExposureDepth.y*far; float focus = rodExposureDepth.y*far;
#else #elif MANUAL_FOCUS == -1
float focus = MANUAL_FOCUS*screenBrightness; float focus = mix(pow(512.0, screenBrightness), 512.0 * screenBrightness, 0.25);
#elif MANUAL_FOCUS > 0
float focus = MANUAL_FOCUS;
#endif #endif
float pcoc = min(abs(aperture * (focal/100.0 * (z - focus)) / (z * (focus - focal/100.0))),texelSize.x*15.0); float pcoc = min(abs(aperture * (focal/100.0 * (z - focus)) / (z * (focus - focal/100.0))),texelSize.x*15.0);
#ifdef FAR_BLUR_ONLY #ifdef FAR_BLUR_ONLY
@ -127,14 +124,6 @@ void main() {
float rodCurve = mix(1.0, rodLum/(2.5+rodLum), purkinje); float rodCurve = mix(1.0, rodLum/(2.5+rodLum), purkinje);
col = mix(clamp(lum,0.0,0.05)*Purkinje_Multiplier*vec3(Purkinje_R, Purkinje_G, Purkinje_B)+1.5e-3, col, rodCurve); col = mix(clamp(lum,0.0,0.05)*Purkinje_Multiplier*vec3(Purkinje_R, Purkinje_G, Purkinje_B)+1.5e-3, col, rodCurve);
// #ifdef display_LUT
// vec2 movedTC = texcoord ;
// if(movedTC.x < 0.4 ) col.rgb = texture2D(colortex4,movedTC/2).rgb * 0.001;
// #endif
#ifndef USE_ACES_COLORSPACE_APPROXIMATION #ifndef USE_ACES_COLORSPACE_APPROXIMATION
col = LinearTosRGB(TONEMAP(col)); col = LinearTosRGB(TONEMAP(col));
#else #else

View File

@ -262,7 +262,7 @@ void main() {
vec2 tc = floor(gl_FragCoord.xy)/VL_RENDER_RESOLUTION*texelSize+0.5*texelSize; vec2 tc = floor(gl_FragCoord.xy)/VL_RENDER_RESOLUTION*texelSize+0.5*texelSize;
float z = texture2D(depthtex0,tc).x; float z = texture2D(depthtex0,tc).x;
#ifdef DOF_JITTER #if DOF_QUALITY == 5
vec2 jitter = clamp(jitter_offsets[frameCounter % 64], -1.0, 1.0); vec2 jitter = clamp(jitter_offsets[frameCounter % 64], -1.0, 1.0);
jitter = rotate(radians(float(frameCounter))) * jitter; jitter = rotate(radians(float(frameCounter))) * jitter;
jitter.y *= aspectRatio; jitter.y *= aspectRatio;
@ -322,7 +322,8 @@ void main() {
float estEyeDepth = clamp((14.0-eyeBrightnessSmooth.y/255.0*16.0)/14.0,0.,1.0); float estEyeDepth = clamp((14.0-eyeBrightnessSmooth.y/255.0*16.0)/14.0,0.,1.0);
estEyeDepth *= estEyeDepth*estEyeDepth*34.0; estEyeDepth *= estEyeDepth*estEyeDepth*34.0;
vec3 ambientColVol = averageSkyCol_Clouds*8./150./1.5;
vec3 ambientColVol = averageSkyCol_Clouds*8./150./2.0;
vec3 lightColVol = (lightCol.rgb / 80.); vec3 lightColVol = (lightCol.rgb / 80.);
estEyeDepth = max(Water_Top_Layer - cameraPosition.y,0.0); estEyeDepth = max(Water_Top_Layer - cameraPosition.y,0.0);

View File

@ -25,15 +25,16 @@ const int colortex6Format = R11F_G11F_B10F; //additionnal buffer for bloom (co
const int colortex7Format = RGBA8; //Final output, transparencies id (gbuffer->composite4) const int colortex7Format = RGBA8; //Final output, transparencies id (gbuffer->composite4)
const int colortex8Format = RGBA16F; //Final output, transparencies id (gbuffer->composite4) const int colortex8Format = RGBA16F; //Final output, transparencies id (gbuffer->composite4)
const int colortex9Format = RGBA8; //Final output, transparencies id (gbuffer->composite4) const int colortex9Format = RGBA8; //Final output, transparencies id (gbuffer->composite4)
const int colortex10Format = RGBA16F; //Final output, transparencies id (gbuffer->composite4) const int colortex10Format = RGBA16F; //FREE BUFFER
const int colortex11Format = RGBA16; //Final output, transparencies id (gbuffer->composite4) const int colortex11Format = RGBA16;
const int colortex13Format = RGBA8; //Final output, transparencies id (gbuffer->composite4) const int colortex13Format = RGBA8;
const int colortex14Format = RGBA8; // Final output, transparencies id (gbuffer->composite4) const int colortex14Format = RGBA8;
const int colortex15Format = RGBA8; // flat normals and vanilla AO const int colortex15Format = RGBA8; // flat normals and vanilla AO
*/ */
//no need to clear the buffers, saves a few fps //no need to clear the buffers, saves a few fps
/* /*
const bool colortex0Clear = false; const bool colortex0Clear = false;
const bool colortex1Clear = false; const bool colortex1Clear = false;
@ -76,6 +77,7 @@ uniform vec2 texelSize;
uniform float frameTimeCounter; uniform float frameTimeCounter;
uniform float viewHeight; uniform float viewHeight;
uniform float viewWidth; uniform float viewWidth;
uniform int hideGUI;
uniform int frameCounter; uniform int frameCounter;
uniform int framemod8; uniform int framemod8;
uniform vec3 previousCameraPosition; uniform vec3 previousCameraPosition;
@ -456,8 +458,13 @@ void main() {
#ifdef SCREENSHOT_MODE #ifdef SCREENSHOT_MODE
if(hideGUI > 0) {
vec4 color = TAA_hq_render(); vec4 color = TAA_hq_render();
gl_FragData[0] = color; gl_FragData[0] = color;
} else {
vec3 color = clamp(fp10Dither(texture2D(colortex3,texcoord).rgb,triangularize(interleaved_gradientNoise())),0.,65000.);
gl_FragData[0].rgb = color;
}
#else #else

View File

@ -3,10 +3,10 @@
### all the different strengths of subsurface scattering and what entities to put them on. ### all the different strengths of subsurface scattering and what entities to put them on.
#medium sss (same as strong sss for blocks) #medium sss (same as strong sss for blocks)
entity.1100 = slime giant ender_dragon ghast sheep entity.1100 = slime giant ghast
#weak sss (same as weak sss for blocks) #weak sss (same as weak sss for blocks)
entity.1200 = player frog chicken snow_golem polar_bear zombie_horse armor_stand arrow squid bat cat cod cow donkey fox horse mooshroom mule ocelot parrot pig piglin polar_bear pufferfish rabbit salmon strider tropical_fish turtle villager wandering_trader bee cave_spider dolphin enderman llama panda spider wolf zombified_piglin blaze creeper drowned endermite evoker guardian hoglin husk magma_cube phantom piglin_brute pillager ravager silverfish stray vex vindicator witch zoglin zombie zombie_villager wither trader_llama entity.1200 = ender_dragon player sheep frog chicken snow_golem polar_bear zombie_horse armor_stand arrow squid bat cat cod cow donkey fox horse mooshroom mule ocelot parrot pig piglin polar_bear pufferfish rabbit salmon strider tropical_fish turtle villager wandering_trader bee cave_spider dolphin enderman llama panda spider wolf zombified_piglin blaze creeper drowned endermite evoker guardian hoglin husk magma_cube phantom piglin_brute pillager ravager silverfish stray vex vindicator witch zoglin zombie zombie_villager wither trader_llama
# various stuff # various stuff

View File

@ -130,15 +130,19 @@ void main() {
//apply distortion //apply distortion
float distortFactor = calcDistort(projectedShadowPosition.xy); float distortFactor = calcDistort(projectedShadowPosition.xy);
projectedShadowPosition.xy *= distortFactor; projectedShadowPosition.xy *= distortFactor;
int shadowmapindicator = 0;
//do shadows only if on shadow map //do shadows only if on shadow map
if (abs(projectedShadowPosition.x) < 1.0-1.5/shadowMapResolution && abs(projectedShadowPosition.y) < 1.0-1.5/shadowMapResolution){ if (abs(projectedShadowPosition.x) < 1.0-1.5/shadowMapResolution && abs(projectedShadowPosition.y) < 1.0-1.5/shadowMapResolution){
float diffthresh = 0.0002; projectedShadowPosition = projectedShadowPosition * vec3(0.5,0.5,0.5/6.0) + vec3(0.5);
projectedShadowPosition = projectedShadowPosition * vec3(0.5,0.5,0.5/6.0) + vec3(0.5,0.5,0.5);
Shadows = shadow2D_bicubic(shadow,vec3(projectedShadowPosition + vec3(0.0,0.0,-diffthresh*1.2))); Shadows = shadow2D_bicubic(shadow,vec3(projectedShadowPosition + vec3(0.0,0.0,0.0)));
shadowmapindicator = 1;
} }
if(shadowmapindicator < 1) Shadows = clamp((lmtexcoord.w-0.8) * 5,0,1);
#ifdef CLOUDS_SHADOWS #ifdef CLOUDS_SHADOWS
Shadows *= GetCloudShadow(p3); Shadows *= GetCloudShadow(p3);
#endif #endif

View File

@ -90,16 +90,18 @@ void main() {
gl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize; gl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize;
#endif #endif
#ifdef DOF_JITTER #if DOF_QUALITY == 5
vec2 jitter = clamp(jitter_offsets[frameCounter % 64], -1.0, 1.0); vec2 jitter = clamp(jitter_offsets[frameCounter % 64], -1.0, 1.0);
jitter = rotate(radians(float(frameCounter))) * jitter; jitter = rotate(radians(float(frameCounter))) * jitter;
jitter.y *= aspectRatio; jitter.y *= aspectRatio;
jitter.x *= DOF_ANAMORPHIC_RATIO; jitter.x *= DOF_ANAMORPHIC_RATIO;
#if DOF_JITTER_FOCUS < 0 #if MANUAL_FOCUS == -2
float focusMul = 0;
#elif MANUAL_FOCUS == -1
float focusMul = gl_Position.z - mix(pow(512.0, screenBrightness), 512.0 * screenBrightness, 0.25); float focusMul = gl_Position.z - mix(pow(512.0, screenBrightness), 512.0 * screenBrightness, 0.25);
#else #else
float focusMul = gl_Position.z - DOF_JITTER_FOCUS; float focusMul = gl_Position.z - MANUAL_FOCUS;
#endif #endif
vec2 totalOffset = (jitter * JITTER_STRENGTH) * focusMul * 1e-2; vec2 totalOffset = (jitter * JITTER_STRENGTH) * focusMul * 1e-2;

View File

@ -541,7 +541,16 @@ void main() {
if(SpecularTex.g < 229.5/255.0) Albedo.rgb = mix(Albedo.rgb, vec3(0), Puddle_shape*porosity); if(SpecularTex.g < 229.5/255.0) Albedo.rgb = mix(Albedo.rgb, vec3(0), Puddle_shape*porosity);
#endif #endif
vec4 data1 = clamp( encode(viewToWorld(normal), (blueNoise()*vec2(torchlightmap,lmtexcoord.w) / (30.0 * (1+ (1-RENDER_SCALE.x))) ) + vec2(torchlightmap,lmtexcoord.w)), 0.0, 1.0); // apply noise to lightmaps to reduce banding.
vec2 PackLightmaps = vec2(torchlightmap,lmtexcoord.w);
#ifndef ENTITIES
#ifndef HAND
PackLightmaps = max(PackLightmaps*blueNoise()*0.05 + PackLightmaps,0.0);
#endif
#endif
vec4 data1 = clamp( encode(viewToWorld(normal),PackLightmaps), 0.0, 1.0);
gl_FragData[0] = vec4(encodeVec2(Albedo.x,data1.x), encodeVec2(Albedo.y,data1.y), encodeVec2(Albedo.z,data1.z), encodeVec2(data1.w,Albedo.w)); gl_FragData[0] = vec4(encodeVec2(Albedo.x,data1.x), encodeVec2(Albedo.y,data1.y), encodeVec2(Albedo.z,data1.z), encodeVec2(data1.w,Albedo.w));

View File

@ -95,6 +95,7 @@ const vec2[8] offsets = vec2[8](vec2(1./8.,-3./8.),
vec2(-7.,-1.)/8., vec2(-7.,-1.)/8.,
vec2(3,7.)/8., vec2(3,7.)/8.,
vec2(7.,-7.)/8.); vec2(7.,-7.)/8.);
#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z) #define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z)
#define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz) #define projMAD(m, v) (diagonal3(m) * (v) + (m)[3].xyz)
vec4 toClipSpace3(vec3 viewSpacePosition) { vec4 toClipSpace3(vec3 viewSpacePosition) {
@ -379,16 +380,18 @@ void main() {
#endif #endif
#ifdef DOF_JITTER #if DOF_QUALITY == 5
vec2 jitter = clamp(jitter_offsets[frameCounter % 64], -1.0, 1.0); vec2 jitter = clamp(jitter_offsets[frameCounter % 64], -1.0, 1.0);
jitter = rotate(radians(float(frameCounter))) * jitter; jitter = rotate(radians(float(frameCounter))) * jitter;
jitter.y *= aspectRatio; jitter.y *= aspectRatio;
jitter.x *= DOF_ANAMORPHIC_RATIO; jitter.x *= DOF_ANAMORPHIC_RATIO;
#if DOF_JITTER_FOCUS < 0 #if MANUAL_FOCUS == -2
float focusMul = 0;
#elif MANUAL_FOCUS == -1
float focusMul = gl_Position.z - mix(pow(512.0, screenBrightness), 512.0 * screenBrightness, 0.25); float focusMul = gl_Position.z - mix(pow(512.0, screenBrightness), 512.0 * screenBrightness, 0.25);
#else #else
float focusMul = gl_Position.z - DOF_JITTER_FOCUS; float focusMul = gl_Position.z - MANUAL_FOCUS;
#endif #endif
vec2 totalOffset = (jitter * JITTER_STRENGTH) * focusMul * 1e-2; vec2 totalOffset = (jitter * JITTER_STRENGTH) * focusMul * 1e-2;

View File

@ -370,6 +370,7 @@ if (gl_FragCoord.x * texelSize.x < RENDER_SCALE.x && gl_FragCoord.y * texelSize
NdotL = clamp((-15 + NdotL*255.0) / 240.0 ,0.0,1.0); NdotL = clamp((-15 + NdotL*255.0) / 240.0 ,0.0,1.0);
float Shadows = 1.0; float Shadows = 1.0;
int shadowmapindicator = 0;
//compute shadows only if not backface //compute shadows only if not backface
if (NdotL > 0.001) { if (NdotL > 0.001) {
vec3 p3 = mat3(gbufferModelViewInverse) * fragpos + gbufferModelViewInverse[3].xyz; vec3 p3 = mat3(gbufferModelViewInverse) * fragpos + gbufferModelViewInverse[3].xyz;
@ -381,13 +382,15 @@ if (gl_FragCoord.x * texelSize.x < RENDER_SCALE.x && gl_FragCoord.y * texelSize
projectedShadowPosition.xy *= distortFactor; projectedShadowPosition.xy *= distortFactor;
//do shadows only if on shadow map //do shadows only if on shadow map
if (abs(projectedShadowPosition.x) < 1.0-1.5/shadowMapResolution && abs(projectedShadowPosition.y) < 1.0-1.5/shadowMapResolution){ if (abs(projectedShadowPosition.x) < 1.0-1.5/shadowMapResolution && abs(projectedShadowPosition.y) < 1.0-1.5/shadowMapResolution){
Shadows = 0.0;
projectedShadowPosition = projectedShadowPosition * vec3(0.5,0.5,0.5/6.0) + vec3(0.5,0.5,0.5);
#ifdef BASIC_SHADOW_FILTER
const float threshMul = max(2048.0/shadowMapResolution*shadowDistance/128.0,0.95); const float threshMul = max(2048.0/shadowMapResolution*shadowDistance/128.0,0.95);
float distortThresh = (sqrt(1.0-NdotL*NdotL)/NdotL+0.7)/distortFactor; float distortThresh = (sqrt(1.0-NdotL*NdotL)/NdotL+0.7)/distortFactor;
float diffthresh = distortThresh/6000.0*threshMul; float diffthresh = distortThresh/6000.0*threshMul;
projectedShadowPosition = projectedShadowPosition * vec3(0.5,0.5,0.5/6.0) + vec3(0.5,0.5,0.5);
Shadows = 0.0;
float noise = blueNoise(); float noise = blueNoise();
float rdMul = 4.0/shadowMapResolution; float rdMul = 4.0/shadowMapResolution;
@ -397,17 +400,23 @@ if (gl_FragCoord.x * texelSize.x < RENDER_SCALE.x && gl_FragCoord.y * texelSize
float weight = 1.0+(i+noise)*rdMul/9.0*shadowMapResolution; float weight = 1.0+(i+noise)*rdMul/9.0*shadowMapResolution;
Shadows += shadow2D(shadow,vec3(projectedShadowPosition + vec3(rdMul*offsetS,-diffthresh*weight))).x/9.0; Shadows += shadow2D(shadow,vec3(projectedShadowPosition + vec3(rdMul*offsetS,-diffthresh*weight))).x/9.0;
} }
#else
Shadows = shadow2D(shadow, projectedShadowPosition).x;
#endif
shadowmapindicator = 1;
}
} }
if(shadowmapindicator < 1) Shadows = clamp((lmtexcoord.w-0.8) * 5,0,1);
#ifdef CLOUDS_SHADOWS #ifdef CLOUDS_SHADOWS
Shadows *= GetCloudShadow(p3); Shadows *= GetCloudShadow(p3);
#endif #endif
}
vec3 WS_normal = viewToWorld(normal); vec3 WS_normal = viewToWorld(normal);
vec3 ambientCoefs = WS_normal/dot(abs(WS_normal),vec3(1.)); vec3 ambientCoefs = WS_normal/dot(abs(WS_normal),vec3(1.));
float skylight = clamp(abs(ambientCoefs.y+1),0.35,2.0) ; float skylight = clamp(ambientCoefs.y + 0.5,0.25,2.0);
vec2 lightmaps2 = lmtexcoord.zw; vec2 lightmaps2 = lmtexcoord.zw;
@ -505,6 +514,6 @@ if (gl_FragCoord.x * texelSize.x < RENDER_SCALE.x && gl_FragCoord.y * texelSize
gl_FragData[1] = vec4(Albedo,iswater); gl_FragData[1] = vec4(Albedo,iswater);
#endif #endif
gl_FragData[3].a = lmtexcoord.w; gl_FragData[3].a = max(lmtexcoord.w*blueNoise()*0.05 + lmtexcoord.w,0.0);
} }
} }

View File

@ -159,16 +159,18 @@ void main() {
WsunVec = lightCol.a*normalize(mat3(gbufferModelViewInverse) *sunPosition); WsunVec = lightCol.a*normalize(mat3(gbufferModelViewInverse) *sunPosition);
#ifdef DOF_JITTER #if DOF_QUALITY == 5
vec2 jitter = clamp(jitter_offsets[frameCounter % 64], -1.0, 1.0); vec2 jitter = clamp(jitter_offsets[frameCounter % 64], -1.0, 1.0);
jitter = rotate(radians(float(frameCounter))) * jitter; jitter = rotate(radians(float(frameCounter))) * jitter;
jitter.y *= aspectRatio; jitter.y *= aspectRatio;
jitter.x *= DOF_ANAMORPHIC_RATIO; jitter.x *= DOF_ANAMORPHIC_RATIO;
#if DOF_JITTER_FOCUS < 0 #if MANUAL_FOCUS == -2
float focusMul = 0;
#elif MANUAL_FOCUS == -1
float focusMul = gl_Position.z - mix(pow(512.0, screenBrightness), 512.0 * screenBrightness, 0.25); float focusMul = gl_Position.z - mix(pow(512.0, screenBrightness), 512.0 * screenBrightness, 0.25);
#else #else
float focusMul = gl_Position.z - DOF_JITTER_FOCUS; float focusMul = gl_Position.z - MANUAL_FOCUS;
#endif #endif
vec2 totalOffset = (jitter * JITTER_STRENGTH) * focusMul * 1e-2; vec2 totalOffset = (jitter * JITTER_STRENGTH) * focusMul * 1e-2;

View File

@ -120,6 +120,11 @@ screen.Clouds = Cloud Settings
screen.Climate = Climate Settings screen.Climate = Climate Settings
option.Seasons = Seasonal Colors option.Seasons = Seasonal Colors
option.Season_Length = Season Length (In Days) option.Season_Length = Season Length (In Days)
option.Start_Season = Starting Season
value.Start_Season.0 = Summer (Default)
value.Start_Season.1 = Fall
value.Start_Season.2 = Winter
value.Start_Season.3 = Spring
option.Snowy_Winter = Snow During Winter option.Snowy_Winter = Snow During Winter
screen.Summer_colors = Summer Colors screen.Summer_colors = Summer Colors
option.Summer_R = Red Amount option.Summer_R = Red Amount
@ -235,8 +240,11 @@ option.DOF_QUALITY=Depth Of Field
value.DOF_QUALITY.2=Medium value.DOF_QUALITY.2=Medium
value.DOF_QUALITY.3=High value.DOF_QUALITY.3=High
value.DOF_QUALITY.4=Ultra value.DOF_QUALITY.4=Ultra
value.DOF_QUALITY.5=Jitter
option.MANUAL_FOCUS=Focus
option.DOF_ANAMORPHIC_RATIO=Anamorphic Ratio option.DOF_ANAMORPHIC_RATIO=Anamorphic Ratio
value.DOF_JITTER_FOCUS.-1=Brightness Slider value.MANUAL_FOCUS.-2=Autofocus
value.MANUAL_FOCUS.-1=Brightness Slider
value.FOCUS_LASER_COLOR.0=Red value.FOCUS_LASER_COLOR.0=Red
value.FOCUS_LASER_COLOR.1=Green value.FOCUS_LASER_COLOR.1=Green
value.FOCUS_LASER_COLOR.2=Blue value.FOCUS_LASER_COLOR.2=Blue
@ -275,7 +283,7 @@ screen.Shadows.comment = Configure the shadows from the sun to your liking.
option.Variable_Penumbra_Shadows.comment = This effect softens the shadows more and more the farther the shadow gets from what casted it. This effect is used to create higher quality shadows and Sub-surface scattering. §aPERFORMANCE COST:§r low to high; option.Variable_Penumbra_Shadows.comment = This effect softens the shadows more and more the farther the shadow gets from what casted it. This effect is used to create higher quality shadows and Sub-surface scattering. §aPERFORMANCE COST:§r low to high;
option.VPS_Search_Samples.comment = The quality of the variable penumbra shadow filter. §aPERFORMANCE COST:§r low to high; Increasing this should reduce some noise in the sub-surface scattering and very soft shadows. option.VPS_Search_Samples.comment = The quality of the variable penumbra shadow filter. §aPERFORMANCE COST:§r low to high; Increasing this should reduce some noise in the sub-surface scattering and very soft shadows.
option.Max_Shadow_Filter_Radius.comment = The maximum softness the shadows can get when far away from what casted it. option.Max_Shadow_Filter_Radius.comment = The maximum softness the shadows can get when far away from what casted it.
option.Max_Filter_Depth = Configure the size of the sun. If the sun is larger, shadows get softer closer to what casts them. option.Max_Filter_Depth.comment = Configure the size of the sun. If the sun is larger, shadows get softer closer to what casts them.
screen.Ambient_light.comment = Configure settings related to the lighting in shaded places screen.Ambient_light.comment = Configure settings related to the lighting in shaded places
option.AO_Strength.comment = Configure the strength of the ambient occlusion created by SSAO, GTAO, RTAO, and SSGI. §bWhat is this?§r ambient occlusion is the small soft shadows in corners and such. option.AO_Strength.comment = Configure the strength of the ambient occlusion created by SSAO, GTAO, RTAO, and SSGI. §bWhat is this?§r ambient occlusion is the small soft shadows in corners and such.

View File

@ -400,7 +400,7 @@
vec2(-0.992326501717018, -0.062069798758671524) vec2(-0.992326501717018, -0.062069798758671524)
); );
#endif #endif
#if defined(DOF_JITTER) || defined(DOF_JITTER_SHADOW) // DOF_QUALITY == 5 && defined(SCREENSHOT_MODE) #if DOF_QUALITY == 5 || defined(DOF_JITTER_SHADOW) // DOF_QUALITY == 5 && defined(SCREENSHOT_MODE)
const vec2 jitter_offsets[64] = vec2[]( const vec2 jitter_offsets[64] = vec2[](
vec2(0.08838834764831845, 0), vec2(0.08838834764831845, 0),
vec2(-0.1846432401149469, -0.8598513673187094), vec2(-0.1846432401149469, -0.8598513673187094),

View File

@ -48,7 +48,7 @@
int SeasonLength = Season_Length; int SeasonLength = Season_Length;
// loop the year. multiply the season length by the 4 seasons to create a years time. // loop the year. multiply the season length by the 4 seasons to create a years time.
float YearLoop = mod(worldDay, SeasonLength * 4); float YearLoop = mod(worldDay + Start_Season * SeasonLength, SeasonLength * 4);
// the time schedule for each season // the time schedule for each season
float SummerTime = clamp(YearLoop ,0, SeasonLength) / SeasonLength; float SummerTime = clamp(YearLoop ,0, SeasonLength) / SeasonLength;

View File

@ -38,6 +38,7 @@
#define Seasons #define Seasons
#define Season_Length 24 // [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91] #define Season_Length 24 // [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91]
#define Start_Season 0 // [0 1 2 3]
#define Snowy_Winter #define Snowy_Winter
#define Summer_R 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0] #define Summer_R 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
@ -118,8 +119,9 @@ const float shadowDistanceRenderMul = -1.0; // [-1.0 1.0]
#define VPS_Search_Samples 4 // [4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32] #define VPS_Search_Samples 4 // [4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32]
#define Min_Shadow_Filter_Radius 5.0 // [0.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0 17.0 18.0 19.0 20.0 21.0 22.0 23.0 24.0 25.0 26.0 27.0 28.0 29.0 30.0 31.0 32.0 33.0 34.0 35.0 36.0 37.0 38.0 39.0 40.0 41.0 42.0 43.0 44.0 45.0 46.0 47.0 48.0 49.0 50.0 51.0 52.0 53.0 54.0 55.0 56.0 57.0 58.0 59.0 60.0 61.0 62.0 63.0 64.0 65.0 66.0 67.0 68.0 69.0 70.0 71.0 72.0 73.0 74.0 75.0 76.0 77.0 78.0 79.0 80.0 81.0 82.0 83.0 84.0 85.0 86.0 87.0 88.0 89.0 90.0 91.0 92.0 93.0 94.0 95.0 96.0 97.0 98.0 99.0 100.0 101.0 102.0 103.0 104.0 105.0 106.0 107.0 108.0 109.0 110.0 111.0 112.0 113.0 114.0 115.0 116.0 117.0 118.0 119.0 ] #define Min_Shadow_Filter_Radius 5.0 // [0.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0 17.0 18.0 19.0 20.0 21.0 22.0 23.0 24.0 25.0 26.0 27.0 28.0 29.0 30.0 31.0 32.0 33.0 34.0 35.0 36.0 37.0 38.0 39.0 40.0 41.0 42.0 43.0 44.0 45.0 46.0 47.0 48.0 49.0 50.0 51.0 52.0 53.0 54.0 55.0 56.0 57.0 58.0 59.0 60.0 61.0 62.0 63.0 64.0 65.0 66.0 67.0 68.0 69.0 70.0 71.0 72.0 73.0 74.0 75.0 76.0 77.0 78.0 79.0 80.0 81.0 82.0 83.0 84.0 85.0 86.0 87.0 88.0 89.0 90.0 91.0 92.0 93.0 94.0 95.0 96.0 97.0 98.0 99.0 100.0 101.0 102.0 103.0 104.0 105.0 106.0 107.0 108.0 109.0 110.0 111.0 112.0 113.0 114.0 115.0 116.0 117.0 118.0 119.0 ]
#define Max_Shadow_Filter_Radius 30.0 // [0.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0 17.0 18.0 19.0 20.0 21.0 22.0 23.0 24.0 25.0 26.0 27.0 28.0 29.0 30.0 31.0 32.0 33.0 34.0 35.0 36.0 37.0 38.0 39.0 40.0 41.0 42.0 43.0 44.0 45.0 46.0 47.0 48.0 49.0 50.0 51.0 52.0 53.0 54.0 55.0 56.0 57.0 58.0 59.0 60.0 61.0 62.0 63.0 64.0 65.0 66.0 67.0 68.0 69.0 70.0 71.0 72.0 73.0 74.0 75.0 76.0 77.0 78.0 79.0 80.0 81.0 82.0 83.0 84.0 85.0 86.0 87.0 88.0 89.0 90.0 91.0 92.0 93.0 94.0 95.0 96.0 97.0 98.0 99.0 100.0 101.0 102.0 103.0 104.0 105.0 106.0 107.0 108.0 109.0 110.0 111.0 112.0 113.0 114.0 115.0 116.0 117.0 118.0 119.0 ] #define Max_Shadow_Filter_Radius 30.0 // [0.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0 17.0 18.0 19.0 20.0 21.0 22.0 23.0 24.0 25.0 26.0 27.0 28.0 29.0 30.0 31.0 32.0 33.0 34.0 35.0 36.0 37.0 38.0 39.0 40.0 41.0 42.0 43.0 44.0 45.0 46.0 47.0 48.0 49.0 50.0 51.0 52.0 53.0 54.0 55.0 56.0 57.0 58.0 59.0 60.0 61.0 62.0 63.0 64.0 65.0 66.0 67.0 68.0 69.0 70.0 71.0 72.0 73.0 74.0 75.0 76.0 77.0 78.0 79.0 80.0 81.0 82.0 83.0 84.0 85.0 86.0 87.0 88.0 89.0 90.0 91.0 92.0 93.0 94.0 95.0 96.0 97.0 98.0 99.0 100.0 101.0 102.0 103.0 104.0 105.0 106.0 107.0 108.0 109.0 110.0 111.0 112.0 113.0 114.0 115.0 116.0 117.0 118.0 119.0 ]
#define Max_Filter_Depth 20.0 // [0.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0 17.0 18.0 19.0 20.0 21.0 22.0 23.0 24.0 25.0 26.0 27.0 28.0 29.0 30.0 31.0 32.0 33.0 34.0 35.0 36.0 37.0 38.0 39.0 40.0 41.0 42.0 43.0 44.0 45.0 46.0 47.0 48.0 49.0 50.0 51.0 52.0 53.0 54.0 55.0 56.0 57.0 58.0 59.0 60.0 61.0 62.0 63.0 64.0 65.0 66.0 67.0 68.0 69.0 70.0 71.0 72.0 73.0 74.0 75.0 76.0 77.0 78.0 79.0 80.0 81.0 82.0 83.0 84.0 85.0 86.0 87.0 88.0 89.0 90.0 91.0 92.0 93.0 94.0 95.0 96.0 97.0 98.0 99.0 100.0 101.0 102.0 103.0 104.0 105.0 106.0 107.0 108.0 109.0 110.0 111.0 112.0 113.0 114.0 115.0 116.0 117.0 118.0 119.0 ] #define Max_Filter_Depth 99.0 // [0.1 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0 17.0 18.0 19.0 20.0 21.0 22.0 23.0 24.0 25.0 26.0 27.0 28.0 29.0 30.0 31.0 32.0 33.0 34.0 35.0 36.0 37.0 38.0 39.0 40.0 41.0 42.0 43.0 44.0 45.0 46.0 47.0 48.0 49.0 50.0 51.0 52.0 53.0 54.0 55.0 56.0 57.0 58.0 59.0 60.0 61.0 62.0 63.0 64.0 65.0 66.0 67.0 68.0 69.0 70.0 71.0 72.0 73.0 74.0 75.0 76.0 77.0 78.0 79.0 80.0 81.0 82.0 83.0 84.0 85.0 86.0 87.0 88.0 89.0 90.0 91.0 92.0 93.0 94.0 95.0 96.0 97.0 98.0 99.0 100.0 101.0 102.0 103.0 104.0 105.0 106.0 107.0 108.0 109.0 110.0 111.0 112.0 113.0 114.0 115.0 116.0 117.0 118.0 119.0 220.0]
#define BASIC_SHADOW_FILTER
#define SHADOW_FILTER_SAMPLE_COUNT 13 // [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 ] #define SHADOW_FILTER_SAMPLE_COUNT 13 // [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 ]
#define SHADOW_DISABLE_ALPHA_MIPMAPS #define SHADOW_DISABLE_ALPHA_MIPMAPS
#define Stochastic_Transparent_Shadows #define Stochastic_Transparent_Shadows
@ -320,17 +322,16 @@ uniform int moonPhase;
// ----- DEPTH OF FIELD RELATED SETTINGS ----- // // ----- DEPTH OF FIELD RELATED SETTINGS ----- //
///////////////////////////////////////////////// /////////////////////////////////////////////////
#define DOF_QUALITY -1 // [-1 0 1 2 3 4] #define DOF_QUALITY -1 // [-1 0 1 2 3 4 5]
#define DOF_ANAMORPHIC_RATIO 1.0 // [0.3 0.6 1.0] #define DOF_ANAMORPHIC_RATIO 1.0 // [0.3 0.6 1.0]
#define AUTOFOCUS // // #define AUTOFOCUS
//#define FAR_BLUR_ONLY //#define FAR_BLUR_ONLY
#define focal 2.4 // [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 1.55 1.6 1.65 1.7 1.75 1.8 1.85 1.9 1.95 2.0 2.05 2.1 2.15 2.2 2.25 2.3 2.35 2.4 2.45 2.5 2.55 2.6 2.65 2.7 2.75 2.8 2.85 2.9 2.95 3.0 3.05 3.1 3.15 3.2 3.25 3.3 3.35 3.4 3.45 3.5 3.55 3.6 3.65 3.7 3.75 3.8 3.85 3.9 3.95 4.0 4.05 4.1 4.15 4.2 4.25 4.3 4.35 4.4 4.45 4.5 4.55 4.6 4.65 4.7 4.75 4.8 4.85 4.9 4.95 5.0 5.05 5.1 5.15 5.2 5.25 5.3 5.35 5.4 5.45 5.5 5.55 5.6 5.65 5.7 5.75 5.8 5.85 5.9 5.95 6.0 6.05 6.1 6.15 6.2 6.25 6.3 6.35 6.4 6.45 6.5 6.55 6.6 6.65 6.7 6.75 6.8 6.85 6.9 6.95 7.0 7.05 7.1 7.15 7.2 7.25 7.3 7.35 7.4 7.45 7.5 7.55 7.6 7.65 7.7 7.75 7.8 7.85 7.9 7.95 8.0 8.05 8.1 8.15 8.2 8.25 8.3 8.35 8.4 8.45 8.5 8.55 8.6 8.65 8.7 8.75 8.8 8.85 8.9 8.95 9.0 9.05 9.1 9.15 9.2 9.25 9.3 9.35 9.4 9.45 9.5 9.55 9.6 9.65 9.7 9.75 9.8 9.85 9.9 9.95 ] #define focal 2.4 // [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 1.55 1.6 1.65 1.7 1.75 1.8 1.85 1.9 1.95 2.0 2.05 2.1 2.15 2.2 2.25 2.3 2.35 2.4 2.45 2.5 2.55 2.6 2.65 2.7 2.75 2.8 2.85 2.9 2.95 3.0 3.05 3.1 3.15 3.2 3.25 3.3 3.35 3.4 3.45 3.5 3.55 3.6 3.65 3.7 3.75 3.8 3.85 3.9 3.95 4.0 4.05 4.1 4.15 4.2 4.25 4.3 4.35 4.4 4.45 4.5 4.55 4.6 4.65 4.7 4.75 4.8 4.85 4.9 4.95 5.0 5.05 5.1 5.15 5.2 5.25 5.3 5.35 5.4 5.45 5.5 5.55 5.6 5.65 5.7 5.75 5.8 5.85 5.9 5.95 6.0 6.05 6.1 6.15 6.2 6.25 6.3 6.35 6.4 6.45 6.5 6.55 6.6 6.65 6.7 6.75 6.8 6.85 6.9 6.95 7.0 7.05 7.1 7.15 7.2 7.25 7.3 7.35 7.4 7.45 7.5 7.55 7.6 7.65 7.7 7.75 7.8 7.85 7.9 7.95 8.0 8.05 8.1 8.15 8.2 8.25 8.3 8.35 8.4 8.45 8.5 8.55 8.6 8.65 8.7 8.75 8.8 8.85 8.9 8.95 9.0 9.05 9.1 9.15 9.2 9.25 9.3 9.35 9.4 9.45 9.5 9.55 9.6 9.65 9.7 9.75 9.8 9.85 9.9 9.95 ]
#define aperture 0.8 // [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 1.55 1.6 1.65 1.7 1.75 1.8 1.85 1.9 1.95 2.0 2.05 2.1 2.15 2.2 2.25 2.3 2.35 2.4 2.45 2.5 2.55 2.6 2.65 2.7 2.75 2.8 2.85 2.9 2.95 3.0 3.05 3.1 3.15 3.2 3.25 3.3 3.35 3.4 3.45 3.5 3.55 3.6 3.65 3.7 3.75 3.8 3.85 3.9 3.95 4.0 4.05 4.1 4.15 4.2 4.25 4.3 4.35 4.4 4.45 4.5 4.55 4.6 4.65 4.7 4.75 4.8 4.85 4.9 4.95 5.0 5.05 5.1 5.15 5.2 5.25 5.3 5.35 5.4 5.45 5.5 5.55 5.6 5.65 5.7 5.75 5.8 5.85 5.9 5.95 6.0 6.05 6.1 6.15 6.2 6.25 6.3 6.35 6.4 6.45 6.5 6.55 6.6 6.65 6.7 6.75 6.8 6.85 6.9 6.95 7.0 7.05 7.1 7.15 7.2 7.25 7.3 7.35 7.4 7.45 7.5 7.55 7.6 7.65 7.7 7.75 7.8 7.85 7.9 7.95 8.0 8.05 8.1 8.15 8.2 8.25 8.3 8.35 8.4 8.45 8.5 8.55 8.6 8.65 8.7 8.75 8.8 8.85 8.9 8.95 9.0 9.05 9.1 9.15 9.2 9.25 9.3 9.35 9.4 9.45 9.5 9.55 9.6 9.65 9.7 9.75 9.8 9.85 9.9 9.95 ] #define aperture 0.8 // [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 1.55 1.6 1.65 1.7 1.75 1.8 1.85 1.9 1.95 2.0 2.05 2.1 2.15 2.2 2.25 2.3 2.35 2.4 2.45 2.5 2.55 2.6 2.65 2.7 2.75 2.8 2.85 2.9 2.95 3.0 3.05 3.1 3.15 3.2 3.25 3.3 3.35 3.4 3.45 3.5 3.55 3.6 3.65 3.7 3.75 3.8 3.85 3.9 3.95 4.0 4.05 4.1 4.15 4.2 4.25 4.3 4.35 4.4 4.45 4.5 4.55 4.6 4.65 4.7 4.75 4.8 4.85 4.9 4.95 5.0 5.05 5.1 5.15 5.2 5.25 5.3 5.35 5.4 5.45 5.5 5.55 5.6 5.65 5.7 5.75 5.8 5.85 5.9 5.95 6.0 6.05 6.1 6.15 6.2 6.25 6.3 6.35 6.4 6.45 6.5 6.55 6.6 6.65 6.7 6.75 6.8 6.85 6.9 6.95 7.0 7.05 7.1 7.15 7.2 7.25 7.3 7.35 7.4 7.45 7.5 7.55 7.6 7.65 7.7 7.75 7.8 7.85 7.9 7.95 8.0 8.05 8.1 8.15 8.2 8.25 8.3 8.35 8.4 8.45 8.5 8.55 8.6 8.65 8.7 8.75 8.8 8.85 8.9 8.95 9.0 9.05 9.1 9.15 9.2 9.25 9.3 9.35 9.4 9.45 9.5 9.55 9.6 9.65 9.7 9.75 9.8 9.85 9.9 9.95 ]
#define MANUAL_FOCUS 48.0 // [0.06948345122280154 0.07243975703425146 0.07552184450877376 0.07873506526686186 0.0820849986238988 0.08557746127787037 0.08921851740926011 0.09301448921066349 0.09697196786440505 0.10109782498721881 0.10539922456186433 0.10988363537639657 0.11455884399268773 0.11943296826671962 0.12451447144412296 0.129812176855438 0.1353352832366127 0.1410933807013415 0.1470964673929768 0.15335496684492847 0.1598797460796939 0.16668213447794653 0.17377394345044514 0.18116748694692214 0.18887560283756183 0.19691167520419406 0.20528965757990927 0.21402409717744744 0.22313016014842982 0.2326236579172927 0.2425210746356487 0.25283959580474646 0.26359713811572677 0.27481238055948964 0.2865047968601901 0.29869468928867837 0.3114032239145977 0.32465246735834974 0.3384654251067422 0.3528660814588489 0.36787944117144233 0.3835315728763107 0.39984965434484737 0.4168620196785084 0.4345982085070782 0.453089017280169 0.4723665527410147 0.49246428767540973 0.513417119032592 0.5352614285189903 0.5580351457700471 0.5817778142098083 0.6065306597126334 0.6323366621862497 0.6592406302004438 0.6872892787909722 0.7165313105737893 0.7470175003104326 0.7788007830714049 0.8119363461506349 0.8464817248906141 0.8824969025845955 0.9200444146293233 0.9591894571091382 1.0 1.0425469051899914 1.086904049521229 1.1331484530668263 1.1813604128656459 1.2316236423470497 1.2840254166877414 1.338656724353094 1.3956124250860895 1.4549914146182013 1.5168967963882134 1.5814360605671443 1.6487212707001282 1.7188692582893286 1.7920018256557555 1.8682459574322223 1.9477340410546757 2.030604096634748 2.117000016612675 2.2070718156067044 2.300975890892825 2.398875293967098 2.5009400136621287 2.6073472713092674 2.718281828459045 2.833936307694169 2.9545115270921065 3.080216848918031 3.211270543153561 3.347900166492527 3.4903429574618414 3.638846248353525 3.7936678946831774 3.955076722920577 4.123352997269821 4.298788906309526 4.4816890703380645 4.672371070304759 4.871165999245474 5.0784190371800815 5.29449005047003 5.51975421667673 5.754602676005731 5.999443210467818 6.254700951936329 6.5208191203301125 6.798259793203881 7.087504708082256 7.38905609893065 7.703437568215379 8.031194996067258 8.372897488127265 8.72913836372013 9.10053618607165 9.487735836358526 9.891409633455755 10.312258501325767 10.751013186076355 11.208435524800691 11.685319768402522 12.182493960703473 12.700821376227164 13.241202019156521 13.804574186067095 14.391916095149892 15.00424758475255 15.642631884188171 16.30817745988666 17.00203994009402 17.725424121461643 18.479586061009854 19.265835257097933 20.085536923187668 20.940114358348602 21.831051418620845 22.75989509352673 23.728258192205157 24.737822143832553 25.790339917193062 26.88763906446752 28.03162489452614 29.22428378123494 30.46768661252054 31.763992386181833 33.11545195869231 34.52441195350251 35.99331883562839 37.524723159600995 39.12128399815321 40.78577355933337 42.52108200006278 44.3302224444953 46.21633621589248 48.182698291098816 50.23272298708815 52.36996988945491 54.598150033144236 56.92113234615337 59.34295036739207 61.867809250367884 64.50009306485578 67.24437240923179 70.10541234668786 73.08818067910767 76.19785657297057 79.43983955226133 82.81975887399955 86.3434833026695 90.01713130052181 93.84708165144015 97.83998453682129 102.00277308269969 106.34267539816554 110.86722712598126 115.58428452718766 120.50203812241894 125.62902691361414 130.9741532108186 136.54669808981876 142.35633750745257 148.4131591025766 154.72767971186107 161.3108636308289 168.17414165184545 175.32943091211476 182.78915558614753 190.56626845863 198.67427341514983 ] #define MANUAL_FOCUS -2 // [-2 -1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 19 20 21 22 24 25 26 28 29 30 32 33 35 36 38 40 41 43 45 47 48 50 52 54 56 58 60 63 65 67 70 72 75 77 80 83 85 88 91 94 98 101 104 108 111 115 119 123 127 132 136 141 146 151 156 161 167 173 179 186 193 200 207 215 224 232 242 251 262 273 284 297 310 324 339 355 372 391 411 433 457 483 512]
#define DoF_Adaptation_Speed 1.00 // [0.20 0.21 0.23 0.24 0.25 0.27 0.29 0.30 0.32 0.34 0.36 0.39 0.41 0.43 0.46 0.49 0.52 0.55 0.59 0.62 0.66 0.70 0.74 0.79 0.84 0.89 0.94 1.00 1.06 1.13 1.20 1.27 1.35 1.43 1.52 1.61 1.71 1.82 1.93 2.05 2.18 2.31 2.45 2.60 2.76 2.93 3.11 3.30 3.51 3.72 3.95 4.19 4.45 4.73 5.02 5.33 5.65 6.00] #define DoF_Adaptation_Speed 1.00 // [0.20 0.21 0.23 0.24 0.25 0.27 0.29 0.30 0.32 0.34 0.36 0.39 0.41 0.43 0.46 0.49 0.52 0.55 0.59 0.62 0.66 0.70 0.74 0.79 0.84 0.89 0.94 1.00 1.06 1.13 1.20 1.27 1.35 1.43 1.52 1.61 1.71 1.82 1.93 2.05 2.18 2.31 2.45 2.60 2.76 2.93 3.11 3.30 3.51 3.72 3.95 4.19 4.45 4.73 5.02 5.33 5.65 6.00]
// #define DOF_JITTER
// #define DOF_JITTER_SHADOW // #define DOF_JITTER_SHADOW
#define DOF_JITTER_FOCUS 32 // [-1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 19 20 21 22 24 25 26 28 29 30 32 33 35 36 38 40 41 43 45 47 48 50 52 54 56 58 60 63 65 67 70 72 75 77 80 83 85 88 91 94 98 101 104 108 111 115 119 123 127 132 136 141 146 151 156 161 167 173 179 186 193 200 207 215 224 232 242 251 262 273 284 297 310 324 339 355 372 391 411 433 457 483 512] // // #define DOF_JITTER_FOCUS 32 // [-1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 19 20 21 22 24 25 26 28 29 30 32 33 35 36 38 40 41 43 45 47 48 50 52 54 56 58 60 63 65 67 70 72 75 77 80 83 85 88 91 94 98 101 104 108 111 115 119 123 127 132 136 141 146 151 156 161 167 173 179 186 193 200 207 215 224 232 242 251 262 273 284 297 310 324 339 355 372 391 411 433 457 483 512]
#define JITTER_STRENGTH 1.0 // sorry [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 2.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0 17.0 18.0 19.0 20.0] #define JITTER_STRENGTH 1.0 // sorry [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 2.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0 17.0 18.0 19.0 20.0]
#define FOCUS_LASER_COLOR 1 // Red, Green, Blue, Pink, Yellow, White [0 1 2 3 4 5] #define FOCUS_LASER_COLOR 1 // Red, Green, Blue, Pink, Yellow, White [0 1 2 3 4 5]

View File

@ -192,6 +192,7 @@ vec3 SampleVNDFGGX(
// This gives the normal on the hemisphere // This gives the normal on the hemisphere
// xonk note, i added those magic numbers huhuhuh // xonk note, i added those magic numbers huhuhuh
vec3 halfway = reflected*0.5 + viewerDirection*1.5; vec3 halfway = reflected*0.5 + viewerDirection*1.5;
// vec3 halfway = reflected + viewerDirection;
// Transform the halfway direction back to hemiellispoid configuation // Transform the halfway direction back to hemiellispoid configuation
// This gives the final sampled normal // This gives the final sampled normal

View File

@ -74,7 +74,7 @@ PhysicsMod_support [LabPBR]
screen.Subsurface_Scattering = SSS_TYPE LabSSS_Curve <empty> MISC_BLOCK_SSS MOB_SSS <empty> Ambient_SSS ambientsss_brightness screen.Subsurface_Scattering = SSS_TYPE LabSSS_Curve <empty> MISC_BLOCK_SSS MOB_SSS <empty> Ambient_SSS ambientsss_brightness
screen.Filtering.columns=1 screen.Filtering.columns=1
screen.Filtering = SHADOW_FILTER_SAMPLE_COUNT Min_Shadow_Filter_Radius <empty> Variable_Penumbra_Shadows VPS_Search_Samples Max_Shadow_Filter_Radius Max_Filter_Depth screen.Filtering = BASIC_SHADOW_FILTER SHADOW_FILTER_SAMPLE_COUNT Min_Shadow_Filter_Radius <empty> Variable_Penumbra_Shadows VPS_Search_Samples Max_Shadow_Filter_Radius Max_Filter_Depth
### AMBIENT LIGHT ### AMBIENT LIGHT
screen.Ambient_light.columns=1 screen.Ambient_light.columns=1
@ -114,7 +114,7 @@ PhysicsMod_support [LabPBR]
## SEASONS ## SEASONS
screen.Seasons.columns=1 screen.Seasons.columns=1
screen.Seasons = Seasons Season_Length Snowy_Winter <empty> [Summer_colors] [Fall_colors] [Winter_colors] [Spring_colors] screen.Seasons = Seasons Season_Length Start_Season Snowy_Winter <empty> [Summer_colors] [Fall_colors] [Winter_colors] [Spring_colors]
screen.Summer_colors.columns=1 screen.Summer_colors.columns=1
screen.Summer_colors = Summer_R Summer_G Summer_B <empty> Summer_Leaf_R Summer_Leaf_G Summer_Leaf_B screen.Summer_colors = Summer_R Summer_G Summer_B <empty> Summer_Leaf_R Summer_Leaf_G Summer_Leaf_B
@ -176,7 +176,7 @@ PhysicsMod_support [LabPBR]
screen.DepthOfField.columns = 1 screen.DepthOfField.columns = 1
screen.DepthOfField = [JITTER_DOF] DOF_QUALITY DOF_ANAMORPHIC_RATIO AUTOFOCUS focal aperture MANUAL_FOCUS DoF_Adaptation_Speed FAR_BLUR_ONLY screen.DepthOfField = [JITTER_DOF] DOF_QUALITY DOF_ANAMORPHIC_RATIO AUTOFOCUS focal aperture MANUAL_FOCUS DoF_Adaptation_Speed FAR_BLUR_ONLY
screen.JITTER_DOF.columns=1 screen.JITTER_DOF.columns=1
screen.JITTER_DOF = DOF_JITTER DOF_JITTER_SHADOW DOF_JITTER_FOCUS JITTER_STRENGTH DOF_CAMERA_WIDTH FOCUS_LASER_COLOR <empty> SCREENSHOT_MODE screen.JITTER_DOF = JITTER_STRENGTH FOCUS_LASER_COLOR SCREENSHOT_MODE
### EXPOSURE ### EXPOSURE
screen.Exposure.columns = 1 screen.Exposure.columns = 1
screen.Exposure = AUTO_EXPOSURE EXPOSURE_MULTIPLIER Exposure_Speed Manual_exposure_value screen.Exposure = AUTO_EXPOSURE EXPOSURE_MULTIPLIER Exposure_Speed Manual_exposure_value

View File

@ -31,16 +31,20 @@ uniform float screenBrightness;
uniform vec3 sunVec; uniform vec3 sunVec;
uniform float aspectRatio; uniform float aspectRatio;
uniform float sunElevation; uniform float sunElevation;
uniform vec3 sunPosition;
uniform float lightSign; uniform float lightSign;
uniform float cosFov; uniform float cosFov;
uniform vec3 shadowViewDir; uniform vec3 shadowViewDir;
uniform vec3 shadowCamera; uniform vec3 shadowCamera;
uniform vec3 shadowLightVec; uniform vec3 shadowLightVec;
uniform float shadowMaxProj; uniform float shadowMaxProj;
attribute vec4 mc_Entity;
attribute vec4 mc_midTexCoord; attribute vec4 mc_midTexCoord;
varying vec4 glcolor; varying vec4 glcolor;
attribute vec4 mc_Entity;
uniform int blockEntityId;
uniform int entityId;
const float PI48 = 150.796447372*WAVY_SPEED; const float PI48 = 150.796447372*WAVY_SPEED;
float pi2wt = PI48*frameTimeCounter; float pi2wt = PI48*frameTimeCounter;
@ -96,7 +100,6 @@ vec4 toClipSpace3(vec3 viewSpacePosition) {
} }
void main() { void main() {
vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz; vec3 position = mat3(gl_ModelViewMatrix) * vec3(gl_Vertex) + gl_ModelViewMatrix[3].xyz;
// HHHHHHHHH ITS THE JITTER DOF HERE TO SAY HELLO // HHHHHHHHH ITS THE JITTER DOF HERE TO SAY HELLO
@ -135,43 +138,35 @@ void main() {
// } // }
// #endif // #endif
//Check if the vertice is going to cast shadows #ifdef WAVY_PLANTS
// #ifdef SHADOW_FRUSTRUM_CULLING bool istopv = gl_MultiTexCoord0.t < mc_midTexCoord.t;
// if (intersectCone(cosFov, shadowCamera, shadowViewDir, position, -shadowLightVec, shadowMaxProj)) { if ((mc_Entity.x == 10001&&istopv) && length(position.xy) < 24.0) {
// #endif vec3 worldpos = mat3(shadowModelViewInverse) * position + shadowModelViewInverse[3].xyz;
// #ifdef WAVY_PLANTS worldpos.xyz += calcMovePlants(worldpos.xyz + cameraPosition)*gl_MultiTexCoord1.y;
// bool istopv = gl_MultiTexCoord0.t < mc_midTexCoord.t; position = mat3(shadowModelView) * worldpos + shadowModelView[3].xyz ;
// if ((mc_Entity.x == 10001&&istopv) && length(position.xy) < 24.0) { }
// vec3 worldpos = mat3(shadowModelViewInverse) * position + shadowModelViewInverse[3].xyz;
// worldpos.xyz += calcMovePlants(worldpos.xyz + cameraPosition)*gl_MultiTexCoord1.y;
// position = mat3(shadowModelView) * worldpos + shadowModelView[3].xyz ;
// }
// if ((mc_Entity.x == 10003) && length(position.xy) < 24.0) {
// vec3 worldpos = mat3(shadowModelViewInverse) * position + shadowModelViewInverse[3].xyz;
// worldpos.xyz += calcMoveLeaves(worldpos.xyz + cameraPosition, 0.0040, 0.0064, 0.0043, 0.0035, 0.0037, 0.0041, vec3(1.0,0.2,1.0), vec3(0.5,0.1,0.5))*gl_MultiTexCoord1.y;
// position = mat3(shadowModelView) * worldpos + shadowModelView[3].xyz ;
// }
// #endif
if ((mc_Entity.x == 10003) && length(position.xy) < 24.0) {
vec3 worldpos = mat3(shadowModelViewInverse) * position + shadowModelViewInverse[3].xyz;
worldpos.xyz += calcMoveLeaves(worldpos.xyz + cameraPosition, 0.0040, 0.0064, 0.0043, 0.0035, 0.0037, 0.0041, vec3(1.0,0.2,1.0), vec3(0.5,0.1,0.5))*gl_MultiTexCoord1.y;
position = mat3(shadowModelView) * worldpos + shadowModelView[3].xyz ;
}
#endif
// gl_Position = BiasShadowProjection_altered(toClipSpace3(position),mat3(shadowProjection),mat3(shadowModelView), gl_NormalMatrix * gl_Normal); // gl_Position = BiasShadowProjection_altered(toClipSpace3(position),mat3(shadowProjection),mat3(shadowModelView), gl_NormalMatrix * gl_Normal);
gl_Position = BiasShadowProjection(toClipSpace3(position)); gl_Position = BiasShadowProjection(toClipSpace3(position));
gl_Position.z /= 6.0;
texcoord.xy = gl_MultiTexCoord0.xy; texcoord.xy = gl_MultiTexCoord0.xy;
if(mc_Entity.x == 8 || mc_Entity.x == 9) gl_Position.w = -1.0; if(mc_Entity.x == 8 || mc_Entity.x == 9) gl_Position.w = -1.0;
#ifdef SHADOW_FRUSTRUM_CULLING /// this is to ease the shadow acne on big fat entities like ghasts.
}
else float bias = 6.0;
gl_Position.xyzw = vec4(0.0,0.0,1e30,0.0); //Degenerates the triangle vec3 FlatNormals = normalize(gl_NormalMatrix *gl_Normal);
#endif vec3 WsunVec = (float(sunElevation > 1e-5)*2-1.)*normalize(mat3(shadowModelViewInverse) * sunPosition);
if(entityId == 1100) bias = 6.0 + (1-clamp(dot(WsunVec,FlatNormals),0,1))*0.3;
gl_Position.z /= bias;
} }

View File

@ -305,7 +305,7 @@ vec4 blueNoise(vec2 coord){
return texelFetch2D(colortex6, ivec2(coord )%512 , 0); return texelFetch2D(colortex6, ivec2(coord )%512 , 0);
} }
void LabEmission( void Emission(
inout vec3 Lighting, inout vec3 Lighting,
vec3 Albedo, vec3 Albedo,
float Emission float Emission
@ -467,7 +467,7 @@ void main() {
MaterialReflections_N(gl_FragData[0].rgb, SpecularTex.r, SpecularTex.ggg, albedo, normal, np3, fragpos, vec3(blueNoise(gl_FragCoord.xy).rg,noise), hand); MaterialReflections_N(gl_FragData[0].rgb, SpecularTex.r, SpecularTex.ggg, albedo, normal, np3, fragpos, vec3(blueNoise(gl_FragCoord.xy).rg,noise), hand);
#endif #endif
LabEmission(gl_FragData[0].rgb, albedo, SpecularTex.a); Emission(gl_FragData[0].rgb, albedo, SpecularTex.a);
if(lightningBolt) gl_FragData[0].rgb += vec3(Lightning_R,Lightning_G,Lightning_B) ; if(lightningBolt) gl_FragData[0].rgb += vec3(Lightning_R,Lightning_G,Lightning_B) ;

View File

@ -303,7 +303,7 @@ vec4 blueNoise(vec2 coord){
return texelFetch2D(colortex6, ivec2(coord )%512 , 0); return texelFetch2D(colortex6, ivec2(coord )%512 , 0);
} }
void LabEmission( void Emission(
inout vec3 Lighting, inout vec3 Lighting,
vec3 Albedo, vec3 Albedo,
float Emission float Emission
@ -459,7 +459,7 @@ void main() {
if(!hand) gl_FragData[0].rgb *= ssao(fragpos,noise,FlatNormals) * AO; if(!hand) gl_FragData[0].rgb *= ssao(fragpos,noise,FlatNormals) * AO;
LabEmission(gl_FragData[0].rgb, albedo, SpecularTex.a); Emission(gl_FragData[0].rgb, albedo, SpecularTex.a);
if(lightningBolt) gl_FragData[0].rgb = LightColor * 10 ; if(lightningBolt) gl_FragData[0].rgb = LightColor * 10 ;