From 1c244c2a008bbf9437ac3e03f67b1380e463c8d1 Mon Sep 17 00:00:00 2001 From: martinfouilleul Date: Fri, 14 Jul 2023 17:37:33 +0200 Subject: [PATCH] [win32, canvas] only sample coverage at 8x and source textures at 2x, and accumulate in a single color value per pixel --- src/glsl_shaders/common.glsl | 1 + src/glsl_shaders/raster.glsl | 51 ++++++++++++++++++++++++++---------- 2 files changed, 38 insertions(+), 14 deletions(-) diff --git a/src/glsl_shaders/common.glsl b/src/glsl_shaders/common.glsl index e0fcf1e..677718f 100644 --- a/src/glsl_shaders/common.glsl +++ b/src/glsl_shaders/common.glsl @@ -22,6 +22,7 @@ layout(std430) buffer; // MSAA #define MG_GL_MAX_SAMPLE_COUNT 8 +#define MG_GL_MAX_SRC_SAMPLE_COUNT 4 struct mg_gl_path { diff --git a/src/glsl_shaders/raster.glsl b/src/glsl_shaders/raster.glsl index 7963f05..2406159 100644 --- a/src/glsl_shaders/raster.glsl +++ b/src/glsl_shaders/raster.glsl @@ -66,13 +66,20 @@ void main() sampleCoords[0] = centerCoord; } - vec4 color[MG_GL_MAX_SAMPLE_COUNT]; + const int srcSampleCount = 2; + + vec2 imgSampleCoords[MG_GL_MAX_SRC_SAMPLE_COUNT] = { + centerCoord + vec2(-0.25, 0.25), + centerCoord + vec2(+0.25, +0.25), + centerCoord + vec2(+0.25, -0.25), + centerCoord + vec2(-0.25, +0.25)}; + + vec4 color = vec4(0); int winding[MG_GL_MAX_SAMPLE_COUNT]; for(int i=0; i