Finally working
This commit is contained in:
@@ -207,6 +207,7 @@ public class GLGraphicsDevice implements GraphicsDevice {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
GL20.glAttachShader(T, id);
|
GL20.glAttachShader(T, id);
|
||||||
|
shaders.add(id);
|
||||||
}
|
}
|
||||||
for(BufferAttribute attribute : ObjectIterables.flatMap(pipeline.attributes(), VertexBinding::attributes)) {
|
for(BufferAttribute attribute : ObjectIterables.flatMap(pipeline.attributes(), VertexBinding::attributes)) {
|
||||||
GL20.glBindAttribLocation(T, attribute.index(), attribute.name());
|
GL20.glBindAttribLocation(T, attribute.index(), attribute.name());
|
||||||
@@ -237,6 +238,7 @@ public class GLGraphicsDevice implements GraphicsDevice {
|
|||||||
//TODO Warn that location wasn't found
|
//TODO Warn that location wasn't found
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
GL31.glUniformBlockBinding(program, location, binding.slot());
|
||||||
uniforms.add(binding.name(), binding.slot(), new UniformObject(binding.slot()));
|
uniforms.add(binding.name(), binding.slot(), new UniformObject(binding.slot()));
|
||||||
}
|
}
|
||||||
ShaderInstance instance = new ShaderInstance(program, uniforms, samplers);
|
ShaderInstance instance = new ShaderInstance(program, uniforms, samplers);
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ public class GLSurface implements GraphicsSurface {
|
|||||||
@Override
|
@Override
|
||||||
public void beginFrame() {
|
public void beginFrame() {
|
||||||
GL11.glClearColor(0.2F, 0.55F, 0.66F, 1F);
|
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();
|
window.beginFrame();
|
||||||
GLFW.glfwPollEvents();
|
GLFW.glfwPollEvents();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
package speiger.src.coreengine;
|
package speiger.src.coreengine;
|
||||||
|
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
|
import java.nio.ByteOrder;
|
||||||
|
|
||||||
import org.lwjgl.glfw.GLFW;
|
import org.lwjgl.glfw.GLFW;
|
||||||
|
import org.lwjgl.opengl.GL11;
|
||||||
import org.lwjgl.system.Configuration;
|
import org.lwjgl.system.Configuration;
|
||||||
import org.lwjgl.util.freetype.FreeType;
|
import org.lwjgl.util.freetype.FreeType;
|
||||||
|
|
||||||
@@ -82,6 +84,15 @@ public class NewRenderEngineTest {
|
|||||||
|
|
||||||
VertexBuilder builder = new VertexBuilder(255);
|
VertexBuilder builder = new VertexBuilder(255);
|
||||||
builder.start(null, VertexTypes.TESTING);
|
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(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, 1F).rgba(-1).endVertex();
|
||||||
builder.pos(0.5F, 0.5F, 0).tex(1F, 0F).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());
|
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);
|
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;
|
int scale = 0;
|
||||||
new Matrix4f().ortho(0, 0, window.width() >> scale, window.height() >> scale, 1000, -1000).store(mat);
|
new Matrix4f().ortho(0, 0, window.width() >> scale, window.height() >> scale, 1000, -1000).store(mat);
|
||||||
buffer.bind().set(mat.flip().array()).unbind();
|
buffer.bind().set(mat.flip().array()).unbind();
|
||||||
|
|
||||||
|
|
||||||
ShaderPipeline pipeline = ShaderPipeline.builder(ID.of("gui"))
|
ShaderPipeline pipeline = ShaderPipeline.builder(ID.of("gui"))
|
||||||
.withStage(ShaderType.VERTEX, ID.of("shader/testGui/vertex.vs"))
|
.withStage(ShaderType.VERTEX, ID.of("shader/newTestGui/vertex.vs"))
|
||||||
.withStage(ShaderType.FRAGMENT, ID.of("shader/testGui/fragment.fs"))
|
.withStage(ShaderType.FRAGMENT, ID.of("shader/newTestGui/fragment.fs"))
|
||||||
.withTexture("texture", 0, 0, TextureType.TEXTURE_2D)
|
.withTexture("texture", 0, 0, TextureType.TEXTURE_2D)
|
||||||
.withUniform("Camera", 0, 0, 64)
|
.withUniform("Camera", 0, 0, 64)
|
||||||
.withFormat()
|
.withFormat()
|
||||||
@@ -123,11 +134,13 @@ public class NewRenderEngineTest {
|
|||||||
.build();
|
.build();
|
||||||
window.visible(true);
|
window.visible(true);
|
||||||
GraphicsCommandBuffer queue = device.createCommandBuffer(ExecutionType.IMMEDIATE);
|
GraphicsCommandBuffer queue = device.createCommandBuffer(ExecutionType.IMMEDIATE);
|
||||||
|
GL11.glViewport(0, 0, window.width(), window.height());
|
||||||
|
|
||||||
while(!window.shouldClose()) {
|
while(!window.shouldClose()) {
|
||||||
surface.beginFrame();
|
surface.beginFrame();
|
||||||
if(window.changed()) {
|
if(window.changed()) {
|
||||||
window.updateViewport();
|
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);
|
new Matrix4f().ortho(0, 0, window.width() >> scale, window.height() >> scale, 1000, -1000).store(mat);
|
||||||
buffer.bind().set(mat.flip().array()).unbind();
|
buffer.bind().set(mat.flip().array()).unbind();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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.IWindowListener.Reason;
|
||||||
import speiger.src.coreengine.rendering.input.window.WindowCallback.ReloadFunction;
|
import speiger.src.coreengine.rendering.input.window.WindowCallback.ReloadFunction;
|
||||||
import speiger.src.coreengine.rendering.input.window.WindowManager.WindowBuilder;
|
import speiger.src.coreengine.rendering.input.window.WindowManager.WindowBuilder;
|
||||||
|
import speiger.src.coreengine.rendering.utils.GLStateTracker;
|
||||||
import speiger.src.coreengine.utils.collections.FlagHolder;
|
import speiger.src.coreengine.utils.collections.FlagHolder;
|
||||||
|
|
||||||
public class Window {
|
public class Window {
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
|
}
|
||||||
@@ -5,7 +5,7 @@ in vec2 pass_tex;
|
|||||||
|
|
||||||
out vec4 frag_color;
|
out vec4 frag_color;
|
||||||
|
|
||||||
layout(binding = 0) uniform sampler2D texture;
|
uniform sampler2D texture;
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -7,13 +7,11 @@ layout(location = 2) in vec4 in_color;
|
|||||||
out vec4 pass_color;
|
out vec4 pass_color;
|
||||||
out vec2 pass_tex;
|
out vec2 pass_tex;
|
||||||
|
|
||||||
layout(binding = 0) uniform Camera {
|
uniform mat4 proViewMatrix;
|
||||||
mat4 proViewMatrix;
|
|
||||||
} camera;
|
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
gl_Position = camera.proViewMatrix * vec4(in_position, 1.0);
|
gl_Position = proViewMatrix * vec4(in_position, 1.0);
|
||||||
pass_color = in_color;
|
pass_color = in_color;
|
||||||
pass_tex = in_tex;
|
pass_tex = in_tex;
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user