Class: RBGL::Engine::Rasterizer
- Inherits:
-
Object
- Object
- RBGL::Engine::Rasterizer
- Defined in:
- lib/rbgl/engine/rasterizer.rb,
lib/rbgl/engine/rasterizer/line_renderer.rb,
lib/rbgl/engine/rasterizer/point_renderer.rb,
lib/rbgl/engine/rasterizer/triangle_renderer.rb,
lib/rbgl/engine/rasterizer/attribute_interpolator.rb
Defined Under Namespace
Classes: AttributeInterpolator, LineRenderer, PointRenderer, TriangleRenderer
Instance Attribute Summary collapse
-
#viewport ⇒ Object
Returns the value of attribute viewport.
Instance Method Summary collapse
-
#initialize(framebuffer) ⇒ Rasterizer
constructor
A new instance of Rasterizer.
- #rasterize_line(v0, v1, fragment_shader, uniforms, cull_mode: :none, depth_test: true, depth_write: true, blend_mode: :none) ⇒ Object
- #rasterize_point(vertex, fragment_shader, uniforms, size: 1, depth_test: true, depth_write: true, blend_mode: :none) ⇒ Object
- #rasterize_triangle(v0, v1, v2, fragment_shader, uniforms, cull_mode: :none, depth_test: true, depth_write: true, blend_mode: :none) ⇒ Object
- #resize(width, height) ⇒ Object
Constructor Details
#initialize(framebuffer) ⇒ Rasterizer
Returns a new instance of Rasterizer.
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/rbgl/engine/rasterizer.rb', line 13 def initialize(framebuffer) @framebuffer = framebuffer @viewport = { x: 0, y: 0, width: framebuffer.width, height: framebuffer.height } @attribute_interpolator = AttributeInterpolator.new @triangle_renderer = TriangleRenderer.new( framebuffer, interpolator: @attribute_interpolator, viewport_transform: method(:viewport_transform), edge_function: method(:edge_function) ) @line_renderer = LineRenderer.new( framebuffer, interpolator: @attribute_interpolator, viewport_transform: method(:viewport_transform) ) @point_renderer = PointRenderer.new( framebuffer, viewport_transform: method(:viewport_transform), point_pixel_offsets: method(:point_pixel_offsets) ) end |
Instance Attribute Details
#viewport ⇒ Object
Returns the value of attribute viewport.
11 12 13 |
# File 'lib/rbgl/engine/rasterizer.rb', line 11 def @viewport end |
Instance Method Details
#rasterize_line(v0, v1, fragment_shader, uniforms, cull_mode: :none, depth_test: true, depth_write: true, blend_mode: :none) ⇒ Object
49 50 51 52 53 54 55 56 57 |
# File 'lib/rbgl/engine/rasterizer.rb', line 49 def rasterize_line(v0, v1, fragment_shader, uniforms, cull_mode: :none, depth_test: true, depth_write: true, blend_mode: :none) @line_renderer.rasterize(v0, v1, fragment_shader, uniforms, state( cull_mode: cull_mode, depth_test: depth_test, depth_write: depth_write, blend_mode: blend_mode )) end |
#rasterize_point(vertex, fragment_shader, uniforms, size: 1, depth_test: true, depth_write: true, blend_mode: :none) ⇒ Object
59 60 61 62 63 64 65 66 67 |
# File 'lib/rbgl/engine/rasterizer.rb', line 59 def rasterize_point(vertex, fragment_shader, uniforms, size: 1, depth_test: true, depth_write: true, blend_mode: :none) @point_renderer.rasterize(vertex, fragment_shader, uniforms, { size: size, depth_test: depth_test, depth_write: depth_write, blend_mode: blend_mode }) end |
#rasterize_triangle(v0, v1, v2, fragment_shader, uniforms, cull_mode: :none, depth_test: true, depth_write: true, blend_mode: :none) ⇒ Object
39 40 41 42 43 44 45 46 47 |
# File 'lib/rbgl/engine/rasterizer.rb', line 39 def rasterize_triangle(v0, v1, v2, fragment_shader, uniforms, cull_mode: :none, depth_test: true, depth_write: true, blend_mode: :none) @triangle_renderer.rasterize(v0, v1, v2, fragment_shader, uniforms, state( cull_mode: cull_mode, depth_test: depth_test, depth_write: depth_write, blend_mode: blend_mode )) end |
#resize(width, height) ⇒ Object
35 36 37 |
# File 'lib/rbgl/engine/rasterizer.rb', line 35 def resize(width, height) @viewport = @viewport.merge(width: width, height: height) end |