26 float luminance_coefficients[3];
32 float luminance_coefficients[3] = {1.0f, 1.0f, 1.0f};
37 float luminance_coefficients[3] = {1.0f, 0.0f, 0.0f};
42 float luminance_coefficients[3] = {1.0f, 1.0f, 0.0f};
60 float local_contrast_adaptation_factor)
62 GPUShader *shader = context.get_shader(
"compositor_smaa_edge_detection");
68 shader,
"smaa_local_contrast_adaptation_factor", local_contrast_adaptation_factor);
71 input.bind_as_texture(shader,
"input_tx");
75 edges.bind_as_image(shader,
"edges_img");
80 input.unbind_as_texture();
81 edges.unbind_as_image();
88 GPUShader *shader = context.get_shader(
"compositor_smaa_blending_weight_calculation");
94 edges.bind_as_texture(shader,
"edges_tx");
97 context.cache_manager().smaa_precomputed_textures.get();
108 edges.unbind_as_texture();
121 return "compositor_smaa_neighborhood_blending_float4";
123 return "compositor_smaa_neighborhood_blending_float2";
125 return "compositor_smaa_neighborhood_blending_float";
144 input.bind_as_texture(shader,
"input_tx");
149 output.allocate_texture(input.domain());
150 output.bind_as_image(shader,
"output_img");
155 input.unbind_as_texture();
157 output.unbind_as_image();
164 float local_contrast_adaptation_factor,
167 Result edges =
detect_edges(context, input, threshold, local_contrast_adaptation_factor);
#define BLI_assert_unreachable()
void GPU_shader_uniform_1i(GPUShader *sh, const char *name, int value)
void GPU_shader_uniform_1f(GPUShader *sh, const char *name, float value)
void GPU_shader_uniform_3fv(GPUShader *sh, const char *name, const float data[3])
void GPU_shader_bind(GPUShader *shader)
void GPU_texture_filter_mode(GPUTexture *texture, bool use_filter)
BLI_INLINE void IMB_colormanagement_get_luminance_coefficients(float r_rgb[3])
struct GPUShader GPUShader
void bind_as_image(GPUShader *shader, const char *image_name, bool read=false) const
void unbind_as_texture() const
void unbind_as_image() const
void allocate_texture(Domain domain, bool from_pool=true)
void bind_as_texture(GPUShader *shader, const char *texture_name) const
void bind_search_texture(GPUShader *shader, const char *sampler_name) const
void bind_area_texture(GPUShader *shader, const char *sampler_name) const
void unbind_search_texture() const
void unbind_area_texture() const
static Result detect_edges(Context &context, Result &input, float threshold, float local_contrast_adaptation_factor)
static Result calculate_blending_weights(Context &context, Result &edges, int corner_rounding)
void smaa(Context &context, Result &input, Result &output, float threshold=0.1f, float local_contrast_adaptation_factor=2.0f, int corner_rounding=25)
static void set_shader_luminance_coefficients(GPUShader *shader, ResultType type)
static void blend_neighborhood(Context &context, Result &input, Result &weights, Result &output)
void compute_dispatch_threads_at_least(GPUShader *shader, int2 threads_range, int2 local_size=int2(16))
static const char * get_blend_shader_name(ResultType type)