Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package opencsg for openSUSE:Factory checked 
in at 2026-04-21 12:44:27
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/opencsg (Old)
 and      /work/SRC/openSUSE:Factory/.opencsg.new.11940 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "opencsg"

Tue Apr 21 12:44:27 2026 rev:9 rq:1348358 version:1.8.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/opencsg/opencsg.changes  2025-05-26 
18:39:38.105751069 +0200
+++ /work/SRC/openSUSE:Factory/.opencsg.new.11940/opencsg.changes       
2026-04-21 12:47:10.000263031 +0200
@@ -1,0 +2,7 @@
+Mon Apr 20 17:26:34 UTC 2026 - Torsten Gruner <[email protected]>
+
+- Update to version 1.8.2:
+  * This release fixes a z-fighting bug in the SCS algorithm, that was
+    known for a long time, under Linux with Nouveau graphics driver.
+
+-------------------------------------------------------------------

Old:
----
  OpenCSG-1.8.1.tar.gz

New:
----
  OpenCSG-1.8.2.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ opencsg.spec ++++++
--- /var/tmp/diff_new_pack.pbU6c2/_old  2026-04-21 12:47:10.692291737 +0200
+++ /var/tmp/diff_new_pack.pbU6c2/_new  2026-04-21 12:47:10.696291903 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package opencsg
 #
-# Copyright (c) 2025 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
 
 
 Name:           opencsg
-Version:        1.8.1
+Version:        1.8.2
 Release:        0
 Summary:        Constructive Solid Geometry rendering library
 License:        GPL-2.0-or-later

++++++ OpenCSG-1.8.1.tar.gz -> OpenCSG-1.8.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OpenCSG-1.8.1/CMakeLists.txt 
new/OpenCSG-1.8.2/CMakeLists.txt
--- old/OpenCSG-1.8.1/CMakeLists.txt    2025-03-09 11:19:40.000000000 +0100
+++ new/OpenCSG-1.8.2/CMakeLists.txt    2026-02-07 18:49:03.000000000 +0100
@@ -1,5 +1,5 @@
 cmake_minimum_required(VERSION 3.11)
-project(OpenCSG LANGUAGES CXX VERSION 1.8.1)
+project(OpenCSG LANGUAGES CXX VERSION 1.8.2)
 
 option(BUILD_EXAMPLE "Build example program" ON)
 option(BUILD_SHARED_LIBS "Build using shared libraries" ON)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OpenCSG-1.8.1/changelog.txt 
new/OpenCSG-1.8.2/changelog.txt
--- old/OpenCSG-1.8.1/changelog.txt     2025-03-09 11:19:40.000000000 +0100
+++ new/OpenCSG-1.8.2/changelog.txt     2026-02-08 18:41:29.000000000 +0100
@@ -1,10 +1,20 @@
+08.02.2026:
+    Release 1.8.2
+
+03.01.2026
+    Fixed: For SCS, when merging the color channel in the ARB shader path,
+        probe for Intel hardware/drivers and use the ARB vertex program
+        for vertex setup then. Otherwise, setup the vertices with the fixed
+        function code path again. This change fixes the z-artifacts
+        that happen with the Nouveau drivers on Linux.
+
 09.03.2025:
     Release 1.8.1
 
 08.03.2025:
     Reverted: For SCS, when merging the color channel, prefer the ARB shader
         program code path again. The fixed-function implementation fixed the
-       z-artifacts, but traded in a different kind of rendering error
+        z-artifacts, but traded in a different kind of rendering error
         with software OpenGL rendering on MacOS X.
 
 06.03.2025:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OpenCSG-1.8.1/doc/index.html 
new/OpenCSG-1.8.2/doc/index.html
--- old/OpenCSG-1.8.1/doc/index.html    2025-03-09 11:19:40.000000000 +0100
+++ new/OpenCSG-1.8.2/doc/index.html    2026-02-07 18:49:03.000000000 +0100
@@ -41,7 +41,7 @@
 
 <hr>
 
-<h3> <a href="news.html">Latest release: OpenCSG 1.8.1 (09-Mar-2025)</a></h3>
+<h3> <a href="news.html">Latest release: OpenCSG 1.8.2 (08-Feb-2026)</a></h3>
 
 <hr>
 
@@ -51,7 +51,7 @@
 OpenCSG is a library that does image-based CSG rendering using OpenGL.
 It is written in C++ and supports most modern graphics hardware using
 Microsoft Windows or the Linux operating system. 
-The current version is <a 
href="https://www.opencsg.org/OpenCSG-1.8.1.tar.gz";>OpenCSG-1.8.1</a>.
+The current version is <a 
href="https://www.opencsg.org/OpenCSG-1.8.2.tar.gz";>OpenCSG-1.8.2</a>.
 </p>
 
 <p>
@@ -442,7 +442,7 @@
 <h3> <a name="download">Download</a> </h3>
 
 <p>
-Download <a 
href="https://www.opencsg.org/OpenCSG-1.8.1.tar.gz";>OpenCSG-1.8.1.tar.gz</a>.
+Download <a 
href="https://www.opencsg.org/OpenCSG-1.8.2.tar.gz";>OpenCSG-1.8.2.tar.gz</a>.
 The archive has no dependencies that must be provided externally. The only 
library
 that OpenCSG depends on, and which it comes with, is <a 
href="https://gen.glad.sh";>Glad</a>.
 Glad is used to load OpenGL function pointers and for OpenGL extension 
checking. 
@@ -454,6 +454,7 @@
 
 <p>
 Older versions are still available for download:<br>
+&nbsp;&nbsp; <a 
href="https://www.opencsg.org/OpenCSG-1.8.1.tar.gz";>OpenCSG-1.8.1</a> <br>
 &nbsp;&nbsp; <a 
href="https://www.opencsg.org/OpenCSG-1.8.0.tar.gz";>OpenCSG-1.8.0</a> <br>
 &nbsp;&nbsp; <a 
href="https://www.opencsg.org/OpenCSG-1.7.0.tar.gz";>OpenCSG-1.7.0</a> <br>
 &nbsp;&nbsp; <a 
href="https://www.opencsg.org/OpenCSG-1.6.0.tar.gz";>OpenCSG-1.6.0</a> <br>
@@ -633,6 +634,10 @@
         <a href="http://www.xmission.com/~nate/glut.html";>GLUT for Windows</a>.
         Dev-C++ users can install the <a 
href="https://www.transmissionzero.co.uk/software/freeglut-devel";>precompiled 
GLUT for Mingw32</a>. </p>
   </li>
+  <li>
+    <p><b>Is there any relationship between this OpenCSG and the AI company 
OpenCSG?</b> </p>
+    <p>No. The CSG rendering library OpenCSG is an independent project and has 
no affiliation with the Beijing-based AI company of the same name. </p>
+  </li>
 </ol>
 
 <center><a href="https://www.opencsg.org/img/columns.jpg";><img 
src="img/columns.gif" border="0" alt="CSG columns"></a></center>
@@ -668,9 +673,9 @@
 <hr>
 
 <center><p>
-&copy; 2002-2025, Florian Kirsch, e-mail: <b>mail at opencsg dot org</b>, <br>
+&copy; 2002-2026, Florian Kirsch, e-mail: <b>mail at opencsg dot org</b>, <br>
 2002-2005 Hasso-Plattner-Institute Potsdam.<br>
-Last change: 09-Mar-2025
+Last change: 08-Feb-2026
 </p></center>
 
 </body>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OpenCSG-1.8.1/doc/news.html 
new/OpenCSG-1.8.2/doc/news.html
--- old/OpenCSG-1.8.1/doc/news.html     2025-03-09 11:19:40.000000000 +0100
+++ new/OpenCSG-1.8.2/doc/news.html     2026-02-07 18:49:03.000000000 +0100
@@ -29,6 +29,14 @@
 
 <hr>
 
+<h3>08-Feb-2026: OpenCSG 1.8.2 release with rendering fixes for Linux with 
Nouveau driver</h3>
+
+<p>
+The new release fixes a z-fighting bug in the SCS algorithm,
+that was known for a long time, under Linux with Nouveau graphics driver.
+You can get the new release <a 
href="https://www.opencsg.org/OpenCSG-1.8.2.tar.gz";>here</a>
+</p>
+
 <h3>09-Mar-2025: OpenCSG 1.8.1 bugfix release</h3>
 
 <p>
@@ -425,9 +433,9 @@
 <hr>
 
 <center><p>
-&copy; 2002-2025, Florian Kirsch, e-mail: <b>mail at opencsg dot org</b>, <br>
+&copy; 2002-2026, Florian Kirsch, e-mail: <b>mail at opencsg dot org</b>, <br>
 2002-2005 Hasso-Plattner-Institute Potsdam.<br>
-Last change: 09-Mar-2025
+Last change: 08-Feb-2026
 </p></center>
 
 </body>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OpenCSG-1.8.1/doc/publications.html 
new/OpenCSG-1.8.2/doc/publications.html
--- old/OpenCSG-1.8.1/doc/publications.html     2025-03-09 11:19:40.000000000 
+0100
+++ new/OpenCSG-1.8.2/doc/publications.html     2026-02-07 18:49:03.000000000 
+0100
@@ -164,8 +164,8 @@
 <hr>
 
 <center><p>
-&copy; 2006-2025, Florian Kirsch, e-mail: <b>mail at opencsg dot org</b>, <br>
-Last change: 06-Mar-2025
+&copy; 2006-2026, Florian Kirsch, e-mail: <b>mail at opencsg dot org</b>, <br>
+Last change: 03-Jan-2026
 </p></center>
 
 </body>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OpenCSG-1.8.1/example/CMakeLists.txt 
new/OpenCSG-1.8.2/example/CMakeLists.txt
--- old/OpenCSG-1.8.1/example/CMakeLists.txt    2025-03-09 11:19:40.000000000 
+0100
+++ new/OpenCSG-1.8.2/example/CMakeLists.txt    2026-02-07 18:49:03.000000000 
+0100
@@ -18,5 +18,6 @@
 )
 
 install(TARGETS opencsgexample
+    BUNDLE DESTINATION ${CMAKE_INSTALL_PREFIX}/Applications
     RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OpenCSG-1.8.1/example/displaylistPrimitive.cpp 
new/OpenCSG-1.8.2/example/displaylistPrimitive.cpp
--- old/OpenCSG-1.8.1/example/displaylistPrimitive.cpp  2025-03-09 
11:19:40.000000000 +0100
+++ new/OpenCSG-1.8.2/example/displaylistPrimitive.cpp  2026-02-07 
18:49:03.000000000 +0100
@@ -1,5 +1,5 @@
 // OpenCSG - library for image-based CSG rendering for OpenGL
-// Copyright (C) 2002-2025, Florian Kirsch,
+// Copyright (C) 2002-2026, Florian Kirsch,
 // Hasso-Plattner-Institute at the University of Potsdam, Germany
 //
 // This library is free software; you can redistribute it and/or modify
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OpenCSG-1.8.1/example/displaylistPrimitive.h 
new/OpenCSG-1.8.2/example/displaylistPrimitive.h
--- old/OpenCSG-1.8.1/example/displaylistPrimitive.h    2025-03-09 
11:19:40.000000000 +0100
+++ new/OpenCSG-1.8.2/example/displaylistPrimitive.h    2026-02-07 
18:49:03.000000000 +0100
@@ -1,5 +1,5 @@
 // OpenCSG - library for image-based CSG rendering for OpenGL
-// Copyright (C) 2002-2025, Florian Kirsch,
+// Copyright (C) 2002-2026, Florian Kirsch,
 // Hasso-Plattner-Institute at the University of Potsdam, Germany
 //
 // This library is free software; you can redistribute it and/or modify
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OpenCSG-1.8.1/example/includeGl.h 
new/OpenCSG-1.8.2/example/includeGl.h
--- old/OpenCSG-1.8.1/example/includeGl.h       2025-03-09 11:19:40.000000000 
+0100
+++ new/OpenCSG-1.8.2/example/includeGl.h       2026-02-07 18:49:03.000000000 
+0100
@@ -1,6 +1,5 @@
 // OpenCSG - library for image-based CSG rendering for OpenGL
-// Copyright (C) 2002-2025, Florian Kirsch,
-// Hasso-Plattner-Institute at the University of Potsdam, Germany
+// Copyright (C) 2023-2026, Florian Kirsch
 //
 // This library is free software; you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OpenCSG-1.8.1/example/main.cpp 
new/OpenCSG-1.8.2/example/main.cpp
--- old/OpenCSG-1.8.1/example/main.cpp  2025-03-09 11:19:40.000000000 +0100
+++ new/OpenCSG-1.8.2/example/main.cpp  2026-02-07 18:49:03.000000000 +0100
@@ -1,5 +1,5 @@
 // OpenCSG - library for image-based CSG rendering for OpenGL
-// Copyright (C) 2002-2025, Florian Kirsch,
+// Copyright (C) 2002-2026, Florian Kirsch,
 // Hasso-Plattner-Institute at the University of Potsdam, Germany
 //
 // This library is free software; you can redistribute it and/or modify
@@ -59,6 +59,7 @@
 
 bool               benchmode = false;
 bool               benchSettingFrameOne = false;
+bool               skipCubeRack = false;
 int                benchShape = BENCH_START;
 int                benchAlgorithm = GF_STANDARD;
 int                benchPerfOption = CAM_OUTSIDE_DEFAULT;
@@ -622,6 +623,8 @@
 
     benchAlgorithm = GF_STANDARD;
     ++benchShape;
+    if (skipCubeRack && (benchShape == CSG_CUBERACK))
+        ++benchShape;
     if (benchShape <= CSG_CONCAVE)
     {
         printNewBenchLine();
@@ -674,6 +677,9 @@
         {
             float correctedFps = static_cast<float>(numFramesRendered) * 
1000.0f / static_cast<float>(msec - ancient);
             fprintf(stdout, "% 11.2f", correctedFps);
+            // On a configuration that already chokes on the smaller models, 
do not bench the cube rack (it is far slower)
+            if (correctedFps < 60.0f)
+                skipCubeRack = true;
             nextBenchSetting();
 
             rot = 0.0f;
@@ -706,6 +712,7 @@
         spin = !spin;
         break;
     case 'b':
+        skipCubeRack = false;
         benchmode = true;
         benchShape = BENCH_START;
         nextBenchSetting();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OpenCSG-1.8.1/include/opencsg.h 
new/OpenCSG-1.8.2/include/opencsg.h
--- old/OpenCSG-1.8.1/include/opencsg.h 2025-03-09 11:19:40.000000000 +0100
+++ new/OpenCSG-1.8.2/include/opencsg.h 2026-02-07 18:49:03.000000000 +0100
@@ -1,5 +1,5 @@
 // OpenCSG - library for image-based CSG rendering for OpenGL
-// Copyright (C) 2002-2025, Florian Kirsch,
+// Copyright (C) 2002-2026, Florian Kirsch,
 // Hasso-Plattner-Institute at the University of Potsdam, Germany
 //
 // This library is free software; you can redistribute it and/or modify
@@ -30,8 +30,8 @@
 
 /// OpenCSG version. The version number has been introduced with version 1.3.2.
 /// Format is Major|Minor|Patch, each of them being 4-bit wide.
-#define OPENCSG_VERSION 0x0181
-#define OPENCSG_VERSION_STRING "OpenCSG 1.8.1"
+#define OPENCSG_VERSION 0x0182
+#define OPENCSG_VERSION_STRING "OpenCSG 1.8.2"
 
 namespace OpenCSG {
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OpenCSG-1.8.1/src/area.cpp 
new/OpenCSG-1.8.2/src/area.cpp
--- old/OpenCSG-1.8.1/src/area.cpp      2025-03-09 11:19:40.000000000 +0100
+++ new/OpenCSG-1.8.2/src/area.cpp      2026-02-07 18:49:03.000000000 +0100
@@ -1,5 +1,5 @@
 // OpenCSG - library for image-based CSG rendering for OpenGL
-// Copyright (C) 2002-2025, Florian Kirsch,
+// Copyright (C) 2004-2026, Florian Kirsch,
 // Hasso-Plattner-Institute at the University of Potsdam, Germany
 //
 // This library is free software; you can redistribute it and/or modify
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OpenCSG-1.8.1/src/area.h new/OpenCSG-1.8.2/src/area.h
--- old/OpenCSG-1.8.1/src/area.h        2025-03-09 11:19:40.000000000 +0100
+++ new/OpenCSG-1.8.2/src/area.h        2026-02-07 18:49:03.000000000 +0100
@@ -1,5 +1,5 @@
 // OpenCSG - library for image-based CSG rendering for OpenGL
-// Copyright (C) 2002-2025, Florian Kirsch,
+// Copyright (C) 2004-2026, Florian Kirsch,
 // Hasso-Plattner-Institute at the University of Potsdam, Germany
 //
 // This library is free software; you can redistribute it and/or modify
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OpenCSG-1.8.1/src/batch.cpp 
new/OpenCSG-1.8.2/src/batch.cpp
--- old/OpenCSG-1.8.1/src/batch.cpp     2025-03-09 11:19:40.000000000 +0100
+++ new/OpenCSG-1.8.2/src/batch.cpp     2026-02-07 18:49:03.000000000 +0100
@@ -1,5 +1,5 @@
 // OpenCSG - library for image-based CSG rendering for OpenGL
-// Copyright (C) 2002-2025, Florian Kirsch
+// Copyright (C) 2002-2026, Florian Kirsch
 // Hasso-Plattner-Institute at the University of Potsdam, Germany
 //
 // This library is free software; you can redistribute it and/or modify
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OpenCSG-1.8.1/src/batch.h 
new/OpenCSG-1.8.2/src/batch.h
--- old/OpenCSG-1.8.1/src/batch.h       2025-03-09 11:19:40.000000000 +0100
+++ new/OpenCSG-1.8.2/src/batch.h       2026-02-07 18:49:03.000000000 +0100
@@ -1,5 +1,5 @@
 // OpenCSG - library for image-based CSG rendering for OpenGL
-// Copyright (C) 2002-2025, Florian Kirsch,
+// Copyright (C) 2002-2026, Florian Kirsch,
 // Hasso-Plattner-Institute at the University of Potsdam, Germany
 //
 // This library is free software; you can redistribute it and/or modify
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OpenCSG-1.8.1/src/channelManager.cpp 
new/OpenCSG-1.8.2/src/channelManager.cpp
--- old/OpenCSG-1.8.1/src/channelManager.cpp    2025-03-09 11:19:40.000000000 
+0100
+++ new/OpenCSG-1.8.2/src/channelManager.cpp    2026-02-07 18:49:03.000000000 
+0100
@@ -1,5 +1,5 @@
 // OpenCSG - library for image-based CSG rendering for OpenGL
-// Copyright (C) 2002-2025, Florian Kirsch,
+// Copyright (C) 2002-2026, Florian Kirsch,
 // Hasso-Plattner-Institute at the University of Potsdam, Germany
 //
 // This library is free software; you can redistribute it and/or modify
@@ -27,6 +27,8 @@
 #include "offscreenBuffer.h"
 #include "openglHelper.h"
 #include "settings.h"
+
+#include <algorithm>
 #include <cassert>
 
 namespace OpenCSG {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OpenCSG-1.8.1/src/channelManager.h 
new/OpenCSG-1.8.2/src/channelManager.h
--- old/OpenCSG-1.8.1/src/channelManager.h      2025-03-09 11:19:40.000000000 
+0100
+++ new/OpenCSG-1.8.2/src/channelManager.h      2026-02-07 18:49:03.000000000 
+0100
@@ -1,5 +1,5 @@
 // OpenCSG - library for image-based CSG rendering for OpenGL
-// Copyright (C) 2002-2025, Florian Kirsch,
+// Copyright (C) 2002-2026, Florian Kirsch,
 // Hasso-Plattner-Institute at the University of Potsdam, Germany
 //
 // This library is free software; you can redistribute it and/or modify
@@ -129,6 +129,9 @@
         void clear();
 
     private:
+        ChannelManagerForBatches(const ChannelManagerForBatches&);
+        ChannelManagerForBatches& operator=(const ChannelManagerForBatches&);
+
         std::vector<std::pair<std::vector<Primitive*>, int> > mPrimitives;
     };
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OpenCSG-1.8.1/src/context.cpp 
new/OpenCSG-1.8.2/src/context.cpp
--- old/OpenCSG-1.8.1/src/context.cpp   2025-03-09 11:19:40.000000000 +0100
+++ new/OpenCSG-1.8.2/src/context.cpp   2026-02-07 18:49:03.000000000 +0100
@@ -1,5 +1,5 @@
 // OpenCSG - library for image-based CSG rendering for OpenGL
-// Copyright (C) 2006-2025, Florian Kirsch
+// Copyright (C) 2010-2026, Florian Kirsch
 //
 // This library is free software; you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -91,7 +91,7 @@
             return 0;
         }
 
-        GLuint getARBProgram(GLenum target, const char* prog, int len)
+        static GLuint getARBProgram(GLenum target, const char* prog, int len)
         {
             int context = getContext();
             ContextData& contextData = gContextDataMap[context];
@@ -125,7 +125,7 @@
             return getARBProgram(GL_FRAGMENT_PROGRAM_ARB, prog, len);
         }
 
-        GLuint getGLSLShader(GLenum target, const char* prog)
+        static GLuint getGLSLShader(GLenum target, const char* prog)
         {
             GLuint id = glCreateShader(target);
             glShaderSource(id, 1, &prog, 0);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OpenCSG-1.8.1/src/context.h 
new/OpenCSG-1.8.2/src/context.h
--- old/OpenCSG-1.8.1/src/context.h     2025-03-09 11:19:40.000000000 +0100
+++ new/OpenCSG-1.8.2/src/context.h     2026-02-07 18:49:03.000000000 +0100
@@ -1,5 +1,5 @@
 // OpenCSG - library for image-based CSG rendering for OpenGL
-// Copyright (C) 2006-2025, Florian Kirsch
+// Copyright (C) 2010-2026, Florian Kirsch
 //
 // This library is free software; you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OpenCSG-1.8.1/src/frameBufferObject.cpp 
new/OpenCSG-1.8.2/src/frameBufferObject.cpp
--- old/OpenCSG-1.8.1/src/frameBufferObject.cpp 2025-03-09 11:19:40.000000000 
+0100
+++ new/OpenCSG-1.8.2/src/frameBufferObject.cpp 2026-02-07 18:49:03.000000000 
+0100
@@ -1,5 +1,5 @@
 // OpenCSG - library for image-based CSG rendering for OpenGL
-// Copyright (C) 2006-2025, Florian Kirsch
+// Copyright (C) 2006-2026, Florian Kirsch
 //
 // This library is free software; you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OpenCSG-1.8.1/src/frameBufferObject.h 
new/OpenCSG-1.8.2/src/frameBufferObject.h
--- old/OpenCSG-1.8.1/src/frameBufferObject.h   2025-03-09 11:19:40.000000000 
+0100
+++ new/OpenCSG-1.8.2/src/frameBufferObject.h   2026-02-07 18:49:03.000000000 
+0100
@@ -1,5 +1,5 @@
 // OpenCSG - library for image-based CSG rendering for OpenGL
-// Copyright (C) 2006-2025, Florian Kirsch
+// Copyright (C) 2006-2026, Florian Kirsch
 //
 // This library is free software; you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -48,8 +48,6 @@
             /// checks whether Initialize has been called before or not
             virtual bool IsInitialized() const { return initialized; }
 
-            /// Removes the frame buffer object OpenGL resources.
-            virtual bool Reset();
             /// Change the size of the frame buffer object.
             virtual bool Resize(Dimensions dims);
 
@@ -73,7 +71,10 @@
             /// Returns the width of the frame buffer object.
             virtual int GetHeight() const { return dimensions.height; }
 
-        protected:
+        private:
+            FrameBufferObject(const FrameBufferObject&);
+            FrameBufferObject& operator=(const FrameBufferObject&);
+
             // Width and height of the frame buffer object
             Dimensions   dimensions;
 
@@ -87,9 +88,8 @@
 
             bool         initialized;
 
-        private:
-            FrameBufferObject(const FrameBufferObject&);
-            FrameBufferObject& operator=(const FrameBufferObject&);
+            /// Removes the frame buffer object OpenGL resources.
+            bool Reset();
         };
 
     } // namespace OpenGL
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OpenCSG-1.8.1/src/frameBufferObjectExt.cpp 
new/OpenCSG-1.8.2/src/frameBufferObjectExt.cpp
--- old/OpenCSG-1.8.1/src/frameBufferObjectExt.cpp      2025-03-09 
11:19:40.000000000 +0100
+++ new/OpenCSG-1.8.2/src/frameBufferObjectExt.cpp      2026-02-07 
18:49:03.000000000 +0100
@@ -1,5 +1,5 @@
 // OpenCSG - library for image-based CSG rendering for OpenGL
-// Copyright (C) 2010-2025, Florian Kirsch
+// Copyright (C) 2010-2026, Florian Kirsch
 //
 // This library is free software; you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OpenCSG-1.8.1/src/frameBufferObjectExt.h 
new/OpenCSG-1.8.2/src/frameBufferObjectExt.h
--- old/OpenCSG-1.8.1/src/frameBufferObjectExt.h        2025-03-09 
11:19:40.000000000 +0100
+++ new/OpenCSG-1.8.2/src/frameBufferObjectExt.h        2026-02-07 
18:49:03.000000000 +0100
@@ -1,5 +1,5 @@
 // OpenCSG - library for image-based CSG rendering for OpenGL
-// Copyright (C) 2010-2025, Florian Kirsch
+// Copyright (C) 2010-2026, Florian Kirsch
 //
 // This library is free software; you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -48,8 +48,6 @@
             /// checks whether Initialize has been called before or not
             virtual bool IsInitialized() const { return initialized; }
 
-            /// Removes the frame buffer object OpenGL resources.
-            virtual bool Reset();
             /// Change the size of the frame buffer object.
             virtual bool Resize(Dimensions dims);
 
@@ -73,7 +71,10 @@
             /// Returns the width of the frame buffer object.
             virtual int GetHeight() const { return dimensions.height; }
 
-        protected:
+        private:
+            FrameBufferObjectExt(const FrameBufferObjectExt&);
+            FrameBufferObjectExt& operator=(const FrameBufferObjectExt&);
+
             // Width and height of the frame buffer object
             Dimensions   dimensions;
 
@@ -87,9 +88,8 @@
 
             bool         initialized;
 
-        private:
-            FrameBufferObjectExt(const FrameBufferObjectExt&);
-            FrameBufferObjectExt& operator=(const FrameBufferObjectExt&);
+            /// Removes the frame buffer object OpenGL resources.
+            bool Reset();
         };
 
     } // namespace OpenGL
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OpenCSG-1.8.1/src/occlusionQuery.cpp 
new/OpenCSG-1.8.2/src/occlusionQuery.cpp
--- old/OpenCSG-1.8.1/src/occlusionQuery.cpp    2025-03-09 11:19:40.000000000 
+0100
+++ new/OpenCSG-1.8.2/src/occlusionQuery.cpp    2026-02-07 18:49:03.000000000 
+0100
@@ -1,5 +1,5 @@
 // OpenCSG - library for image-based CSG rendering for OpenGL
-// Copyright (C) 2002-2025, Florian Kirsch,
+// Copyright (C) 2004-2026, Florian Kirsch,
 // Hasso-Plattner-Institute at the University of Potsdam, Germany
 //
 // This library is free software; you can redistribute it and/or modify
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OpenCSG-1.8.1/src/occlusionQuery.h 
new/OpenCSG-1.8.2/src/occlusionQuery.h
--- old/OpenCSG-1.8.1/src/occlusionQuery.h      2025-03-09 11:19:40.000000000 
+0100
+++ new/OpenCSG-1.8.2/src/occlusionQuery.h      2026-02-07 18:49:03.000000000 
+0100
@@ -1,5 +1,5 @@
 // OpenCSG - library for image-based CSG rendering for OpenGL
-// Copyright (C) 2002-2025, Florian Kirsch,
+// Copyright (C) 2004-2026, Florian Kirsch,
 // Hasso-Plattner-Institute at the University of Potsdam, Germany
 //
 // This library is free software; you can redistribute it and/or modify
@@ -33,6 +33,7 @@
 
         class OcclusionQuery {
         public: // abstract base class
+            OcclusionQuery() {};
             virtual ~OcclusionQuery() {};
 
             /// begins an occlusion query
@@ -46,8 +47,9 @@
             /// whether any fragment has been rendered or not.
             virtual unsigned int getQueryResult() = 0;
 
-        protected:
-            OcclusionQuery() {};
+        private:
+            OcclusionQuery(const OcclusionQuery&);
+            OcclusionQuery& operator=(const OcclusionQuery&);
         };
 
         /// checks for OpenGL-extensions and returns a matching occlusion
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OpenCSG-1.8.1/src/offscreenBuffer.h 
new/OpenCSG-1.8.2/src/offscreenBuffer.h
--- old/OpenCSG-1.8.1/src/offscreenBuffer.h     2025-03-09 11:19:40.000000000 
+0100
+++ new/OpenCSG-1.8.2/src/offscreenBuffer.h     2026-02-07 18:49:03.000000000 
+0100
@@ -1,5 +1,5 @@
 // OpenCSG - library for image-based CSG rendering for OpenGL
-// Copyright (C) 2006-2025, Florian Kirsch
+// Copyright (C) 2006-2026, Florian Kirsch
 //
 // This library is free software; you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -39,9 +39,9 @@
             : width(w), height(h)
         {
         }
-        bool operator==(const Dimensions& other)
+        friend bool operator==(const Dimensions& me, const Dimensions& other)
         {
-            return (width == other.width) && (height == other.height);
+            return (me.width == other.width) && (me.height == other.height);
         }
         int width;
         int height;
@@ -52,7 +52,7 @@
         class OffscreenBuffer {
 
         public: // abstract base class
-
+            OffscreenBuffer() {};
             virtual ~OffscreenBuffer() {};
 
             /// Reads the current settings, such as the currently bound FBO.
@@ -67,8 +67,6 @@
             /// checks whether Initialize has been called before or not
             virtual bool IsInitialized() const = 0;
 
-            /// Change the render texture format.
-            virtual bool Reset() = 0;
             /// Change the size of the render texture. After this, Initialize
             /// must be called again.
             virtual bool Resize(Dimensions dims) = 0;
@@ -92,6 +90,10 @@
             virtual int GetWidth() const = 0;
             /// Returns the width of the offscreen buffer.
             virtual int GetHeight() const = 0;
+
+        private:
+            OffscreenBuffer(const OffscreenBuffer&);
+            OffscreenBuffer& operator=(const OffscreenBuffer&);
         };
     } // namespace OpenGL
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OpenCSG-1.8.1/src/opencsgConfig.h 
new/OpenCSG-1.8.2/src/opencsgConfig.h
--- old/OpenCSG-1.8.1/src/opencsgConfig.h       2025-03-09 11:19:40.000000000 
+0100
+++ new/OpenCSG-1.8.2/src/opencsgConfig.h       2026-02-07 18:49:03.000000000 
+0100
@@ -1,5 +1,5 @@
 // OpenCSG - library for image-based CSG rendering for OpenGL
-// Copyright (C) 2002-2025, Florian Kirsch,
+// Copyright (C) 2002-2026, Florian Kirsch,
 // Hasso-Plattner-Institute at the University of Potsdam, Germany
 //
 // This library is free software; you can redistribute it and/or modify
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OpenCSG-1.8.1/src/opencsgRender.cpp 
new/OpenCSG-1.8.2/src/opencsgRender.cpp
--- old/OpenCSG-1.8.1/src/opencsgRender.cpp     2025-03-09 11:19:40.000000000 
+0100
+++ new/OpenCSG-1.8.2/src/opencsgRender.cpp     2026-02-07 18:49:03.000000000 
+0100
@@ -1,5 +1,5 @@
 // OpenCSG - library for image-based CSG rendering for OpenGL
-// Copyright (C) 2002-2025, Florian Kirsch,
+// Copyright (C) 2002-2026, Florian Kirsch,
 // Hasso-Plattner-Institute at the University of Potsdam, Germany
 //
 // This library is free software; you can redistribute it and/or modify
@@ -58,9 +58,9 @@
     } // unnamed namespace
 
 
-    void renderDispatch(const std::vector<Primitive*>& primitives, 
-                        Algorithm algorithm, 
-                        DepthComplexityAlgorithm depthComplexityAlgorithm)
+    static void renderDispatch(const std::vector<Primitive*>& primitives,
+                               Algorithm algorithm,
+                               DepthComplexityAlgorithm 
depthComplexityAlgorithm)
     {
         if (primitives.empty()) {
             return;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OpenCSG-1.8.1/src/opencsgRender.h 
new/OpenCSG-1.8.2/src/opencsgRender.h
--- old/OpenCSG-1.8.1/src/opencsgRender.h       2025-03-09 11:19:40.000000000 
+0100
+++ new/OpenCSG-1.8.2/src/opencsgRender.h       2026-02-07 18:49:03.000000000 
+0100
@@ -1,5 +1,5 @@
 // OpenCSG - library for image-based CSG rendering for OpenGL
-// Copyright (C) 2002-2025, Florian Kirsch,
+// Copyright (C) 2002-2026, Florian Kirsch,
 // Hasso-Plattner-Institute at the University of Potsdam, Germany
 //
 // This library is free software; you can redistribute it and/or modify
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OpenCSG-1.8.1/src/openglExt.h 
new/OpenCSG-1.8.2/src/openglExt.h
--- old/OpenCSG-1.8.1/src/openglExt.h   2025-03-09 11:19:40.000000000 +0100
+++ new/OpenCSG-1.8.2/src/openglExt.h   2026-02-07 18:49:03.000000000 +0100
@@ -1,6 +1,5 @@
 // OpenCSG - library for image-based CSG rendering for OpenGL
-// Copyright (C) 2002-2025, Florian Kirsch,
-// Hasso-Plattner-Institute at the University of Potsdam, Germany
+// Copyright (C) 2023-2026, Florian Kirsch
 //
 // This library is free software; you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OpenCSG-1.8.1/src/openglHelper.cpp 
new/OpenCSG-1.8.2/src/openglHelper.cpp
--- old/OpenCSG-1.8.1/src/openglHelper.cpp      2025-03-09 11:19:40.000000000 
+0100
+++ new/OpenCSG-1.8.2/src/openglHelper.cpp      2026-02-07 18:49:03.000000000 
+0100
@@ -1,5 +1,5 @@
 // OpenCSG - library for image-based CSG rendering for OpenGL
-// Copyright (C) 2002-2025, Florian Kirsch,
+// Copyright (C) 2002-2026, Florian Kirsch,
 // Hasso-Plattner-Institute at the University of Potsdam, Germany
 //
 // This library is free software; you can redistribute it and/or modify
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OpenCSG-1.8.1/src/openglHelper.h 
new/OpenCSG-1.8.2/src/openglHelper.h
--- old/OpenCSG-1.8.1/src/openglHelper.h        2025-03-09 11:19:40.000000000 
+0100
+++ new/OpenCSG-1.8.2/src/openglHelper.h        2026-02-07 18:49:03.000000000 
+0100
@@ -1,5 +1,5 @@
 // OpenCSG - library for image-based CSG rendering for OpenGL
-// Copyright (C) 2002-2025, Florian Kirsch,
+// Copyright (C) 2002-2026, Florian Kirsch,
 // Hasso-Plattner-Institute at the University of Potsdam, Germany
 //
 // This library is free software; you can redistribute it and/or modify
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OpenCSG-1.8.1/src/primitive.cpp 
new/OpenCSG-1.8.2/src/primitive.cpp
--- old/OpenCSG-1.8.1/src/primitive.cpp 2025-03-09 11:19:40.000000000 +0100
+++ new/OpenCSG-1.8.2/src/primitive.cpp 2026-02-07 18:49:03.000000000 +0100
@@ -1,5 +1,5 @@
 // OpenCSG - library for image-based CSG rendering for OpenGL
-// Copyright (C) 2002-2025, Florian Kirsch,
+// Copyright (C) 2002-2026, Florian Kirsch,
 // Hasso-Plattner-Institute at the University of Potsdam, Germany
 //
 // This library is free software; you can redistribute it and/or modify
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OpenCSG-1.8.1/src/primitiveHelper.cpp 
new/OpenCSG-1.8.2/src/primitiveHelper.cpp
--- old/OpenCSG-1.8.1/src/primitiveHelper.cpp   2025-03-09 11:19:40.000000000 
+0100
+++ new/OpenCSG-1.8.2/src/primitiveHelper.cpp   2026-02-07 18:49:03.000000000 
+0100
@@ -1,5 +1,5 @@
 // OpenCSG - library for image-based CSG rendering for OpenGL
-// Copyright (C) 2002-2025, Florian Kirsch,
+// Copyright (C) 2002-2026, Florian Kirsch,
 // Hasso-Plattner-Institute at the University of Potsdam, Germany
 //
 // This library is free software; you can redistribute it and/or modify
@@ -101,8 +101,8 @@
             int dx = area.maxx - area.minx;
             int dy = area.maxy - area.miny;
 
-            unsigned int size = dx*dy;
-            GLubyte* buf = new GLubyte[dx*dy];
+            std::size_t size = static_cast<std::size_t>(dx) * dy;
+            GLubyte * buf = new GLubyte[size];
 
             glPixelStorei(GL_PACK_SWAP_BYTES, GL_FALSE);
             glPixelStorei(GL_PACK_ALIGNMENT, 1);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OpenCSG-1.8.1/src/primitiveHelper.h 
new/OpenCSG-1.8.2/src/primitiveHelper.h
--- old/OpenCSG-1.8.1/src/primitiveHelper.h     2025-03-09 11:19:40.000000000 
+0100
+++ new/OpenCSG-1.8.2/src/primitiveHelper.h     2026-02-07 18:49:03.000000000 
+0100
@@ -1,5 +1,5 @@
 // OpenCSG - library for image-based CSG rendering for OpenGL
-// Copyright (C) 2002-2025, Florian Kirsch,
+// Copyright (C) 2002-2026, Florian Kirsch,
 // Hasso-Plattner-Institute at the University of Potsdam, Germany
 //
 // This library is free software; you can redistribute it and/or modify
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OpenCSG-1.8.1/src/renderGoldfeather.cpp 
new/OpenCSG-1.8.2/src/renderGoldfeather.cpp
--- old/OpenCSG-1.8.1/src/renderGoldfeather.cpp 2025-03-09 11:19:40.000000000 
+0100
+++ new/OpenCSG-1.8.2/src/renderGoldfeather.cpp 2026-02-07 18:49:03.000000000 
+0100
@@ -1,5 +1,5 @@
 // OpenCSG - library for image-based CSG rendering for OpenGL
-// Copyright (C) 2002-2025, Florian Kirsch,
+// Copyright (C) 2002-2026, Florian Kirsch,
 // Hasso-Plattner-Institute at the University of Potsdam, Germany
 //
 // This library is free software; you can redistribute it and/or modify
@@ -184,7 +184,7 @@
                 default:
                     // should not happen!
                     assert(0);
-                };
+                }
 
                 glUniform4fv(col, 1, refColor);
 
@@ -416,7 +416,7 @@
 
     } // unnamed namespace
 
-    void renderGoldfeather(const std::vector<Primitive*>& primitives) 
+    static void renderGoldfeather(const std::vector<Primitive*>& primitives)
     {
         scissor = new ScissorMemo;
 
@@ -485,7 +485,7 @@
         delete scissor;
     }
 
-    bool renderOcclusionQueryGoldfeather(const std::vector<Primitive*>& 
primitives)
+    static bool renderOcclusionQueryGoldfeather(const std::vector<Primitive*>& 
primitives)
     {
         scissor = new ScissorMemo;
 
@@ -563,7 +563,7 @@
         return retVal;
     }
 
-    void renderDepthComplexitySamplingGoldfeather(const 
std::vector<Primitive*>& primitives) 
+    static void renderDepthComplexitySamplingGoldfeather(const 
std::vector<Primitive*>& primitives)
     {
         scissor = new ScissorMemo;
 
@@ -608,7 +608,7 @@
         delete scissor;
     }
 
-    ChannelManagerForBatches* getChannelManager() {
+    static ChannelManagerForBatches* getChannelManager() {
 
         if (GLAD_GL_VERSION_2_0)
         {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OpenCSG-1.8.1/src/renderSCS.cpp 
new/OpenCSG-1.8.2/src/renderSCS.cpp
--- old/OpenCSG-1.8.1/src/renderSCS.cpp 2025-03-09 11:19:40.000000000 +0100
+++ new/OpenCSG-1.8.2/src/renderSCS.cpp 2026-02-07 18:49:03.000000000 +0100
@@ -1,5 +1,5 @@
 // OpenCSG - library for image-based CSG rendering for OpenGL
-// Copyright (C) 2002-2025, Florian Kirsch,
+// Copyright (C) 2002-2026, Florian Kirsch,
 // Hasso-Plattner-Institute at the University of Potsdam, Germany
 //
 // This library is free software; you can redistribute it and/or modify
@@ -37,6 +37,7 @@
 
 #include <algorithm>
 #include <map>
+#include <string>
 
 namespace OpenCSG {
 
@@ -142,10 +143,19 @@
         // ARB variant
         class SCSChannelManagerARBProgram : public ChannelManagerForBatches {
         public:
+            SCSChannelManagerARBProgram(ProjTextureSetup);
             virtual Channel request();
             virtual void merge();
+
+        private:
+            ProjTextureSetup mProjTextureSetup;
         };
 
+        
SCSChannelManagerARBProgram::SCSChannelManagerARBProgram(ProjTextureSetup setup)
+          : mProjTextureSetup(setup)
+        {
+        }
+
         Channel SCSChannelManagerARBProgram::request() {
             ChannelManagerForBatches::request();
             mCurrentChannel = AllChannels;
@@ -217,9 +227,12 @@
 
         void SCSChannelManagerARBProgram::merge()
         {
-            GLuint vId = OpenGL::getARBVertexProgram(mergeARBVertexProgram, 
(sizeof(mergeARBVertexProgram) / sizeof(mergeARBVertexProgram[0])) - 1);
-            glBindProgramARB(GL_VERTEX_PROGRAM_ARB, vId);
-            glEnable(GL_VERTEX_PROGRAM_ARB);
+            if (mProjTextureSetup == ARBShader)
+            {
+                GLuint vId = 
OpenGL::getARBVertexProgram(mergeARBVertexProgram, 
(sizeof(mergeARBVertexProgram) / sizeof(mergeARBVertexProgram[0])) - 1);
+                glBindProgramARB(GL_VERTEX_PROGRAM_ARB, vId);
+                glEnable(GL_VERTEX_PROGRAM_ARB);
+            }
 
             GLuint fId =
                 isRectangularTexture()
@@ -228,8 +241,7 @@
             glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, fId);
             glEnable(GL_FRAGMENT_PROGRAM_ARB);
 
-            ProjTextureSetup setup = ARBShader;
-            setupProjectiveTexture(setup);
+            setupProjectiveTexture(mProjTextureSetup);
 
             glEnable(GL_ALPHA_TEST);
             glEnable(GL_CULL_FACE);
@@ -263,9 +275,13 @@
             glDisable(GL_CULL_FACE);
             glDepthFunc(GL_LEQUAL);
             glDisable(GL_FRAGMENT_PROGRAM_ARB);
-            glDisable(GL_VERTEX_PROGRAM_ARB);
 
-            resetProjectiveTexture(setup);
+            if (mProjTextureSetup == ARBShader)
+            {
+                glDisable(GL_VERTEX_PROGRAM_ARB);
+            }
+
+            resetProjectiveTexture(mProjTextureSetup);
 
             clear();
         }
@@ -389,10 +405,18 @@
             // The ARB vertex program path has the following problem:
             // With Nouveau drivers on Linux and an NVidia GTX 710, the 
ARB_position_invariant
             // option appears to be buggy sometimes, and this causes z-buffer 
artifacts.
+            // On the other hand, historical Intel drives failed to work for
+            // fixed-function vertex setup together with ARB vertex programs.
             if (   OPENCSG_HAS_EXT(ARB_vertex_program)
                 && OPENCSG_HAS_EXT(ARB_fragment_program)
             ) {
-                return new SCSChannelManagerARBProgram;
+                std::string vendor;
+                if (const char * v = (const char*)glGetString(GL_VENDOR))
+                    vendor = v;
+                bool isIntel = vendor.find("Intel") == 0;
+
+                ProjTextureSetup setup = isIntel ? ARBShader : FixedFunction;
+                return new SCSChannelManagerARBProgram(setup);
             }
 
             // The fallback path, using fixed function OpenGL, has its own 
problems:
@@ -406,7 +430,7 @@
 
         class IDGenerator {
         public:
-            IDGenerator() : counter(0) {};
+            IDGenerator() : counter(0) {}
             IdBufferId newID() {
                 ++counter;
                 IdBufferId newId;
@@ -415,7 +439,7 @@
                 newId.b =  (counter >>  8) & 0xff;
                 newId.a =  (counter >>  0) & 0xff;
                 return newId;
-            };
+            }
 
         private:
             unsigned int counter;
@@ -575,7 +599,7 @@
                         (*j)->render();
                     }
                 }
-            };
+            }
 
             glDisable(GL_STENCIL_TEST);
         }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OpenCSG-1.8.1/src/scissorMemo.cpp 
new/OpenCSG-1.8.2/src/scissorMemo.cpp
--- old/OpenCSG-1.8.1/src/scissorMemo.cpp       2025-03-09 11:19:40.000000000 
+0100
+++ new/OpenCSG-1.8.2/src/scissorMemo.cpp       2026-02-07 18:49:03.000000000 
+0100
@@ -1,5 +1,5 @@
 // OpenCSG - library for image-based CSG rendering for OpenGL
-// Copyright (C) 2002-2025, Florian Kirsch,
+// Copyright (C) 2002-2026, Florian Kirsch,
 // Hasso-Plattner-Institute at the University of Potsdam, Germany
 //
 // This library is free software; you can redistribute it and/or modify
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OpenCSG-1.8.1/src/scissorMemo.h 
new/OpenCSG-1.8.2/src/scissorMemo.h
--- old/OpenCSG-1.8.1/src/scissorMemo.h 2025-03-09 11:19:40.000000000 +0100
+++ new/OpenCSG-1.8.2/src/scissorMemo.h 2026-02-07 18:49:03.000000000 +0100
@@ -1,5 +1,5 @@
 // OpenCSG - library for image-based CSG rendering for OpenGL
-// Copyright (C) 2002-2025, Florian Kirsch,
+// Copyright (C) 2002-2026, Florian Kirsch,
 // Hasso-Plattner-Institute at the University of Potsdam, Germany
 //
 // This library is free software; you can redistribute it and/or modify
@@ -77,6 +77,9 @@
         void calculateArea();
 
     private:
+        ScissorMemo(const ScissorMemo&);
+        ScissorMemo& operator=(const ScissorMemo&);
+
         NDCVolume mIntersection;
         NDCVolume mCurrent;
         NDCVolume mArea;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OpenCSG-1.8.1/src/sequencer.h 
new/OpenCSG-1.8.2/src/sequencer.h
--- old/OpenCSG-1.8.1/src/sequencer.h   2025-03-09 11:19:40.000000000 +0100
+++ new/OpenCSG-1.8.2/src/sequencer.h   2026-02-07 18:49:03.000000000 +0100
@@ -1,5 +1,5 @@
 // OpenCSG - library for image-based CSG rendering for OpenGL
-// Copyright (C) 2025, Florian Kirsch
+// Copyright (C) 2025-2026, Florian Kirsch
 //
 // This library is free software; you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -28,6 +28,8 @@
 
 #include "opencsgConfig.h"
 
+#include <algorithm>
+
 namespace OpenCSG {
 
     class Sequencer
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OpenCSG-1.8.1/src/settings.cpp 
new/OpenCSG-1.8.2/src/settings.cpp
--- old/OpenCSG-1.8.1/src/settings.cpp  2025-03-09 11:19:40.000000000 +0100
+++ new/OpenCSG-1.8.2/src/settings.cpp  2026-02-07 18:49:03.000000000 +0100
@@ -1,5 +1,5 @@
 // OpenCSG - library for image-based CSG rendering for OpenGL
-// Copyright (C) 2006-2025, Florian Kirsch
+// Copyright (C) 2006-2026, Florian Kirsch
 //
 // This library is free software; you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -70,7 +70,7 @@
 
     static int* gSetting = 0;
 
-    void initIntOptions() {
+    static void initIntOptions() {
         if (!gSetting) {
             gSetting = new int[OptionTypeUnused];
             for (int i=0; i<OptionTypeUnused; ++i) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OpenCSG-1.8.1/src/settings.h 
new/OpenCSG-1.8.2/src/settings.h
--- old/OpenCSG-1.8.1/src/settings.h    2025-03-09 11:19:40.000000000 +0100
+++ new/OpenCSG-1.8.2/src/settings.h    2026-02-07 18:49:03.000000000 +0100
@@ -1,6 +1,5 @@
 // OpenCSG - library for image-based CSG rendering for OpenGL
-// Copyright (C) 2002-2025, Florian Kirsch,
-// Hasso-Plattner-Institute at the University of Potsdam, Germany
+// Copyright (C) 2006-2026, Florian Kirsch
 //
 // This library is free software; you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OpenCSG-1.8.1/version.txt 
new/OpenCSG-1.8.2/version.txt
--- old/OpenCSG-1.8.1/version.txt       2025-03-09 11:19:40.000000000 +0100
+++ new/OpenCSG-1.8.2/version.txt       2026-02-07 18:49:03.000000000 +0100
@@ -1 +1 @@
-OpenCSG-1.8.1
+OpenCSG-1.8.2

Reply via email to