canvas/Library_oglcanvas.mk | 1 canvas/source/opengl/ogl_canvasbitmap.cxx | 2 canvas/source/opengl/ogl_canvascustomsprite.cxx | 2 canvas/source/opengl/ogl_spritecanvas.cxx | 2 canvas/source/opengl/ogl_spritedevicehelper.cxx | 3 canvas/source/opengl/ogl_spritedevicehelper.hxx | 1 slideshow/Library_OGLTrans.mk | 2 slideshow/Module_slideshow.mk | 1 slideshow/Package_opengl.mk | 18 slideshow/opengl/basicVertexShader.glsl | 37 + slideshow/opengl/dissolveFragmentShader.glsl | 48 ++ slideshow/opengl/staticFragmentShader.glsl | 64 +++ slideshow/source/engine/OGLTrans/generic/OGLTrans_Shaders.cxx | 191 ---------- slideshow/source/engine/OGLTrans/generic/OGLTrans_Shaders.hxx | 75 --- slideshow/source/engine/OGLTrans/generic/OGLTrans_TransitionImpl.cxx | 111 ----- slideshow/source/engine/OGLTrans/generic/OGLTrans_TransitionerImpl.cxx | 11 16 files changed, 198 insertions(+), 371 deletions(-)
New commits: commit 3c99db4ca0405ab74f0e327ef9444c6cfdb7fc5b Author: Markus Mohrhard <markus.mohrh...@collabora.co.uk> Date: Wed Aug 13 02:01:52 2014 +0200 fix problems around shaders Change-Id: I1577fb81cb3cf1fac3f5ba5d560d96cb83d4483d diff --git a/slideshow/Module_slideshow.mk b/slideshow/Module_slideshow.mk index 3959028..5d9978b 100644 --- a/slideshow/Module_slideshow.mk +++ b/slideshow/Module_slideshow.mk @@ -12,6 +12,7 @@ $(eval $(call gb_Module_Module,slideshow)) $(eval $(call gb_Module_add_targets,slideshow,\ $(if $(filter TRUE,$(ENABLE_OPENGL)),Library_OGLTrans) \ Library_slideshow \ + Package_opengl \ )) # not working diff --git a/slideshow/Package_opengl.mk b/slideshow/Package_opengl.mk index 866bfd0..a7e9a8c 100644 --- a/slideshow/Package_opengl.mk +++ b/slideshow/Package_opengl.mk @@ -10,9 +10,9 @@ $(eval $(call gb_Package_Package,slideshow_opengl_shader,$(SRCDIR)/slideshow/opengl)) $(eval $(call gb_Package_add_files,slideshow_opengl_shader,$(LIBO_BIN_FOLDER)/opengl,\ - slideshow/opengl/basicVertexShader.glsl \ - slideshow/opengl/dissolveFragmentShader.glsl \ - slideshow/opengl/staticFragmentShader.glsl \ + basicVertexShader.glsl \ + dissolveFragmentShader.glsl \ + staticFragmentShader.glsl \ )) # vim: set noet sw=4 ts=4: diff --git a/slideshow/source/engine/OGLTrans/generic/OGLTrans_TransitionImpl.cxx b/slideshow/source/engine/OGLTrans/generic/OGLTrans_TransitionImpl.cxx index 63d5753..222590c 100644 --- a/slideshow/source/engine/OGLTrans/generic/OGLTrans_TransitionImpl.cxx +++ b/slideshow/source/engine/OGLTrans/generic/OGLTrans_TransitionImpl.cxx @@ -1473,7 +1473,7 @@ private: GLuint StaticNoiseTransition::makeShader_() { - return OpenGLHelper::LoadShaders( "basicVertexShader.glsl", "staticFragmentShader.glsl" ); + return OpenGLHelper::LoadShaders( "basicVertexShader", "staticFragmentShader" ); } shared_ptr<OGLTransitionImpl> @@ -1524,7 +1524,7 @@ private: GLuint DissolveTransition::makeShader_() { - return OpenGLHelper::LoadShaders( "basicVertexShader.glsl", "dissolveFragmentShader.glsl" ); + return OpenGLHelper::LoadShaders( "basicVertexShader", "dissolveFragmentShader" ); } shared_ptr<OGLTransitionImpl> commit b4ed7cc37eb50380b3eccfba12edf08805dc25b5 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Tue Aug 12 05:56:45 2014 +0200 make OGLTrans build on windows We still need to fix a number of issues around pixmap to make it really useful. Change-Id: I747d735d043d91d51809801edd9b778622b6063c diff --git a/slideshow/source/engine/OGLTrans/generic/OGLTrans_TransitionerImpl.cxx b/slideshow/source/engine/OGLTrans/generic/OGLTrans_TransitionerImpl.cxx index 361ad13..673d72a 100644 --- a/slideshow/source/engine/OGLTrans/generic/OGLTrans_TransitionerImpl.cxx +++ b/slideshow/source/engine/OGLTrans/generic/OGLTrans_TransitionerImpl.cxx @@ -383,7 +383,9 @@ bool OGLTransitionerImpl::initWindowFromSlideShowView( const Reference< presenta GLWindow& rGLWindow(mpContext->getOpenGLWindow()); +#ifdef UNX mbTextureFromPixmap = rGLWindow.HasGLXExtension( "GLX_EXT_texture_from_pixmap" ); +#endif mbGenerateMipmap = rGLWindow.HasGLExtension( "GL_SGIS_generate_mipmap" ); glEnable(GL_CULL_FACE); commit 140b031935da665c3cd75d89d2dc685d82f04b1c Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Mon Aug 11 21:44:10 2014 +0200 we always have GLX 1.3, even on the baseline Change-Id: I381aca6e09a63d21bcbdf2625c4d829f84819bf8 diff --git a/slideshow/source/engine/OGLTrans/generic/OGLTrans_TransitionerImpl.cxx b/slideshow/source/engine/OGLTrans/generic/OGLTrans_TransitionerImpl.cxx index f90ddc8..361ad13 100644 --- a/slideshow/source/engine/OGLTrans/generic/OGLTrans_TransitionerImpl.cxx +++ b/slideshow/source/engine/OGLTrans/generic/OGLTrans_TransitionerImpl.cxx @@ -284,10 +284,6 @@ public: */ float mnGLVersion; -#ifdef UNX - float mnGLXVersion; -#endif - /** Whether the display has GLX extension on X11, always true otherwise (?) */ @@ -448,7 +444,7 @@ void OGLTransitionerImpl::impl_prepareSlides() #if defined( GLX_EXT_texture_from_pixmap ) - if( mnGLXVersion >= 1.2999 && mbTextureFromPixmap && xLeavingSet.is() && xEnteringSet.is() && mbHasTFPVisual ) { + if( mbTextureFromPixmap && xLeavingSet.is() && xEnteringSet.is() && mbHasTFPVisual ) { Sequence< Any > leaveArgs; Sequence< Any > enterArgs; if( (xLeavingSet->getFastPropertyValue( 1 ) >>= leaveArgs) && @@ -1358,9 +1354,6 @@ OGLTransitionerImpl::OGLTransitionerImpl() , maSlideSize() , mbBrokenTexturesATI(false) , mnGLVersion(0) -#ifdef UNX - , mnGLXVersion(0.0) -#endif , mbGLXPresent(false) , mbMesa(false) , mbTextureFromPixmap(false) commit 69e95b394616d0384e70dc6dad335eefce6a2dc2 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Mon Aug 11 21:25:06 2014 +0200 remove useless OGL transition shader code Change-Id: I8930aab2b4d3fd00916f12b86fa06b5e011542ac diff --git a/slideshow/Library_OGLTrans.mk b/slideshow/Library_OGLTrans.mk index a539847..80879ef 100644 --- a/slideshow/Library_OGLTrans.mk +++ b/slideshow/Library_OGLTrans.mk @@ -70,14 +70,12 @@ $(eval $(call gb_Library_use_system_win32_libs,OGLTrans,\ )) $(eval $(call gb_Library_add_exception_objects,OGLTrans,\ - slideshow/source/engine/OGLTrans/generic/OGLTrans_Shaders \ slideshow/source/engine/OGLTrans/generic/OGLTrans_TransitionerImpl \ slideshow/source/engine/OGLTrans/generic/OGLTrans_TransitionImpl \ )) else $(eval $(call gb_Library_add_exception_objects,OGLTrans,\ - slideshow/source/engine/OGLTrans/generic/OGLTrans_Shaders \ slideshow/source/engine/OGLTrans/generic/OGLTrans_TransitionerImpl \ slideshow/source/engine/OGLTrans/generic/OGLTrans_TransitionImpl \ )) diff --git a/slideshow/Package_opengl.mk b/slideshow/Package_opengl.mk new file mode 100644 index 0000000..866bfd0 --- /dev/null +++ b/slideshow/Package_opengl.mk @@ -0,0 +1,18 @@ +# -*- 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_Package_Package,slideshow_opengl_shader,$(SRCDIR)/slideshow/opengl)) + +$(eval $(call gb_Package_add_files,slideshow_opengl_shader,$(LIBO_BIN_FOLDER)/opengl,\ + slideshow/opengl/basicVertexShader.glsl \ + slideshow/opengl/dissolveFragmentShader.glsl \ + slideshow/opengl/staticFragmentShader.glsl \ +)) + +# vim: set noet sw=4 ts=4: diff --git a/slideshow/opengl/basicVertexShader.glsl b/slideshow/opengl/basicVertexShader.glsl new file mode 100644 index 0000000..4ca615a --- /dev/null +++ b/slideshow/opengl/basicVertexShader.glsl @@ -0,0 +1,37 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +varying vec2 v_texturePosition; + +void main( void ) +{ + gl_Position = ftransform(); + v_texturePosition = gl_MultiTexCoord0.xy; +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/slideshow/opengl/dissolveFragmentShader.glsl b/slideshow/opengl/dissolveFragmentShader.glsl new file mode 100644 index 0000000..1ceb13f --- /dev/null +++ b/slideshow/opengl/dissolveFragmentShader.glsl @@ -0,0 +1,48 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +uniform sampler2D leavingSlideTexture; +uniform sampler2D enteringSlideTexture; +uniform sampler2D permTexture; +uniform float time; +varying vec2 v_texturePosition; + +float snoise(vec2 P) { + + return texture2D(permTexture, P).r; +} + +void main() { + float sn = snoise(10.0*v_texturePosition); + if( sn < time) + gl_FragColor = texture2D(enteringSlideTexture, v_texturePosition); + else + gl_FragColor = texture2D(leavingSlideTexture, v_texturePosition); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/slideshow/opengl/staticFragmentShader.glsl b/slideshow/opengl/staticFragmentShader.glsl new file mode 100644 index 0000000..c3cb669 --- /dev/null +++ b/slideshow/opengl/staticFragmentShader.glsl @@ -0,0 +1,64 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +uniform sampler2D leavingSlideTexture; +uniform sampler2D enteringSlideTexture; +uniform sampler2D permTexture; +uniform float time; +varying vec2 v_texturePosition; + +float snoise(vec2 P) { + + return texture2D(permTexture, P).r; +} + + +#define PART 0.5 +#define START 0.4 +#define END 0.9 + +void main() { + float sn = snoise(10.0*v_texturePosition+time*0.07); + if( time < PART ) { + float sn1 = snoise(vec2(time*15.0, 20.0*v_texturePosition.y)); + float sn2 = snoise(v_texturePosition); + if (sn1 > 1.0 - time*time && sn2 < 2.0*time+0.1) + gl_FragColor = vec4(sn, sn, sn, 1.0); + else if (time > START ) + gl_FragColor = ((time-START)/(PART - START))*vec4(sn, sn, sn, 1.0) + (1.0 - (time - START)/(PART - START))*texture2D(leavingSlideTexture, v_texturePosition); + else + gl_FragColor = texture2D(leavingSlideTexture, v_texturePosition); + } else if ( time < PART ) { + gl_FragColor = texture2D(leavingSlideTexture, v_texturePosition); + } else if ( time > END ) { + gl_FragColor = ((1.0 - time)/(1.0 - END))*vec4(sn, sn, sn, 1.0) + ((time - END)/(1.0 - END))*texture2D(enteringSlideTexture, v_texturePosition); + } else + gl_FragColor = vec4(sn, sn, sn, 1.0); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/slideshow/source/engine/OGLTrans/generic/OGLTrans_Shaders.cxx b/slideshow/source/engine/OGLTrans/generic/OGLTrans_Shaders.cxx deleted file mode 100644 index 191bca8..0000000 --- a/slideshow/source/engine/OGLTrans/generic/OGLTrans_Shaders.cxx +++ /dev/null @@ -1,191 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2008 by Sun Microsystems, Inc. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - * This file incorporates work covered by the following license notice: - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 . - ************************************************************************/ - -#include <config_lgpl.h> - -#include <osl/diagnose.hxx> - -#include "OGLTrans_Shaders.hxx" - -#ifdef _WIN32 - -#elif defined(MACOSX) - -#else // UNX == X11 - -#define GLX_GLXEXT_PROTOTYPES 1 -#include <GL/glx.h> -#include <GL/glxext.h> - -#endif - -namespace -{ - -typedef void (*GLFunction_t)(); - -#ifdef _WIN32 - -GLFunction_t lcl_glGetProcAddress(const char *const name) -{ - return wglGetProcAddress(name); -} - -#elif defined(MACOSX) - -GLFunction_t lcl_glGetProcAddress(const char *const name) -{ - return 0; -} - -#else // UNX == X11 - -GLFunction_t lcl_glGetProcAddress(const char *const name) -{ - return glXGetProcAddress(reinterpret_cast<const GLubyte*>(name)); -} - -#endif - -} - -bool OGLShaders::cbInitialized = false; - -#ifdef GL_VERSION_2_0 - -PFNGLACTIVETEXTUREPROC OGLShaders::glActiveTexture = NULL; -PFNGLCREATESHADERPROC OGLShaders::glCreateShader = NULL; -PFNGLSHADERSOURCEPROC OGLShaders::glShaderSource = NULL; -PFNGLCOMPILESHADERPROC OGLShaders::glCompileShader = NULL; -PFNGLGETSHADERIVPROC OGLShaders::glGetShaderiv = NULL; -PFNGLGETSHADERINFOLOGPROC OGLShaders::glGetShaderInfoLog = NULL; -PFNGLDELETESHADERPROC OGLShaders::glDeleteShader = NULL; -PFNGLCREATEPROGRAMPROC OGLShaders::glCreateProgram = NULL; -PFNGLATTACHSHADERPROC OGLShaders::glAttachShader = NULL; -PFNGLLINKPROGRAMPROC OGLShaders::glLinkProgram = NULL; -PFNGLGETPROGRAMIVPROC OGLShaders::glGetProgramiv = NULL; -PFNGLGETPROGRAMINFOLOGPROC OGLShaders::glGetProgramInfoLog = NULL; -PFNGLUSEPROGRAMPROC OGLShaders::glUseProgram = NULL; -PFNGLDELETEPROGRAMPROC OGLShaders::glDeleteProgram = NULL; -PFNGLGETUNIFORMLOCATIONPROC OGLShaders::glGetUniformLocation = NULL; -PFNGLUNIFORM1IPROC OGLShaders::glUniform1i = NULL; -PFNGLUNIFORM1FPROC OGLShaders::glUniform1f = NULL; -#endif - -bool OGLShaders::Initialize() -{ -#ifdef GL_VERSION_2_0 - if( !cbInitialized ) { - glActiveTexture = (PFNGLACTIVETEXTUREPROC) lcl_glGetProcAddress( "glActiveTexture" ); - glCreateShader = (PFNGLCREATESHADERPROC) lcl_glGetProcAddress( "glCreateShader" ); - glShaderSource = (PFNGLSHADERSOURCEPROC) lcl_glGetProcAddress( "glShaderSource" ); - glCompileShader = (PFNGLCOMPILESHADERPROC) lcl_glGetProcAddress( "glCompileShader" ); - glGetShaderiv = (PFNGLGETSHADERIVPROC) lcl_glGetProcAddress( "glGetShaderiv" ); - glGetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC) lcl_glGetProcAddress( "glGetShaderInfoLog" ); - glDeleteShader = (PFNGLDELETESHADERPROC) lcl_glGetProcAddress( "glDeleteShader" ); - glCreateProgram = (PFNGLCREATEPROGRAMPROC) lcl_glGetProcAddress( "glCreateProgram" ); - glAttachShader = (PFNGLATTACHSHADERPROC) lcl_glGetProcAddress( "glAttachShader" ); - glLinkProgram = (PFNGLLINKPROGRAMPROC) lcl_glGetProcAddress( "glLinkProgram" ); - glGetProgramiv = (PFNGLGETPROGRAMIVPROC) lcl_glGetProcAddress( "glGetProgramiv" ); - glGetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC) lcl_glGetProcAddress( "glGetProgramInfoLog" ); - glUseProgram = (PFNGLUSEPROGRAMPROC) lcl_glGetProcAddress( "glUseProgram" ); - glDeleteProgram = (PFNGLDELETEPROGRAMPROC) lcl_glGetProcAddress( "glDeleteProgram" ); - glGetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC) lcl_glGetProcAddress( "glGetUniformLocation" ); - glUniform1i = (PFNGLUNIFORM1IPROC) lcl_glGetProcAddress( "glUniform1i" ); - glUniform1f = (PFNGLUNIFORM1FPROC) lcl_glGetProcAddress( "glUniform1f" ); - cbInitialized = true; - } - - return glCreateShader != NULL; -#else - return false; -#endif -} - -GLuint OGLShaders::LinkProgram( const char *vertexShader, const char *fragmentShader ) -{ -#ifdef GL_VERSION_2_0 - if( !Initialize() ) - return 0; - - GLhandleARB vertexObject, fragmentObject, programObject; - GLint vertexCompiled, fragmentCompiled, programLinked; - char log[1024]; - - vertexObject = glCreateShader( GL_VERTEX_SHADER ); - fragmentObject = glCreateShader( GL_FRAGMENT_SHADER ); - SAL_INFO("slideshow.opengl", "checkpoint 1: shaders created (" << (glGetError() == GL_NO_ERROR) << ") vertex: " << vertexObject << " fragment: " << fragmentObject); - - - glShaderSource( vertexObject, 1, &vertexShader, NULL ); - glShaderSource( fragmentObject, 1, &fragmentShader, NULL ); - - glCompileShader( vertexObject ); - glGetShaderInfoLog( vertexObject, sizeof( log ), NULL, log ); - SAL_INFO("slideshow.opengl", "vertex compile log: " << log); - glGetShaderiv( vertexObject, GL_COMPILE_STATUS, &vertexCompiled ); - glCompileShader( fragmentObject ); - glGetShaderInfoLog( fragmentObject, sizeof( log ), NULL, log ); - SAL_INFO("slideshow.opengl", "fragment compile log: " << log); - glGetShaderiv( fragmentObject, GL_COMPILE_STATUS, &fragmentCompiled ); - - if( !vertexCompiled || !fragmentCompiled ) - return 0; - - SAL_INFO("slideshow.opengl", "checkpoint 2: shaders compiled (" << (glGetError() == GL_NO_ERROR) << ')'); - - programObject = glCreateProgram(); - glAttachShader( programObject, vertexObject ); - glAttachShader( programObject, fragmentObject ); - - glLinkProgram( programObject ); - glGetProgramInfoLog( programObject, sizeof( log ), NULL, log ); - SAL_INFO("slideshow.opengl", "program link log: " << log); - glGetProgramiv( programObject, GL_LINK_STATUS, &programLinked ); - - if( !programLinked ) - return 0; - - SAL_INFO("slideshow.opengl", "checkpoint 3: program linked (" << (glGetError() == GL_NO_ERROR) << ')'); - - return programObject; -#else - return 0; -#endif -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/slideshow/source/engine/OGLTrans/generic/OGLTrans_Shaders.hxx b/slideshow/source/engine/OGLTrans/generic/OGLTrans_Shaders.hxx deleted file mode 100644 index bb2aa9d..0000000 --- a/slideshow/source/engine/OGLTrans/generic/OGLTrans_Shaders.hxx +++ /dev/null @@ -1,75 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2008 by Sun Microsystems, Inc. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#ifndef INCLUDED_OGLTRANS_SHADERS_HXX_ -#define INCLUDED_OGLTRANS_SHADERS_HXX_ - -#include <config_lgpl.h> - -#define GL_GLEXT_PROTOTYPES 1 -#include <GL/gl.h> -#include <GL/glext.h> - -class OGLShaders { - static bool Initialize(); - static bool cbInitialized; - -public: - - static GLuint LinkProgram( const char *vertexShader, const char *fragmentShader ); - - /** GL shader functions - */ -#ifdef GL_VERSION_2_0 - - static PFNGLACTIVETEXTUREPROC glActiveTexture; - - static PFNGLCREATESHADERPROC glCreateShader; - static PFNGLSHADERSOURCEPROC glShaderSource; - static PFNGLCOMPILESHADERPROC glCompileShader; - static PFNGLGETSHADERIVPROC glGetShaderiv; - static PFNGLGETSHADERINFOLOGPROC glGetShaderInfoLog; - static PFNGLDELETESHADERPROC glDeleteShader; - - static PFNGLCREATEPROGRAMPROC glCreateProgram; - static PFNGLATTACHSHADERPROC glAttachShader; - static PFNGLLINKPROGRAMPROC glLinkProgram; - static PFNGLGETPROGRAMIVPROC glGetProgramiv; - static PFNGLGETPROGRAMINFOLOGPROC glGetProgramInfoLog; - static PFNGLUSEPROGRAMPROC glUseProgram; - static PFNGLDELETEPROGRAMPROC glDeleteProgram; - - static PFNGLGETUNIFORMLOCATIONPROC glGetUniformLocation; - static PFNGLUNIFORM1IPROC glUniform1i; - static PFNGLUNIFORM1FPROC glUniform1f; -#endif -}; - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/slideshow/source/engine/OGLTrans/generic/OGLTrans_TransitionImpl.cxx b/slideshow/source/engine/OGLTrans/generic/OGLTrans_TransitionImpl.cxx index 56a080b..63d5753 100644 --- a/slideshow/source/engine/OGLTrans/generic/OGLTrans_TransitionImpl.cxx +++ b/slideshow/source/engine/OGLTrans/generic/OGLTrans_TransitionImpl.cxx @@ -26,13 +26,14 @@ * ************************************************************************/ +#include <GL/glew.h> +#include <vcl/opengl/OpenGLHelper.hxx> + #include <utility> #include <boost/make_shared.hpp> #include "OGLTrans_TransitionImpl.hxx" -#include "OGLTrans_Shaders.hxx" -#include <GL/gl.h> #include <math.h> using boost::make_shared; @@ -1302,74 +1303,6 @@ boost::shared_ptr<OGLTransitionImpl> makeFadeThroughBlack() return makeFadeThroughBlackTransition(aLeavingSlide, aEnteringSlide, aSettings); } -static const char* basicVertexShader = "\n\ -varying vec2 v_texturePosition;\n\ -\n\ -void main( void )\n\ -{\n\ - gl_Position = ftransform();\n\ - v_texturePosition = gl_MultiTexCoord0.xy;\n\ -}\n\ -"; - -static const char* staticFragmentShader = "\n\ -uniform sampler2D leavingSlideTexture;\n\ -uniform sampler2D enteringSlideTexture;\n\ -uniform sampler2D permTexture;\n\ -uniform float time;\n\ -varying vec2 v_texturePosition;\n\ -\n\ -float snoise(vec2 P) {\n\ -\n\ - return texture2D(permTexture, P).r;\n\ -}\n\ -\n\ -\n\ -#define PART 0.5\n\ -#define START 0.4\n\ -#define END 0.9\n\ -\n\ -void main() {\n\ - float sn = snoise(10.0*v_texturePosition+time*0.07);\n\ - if( time < PART ) {\n\ - float sn1 = snoise(vec2(time*15.0, 20.0*v_texturePosition.y));\n\ - float sn2 = snoise(v_texturePosition);\n\ - if (sn1 > 1.0 - time*time && sn2 < 2.0*time+0.1)\n\ - gl_FragColor = vec4(sn, sn, sn, 1.0);\n\ - else if (time > START )\n\ - gl_FragColor = ((time-START)/(PART - START))*vec4(sn, sn, sn, 1.0) + (1.0 - (time - START)/(PART - START))*texture2D(leavingSlideTexture, v_texturePosition);\n\ - else\n\ - gl_FragColor = texture2D(leavingSlideTexture, v_texturePosition);\n\ - } else if ( time < PART ) {\n\ - gl_FragColor = texture2D(leavingSlideTexture, v_texturePosition);\n\ - } else if ( time > END ) {\n\ - gl_FragColor = ((1.0 - time)/(1.0 - END))*vec4(sn, sn, sn, 1.0) + ((time - END)/(1.0 - END))*texture2D(enteringSlideTexture, v_texturePosition);\n\ - } else \n\ - gl_FragColor = vec4(sn, sn, sn, 1.0);\n\ -}\n\ -"; - -static const char* dissolveFragmentShader = "\n\ -uniform sampler2D leavingSlideTexture;\n\ -uniform sampler2D enteringSlideTexture;\n\ -uniform sampler2D permTexture;\n\ -uniform float time;\n\ -varying vec2 v_texturePosition;\n\ -\n\ -float snoise(vec2 P) {\n\ -\n\ - return texture2D(permTexture, P).r;\n\ -}\n\ -\n\ -void main() {\n\ - float sn = snoise(10.0*v_texturePosition);\n\ - if( sn < time)\n\ - gl_FragColor = texture2D(enteringSlideTexture, v_texturePosition);\n\ - else\n\ - gl_FragColor = texture2D(leavingSlideTexture, v_texturePosition);\n\ -}\n\ -"; - namespace { @@ -1404,18 +1337,16 @@ void ShaderTransition::displaySlides_( double nTime, ::sal_Int32 glLeavingSlideT { applyOverallOperations( nTime, SlideWidthScale, SlideHeightScale ); -#ifdef GL_VERSION_2_0 if( m_nProgramObject ) { - GLint location = OGLShaders::glGetUniformLocation( m_nProgramObject, "time" ); + GLint location = glGetUniformLocation( m_nProgramObject, "time" ); if( location != -1 ) { - OGLShaders::glUniform1f( location, nTime ); + glUniform1f( location, nTime ); } } - OGLShaders::glActiveTexture( GL_TEXTURE2 ); + glActiveTexture( GL_TEXTURE2 ); glBindTexture( GL_TEXTURE_2D, glEnteringSlideTex ); - OGLShaders::glActiveTexture( GL_TEXTURE0 ); -#endif + glActiveTexture( GL_TEXTURE0 ); displaySlide( nTime, glLeavingSlideTex, getScene().getLeavingSlide(), SlideWidthScale, SlideHeightScale ); } @@ -1429,9 +1360,8 @@ void ShaderTransition::prepareTransition_( ::sal_Int32 /* glLeavingSlideTex */, void ShaderTransition::finishTransition_() { -#ifdef GL_VERSION_2_0 if( m_nProgramObject ) { - OGLShaders::glDeleteProgram( m_nProgramObject ); + glDeleteProgram( m_nProgramObject ); m_nProgramObject = 0; } if ( m_nHelperTexture ) @@ -1439,7 +1369,6 @@ void ShaderTransition::finishTransition_() glDeleteTextures( 1, &m_nHelperTexture ); m_nHelperTexture = 0; } -#endif } int permutation256 [256]= { @@ -1501,31 +1430,29 @@ void initPermTexture(GLuint *texID) void ShaderTransition::impl_preparePermShader() { -#ifdef GL_VERSION_2_0 if( m_nProgramObject ) { - OGLShaders::glUseProgram( m_nProgramObject ); + glUseProgram( m_nProgramObject ); - GLint location = OGLShaders::glGetUniformLocation( m_nProgramObject, "leavingSlideTexture" ); + GLint location = glGetUniformLocation( m_nProgramObject, "leavingSlideTexture" ); if( location != -1 ) { - OGLShaders::glUniform1i( location, 0 ); // texture unit 0 + glUniform1i( location, 0 ); // texture unit 0 } - OGLShaders::glActiveTexture(GL_TEXTURE1); + glActiveTexture(GL_TEXTURE1); if( !m_nHelperTexture ) initPermTexture( &m_nHelperTexture ); - OGLShaders::glActiveTexture(GL_TEXTURE0); + glActiveTexture(GL_TEXTURE0); - location = OGLShaders::glGetUniformLocation( m_nProgramObject, "permTexture" ); + location = glGetUniformLocation( m_nProgramObject, "permTexture" ); if( location != -1 ) { - OGLShaders::glUniform1i( location, 1 ); // texture unit 1 + glUniform1i( location, 1 ); // texture unit 1 } - location = OGLShaders::glGetUniformLocation( m_nProgramObject, "enteringSlideTexture" ); + location = glGetUniformLocation( m_nProgramObject, "enteringSlideTexture" ); if( location != -1 ) { - OGLShaders::glUniform1i( location, 2 ); // texture unit 2 + glUniform1i( location, 2 ); // texture unit 2 } } -#endif } } @@ -1546,7 +1473,7 @@ private: GLuint StaticNoiseTransition::makeShader_() { - return OGLShaders::LinkProgram( basicVertexShader, staticFragmentShader ); + return OpenGLHelper::LoadShaders( "basicVertexShader.glsl", "staticFragmentShader.glsl" ); } shared_ptr<OGLTransitionImpl> @@ -1597,7 +1524,7 @@ private: GLuint DissolveTransition::makeShader_() { - return OGLShaders::LinkProgram( basicVertexShader, dissolveFragmentShader ); + return OpenGLHelper::LoadShaders( "basicVertexShader.glsl", "dissolveFragmentShader.glsl" ); } shared_ptr<OGLTransitionImpl> commit 282c16a3713e23b3a594e7d3fbaa5b36491b86f6 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Mon Aug 11 21:04:20 2014 +0200 fix OpenGL canvas windows build Change-Id: Ic6ed9c69003fa79a60310dc0b010ffc0ca868791 diff --git a/canvas/Library_oglcanvas.mk b/canvas/Library_oglcanvas.mk index a5efb6b..b5d3377 100644 --- a/canvas/Library_oglcanvas.mk +++ b/canvas/Library_oglcanvas.mk @@ -44,6 +44,7 @@ $(eval $(call gb_Library_add_exception_objects,oglcanvas,\ $(eval $(call gb_Library_use_externals,oglcanvas,\ boost_headers \ glew \ + mesa_headers \ )) ifeq ($(strip $(OS)),MACOSX) diff --git a/canvas/source/opengl/ogl_canvasbitmap.cxx b/canvas/source/opengl/ogl_canvasbitmap.cxx index d78baf5..b7c5d9b 100644 --- a/canvas/source/opengl/ogl_canvasbitmap.cxx +++ b/canvas/source/opengl/ogl_canvasbitmap.cxx @@ -38,7 +38,7 @@ namespace oglcanvas maCanvasHelper = rSrc.maCanvasHelper; } - void SAL_CALL CanvasBitmap::disposeThis() + void CanvasBitmap::disposeThis() { mpDevice.clear(); diff --git a/canvas/source/opengl/ogl_canvascustomsprite.cxx b/canvas/source/opengl/ogl_canvascustomsprite.cxx index 2f2853e..f088180 100644 --- a/canvas/source/opengl/ogl_canvascustomsprite.cxx +++ b/canvas/source/opengl/ogl_canvascustomsprite.cxx @@ -50,7 +50,7 @@ namespace oglcanvas rDeviceHelper ); } - void SAL_CALL CanvasCustomSprite::disposeThis() + void CanvasCustomSprite::disposeThis() { ::osl::MutexGuard aGuard( m_aMutex ); diff --git a/canvas/source/opengl/ogl_spritecanvas.cxx b/canvas/source/opengl/ogl_spritecanvas.cxx index 3073e2b..c965b9f 100644 --- a/canvas/source/opengl/ogl_spritecanvas.cxx +++ b/canvas/source/opengl/ogl_spritecanvas.cxx @@ -80,7 +80,7 @@ namespace oglcanvas maArguments.realloc(0); } - void SAL_CALL SpriteCanvas::disposeThis() + void SpriteCanvas::disposeThis() { ::osl::MutexGuard aGuard( m_aMutex ); diff --git a/canvas/source/opengl/ogl_spritedevicehelper.cxx b/canvas/source/opengl/ogl_spritedevicehelper.cxx index 76da6e1..72df0e9 100644 --- a/canvas/source/opengl/ogl_spritedevicehelper.cxx +++ b/canvas/source/opengl/ogl_spritedevicehelper.cxx @@ -90,6 +90,9 @@ namespace oglcanvas mnRectangularMultiColorGradientProgram(0) {} + SpriteDeviceHelper::~SpriteDeviceHelper() + {} + void SpriteDeviceHelper::init( Window& rWindow, SpriteCanvas& rSpriteCanvas, const awt::Rectangle& rViewArea ) diff --git a/canvas/source/opengl/ogl_spritedevicehelper.hxx b/canvas/source/opengl/ogl_spritedevicehelper.hxx index f43a3af..bb4a976 100644 --- a/canvas/source/opengl/ogl_spritedevicehelper.hxx +++ b/canvas/source/opengl/ogl_spritedevicehelper.hxx @@ -41,6 +41,7 @@ namespace oglcanvas { public: SpriteDeviceHelper(); + ~SpriteDeviceHelper(); void init( Window& rWindow, SpriteCanvas& rSpriteCanvas, _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits