From 7f491ad5974d6b06b0e72f3f2702c8228435783f Mon Sep 17 00:00:00 2001 From: Antoine Date: Wed, 19 May 2021 05:37:45 +0200 Subject: [PATCH] added ObjectGlTexColor, tweaked shaders --- shaders/ObjectGlColor/frag.glsl | 4 ++-- shaders/ObjectGlColor/vert.glsl | 8 +++++--- shaders/ObjectGlTex/frag.glsl | 9 ++++++--- shaders/ObjectGlTex/vert.glsl | 10 ++++++---- shaders/ObjectGlTexColor/frag.glsl | 3 +-- shaders/ObjectGlTexColor/vert.glsl | 12 +++++------- src/engine/Engine.java | 3 ++- src/engine/object/ObjectGlColor.java | 8 -------- src/engine/object/ObjectGlTex.java | 20 ++++++++++++++++++-- src/engine/object/ObjectGlTexColor.java | 7 ++++++- 10 files changed, 51 insertions(+), 33 deletions(-) diff --git a/shaders/ObjectGlColor/frag.glsl b/shaders/ObjectGlColor/frag.glsl index f8d3a94..45e8b9c 100644 --- a/shaders/ObjectGlColor/frag.glsl +++ b/shaders/ObjectGlColor/frag.glsl @@ -1,10 +1,10 @@ #version 330 core -in vec3 Color; +in vec3 color; out vec4 FragColor; void main() { - FragColor = vec4(Color, 1.0f); + FragColor = vec4(color, 1.0f); } \ No newline at end of file diff --git a/shaders/ObjectGlColor/vert.glsl b/shaders/ObjectGlColor/vert.glsl index caf6adb..801c25b 100644 --- a/shaders/ObjectGlColor/vert.glsl +++ b/shaders/ObjectGlColor/vert.glsl @@ -3,10 +3,12 @@ layout (location = 0) in vec3 aPos; layout (location = 1) in vec3 aColor; -out vec3 Color; +out vec3 color; + +uniform mat4 transform; void main() { - gl_Position = vec4(aPos, 1.0); - Color = aColor; + gl_Position = transform * vec4(aPos, 1.0); + color = aColor; } \ No newline at end of file diff --git a/shaders/ObjectGlTex/frag.glsl b/shaders/ObjectGlTex/frag.glsl index f8d3a94..cb15fd4 100644 --- a/shaders/ObjectGlTex/frag.glsl +++ b/shaders/ObjectGlTex/frag.glsl @@ -1,10 +1,13 @@ #version 330 core -in vec3 Color; - out vec4 FragColor; +in vec2 TexCoord; + +uniform sampler2D texture1; +uniform sampler2D texture2; + void main() { - FragColor = vec4(Color, 1.0f); + FragColor = mix(texture(texture1, TexCoord), texture(texture2, vec2(TexCoord)), 0.5); } \ No newline at end of file diff --git a/shaders/ObjectGlTex/vert.glsl b/shaders/ObjectGlTex/vert.glsl index caf6adb..3420530 100644 --- a/shaders/ObjectGlTex/vert.glsl +++ b/shaders/ObjectGlTex/vert.glsl @@ -1,12 +1,14 @@ #version 330 core layout (location = 0) in vec3 aPos; -layout (location = 1) in vec3 aColor; +layout (location = 2) in vec3 aTexCoord; -out vec3 Color; +out vec3 texCoord; + +uniform mat4 transform; void main() { - gl_Position = vec4(aPos, 1.0); - Color = aColor; + gl_Position = transform * vec4(aPos, 1.0); + texCoord = aTexCoord; } \ No newline at end of file diff --git a/shaders/ObjectGlTexColor/frag.glsl b/shaders/ObjectGlTexColor/frag.glsl index 17a5870..920d4ee 100644 --- a/shaders/ObjectGlTexColor/frag.glsl +++ b/shaders/ObjectGlTexColor/frag.glsl @@ -3,12 +3,11 @@ out vec4 FragColor; in vec3 ourColor; in vec2 TexCoord; -in vec4 position; uniform sampler2D texture1; uniform sampler2D texture2; void main() { - FragColor = mix(texture(texture1, TexCoord), texture(texture2, vec2(TexCoord.x, -TexCoord.y)), position.x * position.y); + FragColor = Color * mix(texture(texture1, TexCoord), texture(texture2, TexCoord), 0.5); } \ No newline at end of file diff --git a/shaders/ObjectGlTexColor/vert.glsl b/shaders/ObjectGlTexColor/vert.glsl index 0b3006e..3d1ef50 100644 --- a/shaders/ObjectGlTexColor/vert.glsl +++ b/shaders/ObjectGlTexColor/vert.glsl @@ -1,18 +1,16 @@ #version 330 core + layout (location = 0) in vec3 aPos; layout (location = 1) in vec3 aColor; -layout (location = 2) in vec2 aTexCoord; +layout (location = 2) in vec3 aTexCoord; -out vec3 ourColor; -out vec2 TexCoord; -out vec4 position; +out vec3 texCoord; uniform mat4 transform; void main() { gl_Position = transform * vec4(aPos, 1.0); - ourColor = aColor; - TexCoord = aTexCoord; - position = gl_Position; + Color = aColor; + texCoord = aTexCoord; } \ No newline at end of file diff --git a/src/engine/Engine.java b/src/engine/Engine.java index 8500905..659e015 100644 --- a/src/engine/Engine.java +++ b/src/engine/Engine.java @@ -2,6 +2,7 @@ package engine; import engine.math.Vector3f; import engine.object.ObjectGl; +import engine.object.ObjectGlColor; import org.lwjgl.glfw.GLFWFramebufferSizeCallback; import org.lwjgl.glfw.GLFWVidMode; import org.lwjgl.opengl.GL; @@ -131,7 +132,7 @@ public class Engine { engine.init(); // Add objects to render - ObjectGl cube = new ObjectGl(-0.5f,0.5f,0.0f,1.0f,1.0f); + ObjectGl cube = new ObjectGlColor(-0.5f,0.5f,0.0f,1.0f,1.0f, new float[] {0.2f, 0.2f, 0.8f}); engine.add_objectGl(cube); while(engine.isRunning()){ diff --git a/src/engine/object/ObjectGlColor.java b/src/engine/object/ObjectGlColor.java index d3759a3..9b2da72 100644 --- a/src/engine/object/ObjectGlColor.java +++ b/src/engine/object/ObjectGlColor.java @@ -6,18 +6,10 @@ import engine.graphics.VertexArray; import engine.math.Matrix4f; public class ObjectGlColor extends ObjectGl{ - public ObjectGlColor(float x, float y, float z, float h, float w, float[] color) { super(); this.vertexArray = new VertexArray(Primitive.createRectangle(x, y, z, h, w), Primitive.rectangle_indices, color, null); this.transform = Matrix4f.identity(); this.shader = new Shader("shaders/ObjectGlColor/vert.glsl","shaders/ObjectGlColor/frag.glsl"); } - - @Override - public void render() { - this.shader.enable(); - this.vertexArray.render(); - this.shader.disable(); - } } diff --git a/src/engine/object/ObjectGlTex.java b/src/engine/object/ObjectGlTex.java index d636b10..3cebffd 100644 --- a/src/engine/object/ObjectGlTex.java +++ b/src/engine/object/ObjectGlTex.java @@ -10,7 +10,7 @@ import java.util.List; public class ObjectGlTex extends ObjectGl{ - List textures; + protected List textures; public ObjectGlTex(){ @@ -22,13 +22,29 @@ public class ObjectGlTex extends ObjectGl{ this.transform = Matrix4f.identity(); this.shader = new Shader("shaders/ObjectGlTex/vert.glsl","shaders/ObjectGlTex/frag.glsl"); - // TODO tex + int count = 0; + for (String path : texPath){ + textures.add(new Texture(path, count)); + count++; + } } @Override public void render() { this.shader.enable(); + + this.shader.setUniformMat4f("transform", this.transform); + + for (Texture t : textures){ + t.bind(); + } + this.vertexArray.render(); + + for (Texture t : textures){ + t.unbind(); + } + this.shader.disable(); } } diff --git a/src/engine/object/ObjectGlTexColor.java b/src/engine/object/ObjectGlTexColor.java index 3c1641c..e58091c 100644 --- a/src/engine/object/ObjectGlTexColor.java +++ b/src/engine/object/ObjectGlTexColor.java @@ -1,5 +1,6 @@ package engine.object; +import engine.graphics.Texture; import engine.math.Primitive; import engine.graphics.Shader; import engine.graphics.VertexArray; @@ -15,6 +16,10 @@ public class ObjectGlTexColor extends ObjectGlTex{ this.transform = Matrix4f.identity(); this.shader = new Shader("shaders/ObjectGlTexColor/vert.glsl","shaders/ObjectGlTexColor/frag.glsl"); - // TODO Create texture + int count = 0; + for (String path : texPath){ + textures.add(new Texture(path, count)); + count++; + } } }