diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/gpu/GpuPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/gpu/GpuPlugin.java index dfcdf67309..252193f0c6 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/gpu/GpuPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/gpu/GpuPlugin.java @@ -85,6 +85,7 @@ import static net.runelite.client.plugins.gpu.GLUtil.inputStreamToString; import net.runelite.client.plugins.gpu.config.AntiAliasingMode; import net.runelite.client.plugins.gpu.template.Template; import net.runelite.client.ui.DrawManager; +import net.runelite.client.util.OSType; @PluginDescriptor( name = "GPU", @@ -436,7 +437,35 @@ public class GpuPlugin extends Plugin implements DrawCallbacks glGeomShader = gl.glCreateShader(gl.GL_GEOMETRY_SHADER); glFragmentShader = gl.glCreateShader(gl.GL_FRAGMENT_SHADER); - Function resourceLoader = (s) -> inputStreamToString(getClass().getResourceAsStream(s)); + final String glVersionHeader; + + if (OSType.getOSType() == OSType.Linux) + { + glVersionHeader = + "#version 420\n" + + "#extension GL_ARB_compute_shader : require\n" + + "#extension GL_ARB_shader_storage_buffer_object : require\n"; + } + else + { + glVersionHeader = "#version 430\n"; + } + + Function resourceLoader = (s) -> + { + if (s.endsWith(".glsl")) + { + return inputStreamToString(getClass().getResourceAsStream(s)); + } + + if (s.equals("version_header")) + { + return glVersionHeader; + } + + return ""; + }; + Template template = new Template(resourceLoader); String source = template.process(resourceLoader.apply("geom.glsl")); diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/gpu/comp.glsl b/runelite-client/src/main/resources/net/runelite/client/plugins/gpu/comp.glsl index 7b79f78d8a..f569bceed6 100644 --- a/runelite-client/src/main/resources/net/runelite/client/plugins/gpu/comp.glsl +++ b/runelite-client/src/main/resources/net/runelite/client/plugins/gpu/comp.glsl @@ -23,9 +23,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#version 420 -#extension GL_ARB_compute_shader : require -#extension GL_ARB_shader_storage_buffer_object : require +#include version_header shared int totalNum[12]; // number of faces with a given priority shared int totalDistance[12]; // sum of distances to faces of a given priority diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/gpu/comp_small.glsl b/runelite-client/src/main/resources/net/runelite/client/plugins/gpu/comp_small.glsl index fa14aad43a..edb8375900 100644 --- a/runelite-client/src/main/resources/net/runelite/client/plugins/gpu/comp_small.glsl +++ b/runelite-client/src/main/resources/net/runelite/client/plugins/gpu/comp_small.glsl @@ -23,9 +23,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#version 420 -#extension GL_ARB_compute_shader : require -#extension GL_ARB_shader_storage_buffer_object : require +#include version_header shared int totalNum[12]; // number of faces with a given priority shared int totalDistance[12]; // sum of distances to faces of a given priority diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/gpu/comp_unordered.glsl b/runelite-client/src/main/resources/net/runelite/client/plugins/gpu/comp_unordered.glsl index 0caf9376ff..b4b526838b 100644 --- a/runelite-client/src/main/resources/net/runelite/client/plugins/gpu/comp_unordered.glsl +++ b/runelite-client/src/main/resources/net/runelite/client/plugins/gpu/comp_unordered.glsl @@ -23,9 +23,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#version 420 -#extension GL_ARB_compute_shader : require -#extension GL_ARB_shader_storage_buffer_object : require +#include version_header #include comp_common.glsl