2626
2727
2828// !DESC Anime4K-Hybrid-Bilateral-v2.0RC4
29- // !HOOK LUMA
29+ // !HOOK NATIVE
3030// !BIND HOOKED
3131
3232/* ---------------------- BILATERAL FILTERING SETTINGS ---------------------- */
3333
3434// CAS Sharpness, initial sharpen filter strength (traditional sharpening)
35- #define STRENGTH 0.1
35+ #define STRENGTH 0.05
36+ #define SPREAD_STRENGTH 1
3637
3738/* --- MOST OF THE OTHER SETTINGS CAN BE FOUND AT THE END --- */
3839
@@ -41,47 +42,61 @@ float gaussian(float x, float s, float m) {
4142}
4243
4344vec4 hook() {
45+ float sharpval = clamp (HOOKED_size.x / 1920 , 0 , 1 );
46+
4447 vec2 d = HOOKED_pt;
4548
46- float v0 = LUMA_tex(HOOKED_pos + vec2 (- d.x, - d.y)).x;
47- float v1 = LUMA_tex(HOOKED_pos + vec2 (0 , - d.y)).x;
48- float v2 = LUMA_tex(HOOKED_pos + vec2 (d.x, - d.y)).x;
49- float v3 = LUMA_tex(HOOKED_pos + vec2 (- d.x, 0 )).x;
50- float v4 = LUMA_tex(HOOKED_pos).x;
51- float v5 = LUMA_tex(HOOKED_pos + vec2 (d.x, 0 )).x;
52- float v6 = LUMA_tex(HOOKED_pos + vec2 (- d.x, d.y)).x;
53- float v7 = LUMA_tex(HOOKED_pos + vec2 (0 , d.y)).x;
54- float v8 = LUMA_tex(HOOKED_pos + vec2 (d.x, d.y)).x;
49+ vec2 d0 = vec2 (- d.x, - d.y);
50+ vec2 d1 = vec2 (0 , - d.y);
51+ vec2 d2 = vec2 (d.x, - d.y);
52+ vec2 d3 = vec2 (- d.x, 0 );
53+ vec2 d4 = vec2 (0 , 0 );
54+ vec2 d5 = vec2 (d.x, 0 );
55+ vec2 d6 = vec2 (- d.x, d.y);
56+ vec2 d7 = vec2 (0 , d.y);
57+ vec2 d8 = vec2 (d.x, d.y);
58+
59+
60+ float v0 = HOOKED_tex(HOOKED_pos + d0).x;
61+ float v1 = HOOKED_tex(HOOKED_pos + d1).x;
62+ float v2 = HOOKED_tex(HOOKED_pos + d2).x;
63+ float v3 = HOOKED_tex(HOOKED_pos + d3).x;
64+ float v4 = HOOKED_tex(HOOKED_pos + d4).x;
65+ float v5 = HOOKED_tex(HOOKED_pos + d5).x;
66+ float v6 = HOOKED_tex(HOOKED_pos + d6).x;
67+ float v7 = HOOKED_tex(HOOKED_pos + d7).x;
68+ float v8 = HOOKED_tex(HOOKED_pos + d8).x;
5569
5670 float s = v4 * STRENGTH + 0.01 ;
71+ float ds = SPREAD_STRENGTH * sharpval + 0.01 ;
5772 float m = 0 ;
5873
59- float s0 = gaussian(v4 - v0, s, m);
60- float s1 = gaussian(v4 - v1, s, m);
61- float s2 = gaussian(v4 - v2, s, m);
62- float s3 = gaussian(v4 - v3, s, m);
63- float s4 = gaussian(0 , s, m);
64- float s5 = gaussian(v4 - v5, s, m);
65- float s6 = gaussian(v4 - v6, s, m);
66- float s7 = gaussian(v4 - v7, s, m);
67- float s8 = gaussian(v4 - v8, s, m);
74+ float s0 = gaussian(v4 - v0, s, m) * gaussian( distance (d4, d0), ds, 0 ) ;
75+ float s1 = gaussian(v4 - v1, s, m) * gaussian( distance (d4, d1), ds, 0 ) ;
76+ float s2 = gaussian(v4 - v2, s, m) * gaussian( distance (d4, d2), ds, 0 ) ;
77+ float s3 = gaussian(v4 - v3, s, m) * gaussian( distance (d4, d3), ds, 0 ) ;
78+ float s4 = gaussian(0 , s, m) * gaussian( 0 , ds, 0 ) ;
79+ float s5 = gaussian(v4 - v5, s, m) * gaussian( distance (d4, d5), ds, 0 ) ;
80+ float s6 = gaussian(v4 - v6, s, m) * gaussian( distance (d4, d6), ds, 0 ) ;
81+ float s7 = gaussian(v4 - v7, s, m) * gaussian( distance (d4, d7), ds, 0 ) ;
82+ float s8 = gaussian(v4 - v8, s, m) * gaussian( distance (d4, d8), ds, 0 ) ;
6883
6984 float ss = s0 + s1 + s2 + s3 + s4 + s5 + s6 + s7 + s8;
7085
7186 float sv = (v0 * s0 + v1 * s1 + v2 * s2 + v3 * s3 + v4 * s4 + v5 * s5 + v6 * s6 + v7 * s7 + v8 * s8) / ss;
7287
73- return vec4 (sv, 0 , 0 , 0 );
88+ return vec4 (sv, HOOKED_tex(HOOKED_pos).y, HOOKED_tex(HOOKED_pos).z , 0 );
7489}
7590
7691// !DESC Anime4K-Hybrid-CAS-v2.0RC4
77- // !HOOK SCALED
92+ // !HOOK MAINPRESUB
7893// !BIND HOOKED
7994
8095
8196/* ---------------------- CAS SETTINGS ---------------------- */
8297
8398// CAS Sharpness, initial sharpen filter strength (traditional sharpening)
84- #define SHARPNESS 1.2
99+ #define SHARPNESS 0.8
85100
86101/* --- MOST OF THE OTHER SETTINGS CAN BE FOUND AT THE END --- */
87102
0 commit comments