Module: Rendering::DebugDraw

Defined in:
lib/engine/rendering/debug_draw.rb

Constant Summary collapse

SCALE_FACTOR =

Render at 1/3 resolution for thicker lines

3

Class Method Summary collapse

Class Method Details

.draw(target_framebuffer) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/engine/rendering/debug_draw.rb', line 8

def draw(target_framebuffer)
  lines = Engine::Debug.lines
  spheres = Engine::Debug.spheres
  return if lines.empty? && spheres.empty?

  update_render_texture_size

  # Draw lines to low-res texture
  render_texture.bind
  Engine::GL.ClearColor(0.0, 0.0, 0.0, 0.0)
  Engine::GL.Clear(Engine::GL::COLOR_BUFFER_BIT)
  Engine::GL.Disable(Engine::GL::DEPTH_TEST)

  line_shader.use
  line_shader.set_mat4('camera', camera_matrix)

  update_vertex_data(lines, spheres)
  vertex_count = lines.size * 2 + spheres.sum { |s| s[:segments] * 3 * 2 }
  draw_lines(vertex_count)

  # Composite onto main framebuffer
  Engine::GL.BindFramebuffer(Engine::GL::FRAMEBUFFER, target_framebuffer)
  Engine::GL.Viewport(0, 0, Engine::Window.framebuffer_width, Engine::Window.framebuffer_height)
  Engine::GL.Enable(Engine::GL::BLEND)

  composite_material.set_runtime_texture('debugTexture', render_texture.color_texture)
  composite_material.set_vec2('texelSize', [1.0 / render_texture.width, 1.0 / render_texture.height])
  screen_quad.draw_with_material(composite_material)

  Engine::Debug.clear
end