From 765f927dd00e18bcfd04d70030319f75fc3e5287 Mon Sep 17 00:00:00 2001 From: Hermet Park Date: Sat, 19 Oct 2024 14:08:00 +0900 Subject: [PATCH] gl_engine: code clean up ensure consistency in coding style. --- src/renderer/gl_engine/tvgGlShaderSrc.cpp | 697 +++++++++++----------- 1 file changed, 338 insertions(+), 359 deletions(-) diff --git a/src/renderer/gl_engine/tvgGlShaderSrc.cpp b/src/renderer/gl_engine/tvgGlShaderSrc.cpp index a0b684b6..ef386818 100644 --- a/src/renderer/gl_engine/tvgGlShaderSrc.cpp +++ b/src/renderer/gl_engine/tvgGlShaderSrc.cpp @@ -31,208 +31,193 @@ const char* COLOR_VERT_SHADER = TVG_COMPOSE_SHADER( layout(std140) uniform Matrix { \n mat4 transform; \n } uMatrix; \n + \n void main() \n { \n vec4 pos = uMatrix.transform * vec4(aLocation, 0.0, 1.0); \n pos.z = uDepth; \n gl_Position = pos; \n - }); + } \n +); const char* COLOR_FRAG_SHADER = TVG_COMPOSE_SHADER( layout(std140) uniform ColorInfo { \n vec4 solidColor; \n } uColorInfo; \n out vec4 FragColor; \n + \n void main() \n { \n vec4 uColor = uColorInfo.solidColor; \n FragColor = vec4(uColor.rgb * uColor.a, uColor.a); \n - }); + } \n +); const char* GRADIENT_VERT_SHADER = TVG_COMPOSE_SHADER( -uniform float uDepth; \n -layout(location = 0) in vec2 aLocation; \n -out vec2 vPos; \n -layout(std140) uniform Matrix { \n - mat4 transform; \n -} uMatrix; \n -layout(std140) uniform InvMatrix { \n - mat4 transform; \n -} uInvMatrix; \n - \n -void main() \n -{ \n - vec4 glPos = uMatrix.transform * vec4(aLocation, 0.0, 1.0); \n - glPos.z = uDepth; \n - gl_Position = glPos; \n - vec4 pos = uInvMatrix.transform * vec4(aLocation, 0.0, 1.0); \n - vPos = pos.xy / pos.w; \n -}); + uniform float uDepth; \n + layout(location = 0) in vec2 aLocation; \n + out vec2 vPos; \n + layout(std140) uniform Matrix { \n + mat4 transform; \n + } uMatrix; \n + layout(std140) uniform InvMatrix { \n + mat4 transform; \n + } uInvMatrix; \n + \n + void main() \n + { \n + vec4 glPos = uMatrix.transform * vec4(aLocation, 0.0, 1.0); \n + glPos.z = uDepth; \n + gl_Position = glPos; \n + vec4 pos = uInvMatrix.transform * vec4(aLocation, 0.0, 1.0); \n + vPos = pos.xy / pos.w; \n + } \n +); std::string STR_GRADIENT_FRAG_COMMON_VARIABLES = TVG_COMPOSE_SHADER( -const int MAX_STOP_COUNT = 16; \n -in vec2 vPos; \n + const int MAX_STOP_COUNT = 16; \n + in vec2 vPos; \n ); std::string STR_GRADIENT_FRAG_COMMON_FUNCTIONS = TVG_COMPOSE_SHADER( -float gradientStep(float edge0, float edge1, float x) \n -{ \n - // linear \n - x = clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0); \n - return x; \n -} \n - \n -float gradientStop(int index) \n -{ \n - if (index >= MAX_STOP_COUNT) index = MAX_STOP_COUNT - 1; \n - int i = index / 4; \n - int j = index % 4; \n - return uGradientInfo.stopPoints[i][j]; \n -} \n - \n -float gradientWrap(float d) \n -{ \n - int spread = int(uGradientInfo.nStops[2]); \n - \n - if (spread == 0) { /* pad */ \n - return clamp(d, 0.0, 1.0); \n - } \n - \n - if (spread == 1) { /* Reflect */ \n - float n = mod(d, 2.0); \n - if (n > 1.0) \n - { \n - n = 2.0 - n; \n - } \n - return n; \n - } \n - \n - if (spread == 2) { /* Repeat */ \n - float n = mod(d, 1.0); \n - if (n < 0.0) \n - { \n - n += 1.0 + n; \n - } \n - return n; \n - } \n -} \n - \n -vec4 gradient(float t, float d, float l) \n -{ \n - float dist = d * 2.0 / l; \n - vec4 col = vec4(0.0); \n - int i = 0; \n - int count = int(uGradientInfo.nStops[0]); \n - if (t <= gradientStop(0)) \n - { \n - col = uGradientInfo.stopColors[0]; \n - } \n - else if (t >= gradientStop(count - 1)) \n - { \n - col = uGradientInfo.stopColors[count - 1]; \n - if (int(uGradientInfo.nStops[2]) == 2 && (1.0 - t) < dist) { \n - float dd = (1.0 - t) / dist; \n - float alpha = dd; \n - col *= alpha; \n - col += uGradientInfo.stopColors[0] * (1. - alpha);\n - } \n - } \n - else \n - { \n - for (i = 0; i < count - 1; ++i) \n - { \n - float stopi = gradientStop(i); \n - float stopi1 = gradientStop(i + 1); \n - if (t >= stopi && t <= stopi1) \n - { \n - col = (uGradientInfo.stopColors[i] * (1. - gradientStep(stopi, stopi1, t))); \n - col += (uGradientInfo.stopColors[i + 1] * gradientStep(stopi, stopi1, t)); \n - if (int(uGradientInfo.nStops[2]) == 2 && abs(d) > dist) { \n - if (i == 0 && (t - stopi) < dist) { \n - float dd = (t - stopi) / dist; \n - float alpha = dd; \n - col *= alpha; \n - vec4 nc = uGradientInfo.stopColors[0] * (1.0 - (t - stopi)); \n - nc += uGradientInfo.stopColors[count - 1] * (t - stopi); \n - col += nc * (1.0 - alpha); \n - } else if (i == count - 2 && (1.0 - t) < dist) { \n - float dd = (1.0 - t) / dist; \n - float alpha = dd; \n - col *= alpha; \n - col += (uGradientInfo.stopColors[0]) * (1.0 - alpha); \n - } \n - } \n - break; \n - } \n - } \n - } \n - \n - return col; \n -} \n - \n -vec3 ScreenSpaceDither(vec2 vScreenPos) \n -{ \n - vec3 vDither = vec3(dot(vec2(171.0, 231.0), vScreenPos.xy)); \n - vDither.rgb = fract(vDither.rgb / vec3(103.0, 71.0, 97.0)); \n - return vDither.rgb / 255.0; \n -}); + float gradientStep(float edge0, float edge1, float x) \n + { \n + // linear \n + x = clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0); \n + return x; \n + } \n + \n + float gradientStop(int index) \n + { \n + if (index >= MAX_STOP_COUNT) index = MAX_STOP_COUNT - 1; \n + int i = index / 4; \n + int j = index % 4; \n + return uGradientInfo.stopPoints[i][j]; \n + } \n + \n + float gradientWrap(float d) \n + { \n + int spread = int(uGradientInfo.nStops[2]); \n + if (spread == 0) return clamp(d, 0.0, 1.0); \n + \n + if (spread == 1) { /* Reflect */ \n + float n = mod(d, 2.0); \n + if (n > 1.0) { \n + n = 2.0 - n; \n + } \n + return n; \n + } \n + if (spread == 2) { /* Repeat */ \n + float n = mod(d, 1.0); \n + if (n < 0.0) { \n + n += 1.0 + n; \n + } \n + return n; \n + } \n + } \n + \n + vec4 gradient(float t, float d, float l) \n + { \n + float dist = d * 2.0 / l; \n + vec4 col = vec4(0.0); \n + int i = 0; \n + int count = int(uGradientInfo.nStops[0]); \n + if (t <= gradientStop(0)) { \n + col = uGradientInfo.stopColors[0]; \n + } else if (t >= gradientStop(count - 1)) { \n + col = uGradientInfo.stopColors[count - 1]; \n + if (int(uGradientInfo.nStops[2]) == 2 && (1.0 - t) < dist) { \n + float dd = (1.0 - t) / dist; \n + float alpha = dd; \n + col *= alpha; \n + col += uGradientInfo.stopColors[0] * (1. - alpha); \n + } \n + } else { \n + for (i = 0; i < count - 1; ++i) { \n + float stopi = gradientStop(i); \n + float stopi1 = gradientStop(i + 1); \n + if (t >= stopi && t <= stopi1) { \n + col = (uGradientInfo.stopColors[i] * (1. - gradientStep(stopi, stopi1, t))); \n + col += (uGradientInfo.stopColors[i + 1] * gradientStep(stopi, stopi1, t)); \n + if (int(uGradientInfo.nStops[2]) == 2 && abs(d) > dist) { \n + if (i == 0 && (t - stopi) < dist) { \n + float dd = (t - stopi) / dist; \n + float alpha = dd; \n + col *= alpha; \n + vec4 nc = uGradientInfo.stopColors[0] * (1.0 - (t - stopi)); \n + nc += uGradientInfo.stopColors[count - 1] * (t - stopi); \n + col += nc * (1.0 - alpha); \n + } else if (i == count - 2 && (1.0 - t) < dist) { \n + float dd = (1.0 - t) / dist; \n + float alpha = dd; \n + col *= alpha; \n + col += (uGradientInfo.stopColors[0]) * (1.0 - alpha); \n + } \n + } \n + break; \n + } \n + } \n + } \n + return col; \n + } \n + \n + vec3 ScreenSpaceDither(vec2 vScreenPos) \n + { \n + vec3 vDither = vec3(dot(vec2(171.0, 231.0), vScreenPos.xy)); \n + vDither.rgb = fract(vDither.rgb / vec3(103.0, 71.0, 97.0)); \n + return vDither.rgb / 255.0; \n + } \n +); std::string STR_LINEAR_GRADIENT_VARIABLES = TVG_COMPOSE_SHADER( -layout(std140) uniform GradientInfo { \n - vec4 nStops; \n - vec2 gradStartPos; \n - vec2 gradEndPos; \n - vec4 stopPoints[MAX_STOP_COUNT / 4]; \n - vec4 stopColors[MAX_STOP_COUNT]; \n -} uGradientInfo ; \n + layout(std140) uniform GradientInfo { \n + vec4 nStops; \n + vec2 gradStartPos; \n + vec2 gradEndPos; \n + vec4 stopPoints[MAX_STOP_COUNT / 4]; \n + vec4 stopColors[MAX_STOP_COUNT]; \n + } uGradientInfo; \n ); std::string STR_LINEAR_GRADIENT_MAIN = TVG_COMPOSE_SHADER( -out vec4 FragColor; \n -void main() \n -{ \n - vec2 pos = vPos; \n - vec2 st = uGradientInfo.gradStartPos; \n - vec2 ed = uGradientInfo.gradEndPos; \n - \n - vec2 ba = ed - st; \n - \n - float d = dot(pos - st, ba) / dot(ba, ba); \n - \n - float t = gradientWrap(d); \n - \n - vec4 color = gradient(t, d, length(pos - st)); \n - \n - FragColor = vec4(color.rgb * color.a, color.a); \n -}); + out vec4 FragColor; \n + void main() \n + { \n + vec2 pos = vPos; \n + vec2 st = uGradientInfo.gradStartPos; \n + vec2 ed = uGradientInfo.gradEndPos; \n + vec2 ba = ed - st; \n + float d = dot(pos - st, ba) / dot(ba, ba); \n + float t = gradientWrap(d); \n + vec4 color = gradient(t, d, length(pos - st)); \n + FragColor = vec4(color.rgb * color.a, color.a); \n + } \n +); std::string STR_RADIAL_GRADIENT_VARIABLES = TVG_COMPOSE_SHADER( -layout(std140) uniform GradientInfo { \n - vec4 nStops; \n - vec2 centerPos; \n - vec2 radius; \n - vec4 stopPoints[MAX_STOP_COUNT / 4]; \n - vec4 stopColors[MAX_STOP_COUNT]; \n -} uGradientInfo ; \n + layout(std140) uniform GradientInfo { \n + vec4 nStops; \n + vec2 centerPos; \n + vec2 radius; \n + vec4 stopPoints[MAX_STOP_COUNT / 4]; \n + vec4 stopColors[MAX_STOP_COUNT]; \n + } uGradientInfo ; \n ); std::string STR_RADIAL_GRADIENT_MAIN = TVG_COMPOSE_SHADER( -out vec4 FragColor; \n -void main() \n -{ \n - vec2 pos = vPos; \n - \n - float ba = uGradientInfo.radius.x; \n - float d = distance(uGradientInfo.centerPos, pos); \n - float t = (d / ba); \n - \n - t = gradientWrap(t); \n - \n - vec4 color = gradient(t, (d / ba), d); \n - \n - FragColor = vec4(color.rgb * color.a, color.a); \n -}); + out vec4 FragColor; \n + void main() \n + { \n + vec2 pos = vPos; \n + float ba = uGradientInfo.radius.x; \n + float d = distance(uGradientInfo.centerPos, pos); \n + float t = (d / ba); \n + t = gradientWrap(t); \n + vec4 color = gradient(t, (d / ba), d); \n + FragColor = vec4(color.rgb * color.a, color.a); \n + } +); std::string STR_LINEAR_GRADIENT_FRAG_SHADER = STR_GRADIENT_FRAG_COMMON_VARIABLES + @@ -258,10 +243,10 @@ const char* IMAGE_VERT_SHADER = TVG_COMPOSE_SHADER( layout (std140) uniform Matrix { \n mat4 transform; \n } uMatrix; \n - \n out vec2 vUV; \n \n - void main() { \n + void main() \n + { \n vUV = aUV; \n vec4 pos = uMatrix.transform * vec4(aLocation, 0.0, 1.0); \n pos.z = uDepth; \n @@ -276,12 +261,12 @@ const char* IMAGE_FRAG_SHADER = TVG_COMPOSE_SHADER( int opacity; \n int dummy; \n } uColorInfo; \n - \n uniform sampler2D uTexture; \n in vec2 vUV; \n out vec4 FragColor; \n \n - void main() { \n + void main() \n + { \n vec2 uv = vUV; \n if (uColorInfo.flipY == 1) { uv.y = 1.0 - uv.y; } \n vec4 color = texture(uTexture, uv); \n @@ -295,211 +280,187 @@ const char* IMAGE_FRAG_SHADER = TVG_COMPOSE_SHADER( } else if (uColorInfo.format == 3) { /* FMT_ARGB8888S */ \n result = vec4(color.bgr * color.a, color.a); \n } \n - float opacity = float(uColorInfo.opacity) / 255.0; \n - FragColor = result * opacity; \n + FragColor = result * float(uColorInfo.opacity) / 255.0; \n } \n ); const char* MASK_VERT_SHADER = TVG_COMPOSE_SHADER( -uniform float uDepth; \n -layout(location = 0) in vec2 aLocation; \n -layout(location = 1) in vec2 aUV; \n - \n -out vec2 vUV; \n - \n -void main() { \n - vUV = aUV; \n - \n - gl_Position = vec4(aLocation, uDepth, 1.0); \n -} \n + uniform float uDepth; \n + layout(location = 0) in vec2 aLocation; \n + layout(location = 1) in vec2 aUV; \n + out vec2 vUV; \n + \n + void main() \n + { \n + vUV = aUV; \n + gl_Position = vec4(aLocation, uDepth, 1.0); \n + } \n ); const char* MASK_ALPHA_FRAG_SHADER = TVG_COMPOSE_SHADER( -uniform sampler2D uSrcTexture; \n -uniform sampler2D uMaskTexture; \n - \n -in vec2 vUV; \n - \n -out vec4 FragColor; \n - \n -void main() { \n - vec4 srcColor = texture(uSrcTexture, vUV); \n - vec4 maskColor = texture(uMaskTexture, vUV); \n - \n - FragColor = srcColor * maskColor.a; \n -} \n + uniform sampler2D uSrcTexture; \n + uniform sampler2D uMaskTexture; \n + in vec2 vUV; \n + out vec4 FragColor; \n + \n + void main() \n + { \n + vec4 srcColor = texture(uSrcTexture, vUV); \n + vec4 maskColor = texture(uMaskTexture, vUV); \n + FragColor = srcColor * maskColor.a; \n + } \n ); const char* MASK_INV_ALPHA_FRAG_SHADER = TVG_COMPOSE_SHADER( -uniform sampler2D uSrcTexture; \n -uniform sampler2D uMaskTexture; \n - \n -in vec2 vUV; \n - \n -out vec4 FragColor; \n - \n -void main() { \n - vec4 srcColor = texture(uSrcTexture, vUV); \n - vec4 maskColor = texture(uMaskTexture, vUV); \n - \n - FragColor = srcColor *(1.0 - maskColor.a); \n -} \n + uniform sampler2D uSrcTexture; \n + uniform sampler2D uMaskTexture; \n + in vec2 vUV; \n + out vec4 FragColor; \n + \n + void main() \n + { \n + vec4 srcColor = texture(uSrcTexture, vUV); \n + vec4 maskColor = texture(uMaskTexture, vUV); \n + FragColor = srcColor *(1.0 - maskColor.a); \n + } \n ); const char* MASK_LUMA_FRAG_SHADER = TVG_COMPOSE_SHADER( -uniform sampler2D uSrcTexture; \n -uniform sampler2D uMaskTexture; \n - \n -in vec2 vUV; \n - \n -out vec4 FragColor; \n - \n -void main() { \n - vec4 srcColor = texture(uSrcTexture, vUV); \n - vec4 maskColor = texture(uMaskTexture, vUV); \n - \n - if (maskColor.a > 0.000001) { \n - maskColor = vec4(maskColor.rgb / maskColor.a, maskColor.a); \n - } \n - \n - FragColor = \n - srcColor * (0.299 * maskColor.r + 0.587 * maskColor.g + 0.114 * maskColor.b) * maskColor.a; \n -} \n + uniform sampler2D uSrcTexture; \n + uniform sampler2D uMaskTexture; \n + in vec2 vUV; \n + out vec4 FragColor; \n + \n + void main() + { \n + vec4 srcColor = texture(uSrcTexture, vUV); \n + vec4 maskColor = texture(uMaskTexture, vUV); \n + \n + if (maskColor.a > 0.000001) { \n + maskColor = vec4(maskColor.rgb / maskColor.a, maskColor.a); \n + } \n + \n + FragColor = srcColor * (0.299 * maskColor.r + 0.587 * maskColor.g + 0.114 * maskColor.b) * maskColor.a; \n + } \n ); const char* MASK_INV_LUMA_FRAG_SHADER = TVG_COMPOSE_SHADER( -uniform sampler2D uSrcTexture; \n -uniform sampler2D uMaskTexture; \n - \n -in vec2 vUV; \n - \n -out vec4 FragColor; \n - \n -void main() { \n - vec4 srcColor = texture(uSrcTexture, vUV); \n - vec4 maskColor = texture(uMaskTexture, vUV); \n - \n - float luma = (0.299 * maskColor.r + 0.587 * maskColor.g + 0.114 * maskColor.b); \n - FragColor = srcColor * (1.0 - luma); \n -} \n + uniform sampler2D uSrcTexture; \n + uniform sampler2D uMaskTexture; \n + in vec2 vUV; \n + out vec4 FragColor; \n + \n + void main() \n + { \n + vec4 srcColor = texture(uSrcTexture, vUV); \n + vec4 maskColor = texture(uMaskTexture, vUV); \n + float luma = (0.299 * maskColor.r + 0.587 * maskColor.g + 0.114 * maskColor.b); \n + FragColor = srcColor * (1.0 - luma); \n + } \n ); const char* MASK_ADD_FRAG_SHADER = TVG_COMPOSE_SHADER( -uniform sampler2D uSrcTexture; \n -uniform sampler2D uMaskTexture; \n - \n -in vec2 vUV; \n - \n -out vec4 FragColor; \n - \n -void main() { \n - vec4 srcColor = texture(uSrcTexture, vUV); \n - vec4 maskColor = texture(uMaskTexture, vUV); \n - \n - vec4 color = srcColor + maskColor * (1.0 - srcColor.a); \n - \n - FragColor = min(color, vec4(1.0, 1.0, 1.0, 1.0)) ; \n -} \n + uniform sampler2D uSrcTexture; \n + uniform sampler2D uMaskTexture; \n + in vec2 vUV; \n + out vec4 FragColor; \n + \n + void main() \n + { \n + vec4 srcColor = texture(uSrcTexture, vUV); \n + vec4 maskColor = texture(uMaskTexture, vUV); \n + vec4 color = srcColor + maskColor * (1.0 - srcColor.a); \n + FragColor = min(color, vec4(1.0, 1.0, 1.0, 1.0)) ; \n + } \n ); const char* MASK_SUB_FRAG_SHADER = TVG_COMPOSE_SHADER( -uniform sampler2D uSrcTexture; \n -uniform sampler2D uMaskTexture; \n - \n -in vec2 vUV; \n - \n -out vec4 FragColor; \n - \n -void main() { \n - vec4 srcColor = texture(uSrcTexture, vUV); \n - vec4 maskColor = texture(uMaskTexture, vUV); \n - float a = srcColor.a - maskColor.a; \n - \n - if (a < 0.0 || srcColor.a == 0.0) { \n - FragColor = vec4(0.0, 0.0, 0.0, 0.0); \n - } else { \n - vec3 srcRgb = srcColor.rgb / srcColor.a; \n - FragColor = vec4(srcRgb * a, a); \n - } \n -} \n + uniform sampler2D uSrcTexture; \n + uniform sampler2D uMaskTexture; \n + in vec2 vUV; \n + out vec4 FragColor; \n + \n + void main() \n + { \n + vec4 srcColor = texture(uSrcTexture, vUV); \n + vec4 maskColor = texture(uMaskTexture, vUV); \n + float a = srcColor.a - maskColor.a; \n + \n + if (a < 0.0 || srcColor.a == 0.0) { \n + FragColor = vec4(0.0, 0.0, 0.0, 0.0); \n + } else { \n + vec3 srcRgb = srcColor.rgb / srcColor.a; \n + FragColor = vec4(srcRgb * a, a); \n + } \n + } \n ); const char* MASK_INTERSECT_FRAG_SHADER = TVG_COMPOSE_SHADER( -uniform sampler2D uSrcTexture; \n -uniform sampler2D uMaskTexture; \n - \n -in vec2 vUV; \n - \n -out vec4 FragColor; \n - \n -void main() { \n - vec4 srcColor = texture(uSrcTexture, vUV); \n - vec4 maskColor = texture(uMaskTexture, vUV); \n - \n - \n - FragColor = maskColor * srcColor.a; \n -} \n + uniform sampler2D uSrcTexture; \n + uniform sampler2D uMaskTexture; \n + in vec2 vUV; \n + out vec4 FragColor; \n + \n + void main() \n + { \n + vec4 srcColor = texture(uSrcTexture, vUV); \n + vec4 maskColor = texture(uMaskTexture, vUV); \n + FragColor = maskColor * srcColor.a; \n + } \n ); const char* MASK_DIFF_FRAG_SHADER = TVG_COMPOSE_SHADER( -uniform sampler2D uSrcTexture; \n -uniform sampler2D uMaskTexture; \n - \n -in vec2 vUV; \n - \n -out vec4 FragColor; \n - \n -void main() { \n - vec4 srcColor = texture(uSrcTexture, vUV); \n - vec4 maskColor = texture(uMaskTexture, vUV); \n - \n - float da = srcColor.a - maskColor.a; \n - \n - if (da == 0.0) { \n - FragColor = vec4(0.0, 0.0, 0.0, 0.0); \n - } else if (da > 0.0) { \n - FragColor = srcColor * da; \n - } else { \n - FragColor = maskColor * (-da); \n - } \n -} \n + uniform sampler2D uSrcTexture; \n + uniform sampler2D uMaskTexture; \n + in vec2 vUV; \n + out vec4 FragColor; \n + \n + void main() \n + { \n + vec4 srcColor = texture(uSrcTexture, vUV); \n + vec4 maskColor = texture(uMaskTexture, vUV); \n + float da = srcColor.a - maskColor.a; \n + if (da == 0.0) { \n + FragColor = vec4(0.0, 0.0, 0.0, 0.0); \n + } else if (da > 0.0) { \n + FragColor = srcColor * da; \n + } else { \n + FragColor = maskColor * (-da); \n + } \n + } \n ); const char* MASK_DARKEN_FRAG_SHADER = TVG_COMPOSE_SHADER( -uniform sampler2D uSrcTexture; \n -uniform sampler2D uMaskTexture; \n - \n -in vec2 vUV; \n - \n -out vec4 FragColor; \n - \n -void main() { \n - vec4 srcColor = texture(uSrcTexture, vUV); \n - vec4 maskColor = texture(uMaskTexture, vUV); \n - if (srcColor.a > 0.0) srcColor.rgb /= srcColor.a; \n - float alpha = min(srcColor.a, maskColor.a); \n - \n - FragColor = vec4(srcColor.rgb * alpha, alpha); \n -} \n + uniform sampler2D uSrcTexture; \n + uniform sampler2D uMaskTexture; \n + in vec2 vUV; \n + out vec4 FragColor; \n + \n + void main() \n + { \n + vec4 srcColor = texture(uSrcTexture, vUV); \n + vec4 maskColor = texture(uMaskTexture, vUV); \n + if (srcColor.a > 0.0) srcColor.rgb /= srcColor.a; \n + float alpha = min(srcColor.a, maskColor.a); \n + FragColor = vec4(srcColor.rgb * alpha, alpha); \n + } \n ); const char* MASK_LIGHTEN_FRAG_SHADER = TVG_COMPOSE_SHADER( -uniform sampler2D uSrcTexture; \n -uniform sampler2D uMaskTexture; \n - \n -in vec2 vUV; \n - \n -out vec4 FragColor; \n - \n -void main() { \n - vec4 srcColor = texture(uSrcTexture, vUV); \n - vec4 maskColor = texture(uMaskTexture, vUV); \n - if (srcColor.a > 0.0) srcColor.rgb /= srcColor.a; \n - float alpha = max(srcColor.a, maskColor.a); \n - \n - FragColor = vec4(srcColor.rgb * alpha, alpha); \n -} \n + uniform sampler2D uSrcTexture; \n + uniform sampler2D uMaskTexture; \n + in vec2 vUV; \n + out vec4 FragColor; \n + \n + void main() \n + { \n + vec4 srcColor = texture(uSrcTexture, vUV); \n + vec4 maskColor = texture(uMaskTexture, vUV); \n + if (srcColor.a > 0.0) srcColor.rgb /= srcColor.a; \n + float alpha = max(srcColor.a, maskColor.a); \n + FragColor = vec4(srcColor.rgb * alpha, alpha); \n + } \n ); const char* STENCIL_VERT_SHADER = TVG_COMPOSE_SHADER( @@ -508,6 +469,7 @@ const char* STENCIL_VERT_SHADER = TVG_COMPOSE_SHADER( layout(std140) uniform Matrix { \n mat4 transform; \n } uMatrix; \n + \n void main() \n { \n vec4 pos = uMatrix.transform * vec4(aLocation, 0.0, 1.0); \n @@ -517,14 +479,20 @@ const char* STENCIL_VERT_SHADER = TVG_COMPOSE_SHADER( const char* STENCIL_FRAG_SHADER = TVG_COMPOSE_SHADER( out vec4 FragColor; \n - void main() { FragColor = vec4(0.0); } \n + \n + void main() \n + { \n + FragColor = vec4(0.0); \n + } \n ); const char* BLIT_VERT_SHADER = TVG_COMPOSE_SHADER( layout(location = 0) in vec2 aLocation; \n layout(location = 1) in vec2 aUV; \n out vec2 vUV; \n - void main() { \n + \n + void main() \n + { \n vUV = aUV; \n gl_Position = vec4(aLocation, 0.0, 1.0); \n } @@ -534,7 +502,9 @@ const char* BLIT_FRAG_SHADER = TVG_COMPOSE_SHADER( uniform sampler2D uSrcTexture; \n in vec2 vUV; \n out vec4 FragColor; \n - void main() { \n + \n + void main() \n + { \n FragColor = texture(uSrcTexture, vUV); \n } ); @@ -548,7 +518,8 @@ const char* BLIT_FRAG_SHADER = TVG_COMPOSE_SHADER( )" const char* MULTIPLY_BLEND_FRAG = COMPLEX_BLEND_HEADER R"( - void main() { + void main() + { vec4 srcColor = texture(uSrcTexture, vUV); vec4 dstColor = texture(uDstTexture, vUV); FragColor = srcColor * dstColor; @@ -556,13 +527,15 @@ const char* MULTIPLY_BLEND_FRAG = COMPLEX_BLEND_HEADER R"( )"; #define SCREEN_BLEND_FUNC R"( \ - vec4 screenBlend(vec4 srcColor, vec4 dstColor) { \ + vec4 screenBlend(vec4 srcColor, vec4 dstColor) \ + { \ return dstColor + srcColor - (dstColor * srcColor); \ } \ )" #define HARD_LIGHT_BLEND_FUNC R"( \ - vec4 hardLightBlend(vec4 srcColor, vec4 dstColor) { \ + vec4 hardLightBlend(vec4 srcColor, vec4 dstColor) \ + { \ return vec4(srcColor.r < 0.5 ? 2.0 * srcColor.r * dstColor.r : 1.0 - 2.0 * (1.0 - srcColor.r) * (1.0 - dstColor.r), \ srcColor.g < 0.5 ? 2.0 * srcColor.g * dstColor.g : 1.0 - 2.0 * (1.0 - srcColor.g) * (1.0 - dstColor.g), \ srcColor.b < 0.5 ? 2.0 * srcColor.b * dstColor.b : 1.0 - 2.0 * (1.0 - srcColor.b) * (1.0 - dstColor.b), \ @@ -571,14 +544,16 @@ const char* MULTIPLY_BLEND_FRAG = COMPLEX_BLEND_HEADER R"( )" #define SOFT_LIGHT_BLEND_FUNC R"( \ - float softLightD(float v) { \ + float softLightD(float v) \ + { \ if (v <= 0.25) return ((16.0 * v - 12.0) * v + 4.0) * v; \ else return sqrt(v); \ } \ )" const char* SCREEN_BLEND_FRAG = COMPLEX_BLEND_HEADER SCREEN_BLEND_FUNC R"( - void main() { + void main() + { vec4 srcColor = texture(uSrcTexture, vUV); vec4 dstColor = texture(uDstTexture, vUV); FragColor = screenBlend(srcColor, dstColor); @@ -586,7 +561,8 @@ const char* SCREEN_BLEND_FRAG = COMPLEX_BLEND_HEADER SCREEN_BLEND_FUNC R"( )"; const char* OVERLAY_BLEND_FRAG = COMPLEX_BLEND_HEADER HARD_LIGHT_BLEND_FUNC R"( - void main() { + void main() + { vec4 srcColor = texture(uSrcTexture, vUV); vec4 dstColor = texture(uDstTexture, vUV); FragColor = hardLightBlend(dstColor, srcColor); @@ -597,7 +573,6 @@ const char* COLOR_DODGE_BLEND_FRAG = COMPLEX_BLEND_HEADER R"( void main() { vec4 srcColor = texture(uSrcTexture, vUV); vec4 dstColor = texture(uDstTexture, vUV); - float opacity = srcColor.a; srcColor *= 255.0; @@ -614,10 +589,10 @@ const char* COLOR_DODGE_BLEND_FRAG = COMPLEX_BLEND_HEADER R"( )"; const char* COLOR_BURN_BLEND_FRAG = COMPLEX_BLEND_HEADER R"( - void main() { + void main() + { vec4 srcColor = texture(uSrcTexture, vUV); vec4 dstColor = texture(uDstTexture, vUV); - float opacity = srcColor.a; if (srcColor.a > 0.0) srcColor.rgb /= srcColor.a; @@ -635,7 +610,8 @@ const char* COLOR_BURN_BLEND_FRAG = COMPLEX_BLEND_HEADER R"( )"; const char* HARD_LIGHT_BLEND_FRAG = COMPLEX_BLEND_HEADER HARD_LIGHT_BLEND_FUNC R"( - void main() { + void main() + { vec4 srcColor = texture(uSrcTexture, vUV); vec4 dstColor = texture(uDstTexture, vUV); FragColor = hardLightBlend(srcColor, dstColor); @@ -643,7 +619,8 @@ const char* HARD_LIGHT_BLEND_FRAG = COMPLEX_BLEND_HEADER HARD_LIGHT_BLEND_FUNC R )"; const char* SOFT_LIGHT_BLEND_FRAG = COMPLEX_BLEND_HEADER SOFT_LIGHT_BLEND_FUNC R"( - void main() { + void main() + { vec4 srcColor = texture(uSrcTexture, vUV); vec4 dstColor = texture(uDstTexture, vUV); @@ -657,7 +634,8 @@ const char* SOFT_LIGHT_BLEND_FRAG = COMPLEX_BLEND_HEADER SOFT_LIGHT_BLEND_FUNC R )"; const char* DIFFERENCE_BLEND_FRAG = COMPLEX_BLEND_HEADER R"( - void main() { + void main() + { vec4 srcColor = texture(uSrcTexture, vUV); vec4 dstColor = texture(uDstTexture, vUV); @@ -666,7 +644,8 @@ const char* DIFFERENCE_BLEND_FRAG = COMPLEX_BLEND_HEADER R"( )"; const char* EXCLUSION_BLEND_FRAG = COMPLEX_BLEND_HEADER R"( - void main() { + void main() + { vec4 srcColor = texture(uSrcTexture, vUV); vec4 dstColor = texture(uDstTexture, vUV);