162 const std::string&
name,
168 const std::string&
name,
176 const std::string& fbo_name,
177 const std::string& color_tex_name,
178 const std::string& moments_tex_name,
210 void cache_uniforms()
212 cache_uniform(program.get(), u_ssil_params,
"u_ssil_params", gfx::uniform_type::Vec4);
213 cache_uniform(program.get(), u_ssil_params2,
"u_ssil_params2", gfx::uniform_type::Vec4);
214 cache_uniform(program.get(), u_ssil_params3,
"u_ssil_params3", gfx::uniform_type::Vec4);
215 cache_uniform(program.get(), u_ssil_resolution,
"u_ssil_resolution", gfx::uniform_type::Vec4);
216 cache_uniform(program.get(), s_color,
"s_color", gfx::uniform_type::Sampler);
217 cache_uniform(program.get(), s_normal,
"s_normal", gfx::uniform_type::Sampler);
218 cache_uniform(program.get(), s_hiz,
"s_hiz", gfx::uniform_type::Sampler);
219 cache_uniform(program.get(), s_emissive,
"s_emissive", gfx::uniform_type::Sampler);
220 cache_uniform(program.get(), s_albedo,
"s_albedo", gfx::uniform_type::Sampler);
221 cache_uniform(program.get(), s_prev_ssil,
"s_prev_ssil", gfx::uniform_type::Sampler);
222 cache_uniform(program.get(), s_irradiance,
"s_irradiance", gfx::uniform_type::Sampler);
225 auto is_valid() const ->
bool {
return program && program->is_valid(); }
229 struct denoise_program : uniforms_cache
240 void cache_uniforms()
242 cache_uniform(program.get(), u_denoise_params,
"u_denoise_params", gfx::uniform_type::Vec4);
243 cache_uniform(program.get(), u_denoise_params2,
"u_denoise_params2", gfx::uniform_type::Vec4);
244 cache_uniform(program.get(), s_ssil_input,
"s_ssil_input", gfx::uniform_type::Sampler);
245 cache_uniform(program.get(), s_normal,
"s_normal", gfx::uniform_type::Sampler);
246 cache_uniform(program.get(), s_depth,
"s_depth", gfx::uniform_type::Sampler);
247 cache_uniform(program.get(), s_ssil_moments,
"s_ssil_moments", gfx::uniform_type::Sampler);
248 cache_uniform(program.get(), s_ssil_variance,
"s_ssil_variance", gfx::uniform_type::Sampler);
251 auto is_valid() const ->
bool {
return program && program->is_valid(); }
256 struct downsample_program : uniforms_cache
265 void cache_uniforms()
267 cache_uniform(program.get(), u_downsample_params,
"u_downsample_params", gfx::uniform_type::Vec4);
268 cache_uniform(program.get(), s_ssil_input,
"s_ssil_input", gfx::uniform_type::Sampler);
269 cache_uniform(program.get(), s_normal,
"s_normal", gfx::uniform_type::Sampler);
270 cache_uniform(program.get(), s_depth,
"s_depth", gfx::uniform_type::Sampler);
271 cache_uniform(program.get(), s_ssil_variance,
"s_ssil_variance", gfx::uniform_type::Sampler);
274 auto is_valid() const ->
bool {
return program && program->is_valid(); }
275 } downsample_program_;
278 struct temporal_program : uniforms_cache
294 void cache_uniforms()
296 cache_uniform(program.get(), u_temporal_params,
"u_temporal_params", gfx::uniform_type::Vec4);
297 cache_uniform(program.get(), u_temporal_params2,
"u_temporal_params2", gfx::uniform_type::Vec4);
298 cache_uniform(program.get(), u_temporal_resolution,
"u_temporal_resolution", gfx::uniform_type::Vec4);
299 cache_uniform(program.get(), u_prev_view_proj,
"u_prev_view_proj", gfx::uniform_type::Mat4);
300 cache_uniform(program.get(), s_ssil_curr,
"s_ssil_curr", gfx::uniform_type::Sampler);
301 cache_uniform(program.get(), s_ssil_history,
"s_ssil_history", gfx::uniform_type::Sampler);
302 cache_uniform(program.get(), s_depth,
"s_depth", gfx::uniform_type::Sampler);
303 cache_uniform(program.get(), s_prev_depth,
"s_prev_depth", gfx::uniform_type::Sampler);
304 cache_uniform(program.get(), s_ssil_moments_history,
"s_ssil_moments_history", gfx::uniform_type::Sampler);
305 cache_uniform(program.get(), s_normal,
"s_normal", gfx::uniform_type::Sampler);
308 auto is_valid() const ->
bool {
return program && program->is_valid(); }
312 struct upsample_program : uniforms_cache
320 void cache_uniforms()
322 cache_uniform(program.get(), u_upsample_params,
"u_upsample_params", gfx::uniform_type::Vec4);
323 cache_uniform(program.get(), s_ssil_input,
"s_ssil_input", gfx::uniform_type::Sampler);
324 cache_uniform(program.get(), s_normal,
"s_normal", gfx::uniform_type::Sampler);
325 cache_uniform(program.get(), s_depth,
"s_depth", gfx::uniform_type::Sampler);
328 auto is_valid() const ->
bool {
return program && program->is_valid(); }