diff --git a/.classpath b/.classpath deleted file mode 100644 index 3083ca1..0000000 --- a/.classpath +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/.project b/.project deleted file mode 100644 index 3ba52b8..0000000 --- a/.project +++ /dev/null @@ -1,23 +0,0 @@ - - - gale - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.m2e.core.maven2Builder - - - - - - org.eclipse.jdt.core.javanature - org.eclipse.m2e.core.maven2Nature - - diff --git a/lib/jogamp-fat.jar b/lib/jogamp-fat.jar deleted file mode 100644 index 2426cf1..0000000 Binary files a/lib/jogamp-fat.jar and /dev/null differ diff --git a/lib/lwjgl/LICENSE b/lib/lwjgl/LICENSE deleted file mode 100644 index a17ad0a..0000000 --- a/lib/lwjgl/LICENSE +++ /dev/null @@ -1,29 +0,0 @@ -Copyright (c) 2012-present Lightweight Java Game Library -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -- Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -- Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -- Neither the name Lightweight Java Game Library nor the names of - its contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED -TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/lib/lwjgl/assimp_license.txt b/lib/lwjgl/assimp_license.txt deleted file mode 100644 index 262606a..0000000 --- a/lib/lwjgl/assimp_license.txt +++ /dev/null @@ -1,78 +0,0 @@ -Open Asset Import Library (assimp) - -Copyright (c) 2006-2016, assimp team -All rights reserved. - -Redistribution and use of this software in source and binary forms, -with or without modification, are permitted provided that the -following conditions are met: - -* Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. - -* Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the - following disclaimer in the documentation and/or other - materials provided with the distribution. - -* Neither the name of the assimp team, nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior - written permission of the assimp team. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - -****************************************************************************** - -AN EXCEPTION applies to all files in the ./test/models-nonbsd folder. -These are 3d models for testing purposes, from various free sources -on the internet. They are - unless otherwise stated - copyright of -their respective creators, which may impose additional requirements -on the use of their work. For any of these models, see -.source.txt for more legal information. Contact us if you -are a copyright holder and believe that we credited you inproperly or -if you don't want your files to appear in the repository. - - -****************************************************************************** - -Poly2Tri Copyright (c) 2009-2010, Poly2Tri Contributors -http://code.google.com/p/poly2tri/ - -All rights reserved. -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. -* Neither the name of Poly2Tri nor the names of its contributors may be - used to endorse or promote products derived from this software without specific - prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/lib/lwjgl/build.txt b/lib/lwjgl/build.txt deleted file mode 100644 index feb8a24..0000000 --- a/lib/lwjgl/build.txt +++ /dev/null @@ -1 +0,0 @@ -LWJGL 3.2.3 SNAPSHOT build 13 \ No newline at end of file diff --git a/lib/lwjgl/dyncall_license.txt b/lib/lwjgl/dyncall_license.txt deleted file mode 100644 index 6984164..0000000 --- a/lib/lwjgl/dyncall_license.txt +++ /dev/null @@ -1,14 +0,0 @@ -Copyright (c) 2007-2015 Daniel Adler , - Tassilo Philipp - -Permission to use, copy, modify, and distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. \ No newline at end of file diff --git a/lib/lwjgl/glfw_license.txt b/lib/lwjgl/glfw_license.txt deleted file mode 100644 index 8a60e1d..0000000 --- a/lib/lwjgl/glfw_license.txt +++ /dev/null @@ -1,21 +0,0 @@ -Copyright (c) 2002-2006 Marcus Geelnard -Copyright (c) 2006-2010 Camilla Berglund - -This software is provided 'as-is', without any express or implied -warranty. In no event will the authors be held liable for any damages -arising from the use of this software. - -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it -freely, subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would - be appreciated but is not required. - -2. Altered source versions must be plainly marked as such, and must not - be misrepresented as being the original software. - -3. This notice may not be removed or altered from any source - distribution. diff --git a/lib/lwjgl/khronos_license.txt b/lib/lwjgl/khronos_license.txt deleted file mode 100644 index d7e6e9d..0000000 --- a/lib/lwjgl/khronos_license.txt +++ /dev/null @@ -1,22 +0,0 @@ -/* -** Copyright (c) 2013-2014 The Khronos Group Inc. -** -** Permission is hereby granted, free of charge, to any person obtaining a -** copy of this software and/or associated documentation files (the -** "Materials"), to deal in the Materials without restriction, including -** without limitation the rights to use, copy, modify, merge, publish, -** distribute, sublicense, and/or sell copies of the Materials, and to -** permit persons to whom the Materials are furnished to do so, subject to -** the following conditions: -** -** The above copyright notice and this permission notice shall be included -** in all copies or substantial portions of the Materials. -** -** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. -*/ \ No newline at end of file diff --git a/lib/lwjgl/lwjgl-assimp-natives-linux.jar b/lib/lwjgl/lwjgl-assimp-natives-linux.jar deleted file mode 100644 index 2c4ef0a..0000000 Binary files a/lib/lwjgl/lwjgl-assimp-natives-linux.jar and /dev/null differ diff --git a/lib/lwjgl/lwjgl-assimp-sources.jar b/lib/lwjgl/lwjgl-assimp-sources.jar deleted file mode 100644 index 403ff77..0000000 Binary files a/lib/lwjgl/lwjgl-assimp-sources.jar and /dev/null differ diff --git a/lib/lwjgl/lwjgl-assimp.jar b/lib/lwjgl/lwjgl-assimp.jar deleted file mode 100644 index eddf6e3..0000000 Binary files a/lib/lwjgl/lwjgl-assimp.jar and /dev/null differ diff --git a/lib/lwjgl/lwjgl-egl-sources.jar b/lib/lwjgl/lwjgl-egl-sources.jar deleted file mode 100644 index ecdabbe..0000000 Binary files a/lib/lwjgl/lwjgl-egl-sources.jar and /dev/null differ diff --git a/lib/lwjgl/lwjgl-egl.jar b/lib/lwjgl/lwjgl-egl.jar deleted file mode 100644 index 65a59fe..0000000 Binary files a/lib/lwjgl/lwjgl-egl.jar and /dev/null differ diff --git a/lib/lwjgl/lwjgl-glfw-natives-linux.jar b/lib/lwjgl/lwjgl-glfw-natives-linux.jar deleted file mode 100644 index e3b7ae7..0000000 Binary files a/lib/lwjgl/lwjgl-glfw-natives-linux.jar and /dev/null differ diff --git a/lib/lwjgl/lwjgl-glfw-sources.jar b/lib/lwjgl/lwjgl-glfw-sources.jar deleted file mode 100644 index f6cd77a..0000000 Binary files a/lib/lwjgl/lwjgl-glfw-sources.jar and /dev/null differ diff --git a/lib/lwjgl/lwjgl-glfw.jar b/lib/lwjgl/lwjgl-glfw.jar deleted file mode 100644 index b8bb451..0000000 Binary files a/lib/lwjgl/lwjgl-glfw.jar and /dev/null differ diff --git a/lib/lwjgl/lwjgl-jawt-sources.jar b/lib/lwjgl/lwjgl-jawt-sources.jar deleted file mode 100644 index c1ac84e..0000000 Binary files a/lib/lwjgl/lwjgl-jawt-sources.jar and /dev/null differ diff --git a/lib/lwjgl/lwjgl-jawt.jar b/lib/lwjgl/lwjgl-jawt.jar deleted file mode 100644 index 42deb21..0000000 Binary files a/lib/lwjgl/lwjgl-jawt.jar and /dev/null differ diff --git a/lib/lwjgl/lwjgl-natives-linux.jar b/lib/lwjgl/lwjgl-natives-linux.jar deleted file mode 100644 index 7b10e46..0000000 Binary files a/lib/lwjgl/lwjgl-natives-linux.jar and /dev/null differ diff --git a/lib/lwjgl/lwjgl-openal-natives-linux.jar b/lib/lwjgl/lwjgl-openal-natives-linux.jar deleted file mode 100644 index 1211dae..0000000 Binary files a/lib/lwjgl/lwjgl-openal-natives-linux.jar and /dev/null differ diff --git a/lib/lwjgl/lwjgl-openal-sources.jar b/lib/lwjgl/lwjgl-openal-sources.jar deleted file mode 100644 index ee98039..0000000 Binary files a/lib/lwjgl/lwjgl-openal-sources.jar and /dev/null differ diff --git a/lib/lwjgl/lwjgl-openal.jar b/lib/lwjgl/lwjgl-openal.jar deleted file mode 100644 index 482d924..0000000 Binary files a/lib/lwjgl/lwjgl-openal.jar and /dev/null differ diff --git a/lib/lwjgl/lwjgl-opengl-natives-linux.jar b/lib/lwjgl/lwjgl-opengl-natives-linux.jar deleted file mode 100644 index f48041b..0000000 Binary files a/lib/lwjgl/lwjgl-opengl-natives-linux.jar and /dev/null differ diff --git a/lib/lwjgl/lwjgl-opengl-sources.jar b/lib/lwjgl/lwjgl-opengl-sources.jar deleted file mode 100644 index 836432e..0000000 Binary files a/lib/lwjgl/lwjgl-opengl-sources.jar and /dev/null differ diff --git a/lib/lwjgl/lwjgl-opengl.jar b/lib/lwjgl/lwjgl-opengl.jar deleted file mode 100644 index 3a3da08..0000000 Binary files a/lib/lwjgl/lwjgl-opengl.jar and /dev/null differ diff --git a/lib/lwjgl/lwjgl-opengles-natives-linux.jar b/lib/lwjgl/lwjgl-opengles-natives-linux.jar deleted file mode 100644 index 47f1b9c..0000000 Binary files a/lib/lwjgl/lwjgl-opengles-natives-linux.jar and /dev/null differ diff --git a/lib/lwjgl/lwjgl-opengles-sources.jar b/lib/lwjgl/lwjgl-opengles-sources.jar deleted file mode 100644 index be254b7..0000000 Binary files a/lib/lwjgl/lwjgl-opengles-sources.jar and /dev/null differ diff --git a/lib/lwjgl/lwjgl-opengles.jar b/lib/lwjgl/lwjgl-opengles.jar deleted file mode 100644 index e1b4ea2..0000000 Binary files a/lib/lwjgl/lwjgl-opengles.jar and /dev/null differ diff --git a/lib/lwjgl/lwjgl-sources.jar b/lib/lwjgl/lwjgl-sources.jar deleted file mode 100644 index aa60368..0000000 Binary files a/lib/lwjgl/lwjgl-sources.jar and /dev/null differ diff --git a/lib/lwjgl/lwjgl-stable-custom-zip.json b/lib/lwjgl/lwjgl-stable-custom-zip.json deleted file mode 100644 index 89fd16e..0000000 --- a/lib/lwjgl/lwjgl-stable-custom-zip.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "build": "stable", - "mode": "zip", - "selectedAddons": [], - "platform": [ - "linux" - ], - "descriptions": false, - "compact": false, - "hardcoded": false, - "javadoc": false, - "includeJSON": true, - "source": true, - "osgi": false, - "language": "groovy", - "contents": [ - "lwjgl", - "lwjgl-assimp", - "lwjgl-egl", - "lwjgl-glfw", - "lwjgl-jawt", - "lwjgl-openal", - "lwjgl-opengl", - "lwjgl-opengles", - "lwjgl-stb" - ] -} \ No newline at end of file diff --git a/lib/lwjgl/lwjgl-stb-natives-linux.jar b/lib/lwjgl/lwjgl-stb-natives-linux.jar deleted file mode 100644 index b37e98e..0000000 Binary files a/lib/lwjgl/lwjgl-stb-natives-linux.jar and /dev/null differ diff --git a/lib/lwjgl/lwjgl-stb-sources.jar b/lib/lwjgl/lwjgl-stb-sources.jar deleted file mode 100644 index 4de978a..0000000 Binary files a/lib/lwjgl/lwjgl-stb-sources.jar and /dev/null differ diff --git a/lib/lwjgl/lwjgl-stb.jar b/lib/lwjgl/lwjgl-stb.jar deleted file mode 100644 index c80908b..0000000 Binary files a/lib/lwjgl/lwjgl-stb.jar and /dev/null differ diff --git a/lib/lwjgl/lwjgl.jar b/lib/lwjgl/lwjgl.jar deleted file mode 100644 index b147f38..0000000 Binary files a/lib/lwjgl/lwjgl.jar and /dev/null differ diff --git a/lib/lwjgl/openal_soft_license.txt b/lib/lwjgl/openal_soft_license.txt deleted file mode 100644 index 5bc8fb2..0000000 --- a/lib/lwjgl/openal_soft_license.txt +++ /dev/null @@ -1,481 +0,0 @@ - GNU LIBRARY GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1991 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the library GPL. It is - numbered 2 because it goes with version 2 of the ordinary GPL.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Library General Public License, applies to some -specially designated Free Software Foundation software, and to any -other libraries whose authors decide to use it. You can use it for -your libraries, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if -you distribute copies of the library, or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link a program with the library, you must provide -complete object files to the recipients so that they can relink them -with the library, after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - Our method of protecting your rights has two steps: (1) copyright -the library, and (2) offer you this license which gives you legal -permission to copy, distribute and/or modify the library. - - Also, for each distributor's protection, we want to make certain -that everyone understands that there is no warranty for this free -library. If the library is modified by someone else and passed on, we -want its recipients to know that what they have is not the original -version, so that any problems introduced by others will not reflect on -the original authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that companies distributing free -software will individually obtain patent licenses, thus in effect -transforming the program into proprietary software. To prevent this, -we have made it clear that any patent must be licensed for everyone's -free use or not licensed at all. - - Most GNU software, including some libraries, is covered by the ordinary -GNU General Public License, which was designed for utility programs. This -license, the GNU Library General Public License, applies to certain -designated libraries. This license is quite different from the ordinary -one; be sure to read it in full, and don't assume that anything in it is -the same as in the ordinary license. - - The reason we have a separate public license for some libraries is that -they blur the distinction we usually make between modifying or adding to a -program and simply using it. Linking a program with a library, without -changing the library, is in some sense simply using the library, and is -analogous to running a utility program or application program. However, in -a textual and legal sense, the linked executable is a combined work, a -derivative of the original library, and the ordinary General Public License -treats it as such. - - Because of this blurred distinction, using the ordinary General -Public License for libraries did not effectively promote software -sharing, because most developers did not use the libraries. We -concluded that weaker conditions might promote sharing better. - - However, unrestricted linking of non-free programs would deprive the -users of those programs of all benefit from the free status of the -libraries themselves. This Library General Public License is intended to -permit developers of non-free programs to use free libraries, while -preserving your freedom as a user of such programs to change the free -libraries that are incorporated in them. (We have not seen how to achieve -this as regards changes in header files, but we have achieved it as regards -changes in the actual functions of the Library.) The hope is that this -will lead to faster development of free libraries. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, while the latter only -works together with the library. - - Note that it is possible for a library to be covered by the ordinary -General Public License rather than by this special one. - - GNU LIBRARY GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library which -contains a notice placed by the copyright holder or other authorized -party saying it may be distributed under the terms of this Library -General Public License (also called "this License"). Each licensee is -addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also compile or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - c) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - d) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the source code distributed need not include anything that is normally -distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Library General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! diff --git a/lib/lwjgl3-awt-0.1.7-javadoc.jar b/lib/lwjgl3-awt-0.1.7-javadoc.jar deleted file mode 100644 index 0d35f41..0000000 Binary files a/lib/lwjgl3-awt-0.1.7-javadoc.jar and /dev/null differ diff --git a/lib/lwjgl3-awt-0.1.7-sources.jar b/lib/lwjgl3-awt-0.1.7-sources.jar deleted file mode 100644 index 16098aa..0000000 Binary files a/lib/lwjgl3-awt-0.1.7-sources.jar and /dev/null differ diff --git a/lib/lwjgl3-awt-0.1.7.jar b/lib/lwjgl3-awt-0.1.7.jar deleted file mode 100644 index a22019d..0000000 Binary files a/lib/lwjgl3-awt-0.1.7.jar and /dev/null differ diff --git a/lib/pngdecoder.jar b/lib/pngdecoder.jar deleted file mode 100644 index fc39e9b..0000000 Binary files a/lib/pngdecoder.jar and /dev/null differ diff --git a/pom.xml b/pom.xml index e509f40..c4aca9c 100644 --- a/pom.xml +++ b/pom.xml @@ -8,9 +8,9 @@ 21 21 3.1.1 - 3.3.3 - 0.1.8 - natives-linux-arm64 + 3.3.3 + 0.1.8 + natives-linux @@ -29,19 +29,135 @@ https://gitea.atria-soft.org/api/packages/org.atriasoft/maven - - - - - org.lwjgl - lwjgl-bom - ${lwjgl.version} - import - pom - - - - + + org.atriasoft @@ -54,80 +170,106 @@ 0.1.0 - - - org.lwjgl - lwjgl - - - org.lwjgl - lwjgl-assimp - - - org.lwjgl - lwjgl-glfw - - - org.lwjgl - lwjgl-jawt - - - org.lwjgl - lwjgl-opengl - - - org.lwjgl - lwjgl-stb - - - org.lwjgl - lwjgl - ${lwjgl.natives} - - - org.lwjgl - lwjgl-assimp - ${lwjgl.natives} - - - org.lwjgl - lwjgl-glfw - ${lwjgl.natives} - - - org.lwjgl - lwjgl-opengl - ${lwjgl.natives} - - - org.lwjgl - lwjgl-stb - ${lwjgl.natives} - + - org.lwjglx - lwjgl3-awt - ${lwjgl3-awt.version} - + org.lwjgl + lwjgl + ${lwjgl.version} + + + org.lwjgl + lwjgl-assimp + ${lwjgl.version} + + + org.lwjgl + lwjgl-glfw + ${lwjgl.version} + + + org.lwjgl + lwjgl-jawt + ${lwjgl.version} + + + org.lwjgl + lwjgl-openal + ${lwjgl.version} + + + org.lwjgl + lwjgl-opengl + ${lwjgl.version} + + + org.lwjgl + lwjgl-stb + ${lwjgl.version} + + + org.lwjgl + lwjgl + ${lwjgl.version} + ${lwjgl.natives} + + + org.lwjgl + lwjgl-assimp + ${lwjgl.version} + ${lwjgl.natives} + + + org.lwjgl + lwjgl-glfw + ${lwjgl.version} + ${lwjgl.natives} + + + org.lwjgl + lwjgl-openal + ${lwjgl.version} + ${lwjgl.natives} + + + org.lwjgl + lwjgl-opengl + ${lwjgl.version} + ${lwjgl.natives} + + + org.lwjgl + lwjgl-stb + ${lwjgl.version} + ${lwjgl.natives} + + + org.lwjglx + lwjgl3-awt + ${lwjgl3-awt.version} + org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.11.0-M2 test org.slf4j slf4j-simple - 2.0.7 + 2.1.0-alpha1 test src + + + + + test/src - ${project.basedir}/out/maven/ org.apache.maven.plugins @@ -143,6 +285,7 @@ org.apache.maven.plugins maven-source-plugin + 3.3.1 attach-sources diff --git a/src/org/atriasoft/gale/backend3d/OpenGL.java b/src/org/atriasoft/gale/backend3d/OpenGL.java index f005a11..63d3bb2 100644 --- a/src/org/atriasoft/gale/backend3d/OpenGL.java +++ b/src/org/atriasoft/gale/backend3d/OpenGL.java @@ -36,13 +36,13 @@ import org.slf4j.LoggerFactory; public class OpenGL { static final Logger LOGGER = LoggerFactory.getLogger(OpenGL.class); - + public enum ClearFlag { clearFlag_colorBuffer, // !< Indicates the buffers currently enabled for color writing. clearFlag_depthBuffer, // !< Indicates the depth buffer. clearFlag_stencilBuffer // !< Indicates the stencil buffer. } - + // We map all the flag, but not all is supported by all platform... public enum Flag { flag_blend, // !< If enabled, blend the computed fragment color values with the values in the color buffers. See glBlendFunc. @@ -126,7 +126,7 @@ public class OpenGL { flag_alphaTest, // !< flag_fog, flag_back } - + public enum RenderMode { POINT, LINE, LINE_STRIP, // !< Not supported in GALE (TODO Later) LINE_LOOP, TRIANGLE, TRIANGLE_STRIP, // !< Not supported in GALE (TODO Later) @@ -135,21 +135,21 @@ public class OpenGL { QUAD_STRIP, // !< Not supported in OpenGL-ES2 POLYGON // !< Not supported in OpenGL-ES2 } - + /* Shader wrapping : */ public enum ShaderType { VERTEX, FRAGMENT } - + public static class StateFlag { public boolean current = false; public boolean mustBeSet = false; } - + public enum Usage { streamDraw, staticDraw, dynamicDraw } - + private static final int[] TEXTURE_ID_BINDING = { GL13.GL_TEXTURE0, GL13.GL_TEXTURE1, GL13.GL_TEXTURE2, GL13.GL_TEXTURE3, GL13.GL_TEXTURE4, GL13.GL_TEXTURE5, GL13.GL_TEXTURE6, GL13.GL_TEXTURE7, GL13.GL_TEXTURE8, GL13.GL_TEXTURE9, GL13.GL_TEXTURE10, GL13.GL_TEXTURE11, GL13.GL_TEXTURE12, GL13.GL_TEXTURE13, @@ -157,34 +157,34 @@ public class OpenGL { GL13.GL_TEXTURE19, GL13.GL_TEXTURE20, GL13.GL_TEXTURE21, GL13.GL_TEXTURE22, GL13.GL_TEXTURE23, GL13.GL_TEXTURE24, GL13.GL_TEXTURE25, GL13.GL_TEXTURE26, GL13.GL_TEXTURE27, GL13.GL_TEXTURE28, GL13.GL_TEXTURE29, GL13.GL_TEXTURE30, GL13.GL_TEXTURE31 }; - + public static final int GL_RGB = GL11.GL_RGB; - + public static final int GL_RGBA = GL11.GL_RGBA; public static final int GL_UNSIGNED_BYTE = GL11.GL_UNSIGNED_BYTE; - + public static final int GL_TEXTURE_2D = GL11.GL_TEXTURE_2D; - + static final boolean DEBUG = false; // TODO externalize this ... - + static final boolean CHECKERROROPENGL = false; // TODO externalize this ... - + static final boolean DIRECT_MODE = false; // TODO externalize this ...; - + private static final List MATRIX_LIST = new ArrayList<>(); - + private static Matrix4f matrixCamera = Matrix4f.IDENTITY; - + private static int programId = 0; private static final Map CONVERT_RENDER_MODE = Map.of(RenderMode.POINT, GL11.GL_POINTS, RenderMode.LINE, GL11.GL_LINES, RenderMode.LINE_STRIP, GL11.GL_LINE_STRIP, RenderMode.LINE_LOOP, GL11.GL_LINE_LOOP, RenderMode.TRIANGLE, GL11.GL_TRIANGLES, RenderMode.TRIANGLE_STRIP, GL11.GL_TRIANGLE_STRIP, RenderMode.TRIANGLE_FAN, GL11.GL_TRIANGLE_FAN, RenderMode.QUAD, GL11.GL_QUADS, RenderMode.QUAD_STRIP, GL11.GL_QUAD_STRIP, RenderMode.POLYGON, GL11.GL_POLYGON); - + private static final Map BASIC_FLAG; private static boolean flagsStatesChange = false; - + private static final Map FLAGS_STATES = new HashMap<>(); public static Map convertUsage; static { @@ -259,7 +259,7 @@ public class OpenGL { private static final Map BASIC_FLAG_CLEAR = Map.of(ClearFlag.clearFlag_colorBuffer, GL11.GL_COLOR_BUFFER_BIT, ClearFlag.clearFlag_depthBuffer, GL11.GL_DEPTH_BUFFER_BIT, ClearFlag.clearFlag_stencilBuffer, GL11.GL_STENCIL_BUFFER_BIT); - + /** * enable Texture on the system * @param textureID Id of the texture 0 .. 13 @@ -272,50 +272,50 @@ public class OpenGL { LOGGER.error("try to bind texture with no program set"); } } - + public static void bindBuffer(final int bufferId) { GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, bufferId); OpenGL.checkGlError("glBindBuffer"); } - + public static void bindTexture2D(final int texId) { GL11.glBindTexture(GL11.GL_TEXTURE_2D, texId); } - + public static void blendFuncAuto() { GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); } - + public static void bufferData(final Color[] data, final Usage usage) { final FloatBuffer buffer = OpenGL.storeDataInFloatBuffer(data); GL15.glBufferData(GL15.GL_ARRAY_BUFFER, buffer, OpenGL.convertUsage.get(usage)); OpenGL.checkGlError("glBufferData"); } - + public static void bufferData(final float[] data, final Usage usage) { final FloatBuffer buffer = OpenGL.storeDataInFloatBuffer(data); GL15.glBufferData(GL15.GL_ARRAY_BUFFER, buffer, OpenGL.convertUsage.get(usage)); OpenGL.checkGlError("glBufferData"); } - + public static void bufferData(final int[] data, final Usage usage) { final IntBuffer buffer = OpenGL.storeDataInFloatBuffer(data); GL15.glBufferData(GL15.GL_ARRAY_BUFFER, buffer, OpenGL.convertUsage.get(usage)); OpenGL.checkGlError("glBufferData"); } - + public static void bufferData(final Vector2f[] data, final Usage usage) { final FloatBuffer buffer = OpenGL.storeDataInFloatBuffer(data); GL15.glBufferData(GL15.GL_ARRAY_BUFFER, buffer, OpenGL.convertUsage.get(usage)); OpenGL.checkGlError("glBufferData"); } - + public static void bufferData(final Vector3f[] data, final Usage usage) { final FloatBuffer buffer = OpenGL.storeDataInFloatBuffer(data); GL15.glBufferData(GL15.GL_ARRAY_BUFFER, buffer, OpenGL.convertUsage.get(usage)); OpenGL.checkGlError("glBufferData"); } - + public static void checkGlError(final String op) { //int localLine = Thread.currentThread().getStackTrace()[2].getLineNumber(); // if (CHECKERROROPENGL) { @@ -326,13 +326,14 @@ public class OpenGL { // } // if (hasError) { // LOGGER.critical("plop"); + // System.exit(-1); // } // for (GLint error = glGetError(); error; error = glGetError()) { // LOGGER.error("after " + op + "() glError (" + error + ")"); // } // } } - + /** * clear sets the bitplane area of the window to values previously * selected by clearColor, clearDepth, and clearStencil. Multiple color @@ -349,7 +350,7 @@ public class OpenGL { GL11.glClear(OpenGL.BASIC_FLAG_CLEAR.get(flag)); OpenGL.checkGlError("glClear"); } - + /** * Specifies the clear color value When clear is requested * @param color cleear color of the screen @@ -358,7 +359,7 @@ public class OpenGL { GL11.glClearColor(color.r(), color.g(), color.b(), color.a()); OpenGL.checkGlError("glClearColor"); } - + /** * Specifies the depth value used when the depth buffer is cleared. The * initial value is 1. @@ -368,14 +369,14 @@ public class OpenGL { GL11.glClearDepth(value); OpenGL.checkGlError("glClearDepth"); } - + private static void clearFlagState() { for (final Map.Entry elem : OpenGL.FLAGS_STATES.entrySet()) { elem.getValue().current = false; elem.getValue().mustBeSet = false; } } - + /** * Specifies the index used by clear to clear the stencil buffer. s is * masked with 2 m - 1 , where m is the number of bits in the stencil @@ -386,7 +387,7 @@ public class OpenGL { GL11.glClearStencil(value); OpenGL.checkGlError("glClearStencil"); } - + public static boolean deleteBuffers(final int[] buffers) { if (buffers.length == 0) { LOGGER.warn("try to delete vector buffer with size 0"); @@ -398,7 +399,7 @@ public class OpenGL { Arrays.fill(buffers, -1); return true; } - + /** * disable Texture on the system * @param flagID The flag requested @@ -409,7 +410,7 @@ public class OpenGL { // // } } - + /** * disable a flag on the system * @param flagID The flag requested @@ -426,7 +427,7 @@ public class OpenGL { // LOGGER.debug(" == >" + this.flagsStates); } } - + /** * draw a specific array == > this enable mode difference ... */ @@ -437,7 +438,7 @@ public class OpenGL { OpenGL.checkGlError("glDrawArrays"); } } - + public static void drawElements(final RenderMode mode, final int vertexCount) { if (OpenGL.programId >= 0) { OpenGL.updateAllFlags(); @@ -445,7 +446,7 @@ public class OpenGL { OpenGL.checkGlError("glDrawElements"); } } - + /** * enable a flag on the system * @param flagID The flag requested @@ -462,14 +463,14 @@ public class OpenGL { // LOGGER.debug(" == >" + this.flagsStates); } } - + /** * */ public static void finish() { OpenGL.programId = -1; } - + /** * */ @@ -481,11 +482,11 @@ public class OpenGL { // LOGGER.info("== FLUSH OPEN GL ==" ); // LOGGER.info("========================"); } - + public static int genBuffers() { return GL15.glGenBuffers(); } - + public static boolean genBuffers(final int[] buffers) { if (buffers.length == 0) { LOGGER.warn("try to generate vector buffer with size 0"); @@ -503,7 +504,7 @@ public class OpenGL { } return hasError; } - + /** * get a reference on the current matrix camera destinate to opengl * renderer. @@ -512,7 +513,7 @@ public class OpenGL { public static Matrix4f getCameraMatrix() { return OpenGL.matrixCamera; } - + /** * get a reference on the current matrix destinate to opengl renderer. * @return The requested matrix. @@ -524,15 +525,15 @@ public class OpenGL { } return OpenGL.MATRIX_LIST.get(OpenGL.MATRIX_LIST.size() - 1); } - + public static void glDeleteTextures(final int textureId) { GL11.glDeleteTextures(textureId); } - + public static int glGenTextures() { return GL11.glGenTextures(); } - + public static void glTexImage2D( final int level, final int internalFormat, @@ -550,7 +551,7 @@ public class OpenGL { GL11.glTexImage2D(GL11.GL_TEXTURE_2D, level, internalFormat, width, height, border, format, sizeObject, dataBuffer); } - + public static void glTexImage2D( final int level, final int internalFormat, @@ -562,7 +563,7 @@ public class OpenGL { final ByteBuffer data) { GL11.glTexImage2D(GL11.GL_TEXTURE_2D, level, internalFormat, width, height, border, format, sizeObject, data); } - + public static void glTexSubImage2D( final int level, final int xOffset, @@ -580,7 +581,7 @@ public class OpenGL { GL11.glTexSubImage2D(GL11.GL_TEXTURE_2D, level, xOffset, yOffset, width, height, format, sizeObject, dataBuffer); } - + public static void glTexSubImage2D( final int level, final int xOffset, @@ -592,7 +593,7 @@ public class OpenGL { final ByteBuffer data) { GL11.glTexSubImage2D(GL11.GL_TEXTURE_2D, level, xOffset, yOffset, width, height, format, sizeObject, data); } - + /** * Get the current thread context status. * @return true The threflagsStates.putn acces to @@ -606,7 +607,7 @@ public class OpenGL { } return OpenGL.THREAD_HAS_CONTEXT.get(curentThreadId); } - + /** * Lock the openGL context for one user only == > better to keep flags * and other things ... @@ -620,7 +621,7 @@ public class OpenGL { OpenGL.clearFlagState(); OpenGL.programId = -1; } - + /** * remove the current matrix and get the last one from the matrix stack. */ @@ -636,7 +637,7 @@ public class OpenGL { OpenGL.MATRIX_LIST.remove(OpenGL.MATRIX_LIST.size() - 1); OpenGL.matrixCamera = Matrix4f.IDENTITY; } - + public static boolean programAttach(final int prog, final int shader) { if (prog < 0) { LOGGER.error("wrong program ID"); @@ -650,7 +651,7 @@ public class OpenGL { OpenGL.checkGlError("glAttachShader"); return true; } - + public static void programBindAttribute(final int prog, final int attribute, final String variableName) { if (prog < 0) { LOGGER.error("wrong program ID"); @@ -658,7 +659,7 @@ public class OpenGL { } GL20.glBindAttribLocation(prog, attribute, variableName); } - + public static boolean programCompile(final int prog) { if (prog < 0) { LOGGER.error("wrong program ID"); @@ -667,7 +668,7 @@ public class OpenGL { GL20.glLinkProgram(prog); OpenGL.checkGlError("glLinkProgram"); GL20.glValidateProgram(prog); - + // GLint linkStatus = GLFALSE; // glGetProgramiv(GLint(prog), GLLINKSTATUS, linkStatus); // checkGlError("glGetProgramiv"); @@ -702,7 +703,7 @@ public class OpenGL { // } return true; } - + // ------------------------------------------------------------------------------------ // -- Open GL program ... // ------------------------------------------------------------------------------------ @@ -716,7 +717,7 @@ public class OpenGL { LOGGER.debug("Create program with oglID=" + programId); return programId; } - + public static boolean programDetach(final int prog, final int shader) { if (prog < 0) { LOGGER.error("wrong program ID"); @@ -730,7 +731,7 @@ public class OpenGL { OpenGL.checkGlError("glDetachShader"); return true; } - + public static int programGetAttributeLocation(final int prog, final String name) { if (prog < 0) { LOGGER.error("wrong program ID"); @@ -748,7 +749,7 @@ public class OpenGL { } return val; } - + public static int programGetUniformLocation(final int prog, final String name) { if (prog < 0) { LOGGER.error("wrong program ID"); @@ -771,28 +772,28 @@ public class OpenGL { } return val; } - + public static void programLoadUniformBoolean(final int location, final boolean value) { // System.out.println("set value " + value + " " + (value==true?1.0f:0.0f)); GL20.glUniform1f(location, value ? 1.0f : 0.0f); } - + public static void programLoadUniformColor(final int location, final Color value) { GL20.glUniform4f(location, value.r(), value.g(), value.b(), value.a()); } - + public static void programLoadUniformColorRGB(final int location, final Color value) { GL20.glUniform3f(location, value.r(), value.g(), value.b()); } - + public static void programLoadUniformFloat(final int location, final float value) { GL20.glUniform1f(location, value); } - + public static void programLoadUniformFloat(final int location, final float value, final float value2) { GL20.glUniform2f(location, value, value2); } - + public static void programLoadUniformFloat( final int location, final float value, @@ -800,7 +801,7 @@ public class OpenGL { final float value3) { GL20.glUniform3f(location, value, value2, value3); } - + public static void programLoadUniformFloat( final int location, final float value, @@ -809,19 +810,19 @@ public class OpenGL { final float value4) { GL20.glUniform4f(location, value, value2, value3, value4); } - + public static void programLoadUniformInt(final int location, final int value) { GL20.glUniform1i(location, value); } - + public static void programLoadUniformInt(final int location, final int value, final int value2) { GL20.glUniform2i(location, value, value2); } - + public static void programLoadUniformInt(final int location, final int value, final int value2, final int value3) { GL20.glUniform3i(location, value, value2, value3); } - + public static void programLoadUniformInt( final int location, final int value, @@ -830,35 +831,35 @@ public class OpenGL { final int value4) { GL20.glUniform4i(location, value, value2, value3, value4); } - + public static void programLoadUniformMatrix(final int location, final Matrix4f value) { GL20.glUniformMatrix4fv(location, true, value.asArray()); } - + public static void programLoadUniformMatrix(final int location, final Matrix4f value, final boolean transpose) { GL20.glUniformMatrix4fv(location, transpose, value.asArray()); } - + public static void programLoadUniformVector(final int location, final Vector2f value) { GL20.glUniform2f(location, value.x(), value.y()); } - + public static void programLoadUniformVector(final int location, final Vector2i value) { GL20.glUniform2i(location, value.x(), value.y()); } - + public static void programLoadUniformVector(final int location, final Vector3f value) { GL20.glUniform3f(location, value.x(), value.y(), value.z()); } - + public static void programLoadUniformVector(final int location, final Vector3i value) { GL20.glUniform3i(location, value.x(), value.y(), value.z()); } - + public static void programLoadUniformVector(final int location, final Vector4f value) { GL20.glUniform4f(location, value.x(), value.y(), value.z(), value.w()); } - + public static void programRemove(final int prog) { if (prog < 0) { return; @@ -867,11 +868,11 @@ public class OpenGL { GL20.glDeleteProgram(prog); OpenGL.checkGlError("glDeleteProgram"); } - + public static void programUnUse(final int id) { // nothing to do ... } - + // public static void drawElements(RenderMode mode, List indices) { // if (this.programId >= 0) { // updateAllFlags(); @@ -919,7 +920,7 @@ public class OpenGL { } OpenGL.checkGlError("glUseProgram"); } - + /** * store current matrix in the matrix stack. */ @@ -933,7 +934,7 @@ public class OpenGL { final Matrix4f tmp = OpenGL.MATRIX_LIST.get(OpenGL.MATRIX_LIST.size() - 1); OpenGL.MATRIX_LIST.add(tmp); } - + protected static StringBuilder readLocalFile(final String name) { final StringBuilder fileSource = new StringBuilder(); try { @@ -949,7 +950,7 @@ public class OpenGL { } return fileSource; } - + protected static StringBuilder readLocalFile(final Uri name) { final StringBuilder fileSource = new StringBuilder(); try { @@ -971,7 +972,7 @@ public class OpenGL { } return fileSource; } - + public static void reset() { if (OpenGL.DIRECT_MODE) { LOGGER.error("TODO ..."); @@ -981,14 +982,14 @@ public class OpenGL { OpenGL.updateAllFlags(); } } - + public static void resetFlagState() { for (final Map.Entry elem : OpenGL.FLAGS_STATES.entrySet()) { elem.getValue().mustBeSet = false; } OpenGL.flagsStatesChange = true; } - + /** * When you will done an opengl rendering, you might call this reset * matrix first. It remove all the stach of the matrix pushed. @@ -1003,7 +1004,7 @@ public class OpenGL { OpenGL.MATRIX_LIST.clear(); OpenGL.MATRIX_LIST.add(newOne); } - + /** * set a reference on the current camera to opengl renderer. * @param newOne The requested matrix. @@ -1011,11 +1012,11 @@ public class OpenGL { public static void setCameraMatrix(final Matrix4f newOne) { OpenGL.matrixCamera = newOne; } - + public static void setDeathMask(final boolean state) { GL11.glDepthMask(state); } - + /** * this funtion configure the current use matrix for the renderer * (call @ref Push before, and @ref Pop when no more needed). @@ -1031,51 +1032,51 @@ public class OpenGL { } OpenGL.MATRIX_LIST.set(OpenGL.MATRIX_LIST.size() - 1, newOne); } - + public static void setTexture2DFilterLinear() { GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_LINEAR); GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_LINEAR); } - + public static void setTexture2DFilterNearest() { GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_NEAREST); } - + public static void setTexture2DWrapClampToEdge() { GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, GL12.GL_CLAMP_TO_EDGE); GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, GL12.GL_CLAMP_TO_EDGE); } - + public static void setTexture2DWrapRepeat() { GL11.glTexParameteri(OpenGL.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, GL11.GL_REPEAT); GL11.glTexParameteri(OpenGL.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, GL11.GL_REPEAT); } - + public static void setViewPort(final Vector2f start, final Vector2f stop) { // LOGGER.info("setViewport " + start + " " + stop); GL11.glViewport((int) start.x(), (int) start.y(), (int) stop.x(), (int) stop.y()); OpenGL.checkGlError("glViewport"); } - + public static void setViewPort(final Vector2i start, final Vector2i stop) { // LOGGER.info("setViewport " + start + " " + stop); GL11.glViewport(start.x(), start.y(), stop.x(), stop.y()); OpenGL.checkGlError("glViewport"); } - + public static void setViewPort(final Vector3f start, final Vector3f stop) { // LOGGER.info("setViewport " + start + " " + stop); GL11.glViewport((int) start.x(), (int) start.y(), (int) stop.x(), (int) stop.y()); OpenGL.checkGlError("glViewport"); } - + public static void setViewPort(final Vector3i start, final Vector3i stop) { // LOGGER.info("setViewport " + start + " " + stop); GL11.glViewport(start.x(), start.y(), stop.x(), stop.y()); OpenGL.checkGlError("glViewport"); } - + private static int shaderCreate(final ShaderType type) { int shaderId = 0; if (type == ShaderType.VERTEX) { @@ -1096,7 +1097,7 @@ public class OpenGL { } return shaderId; } - + public static int shaderLoad(final Uri file, final ShaderType type) { System.out.println("Load shader: '" + file + "'"); final StringBuilder shaderSource = OpenGL.readLocalFile(file); @@ -1110,7 +1111,7 @@ public class OpenGL { } return shaderID; } - + public static void shaderRemove(final int shader) { if (shader < 0) { return; @@ -1119,7 +1120,7 @@ public class OpenGL { GL20.glDeleteShader(shader); OpenGL.checkGlError("glDeleteShader"); } - + public static FloatBuffer storeDataInFloatBuffer(final Color[] data) { final float[] tmpData = new float[data.length * 4]; for (int iii = 0; iii < data.length; iii++) { @@ -1142,21 +1143,21 @@ public class OpenGL { return buffer; */ } - + private static FloatBuffer storeDataInFloatBuffer(final float[] data) { final FloatBuffer buffer = BufferUtils.createFloatBuffer(data.length); buffer.put(data); buffer.flip(); return buffer; } - + private static IntBuffer storeDataInFloatBuffer(final int[] data) { final IntBuffer buffer = BufferUtils.createIntBuffer(data.length); buffer.put(data); buffer.flip(); return buffer; } - + public static FloatBuffer storeDataInFloatBuffer(final Vector2f[] data) { final float[] tmpData = new float[data.length * 2]; for (int iii = 0; iii < data.length; iii++) { @@ -1175,7 +1176,7 @@ public class OpenGL { return buffer; */ } - + public static FloatBuffer storeDataInFloatBuffer(final Vector3f[] data) { final float[] tmpData = new float[data.length * 3]; for (int iii = 0; iii < data.length; iii++) { @@ -1198,14 +1199,14 @@ public class OpenGL { return buffer; */ } - + /** * */ public static void swap() { - + } - + /** * must be called by the thread that has openGl context to notify the * system @@ -1215,7 +1216,7 @@ public class OpenGL { final long curentThreadId = Thread.currentThread().getId(); OpenGL.THREAD_HAS_CONTEXT.put(curentThreadId, true); } - + /** * At the end of the thread exection, set the thead has no more openGL * cotext @@ -1224,20 +1225,20 @@ public class OpenGL { final long curentThreadId = Thread.currentThread().getId(); OpenGL.THREAD_HAS_CONTEXT.remove(curentThreadId); } - + public static boolean unbindBuffer() { GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0); OpenGL.checkGlError("glBindBuffer(0)"); return true; } - + /** * Un-lock the openGL context for an other user... */ public static void unLock() { // mutexOpenGl().unLock(); } - + /** * @brieg update all the internal flag needed to be set from tre previous * element set ... @@ -1267,12 +1268,12 @@ public class OpenGL { } } } - + public static void vertexAttribPointerFloat(final int id, final int size) { GL20.glVertexAttribPointer(id, size, GL11.GL_FLOAT, false, 0, 0); OpenGL.checkGlError("glVertexAttribPointer"); } - + private OpenGL() {} - + } diff --git a/src/org/atriasoft/gale/resource/ResourceTexture2.java b/src/org/atriasoft/gale/resource/ResourceTexture2.java index c2cd4fc..3a73c67 100644 --- a/src/org/atriasoft/gale/resource/ResourceTexture2.java +++ b/src/org/atriasoft/gale/resource/ResourceTexture2.java @@ -17,17 +17,17 @@ import org.slf4j.LoggerFactory; public class ResourceTexture2 extends Resource { static final Logger LOGGER = LoggerFactory.getLogger(ResourceTexture2.class); - + public enum TextureColorMode { rgb, // !< red/green/blue data rgba // !< red/green/blue/alpha data } - + public static ResourceTexture2 create() { LOGGER.trace("KEEP: Resource Texture Dynamic: "); return new ResourceTexture2(); } - + public static ResourceTexture2 create(final Uri uri) { LOGGER.trace("KEEP: Resource Texture: " + uri); final Resource object2 = Resource.getManager().localKeep(uri); @@ -42,7 +42,7 @@ public class ResourceTexture2 extends Resource { LOGGER.trace("CREATE: new Texture: " + uri); return new ResourceTexture2(uri); } - + public static ResourceTexture2 createNamed(final String uri) { LOGGER.trace("KEEP: Resource Texture Named: " + uri); final Resource object2 = Resource.getManager().localKeep(uri); @@ -57,7 +57,7 @@ public class ResourceTexture2 extends Resource { LOGGER.debug("CREATE: new Texture Named: " + uri); return new ResourceTexture2(uri); } - + /* * public static ResourceTexture2 createFromPng(final Uri uriTexture) { return * createFromPng(uriTexture, 1); } @@ -70,7 +70,9 @@ public class ResourceTexture2 extends Resource { * (resource2 != null) { if (resource2 instanceof ResourceTexture2) { * resource2.keep(); return (ResourceTexture2) resource2; } * LOGGER.critical("Request resource file : '" + name + - * "' With the wrong type (dynamic cast error)"); return null; } resource = new + * "' With the wrong type (dynamic cast error)"); + * System.exit(-1); + * return null; } resource = new * ResourceTexture2(uriTexture, textureUnit); final ImageRawData decodedData = * ImageLoader.decodePngFile(uriTexture); * resource.setTexture(decodedData.getBuffer(), new @@ -78,7 +80,7 @@ public class ResourceTexture2 extends Resource { * (decodedData.isHasAlpha() == true ? TextureColorMode.rgba : * TextureColorMode.rgb), textureUnit); resource.flush(); return resource; } */ - + // openGl Context properties : protected ImageByte data = new ImageByteRGBA(32, 32); // !< Color space of the image. @@ -94,18 +96,18 @@ public class ResourceTexture2 extends Resource { // ! some image are not square == > we need to sqared it to prevent some openGl // api error the the displayable size is not all the time 0.0 . 1.0 protected Vector2i realImageSize = new Vector2i(1, 1); - + // repeat mode of the image (repeat the image if out of range [0..1]) protected boolean repeat = false; - + protected int texId = -1; // !< openGl textureID. - + public ResourceTexture2() {} - + public ResourceTexture2(final String filename) { super(filename); } - + /* * public void bindForRendering(final int idTexture) { if (this.loaded == false) * { return; } GL13.glActiveTexture(textureIdBinding[idTexture]); @@ -113,11 +115,11 @@ public class ResourceTexture2 extends Resource { * == TextureColorMode.rgb) { OpenGL.enable(OpenGL.Flag.flagcullFace); * OpenGL.enable(OpenGL.Flag.flagback); } } */ - + public ResourceTexture2(final Uri filename) { super(filename); } - + public void bindForRendering(final int idTexture) { if (!this.loaded) { return; @@ -129,36 +131,36 @@ public class ResourceTexture2 extends Resource { OpenGL.enable(OpenGL.Flag.flag_back); } } - + @Override public void cleanUp() { removeContext(); } - + // Flush the data to send it at the openGl system public synchronized void flush() { // request to the manager to be call at the next update ... LOGGER.trace("Request UPDATE of Element"); Resource.getManager().update(this); } - + // Get the reference on this image to draw something on it ... public ImageByte get() { return this.data; } - + public Vector2i getOpenGlSize() { return this.data.getSize(); } - + public int getRendererId() { return this.texId; } - + public Vector2i getUsableSize() { return this.realImageSize; } - + @Override public synchronized void removeContext() { if (this.loaded) { @@ -169,13 +171,13 @@ public class ResourceTexture2 extends Resource { this.loaded = false; } } - + @Override public synchronized void removeContextToLate() { this.loaded = false; this.texId = -1; } - + /** * Set the image in the texture system * @note It will resize in square2 if needed by the system. @@ -194,7 +196,7 @@ public class ResourceTexture2 extends Resource { // } flush(); } - + /** * Set the Filter mode to apply at the image when display with a scale * (not 1:1 ratio) @@ -203,13 +205,13 @@ public class ResourceTexture2 extends Resource { public void setFilterMode(final TextureFilter filter) { this.filter = filter; } - + // You must set the size here, because it will be set in multiple of pow(2) public synchronized void setImageSize(Vector2i newSize) { newSize = new Vector2i(Tools.nextP2(newSize.x()), Tools.nextP2(newSize.y())); this.data.resize(newSize.x(), newSize.y()); } - + /** * Set the repeate mode of the images if UV range is out of [0..1] * @param value Value of the new repeate mode @@ -217,7 +219,7 @@ public class ResourceTexture2 extends Resource { public void setRepeat(final boolean value) { this.repeat = value; } - + public void unBindForRendering() { if (!this.loaded) { return; @@ -227,7 +229,7 @@ public class ResourceTexture2 extends Resource { OpenGL.disable(OpenGL.Flag.flag_back); } } - + @Override public synchronized boolean updateContext() { LOGGER.trace("updateContext [START]"); @@ -261,7 +263,7 @@ public class ResourceTexture2 extends Resource { // in all case we set the texture properties : // TODO check error ??? OpenGL.bindTexture2D(this.texId); - + if (!this.loaded) { if (!this.repeat) { OpenGL.setTexture2DWrapClampToEdge(); @@ -285,7 +287,7 @@ public class ResourceTexture2 extends Resource { typeObject, // format sizeObject, // type this.data.getRaw()); - + } else { OpenGL.glTexSubImage2D(0, // Level 0, // x offset @@ -300,5 +302,5 @@ public class ResourceTexture2 extends Resource { // LOGGER.error(" updateContext [STOP] ==> " + (toc - toc1)); return true; } - + } diff --git a/resources/resources/gale/data/simple3D.frag b/src/resources/gale/data/simple3D.frag similarity index 100% rename from resources/resources/gale/data/simple3D.frag rename to src/resources/gale/data/simple3D.frag diff --git a/resources/resources/gale/data/simple3D.vert b/src/resources/gale/data/simple3D.vert similarity index 100% rename from resources/resources/gale/data/simple3D.vert rename to src/resources/gale/data/simple3D.vert