diff options
author | Zolnai Tamás <tamas.zolnai@collabora.com> | 2014-03-13 14:22:59 +0100 |
---|---|---|
committer | Zolnai Tamás <tamas.zolnai@collabora.com> | 2014-03-14 19:59:21 +0100 |
commit | 04b70c682e2cdc52b144961a83d05fd203de6884 (patch) | |
tree | 7a88b6307b0d229575accdedebb5ee6a6e002ff0 | |
parent | 84f4de3b65cd0f861e80c69b773004f28f9f8d9f (diff) |
Move OpenGLRender to vcl
Change-Id: I6383ae3f94fc18aec92596b9d857d3fde5869dd6
-rw-r--r-- | Repository.mk | 1 | ||||
-rw-r--r-- | chart2/Library_chartopengl.mk | 2 | ||||
-rw-r--r-- | chart2/Module_chart2.mk | 1 | ||||
-rw-r--r-- | chart2/source/view/inc/DummyXShape.hxx | 2 | ||||
-rw-r--r-- | include/sal/log-areas.dox | 1 | ||||
-rwxr-xr-x | include/vcl/OpenGLRender.hxx (renamed from chart2/source/view/main/OpenGLRender.hxx) | 25 | ||||
-rw-r--r-- | vcl/Library_vclopengl.mk | 59 | ||||
-rw-r--r-- | vcl/Module_vcl.mk | 4 | ||||
-rw-r--r-- | vcl/Package_opengl.mk (renamed from chart2/Package_opengl.mk) | 4 | ||||
-rwxr-xr-x | vcl/source/opengl/OpenGLRender.cxx (renamed from chart2/source/view/main/OpenGLRender.cxx) | 44 | ||||
-rw-r--r-- | vcl/source/opengl/shaders/backgroundFragmentShader.glsl (renamed from chart2/opengl/backgroundFragmentShader.glsl) | 0 | ||||
-rw-r--r-- | vcl/source/opengl/shaders/backgroundVertexShader.glsl (renamed from chart2/opengl/backgroundVertexShader.glsl) | 0 | ||||
-rw-r--r-- | vcl/source/opengl/shaders/commonFragmentShader.glsl (renamed from chart2/opengl/commonFragmentShader.glsl) | 0 | ||||
-rw-r--r-- | vcl/source/opengl/shaders/commonVertexShader.glsl (renamed from chart2/opengl/commonVertexShader.glsl) | 0 | ||||
-rw-r--r-- | vcl/source/opengl/shaders/debugFragmentShader.glsl (renamed from chart2/opengl/debugFragmentShader.glsl) | 0 | ||||
-rw-r--r-- | vcl/source/opengl/shaders/debugVertexShader.glsl (renamed from chart2/opengl/debugVertexShader.glsl) | 0 | ||||
-rw-r--r-- | vcl/source/opengl/shaders/symbolFragmentShader.glsl (renamed from chart2/opengl/symbolFragmentShader.glsl) | 0 | ||||
-rw-r--r-- | vcl/source/opengl/shaders/symbolVertexShader.glsl (renamed from chart2/opengl/symbolVertexShader.glsl) | 0 | ||||
-rw-r--r-- | vcl/source/opengl/shaders/textFragmentShader.glsl (renamed from chart2/opengl/textFragmentShader.glsl) | 0 | ||||
-rw-r--r-- | vcl/source/opengl/shaders/textVertexShader.glsl (renamed from chart2/opengl/textVertexShader.glsl) | 0 |
20 files changed, 106 insertions, 37 deletions
diff --git a/Repository.mk b/Repository.mk index ab600943de1b..eb7a55f388f2 100644 --- a/Repository.mk +++ b/Repository.mk @@ -356,6 +356,7 @@ $(eval $(call gb_Helper_register_libraries_for_install,OOOLIBS,ooo, \ $(if $(DISABLE_SCRIPTING),,vbahelper) \ vcl \ vclcanvas \ + $(if $(filter FREEBSD LINUX MACOSX WNT,$(OS)),vclopengl) \ $(if $(and $(filter unx,$(GUIBASE)),$(filter-out MACOSX,$(OS))), \ vclplug_gen \ $(if $(ENABLE_TDE),vclplug_tde) \ diff --git a/chart2/Library_chartopengl.mk b/chart2/Library_chartopengl.mk index 0aa6340aa140..db3dc299b1c2 100644 --- a/chart2/Library_chartopengl.mk +++ b/chart2/Library_chartopengl.mk @@ -47,13 +47,13 @@ $(eval $(call gb_Library_use_libraries,chartopengl,\ ucbhelper \ utl \ vcl \ + vclopengl \ $(gb_UWINAPI) \ )) $(eval $(call gb_Library_add_exception_objects,chartopengl,\ chart2/source/view/main/OpenglShapeFactory \ chart2/source/view/main/DummyXShape \ - chart2/source/view/main/OpenGLRender \ )) ifeq ($(strip $(OS)),WNT) diff --git a/chart2/Module_chart2.mk b/chart2/Module_chart2.mk index 611e699705a9..6c4d193dd2dd 100644 --- a/chart2/Module_chart2.mk +++ b/chart2/Module_chart2.mk @@ -14,7 +14,6 @@ $(eval $(call gb_Module_add_targets,chart2,\ Library_chartcore \ $(if $(filter FREEBSD LINUX MACOSX WNT,$(OS)), \ Library_chartopengl \ - Package_opengl \ ) \ )) diff --git a/chart2/source/view/inc/DummyXShape.hxx b/chart2/source/view/inc/DummyXShape.hxx index cf19ff577dd6..553b4e1c20fa 100644 --- a/chart2/source/view/inc/DummyXShape.hxx +++ b/chart2/source/view/inc/DummyXShape.hxx @@ -12,7 +12,7 @@ #include <cppuhelper/implbase6.hxx> -#include "OpenGLRender.hxx" +#include <vcl/OpenGLRender.hxx> #include <com/sun/star/drawing/XShape.hpp> #include <com/sun/star/drawing/XShapes.hpp> diff --git a/include/sal/log-areas.dox b/include/sal/log-areas.dox index 41ef580eec03..018e4c64863c 100644 --- a/include/sal/log-areas.dox +++ b/include/sal/log-areas.dox @@ -362,6 +362,7 @@ certain functionality. @li @c vcl.kde - KDE @li @c vcl.kde4 - KDE4 @li @c vcl.layout - Widget layout +@li @c vcl.opengl - OpenGL rendering @li @c vcl.plugadapt - the Unix/X11 backend plugin mechanism @li @c vcl.osx @li @c vcl.osx.print diff --git a/chart2/source/view/main/OpenGLRender.hxx b/include/vcl/OpenGLRender.hxx index 8e5314da1e41..2f7903a23330 100755 --- a/chart2/source/view/main/OpenGLRender.hxx +++ b/include/vcl/OpenGLRender.hxx @@ -7,6 +7,9 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +#ifndef VCL_OPENGL_RENDER_HXX +#define VCL_OPENGL_RENDER_HXX + #if defined( MACOSX ) #elif defined( UNX ) # include <prex.h> @@ -90,7 +93,7 @@ typedef std::vector<GLfloat> PieSegment2DPointList; typedef std::vector<GLfloat> PointList; /// Holds the information of our new child window -struct GLWindow +struct VCL_DLLPUBLIC GLWindow { #if defined( _WIN32 ) HWND hWnd; @@ -140,7 +143,7 @@ struct GLWindow } }; -class OpenGLRender +class VCL_DLLPUBLIC OpenGLRender { public: OpenGLRender(com::sun::star::uno::Reference< @@ -192,16 +195,16 @@ public: void SetBackGroundColor(sal_uInt32 color1, sal_uInt32 color2, sal_uInt8 nAlpha); private: - GLint LoadShaders(const OUString& rVertexShaderName, const OUString& rFragmentShaderName); - int CreateTextureObj(int width, int height); - int CreateRenderObj(int width, int height); - int CreateFrameBufferObj(); + SAL_DLLPRIVATE GLint LoadShaders(const OUString& rVertexShaderName, const OUString& rFragmentShaderName); + SAL_DLLPRIVATE int CreateTextureObj(int width, int height); + SAL_DLLPRIVATE int CreateRenderObj(int width, int height); + SAL_DLLPRIVATE int CreateFrameBufferObj(); #if defined( _WIN32 ) - int InitTempWindow(HWND *hwnd, int width, int height, PIXELFORMATDESCRIPTOR inPfd); - bool WGLisExtensionSupported(const char *extension); + SAL_DLLPRIVATE int InitTempWindow(HWND *hwnd, int width, int height, PIXELFORMATDESCRIPTOR inPfd); + SAL_DLLPRIVATE bool WGLisExtensionSupported(const char *extension); #endif - int CreateMultiSampleFrameBufObj(); - int Create2DCircle(int detail); + SAL_DLLPRIVATE int CreateMultiSampleFrameBufObj(); + SAL_DLLPRIVATE int Create2DCircle(int detail); private: // Projection matrix : default 45 degree Field of View, 4:3 ratio, display range : 0.1 unit <-> 100 units @@ -295,4 +298,6 @@ private: #endif }; +#endif + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/Library_vclopengl.mk b/vcl/Library_vclopengl.mk new file mode 100644 index 000000000000..5c52add5f3aa --- /dev/null +++ b/vcl/Library_vclopengl.mk @@ -0,0 +1,59 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# + +$(eval $(call gb_Library_Library,vclopengl)) + +$(eval $(call gb_Library_set_include,vclopengl,\ + $$(INCLUDE) \ +)) + +$(eval $(call gb_Library_use_externals,vclopengl,\ + boost_headers \ + mdds_headers \ + glm_headers \ + mesa_headers \ + glew \ +)) + +$(eval $(call gb_Library_use_sdk_api,vclopengl)) + +$(eval $(call gb_Library_use_libraries,vclopengl,\ + comphelper \ + cppu \ + cppuhelper \ + editeng \ + sal \ + vcl \ + $(gb_UWINAPI) \ +)) + +$(eval $(call gb_Library_add_exception_objects,vclopengl,\ + vcl/source/opengl/OpenGLRender \ +)) + +ifeq ($(strip $(OS)),WNT) +$(eval $(call gb_Library_use_system_win32_libs,vclopengl,\ + opengl32 \ + gdi32 \ + glu32 \ +)) +else ifeq ($(OS),MACOSX) +$(eval $(call gb_Library_use_system_darwin_frameworks,vclopengl,\ + OpenGL \ +)) +else ifeq ($(OS),LINUX) +$(eval $(call gb_Library_add_libs,vclopengl,\ + -ldl \ + -lGL \ + -lGLU \ + -lX11 \ +)) +endif + +# vim: set noet sw=4 ts=4: diff --git a/vcl/Module_vcl.mk b/vcl/Module_vcl.mk index 1f3c8e2bde59..50d847c9a669 100644 --- a/vcl/Module_vcl.mk +++ b/vcl/Module_vcl.mk @@ -25,6 +25,10 @@ $(eval $(call gb_Module_add_targets,vcl,\ $(if $(filter DESKTOP,$(BUILD_TYPE)), \ StaticLibrary_vclmain \ Executable_ui-previewer) \ + $(if $(filter FREEBSD LINUX MACOSX WNT,$(OS)), \ + Library_vclopengl \ + Package_opengl \ + ) \ )) $(eval $(call gb_Module_add_l10n_targets,vcl,\ diff --git a/chart2/Package_opengl.mk b/vcl/Package_opengl.mk index ef33ebbbff44..6eb2463d6feb 100644 --- a/chart2/Package_opengl.mk +++ b/vcl/Package_opengl.mk @@ -7,9 +7,9 @@ # file, You can obtain one at http://mozilla.org/MPL/2.0/. # -$(eval $(call gb_Package_Package,chart2_opengl_shader,$(SRCDIR)/chart2/opengl)) +$(eval $(call gb_Package_Package,vcl_opengl_shader,$(SRCDIR)/vcl/source/opengl/shaders)) -$(eval $(call gb_Package_add_files,chart2_opengl_shader,$(LIBO_BIN_FOLDER)/opengl,\ +$(eval $(call gb_Package_add_files,vcl_opengl_shader,$(LIBO_BIN_FOLDER)/opengl,\ backgroundFragmentShader.glsl \ backgroundVertexShader.glsl \ commonFragmentShader.glsl \ diff --git a/chart2/source/view/main/OpenGLRender.cxx b/vcl/source/opengl/OpenGLRender.cxx index 3b81db2845be..a4fb1b950f1b 100755 --- a/chart2/source/view/main/OpenGLRender.cxx +++ b/vcl/source/opengl/OpenGLRender.cxx @@ -9,7 +9,7 @@ #include <GL/glew.h> #include <vector> -#include "OpenGLRender.hxx" +#include <vcl/OpenGLRender.hxx> #include <vcl/bmpacc.hxx> #include <vcl/graph.hxx> #include <com/sun/star/awt/XBitmap.hpp> @@ -74,9 +74,9 @@ int static checkGLError(const char *file, int line) const GLubyte* sError = gluErrorString(glErr); if (sError) - SAL_WARN("chart2.opengl", "GL Error #" << glErr << "(" << gluErrorString(glErr) << ") " << " in File " << file << " at line: " << line); + SAL_WARN("vcl.opengl", "GL Error #" << glErr << "(" << gluErrorString(glErr) << ") " << " in File " << file << " at line: " << line); else - SAL_WARN("chart2.opengl", "GL Error #" << glErr << " (no message available)" << " in File " << file << " at line: " << line); + SAL_WARN("vcl.opengl", "GL Error #" << glErr << " (no message available)" << " in File " << file << " at line: " << line); retCode = -1; return retCode; @@ -91,7 +91,7 @@ static bool bGlewInit = false; #define CHECK_GL_FRAME_BUFFER_STATUS() \ status = glCheckFramebufferStatus(GL_FRAMEBUFFER);\ if( status != GL_FRAMEBUFFER_COMPLETE ) {\ - SAL_WARN("chart2.opengl", "OpenGL error: " << status );\ + SAL_WARN("vcl.opengl", "OpenGL error: " << status );\ return -1;\ } @@ -126,7 +126,7 @@ OString loadShader(const OUString& rFilename) } else { - SAL_WARN("chart2.opengl", "could not load the file: " << aFileURL); + SAL_WARN("vcl.opengl", "could not load the file: " << aFileURL); } return OString(); @@ -159,10 +159,10 @@ GLint OpenGLRender::LoadShaders(const OUString& rVertexShaderName,const OUString std::vector<char> VertexShaderErrorMessage(InfoLogLength+1); glGetShaderInfoLog(VertexShaderID, InfoLogLength, NULL, &VertexShaderErrorMessage[0]); VertexShaderErrorMessage.push_back('\0'); - SAL_WARN("chart2.opengl", "vertex shader compile failed : " << &VertexShaderErrorMessage[0]); + SAL_WARN("vcl.opengl", "vertex shader compile failed : " << &VertexShaderErrorMessage[0]); } else - SAL_WARN("chart2.opengl", "vertex shader compile failed without error log"); + SAL_WARN("vcl.opengl", "vertex shader compile failed without error log"); return 0; } @@ -183,10 +183,10 @@ GLint OpenGLRender::LoadShaders(const OUString& rVertexShaderName,const OUString std::vector<char> FragmentShaderErrorMessage(InfoLogLength+1); glGetShaderInfoLog(FragmentShaderID, InfoLogLength, NULL, &FragmentShaderErrorMessage[0]); FragmentShaderErrorMessage.push_back('\0'); - SAL_WARN("chart2.opengl", "fragment shader compile failed : " << &FragmentShaderErrorMessage[0]); + SAL_WARN("vcl.opengl", "fragment shader compile failed : " << &FragmentShaderErrorMessage[0]); } else - SAL_WARN("chart2.opengl", "fragment shader compile failed without error log"); + SAL_WARN("vcl.opengl", "fragment shader compile failed without error log"); return 0; @@ -208,10 +208,10 @@ GLint OpenGLRender::LoadShaders(const OUString& rVertexShaderName,const OUString std::vector<char> ProgramErrorMessage(InfoLogLength+1); glGetProgramInfoLog(ProgramID, InfoLogLength, NULL, &ProgramErrorMessage[0]); ProgramErrorMessage.push_back('\0'); - SAL_WARN("chart2.opengl", "Shader Program failed : " << &ProgramErrorMessage[0]); + SAL_WARN("vcl.opengl", "Shader Program failed : " << &ProgramErrorMessage[0]); } else - SAL_WARN("chart2.opengl", "shader program link failed without error log"); + SAL_WARN("vcl.opengl", "shader program link failed without error log"); return 0; } @@ -241,7 +241,7 @@ int OpenGLRender::InitOpenGL(GLWindow aWindow) glewExperimental = GL_TRUE; if (glewInit() != GLEW_OK) { - SAL_WARN("chart2.opengl", "Failed to initialize GLEW"); + SAL_WARN("vcl.opengl", "Failed to initialize GLEW"); return -1; } else @@ -251,7 +251,7 @@ int OpenGLRender::InitOpenGL(GLWindow aWindow) // These guys don't just check support but setup the vtables. if (glewIsSupported("framebuffer_object") != GLEW_OK) { - SAL_WARN("chart2.opengl", "GL stack has no framebuffer support"); + SAL_WARN("vcl.opengl", "GL stack has no framebuffer support"); return -1; } @@ -385,7 +385,7 @@ BitmapEx OpenGLRender::GetAsBitmap() aWriter.Write( sOutput ); sOutput.Close(); } catch (...) { - SAL_WARN("chart2.opengl", "Error writing png to " << aName); + SAL_WARN("vcl.opengl", "Error writing png to " << aName); } #endif @@ -535,13 +535,13 @@ void OpenGLRender::renderToBitmap() status = glCheckFramebufferStatus(GL_READ_FRAMEBUFFER); if (status != GL_FRAMEBUFFER_COMPLETE) { - SAL_INFO("chart2.opengl", "The frame buffer status is not complete!"); + SAL_INFO("vcl.opengl", "The frame buffer status is not complete!"); } glBindFramebuffer(GL_DRAW_FRAMEBUFFER, m_FboID); status = glCheckFramebufferStatus(GL_DRAW_FRAMEBUFFER); if (status != GL_FRAMEBUFFER_COMPLETE) { - SAL_INFO("chart2.opengl", "The frame buffer status is not complete!"); + SAL_INFO("vcl.opengl", "The frame buffer status is not complete!"); } glBlitFramebuffer(0, 0 ,m_iWidth, m_iHeight, 0, 0,m_iWidth ,m_iHeight, GL_COLOR_BUFFER_BIT, GL_LINEAR); glBindFramebuffer(GL_READ_FRAMEBUFFER,0); @@ -659,7 +659,7 @@ void OpenGLRender::Release() glXMakeCurrent(glWin.dpy, None, NULL); if( glGetError() != GL_NO_ERROR ) { - SAL_INFO("chart2.opengl", "glError: " << (char *)gluErrorString(glGetError())); + SAL_INFO("vcl.opengl", "glError: " << (char *)gluErrorString(glGetError())); } glXDestroyContext(glWin.dpy, glWin.ctx); glWin.ctx = NULL; @@ -805,7 +805,7 @@ bool OpenGLRender::InitMultisample(PIXELFORMATDESCRIPTOR pfd) //create a temp windwo to check whether support multi-sample, if support, get the format if (InitTempWindow(&hWnd, m_iWidth, m_iHeight, pfd) < 0) { - SAL_WARN("chart2.opengl", "Can't create temp window to test"); + SAL_WARN("vcl.opengl", "Can't create temp window to test"); return false; } @@ -813,7 +813,7 @@ bool OpenGLRender::InitMultisample(PIXELFORMATDESCRIPTOR pfd) if (!WGLisExtensionSupported("WGL_ARB_multisample")) { mbArbMultisampleSupported = false; - SAL_WARN("chart2.opengl", "Device doesn't support multi sample"); + SAL_WARN("vcl.opengl", "Device doesn't support multi sample"); return false; } // Get Our Pixel Format @@ -1112,7 +1112,7 @@ int OpenGLRender::RenderBubble2FBO(int) GLenum fbResult = glCheckFramebufferStatus(GL_FRAMEBUFFER); if( fbResult != GL_FRAMEBUFFER_COMPLETE ) { - SAL_WARN("chart2.opengl", "error"); + SAL_WARN("vcl.opengl", "error"); return -1; } CHECK_GL_ERROR(); @@ -1270,7 +1270,7 @@ int OpenGLRender::CreateTextTexture(const BitmapEx& rBitmapEx, const awt::Point& aWriter.Write( sOutput ); sOutput.Close(); } catch (...) { - SAL_WARN("chart2.opengl", "Error writing png to " << aName); + SAL_WARN("vcl.opengl", "Error writing png to " << aName); } #endif @@ -1533,7 +1533,7 @@ void OpenGLRender::SetBackGroundColor(sal_uInt32 color1, sal_uInt32 color2, sal_ m_BackgroundColor[13] = (float)g / 255.0f; m_BackgroundColor[14] = (float)b / 255.0f; m_BackgroundColor[15] = nAlpha / 255.0f; - SAL_INFO("chart2.opengl", "color1 = " << color1 << ", color2 = " << color2); + SAL_INFO("vcl.opengl", "color1 = " << color1 << ", color2 = " << color2); } diff --git a/chart2/opengl/backgroundFragmentShader.glsl b/vcl/source/opengl/shaders/backgroundFragmentShader.glsl index 805789e731ed..805789e731ed 100644 --- a/chart2/opengl/backgroundFragmentShader.glsl +++ b/vcl/source/opengl/shaders/backgroundFragmentShader.glsl diff --git a/chart2/opengl/backgroundVertexShader.glsl b/vcl/source/opengl/shaders/backgroundVertexShader.glsl index 6d9d6c21f3c9..6d9d6c21f3c9 100644 --- a/chart2/opengl/backgroundVertexShader.glsl +++ b/vcl/source/opengl/shaders/backgroundVertexShader.glsl diff --git a/chart2/opengl/commonFragmentShader.glsl b/vcl/source/opengl/shaders/commonFragmentShader.glsl index 805789e731ed..805789e731ed 100644 --- a/chart2/opengl/commonFragmentShader.glsl +++ b/vcl/source/opengl/shaders/commonFragmentShader.glsl diff --git a/chart2/opengl/commonVertexShader.glsl b/vcl/source/opengl/shaders/commonVertexShader.glsl index f32e3fd38a91..f32e3fd38a91 100644 --- a/chart2/opengl/commonVertexShader.glsl +++ b/vcl/source/opengl/shaders/commonVertexShader.glsl diff --git a/chart2/opengl/debugFragmentShader.glsl b/vcl/source/opengl/shaders/debugFragmentShader.glsl index d36c4f4d46e4..d36c4f4d46e4 100644 --- a/chart2/opengl/debugFragmentShader.glsl +++ b/vcl/source/opengl/shaders/debugFragmentShader.glsl diff --git a/chart2/opengl/debugVertexShader.glsl b/vcl/source/opengl/shaders/debugVertexShader.glsl index 762de3121419..762de3121419 100644 --- a/chart2/opengl/debugVertexShader.glsl +++ b/vcl/source/opengl/shaders/debugVertexShader.glsl diff --git a/chart2/opengl/symbolFragmentShader.glsl b/vcl/source/opengl/shaders/symbolFragmentShader.glsl index 3ac6b0305285..3ac6b0305285 100644 --- a/chart2/opengl/symbolFragmentShader.glsl +++ b/vcl/source/opengl/shaders/symbolFragmentShader.glsl diff --git a/chart2/opengl/symbolVertexShader.glsl b/vcl/source/opengl/shaders/symbolVertexShader.glsl index 3cf9f41ef21b..3cf9f41ef21b 100644 --- a/chart2/opengl/symbolVertexShader.glsl +++ b/vcl/source/opengl/shaders/symbolVertexShader.glsl diff --git a/chart2/opengl/textFragmentShader.glsl b/vcl/source/opengl/shaders/textFragmentShader.glsl index ef8d44d6949d..ef8d44d6949d 100644 --- a/chart2/opengl/textFragmentShader.glsl +++ b/vcl/source/opengl/shaders/textFragmentShader.glsl diff --git a/chart2/opengl/textVertexShader.glsl b/vcl/source/opengl/shaders/textVertexShader.glsl index a805229eb07a..a805229eb07a 100644 --- a/chart2/opengl/textVertexShader.glsl +++ b/vcl/source/opengl/shaders/textVertexShader.glsl |