diff --git a/src/graphics/java/speiger/src/coreengine/graphics/opengl/core/GLGraphicsDevice.java b/src/graphics/java/speiger/src/coreengine/graphics/opengl/core/GLGraphicsDevice.java index 4e3f215..e91f0a6 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/opengl/core/GLGraphicsDevice.java +++ b/src/graphics/java/speiger/src/coreengine/graphics/opengl/core/GLGraphicsDevice.java @@ -207,6 +207,7 @@ public class GLGraphicsDevice implements GraphicsDevice { return false; } GL20.glAttachShader(T, id); + shaders.add(id); } for(BufferAttribute attribute : ObjectIterables.flatMap(pipeline.attributes(), VertexBinding::attributes)) { GL20.glBindAttribLocation(T, attribute.index(), attribute.name()); @@ -237,6 +238,7 @@ public class GLGraphicsDevice implements GraphicsDevice { //TODO Warn that location wasn't found continue; } + GL31.glUniformBlockBinding(program, location, binding.slot()); uniforms.add(binding.name(), binding.slot(), new UniformObject(binding.slot())); } ShaderInstance instance = new ShaderInstance(program, uniforms, samplers); diff --git a/src/graphics/java/speiger/src/coreengine/graphics/opengl/core/GLSurface.java b/src/graphics/java/speiger/src/coreengine/graphics/opengl/core/GLSurface.java index 7d4a41f..46aaecb 100644 --- a/src/graphics/java/speiger/src/coreengine/graphics/opengl/core/GLSurface.java +++ b/src/graphics/java/speiger/src/coreengine/graphics/opengl/core/GLSurface.java @@ -21,7 +21,7 @@ public class GLSurface implements GraphicsSurface { @Override public void beginFrame() { GL11.glClearColor(0.2F, 0.55F, 0.66F, 1F); - GL11.glClear(GL11.GL_COLOR_BUFFER_BIT); + GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT); window.beginFrame(); GLFW.glfwPollEvents(); } diff --git a/src/main/java/speiger/src/coreengine/NewRenderEngineTest.java b/src/main/java/speiger/src/coreengine/NewRenderEngineTest.java index 6ddf43a..70f1e2f 100644 --- a/src/main/java/speiger/src/coreengine/NewRenderEngineTest.java +++ b/src/main/java/speiger/src/coreengine/NewRenderEngineTest.java @@ -1,8 +1,10 @@ package speiger.src.coreengine; import java.nio.ByteBuffer; +import java.nio.ByteOrder; import org.lwjgl.glfw.GLFW; +import org.lwjgl.opengl.GL11; import org.lwjgl.system.Configuration; import org.lwjgl.util.freetype.FreeType; @@ -82,6 +84,15 @@ public class NewRenderEngineTest { VertexBuilder builder = new VertexBuilder(255); builder.start(null, VertexTypes.TESTING); + +// builder.pos(350F, 250F, 0).tex(0F, 1F).rgba(-1).endVertex(); // Unten Links +// builder.pos(450F, 350F, 0).tex(1F, 0F).rgba(-1).endVertex(); // Oben Rechts +// builder.pos(450F, 250F, 0).tex(1F, 1F).rgba(-1).endVertex(); // Unten Rechts +// +// builder.pos(450F, 350F, 0).tex(1F, 0F).rgba(-1).endVertex(); // Oben Rechts +// builder.pos(350F, 250F, 0).tex(0F, 1F).rgba(-1).endVertex(); // Unten Links +// builder.pos(350F, 350F, 0).tex(0F, 0F).rgba(-1).endVertex(); // Oben Links + builder.pos(-0.5F, -0.5F, 0).tex(0F, 1F).rgba(-1).endVertex(); builder.pos(0.5F, -0.5F, 0).tex(1F, 1F).rgba(-1).endVertex(); builder.pos(0.5F, 0.5F, 0).tex(1F, 0F).rgba(-1).endVertex(); @@ -104,15 +115,15 @@ public class NewRenderEngineTest { Sampler sampler = device.createSampler(SamplerSettings.builder().sampler(SampleMode.NEAREST).wrap(BorderMode.CLAMP_TO_EDGE).build()); VertexBuffer buffer = device.createBuffer(BufferType.UNIFORM_BUFFER, BufferState.STATIC_DRAW); - ByteBuffer mat = ByteBuffer.allocate(64); + ByteBuffer mat = ByteBuffer.allocate(64).order(ByteOrder.nativeOrder()); int scale = 0; new Matrix4f().ortho(0, 0, window.width() >> scale, window.height() >> scale, 1000, -1000).store(mat); buffer.bind().set(mat.flip().array()).unbind(); ShaderPipeline pipeline = ShaderPipeline.builder(ID.of("gui")) - .withStage(ShaderType.VERTEX, ID.of("shader/testGui/vertex.vs")) - .withStage(ShaderType.FRAGMENT, ID.of("shader/testGui/fragment.fs")) + .withStage(ShaderType.VERTEX, ID.of("shader/newTestGui/vertex.vs")) + .withStage(ShaderType.FRAGMENT, ID.of("shader/newTestGui/fragment.fs")) .withTexture("texture", 0, 0, TextureType.TEXTURE_2D) .withUniform("Camera", 0, 0, 64) .withFormat() @@ -123,11 +134,13 @@ public class NewRenderEngineTest { .build(); window.visible(true); GraphicsCommandBuffer queue = device.createCommandBuffer(ExecutionType.IMMEDIATE); - + GL11.glViewport(0, 0, window.width(), window.height()); + while(!window.shouldClose()) { surface.beginFrame(); if(window.changed()) { window.updateViewport(); + GL11.glViewport(0, 0, window.width(), window.height()); new Matrix4f().ortho(0, 0, window.width() >> scale, window.height() >> scale, 1000, -1000).store(mat); buffer.bind().set(mat.flip().array()).unbind(); } diff --git a/src/main/java/speiger/src/coreengine/rendering/input/window/Window.java b/src/main/java/speiger/src/coreengine/rendering/input/window/Window.java index 98a8c24..2006ac0 100644 --- a/src/main/java/speiger/src/coreengine/rendering/input/window/Window.java +++ b/src/main/java/speiger/src/coreengine/rendering/input/window/Window.java @@ -14,6 +14,7 @@ import speiger.src.coreengine.math.vector.ints.Vec4i; import speiger.src.coreengine.rendering.input.window.IWindowListener.Reason; import speiger.src.coreengine.rendering.input.window.WindowCallback.ReloadFunction; import speiger.src.coreengine.rendering.input.window.WindowManager.WindowBuilder; +import speiger.src.coreengine.rendering.utils.GLStateTracker; import speiger.src.coreengine.utils.collections.FlagHolder; public class Window { diff --git a/src/main/resources/assets/base/shader/newTestGui/fragment.fs b/src/main/resources/assets/base/shader/newTestGui/fragment.fs new file mode 100644 index 0000000..d8e6c20 --- /dev/null +++ b/src/main/resources/assets/base/shader/newTestGui/fragment.fs @@ -0,0 +1,14 @@ +#version 420 + +in vec4 pass_color; +in vec2 pass_tex; + +out vec4 frag_color; + +layout(binding = 0) uniform sampler2D texture; + +void main() +{ + vec4 color = texture2D(texture, pass_tex); + frag_color = pass_color * color; +} \ No newline at end of file diff --git a/src/main/resources/assets/base/shader/newTestGui/vertex.vs b/src/main/resources/assets/base/shader/newTestGui/vertex.vs new file mode 100644 index 0000000..67d31e1 --- /dev/null +++ b/src/main/resources/assets/base/shader/newTestGui/vertex.vs @@ -0,0 +1,19 @@ +#version 420 + +layout(location = 0) in vec3 in_position; +layout(location = 1) in vec2 in_tex; +layout(location = 2) in vec4 in_color; + +out vec4 pass_color; +out vec2 pass_tex; + +layout(std140, column_major, binding = 0) uniform Camera { + mat4 proViewMatrix; +} camera; + +void main() +{ + gl_Position = vec4(in_position, 1.0); + pass_color = in_color; + pass_tex = in_tex; +} \ No newline at end of file diff --git a/src/main/resources/assets/base/shader/testGui/fragment.fs b/src/main/resources/assets/base/shader/testGui/fragment.fs index fa0103c..bffc15c 100644 --- a/src/main/resources/assets/base/shader/testGui/fragment.fs +++ b/src/main/resources/assets/base/shader/testGui/fragment.fs @@ -5,7 +5,7 @@ in vec2 pass_tex; out vec4 frag_color; -layout(binding = 0) uniform sampler2D texture; +uniform sampler2D texture; void main() { diff --git a/src/main/resources/assets/base/shader/testGui/vertex.vs b/src/main/resources/assets/base/shader/testGui/vertex.vs index 0605710..34c9fa8 100644 --- a/src/main/resources/assets/base/shader/testGui/vertex.vs +++ b/src/main/resources/assets/base/shader/testGui/vertex.vs @@ -7,13 +7,11 @@ layout(location = 2) in vec4 in_color; out vec4 pass_color; out vec2 pass_tex; -layout(binding = 0) uniform Camera { - mat4 proViewMatrix; -} camera; +uniform mat4 proViewMatrix; void main() { - gl_Position = camera.proViewMatrix * vec4(in_position, 1.0); + gl_Position = proViewMatrix * vec4(in_position, 1.0); pass_color = in_color; pass_tex = in_tex; } \ No newline at end of file