[update] Implemented a contrast posteffect.

This commit is contained in:
2019-10-16 00:00:00 +00:00
parent 05377b7472
commit 87b4d5af07
3 changed files with 32 additions and 8 deletions

View File

@@ -12,14 +12,17 @@ class PostEffect {
struct Instance {
public:
///
align(1) float raster_fineness = 600;
align(4) float raster_fineness = 600;
///
align(1) float raster_width = 0;
align(4) float raster_width = 0;
///
align(1) vec2 clip_lefttop = vec2(0, 0);
align(8) vec2 clip_lefttop = vec2(0, 0);
///
align(1) vec2 clip_rightbottom = vec2(0, 0);
align(8) vec2 clip_rightbottom = vec2(0, 0);
///
align(16) vec4 contrast = vec4(1, 1, 1, 1);
}
///
@@ -125,6 +128,8 @@ class PostEffectProgram {
vec2 clip_lefttop;
vec2 clip_rightbottom;
vec4 contrast;
} instance;
in vec2 uv_;
@@ -141,6 +146,12 @@ class PostEffectProgram {
vec2 tex_uv = (uv + vec2(1, 1)) / 2;
pixel_ = texture(fb, fb_size * tex_uv);
// contrast
pixel_.r = pow(pixel_.r, instance.contrast.r);
pixel_.g = pow(pixel_.g, instance.contrast.g);
pixel_.b = pow(pixel_.b, instance.contrast.b);
pixel_.a = pow(pixel_.a, instance.contrast.a);
// clipping
pixel_.a *=
step(-1+instance.clip_lefttop.x, uv_.x) *