18 auto data = obj.try_cast<fidelityfx_settings>();
19 return data->enable_cone_tracing;
24 if(
auto data = obj.try_cast<fidelityfx_settings>())
26 return data->enable_temporal_accumulation;
31 entt::meta_factory<cone_tracing_settings>{}
32 .type(
"ssr_pass::fidelityfx_ssr_settings::cone_tracing_settings"_hs)
34 entt::attribute{
"name",
"ssr_pass::fidelityfx_ssr_settings::cone_tracing_settings"},
37 .data<&cone_tracing_settings::cone_angle_bias>(
"cone_angle_bias"_hs)
43 entt::attribute{
"tooltip",
"Controls cone growth rate for glossy reflections"},
45 .data<&cone_tracing_settings::max_mip_level>(
"max_mip_level"_hs)
53 .data<&cone_tracing_settings::blur_base_sigma>(
"blur_base_sigma"_hs)
59 entt::attribute{
"tooltip",
"Base blur sigma for mip generation (CPU-side only)"},
66 entt::meta_factory<temporal_settings>{}
67 .type(
"ssr_pass::fidelityfx_ssr_settings::temporal_settings"_hs)
69 entt::attribute{
"name",
"ssr_pass::fidelityfx_ssr_settings::temporal_settings"},
72 .data<&temporal_settings::history_strength>(
"history_strength"_hs)
78 entt::attribute{
"tooltip",
"Controls how long reflections keep history.\n0 = real-time only · 1 = maximum denoise"},
80 .data<&temporal_settings::depth_threshold>(
"depth_threshold"_hs)
86 entt::attribute{
"tooltip",
"Depth difference allowed before history is discarded.\nLower = crisper edges, higher = smoother but risk of bleed"},
88 .data<&temporal_settings::roughness_sensitivity>(
"roughness_sensitivity"_hs)
94 entt::attribute{
"tooltip",
"How strongly rough surfaces shorten history.\n0 = same for every material · 1 = glossy keeps more history"},
96 .data<&temporal_settings::motion_scale_pixels>(
"motion_scale_pixels"_hs)
104 .data<&temporal_settings::normal_dot_threshold>(
"normal_dot_threshold"_hs)
110 entt::attribute{
"tooltip",
"Normal dot threshold for motion detection"},
112 .data<&temporal_settings::max_accum_frames>(
"max_accum_frames"_hs)
122 entt::meta_factory<fidelityfx_settings>{}
123 .type(
"ssr_pass::fidelityfx_ssr_settings"_hs)
128 .data<&fidelityfx_settings::max_steps>(
"max_steps"_hs)
134 entt::attribute{
"tooltip",
"Maximum ray marching steps for hierarchical traversal"},
136 .data<&fidelityfx_settings::max_rays>(
"max_rays"_hs)
142 entt::attribute{
"tooltip",
"Maximum rays for rough surfaces (future: cone tracing)"},
144 .data<&fidelityfx_settings::depth_tolerance>(
"depth_tolerance"_hs)
152 .data<&fidelityfx_settings::brightness>(
"brightness"_hs)
160 .data<&fidelityfx_settings::facing_reflections_fading>(
"facing_reflections_fading"_hs)
166 entt::attribute{
"tooltip",
"Fade factor for camera-facing reflections"},
168 .data<&fidelityfx_settings::roughness_depth_tolerance>(
"roughness_depth_tolerance"_hs)
174 entt::attribute{
"tooltip",
"Additional depth tolerance for rough surfaces"},
176 .data<&fidelityfx_settings::fade_in_start>(
"fade_in_start"_hs)
184 .data<&fidelityfx_settings::fade_in_end>(
"fade_in_end"_hs)
192 .data<&fidelityfx_settings::enable_half_res>(
"enable_half_res"_hs)
198 .data<&fidelityfx_settings::enable_cone_tracing>(
"enable_cone_tracing"_hs)
202 entt::attribute{
"tooltip",
"Enable cone tracing for glossy reflections"},
204 .data<&fidelityfx_settings::cone_tracing>(
"cone_tracing"_hs)
212 .data<&fidelityfx_settings::enable_temporal_accumulation>(
"enable_temporal_accumulation"_hs)
216 entt::attribute{
"tooltip",
"Enable temporal accumulation to reduce noise over multiple frames"},
218 .data<&fidelityfx_settings::temporal>(
"temporal"_hs)
271 try_save(ar, ser20::make_nvp(
"history_strength", obj.history_strength));
272 try_save(ar, ser20::make_nvp(
"depth_threshold", obj.depth_threshold));
273 try_save(ar, ser20::make_nvp(
"roughness_sensitivity", obj.roughness_sensitivity));
274 try_save(ar, ser20::make_nvp(
"motion_scale_pixels", obj.motion_scale_pixels));
275 try_save(ar, ser20::make_nvp(
"normal_dot_threshold", obj.normal_dot_threshold));
276 try_save(ar, ser20::make_nvp(
"max_accum_frames", obj.max_accum_frames));
283 try_load(ar, ser20::make_nvp(
"history_strength", obj.history_strength));
284 try_load(ar, ser20::make_nvp(
"depth_threshold", obj.depth_threshold));
285 try_load(ar, ser20::make_nvp(
"roughness_sensitivity", obj.roughness_sensitivity));
286 try_load(ar, ser20::make_nvp(
"motion_scale_pixels", obj.motion_scale_pixels));
287 try_load(ar, ser20::make_nvp(
"normal_dot_threshold", obj.normal_dot_threshold));
288 try_load(ar, ser20::make_nvp(
"max_accum_frames", obj.max_accum_frames));