diff --git a/src/main/java/com/github/halotroop/litecraft/Litecraft.java b/src/main/java/com/github/halotroop/litecraft/Litecraft.java index 59bb855..9c0b9f2 100644 --- a/src/main/java/com/github/halotroop/litecraft/Litecraft.java +++ b/src/main/java/com/github/halotroop/litecraft/Litecraft.java @@ -13,6 +13,7 @@ import com.github.hydos.ginger.engine.common.api.game.*; import com.github.hydos.ginger.engine.common.cameras.*; import com.github.hydos.ginger.engine.common.elements.objects.*; import com.github.hydos.ginger.engine.common.font.FontType; +import com.github.hydos.ginger.engine.common.info.RenderAPI; import com.github.hydos.ginger.engine.common.io.Window; import com.github.hydos.ginger.engine.common.obj.ModelLoader; import com.github.hydos.ginger.engine.common.obj.shapes.StaticCube; @@ -151,7 +152,7 @@ public class Litecraft extends Game private void setupWindow() { - Window.create(1280, 720, "LiteCraft", 60); // create window + Window.create(1280, 720, "LiteCraft", 60, RenderAPI.OpenGL); // create window KeyCallbackHandler.trackWindow(Window.getWindow()); // set up the gateways keybind key tracking MouseCallbackHandler.trackWindow(Window.getWindow()); } diff --git a/src/main/java/com/github/halotroop/litecraft/world/Chunk.java b/src/main/java/com/github/halotroop/litecraft/world/Chunk.java index 47ef145..3f72d9b 100644 --- a/src/main/java/com/github/halotroop/litecraft/world/Chunk.java +++ b/src/main/java/com/github/halotroop/litecraft/world/Chunk.java @@ -33,7 +33,6 @@ public class Chunk implements BlockAccess, WorldGenConstants, SODSerializable private boolean fullyGenerated = false; public final int dimension; private boolean dirty = true; - private World world; /** * A holder for the rendered blocks in this chunk. This array is *NOT* safe to use for getting BIs at a position! * It can vary in size from 0 to 512 elements long and must only be read linearly. diff --git a/src/main/java/com/github/halotroop/litecraft/world/World.java b/src/main/java/com/github/halotroop/litecraft/world/World.java index bfb7e4b..887e287 100644 --- a/src/main/java/com/github/halotroop/litecraft/world/World.java +++ b/src/main/java/com/github/halotroop/litecraft/world/World.java @@ -197,7 +197,7 @@ public class World implements BlockAccess, WorldGenConstants public void unloadAllChunks() { LongList chunkPositions = new LongArrayList(); - List futures = new ArrayList<>(); + @SuppressWarnings("rawtypes") List futures = new ArrayList<>(); if (this.chunks != null) { this.chunks.forEach((pos, chunk) -> diff --git a/src/main/java/com/github/halotroop/litecraft/world/gen/modifier/CavesModifier.java b/src/main/java/com/github/halotroop/litecraft/world/gen/modifier/CavesModifier.java index 0b854fa..4bacc16 100644 --- a/src/main/java/com/github/halotroop/litecraft/world/gen/modifier/CavesModifier.java +++ b/src/main/java/com/github/halotroop/litecraft/world/gen/modifier/CavesModifier.java @@ -10,8 +10,6 @@ import com.github.halotroop.litecraft.world.gen.WorldGenConstants; public class CavesModifier implements WorldModifier, WorldGenConstants { private OctaveSimplexNoise caveNoise; - private static final double THRESHOLD = 0.1; - @Override public void initialize(long seed) { diff --git a/src/main/java/com/github/hydos/ginger/engine/common/info/RenderAPI.java b/src/main/java/com/github/hydos/ginger/engine/common/info/RenderAPI.java new file mode 100644 index 0000000..3d7e755 --- /dev/null +++ b/src/main/java/com/github/hydos/ginger/engine/common/info/RenderAPI.java @@ -0,0 +1,4 @@ +package com.github.hydos.ginger.engine.common.info; + +public enum RenderAPI +{OpenGL, Vulkan} diff --git a/src/main/java/com/github/hydos/ginger/engine/common/io/Window.java b/src/main/java/com/github/hydos/ginger/engine/common/io/Window.java index a706ad0..4784b22 100644 --- a/src/main/java/com/github/hydos/ginger/engine/common/io/Window.java +++ b/src/main/java/com/github/hydos/ginger/engine/common/io/Window.java @@ -7,6 +7,7 @@ import org.lwjgl.BufferUtils; import org.lwjgl.glfw.*; import org.lwjgl.opengl.*; +import com.github.hydos.ginger.engine.common.info.RenderAPI; import com.github.hydos.ginger.engine.opengl.api.GingerGL; import com.github.hydos.ginger.engine.opengl.render.texture.Image; @@ -26,7 +27,8 @@ public class Window public static boolean isFullscreen() { return fullscreen; } - + + public static RenderAPI renderAPI; private static int width, height; private static String title; private static long window; @@ -50,18 +52,23 @@ public class Window public static boolean closed() { return GLFW.glfwWindowShouldClose(getWindow()); } - public static void create() + public static void create(RenderAPI api) { if (!GLFW.glfwInit()) { System.err.println("Error: Couldn't initialize GLFW"); System.exit(-1); } + renderAPI = api; + if(renderAPI == RenderAPI.OpenGL) + { + GLFW.glfwWindowHint(GLFW.GLFW_CONTEXT_VERSION_MAJOR, 4); + GLFW.glfwWindowHint(GLFW.GLFW_CONTEXT_VERSION_MINOR, 6); + GLFW.glfwWindowHint(GLFW.GLFW_OPENGL_PROFILE, GLFW.GLFW_OPENGL_CORE_PROFILE); + GLFW.glfwWindowHint(GLFW.GLFW_OPENGL_FORWARD_COMPAT, GL11.GL_TRUE); + }else if (renderAPI == RenderAPI.Vulkan) + GLFW.glfwWindowHint(GLFW.GLFW_VISIBLE, GLFW.GLFW_FALSE); - GLFW.glfwWindowHint(GLFW.GLFW_CONTEXT_VERSION_MAJOR, 4); - GLFW.glfwWindowHint(GLFW.GLFW_CONTEXT_VERSION_MINOR, 6); - GLFW.glfwWindowHint(GLFW.GLFW_OPENGL_PROFILE, GLFW.GLFW_OPENGL_CORE_PROFILE); - GLFW.glfwWindowHint(GLFW.GLFW_OPENGL_FORWARD_COMPAT, GL11.GL_TRUE); GLFW.glfwWindowHint(GLFW.GLFW_RESIZABLE, GLFW.GLFW_TRUE); GLFWVidMode vidmode = GLFW.glfwGetVideoMode(GLFW.glfwGetPrimaryMonitor()); window = GLFW.glfwCreateWindow(actualWidth, actualHeight, title, (fullscreen) ? GLFW.glfwGetPrimaryMonitor() : 0, getWindow()); @@ -82,7 +89,7 @@ public class Window oldWindowHeight = getHeight(); } - public static void create(int width, int height, String title, int fpsCap) + public static void create(int width, int height, String title, int fpsCap, RenderAPI api) { Window.width = width / 2; Window.height = height / 2; @@ -90,7 +97,7 @@ public class Window Window.actualWidth = width; Window.title = title; Window.fpsCap = fpsCap; - Window.create(); + Window.create(api); Window.setIcon(); } diff --git a/src/main/java/com/github/hydos/ginger/engine/vulkan/utils/VKFactory.java b/src/main/java/com/github/hydos/ginger/engine/vulkan/utils/VKFactory.java index cb38512..1a000a1 100644 --- a/src/main/java/com/github/hydos/ginger/engine/vulkan/utils/VKFactory.java +++ b/src/main/java/com/github/hydos/ginger/engine/vulkan/utils/VKFactory.java @@ -1,22 +1,18 @@ package com.github.hydos.ginger.engine.vulkan.utils; -import java.nio.Buffer; - -import org.lwjgl.system.MemoryStack; -import org.lwjgl.util.vma.VmaAllocationCreateInfo; -import org.lwjgl.util.vma.VmaAllocationInfo; -import org.lwjgl.util.vma.VmaAllocatorCreateInfo; -import org.lwjgl.util.vma.VmaVulkanFunctions; -import org.lwjgl.vulkan.*; -import static org.lwjgl.vulkan.EXTDebugReport.*; -import static org.lwjgl.vulkan.KHR8bitStorage.*; -import static org.lwjgl.vulkan.KHRGetMemoryRequirements2.*; +import static org.lwjgl.vulkan.EXTDebugReport.VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT; +import static org.lwjgl.vulkan.KHR8bitStorage.VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR; +import static org.lwjgl.vulkan.KHRGetMemoryRequirements2.VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR; import static org.lwjgl.vulkan.KHRGetPhysicalDeviceProperties2.*; -import static org.lwjgl.vulkan.KHRShaderFloat16Int8.*; +import static org.lwjgl.vulkan.KHRShaderFloat16Int8.VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR; import static org.lwjgl.vulkan.KHRSwapchain.*; import static org.lwjgl.vulkan.NVRayTracing.*; import static org.lwjgl.vulkan.VK10.*; +import org.lwjgl.system.MemoryStack; +import org.lwjgl.util.vma.*; +import org.lwjgl.vulkan.*; + public class VKFactory { static VmaVulkanFunctions VmaVulkanFunctions(MemoryStack stack) { return VmaVulkanFunctions.callocStack(stack); diff --git a/src/main/java/com/github/hydos/ginger/engine/vulkan/utils/VKLoader.java b/src/main/java/com/github/hydos/ginger/engine/vulkan/utils/VKLoader.java index a7aadc9..abaa6ec 100644 --- a/src/main/java/com/github/hydos/ginger/engine/vulkan/utils/VKLoader.java +++ b/src/main/java/com/github/hydos/ginger/engine/vulkan/utils/VKLoader.java @@ -1,7 +1,5 @@ package com.github.hydos.ginger.engine.vulkan.utils; -import org.lwjgl.vulkan.VK12; - /** * * @author hydos diff --git a/src/main/java/com/github/hydos/ginger/engine/vulkan/utils/VKUtils.java b/src/main/java/com/github/hydos/ginger/engine/vulkan/utils/VKUtils.java index 5db771d..f6114fd 100644 --- a/src/main/java/com/github/hydos/ginger/engine/vulkan/utils/VKUtils.java +++ b/src/main/java/com/github/hydos/ginger/engine/vulkan/utils/VKUtils.java @@ -1,31 +1,25 @@ package com.github.hydos.ginger.engine.vulkan.utils; -import org.lwjgl.assimp.*; -import org.lwjgl.system.Callback; -import org.lwjgl.system.MemoryStack; -import org.lwjgl.util.shaderc.ShadercIncludeResolve; -import org.lwjgl.util.shaderc.ShadercIncludeResult; -import org.lwjgl.util.shaderc.ShadercIncludeResultRelease; -import org.lwjgl.vulkan.*; - -import com.github.hydos.ginger.engine.opengl.render.tools.IOUtil; - -import java.io.IOException; -import java.nio.ByteBuffer; -import java.nio.LongBuffer; -import java.util.ArrayList; -import java.util.List; - -import static org.lwjgl.BufferUtils.*; +import static org.lwjgl.BufferUtils.createByteBuffer; import static org.lwjgl.assimp.Assimp.*; import static org.lwjgl.system.MemoryUtil.*; import static org.lwjgl.util.shaderc.Shaderc.*; -import static org.lwjgl.vulkan.EXTDebugReport.*; -import static org.lwjgl.vulkan.KHRDisplaySwapchain.*; +import static org.lwjgl.vulkan.EXTDebugReport.VK_ERROR_VALIDATION_FAILED_EXT; +import static org.lwjgl.vulkan.KHRDisplaySwapchain.VK_ERROR_INCOMPATIBLE_DISPLAY_KHR; import static org.lwjgl.vulkan.KHRSurface.*; import static org.lwjgl.vulkan.KHRSwapchain.*; import static org.lwjgl.vulkan.NVRayTracing.*; -import static org.lwjgl.vulkan.VK12.*; +import static org.lwjgl.vulkan.VK10.*; + +import java.io.IOException; +import java.nio.ByteBuffer; +import java.util.*; + +import org.lwjgl.assimp.*; +import org.lwjgl.system.*; +import org.lwjgl.util.shaderc.*; + +import com.github.hydos.ginger.engine.opengl.render.tools.IOUtil; /** * Utility functions for Vulkan.