diff --git a/assets/Shaders/lib/material.fs b/assets/Shaders/lib/material.fs index 0dd25ad6..597878cc 100644 --- a/assets/Shaders/lib/material.fs +++ b/assets/Shaders/lib/material.fs @@ -13,6 +13,16 @@ struct Material { */ sampler2D specular; + /** + * The normal sampler + */ + sampler2D normal; + + /** + * The reflection map + */ + sampler2D parallax; + /** * The shininess value */ diff --git a/docs/src/progress/renderertodo.md b/docs/src/progress/renderertodo.md index 6254fbf8..61033dc8 100644 --- a/docs/src/progress/renderertodo.md +++ b/docs/src/progress/renderertodo.md @@ -1907,6 +1907,7 @@ Material albedo work Editor entities don't use charges on placing blocks Overhaul material loading - uses queued textures now Transparent block support +Grab hardware data on init rendering engine diff --git a/src/main/java/electrosphere/renderer/RenderingEngine.java b/src/main/java/electrosphere/renderer/RenderingEngine.java index 26615e35..72c43d57 100644 --- a/src/main/java/electrosphere/renderer/RenderingEngine.java +++ b/src/main/java/electrosphere/renderer/RenderingEngine.java @@ -36,6 +36,7 @@ import electrosphere.renderer.debug.DebugRendering; import electrosphere.renderer.framebuffer.Framebuffer; import electrosphere.renderer.framebuffer.FramebufferUtils; import electrosphere.renderer.framebuffer.Renderbuffer; +import electrosphere.renderer.hw.HardwareData; import electrosphere.renderer.light.LightManager; import electrosphere.renderer.model.Material; import electrosphere.renderer.pipelines.CompositePipeline; @@ -66,6 +67,11 @@ public class RenderingEngine { * Handle for the window created by glfw */ private long windowPtr = -1; + + /** + * The glfw hardware data + */ + public HardwareData hardwareData; public static final int GL_DEFAULT_FRAMEBUFFER = 0; @@ -244,6 +250,10 @@ public class RenderingEngine { "Error code: " + this.getGLFWErrorMessage(this.getGLFWError()); throw new IllegalStateException(message); } + + //grab hardware data + this.hardwareData = new HardwareData(); + //Gives hints to glfw to control how opengl will be used GLFW.glfwWindowHint(GLFW.GLFW_CONTEXT_VERSION_MAJOR, 4); GLFW.glfwWindowHint(GLFW.GLFW_CONTEXT_VERSION_MINOR, 5); diff --git a/src/main/java/electrosphere/renderer/hw/HardwareData.java b/src/main/java/electrosphere/renderer/hw/HardwareData.java new file mode 100644 index 00000000..1252e536 --- /dev/null +++ b/src/main/java/electrosphere/renderer/hw/HardwareData.java @@ -0,0 +1,33 @@ +package electrosphere.renderer.hw; + +import java.util.LinkedList; +import java.util.List; + +import org.lwjgl.PointerBuffer; +import org.lwjgl.glfw.GLFW; + +/** + * Data about the renderer hardware + */ +public class HardwareData { + + /** + * The list of monitors available + */ + public final List monitors = new LinkedList(); + + /** + * Constructor + */ + public HardwareData(){ + PointerBuffer monitorBuff = GLFW.glfwGetMonitors(); + if(monitorBuff != null){ + while(monitorBuff.hasRemaining()){ + long id = monitorBuff.get(); + String name = GLFW.glfwGetMonitorName(id); + monitors.add(new MonitorData(id, name)); + } + } + } + +} diff --git a/src/main/java/electrosphere/renderer/hw/MonitorData.java b/src/main/java/electrosphere/renderer/hw/MonitorData.java new file mode 100644 index 00000000..9e7f5ad6 --- /dev/null +++ b/src/main/java/electrosphere/renderer/hw/MonitorData.java @@ -0,0 +1,28 @@ +package electrosphere.renderer.hw; + +/** + * Data about a monitor + */ +public class MonitorData { + + /** + * The window id of the monitor + */ + public final long windowId; + + /** + * The name of the monitor + */ + public final String name; + + /** + * Constructor + * @param windowId The window id of the monitor + * @param name The name of the monitor + */ + public MonitorData(long windowId, String name){ + this.windowId = windowId; + this.name = name; + } + +}