/* SPDX-License-Identifier: GPL-2.0-or-later */

#include "gpu_shader_create_info.hh"

GPU_SHADER_CREATE_INFO(compositor_ellipse_mask_shared)
    .local_group_size(16, 16)
    .push_constant(Type::IVEC2, "domain_size")
    .push_constant(Type::VEC2, "location")
    .push_constant(Type::VEC2, "radius")
    .push_constant(Type::FLOAT, "cos_angle")
    .push_constant(Type::FLOAT, "sin_angle")
    .sampler(0, ImageType::FLOAT_2D, "base_mask_tx")
    .sampler(1, ImageType::FLOAT_2D, "mask_value_tx")
    .image(0, GPU_R16F, Qualifier::WRITE, ImageType::FLOAT_2D, "output_mask_img")
    .compute_source("compositor_ellipse_mask.glsl");

GPU_SHADER_CREATE_INFO(compositor_ellipse_mask_add)
    .additional_info("compositor_ellipse_mask_shared")
    .define("CMP_NODE_MASKTYPE_ADD")
    .do_static_compilation(true);

GPU_SHADER_CREATE_INFO(compositor_ellipse_mask_subtract)
    .additional_info("compositor_ellipse_mask_shared")
    .define("CMP_NODE_MASKTYPE_SUBTRACT")
    .do_static_compilation(true);

GPU_SHADER_CREATE_INFO(compositor_ellipse_mask_multiply)
    .additional_info("compositor_ellipse_mask_shared")
    .define("CMP_NODE_MASKTYPE_MULTIPLY")
    .do_static_compilation(true);

GPU_SHADER_CREATE_INFO(compositor_ellipse_mask_not)
    .additional_info("compositor_ellipse_mask_shared")
    .define("CMP_NODE_MASKTYPE_NOT")
    .do_static_compilation(true);
