| const std::map<OpenGLData::OpenGLAttributes, String> OpenGLData::OpenGLAttributesMap = | |
| { | |
| {OpenGLAttributes::Position, "position"} | |
| }; | |
| const std::map<OpenGLData::OpenGLUniforms, String> OpenGLData::OpenGLUniformsMap = | |
| { | |
| { OpenGLUniforms::Bounds, "bounds" }, | |
| { OpenGLUniforms::Color1, "color1" }, | |
| { OpenGLUniforms::Color2, "color2" } | |
| }; | |
| #define NEW_LINE "\n" | |
| String makeFragmentShaderHeader() | |
| { | |
| return "uniform vec4 " + OpenGLData::OpenGLUniformsMap.at(OpenGLData::OpenGLUniforms::Bounds) + ";" NEW_LINE | |
| "uniform vec4 " + OpenGLData::OpenGLUniformsMap.at(OpenGLData::OpenGLUniforms::Color1) + ";" NEW_LINE | |
| "uniform vec4 " + OpenGLData::OpenGLUniformsMap.at(OpenGLData::OpenGLUniforms::Color2) + ";" NEW_LINE; | |
| } | |
| const std::vector<std::vector<String>> FragmentShaders = | |
| { | |
| //linear shaders | |
| { | |
| //UP | |
| { | |
| // "uniform vec4 " + OpenGLData::OpenGLUniformsMap.at(OpenGLData::OpenGLUniforms::Bounds) + ";" NEW_LINE | |
| // "uniform vec4 " + OpenGLData::OpenGLUniformsMap.at(OpenGLData::OpenGLUniforms::Color1) + ";" NEW_LINE | |
| // "uniform vec4 " + OpenGLData::OpenGLUniformsMap.at(OpenGLData::OpenGLUniforms::Color2) + ";" NEW_LINE | |
| makeFragmentShaderHeader() + | |
| "void main()" NEW_LINE | |
| "{" NEW_LINE | |
| "vec2 pos = gl_FragCoord.xy / " + OpenGLData::OpenGLUniformsMap.at(OpenGLData::OpenGLUniforms::Bounds) + ".xy;" NEW_LINE | |
| "gl_FragColor = vec4(mix(" + OpenGLData::OpenGLUniformsMap.at(OpenGLData::OpenGLUniforms::Color1) + ", " + OpenGLData::OpenGLUniformsMap.at(OpenGLData::OpenGLUniforms::Color2) + ", pos.y));" NEW_LINE | |
| "}" NEW_LINE | |
| }, | |
| //DOWN | |
| { | |
| makeFragmentShaderHeader() + | |
| "void main()" NEW_LINE | |
| "{" NEW_LINE | |
| "vec2 pos = gl_FragCoord.xy / " + OpenGLData::OpenGLUniformsMap.at(OpenGLData::OpenGLUniforms::Bounds) + ".xy;" NEW_LINE | |
| "gl_FragColor = vec4(mix(" + OpenGLData::OpenGLUniformsMap.at(OpenGLData::OpenGLUniforms::Color2) + ", " + OpenGLData::OpenGLUniformsMap.at(OpenGLData::OpenGLUniforms::Color1) + ", pos.y));" NEW_LINE | |
| "}" NEW_LINE | |
| }, | |
| //LEFT | |
| { | |
| makeFragmentShaderHeader() + | |
| "void main()" NEW_LINE | |
| "{" NEW_LINE | |
| "vec2 pos = gl_FragCoord.xy / " + OpenGLData::OpenGLUniformsMap.at(OpenGLData::OpenGLUniforms::Bounds) + ".xy;" NEW_LINE | |
| "gl_FragColor = vec4(mix(" + OpenGLData::OpenGLUniformsMap.at(OpenGLData::OpenGLUniforms::Color1) + ", " + OpenGLData::OpenGLUniformsMap.at(OpenGLData::OpenGLUniforms::Color2) + ", pos.x));" NEW_LINE | |
| "}" NEW_LINE | |
| }, | |
| //RIGHT | |
| { | |
| makeFragmentShaderHeader() + | |
| "void main()" NEW_LINE | |
| "{" NEW_LINE | |
| "vec2 pos = gl_FragCoord.xy / " + OpenGLData::OpenGLUniformsMap.at(OpenGLData::OpenGLUniforms::Bounds) + ".xy;" NEW_LINE | |
| " gl_FragColor = vec4(mix(" + OpenGLData::OpenGLUniformsMap.at(OpenGLData::OpenGLUniforms::Color2) + ", " + OpenGLData::OpenGLUniformsMap.at(OpenGLData::OpenGLUniforms::Color1) + ", pos.x));" NEW_LINE | |
| "}" NEW_LINE | |
| }, | |
| }, | |
| //radial shaders | |
| { | |
| //UP from LR clockwise | |
| /* | |
| a |-------|b | |
| | | | |
| c |-------|d | |
| */ | |
| { | |
| makeFragmentShaderHeader() + | |
| "void main()" NEW_LINE | |
| "{" NEW_LINE | |
| " float x = " + OpenGLData::OpenGLUniformsMap.at(OpenGLData::OpenGLUniforms::Bounds) + ".x * 1.0/sqrt(2.0);" NEW_LINE | |
| " float y = " + OpenGLData::OpenGLUniformsMap.at(OpenGLData::OpenGLUniforms::Bounds) + ".y * 1.0/sqrt(2.0);" NEW_LINE | |
| //lower right | |
| " float alpha = distance( vec2(x,0), gl_FragCoord.xy) / distance( vec2(0,0), vec2(x,y) );" NEW_LINE | |
| " gl_FragColor = mix (color1, color2, alpha);" NEW_LINE | |
| "}" NEW_LINE | |
| }, | |
| //DOWN from UL clockwise | |
| { | |
| makeFragmentShaderHeader() + | |
| "void main()" NEW_LINE | |
| "{" NEW_LINE | |
| " float x = " + OpenGLData::OpenGLUniformsMap.at(OpenGLData::OpenGLUniforms::Bounds) + ".x * 1.0/sqrt(2.0);" NEW_LINE | |
| " float y = " + OpenGLData::OpenGLUniformsMap.at(OpenGLData::OpenGLUniforms::Bounds) + ".y * 1.0/sqrt(2.0);" NEW_LINE | |
| " float alpha = distance( vec2(0,y), gl_FragCoord.xy) / distance( vec2(0,0), vec2(x,y) );" NEW_LINE | |
| " gl_FragColor = mix (color1, color2, alpha);" NEW_LINE | |
| "}" NEW_LINE | |
| }, | |
| //LEFT from UR clockwise | |
| { | |
| makeFragmentShaderHeader() + | |
| "void main()" NEW_LINE | |
| "{" NEW_LINE | |
| " float x = " + OpenGLData::OpenGLUniformsMap.at(OpenGLData::OpenGLUniforms::Bounds) + ".x * 1.0/sqrt(2.0);" NEW_LINE | |
| " float y = " + OpenGLData::OpenGLUniformsMap.at(OpenGLData::OpenGLUniforms::Bounds) + ".y * 1.0/sqrt(2.0);" NEW_LINE | |
| " float alpha = distance( vec2(x,y), gl_FragCoord.xy) / distance( vec2(0,0), vec2(x,y) );" NEW_LINE | |
| " gl_FragColor = mix (color1, color2, alpha);" NEW_LINE | |
| "}" NEW_LINE | |
| }, | |
| //RIGHT from LL clockwise | |
| { | |
| makeFragmentShaderHeader() + | |
| "void main()" NEW_LINE | |
| "{" NEW_LINE | |
| "float x = " + OpenGLData::OpenGLUniformsMap.at(OpenGLData::OpenGLUniforms::Bounds) + ".x * 1.0/sqrt(2.0);" NEW_LINE | |
| "float y = " + OpenGLData::OpenGLUniformsMap.at(OpenGLData::OpenGLUniforms::Bounds) + ".y * 1.0/sqrt(2.0);" NEW_LINE | |
| //lower left: | |
| " float alpha = distance( vec2(0,0), gl_FragCoord.xy) / distance( vec2(0,0), vec2(x,y) );" NEW_LINE | |
| " gl_FragColor = mix (color1, color2, alpha);" NEW_LINE | |
| "}" NEW_LINE | |
| } | |
| }, | |
| }; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment