level 9
自己写了一个shader,问题解决了
extern float scale_w;
extern float scale_h;
extern int img_w;
extern int img_h;
#ifdef VERTEX
vec4 position( mat4 transform_projection, vec4 vertex_position ) {
return transform_projection*vertex_position;
}
#endif
#ifdef PIXEL
vec4 effect( vec4 color, Image tex, vec2 texture_coords, vec2 screen_coords ) {
int count_w = int (1.0 / scale_w + 0.5);
int count_h = int (1.0 / scale_h + 0.5);
int count = 1;
vec4 color_sum = vec4(0, 0, 0, 0);
vec2 pos_per;
vec4 color_per;
for (int i = 1; i <= count_w; i++) {
for (int k = 1; k <= count_h; k++) {
pos_per = vec2((texture_coords.x * img_w + i-(count_w / 2)) / img_w, (texture_coords.y * img_h + k - (count_h / 2)) / img_h);
color_per = Texel(tex, pos_per);
if (color_per.a != 0) {
color_sum += color_per;
count++;
}
}
}
vec4 color_avg = color_sum / count;
if (count_w != 20) {
return vec4(2,2,2,2);
}else{
return color_avg;
}
}
#endif
2021年08月15日 09点08分
