151 void cache_uniforms()
154 cache_uniform(program.get(), u_ssr_params,
"u_ssr_params", gfx::uniform_type::Vec4);
155 cache_uniform(program.get(), u_hiz_params,
"u_hiz_params", gfx::uniform_type::Vec4);
156 cache_uniform(program.get(), u_fade_params,
"u_fade_params", gfx::uniform_type::Vec4);
157 cache_uniform(program.get(), u_cone_params,
"u_cone_params", gfx::uniform_type::Vec4);
158 cache_uniform(program.get(), u_prev_view_proj,
"u_prev_view_proj", gfx::uniform_type::Mat4);
159 cache_uniform(program.get(), s_color,
"s_color", gfx::uniform_type::Sampler);
160 cache_uniform(program.get(), s_normal,
"s_normal", gfx::uniform_type::Sampler);
161 cache_uniform(program.get(), s_depth,
"s_depth", gfx::uniform_type::Sampler);
162 cache_uniform(program.get(), s_hiz,
"s_hiz", gfx::uniform_type::Sampler);
163 cache_uniform(program.get(), s_color_blurred,
"s_color_blurred", gfx::uniform_type::Sampler);
166 auto is_valid() const ->
bool
168 return program && program->is_valid();
170 } fidelityfx_pixel_program_;
173 struct temporal_resolve_program : uniforms_cache
185 void cache_uniforms()
187 cache_uniform(program.get(), u_temporal_params,
"u_temporal_params", gfx::uniform_type::Vec4);
188 cache_uniform(program.get(), u_motion_params,
"u_motion_params", gfx::uniform_type::Vec4);
189 cache_uniform(program.get(), u_fade_params,
"u_fade_params", gfx::uniform_type::Vec4);
190 cache_uniform(program.get(), u_prev_view_proj,
"u_prev_view_proj", gfx::uniform_type::Mat4);
191 cache_uniform(program.get(), s_ssr_curr,
"s_ssr_curr", gfx::uniform_type::Sampler);
192 cache_uniform(program.get(), s_ssr_history,
"s_ssr_history", gfx::uniform_type::Sampler);
193 cache_uniform(program.get(), s_normal,
"s_normal", gfx::uniform_type::Sampler);
194 cache_uniform(program.get(), s_depth,
"s_depth", gfx::uniform_type::Sampler);
197 auto is_valid() const ->
bool
199 return program && program->is_valid();
201 } temporal_resolve_program_;
204 struct composite_program : uniforms_cache
212 void cache_uniforms()
214 cache_uniform(program.get(), s_ssr_history,
"s_ssr_history", gfx::uniform_type::Sampler);
215 cache_uniform(program.get(), s_ssr_curr,
"s_ssr_curr", gfx::uniform_type::Sampler);
216 cache_uniform(program.get(), s_normal,
"s_normal", gfx::uniform_type::Sampler);
217 cache_uniform(program.get(), s_depth,
"s_depth", gfx::uniform_type::Sampler);
220 auto is_valid() const ->
bool
222 return program && program->is_valid();
224 } composite_program_;
227 struct blur_compute_program : uniforms_cache
233 void cache_uniforms()
235 cache_uniform(program.get(), u_blur_params,
"u_blur_params", gfx::uniform_type::Vec4);
236 cache_uniform(program.get(), s_normal,
"s_normal", gfx::uniform_type::Sampler);
239 auto is_valid() const ->
bool
241 return program && program->is_valid();
244 blur_compute_program blur_compute_program_;
auto run_composite(gfx::render_view &rview, const gfx::frame_buffer::ptr &ssr_history, const gfx::frame_buffer::ptr &ssr_curr, const gfx::frame_buffer::ptr &probe_buffer, const gfx::frame_buffer::ptr &g_buffer, const gfx::frame_buffer::ptr &output) -> gfx::frame_buffer::ptr
Executes the composite pass. Returns final blended output.
auto run_temporal_resolve(gfx::render_view &rview, const gfx::frame_buffer::ptr &ssr_curr, const gfx::frame_buffer::ptr &g_buffer, const camera *cam, const fidelityfx_ssr_settings &settings) -> gfx::frame_buffer::ptr
Executes the temporal resolve pass. Returns updated SSR history buffer.