NVIDIA Index example code nvidia_logo_transpbg.gif Up
xac_compute_scene_tool.h
Go to the documentation of this file.
1/******************************************************************************
2 * Copyright 2023 NVIDIA Corporation. All rights reserved.
3 *****************************************************************************/
9#ifndef EXAMPLES_XAC_COMPUTE_SCENE_TOOL_H
10#define EXAMPLES_XAC_COMPUTE_SCENE_TOOL_H
11
12#include <mi/dice.h>
13#define USE_NVINDEX_ACCESS
14#include "utility/example_shared.h"
15
16
17namespace xac_compute
18{
19
20// Helper tool to setup scenes.
22{
23 mi::base::Handle<const nv::index::ISession> session;
24 mi::base::Handle<nv::index::IScene> scene;
25 mi::base::Handle<nv::index::IScene_group> current_group;
26 mi::neuraylib::IDice_transaction* transaction;
27
29 mi::neuraylib::Tag session_tag_,
30 mi::neuraylib::IDice_transaction* transaction_);
31
32 // Add a static or transformed group to scene.
33 mi::neuraylib::Tag add_new_group(bool transformed_group = false);
34
35 // Set the current group.
36 void set_group(mi::neuraylib::Tag group_);
37
38
39 template<class T>
40 mi::neuraylib::Tag store_and_add_to_group(const mi::base::Handle<T>& element)
41 {
42 if (element) {
43 const mi::neuraylib::Tag tag = transaction->store_for_reference_counting(element.get());
44 check_success(tag.is_valid());
45 current_group->append(tag, transaction);
46 return tag;
47 }
48 return mi::neuraylib::Tag();
49 }
50
51 template<class T>
52 void create_attribute(mi::base::Handle<T>& element)
53 {
54 element = scene->create_attribute<T>();
55 check_success(element.is_valid_interface());
56 }
57};
58
59
60
62{
63 const char* program_begin;
64 const char* program_end;
65 const char* color_program;
66 const char* compute_program;
67};
68
72};
73
74// nv::index::IVolume_sample_program or nv::index::ISurface_sample_program
75std::pair<mi::neuraylib::Tag, std::string>
77 Sample_program_kind prg_kind,
78 int user_prg,
79 const std::string& user_text,
80 const Program_source& prg_text,
81 Scene_tool& scene_tool,
82 const char* extra_pgr_methods=0);
83
84}//xac_compute
85
86
87#endif
XAC compute example scenes.
Definition: xac_compute.cpp:27
std::pair< mi::neuraylib::Tag, std::string > add_user_program(Sample_program_kind prg_kind, int user_prg, const std::string &user_text, const Program_source &prg_text, Scene_tool &scene_tool, const char *extra_pgr_methods)
#define check_success(expr)
mi::base::Handle< nv::index::IScene_group > current_group
mi::base::Handle< nv::index::IScene > scene
void set_group(mi::neuraylib::Tag group_)
mi::neuraylib::Tag add_new_group(bool transformed_group=false)
Scene_tool(mi::neuraylib::Tag session_tag_, mi::neuraylib::IDice_transaction *transaction_)
mi::base::Handle< const nv::index::ISession > session
mi::neuraylib::IDice_transaction * transaction
mi::neuraylib::Tag store_and_add_to_group(const mi::base::Handle<T> &element)
void create_attribute(mi::base::Handle<T> &element)