diff --git a/src/renderer/gl_engine/tvgGlRenderer.cpp b/src/renderer/gl_engine/tvgGlRenderer.cpp index ec298563..685bfc15 100644 --- a/src/renderer/gl_engine/tvgGlRenderer.cpp +++ b/src/renderer/gl_engine/tvgGlRenderer.cpp @@ -98,16 +98,14 @@ void GlRenderer::initShaders() { mPrograms.reserve((int)RT_None); -#define COMMON_TOTAL_LENGTH strlen(STR_GRADIENT_FRAG_COMMON_VARIABLES) + \ - strlen(STR_GRADIENT_FRAG_COMMON_FUNCTIONS) - -#define LINEAR_TOTAL_LENGTH strlen(STR_LINEAR_GRADIENT_VARIABLES) + \ - strlen(STR_LINEAR_GRADIENT_MAIN) + \ - COMMON_TOTAL_LENGTH + 1 - -#define RADIAL_TOTAL_LENGTH strlen(STR_RADIAL_GRADIENT_VARIABLES) + \ - strlen(STR_RADIAL_GRADIENT_MAIN) + \ - COMMON_TOTAL_LENGTH + 1 +#if 1 //for optimization + #define LINEAR_TOTAL_LENGTH 2770 + #define RADIAL_TOTAL_LENGTH 5272 +#else + #define COMMON_TOTAL_LENGTH strlen(STR_GRADIENT_FRAG_COMMON_VARIABLES) + strlen(STR_GRADIENT_FRAG_COMMON_FUNCTIONS) + 1 + #define LINEAR_TOTAL_LENGTH strlen(STR_LINEAR_GRADIENT_VARIABLES) + strlen(STR_LINEAR_GRADIENT_MAIN) + COMMON_TOTAL_LENGTH + #define RADIAL_TOTAL_LENGTH strlen(STR_RADIAL_GRADIENT_VARIABLES) + strlen(STR_RADIAL_GRADIENT_MAIN) + COMMON_TOTAL_LENGTH +#endif char linearGradientFragShader[LINEAR_TOTAL_LENGTH]; snprintf(linearGradientFragShader, LINEAR_TOTAL_LENGTH, "%s%s%s%s", diff --git a/src/renderer/gl_engine/tvgGlShaderSrc.cpp b/src/renderer/gl_engine/tvgGlShaderSrc.cpp index d35d5a3f..73d5e8ae 100644 --- a/src/renderer/gl_engine/tvgGlShaderSrc.cpp +++ b/src/renderer/gl_engine/tvgGlShaderSrc.cpp @@ -74,11 +74,13 @@ const char* GRADIENT_VERT_SHADER = TVG_COMPOSE_SHADER( ); +//See: GlRenderer::initShaders() const char* STR_GRADIENT_FRAG_COMMON_VARIABLES = TVG_COMPOSE_SHADER( const int MAX_STOP_COUNT = 16; \n in vec2 vPos; \n ); +//See: GlRenderer::initShaders() const char* STR_GRADIENT_FRAG_COMMON_FUNCTIONS = TVG_COMPOSE_SHADER( float gradientStep(float edge0, float edge1, float x) \n { \n @@ -169,6 +171,7 @@ const char* STR_GRADIENT_FRAG_COMMON_FUNCTIONS = TVG_COMPOSE_SHADER( } \n ); +//See: GlRenderer::initShaders() const char* STR_LINEAR_GRADIENT_VARIABLES = TVG_COMPOSE_SHADER( layout(std140) uniform GradientInfo { \n vec4 nStops; \n @@ -179,6 +182,7 @@ const char* STR_LINEAR_GRADIENT_VARIABLES = TVG_COMPOSE_SHADER( } uGradientInfo; \n ); +//See: GlRenderer::initShaders() const char* STR_LINEAR_GRADIENT_MAIN = TVG_COMPOSE_SHADER( out vec4 FragColor; \n void main() \n @@ -194,6 +198,7 @@ const char* STR_LINEAR_GRADIENT_MAIN = TVG_COMPOSE_SHADER( } \n ); +//See: GlRenderer::initShaders() const char* STR_RADIAL_GRADIENT_VARIABLES = TVG_COMPOSE_SHADER( layout(std140) uniform GradientInfo { \n vec4 nStops; \n @@ -204,6 +209,7 @@ const char* STR_RADIAL_GRADIENT_VARIABLES = TVG_COMPOSE_SHADER( } uGradientInfo ; \n ); +//See: GlRenderer::initShaders() const char* STR_RADIAL_GRADIENT_MAIN = TVG_COMPOSE_SHADER( out vec4 FragColor; \n \n