From d6802c875619a65dc95ea86dcd973b270c2bf32f Mon Sep 17 00:00:00 2001 From: Cyberarm Date: Thu, 30 Jan 2020 22:54:59 -0600 Subject: [PATCH] Enabled wireframes for shader renderer --- lib/renderer/opengl_renderer.rb | 11 +++++++++++ shaders/fragment/default.glsl | 8 +++++++- shaders/vertex/default.glsl | 3 +++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/lib/renderer/opengl_renderer.rb b/lib/renderer/opengl_renderer.rb index ebef34d..c3f63da 100644 --- a/lib/renderer/opengl_renderer.rb +++ b/lib/renderer/opengl_renderer.rb @@ -67,6 +67,17 @@ class IMICFPS glEnableVertexAttribArray(4) end + if window.config.get(:debug_options, :wireframe) + glPolygonMode(GL_FRONT_AND_BACK, GL_LINE) + Shader.active_shader.uniform_boolean("disableLighting", true) + + glDrawArrays(GL_TRIANGLES, 0, model.faces.count * 3) + window.number_of_vertices += model.faces.count * 3 + + Shader.active_shader.uniform_boolean("disableLighting", false) + glPolygonMode(GL_FRONT_AND_BACK, GL_FILL) + end + glDrawArrays(GL_TRIANGLES, 0, model.faces.count * 3) window.number_of_vertices += model.faces.count * 3 diff --git a/shaders/fragment/default.glsl b/shaders/fragment/default.glsl index 9c7d57f..2e14c32 100644 --- a/shaders/fragment/default.glsl +++ b/shaders/fragment/default.glsl @@ -12,6 +12,7 @@ in float outTotalLights; in vec3 outFragPos; in vec3 outCameraPos; in vec3 outInverseNormal; +in float outDisableLighting; // optimizing compilers are annoying at this stage of my understanding of GLSL vec4 lokiVar; @@ -76,7 +77,12 @@ void main() { lokiVar = vec4(outColor, 1.0) + outNormal + vec4(outUV, 1.0) + vec4(outTextureID, 1.0, 1.0, 1.0); lokiVar = normalize(lokiVar); - vec3 result = calculateLighting() * outColor; + vec3 result; + if (outDisableLighting == 1.0) { + result = outColor + 0.25; + } else { + result = calculateLighting() * outColor; + } gl_FragColor = vec4(result, 1.0); } diff --git a/shaders/vertex/default.glsl b/shaders/vertex/default.glsl index 9a5f188..a8287a3 100644 --- a/shaders/vertex/default.glsl +++ b/shaders/vertex/default.glsl @@ -20,6 +20,7 @@ out vec3 outFragPos; out vec3 outViewPos; out vec3 outCameraPos; out vec3 outInverseNormal; +out float outDisableLighting; uniform mat4 projection; uniform mat4 view; @@ -28,6 +29,7 @@ uniform int hasTexture; uniform float totalLights; uniform Light lights[MAX_LIGHTS]; uniform vec3 cameraPos; +uniform int disableLighting; void main() { @@ -41,6 +43,7 @@ void main() { outLights = lights; outTotalLights = totalLights; outCameraPos = cameraPos; + outDisableLighting = disableLighting; outInverseNormal = mat3(transpose(inverse(model))) * vec3(inNormal); outFragPos = vec3(model * vec4(inPosition, 1.0));