-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathrender_task.cpp
More file actions
117 lines (116 loc) · 5.5 KB
/
render_task.cpp
File metadata and controls
117 lines (116 loc) · 5.5 KB
1
2
3
4
5
6
7
8
9
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#include "render_task.h"
// #include "render_path_tracing.h"
#include "json/json.hpp"
#include <fstream>
#include <iostream>
//
// RenderTask parseRenderTask(const std::string& taskFile)
// {
// RenderTask task;
// std::ifstream f(taskFile);
// if (!f.is_open()) {
// std::cerr << "[Task] Cannot open: " << taskFile << "\n";
// return task;
// }
// nlohmann::json j;
// try { f >> j; }
// catch (const std::exception& e) {
// std::cerr << "[Task] JSON error: " << e.what() << "\n";
// return task;
// }
//
// // basic
// if (j.contains("scene")) task.scene = j["scene"].get<std::string>();
// if (j.contains("spp")) task.spp = j["spp"].get<int>();
// if (j.contains("output")) task.output = j["output"].get<std::string>();
// if (j.contains("batch_mode")) task.batch_mode = j["batch_mode"].get<bool>();
//
// // PT params
// if (j.contains("pt")) {
// auto& p = j["pt"];
// if (p.contains("MIS")) task.pt.MIS = p["MIS"].get<bool>() ? 1 : 0;
// if (p.contains("env_pdf")) task.pt.env_pdf = p["env_pdf"].get<bool>() ? 1 : 0;
// if (p.contains("path_v1")) task.pt.path_v1 = p["path_v1"].get<int>();
// if (p.contains("path_v2")) task.pt.path_v2 = p["path_v2"].get<int>();
// if (p.contains("env_scale")) task.pt.env_scale = p["env_scale"].get<float>();
// if (p.contains("env_rot_phi")) task.pt.env_rot_phi = p["env_rot_phi"].get<float>();
// }
//
// // SHARC params
// if (j.contains("sharc")) {
// auto& s = j["sharc"];
// #define READ_BOOL(field) if (s.contains(#field)) task.sharc.field = s[#field].get<bool>() ? 1 : 0
// #define READ_INT(field) if (s.contains(#field)) task.sharc.field = s[#field].get<int>()
// #define READ_FLOAT(field) if (s.contains(#field)) task.sharc.field = s[#field].get<float>()
// READ_BOOL(enabled);
// READ_BOOL(update_enabled);
// READ_INT(capacity);
// READ_INT(bounce);
// READ_INT(max_bounces);
// READ_INT(update_res_scale);
// READ_INT(sample_threshold);
// READ_FLOAT(query_scale);
// READ_FLOAT(hit_distance_scale);
// READ_FLOAT(query_jitter);
// READ_INT(stale_frame_max);
// READ_INT(accum_frame_num);
// READ_FLOAT(radiance_scale);
// READ_BOOL(anti_firefly);
// READ_BOOL(disable_env_miss);
// READ_BOOL(clear_every_frame);
// READ_BOOL(material_demod);
// READ_FLOAT(demod_scale);
// READ_FLOAT(scene_scale);
// READ_FLOAT(log_base);
// READ_INT(level_bias);
// #undef READ_BOOL
// #undef READ_INT
// #undef READ_FLOAT
// }
//
// task.valid = true;
// std::cout << "[Task] Loaded: scene=" << task.scene
// << " spp=" << task.spp
// << " output=" << task.output
// << " sharc=" << (task.sharc.enabled == 1 ? "ON" : task.sharc.enabled == 0 ? "OFF" : "default")
// << "\n";
// return task;
// }
//
// void applyTaskToWindow(RenderWindowPT& win, const RenderTask& task)
// {
// if (!task.valid) return;
//
// // PT params: 只写成员变量,initialize() 里统一 owlParamsSet
// auto& p = task.pt;
// if (p.MIS >= 0) win.currentScene.MIS = p.MIS;
// if (p.env_pdf >= 0) win.currentScene.envPdfSampling = p.env_pdf;
// if (p.path_v1 >= 0) win.currentScene.path_v1 = p.path_v1;
// if (p.path_v2 >= 0) win.currentScene.path_v2 = p.path_v2;
// if (p.env_scale >= 0) win.currentScene.envScale = p.env_scale;
// if (p.env_rot_phi >= 0) win.currentScene.envRotPhi = p.env_rot_phi;
//
// // SHARC params: 只写成员变量,render loop 里统一上传
// auto& s = task.sharc;
// if (s.capacity > 0) win.sharcCapacity = (uint32_t)s.capacity;
// if (s.bounce >= 0) win.sharcBounce = s.bounce;
// if (s.max_bounces >= 0) win.sharcMaxBounces = s.max_bounces;
// if (s.update_res_scale >= 0) win.sharcUpdateResScale = s.update_res_scale;
// if (s.sample_threshold >= 0) win.sharcSampleThreshold = s.sample_threshold;
// if (s.query_scale >= 0) win.sharcQueryScale = s.query_scale;
// if (s.hit_distance_scale>= 0) win.sharcHitDistanceScale = s.hit_distance_scale;
// if (s.query_jitter >= 0) win.sharcQueryJitter = s.query_jitter;
// if (s.stale_frame_max >= 0) win.sharcStaleFrameMax = s.stale_frame_max;
// if (s.accum_frame_num >= 0) win.sharcAccumFrameNum = s.accum_frame_num;
// if (s.radiance_scale >= 0) win.sharcRadianceScale = s.radiance_scale;
// if (s.anti_firefly >= 0) win.sharcAntiFirefly = s.anti_firefly;
// if (s.disable_env_miss >= 0) win.sharcDisableEnvMiss = s.disable_env_miss;
// if (s.clear_every_frame >= 0) win.sharcClearEveryFrame = s.clear_every_frame;
// if (s.material_demod >= 0) win.sharcMaterialDemod = s.material_demod;
// if (s.demod_scale >= 0) win.sharcDemodScale = s.demod_scale;
// if (s.scene_scale >= 0) win.sharcSceneScale = s.scene_scale;
// if (s.log_base >= 0) win.sharcLogBase = s.log_base;
// if (s.level_bias >= 0) win.sharcLevelBias = s.level_bias;
// if (s.update_enabled >= 0) win.sharcUpdateEnabled = s.update_enabled;
// if (s.enabled >= 0) win.sharcEnabled = s.enabled;
// }