Module: Gsplat::Backend::RubyRasterizeToIndicesInRange

Defined in:
lib/gsplat/backend/ruby/rasterize_to_indices_in_range.rb

Overview

Reference implementation of contribution-index enumeration.

Class Method Summary collapse

Class Method Details

.forward(range_start, range_end, transmittances, means2d, conics, opacities, width, height, tile_size, isect_offsets, flatten_ids) ⇒ Object

rubocop:disable Metrics/ParameterLists



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
# File 'lib/gsplat/backend/ruby/rasterize_to_indices_in_range.rb', line 10

def forward(range_start, range_end, transmittances, means2d, conics, opacities,
            width, height, tile_size, isect_offsets, flatten_ids)
  # rubocop:enable Metrics/ParameterLists
  values = validate_inputs(
    range_start, range_end, transmittances, means2d, conics, opacities,
    width, height, tile_size, isect_offsets, flatten_ids
  )
  transmittances, means2d, conics, opacities, offsets, ids = values
  gaussian_ids = []
  pixel_ids = []
  image_ids = []
  means = means2d.reshape(means2d.shape[0] * means2d.shape[1], 2)
  conic_values = conics.reshape(conics.shape[0] * conics.shape[1], 3)
  opacity_values = opacities.flatten
  means2d.shape[0].times do |image|
    height.times do |row|
      width.times do |column|
        enumerate_pixel!(
          gaussian_ids, pixel_ids, image_ids, range_start, range_end,
          transmittances, means, conic_values, opacity_values, offsets, ids,
          image, row, column, means2d.shape[1], width, tile_size
        )
      end
    end
  end
  [Numo::Int64.cast(gaussian_ids), Numo::Int64.cast(pixel_ids), Numo::Int64.cast(image_ids)]
end