diff --git a/shaders/composite1.fsh b/shaders/composite1.fsh index 6af83f9..669bc8e 100644 --- a/shaders/composite1.fsh +++ b/shaders/composite1.fsh @@ -12,6 +12,7 @@ const bool shadowHardwareFiltering = true; flat varying vec3 averageSkyCol_Clouds; flat varying vec4 lightCol; +flat varying vec2 rodExposureDepth; flat varying vec3 WsunVec; flat varying vec2 TAA_Offset; @@ -43,6 +44,7 @@ uniform sampler2DShadow shadow; varying vec4 normalMat; uniform int heldBlockLightValue; uniform int frameCounter; +uniform float screenBrightness; uniform int isEyeInWater; uniform float far; uniform float near; @@ -1188,7 +1190,7 @@ void main() { 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; #if FOCUS_LASER_COLOR == 0 // Red laserColor = vec3(25, 0, 0); @@ -1204,10 +1206,12 @@ void main() { laserColor = vec3(25); #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); #else - float focusDist = DOF_JITTER_FOCUS; + float focusDist = MANUAL_FOCUS; #endif if( hideGUI < 1.0) gl_FragData[0].rgb += laserColor * pow( clamp( 1.0-abs(focusDist-abs(fragpos.z)) ,0,1),25) ; diff --git a/shaders/composite1.vsh b/shaders/composite1.vsh index c24c659..7cadca2 100644 --- a/shaders/composite1.vsh +++ b/shaders/composite1.vsh @@ -4,6 +4,7 @@ flat varying vec3 averageSkyCol_Clouds; flat varying vec4 lightCol; +flat varying vec2 rodExposureDepth; flat varying vec3 WsunVec; flat varying float tempOffsets; @@ -81,7 +82,8 @@ void main() { #endif - + rodExposureDepth = texelFetch2D(colortex4,ivec2(14,37),0).rg; + rodExposureDepth.y = sqrt(rodExposureDepth.y/65000.0); TAA_Offset = offsets[frameCounter%8]; diff --git a/shaders/composite11.fsh b/shaders/composite11.fsh index 84bef77..763c216 100644 --- a/shaders/composite11.fsh +++ b/shaders/composite11.fsh @@ -71,13 +71,15 @@ void main() { float vignette = (1.5-dot(texcoord-0.5,texcoord-0.5)*2.); 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; - #ifdef AUTOFOCUS + #if MANUAL_FOCUS == -2 float focus = rodExposureDepth.y*far; - #else - float focus = MANUAL_FOCUS*screenBrightness; + #elif MANUAL_FOCUS == -1 + float focus = mix(pow(512.0, screenBrightness), 512.0 * screenBrightness, 0.25); + #elif MANUAL_FOCUS > 0 + float focus = MANUAL_FOCUS; #endif float pcoc = min(abs(aperture * (focal/100.0 * (z - focus)) / (z * (focus - focal/100.0))),texelSize.x*15.0); #ifdef FAR_BLUR_ONLY diff --git a/shaders/composite2.fsh b/shaders/composite2.fsh index 97ee96c..6ca0dfb 100644 --- a/shaders/composite2.fsh +++ b/shaders/composite2.fsh @@ -262,7 +262,7 @@ void main() { vec2 tc = floor(gl_FragCoord.xy)/VL_RENDER_RESOLUTION*texelSize+0.5*texelSize; float z = texture2D(depthtex0,tc).x; - #ifdef DOF_JITTER + #if DOF_QUALITY == 5 vec2 jitter = clamp(jitter_offsets[frameCounter % 64], -1.0, 1.0); jitter = rotate(radians(float(frameCounter))) * jitter; jitter.y *= aspectRatio; diff --git a/shaders/gbuffers_all_particles.vsh b/shaders/gbuffers_all_particles.vsh index 7cf019d..4fb1f9d 100644 --- a/shaders/gbuffers_all_particles.vsh +++ b/shaders/gbuffers_all_particles.vsh @@ -90,16 +90,18 @@ void main() { gl_Position.xy += offsets[framemod8] * gl_Position.w*texelSize; #endif - #ifdef DOF_JITTER + #if DOF_QUALITY == 5 vec2 jitter = clamp(jitter_offsets[frameCounter % 64], -1.0, 1.0); jitter = rotate(radians(float(frameCounter))) * jitter; jitter.y *= aspectRatio; jitter.x *= DOF_ANAMORPHIC_RATIO; - #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); #else - float focusMul = gl_Position.z - DOF_JITTER_FOCUS; + float focusMul = gl_Position.z - MANUAL_FOCUS; #endif vec2 totalOffset = (jitter * JITTER_STRENGTH) * focusMul * 1e-2; diff --git a/shaders/gbuffers_all_solid.vsh b/shaders/gbuffers_all_solid.vsh index cea4904..2de994f 100644 --- a/shaders/gbuffers_all_solid.vsh +++ b/shaders/gbuffers_all_solid.vsh @@ -380,19 +380,21 @@ void main() { #endif -#ifdef DOF_JITTER - vec2 jitter = clamp(jitter_offsets[frameCounter % 64], -1.0, 1.0); - jitter = rotate(radians(float(frameCounter))) * jitter; - jitter.y *= aspectRatio; - jitter.x *= DOF_ANAMORPHIC_RATIO; +#if DOF_QUALITY == 5 + vec2 jitter = clamp(jitter_offsets[frameCounter % 64], -1.0, 1.0); + jitter = rotate(radians(float(frameCounter))) * jitter; + jitter.y *= aspectRatio; + jitter.x *= DOF_ANAMORPHIC_RATIO; - #if DOF_JITTER_FOCUS < 0 - float focusMul = gl_Position.z - mix(pow(512.0, screenBrightness), 512.0 * screenBrightness, 0.25); - #else - float focusMul = gl_Position.z - DOF_JITTER_FOCUS; + #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); + #else + float focusMul = gl_Position.z - MANUAL_FOCUS; + #endif + + vec2 totalOffset = (jitter * JITTER_STRENGTH) * focusMul * 1e-2; + gl_Position.xy += hideGUI >= 1 ? totalOffset : vec2(0); #endif - - vec2 totalOffset = (jitter * JITTER_STRENGTH) * focusMul * 1e-2; - gl_Position.xy += hideGUI >= 1 ? totalOffset : vec2(0); -#endif } diff --git a/shaders/gbuffers_all_translucent.vsh b/shaders/gbuffers_all_translucent.vsh index 664d0ec..eb824b0 100644 --- a/shaders/gbuffers_all_translucent.vsh +++ b/shaders/gbuffers_all_translucent.vsh @@ -159,16 +159,18 @@ void main() { 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); jitter = rotate(radians(float(frameCounter))) * jitter; jitter.y *= aspectRatio; 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); #else - float focusMul = gl_Position.z - DOF_JITTER_FOCUS; + float focusMul = gl_Position.z - MANUAL_FOCUS; #endif vec2 totalOffset = (jitter * JITTER_STRENGTH) * focusMul * 1e-2; diff --git a/shaders/lang/en_us.lang b/shaders/lang/en_us.lang index 7395f76..63306f8 100644 --- a/shaders/lang/en_us.lang +++ b/shaders/lang/en_us.lang @@ -240,8 +240,11 @@ option.DOF_QUALITY=Depth Of Field value.DOF_QUALITY.2=Medium value.DOF_QUALITY.3=High value.DOF_QUALITY.4=Ultra + value.DOF_QUALITY.5=Jitter + option.MANUAL_FOCUS=Focus 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.1=Green value.FOCUS_LASER_COLOR.2=Blue diff --git a/shaders/lib/bokeh.glsl b/shaders/lib/bokeh.glsl index 29b6a32..9aec24c 100644 --- a/shaders/lib/bokeh.glsl +++ b/shaders/lib/bokeh.glsl @@ -400,7 +400,7 @@ vec2(-0.992326501717018, -0.062069798758671524) ); #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[]( vec2(0.08838834764831845, 0), vec2(-0.1846432401149469, -0.8598513673187094), diff --git a/shaders/lib/settings.glsl b/shaders/lib/settings.glsl index 31c95c9..4f4020e 100644 --- a/shaders/lib/settings.glsl +++ b/shaders/lib/settings.glsl @@ -322,17 +322,16 @@ uniform int moonPhase; // ----- 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 AUTOFOCUS +// // #define AUTOFOCUS //#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 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_JITTER // #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 FOCUS_LASER_COLOR 1 // Red, Green, Blue, Pink, Yellow, White [0 1 2 3 4 5] diff --git a/shaders/shaders.properties b/shaders/shaders.properties index 5b56fa2..91da691 100644 --- a/shaders/shaders.properties +++ b/shaders/shaders.properties @@ -176,7 +176,7 @@ PhysicsMod_support [LabPBR] 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.JITTER_DOF.columns=1 - screen.JITTER_DOF = DOF_JITTER DOF_JITTER_SHADOW DOF_JITTER_FOCUS JITTER_STRENGTH DOF_CAMERA_WIDTH FOCUS_LASER_COLOR SCREENSHOT_MODE + screen.JITTER_DOF = JITTER_STRENGTH FOCUS_LASER_COLOR SCREENSHOT_MODE ### EXPOSURE screen.Exposure.columns = 1 screen.Exposure = AUTO_EXPOSURE EXPOSURE_MULTIPLIER Exposure_Speed Manual_exposure_value