7#ifndef NVIDIA_INDEX_BIN_GEOSPATIAL_EXAMPLE_CONSTANT_COLOR_MAPPING_H
8#define NVIDIA_INDEX_BIN_GEOSPATIAL_EXAMPLE_CONSTANT_COLOR_MAPPING_H
11#include <mi/base/interface_implement.h>
12#include <mi/base/handle.h>
13#include <mi/base/uuid.h>
14#include <mi/math/vector.h>
16#include <nv/index/idistributed_compute_technique.h>
17#include <nv/index/idistributed_compute_destination_buffer.h>
19#define USE_NVINDEX_ACCESS
20#include "utility/example_shared.h"
28 public nv::index::Distributed_compute_technique<
29 0x644c61ed,0x0865,0x4be8,0x94,0xdb,0x1e,0x75,0xaa,0xa6,0x8e,0x4c>
37 const mi::math::Vector_struct<mi::Float32, 2>& extent,
38 const mi::math::Color_struct & color)
49 m_color(1.0f, 1.0f, 1.0f, 1.0f)
56 mi::neuraylib::IDice_transaction* dice_transaction,
57 nv::index::IDistributed_compute_destination_buffer* dst_buffer)
const
60 using nv::index::IDistributed_compute_destination_buffer_2d_texture;
63 const mi::base::Handle<IDistributed_compute_destination_buffer_2d_texture> dst_buffer_2d(
64 dst_buffer->get_interface<IDistributed_compute_destination_buffer_2d_texture>());
68 std::cerr <<
"Distributed compute technique (Constant_color_mapping): "
69 <<
"Unable to retrieve valid 2d texture destination buffer interface.";
75 const IDistributed_compute_destination_buffer_2d_texture::Buffer_format texture_format = IDistributed_compute_destination_buffer_2d_texture:
:FORMAT_RGBA_FLOAT32;
82 const IDistributed_compute_destination_buffer_2d_texture::Buffer_layout texture_layout = IDistributed_compute_destination_buffer_2d_texture:
:TWO_DIMENSIONAL_ARRAY;
85 IDistributed_compute_destination_buffer_2d_texture::Buffer_config texture_config;
86 texture_config.format = texture_format;
87 texture_config.layout = texture_layout;
90 const mi::math::Bbox<mi::Float32, 2> surface_area = dst_buffer_2d->get_surface_area();
93 texture_config.resolution.x = 1u;
94 texture_config.resolution.y = 1u;
98 texture_config.covered_area = surface_area;
100 if (!dst_buffer_2d->generate_buffer_storage(texture_config))
102 std::cerr <<
"Distributed compute technique (Constant_color_mapping): "
103 <<
"unable to generate destination buffer storage.";
107 const mi::math::Vector_struct<mi::Uint32, 2>& tile_resolution =
108 dst_buffer_2d->get_buffer_config().resolution;
109 const mi::Size tile_buf_size = tile_resolution.x * tile_resolution.y;
110 assert(tile_buf_size > 0);
113 mi::math::Color_struct* texture_tile =
114 reinterpret_cast<mi::math::Color_struct*
>(dst_buffer_2d->get_buffer_storage());
117 for(mi::Size i = 0; i < tile_buf_size; ++i){
118 texture_tile[i] = m_color;
124 virtual mi::neuraylib::IElement*
copy()
const
127 other->m_extent = this->m_extent;
128 other->m_color = this->m_color;
133 return "Constant_color_mapping";
135 virtual void serialize(mi::neuraylib::ISerializer *serializer)
const
137 serializer->write(&(m_extent.x), 2);
138 serializer->write(&(m_color.r), 4);
140 virtual void deserialize(mi::neuraylib::IDeserializer* deserializer)
142 deserializer->read(&(m_extent.x), 2);
143 deserializer->read(&(m_color.r), 4);
146 mi::neuraylib::ITag_set* result)
const
153 mi::math::Vector<mi::Float32, 2> m_extent;
155 mi::math::Color m_color;
virtual void get_references(mi::neuraylib::ITag_set *result) const
virtual void deserialize(mi::neuraylib::IDeserializer *deserializer)
virtual void launch_compute(mi::neuraylib::IDice_transaction *dice_transaction, nv::index::IDistributed_compute_destination_buffer *dst_buffer) const
virtual mi::neuraylib::IElement * copy() const
Distributed_compute_constant_color_mapping()
Distributed_compute_constant_color_mapping(const mi::math::Vector_struct< mi::Float32, 2 > &extent, const mi::math::Color_struct &color)
virtual void serialize(mi::neuraylib::ISerializer *serializer) const
virtual const char * get_class_name() const