@@ -8,53 +8,46 @@ in vec2 tex_coord;
8
8
out vec4 frag_color;
9
9
10
10
#ifdef ESSL
11
- #define CONST_ARRAY_BEGIN(t, v, n) const t v[n] = t[](
12
- #define CONST_ARRAY_END() );
11
+ const vec2 offsets[8 ] = vec2 [](
12
+ vec2 (- 1.0 , 0.0 ), vec2 ( 1.0 , 0.0 ), vec2 ( 0.0 , 1.0 ), vec2 ( 0.0 , - 1.0 ),
13
+ vec2 (- 1.0 , 1.0 ), vec2 ( 1.0 , 1.0 ), vec2 ( 1.0 , - 1.0 ), vec2 (- 1.0 , - 1.0 )
14
+ );
13
15
#else
14
- #define CONST_ARRAY_BEGIN(t, v, n) const t v[n] = {
15
- #define CONST_ARRAY_END() };
16
+ const vec2 offsets[8 ] = {
17
+ vec2 (- 1.0 , 0.0 ), vec2 ( 1.0 , 0.0 ), vec2 ( 0.0 , 1.0 ), vec2 ( 0.0 , - 1.0 ),
18
+ vec2 (- 1.0 , 1.0 ), vec2 ( 1.0 , 1.0 ), vec2 ( 1.0 , - 1.0 ), vec2 (- 1.0 , - 1.0 )
19
+ };
16
20
#endif
17
21
18
- CONST_ARRAY_BEGIN(vec2 , offsets, 8 )
19
- vec2 (- 1.0 , 0.0 ),
20
- vec2 ( 1.0 , 0.0 ),
21
- vec2 ( 0.0 , 1.0 ),
22
- vec2 ( 0.0 , - 1.0 ),
23
- vec2 (- 1.0 , 1.0 ),
24
- vec2 ( 1.0 , 1.0 ),
25
- vec2 ( 1.0 , - 1.0 ),
26
- vec2 (- 1.0 , - 1.0 )
27
- CONST_ARRAY_END()
28
-
29
22
void main() {
30
23
// Based on https://shaderbits.com/blog/uv-dilation by Ryan Brucks
31
- vec2 size = textureSize(tex, 0 ).xy;
24
+ vec2 size = vec2 ( textureSize(tex, 0 ).xy) ;
32
25
vec2 texel_size = vec2 (1.0 , 1.0 ) / size;
33
26
float min_dist = 10000000.0 ;
34
27
ivec2 coord = ivec2 (tex_coord * size);
35
28
float mask = texelFetch(texdilate, coord, 0 ).r;
36
- if (mask > 0 ) discard ;
29
+ if (mask > 0.0 ) discard ;
37
30
38
31
frag_color = texelFetch(tex, coord, 0 );
39
32
int i = 0 ;
40
- while (i < dilate_radius) {
33
+ while (i < int ( dilate_radius) ) {
41
34
i++ ;
42
35
int j = 0 ;
43
36
while (j < 8 ) {
44
- vec2 cur_uv = tex_coord + offsets[j] * texel_size * i ;
37
+ vec2 cur_uv = tex_coord + offsets[j] * texel_size * vec2 (i, i) ;
45
38
coord = ivec2 (cur_uv * size);
46
39
float offset_mask = texelFetch(texdilate, coord, 0 ).r;
47
40
vec4 offset_col = texelFetch(tex, coord, 0 );
48
41
49
- if (offset_mask != 0 ) {
42
+ if (offset_mask != 0.0 ) {
50
43
float cur_dist = length (tex_coord - cur_uv);
51
44
if (cur_dist < min_dist) {
52
- vec2 project_uv = cur_uv + offsets[j] * texel_size * i * 0.25 ;
45
+ vec2 project_uv = cur_uv + offsets[j] * texel_size * vec2 (i, i) * vec2 ( 0.25 , 0.25 ) ;
53
46
vec4 direction = textureLod(tex, project_uv, 0.0 );
54
47
min_dist = cur_dist;
55
- if (direction.x != 0 || direction.y != 0 || direction.z != 0 ) {
48
+ if (direction.x != 0.0 || direction.y != 0.0 || direction.z != 0. 0 ) {
56
49
vec4 delta = offset_col - direction;
57
- frag_color = offset_col + delta * 4 ;
50
+ frag_color = offset_col + delta * vec4 ( 4.0 , 4.0 , 4.0 , 4.0 ) ;
58
51
}
59
52
else {
60
53
frag_color = offset_col;
0 commit comments