From 4026e407c6adb6acbcf9e6bc9693477b37b84728 Mon Sep 17 00:00:00 2001 From: hYdos Date: Sun, 23 Feb 2020 19:18:48 +1000 Subject: [PATCH] simpler renderer (very good 10/10 ngl) --- .../java/io/github/hydos/ginger/Example.java | 185 +++++++----------- .../github/hydos/ginger/engine/api/Game.java | 7 + .../hydos/ginger/engine/api/GameData.java | 38 ++++ .../hydos/ginger/engine/api/Ginger.java | 60 ++++++ .../ginger/engine/api/ResourceManager.java | 12 ++ .../{ThirdPersonCamera.java => Camera.java} | 6 +- .../engine/elements/objects/Player.java | 27 +-- .../hydos/ginger/engine/math/Maths.java | 4 +- .../ginger/engine/particle/Particle.java | 4 +- .../engine/particle/ParticleMaster.java | 6 +- .../ginger/engine/render/MasterRenderer.java | 12 +- .../renderers/NormalMappingRenderer.java | 6 +- .../render/renderers/ParticleRenderer.java | 4 +- .../render/renderers/SkyboxRenderer.java | 4 +- .../engine/render/shaders/SkyboxShader.java | 4 +- .../engine/render/shaders/StaticShader.java | 4 +- .../engine/render/shaders/TerrainShader.java | 4 +- .../engine/render/tools/MousePicker.java | 6 +- .../hydos/ginger/engine/shadow/ShadowBox.java | 6 +- .../shadow/ShadowMapMasterRenderer.java | 4 +- .../io/github/hydos/ginger/Example.class | Bin 10649 -> 9345 bytes .../engine/cameras/ThirdPersonCamera$1.class | Bin 909 -> 0 bytes .../engine/cameras/ThirdPersonCamera.class | Bin 3596 -> 0 bytes .../ginger/engine/particle/Particle.class | Bin 4168 -> 4135 bytes .../engine/particle/ParticleMaster.class | Bin 3422 -> 3378 bytes .../ginger/engine/shadow/ShadowBox.class | Bin 6267 -> 6234 bytes .../shadow/ShadowMapMasterRenderer.class | Bin 6275 -> 6242 bytes 27 files changed, 237 insertions(+), 166 deletions(-) create mode 100644 src/main/java/io/github/hydos/ginger/engine/api/Game.java create mode 100644 src/main/java/io/github/hydos/ginger/engine/api/GameData.java create mode 100644 src/main/java/io/github/hydos/ginger/engine/api/Ginger.java create mode 100644 src/main/java/io/github/hydos/ginger/engine/api/ResourceManager.java rename src/main/java/io/github/hydos/ginger/engine/cameras/{ThirdPersonCamera.java => Camera.java} (94%) delete mode 100644 target/classes/io/github/hydos/ginger/engine/cameras/ThirdPersonCamera$1.class delete mode 100644 target/classes/io/github/hydos/ginger/engine/cameras/ThirdPersonCamera.class diff --git a/src/main/java/io/github/hydos/ginger/Example.java b/src/main/java/io/github/hydos/ginger/Example.java index 53d41ed..b8c26cb 100644 --- a/src/main/java/io/github/hydos/ginger/Example.java +++ b/src/main/java/io/github/hydos/ginger/Example.java @@ -1,60 +1,35 @@ package io.github.hydos.ginger; -import java.util.ArrayList; -import java.util.List; - -import org.joml.Vector4f; -import org.lwjgl.glfw.GLFW; - -import io.github.hydos.ginger.engine.cameras.ThirdPersonCamera; -import io.github.hydos.ginger.engine.elements.GuiTexture; +import io.github.hydos.ginger.engine.api.*; +import io.github.hydos.ginger.engine.cameras.Camera; import io.github.hydos.ginger.engine.elements.buttons.TextureButton; -import io.github.hydos.ginger.engine.elements.objects.Entity; -import io.github.hydos.ginger.engine.elements.objects.Light; -import io.github.hydos.ginger.engine.elements.objects.Player; -import io.github.hydos.ginger.engine.font.FontType; -import io.github.hydos.ginger.engine.font.GUIText; -import io.github.hydos.ginger.engine.font.TextMaster; +import io.github.hydos.ginger.engine.elements.objects.*; +import io.github.hydos.ginger.engine.font.*; import io.github.hydos.ginger.engine.io.Window; -import io.github.hydos.ginger.engine.math.vectors.Vector2f; -import io.github.hydos.ginger.engine.math.vectors.Vector3f; +import io.github.hydos.ginger.engine.math.vectors.*; import io.github.hydos.ginger.engine.obj.ModelLoader; import io.github.hydos.ginger.engine.obj.normals.NormalMappedObjLoader; -import io.github.hydos.ginger.engine.particle.ParticleMaster; -import io.github.hydos.ginger.engine.particle.ParticleSystem; -import io.github.hydos.ginger.engine.particle.ParticleTexture; -import io.github.hydos.ginger.engine.postprocessing.Fbo; -import io.github.hydos.ginger.engine.postprocessing.PostProcessing; +import io.github.hydos.ginger.engine.particle.*; import io.github.hydos.ginger.engine.render.MasterRenderer; import io.github.hydos.ginger.engine.render.models.TexturedModel; import io.github.hydos.ginger.engine.render.texture.ModelTexture; -import io.github.hydos.ginger.engine.render.tools.MousePicker; -import io.github.hydos.ginger.engine.terrain.Terrain; -import io.github.hydos.ginger.engine.terrain.TerrainTexture; -import io.github.hydos.ginger.engine.terrain.TerrainTexturePack; +import io.github.hydos.ginger.engine.terrain.*; import io.github.hydos.ginger.engine.utils.Loader; import io.github.hydos.ginger.main.GingerMain; import io.github.hydos.ginger.main.settings.Constants; -public class Example { - - private MasterRenderer masterRenderer; - - private List terrains = new ArrayList(); - - private List guis = new ArrayList(); - - private List lights = new ArrayList(); - - private List entities = new ArrayList(); - - private List normalMapEntities = new ArrayList(); +public class Example extends Game{ + private Ginger ginger3D; public void main(String[] args) { + //Render Player's constant variables + Constants.movementSpeed = 0.000005f; + Constants.turnSpeed = 0.00002f; + Constants.gravity = -0.000000000005f; + Constants.jumpPower = 0.000005f; - - Window.create(1200, 800, "Ginger Example", 60); + Window.create(1200, 800, "Simple Ginger Example", 60); GingerMain.init(); @@ -64,13 +39,11 @@ public class Example { TexturedModel tModel = ModelLoader.loadModel("stall.obj", "stallTexture.png"); tModel.getTexture().setReflectivity(1f); tModel.getTexture().setShineDamper(7f); - Player entity = new Player(tModel, new Vector3f(0,0,-3),0,180f,0, new Vector3f(0.2f, 0.2f, 0.2f)); - Constants.movementSpeed = 0.000005f; - Constants.turnSpeed = 0.00002f; - Constants.gravity = -0.000000000005f; - Constants.jumpPower = 0.000005f; - ThirdPersonCamera camera = new ThirdPersonCamera(new Vector3f(0,0.1f,0), entity); - masterRenderer = new MasterRenderer(camera); + Player player = new Player(tModel, new Vector3f(0,0,-3),0,180f,0, new Vector3f(0.2f, 0.2f, 0.2f)); + Camera camera = new Camera(new Vector3f(0,0.1f,0), player); + ginger3D = new Ginger(); + data = new GameData(player, camera); + ginger3D.setup(new MasterRenderer(data.camera), data); FontType font = new FontType(Loader.loadFontAtlas("candara.png"), "candara.fnt"); @@ -78,7 +51,7 @@ public class Example { GUIText text = new GUIText("german", 3, font, new Vector2f(0,0), 1f, true); text.setColour(0, 1, 0); - ParticleMaster.init(masterRenderer.getProjectionMatrix()); + ParticleMaster.init(ginger3D.masterRenderer.getProjectionMatrix()); @@ -90,7 +63,7 @@ public class Example { Light sun = new Light(new Vector3f(100,105,-100), new Vector3f(1.3f, 1.3f, 1.3f), new Vector3f(0.0001f, 0.0001f, 0.0001f)); - lights.add(sun); + data.lights.add(sun); TexturedModel tgrass = ModelLoader.loadModel("grass.obj", "grass.png"); tgrass.getTexture().setTransparency(true); @@ -109,10 +82,7 @@ public class Example { Entity dragon = new Entity(dragonMdl, new Vector3f(3,terrain.getHeightOfTerrain(3, -3),-3),0,180f,0, new Vector3f(0.2f, 0.2f, 0.2f)); Entity grassEntity = new Entity(tgrass, new Vector3f(-3,terrain.getHeightOfTerrain(-3, -3),-3),0,180f,0, new Vector3f(0.2f, 0.2f, 0.2f)); - entities.add(grassEntity); - - MousePicker picker = new MousePicker(camera, masterRenderer.getProjectionMatrix(), terrain); - + data.entities.add(grassEntity); TexturedModel barrelModel = new TexturedModel(NormalMappedObjLoader.loadOBJ("barrel.obj"), new ModelTexture("barrel.png")); barrelModel.getTexture().setNormalMap(new ModelTexture("modelNormals/barrelNormal.png").getTextureID()); @@ -120,80 +90,61 @@ public class Example { barrelModel.getTexture().setReflectivity(0.5f); Entity barrel = new Entity(barrelModel, new Vector3f(1,terrain.getHeightOfTerrain(1, 1),1), 0, 0, 0, new Vector3f(0.25f,0.25f,0.25f)); - normalMapEntities.add(barrel); - entities.add(entity); - entities.add(dragon); + data.normalMapEntities.add(barrel); + data.entities.add(player); + data.entities.add(dragon); - float colour = 0; - terrains.add(terrain); + data.flatTerrains.add(terrain); - ParticleTexture particleTexture = new ParticleTexture(Loader.loadTexture("particles/smoke.png"), 8); + ParticleSystem system = setupParticles(); TextureButton button = new TextureButton("/textures/guis/ginger.png", new Vector2f(0.8f, 0), new Vector2f(0.1f, 0.1f)); - button.show(guis); + button.show(data.guis); + + Window.lockMouse(); + + while(!Window.closed()) { + + if(Window.isUpdating()) { + ginger3D.update(data); + + ginger3D.masterRenderer.renderShadowMap(data.entities, sun); + + camera.move(); + player.move(terrain); + + system.generateParticles(new Vector3f(0,-2,0)); + + ginger3D.render(data, this); + + dragon.increaseRotation(0,1,0); + barrel.increaseRotation(0, 1, 0); + + button.update(); + if(button.isClicked()) { + System.out.println("click"); + button.hide(data.guis); + } + + ginger3D.postRender(); + } + + } + + } + + + private ParticleSystem setupParticles() { + ParticleTexture particleTexture = new ParticleTexture(Loader.loadTexture("particles/smoke.png"), 8); + + ParticleSystem system = new ParticleSystem(particleTexture, 100, 10f, 0.3f, 4, 3f); system.randomizeRotation(); system.setDirection(new Vector3f(0,0.001f,0), 0.00001f); system.setLifeError(0); system.setSpeedError(0); system.setScaleError(1f); - - Fbo fbo = new Fbo(); - PostProcessing.init(); - - while(!Window.closed()) { - - if(Window.isUpdating()) { - Window.update(); - GingerMain.update(); - colour = colour + 0.001f; - picker.update(); - ParticleMaster.update(camera); - - masterRenderer.renderShadowMap(entities, sun); - - camera.move(); - entity.move(terrain); - - Vector3f terrainPoint = picker.getCurrentTerrainPoint(); - if(terrainPoint!=null) { - barrel.setPosition(terrainPoint); - if(Window.isMouseDown(GLFW.GLFW_MOUSE_BUTTON_1)) { - normalMapEntities.add(new Entity(barrelModel, terrainPoint, 0, 0, 0, new Vector3f(0.25f,0.25f,0.25f))); - } - } - system.generateParticles(new Vector3f(0,-2,0)); - - dragon.increaseRotation(0,1,0); - barrel.increaseRotation(0, 1, 0); - - GingerMain.preRenderScene(masterRenderer); - ParticleMaster.renderParticles(camera); - fbo.bindFBO(); - masterRenderer.renderScene(entities, normalMapEntities, terrains, lights, camera, new Vector4f(0, -1, 0, 100000)); - fbo.unbindFBO(); - PostProcessing.doPostProcessing(fbo.colorTexture); -// TODO: get fbo's working - button.update(); - if(button.isClicked()) { - System.out.println("click"); - button.hide(guis); - } -// masterRenderer.renderScene(entities, normalMapEntities, terrains, lights, camera, new Vector4f(0, -1, 0, 100000)); - masterRenderer.renderGuis(guis); - TextMaster.render(); - - Window.swapBuffers(); - } - - } - Window.stop(); - PostProcessing.cleanUp(); - ParticleMaster.cleanUp(); - masterRenderer.cleanUp(); - TextMaster.cleanUp(); - Loader.cleanUp(); - System.exit(0); + return system; } diff --git a/src/main/java/io/github/hydos/ginger/engine/api/Game.java b/src/main/java/io/github/hydos/ginger/engine/api/Game.java new file mode 100644 index 0000000..6579c81 --- /dev/null +++ b/src/main/java/io/github/hydos/ginger/engine/api/Game.java @@ -0,0 +1,7 @@ +package io.github.hydos.ginger.engine.api; + +public abstract class Game { + + public GameData data; + +} diff --git a/src/main/java/io/github/hydos/ginger/engine/api/GameData.java b/src/main/java/io/github/hydos/ginger/engine/api/GameData.java new file mode 100644 index 0000000..01dea7d --- /dev/null +++ b/src/main/java/io/github/hydos/ginger/engine/api/GameData.java @@ -0,0 +1,38 @@ +package io.github.hydos.ginger.engine.api; + +import java.util.*; + +import org.joml.Vector4f; + +import io.github.hydos.ginger.engine.cameras.Camera; +import io.github.hydos.ginger.engine.elements.GuiTexture; +import io.github.hydos.ginger.engine.elements.objects.*; +import io.github.hydos.ginger.engine.terrain.Terrain; + +/* + * Used for storing essential engine game data so main class isn't messy + * Also in general used with Game Class + */ +public class GameData { + + public List guis; + public List entities; + public List lights; + public List normalMapEntities; + public List flatTerrains; + public Player player; + public Camera camera; + public Vector4f clippingPlane; + + public GameData(Player player, Camera camera) { + clippingPlane = new Vector4f(0, -1, 0, 100000); + guis = new ArrayList(); + entities = new ArrayList(); + lights = new ArrayList(); + normalMapEntities = new ArrayList(); + flatTerrains = new ArrayList(); + this.player = player; + this.camera = camera; + } + +} diff --git a/src/main/java/io/github/hydos/ginger/engine/api/Ginger.java b/src/main/java/io/github/hydos/ginger/engine/api/Ginger.java new file mode 100644 index 0000000..2d4a2c3 --- /dev/null +++ b/src/main/java/io/github/hydos/ginger/engine/api/Ginger.java @@ -0,0 +1,60 @@ +package io.github.hydos.ginger.engine.api; + +import io.github.hydos.ginger.engine.font.TextMaster; +import io.github.hydos.ginger.engine.io.Window; +import io.github.hydos.ginger.engine.particle.ParticleMaster; +import io.github.hydos.ginger.engine.postprocessing.*; +import io.github.hydos.ginger.engine.render.MasterRenderer; +import io.github.hydos.ginger.engine.render.tools.MousePicker; +import io.github.hydos.ginger.engine.utils.Loader; +import io.github.hydos.ginger.main.GingerMain; + +public class Ginger { + + public MasterRenderer masterRenderer; + + MousePicker picker; + + public Fbo contrastFbo; + + public void setup(MasterRenderer masterRenderer, GameData data) { + contrastFbo = new Fbo(); + this.masterRenderer = masterRenderer; + picker = new MousePicker(data.camera, masterRenderer.getProjectionMatrix(), null); + PostProcessing.init(); + } + + public void update(GameData data) { + data.camera.move(); + data.player.move(null); + Window.update(); + GingerMain.update(); + picker.update(); + ParticleMaster.update(data.camera); + } + + public void render(GameData data, Game game) { + GingerMain.preRenderScene(masterRenderer); + ParticleMaster.renderParticles(data.camera); + contrastFbo.bindFBO(); + masterRenderer.renderScene(data.entities, data.normalMapEntities, data.flatTerrains, data.lights, data.camera, data.clippingPlane); + contrastFbo.unbindFBO(); + PostProcessing.doPostProcessing(contrastFbo.colorTexture); + masterRenderer.renderGuis(data.guis); + TextMaster.render(); + } + + public void postRender() { + Window.swapBuffers(); + } + + public void cleanup() { + Window.stop(); + PostProcessing.cleanUp(); + ParticleMaster.cleanUp(); + masterRenderer.cleanUp(); + TextMaster.cleanUp(); + Loader.cleanUp(); + } + +} diff --git a/src/main/java/io/github/hydos/ginger/engine/api/ResourceManager.java b/src/main/java/io/github/hydos/ginger/engine/api/ResourceManager.java new file mode 100644 index 0000000..5077fb1 --- /dev/null +++ b/src/main/java/io/github/hydos/ginger/engine/api/ResourceManager.java @@ -0,0 +1,12 @@ +package io.github.hydos.ginger.engine.api; + +/* + * make your own resource manager if you want! + */ +public abstract class ResourceManager { + + public abstract String getResourcePath(String path); + + public abstract boolean getResourceInternally(String path); + +} diff --git a/src/main/java/io/github/hydos/ginger/engine/cameras/ThirdPersonCamera.java b/src/main/java/io/github/hydos/ginger/engine/cameras/Camera.java similarity index 94% rename from src/main/java/io/github/hydos/ginger/engine/cameras/ThirdPersonCamera.java rename to src/main/java/io/github/hydos/ginger/engine/cameras/Camera.java index d962c94..122d130 100644 --- a/src/main/java/io/github/hydos/ginger/engine/cameras/ThirdPersonCamera.java +++ b/src/main/java/io/github/hydos/ginger/engine/cameras/Camera.java @@ -7,7 +7,7 @@ import io.github.hydos.ginger.engine.elements.objects.Player; import io.github.hydos.ginger.engine.io.Window; import io.github.hydos.ginger.engine.math.vectors.Vector3f; -public class ThirdPersonCamera { +public class Camera { private float distanceFromPlayer = 5; private float angleAroundPlayer = 0; @@ -21,12 +21,12 @@ public class ThirdPersonCamera { private Player player; - public ThirdPersonCamera(Player player) { + public Camera(Player player) { this.player = player; } - public ThirdPersonCamera(Vector3f vector3f, Player player) { + public Camera(Vector3f vector3f, Player player) { this.position = vector3f; this.player = player; diff --git a/src/main/java/io/github/hydos/ginger/engine/elements/objects/Player.java b/src/main/java/io/github/hydos/ginger/engine/elements/objects/Player.java index 3a26dd5..a5fb7f9 100644 --- a/src/main/java/io/github/hydos/ginger/engine/elements/objects/Player.java +++ b/src/main/java/io/github/hydos/ginger/engine/elements/objects/Player.java @@ -25,19 +25,22 @@ public class Player extends Entity{ public void move(Terrain t) { checkInputs(); - super.increaseRotation(0, (float) ((currentTurn) * Window.getTime() ), 0); - float distance = (float) ((currentSpeed) * (Window.getTime())); - float dx = (float) (distance * Math.sin(Math.toRadians(super.getRotY()))); - float dz = (float) (distance * Math.cos(Math.toRadians(super.getRotY()))); - super.increasePosition(dx, 0, dz); - super.increasePosition(0, (float) (upwardsSpeed * (Window.getTime())), 0); - terrainHeight = t.getHeightOfTerrain(super.getPosition().x, super.getPosition().z); - upwardsSpeed += Constants.gravity * Window.getTime(); - if(super.getPosition().y < terrainHeight) { - isInAir = false; - upwardsSpeed = 0; - super.getPosition().y = terrainHeight; + if(t != null) { + super.increaseRotation(0, (float) ((currentTurn) * Window.getTime() ), 0); + float distance = (float) ((currentSpeed) * (Window.getTime())); + float dx = (float) (distance * Math.sin(Math.toRadians(super.getRotY()))); + float dz = (float) (distance * Math.cos(Math.toRadians(super.getRotY()))); + super.increasePosition(dx, 0, dz); + super.increasePosition(0, (float) (upwardsSpeed * (Window.getTime())), 0); + terrainHeight = t.getHeightOfTerrain(super.getPosition().x, super.getPosition().z); + upwardsSpeed += Constants.gravity * Window.getTime(); + if(super.getPosition().y < terrainHeight) { + isInAir = false; + upwardsSpeed = 0; + super.getPosition().y = terrainHeight; + } } + } diff --git a/src/main/java/io/github/hydos/ginger/engine/math/Maths.java b/src/main/java/io/github/hydos/ginger/engine/math/Maths.java index f294b2f..676d5de 100644 --- a/src/main/java/io/github/hydos/ginger/engine/math/Maths.java +++ b/src/main/java/io/github/hydos/ginger/engine/math/Maths.java @@ -1,6 +1,6 @@ package io.github.hydos.ginger.engine.math; -import io.github.hydos.ginger.engine.cameras.ThirdPersonCamera; +import io.github.hydos.ginger.engine.cameras.Camera; import io.github.hydos.ginger.engine.math.matrixes.Matrix4f; import io.github.hydos.ginger.engine.math.vectors.Vector2f; import io.github.hydos.ginger.engine.math.vectors.Vector3f; @@ -18,7 +18,7 @@ public class Maths { return matrix; } - public static Matrix4f createViewMatrix(ThirdPersonCamera camera) { + public static Matrix4f createViewMatrix(Camera camera) { Matrix4f viewMatrix = new Matrix4f(); viewMatrix.setIdentity(); Matrix4f.rotate((float) Math.toRadians(camera.getPitch()), new Vector3f(1, 0, 0), viewMatrix, viewMatrix); diff --git a/src/main/java/io/github/hydos/ginger/engine/particle/Particle.java b/src/main/java/io/github/hydos/ginger/engine/particle/Particle.java index 7339f67..25b442a 100644 --- a/src/main/java/io/github/hydos/ginger/engine/particle/Particle.java +++ b/src/main/java/io/github/hydos/ginger/engine/particle/Particle.java @@ -1,6 +1,6 @@ package io.github.hydos.ginger.engine.particle; -import io.github.hydos.ginger.engine.cameras.ThirdPersonCamera; +import io.github.hydos.ginger.engine.cameras.Camera; import io.github.hydos.ginger.engine.io.Window; import io.github.hydos.ginger.engine.math.vectors.Vector2f; import io.github.hydos.ginger.engine.math.vectors.Vector3f; @@ -70,7 +70,7 @@ public class Particle { return blend; } - public boolean update(ThirdPersonCamera camera) { + public boolean update(Camera camera) { float time = (float) Window.getTime() / 1000000; velocity.y += Constants.gravity * gravityEffect * time; Vector3f change = new Vector3f(velocity); diff --git a/src/main/java/io/github/hydos/ginger/engine/particle/ParticleMaster.java b/src/main/java/io/github/hydos/ginger/engine/particle/ParticleMaster.java index 77f2b0e..9619b96 100644 --- a/src/main/java/io/github/hydos/ginger/engine/particle/ParticleMaster.java +++ b/src/main/java/io/github/hydos/ginger/engine/particle/ParticleMaster.java @@ -7,7 +7,7 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; -import io.github.hydos.ginger.engine.cameras.ThirdPersonCamera; +import io.github.hydos.ginger.engine.cameras.Camera; import io.github.hydos.ginger.engine.math.matrixes.Matrix4f; import io.github.hydos.ginger.engine.render.renderers.ParticleRenderer; @@ -21,7 +21,7 @@ public class ParticleMaster { } - public static void update(ThirdPersonCamera camera) { + public static void update(Camera camera) { Iterator>> mapIterator = particles.entrySet().iterator(); while(mapIterator.hasNext()) { List list = mapIterator.next().getValue(); @@ -40,7 +40,7 @@ public class ParticleMaster { } } - public static void renderParticles(ThirdPersonCamera camera) { + public static void renderParticles(Camera camera) { particleRenderer.render(particles, camera); } diff --git a/src/main/java/io/github/hydos/ginger/engine/render/MasterRenderer.java b/src/main/java/io/github/hydos/ginger/engine/render/MasterRenderer.java index d9d5181..602f86e 100644 --- a/src/main/java/io/github/hydos/ginger/engine/render/MasterRenderer.java +++ b/src/main/java/io/github/hydos/ginger/engine/render/MasterRenderer.java @@ -9,7 +9,7 @@ import org.joml.Vector4f; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL13; -import io.github.hydos.ginger.engine.cameras.ThirdPersonCamera; +import io.github.hydos.ginger.engine.cameras.Camera; import io.github.hydos.ginger.engine.elements.GuiTexture; import io.github.hydos.ginger.engine.elements.objects.Entity; import io.github.hydos.ginger.engine.elements.objects.Light; @@ -53,7 +53,7 @@ public class MasterRenderer { public static final float NEAR_PLANE = 0.1f; private static final float FAR_PLANE = 1000f; - public MasterRenderer(ThirdPersonCamera camera) { + public MasterRenderer(Camera camera) { createProjectionMatrix(); entityShader = new StaticShader(); entityRenderer = new EntityRenderer(entityShader, projectionMatrix); @@ -86,7 +86,7 @@ public class MasterRenderer { GL11.glBindTexture(GL11.GL_TEXTURE_2D, shadowMapRenderer.getShadowMap()); } - public void renderScene(List entities, List normalEntities, List terrains, List lights, ThirdPersonCamera camera, Vector4f clipPlane) { + public void renderScene(List entities, List normalEntities, List terrains, List lights, Camera camera, Vector4f clipPlane) { prepare(); renderEntities(entities, camera, lights); renderNormalEntities(normalEntities, lights, camera, clipPlane); @@ -96,7 +96,7 @@ public class MasterRenderer { } - private void renderNormalEntities(List normalEntities, List lights, ThirdPersonCamera camera, Vector4f clipPlane) { + private void renderNormalEntities(List normalEntities, List lights, Camera camera, Vector4f clipPlane) { for(Entity entity: normalEntities) { processEntityWithNormal(entity); } @@ -107,7 +107,7 @@ public class MasterRenderer { guiRenderer.render(guis); } - private void renderTerrains(List terrains, List lights, ThirdPersonCamera camera) { + private void renderTerrains(List terrains, List lights, Camera camera) { terrainShader.start(); terrainShader.loadSkyColour(Window.getColour()); terrainShader.loadLights(lights); @@ -116,7 +116,7 @@ public class MasterRenderer { terrainShader.stop(); } - private void renderEntities(List entities, ThirdPersonCamera camera, List lights) { + private void renderEntities(List entities, Camera camera, List lights) { for(Entity entity: entities) { processEntity(entity); } diff --git a/src/main/java/io/github/hydos/ginger/engine/render/renderers/NormalMappingRenderer.java b/src/main/java/io/github/hydos/ginger/engine/render/renderers/NormalMappingRenderer.java index ecb7b34..da1feb4 100644 --- a/src/main/java/io/github/hydos/ginger/engine/render/renderers/NormalMappingRenderer.java +++ b/src/main/java/io/github/hydos/ginger/engine/render/renderers/NormalMappingRenderer.java @@ -9,7 +9,7 @@ import org.lwjgl.opengl.GL13; import org.lwjgl.opengl.GL20; import org.lwjgl.opengl.GL30; -import io.github.hydos.ginger.engine.cameras.ThirdPersonCamera; +import io.github.hydos.ginger.engine.cameras.Camera; import io.github.hydos.ginger.engine.elements.objects.Entity; import io.github.hydos.ginger.engine.elements.objects.Light; import io.github.hydos.ginger.engine.io.Window; @@ -33,7 +33,7 @@ public class NormalMappingRenderer { shader.stop(); } - public void render(Map> entities, Vector4f clipPlane, List lights, ThirdPersonCamera camera) { + public void render(Map> entities, Vector4f clipPlane, List lights, Camera camera) { shader.start(); prepare(clipPlane, lights, camera); for (TexturedModel model : entities.keySet()) { @@ -87,7 +87,7 @@ public class NormalMappingRenderer { shader.loadOffset(0, 0); } - private void prepare(Vector4f clipPlane, List lights, ThirdPersonCamera camera) { + private void prepare(Vector4f clipPlane, List lights, Camera camera) { shader.loadClipPlane(clipPlane); //need to be public variables in MasterRenderer shader.loadSkyColour(Window.getColour()); diff --git a/src/main/java/io/github/hydos/ginger/engine/render/renderers/ParticleRenderer.java b/src/main/java/io/github/hydos/ginger/engine/render/renderers/ParticleRenderer.java index 092a7d7..94287cf 100644 --- a/src/main/java/io/github/hydos/ginger/engine/render/renderers/ParticleRenderer.java +++ b/src/main/java/io/github/hydos/ginger/engine/render/renderers/ParticleRenderer.java @@ -11,7 +11,7 @@ import org.lwjgl.opengl.GL20; import org.lwjgl.opengl.GL30; import org.lwjgl.opengl.GL31; -import io.github.hydos.ginger.engine.cameras.ThirdPersonCamera; +import io.github.hydos.ginger.engine.cameras.Camera; import io.github.hydos.ginger.engine.math.Maths; import io.github.hydos.ginger.engine.math.matrixes.Matrix4f; import io.github.hydos.ginger.engine.math.vectors.Vector3f; @@ -50,7 +50,7 @@ public class ParticleRenderer { shader.stop(); } - public void render(Map> particles, ThirdPersonCamera camera){ + public void render(Map> particles, Camera camera){ Matrix4f viewMatrix = Maths.createViewMatrix(camera); prepare(); for(ParticleTexture texture : particles.keySet()) { diff --git a/src/main/java/io/github/hydos/ginger/engine/render/renderers/SkyboxRenderer.java b/src/main/java/io/github/hydos/ginger/engine/render/renderers/SkyboxRenderer.java index b7ddb12..f601789 100644 --- a/src/main/java/io/github/hydos/ginger/engine/render/renderers/SkyboxRenderer.java +++ b/src/main/java/io/github/hydos/ginger/engine/render/renderers/SkyboxRenderer.java @@ -5,7 +5,7 @@ import org.lwjgl.opengl.GL13; import org.lwjgl.opengl.GL20; import org.lwjgl.opengl.GL30; -import io.github.hydos.ginger.engine.cameras.ThirdPersonCamera; +import io.github.hydos.ginger.engine.cameras.Camera; import io.github.hydos.ginger.engine.math.matrixes.Matrix4f; import io.github.hydos.ginger.engine.render.models.RawModel; import io.github.hydos.ginger.engine.render.shaders.SkyboxShader; @@ -75,7 +75,7 @@ public class SkyboxRenderer { shader.stop(); } - public void render(ThirdPersonCamera camera) { + public void render(Camera camera) { shader.start(); shader.loadViewMatrix(camera); GL30.glBindVertexArray(cube.getVaoID()); diff --git a/src/main/java/io/github/hydos/ginger/engine/render/shaders/SkyboxShader.java b/src/main/java/io/github/hydos/ginger/engine/render/shaders/SkyboxShader.java index cc829a7..950abd4 100644 --- a/src/main/java/io/github/hydos/ginger/engine/render/shaders/SkyboxShader.java +++ b/src/main/java/io/github/hydos/ginger/engine/render/shaders/SkyboxShader.java @@ -1,6 +1,6 @@ package io.github.hydos.ginger.engine.render.shaders; -import io.github.hydos.ginger.engine.cameras.ThirdPersonCamera; +import io.github.hydos.ginger.engine.cameras.Camera; import io.github.hydos.ginger.engine.math.Maths; import io.github.hydos.ginger.engine.math.matrixes.Matrix4f; @@ -17,7 +17,7 @@ public class SkyboxShader extends ShaderProgram{ super.loadMatrix(location_projectionMatrix, matrix); } - public void loadViewMatrix(ThirdPersonCamera camera){ + public void loadViewMatrix(Camera camera){ Matrix4f matrix = Maths.createViewMatrix(camera); matrix.m30 = 0; matrix.m31 = 0; diff --git a/src/main/java/io/github/hydos/ginger/engine/render/shaders/StaticShader.java b/src/main/java/io/github/hydos/ginger/engine/render/shaders/StaticShader.java index d79793a..86cc5d6 100644 --- a/src/main/java/io/github/hydos/ginger/engine/render/shaders/StaticShader.java +++ b/src/main/java/io/github/hydos/ginger/engine/render/shaders/StaticShader.java @@ -2,7 +2,7 @@ package io.github.hydos.ginger.engine.render.shaders; import java.util.List; -import io.github.hydos.ginger.engine.cameras.ThirdPersonCamera; +import io.github.hydos.ginger.engine.cameras.Camera; import io.github.hydos.ginger.engine.elements.objects.Light; import io.github.hydos.ginger.engine.math.Maths; import io.github.hydos.ginger.engine.math.matrixes.Matrix4f; @@ -65,7 +65,7 @@ public class StaticShader extends ShaderProgram{ super.loadMatrix(location_projectionMatrix, matrix); } - public void loadViewMatrix(ThirdPersonCamera camera) { + public void loadViewMatrix(Camera camera) { Matrix4f matrix = Maths.createViewMatrix(camera); super.loadMatrix(location_viewMatrix, matrix); } diff --git a/src/main/java/io/github/hydos/ginger/engine/render/shaders/TerrainShader.java b/src/main/java/io/github/hydos/ginger/engine/render/shaders/TerrainShader.java index 4b5faa0..d548550 100644 --- a/src/main/java/io/github/hydos/ginger/engine/render/shaders/TerrainShader.java +++ b/src/main/java/io/github/hydos/ginger/engine/render/shaders/TerrainShader.java @@ -2,7 +2,7 @@ package io.github.hydos.ginger.engine.render.shaders; import java.util.List; -import io.github.hydos.ginger.engine.cameras.ThirdPersonCamera; +import io.github.hydos.ginger.engine.cameras.Camera; import io.github.hydos.ginger.engine.elements.objects.Light; import io.github.hydos.ginger.engine.math.Maths; import io.github.hydos.ginger.engine.math.matrixes.Matrix4f; @@ -83,7 +83,7 @@ public class TerrainShader extends ShaderProgram{ super.loadMatrix(location_projectionMatrix, matrix); } - public void loadViewMatrix(ThirdPersonCamera camera) { + public void loadViewMatrix(Camera camera) { Matrix4f matrix = Maths.createViewMatrix(camera); super.loadMatrix(location_viewMatrix, matrix); } diff --git a/src/main/java/io/github/hydos/ginger/engine/render/tools/MousePicker.java b/src/main/java/io/github/hydos/ginger/engine/render/tools/MousePicker.java index 41c83a8..b84d4a9 100644 --- a/src/main/java/io/github/hydos/ginger/engine/render/tools/MousePicker.java +++ b/src/main/java/io/github/hydos/ginger/engine/render/tools/MousePicker.java @@ -2,7 +2,7 @@ package io.github.hydos.ginger.engine.render.tools; import org.joml.Vector4f; -import io.github.hydos.ginger.engine.cameras.ThirdPersonCamera; +import io.github.hydos.ginger.engine.cameras.Camera; import io.github.hydos.ginger.engine.io.Window; import io.github.hydos.ginger.engine.math.Maths; import io.github.hydos.ginger.engine.math.matrixes.Matrix4f; @@ -19,12 +19,12 @@ public class MousePicker { private Matrix4f projectionMatrix; private Matrix4f viewMatrix; - private ThirdPersonCamera camera; + private Camera camera; private Terrain terrain; private Vector3f currentTerrainPoint; - public MousePicker(ThirdPersonCamera cam, Matrix4f projection, Terrain terrain) { + public MousePicker(Camera cam, Matrix4f projection, Terrain terrain) { camera = cam; projectionMatrix = projection; viewMatrix = Maths.createViewMatrix(camera); diff --git a/src/main/java/io/github/hydos/ginger/engine/shadow/ShadowBox.java b/src/main/java/io/github/hydos/ginger/engine/shadow/ShadowBox.java index c30593e..fc62084 100644 --- a/src/main/java/io/github/hydos/ginger/engine/shadow/ShadowBox.java +++ b/src/main/java/io/github/hydos/ginger/engine/shadow/ShadowBox.java @@ -2,7 +2,7 @@ package io.github.hydos.ginger.engine.shadow; import org.joml.Vector4f; -import io.github.hydos.ginger.engine.cameras.ThirdPersonCamera; +import io.github.hydos.ginger.engine.cameras.Camera; import io.github.hydos.ginger.engine.io.Window; import io.github.hydos.ginger.engine.math.matrixes.Matrix4f; import io.github.hydos.ginger.engine.math.vectors.Vector3f; @@ -31,7 +31,7 @@ public class ShadowBox { private float minY, maxY; private float minZ, maxZ; private Matrix4f lightViewMatrix; - private ThirdPersonCamera cam; + private Camera cam; private float farHeight, farWidth, nearHeight, nearWidth; @@ -48,7 +48,7 @@ public class ShadowBox { * @param camera * - the in-game camera. */ - protected ShadowBox(Matrix4f lightViewMatrix, ThirdPersonCamera camera) { + protected ShadowBox(Matrix4f lightViewMatrix, Camera camera) { this.lightViewMatrix = lightViewMatrix; this.cam = camera; calculateWidthsAndHeights(); diff --git a/src/main/java/io/github/hydos/ginger/engine/shadow/ShadowMapMasterRenderer.java b/src/main/java/io/github/hydos/ginger/engine/shadow/ShadowMapMasterRenderer.java index 8a19620..f14a59b 100644 --- a/src/main/java/io/github/hydos/ginger/engine/shadow/ShadowMapMasterRenderer.java +++ b/src/main/java/io/github/hydos/ginger/engine/shadow/ShadowMapMasterRenderer.java @@ -5,7 +5,7 @@ import java.util.Map; import org.lwjgl.opengl.GL11; -import io.github.hydos.ginger.engine.cameras.ThirdPersonCamera; +import io.github.hydos.ginger.engine.cameras.Camera; import io.github.hydos.ginger.engine.elements.objects.Entity; import io.github.hydos.ginger.engine.elements.objects.Light; import io.github.hydos.ginger.engine.math.matrixes.Matrix4f; @@ -44,7 +44,7 @@ public class ShadowMapMasterRenderer { * @param camera * - the camera being used in the scene. */ - public ShadowMapMasterRenderer(ThirdPersonCamera camera) { + public ShadowMapMasterRenderer(Camera camera) { shader = new ShadowShader(); shadowBox = new ShadowBox(lightViewMatrix, camera); shadowFbo = new ShadowFrameBuffer(SHADOW_MAP_SIZE, SHADOW_MAP_SIZE); diff --git a/target/classes/io/github/hydos/ginger/Example.class b/target/classes/io/github/hydos/ginger/Example.class index 24fbdc28f4742ed1cb77ac651483f369f7bedf56..6130cd1b2a535029adb7644725f9dabe627a9f4f 100644 GIT binary patch literal 9345 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 B(uDv3 diff --git a/target/classes/io/github/hydos/ginger/engine/cameras/ThirdPersonCamera$1.class b/target/classes/io/github/hydos/ginger/engine/cameras/ThirdPersonCamera$1.class deleted file mode 100644 index e1f85cb0832163095b52929c0a21e881ace55e05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 909 zcmbVKQEw7K5dIdf9GusJs8Fq1tEf;D&n8W(Y4rs}ZLn$525sM#yDc1DZsXoT#b4oH zF==DsgFnF3zhs=fkoe#mm+am*lbLV6nb}`|e*6Tmg@%m`!;4UP{V*Afd){CgsF;kX zFSI8j0>bn8NN65=hl5ZD`$ESmYNoE*h7F5hP3gWT&xU>J_2tQ#_ombSaNuhtWs^(U z`>o(<55rOL*A2uq1;hEmtC$yW6zwHX^LTcUNN-|(^MEu)G3w7)puL1M%Q|IdHK75 zDsI|XX4sl@TrO^5g>(mDobbpOZLLQ8l23(ZU~OvjEQ|>4GGv0!1X>16846#N8g;}( zNCxLXjWwl)W&)M}*8gB+no$v_1z9+^ol(!Bh!l$(Rf@}_h&8N`cnkL_D}x89(chx1hj>iLp-dy$e04e* GRR033nArCK diff --git a/target/classes/io/github/hydos/ginger/engine/cameras/ThirdPersonCamera.class b/target/classes/io/github/hydos/ginger/engine/cameras/ThirdPersonCamera.class deleted file mode 100644 index 36a17e219258e78e37469a6742d3c5e7cecea488..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3596 zcmbVOU2_xX89giO14|n)HZjHy5HLw3k+MmhV1iv^uuvju69-d)Y1*)o*4Dym*WF!P zn6_z}v`L!@Z8~kzGVOGFm%B{DV8SFby>D-O)xXlobb6lMWo=v;&%`s<`}KUB_dFl( z{`0?I{vE(5{**yN!KmqIi>BXPu4&EHhU0NzFB-09*qj(zU2hq#?r9gBrrVe`T+gwm zf~^da3VN>TE4pUs_M-M`?V3^d74$Yt&)4m`QFfiytfj9St^%d3U^k^KeN zJC+>J^i9WB@Z$8NfwXkLsjbk3<9b>(7)KVy6r`3+zur{PwW_xjBwfd{6r`6T$D`X= zH7uiL*uJMZ0envjk*=FtX@EpNd`BLzwwOH97e=pc@MI zsz@O%vwbQuNM|slVB{O{ki{VOi-!XQo-dcng{oM6QpFB*%j~d<$FNhuu4xAK{Bo;i zxEJ-BWiVdTPF=UEx@*ch+D!UQ(^K%$HaFigImn;09c`Thx{b%J;w4<~2(x2kfwZ@r z71FNYsETKW_Q!a~`m&|_#udkD$;mMlnw;#6Pi7^NDaz*m7*dD0$vvB6DnR3>3y+u)o^{2s|T_oHKt-5-(hCNQem~t#&wcn zc$q>|F92Cg;!FmoSv-%kVm! z4MRm0mlSmS&IP?;>NayanJ*PeqA;)GiX3)%rY-B&Rs0}W*BwuoeM7}}G2P9|(pA*t zQpyckHB=bE>ZYs~RWyUuDw8ZA?LjyRCgf{+g$2*>FUPYh3KGo{EzJ3P z{rZf)6x3mI@-68TF8mCL{Fz4wnWvXbyWzA|EMtXzpdG9T`&-B-?EmEJfB4y zH>JD$Si$&qWxb`Hu|hSApW2L z)uoqD>6TR^CrqvUx#`qN(Or~&a!8eoHk#fWWG|kB9yeIWpZeFx$RtH66+C&N zl!EM>v+VL+G^OqK|KEdpOj1{YTCr`zow9V#GZ^&TdBgK(3~AUN4$)>8E%V`)hl8_( zJR8BtMjwnUzhGn;2P4ZP7}@?g?xclX=;7~fuCDVe!Ew0w1$v9UkFTM>m|Md@@hc3@ z=W@9(@WdJp7LTss(C2}XVg3#V1_zL2*+}0`^2$ z-lr|W@?7yAiv0f;|7AW>;?L;W;_#7sI9cqSDBi`PdpN~mpti7v(mErD`O1Qxlk~WQ zw^oT{H+}Wf%M&Q_ojJMz*K-lB-9%g_56lH}`f?Bo1+T=oPLM~1cC$sgtgNh|vhFb( zaD0rn(gMqBC>dE+q;W;J(>RKi6pbAGjFSWdg1{~K%1OXN{A_eYTWSkra@$)Pl}^J@$x=!V}e zk=seyk&Nn(-S#fkVrDnT>cWOt^+!Gu@=X?5o8YCyTF)K)=qt46*$`Im<0qHaX$^C| z%I@*{23tL`Eq=vCw*DLuGM>DTw{K(g4&L2^_sK?ap5zQOS`}eQsL4s6t9*h!+35Y? zqralN*!w|LV9#&7G|2OpNA}KeDSK3r`m3NM^L0?8qcP PnV*9LS!VMhj#hR68Y~(N diff --git a/target/classes/io/github/hydos/ginger/engine/particle/ParticleMaster.class b/target/classes/io/github/hydos/ginger/engine/particle/ParticleMaster.class index 0e9b1d827fe86a824dc9c5415b614f7f48dffe4f..087a71374da4a3d325ab5d822a5719e93347d9ef 100644 GIT binary patch delta 64 zcmca7wMlA&I5V@MhR;L+xyfr-IW~JU`!OQ%C!b~6&!h*J-Onn;#ON^j7Q6Xo84f2_ E0A$e;i~s-t delta 98 zcmdlabx&%8I5VTo9#%?`|djF`fcx3lbLw46MFMIA-)JXR?t RM(@cx+09XeKd?Ko0svo$A*=uZ diff --git a/target/classes/io/github/hydos/ginger/engine/shadow/ShadowBox.class b/target/classes/io/github/hydos/ginger/engine/shadow/ShadowBox.class index 270b113560988fccc7a5aa0438c8255c8943bfda..3d661cd17017e96fae9ac36fd59a039788e5d4a3 100644 GIT binary patch delta 46 zcmV+}0MY;ZFxoJ%F988Ak?|jsPXP#%VgbbhXDE^JHj`fhC$o_P-vR+FlQ97%v!Vsr E5|h>tbN~PV delta 86 zcmca*@Y`U6J|m;$#E4 SjOLRK8P$+AZEj?}DFgsM1|F3F diff --git a/target/classes/io/github/hydos/ginger/engine/shadow/ShadowMapMasterRenderer.class b/target/classes/io/github/hydos/ginger/engine/shadow/ShadowMapMasterRenderer.class index 92ff9595e3f970f17474b22979e8a2b7981b770e..0d374661cfd8a1e27445ac7b711d0d11816a6d3f 100644 GIT binary patch delta 60 zcmZoRd}Odemx