Class: RBGL::Engine::Rasterizer::PointRenderer
- Inherits:
-
Object
- Object
- RBGL::Engine::Rasterizer::PointRenderer
- Defined in:
- lib/rbgl/engine/rasterizer/point_renderer.rb
Instance Method Summary collapse
-
#initialize(framebuffer, viewport_transform:, point_pixel_offsets:) ⇒ PointRenderer
constructor
A new instance of PointRenderer.
- #rasterize(vertex, fragment_shader, uniforms, state) ⇒ Object
Constructor Details
#initialize(framebuffer, viewport_transform:, point_pixel_offsets:) ⇒ PointRenderer
Returns a new instance of PointRenderer.
7 8 9 10 11 |
# File 'lib/rbgl/engine/rasterizer/point_renderer.rb', line 7 def initialize(framebuffer, viewport_transform:, point_pixel_offsets:) @framebuffer = framebuffer @viewport_transform = @point_pixel_offsets = point_pixel_offsets end |
Instance Method Details
#rasterize(vertex, fragment_shader, uniforms, state) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/rbgl/engine/rasterizer/point_renderer.rb', line 13 def rasterize(vertex, fragment_shader, uniforms, state) point = @viewport_transform.call(vertex[:position]) x = point.x.round y = point.y.round depth = point.z x_offsets, y_offsets = @point_pixel_offsets.call(state[:size]) y_offsets.each do |dy| x_offsets.each do |dx| frag_output = fragment_shader.process(vertex, uniforms) @framebuffer.write_pixel( x + dx, y + dy, frag_output[:color], depth, depth_test: state[:depth_test], depth_write: state[:depth_write], blend_mode: state[:blend_mode] ) end end end |