Blender V5.0
blender::compositor Namespace Reference

Classes

class  BokehKernelKey
class  BokehKernel
class  BokehKernelContainer
class  CachedImageKey
class  CachedImage
class  CachedImageContainer
class  CachedMaskKey
class  CachedMask
class  CachedMaskContainer
class  CachedResource
class  CachedResourceContainer
class  CachedShaderKey
class  CachedShader
class  CachedShaderContainer
class  DericheGaussianCoefficientsKey
class  DericheGaussianCoefficients
class  DericheGaussianCoefficientsContainer
class  DistortionGridKey
class  DistortionGrid
class  DistortionGridContainer
class  FogGlowKernelKey
class  FogGlowKernel
class  FogGlowKernelContainer
class  ImageCoordinatesKey
class  ImageCoordinates
class  ImageCoordinatesContainer
class  KeyingScreenKey
class  KeyingScreen
class  KeyingScreenContainer
class  MorphologicalDistanceFeatherWeightsKey
class  MorphologicalDistanceFeatherWeights
class  MorphologicalDistanceFeatherWeightsContainer
class  OCIOColorSpaceConversionShaderKey
class  OCIOColorSpaceConversionShader
class  OCIOColorSpaceConversionShaderContainer
class  OCIOToDisplayShaderKey
class  OCIOToDisplayShader
class  OCIOToDisplayShaderContainer
class  SMAAPrecomputedTextures
class  SMAAPrecomputedTexturesContainer
class  SymmetricBlurWeightsKey
class  SymmetricBlurWeights
class  SymmetricBlurWeightsContainer
class  SymmetricSeparableBlurWeightsKey
class  SymmetricSeparableBlurWeights
class  SymmetricSeparableBlurWeightsContainer
class  VanVlietGaussianCoefficientsKey
class  VanVlietGaussianCoefficients
class  VanVlietGaussianCoefficientsContainer
class  GPUShaderCreator
class  CompileState
class  Context
class  ConversionOperation
class  DerivedResources
struct  RealizationOptions
class  Domain
class  Evaluator
class  ImplicitInputOperation
class  InputDescriptor
class  InputSingleValueOperation
class  MultiFunctionProcedureOperation
class  NodeOperation
class  Operation
class  PixelOperation
class  Profiler
class  RealizeOnDomainOperation
class  FileOutput
class  RenderContext
class  Result
class  ShaderNode
class  ShaderOperation
class  SimpleOperation
class  StaticCacheManager
class  DenoisedAuxiliaryPassContainer

Typedefs

using ProcessorsVector = Vector<std::unique_ptr<SimpleOperation>>
using PixelCompileUnit = VectorSet<DNode>
using Schedule = VectorSet<DNode>
using NeededBuffers = Map<DNode, int>
using TargetSocketPathInfo = DOutputSocket::TargetSocketPathInfo

Enumerations

enum class  MorphologicalBlurOperation : uint8_t { Dilate , Erode }
enum class  PaddingMethod : uint8_t { Zero , Extend }
enum class  SummedAreaTableOperation : uint8_t { Identity , Square }
enum class  DistortionType : uint8_t { Distort = 0 , Undistort = 1 }
enum class  CoordinatesType : uint8_t { Uniform , Normalized , Pixel }
enum class  OutputTypes : uint8_t {
  None = 0 , Composite = 1 << 0 , Viewer = 1 << 1 , FileOutput = 1 << 2 ,
  Previews = 1 << 3
}
enum class  Interpolation : uint8_t { Nearest , Bilinear , Bicubic , Anisotropic }
enum class  ExtensionMode : uint8_t { Clip , Extend , Repeat }
enum class  InputRealizationMode : uint8_t { None , Transforms , OperationDomain }
enum class  ImplicitInput : uint8_t { None , TextureCoordinates }
enum class  ResultType : uint8_t {
  Float , Float2 , Float3 , Float4 ,
  Int , Int2 , Color , Bool ,
  Menu , String
}
enum class  ResultPrecision : uint8_t { Full , Half }
enum class  ResultStorageType : uint8_t { GPU , CPU }

Functions

void compute_preview (Context &context, const nodes::DNode &node, const Result &input_result)
void convolve (Context &context, const Result &input, const Result &kernel, Result &output, const bool normalize_kernel)
void deriche_gaussian_blur (Context &context, const Result &input, Result &output, const float2 &sigma)
void extract_alpha (Context &context, Result &input, Result &output)
void jump_flooding (Context &context, Result &input, Result &output)
int2 encode_jump_flooding_value (const int2 &closest_seed_texel, const bool is_flooded)
int2 initialize_jump_flooding_value (const int2 &texel, const bool is_seed)
void morphological_blur (Context &context, const Result &input, Result &output, const float2 &radius, const MorphologicalBlurOperation operation=MorphologicalBlurOperation::Erode, const int filter_type=R_FILTER_GAUSS)
void morphological_distance (Context &context, const Result &input, Result &output, const int distance)
void morphological_distance_feather (Context &context, const Result &input, Result &output, const int distance, const int falloff_type=PROP_SMOOTH)
void pad (Context &context, const Result &input, Result &output, const int2 size, const PaddingMethod padding_method)
float sum_red (Context &context, const Result &result)
float sum_green (Context &context, const Result &result)
float sum_blue (Context &context, const Result &result)
float sum_luminance (Context &context, const Result &result, const float3 &luminance_coefficients)
float sum_log_luminance (Context &context, const Result &result, const float3 &luminance_coefficients)
float4 sum_color (Context &context, const Result &result)
float sum_red_squared_difference (Context &context, const Result &result, const float subtrahend)
float sum_green_squared_difference (Context &context, const Result &result, const float subtrahend)
float sum_blue_squared_difference (Context &context, const Result &result, const float subtrahend)
float sum_luminance_squared_difference (Context &context, const Result &result, const float3 &luminance_coefficients, const float subtrahend)
float maximum_luminance (Context &context, const Result &result, const float3 &luminance_coefficients)
float maximum_float (Context &context, const Result &result)
float2 maximum_float2 (Context &context, const Result &result)
float maximum_float_in_range (Context &context, const Result &result, const float lower_bound, const float upper_bound)
float minimum_luminance (Context &context, const Result &result, const float3 &luminance_coefficients)
float minimum_float (Context &context, const Result &result)
float minimum_float_in_range (Context &context, const Result &result, const float lower_bound, const float upper_bound)
void recursive_gaussian_blur (Context &context, const Result &input, Result &output, const float2 &radius)
float4 sample_pixel (Context &context, const Result &input, const Interpolation &interpolation, const ExtensionMode &extension_mode_x, const ExtensionMode &extension_mode_y, const float2 coordinates)
void smaa (Context &context, const Result &input, Result &output, const float threshold=0.1f, const float local_contrast_adaptation_factor=2.0f, const int corner_rounding=25)
void summed_area_table (Context &context, Result &input, Result &output, SummedAreaTableOperation operation=SummedAreaTableOperation::Identity)
float4 summed_area_table_sum (const Result &table, const int2 &lower_bound, const int2 &upper_bound)
void symmetric_separable_blur (Context &context, const Result &input, Result &output, const float2 &radius, const int filter_type=R_FILTER_GAUSS)
void symmetric_separable_blur_variable_size (Context &context, const Result &input, const Result &radius, Result &output, const int weights_resolution=128, const int filter_type=R_FILTER_GAUSS)
void van_vliet_gaussian_blur (Context &context, const Result &input, Result &output, const float2 &sigma)
static void compute_preview_cpu (Context &context, const Result &input_result, bke::bNodePreview *preview)
static void compute_preview_gpu (Context &context, const Result &input_result, bke::bNodePreview *preview)
static int2 compute_preview_size (int2 size)
void compute_preview (Context &context, const DNode &node, const Result &input_result)
static void sum_causal_and_non_causal_results_gpu (Context &context, const Result &causal_input, const Result &non_causal_input, Result &output)
static void sum_causal_and_non_causal_results_cpu (const Result &causal_input, const Result &non_causal_input, Result &output)
static void sum_causal_and_non_causal_results (Context &context, const Result &causal_input, const Result &non_causal_input, Result &output)
static void blur_pass_gpu (Context &context, const Result &input, Result &causal_result, Result &non_causal_result, const float sigma)
static void blur_pass_cpu (Context &context, const Result &input, Result &causal_output, Result &non_causal_output, const float sigma)
static void blur_pass (Context &context, const Result &input, Result &output, const float sigma)
static void extract_alpha_gpu (Context &context, Result &input, Result &output)
static void extract_alpha_cpu (Result &input, Result &output)
static void jump_flooding_pass_gpu (Context &context, Result &input, Result &output, int step_size)
static void jump_flooding_pass_cpu (Result &input, Result &output, int step_size)
static void jump_flooding_pass (Context &context, Result &input, Result &output, int step_size)
static const char * get_shader (MorphologicalBlurOperation operation)
static void apply_morphological_operator_gpu (Context &context, const Result &input, Result &blurred_input, const MorphologicalBlurOperation operation)
static void apply_morphological_operator_cpu (const Result &input, Result &blurred_input, const MorphologicalBlurOperation operation)
static void apply_morphological_operator (Context &context, const Result &input, Result &blurred_input, const MorphologicalBlurOperation operation)
static const char * get_shader_name (const int distance)
static void morphological_distance_gpu (Context &context, const Result &input, Result &output, const int distance)
template<bool IsDilate>
static void morphological_distance_cpu (const Result &input, Result &output, const int structuring_element_radius)
template<bool IsErode>
static void morphological_distance_feather_pass (const Result &input, const MorphologicalDistanceFeatherWeights &weights, Result &output)
static const char * get_shader_name (const int distance)
static Result horizontal_pass_gpu (Context &context, const Result &input, const int distance, const int falloff_type)
static Result horizontal_pass_cpu (Context &context, const Result &input, const int distance, const int falloff_type)
static Result horizontal_pass (Context &context, const Result &input, const int distance, const int falloff_type)
static void vertical_pass_gpu (Context &context, const Result &original_input, const Result &horizontal_pass_result, Result &output, const int distance, const int falloff_type)
static void vertical_pass_cpu (Context &context, const Result &original_input, const Result &horizontal_pass_result, Result &output, const int distance, const int falloff_type)
static void vertical_pass (Context &context, const Result &original_input, const Result &horizontal_pass_result, Result &output, const int distance, const int falloff_type)
static const char * get_shader_name (const ResultType type, const PaddingMethod padding_method)
static void zero_pad_gpu (Context &context, const Result &input, Result &output, const int2 size, const PaddingMethod padding_method)
static void zero_pad_cpu (const Result &input, Result &output, const int2 size, const PaddingMethod padding_method)
static floatparallel_reduction_dispatch (blender::gpu::Texture *texture, gpu::Shader *shader, blender::gpu::TextureFormat format)
template<typename Value, typename Function, typename Reduction>
static Value parallel_reduce (const int2 range, const Value &identity, const Function &function, const Reduction &reduction)
static float sum_red_gpu (Context &context, const Result &result)
static float sum_red_cpu (const Result &result)
static float sum_green_gpu (Context &context, const Result &result)
static float sum_green_cpu (const Result &result)
static float sum_blue_gpu (Context &context, const Result &result)
static float sum_blue_cpu (const Result &result)
static float sum_luminance_gpu (Context &context, const Result &result, const float3 &luminance_coefficients)
static float sum_luminance_cpu (const Result &result, const float3 &luminance_coefficients)
static float sum_log_luminance_gpu (Context &context, const Result &result, const float3 &luminance_coefficients)
static float sum_log_luminance_cpu (const Result &result, const float3 &luminance_coefficients)
static float4 sum_color_gpu (Context &context, const Result &result)
static float4 sum_color_cpu (const Result &result)
static float sum_red_squared_difference_gpu (Context &context, const Result &result, const float subtrahend)
static float sum_red_squared_difference_cpu (const Result &result, const float subtrahend)
static float sum_green_squared_difference_gpu (Context &context, const Result &result, const float subtrahend)
static float sum_green_squared_difference_cpu (const Result &result, const float subtrahend)
static float sum_blue_squared_difference_gpu (Context &context, const Result &result, const float subtrahend)
static float sum_blue_squared_difference_cpu (const Result &result, const float subtrahend)
static float sum_luminance_squared_difference_gpu (Context &context, const Result &result, const float3 &luminance_coefficients, const float subtrahend)
static float sum_luminance_squared_difference_cpu (const Result &result, const float3 &luminance_coefficients, const float subtrahend)
static float maximum_luminance_gpu (Context &context, const Result &result, const float3 &luminance_coefficients)
static float maximum_luminance_cpu (const Result &result, const float3 &luminance_coefficients)
static float maximum_float_gpu (Context &context, const Result &result)
static float maximum_float_cpu (const Result &result)
static float2 maximum_float2_gpu (Context &context, const Result &result)
static float2 maximum_float2_cpu (const Result &result)
static float maximum_float_in_range_gpu (Context &context, const Result &result, const float lower_bound, const float upper_bound)
static float maximum_float_in_range_cpu (const Result &result, const float lower_bound, const float upper_bound)
static float minimum_luminance_gpu (Context &context, const Result &result, const float3 &luminance_coefficients)
static float minimum_luminance_cpu (const Result &result, const float3 &luminance_coefficients)
static float minimum_float_gpu (Context &context, const Result &result)
static float minimum_float_cpu (const Result &result)
static float minimum_float_in_range_gpu (Context &context, const Result &result, const float lower_bound, const float upper_bound)
static float minimum_float_in_range_cpu (const Result &result, const float lower_bound, const float upper_bound)
static float2 compute_sigma_from_radius (float2 radius)
static char const * get_pixel_sampler_shader_name (const Interpolation &interpolation)
static float4 sample_pixel_gpu (Context &context, const Result &input, const Interpolation &interpolation, const ExtensionMode &extension_mode_x, const ExtensionMode &extension_mode_y, const float2 coordinates)
static float4 sample_pixel_cpu (const Result &input, const Interpolation &interpolation, const ExtensionMode &extension_mode_x, const ExtensionMode &extension_mode_y, const float2 coordinates)
static void SMAAMovc (float2 cond, float2 &variable, float2 value)
static void SMAAMovc (float4 cond, float4 &variable, float4 value)
static void SMAAEdgeDetectionVS (float2 texcoord, int2 size, float4 offset[3])
static void SMAABlendingWeightCalculationVS (float2 texcoord, int2 size, float2 &pixcoord, float4 offset[3])
static void SMAANeighborhoodBlendingVS (float2 texcoord, int2 size, float4 &offset)
static float2 SMAALumaEdgeDetectionPS (float2 texcoord, float4 offset[3], SMAATexture2D(colorTex), float edge_threshold, float3 luminance_coefficients, float local_contrast_adaptation_factor)
static float2 SMAADecodeDiagBilinearAccess (float2 e)
static float4 SMAADecodeDiagBilinearAccess (float4 e)
static float2 SMAASearchDiag1 (SMAATexture2D(edgesTex), float2 texcoord, float2 dir, int2 size, float2 &e)
static float2 SMAASearchDiag2 (SMAATexture2D(edgesTex), float2 texcoord, float2 dir, int2 size, float2 &e)
static float2 SMAAAreaDiag (SMAATexture2D(areaTex), float2 dist, float2 e, float offset)
static float2 SMAACalculateDiagWeights (SMAATexture2D(edgesTex), SMAATexture2D(areaTex), float2 texcoord, float2 e, float4 subsampleIndices, int2 size)
static float SMAASearchLength (SMAATexture2D(searchTex), float2 e, float offset)
static float SMAASearchXLeft (SMAATexture2D(edgesTex), SMAATexture2D(searchTex), float2 texcoord, float end, int2 size)
static float SMAASearchXRight (SMAATexture2D(edgesTex), SMAATexture2D(searchTex), float2 texcoord, float end, int2 size)
static float SMAASearchYUp (SMAATexture2D(edgesTex), SMAATexture2D(searchTex), float2 texcoord, float end, int2 size)
static float SMAASearchYDown (SMAATexture2D(edgesTex), SMAATexture2D(searchTex), float2 texcoord, float end, int2 size)
static float2 SMAAArea (SMAATexture2D(areaTex), float2 dist, float e1, float e2, float offset)
static void SMAADetectHorizontalCornerPattern (SMAATexture2D(edgesTex), float2 &weights, float4 texcoord, float2 d, int2 size, int corner_rounding)
static void SMAADetectVerticalCornerPattern (SMAATexture2D(edgesTex), float2 &weights, float4 texcoord, float2 d, int2 size, int corner_rounding)
static float4 SMAABlendingWeightCalculationPS (float2 texcoord, float2 pixcoord, float4 offset[3], SMAATexture2D(edgesTex), SMAATexture2D(areaTex), SMAATexture2D(searchTex), float4 subsampleIndices, int2 size, int corner_rounding)
static float4 SMAANeighborhoodBlendingPS (float2 texcoord, float4 offset, SMAATexture2D(colorTex), SMAATexture2D(blendTex), int2 size)
static float3 get_luminance_coefficients (ResultType type)
static Result detect_edges_gpu (Context &context, const Result &input, const float threshold, const float local_contrast_adaptation_factor)
static Result detect_edges_cpu (Context &context, const Result &input, const float threshold, const float local_contrast_adaptation_factor)
static Result detect_edges (Context &context, const Result &input, const float threshold, const float local_contrast_adaptation_factor)
static Result calculate_blending_weights_gpu (Context &context, const Result &edges, const int corner_rounding)
static Result calculate_blending_weights_cpu (Context &context, const Result &edges, const int corner_rounding)
static Result calculate_blending_weights (Context &context, const Result &edges, const int corner_rounding)
static const char * get_blend_shader_name (ResultType type)
static void blend_neighborhood_gpu (Context &context, const Result &input, const Result &weights, Result &output)
static void blend_neighborhood_cpu (const Result &input, const Result &weights, Result &output)
static void blend_neighborhood (Context &context, const Result &input, const Result &weights, Result &output)
static const char * get_compute_incomplete_prologues_shader (SummedAreaTableOperation operation)
static void compute_incomplete_prologues (Context &context, Result &input, SummedAreaTableOperation operation, Result &incomplete_x_prologues, Result &incomplete_y_prologues)
static void compute_complete_x_prologues (Context &context, Result &input, Result &incomplete_x_prologues, Result &complete_x_prologues, Result &complete_x_prologues_sum)
static void compute_complete_y_prologues (Context &context, Result &input, Result &incomplete_y_prologues, Result &complete_x_prologues_sum, Result &complete_y_prologues)
static const char * get_compute_complete_blocks_shader (SummedAreaTableOperation operation)
static void compute_complete_blocks (Context &context, Result &input, Result &complete_x_prologues, Result &complete_y_prologues, SummedAreaTableOperation operation, Result &output)
static void summed_area_table_gpu (Context &context, Result &input, Result &output, SummedAreaTableOperation operation)
static void summed_area_table_cpu (Result &input, Result &output, SummedAreaTableOperation operation)
template<typename T>
static void blur_pass (const Result &input, const Result &weights, Result &output)
static const char * get_blur_shader (const ResultType type)
static Result horizontal_pass_gpu (Context &context, const Result &input, const float radius, const int filter_type)
static Result horizontal_pass_cpu (Context &context, const Result &input, const float radius, const int filter_type)
static Result horizontal_pass (Context &context, const Result &input, const float radius, const int filter_type)
static void vertical_pass_gpu (Context &context, const Result &original_input, const Result &horizontal_pass_result, Result &output, const float2 &radius, const int filter_type)
static void vertical_pass_cpu (Context &context, const Result &original_input, const Result &horizontal_pass_result, Result &output, const float2 &radius, const int filter_type)
static void vertical_pass (Context &context, const Result &original_input, const Result &horizontal_pass_result, Result &output, const float2 &radius, const int filter_type)
static void blur_pass (const Result &input, const Result &radius_input, const Result &weights, Result &output, const bool is_vertical_pass)
static Result horizontal_pass_gpu (Context &context, const Result &input, const Result &radius, const int weights_resolution, const int filter_type)
static Result horizontal_pass_cpu (Context &context, const Result &input, const Result &radius, const int weights_resolution, const int filter_type)
static Result horizontal_pass (Context &context, const Result &input, const Result &radius, const int weights_resolution, const int filter_type)
static void vertical_pass_gpu (Context &context, const Result &original_input, const Result &horizontal_pass_result, const Result &radius, Result &output, const int weights_resolution, const int filter_type)
static void vertical_pass_cpu (Context &context, const Result &original_input, const Result &horizontal_pass_result, const Result &radius, Result &output, const int weights_resolution, const int filter_type)
static void vertical_pass (Context &context, const Result &original_input, const Result &horizontal_pass_result, const Result &radius, Result &output, const int weights_resolution, const int filter_type)
static void sum_causal_and_non_causal_results_gpu (Context &context, const Result &first_causal_input, const Result &first_non_causal_input, const Result &second_causal_input, const Result &second_non_causal_input, Result &output)
static void sum_causal_and_non_causal_results_cpu (const Result &first_causal_input, const Result &first_non_causal_input, const Result &second_causal_input, const Result &second_non_causal_input, Result &output)
static void sum_causal_and_non_causal_results (Context &context, const Result &first_causal_input, const Result &first_non_causal_input, const Result &second_causal_input, const Result &second_non_causal_input, Result &output)
static void blur_pass_gpu (Context &context, const Result &input, Result &first_causal_result, Result &first_non_causal_result, Result &second_causal_result, Result &second_non_causal_result, const float sigma)
static void blur_pass_cpu (Context &context, const Result &input, Result &first_causal_output, Result &first_non_causal_output, Result &second_causal_output, Result &second_non_causal_output, const float sigma)
static void blur_pass (Context &context, const Result &input, Result &output, const float sigma)
bool operator== (const BokehKernelKey &a, const BokehKernelKey &b)
bool operator== (const CachedImageKey &a, const CachedImageKey &b)
bool operator== (const CachedMaskKey &a, const CachedMaskKey &b)
bool operator== (const CachedShaderKey &a, const CachedShaderKey &b)
bool operator== (const DericheGaussianCoefficientsKey &a, const DericheGaussianCoefficientsKey &b)
bool operator== (const DistortionGridKey &a, const DistortionGridKey &b)
bool operator== (const FogGlowKernelKey &a, const FogGlowKernelKey &b)
bool operator== (const ImageCoordinatesKey &a, const ImageCoordinatesKey &b)
bool operator== (const KeyingScreenKey &a, const KeyingScreenKey &b)
bool operator== (const MorphologicalDistanceFeatherWeightsKey &a, const MorphologicalDistanceFeatherWeightsKey &b)
bool operator== (const OCIOColorSpaceConversionShaderKey &a, const OCIOColorSpaceConversionShaderKey &b)
bool operator== (const OCIOToDisplayShaderKey &a, const OCIOToDisplayShaderKey &b)
bool operator== (const SymmetricBlurWeightsKey &a, const SymmetricBlurWeightsKey &b)
bool operator== (const VanVlietGaussianCoefficientsKey &a, const VanVlietGaussianCoefficientsKey &b)
static float compute_exterior_angle (int sides)
static float compute_rotation (float angle, int sides)
static float2 get_regular_polygon_vertex_position (const int vertex_index, const float exterior_angle, const float rotation)
static float2 closest_point_on_line (const float2 point, const float2 line_start, const float2 line_end)
static float bokeh (const float2 point, const float circumradius, const float exterior_angle, const float rotation, const float roundness, const float catadioptric)
static float4 spectral_bokeh (const int2 texel, const int2 size, const float exterior_angle, const float rotation, const float roundness, const float catadioptric, const float lens_shift)
static RenderLayerget_render_layer (const RenderResult *render_result, const ImageUser &image_user)
static int get_pass_index (const RenderResult *render_result, const ImageUser &image_user, const char *name)
static RenderPassget_render_pass (const RenderLayer *render_layer, const ImageUser &image_user)
static int get_view_index (const Context &context, const RenderResult *render_result, const ImageUser &image_user)
static ImageUser compute_image_user_for_pass (const Context &context, const Image *image, const RenderResult *render_result, const ImageUser *image_user, const char *pass_name)
static ImBufcompute_linear_buffer (ImBuf *image_buffer)
static ResultType get_result_type (const RenderResult *render_result, const ImageUser &image_user, const ImBuf *image_buffer)
static Vector< MaskRasterHandle * > get_mask_raster_handles (Mask *mask, int2 size, int current_frame, bool use_feather, int motion_blur_samples, float motion_blur_shutter)
static double compute_numerator_0 ()
static double compute_numerator_1 (float sigma)
static double compute_numerator_2 (float sigma)
static double compute_numerator_3 (float sigma)
static double4 compute_numerator (float sigma)
static double compute_denominator_1 (float sigma)
static double compute_denominator_2 (float sigma)
static double compute_denominator_3 (float sigma)
static double compute_denominator_4 (float sigma)
static double4 compute_denominator (float sigma)
static float compute_normalization_scale (const double4 &causal_feedforward_coefficients, const double4 &feedback_coefficients)
static double4 compute_non_causal_feedforward_coefficients (const double4 &causal_feedforward_coefficients, const double4 &feedback_coefficients)
static double compute_boundary_coefficient (const double4 &feedforward_coefficients, const double4 &feedback_coefficients)
static int2 get_movie_clip_size (MovieClip *movie_clip, int frame_number)
static float compute_fog_glow_kernel_value (int2 texel, math::AngleRadian field_of_view_per_pixel)
static const char * get_shader_name (const CoordinatesType type)
static void compute_marker_points (MovieClip *movie_clip, MovieClipUser &movie_clip_user, MovieTrackingObject *movie_tracking_object, Vector< float2 > &marker_positions, Vector< float4 > &marker_colors)
static MovieClipUser get_movie_clip_user (Context &context, MovieClip *movie_clip)
static float compute_distance_falloff (int type, float x)
static double compute_scaled_poles_variance (const std::array< std::complex< double >, 4 > &poles, double scale_factor)
static double compute_scaled_poles_variance_derivative (const std::array< std::complex< double >, 4 > &poles, double scale_factor)
static double find_scale_factor (const std::array< std::complex< double >, 4 > &poles, double reference_sigma)
static std::array< std::complex< double >, 4 > computed_scaled_poles (const std::array< std::complex< double >, 4 > &poles, float sigma)
static std::array< std::complex< double >, 4 > compute_causal_poles (const std::array< std::complex< double >, 4 > &non_causal_poles)
static double4 compute_feedback_coefficients (const std::array< std::complex< double >, 4 > &poles)
static double compute_feedforward_coefficient (const double4 &feedback_coefficients)
static std::complex< double > compute_partial_fraction_residue (const std::array< std::complex< double >, 4 > &poles, const std::complex< double > &target_pole, double gain)
static std::complex< double > compute_causal_transfer_function_at_non_causal_pole (const std::array< std::complex< double >, 4 > &poles, const std::complex< double > &target_pole, double gain)
static void compute_second_order_section (const std::complex< double > &pole, const std::complex< double > &residue, const std::complex< double > &transfer_value, double2 &r_feedback_coefficients, double2 &r_causal_feedforward_coefficients, double2 &r_non_causal_feedforward_coefficients)
static double compute_boundary_coefficient (const double2 &feedback_coefficients, const double2 &feedforward_coefficients)
bool operator== (const Domain &a, const Domain &b)
bool operator!= (const Domain &a, const Domain &b)
math::InterpWrapMode map_extension_mode_to_wrap_mode (const ExtensionMode &mode)
GPUSamplerExtendMode map_extension_mode_to_extend_mode (const ExtensionMode &mode)
static void sample_ewa_extended_read_callback (void *userdata, int x, int y, float result[4])
static void sample_ewa_zero_read_callback (void *userdata, int x, int y, float result[4])
Schedule compute_schedule (const Context &context, const DerivedNodeTree &tree)
bool is_socket_available (const bNodeSocket *socket)
DSocket get_input_origin_socket (DInputSocket input)
DOutputSocket get_output_linked_to_input (DInputSocket input)
ResultType socket_data_type_to_result_type (const eNodeSocketDatatype data_type, const std::optional< int > dimensions=std::nullopt)
ResultType get_node_socket_result_type (const bNodeSocket *socket)
bool is_output_linked_to_node_conditioned (DOutputSocket output, FunctionRef< bool(DNode)> condition)
int number_of_inputs_linked_to_output_conditioned (DOutputSocket output, FunctionRef< bool(DInputSocket)> condition)
bool is_pixel_node (DNode node)
InputDescriptor input_descriptor_from_input_socket (const bNodeSocket *socket)
void compute_dispatch_threads_at_least (gpu::Shader *shader, int2 threads_range, int2 local_size=int2(16))
bool is_node_preview_needed (const DNode &node)
DOutputSocket find_preview_output_socket (const DNode &node)
template<typename Function>
void parallel_for (const int2 range, const Function &function)
static bool is_conversion_supported (const ResultType from_type, const ResultType to_type)
static GSpan get_result_single_value (const Result &result)
static GMutableSpan get_result_single_value (Result &result)
static GSpan get_result_data (const Result &result)
static GMutableSpan get_result_data (Result &result)
static PixelOperationcreate_pixel_operation (Context &context, CompileState &compile_state)
static ResultType get_implicit_input_result_type (const ImplicitInput implicit_input)
static bool is_compatible_texture (const blender::gpu::Texture *texture, const Result &result)
static bool is_tree_context_muted (const DTreeContext &tree_context)
static DNode find_viewer_node_in_context (const DTreeContext &tree_context)
static void add_file_output_nodes (const DTreeContext &tree_context, Stack< DNode > &node_stack)
static void add_output_nodes (const Context &context, const DerivedNodeTree &tree, Stack< DNode > &node_stack)
static NeededBuffers compute_number_of_needed_buffers (Stack< DNode > &output_nodes)
static GPUType gpu_type_from_socket (DSocket socket)
static void populate_gpu_node_stack (DSocket socket, GPUNodeStack &stack)
static void initialize_input_stack_value (const DInputSocket input, GPUNodeStack &stack)
static const char * get_set_function_name (const ResultType type)
static const char * get_store_function_name (ResultType type)
static const char * glsl_store_expression_from_result_type (ResultType type)
static ImageType gpu_image_type_from_result_type (const ResultType type)
static const char * glsl_type_from_result_type (ResultType type)
static const char * glsl_swizzle_from_result_type (ResultType type)
static ImplicitInput get_implicit_input (const nodes::SocketDeclaration *socket_declaration)
static int get_domain_priority (const bNodeSocket *input, const nodes::SocketDeclaration *socket_declaration)
int compute_number_of_diagonals (const int2 &size)
int compute_diagonal_length (const int2 &size, const int diagonal_index)
int2 compute_diagonal_start (const int2 &size, const int index)
int2 get_diagonal_direction ()
int compute_anti_diagonal_length (const int2 &size, const int diagonal_index)
int2 compute_anti_diagonal_start (const int2 &size, const int index)
int2 get_anti_diagonal_direction ()
GPUNodeStackget_shader_node_input (const bNode &node, GPUNodeStack inputs[], StringRef identifier)
GPUNodeStackget_shader_node_output (const bNode &node, GPUNodeStack outputs[], StringRef identifier)
GPUNodeLinkget_shader_node_input_link (const bNode &node, GPUNodeStack inputs[], StringRef identifier)
Symmetric Separable Blur Weights Key
bool operator== (const SymmetricSeparableBlurWeightsKey &a, const SymmetricSeparableBlurWeightsKey &b)

Variables

static constexpr double a0 = 1.6797292232361107
static constexpr double a1 = 3.7348298269103580
static constexpr double b0 = 1.7831906544515104
static constexpr double b1 = 1.7228297663338028
static constexpr double c0 = -0.6802783501806897
static constexpr double c1 = -0.2598300478959625
static constexpr double w0 = 0.6318113174569493
static constexpr double w1 = 1.9969276832487770
static CLG_LogRef LOG = {"compositor.gpu"}
static constexpr float transformation_tolerance = 10e-6f

Typedef Documentation

◆ NeededBuffers

Definition at line 130 of file scheduler.cc.

◆ PixelCompileUnit

◆ ProcessorsVector

Definition at line 25 of file COM_operation.hh.

◆ Schedule

Definition at line 18 of file COM_scheduler.hh.

◆ TargetSocketPathInfo

Enumeration Type Documentation

◆ CoordinatesType

enum class blender::compositor::CoordinatesType : uint8_t
strong
Enumerator
Uniform 
Normalized 
Pixel 

Definition at line 20 of file COM_image_coordinates.hh.

◆ DistortionType

enum class blender::compositor::DistortionType : uint8_t
strong
Enumerator
Distort 
Undistort 

Definition at line 22 of file COM_distortion_grid.hh.

◆ ExtensionMode

enum class blender::compositor::ExtensionMode : uint8_t
strong
Enumerator
Clip 
Extend 
Repeat 

Definition at line 27 of file COM_domain.hh.

◆ ImplicitInput

enum class blender::compositor::ImplicitInput : uint8_t
strong
Enumerator
None 
TextureCoordinates 

Definition at line 33 of file COM_input_descriptor.hh.

◆ InputRealizationMode

enum class blender::compositor::InputRealizationMode : uint8_t
strong
Enumerator
None 
Transforms 
OperationDomain 

Definition at line 18 of file COM_input_descriptor.hh.

◆ Interpolation

enum class blender::compositor::Interpolation : uint8_t
strong
Enumerator
Nearest 
Bilinear 
Bicubic 
Anisotropic 

Definition at line 19 of file COM_domain.hh.

◆ MorphologicalBlurOperation

Enumerator
Dilate 
Erode 

Definition at line 19 of file COM_algorithm_morphological_blur.hh.

◆ OutputTypes

enum class blender::compositor::OutputTypes : uint8_t
strong
Enumerator
None 
Composite 
Viewer 
FileOutput 
Previews 

Definition at line 27 of file COM_context.hh.

◆ PaddingMethod

enum class blender::compositor::PaddingMethod : uint8_t
strong
Enumerator
Zero 
Extend 

Definition at line 15 of file COM_algorithm_pad.hh.

◆ ResultPrecision

enum class blender::compositor::ResultPrecision : uint8_t
strong
Enumerator
Full 
Half 

Definition at line 53 of file COM_result.hh.

◆ ResultStorageType

enum class blender::compositor::ResultStorageType : uint8_t
strong
Enumerator
GPU 
CPU 

Definition at line 59 of file COM_result.hh.

◆ ResultType

enum class blender::compositor::ResultType : uint8_t
strong
Enumerator
Float 
Float2 
Float3 
Float4 
Int 
Int2 
Color 
Bool 
Menu 
String 

Definition at line 37 of file COM_result.hh.

◆ SummedAreaTableOperation

enum class blender::compositor::SummedAreaTableOperation : uint8_t
strong
Enumerator
Identity 
Square 

Definition at line 17 of file COM_algorithm_summed_area_table.hh.

Function Documentation

◆ add_file_output_nodes()

void blender::compositor::add_file_output_nodes ( const DTreeContext & tree_context,
Stack< DNode > & node_stack )
static

◆ add_output_nodes()

◆ apply_morphological_operator()

void blender::compositor::apply_morphological_operator ( Context & context,
const Result & input,
Result & blurred_input,
const MorphologicalBlurOperation operation )
static

◆ apply_morphological_operator_cpu()

void blender::compositor::apply_morphological_operator_cpu ( const Result & input,
Result & blurred_input,
const MorphologicalBlurOperation operation )
static

◆ apply_morphological_operator_gpu()

void blender::compositor::apply_morphological_operator_gpu ( Context & context,
const Result & input,
Result & blurred_input,
const MorphologicalBlurOperation operation )
static

◆ blend_neighborhood()

void blender::compositor::blend_neighborhood ( Context & context,
const Result & input,
const Result & weights,
Result & output )
static

Definition at line 1633 of file smaa.cc.

References blend_neighborhood_cpu(), blend_neighborhood_gpu(), input, and output.

Referenced by smaa().

◆ blend_neighborhood_cpu()

void blender::compositor::blend_neighborhood_cpu ( const Result & input,
const Result & weights,
Result & output )
static

◆ blend_neighborhood_gpu()

void blender::compositor::blend_neighborhood_gpu ( Context & context,
const Result & input,
const Result & weights,
Result & output )
static

◆ blur_pass() [1/4]

void blender::compositor::blur_pass ( const Result & input,
const Result & radius_input,
const Result & weights,
Result & output,
const bool is_vertical_pass )
static

◆ blur_pass() [2/4]

template<typename T>
void blender::compositor::blur_pass ( const Result & input,
const Result & weights,
Result & output )
static

◆ blur_pass() [3/4]

◆ blur_pass() [4/4]

void blender::compositor::blur_pass ( Context & context,
const Result & input,
Result & output,
const float sigma )
static

◆ blur_pass_cpu() [1/2]

◆ blur_pass_cpu() [2/2]

◆ blur_pass_gpu() [1/2]

◆ blur_pass_gpu() [2/2]

void blender::compositor::blur_pass_gpu ( Context & context,
const Result & input,
Result & first_causal_result,
Result & first_non_causal_result,
Result & second_causal_result,
Result & second_non_causal_result,
const float sigma )
static

◆ bokeh()

◆ calculate_blending_weights()

Result blender::compositor::calculate_blending_weights ( Context & context,
const Result & edges,
const int corner_rounding )
static

Definition at line 1566 of file smaa.cc.

References calculate_blending_weights_cpu(), and calculate_blending_weights_gpu().

Referenced by smaa().

◆ calculate_blending_weights_cpu()

◆ calculate_blending_weights_gpu()

◆ closest_point_on_line()

float2 blender::compositor::closest_point_on_line ( const float2 point,
const float2 line_start,
const float2 line_end )
static

Definition at line 133 of file bokeh_kernel.cc.

References blender::math::dot().

Referenced by bokeh().

◆ compute_anti_diagonal_length()

int blender::compositor::compute_anti_diagonal_length ( const int2 & size,
const int diagonal_index )
inline

◆ compute_anti_diagonal_start()

int2 blender::compositor::compute_anti_diagonal_start ( const int2 & size,
const int index )
inline

◆ compute_boundary_coefficient() [1/2]

double blender::compositor::compute_boundary_coefficient ( const double2 & feedback_coefficients,
const double2 & feedforward_coefficients )
static

The IIR filter difference equation relies on previous outputs to compute new outputs, those previous outputs are not really defined at the start of the filter. To do Neumann boundary condition, we initialize the previous output with a special value that is a function of the boundary value. This special value is computed by multiply the boundary value with a coefficient to simulate an infinite stream of the boundary value.

The function for the coefficient can be derived by substituting the boundary value for previous inputs, equating all current and previous outputs to the same value, and finally rearranging to compute that same output value.

Start by the difference equation where b_i are the feedforward coefficients and a_i are the feedback coefficients:

y[n] = \sum_{i = 0}^3 b_i x[n - i] - \sum_{i = 0}^3 a_i y[n - i]

Assume all outputs are y and all inputs are x, which is the boundary value:

y = \sum_{i = 0}^3 b_i x - \sum_{i = 0}^3 a_i y

Now rearrange to compute y:

y = x \sum_{i = 0}^3 b_i - y \sum_{i = 0}^3 a_i
y + y \sum_{i = 0}^3 a_i = x \sum_{i = 0}^3 b_i
y (1 + \sum_{i = 0}^3 a_i) = x \sum_{i = 0}^3 b_i
y = x \cdot \frac{\sum_{i = 0}^3 b_i}{1 + \sum_{i = 0}^3 a_i}

So our coefficient is the value that is multiplied by the boundary value x. Had x been zero, that is, we are doing Dirichlet boundary condition, the equations still hold.

Definition at line 394 of file van_vliet_gaussian_coefficients.cc.

References blender::math::reduce_add().

◆ compute_boundary_coefficient() [2/2]

double blender::compositor::compute_boundary_coefficient ( const double4 & feedforward_coefficients,
const double4 & feedback_coefficients )
static

The IIR filter difference equation relies on previous outputs to compute new outputs, those previous outputs are not really defined at the start of the filter. To do Neumann boundary condition, we initialize the previous output with a special value that is a function of the boundary value. This special value is computed by multiply the boundary value with a coefficient to simulate an infinite stream of the boundary value.

The function for the coefficient can be derived by substituting the boundary value for previous inputs, equating all current and previous outputs to the same value, and finally rearranging to compute that same output value.

Start by the difference equation where b_i are the feedforward coefficients and a_i are the feedback coefficients:

y[n] = \sum_{i = 0}^3 b_i x[n - i] - \sum_{i = 0}^3 a_i y[n - i]

Assume all outputs are y and all inputs are x, which is the boundary value:

y = \sum_{i = 0}^3 b_i x - \sum_{i = 0}^3 a_i y

Now rearrange to compute y:

y = x \sum_{i = 0}^3 b_i - y \sum_{i = 0}^3 a_i
y + y \sum_{i = 0}^3 a_i = x \sum_{i = 0}^3 b_i
y (1 + \sum_{i = 0}^3 a_i) = x \sum_{i = 0}^3 b_i
y = x \cdot \frac{\sum_{i = 0}^3 b_i}{1 + \sum_{i = 0}^3 a_i}

So our coefficient is the value that is multiplied by the boundary value x. Had x been zero, that is, we are doing Dirichlet boundary condition, the equations still hold.

Definition at line 240 of file deriche_gaussian_coefficients.cc.

References blender::math::reduce_add().

Referenced by blender::compositor::DericheGaussianCoefficients::DericheGaussianCoefficients(), and blender::compositor::VanVlietGaussianCoefficients::VanVlietGaussianCoefficients().

◆ compute_causal_poles()

std::array< std::complex< double >, 4 > blender::compositor::compute_causal_poles ( const std::array< std::complex< double >, 4 > & non_causal_poles)
static

◆ compute_causal_transfer_function_at_non_causal_pole()

std::complex< double > blender::compositor::compute_causal_transfer_function_at_non_causal_pole ( const std::array< std::complex< double >, 4 > & poles,
const std::complex< double > & target_pole,
double gain )
static

◆ compute_complete_blocks()

void blender::compositor::compute_complete_blocks ( Context & context,
Result & input,
Result & complete_x_prologues,
Result & complete_y_prologues,
SummedAreaTableOperation operation,
Result & output )
static

◆ compute_complete_x_prologues()

◆ compute_complete_y_prologues()

◆ compute_denominator()

◆ compute_denominator_1()

double blender::compositor::compute_denominator_1 ( float sigma)
static

Definition at line 125 of file deriche_gaussian_coefficients.cc.

References b0, b1, blender::math::cos(), blender::math::exp(), w0, and w1.

Referenced by compute_denominator().

◆ compute_denominator_2()

double blender::compositor::compute_denominator_2 ( float sigma)
static

Definition at line 134 of file deriche_gaussian_coefficients.cc.

References b0, b1, blender::math::cos(), blender::math::exp(), w0, and w1.

Referenced by compute_denominator().

◆ compute_denominator_3()

double blender::compositor::compute_denominator_3 ( float sigma)
static

Definition at line 146 of file deriche_gaussian_coefficients.cc.

References b0, b1, blender::math::cos(), blender::math::exp(), w0, and w1.

Referenced by compute_denominator().

◆ compute_denominator_4()

double blender::compositor::compute_denominator_4 ( float sigma)
static

Definition at line 158 of file deriche_gaussian_coefficients.cc.

References b0, b1, and blender::math::exp().

Referenced by compute_denominator().

◆ compute_diagonal_length()

int blender::compositor::compute_diagonal_length ( const int2 & size,
const int diagonal_index )
inline

◆ compute_diagonal_start()

int2 blender::compositor::compute_diagonal_start ( const int2 & size,
const int index )
inline

◆ compute_dispatch_threads_at_least()

void blender::compositor::compute_dispatch_threads_at_least ( gpu::Shader * shader,
int2 threads_range,
int2 local_size = int2(16) )

Dispatch the given compute shader in a 2D compute space such that the number of threads in both dimensions is as small as possible but at least covers the entirety of threads_range assuming the shader has a local group size given by local_size. That means that the number of threads might be a bit larger than threads_range, so shaders has to put that into consideration. A default local size of 16x16 is assumed, which is the optimal local size for many image processing shaders.

Definition at line 196 of file utilities.cc.

References blender::math::divide_ceil(), and GPU_compute_dispatch().

Referenced by blender::nodes::node_composite_glare_cc::GlareOperation::accumulate_ghosts_gpu(), blender::nodes::node_composite_glare_cc::GlareOperation::accumulate_streak_gpu(), apply_morphological_operator_gpu(), blender::nodes::node_composite_glare_cc::GlareOperation::apply_streak_filter_gpu(), blend_neighborhood_gpu(), blur_pass_gpu(), blur_pass_gpu(), calculate_blending_weights_gpu(), blender::nodes::node_composite_glare_cc::GlareOperation::compute_base_ghost_gpu(), blender::nodes::node_composite_glare_cc::GlareOperation::compute_bloom_downsample_gpu(), blender::nodes::node_composite_glare_cc::GlareOperation::compute_bloom_upsample_gpu(), blender::nodes::node_composite_double_edge_mask_cc::DoubleEdgeMaskOperation::compute_boundary_gpu(), blender::nodes::node_composite_defocus_cc::DefocusOperation::compute_defocus_radius_from_depth_gpu(), blender::nodes::node_composite_defocus_cc::DefocusOperation::compute_defocus_radius_from_scale_gpu(), blender::nodes::node_composite_double_edge_mask_cc::DoubleEdgeMaskOperation::compute_gradient_gpu(), blender::nodes::node_composite_base_cryptomatte_cc::BaseCryptoMatteOperation::compute_image_gpu(), blender::nodes::node_composite_keying_cc::KeyingOperation::compute_image_gpu(), blender::nodes::node_composite_inpaint_cc::InpaintOperation::compute_inpainting_boundary_gpu(), blender::nodes::node_composite_inpaint_cc::InpaintOperation::compute_inpainting_region_gpu(), blender::nodes::node_composite_zcombine_cc::ZCombineOperation::compute_mask_gpu(), blender::nodes::node_composite_base_cryptomatte_cc::BaseCryptoMatteOperation::compute_matte_gpu(), blender::nodes::node_composite_keying_cc::KeyingOperation::compute_matte_gpu(), blender::nodes::node_composite_vec_blur_cc::VectorBlurOperation::compute_motion_blur(), blender::nodes::node_composite_base_cryptomatte_cc::BaseCryptoMatteOperation::compute_pick_gpu(), blender::nodes::node_composite_cornerpin_cc::CornerPinOperation::compute_plane_gpu(), blender::nodes::node_composite_planetrackdeform_cc::PlaneTrackDeformOperation::compute_plane_gpu(), blender::nodes::node_composite_cornerpin_cc::CornerPinOperation::compute_plane_mask_gpu(), blender::nodes::node_composite_planetrackdeform_cc::PlaneTrackDeformOperation::compute_plane_mask_gpu(), compute_preview_gpu(), blender::nodes::node_composite_kuwahara_cc::ConvertKuwaharaOperation::compute_structure_tensor_gpu(), blender::nodes::node_composite_keying_cc::KeyingOperation::compute_tweaked_matte_gpu(), detect_edges_gpu(), blender::nodes::node_composite_vec_blur_cc::VectorBlurOperation::dilate_max_velocity(), blender::compositor::ConversionOperation::execute(), blender::compositor::ShaderOperation::execute(), blender::nodes::node_composite_crop_cc::CropOperation::execute_alpha_crop_gpu(), blender::nodes::node_composite_kuwahara_cc::ConvertKuwaharaOperation::execute_anisotropic_gpu(), blender::nodes::node_composite_zcombine_cc::ZCombineOperation::execute_anti_aliased_depth_gpu(), blender::nodes::node_composite_zcombine_cc::ZCombineOperation::execute_anti_aliased_image_gpu(), blender::nodes::node_composite_kuwahara_cc::ConvertKuwaharaOperation::execute_classic_convolution_gpu(), blender::nodes::node_composite_kuwahara_cc::ConvertKuwaharaOperation::execute_classic_summed_area_table_gpu(), blender::nodes::node_composite_blur_cc::BlurOperation::execute_constant_size_gpu(), blender::nodes::node_composite_bokehblur_cc::BokehBlurOperation::execute_constant_size_gpu(), blender::nodes::node_composite_group_output_cc::GroupOutputOperation::execute_copy_gpu(), blender::nodes::node_composite_viewer_cc::ViewerOperation::execute_copy_gpu(), blender::nodes::node_composite_dilate_cc::DilateErodeOperation::execute_distance_threshold_gpu(), blender::nodes::node_composite_bilateralblur_cc::BilateralBlurOperation::execute_gpu(), blender::nodes::node_composite_boxmask_cc::BoxMaskOperation::execute_gpu(), blender::nodes::node_composite_convert_color_space_cc::ConvertColorSpaceOperation::execute_gpu(), blender::nodes::node_composite_convert_to_display_cc::ConvertToDisplayOperation::execute_gpu(), blender::nodes::node_composite_defocus_cc::DefocusOperation::execute_gpu(), blender::nodes::node_composite_despeckle_cc::DespeckleOperation::execute_gpu(), blender::nodes::node_composite_directionalblur_cc::DirectionalBlurOperation::execute_gpu(), blender::nodes::node_composite_displace_cc::DisplaceOperation::execute_gpu(), blender::nodes::node_composite_ellipsemask_cc::EllipseMaskOperation::execute_gpu(), blender::nodes::node_composite_filter_cc::FilterOperation::execute_gpu(), blender::nodes::node_composite_flip_cc::FlipOperation::execute_gpu(), blender::nodes::node_composite_id_mask_cc::IDMaskOperation::execute_gpu(), blender::nodes::node_composite_map_uv_cc::MapUVOperation::execute_gpu(), blender::nodes::node_composite_moviedistortion_cc::MovieDistortionOperation::execute_gpu(), blender::nodes::node_composite_normalize_cc::NormalizeOperation::execute_gpu(), blender::nodes::node_composite_pixelate_cc::PixelateOperation::execute_gpu(), blender::nodes::node_composite_split_cc::SplitOperation::execute_gpu(), blender::nodes::node_composite_glare_cc::GlareOperation::execute_highlights_gpu(), blender::nodes::node_composite_lensdist_cc::LensDistortionOperation::execute_horizontal_distortion_gpu(), blender::nodes::node_composite_crop_cc::CropOperation::execute_image_crop_gpu(), blender::nodes::node_composite_glare_cc::GlareOperation::execute_mix_gpu(), blender::nodes::node_composite_group_input_cc::GroupInputOperation::execute_pass_gpu(), blender::nodes::node_composite_render_layer_cc::RenderLayerOperation::execute_pass_gpu(), blender::nodes::node_composite_tonemap_cc::ToneMapOperation::execute_photoreceptor_gpu(), blender::nodes::node_composite_lensdist_cc::LensDistortionOperation::execute_radial_distortion_gpu(), blender::nodes::node_composite_zcombine_cc::ZCombineOperation::execute_simple_depth_gpu(), blender::nodes::node_composite_tonemap_cc::ToneMapOperation::execute_simple_gpu(), blender::nodes::node_composite_zcombine_cc::ZCombineOperation::execute_simple_image_gpu(), blender::nodes::node_composite_glare_cc::GlareOperation::execute_simple_star_anti_diagonal_pass_gpu(), blender::nodes::node_composite_glare_cc::GlareOperation::execute_simple_star_diagonal_pass_gpu(), blender::nodes::node_composite_glare_cc::GlareOperation::execute_simple_star_horizontal_pass_gpu(), blender::nodes::node_composite_glare_cc::GlareOperation::execute_simple_star_vertical_pass_gpu(), blender::nodes::node_composite_dilate_cc::DilateErodeOperation::execute_step_horizontal_pass_gpu(), blender::nodes::node_composite_dilate_cc::DilateErodeOperation::execute_step_vertical_pass_gpu(), blender::nodes::node_composite_glare_cc::GlareOperation::execute_sun_beams_gpu(), blender::nodes::node_composite_blur_cc::BlurOperation::execute_variable_size_gpu(), blender::nodes::node_composite_bokehblur_cc::BokehBlurOperation::execute_variable_size_gpu(), blender::nodes::node_composite_scale_cc::ScaleOperation::execute_variable_size_gpu(), extract_alpha_gpu(), blender::nodes::node_composite_keying_cc::KeyingOperation::extract_input_chroma_gpu(), blender::nodes::node_composite_inpaint_cc::InpaintOperation::fill_inpainting_region_gpu(), horizontal_pass_gpu(), horizontal_pass_gpu(), horizontal_pass_gpu(), jump_flooding_pass_gpu(), morphological_distance_gpu(), blender::nodes::node_composite_keying_cc::KeyingOperation::replace_input_chroma_gpu(), sum_causal_and_non_causal_results_gpu(), sum_causal_and_non_causal_results_gpu(), vertical_pass_gpu(), vertical_pass_gpu(), vertical_pass_gpu(), blender::nodes::node_composite_glare_cc::GlareOperation::write_glare_output_gpu(), blender::nodes::node_composite_glare_cc::GlareOperation::write_highlights_output_gpu(), and zero_pad_gpu().

◆ compute_distance_falloff()

float blender::compositor::compute_distance_falloff ( int type,
float x )
static

◆ compute_exterior_angle()

float blender::compositor::compute_exterior_angle ( int sides)
static

Definition at line 81 of file bokeh_kernel.cc.

References blender::math::numbers::pi.

Referenced by compute_rotation().

◆ compute_feedback_coefficients()

double4 blender::compositor::compute_feedback_coefficients ( const std::array< std::complex< double >, 4 > & poles)
static

◆ compute_feedforward_coefficient()

double blender::compositor::compute_feedforward_coefficient ( const double4 & feedback_coefficients)
static

◆ compute_fog_glow_kernel_value()

float blender::compositor::compute_fog_glow_kernel_value ( int2 texel,
math::AngleRadian field_of_view_per_pixel )
static

◆ compute_image_user_for_pass()

ImageUser blender::compositor::compute_image_user_for_pass ( const Context & context,
const Image * image,
const RenderResult * render_result,
const ImageUser * image_user,
const char * pass_name )
static

◆ compute_incomplete_prologues()

◆ compute_linear_buffer()

◆ compute_marker_points()

◆ compute_non_causal_feedforward_coefficients()

double4 blender::compositor::compute_non_causal_feedforward_coefficients ( const double4 & causal_feedforward_coefficients,
const double4 & feedback_coefficients )
static

◆ compute_normalization_scale()

float blender::compositor::compute_normalization_scale ( const double4 & causal_feedforward_coefficients,
const double4 & feedback_coefficients )
static

◆ compute_number_of_diagonals()

◆ compute_number_of_needed_buffers()

◆ compute_numerator()

◆ compute_numerator_0()

double blender::compositor::compute_numerator_0 ( )
static

Definition at line 69 of file deriche_gaussian_coefficients.cc.

References a0, and c0.

Referenced by compute_numerator().

◆ compute_numerator_1()

double blender::compositor::compute_numerator_1 ( float sigma)
static

◆ compute_numerator_2()

double blender::compositor::compute_numerator_2 ( float sigma)
static

◆ compute_numerator_3()

double blender::compositor::compute_numerator_3 ( float sigma)
static

◆ compute_partial_fraction_residue()

std::complex< double > blender::compositor::compute_partial_fraction_residue ( const std::array< std::complex< double >, 4 > & poles,
const std::complex< double > & target_pole,
double gain )
static

Computes the residue of the partial fraction of the transfer function of the given causal poles and gain for the given target pole. This essentially evaluates Equation (3.41) in Oppenheim's book, where d_k is the target pole and assuming the transfer function is in the form given in Equation (3.39), where d_k are the poles. See the following derivation for the gain value.

For the particular case of the Van Vliet's system, there are no zeros, so the numerator in Equation (3.39) is one. Further note that Van Vliet's formulation is different from the expected form, so we need to rearrange Equation (3) in to match the form in Equation (3.39), which is shown below.

Start from the causal term of Equation (3):

H_+(z) = \prod_{i=1}^N \frac{d_i - 1}{d_i - z^{-1}}

Divide by d_i:

H_+(z) = \prod_{i=1}^N \frac{1 - d_i^{-1}}{1 - d_i^{-1}z^{-1}}

Move the numerator to its own product:

H_+(z) = \prod_{i=1}^N 1 - d_i^{-1} \prod_{i=1}^N \frac{1}{1 - d_i^{-1}z^{-1}}

And we reach the same form as Equation (3.39). Where the first product term is b0 / a0 and is also the given gain value, which is also the same as the feedforward coefficient denoted by the alpha in Equation (12). Further d_i^{-1} in our derivation is the same as d_k in Equation (3.39), the discrepancy in the inverse operator is the fact that Van Vliet's derivation assume non causal poles, while Oppenheim's assume causal poles, which are inverse of each other as can be seen in the compute_causal_poles function.

Definition at line 290 of file van_vliet_gaussian_coefficients.cc.

Referenced by blender::compositor::VanVlietGaussianCoefficients::VanVlietGaussianCoefficients().

◆ compute_preview() [1/2]

◆ compute_preview() [2/2]

void blender::compositor::compute_preview ( Context & context,
const nodes::DNode & node,
const Result & input_result )

◆ compute_preview_cpu()

void blender::compositor::compute_preview_cpu ( Context & context,
const Result & input_result,
bke::bNodePreview * preview )
static

◆ compute_preview_gpu()

◆ compute_preview_size()

int2 blender::compositor::compute_preview_size ( int2 size)
static

Definition at line 113 of file compute_preview.cc.

References compute_preview_size(), and size().

Referenced by compute_preview(), and compute_preview_size().

◆ compute_rotation()

float blender::compositor::compute_rotation ( float angle,
int sides )
static

Definition at line 86 of file bokeh_kernel.cc.

References angle(), compute_exterior_angle(), and blender::math::numbers::pi.

◆ compute_scaled_poles_variance()

double blender::compositor::compute_scaled_poles_variance ( const std::array< std::complex< double >, 4 > & poles,
double scale_factor )
static

Definition at line 65 of file van_vliet_gaussian_coefficients.cc.

Referenced by find_scale_factor().

◆ compute_scaled_poles_variance_derivative()

double blender::compositor::compute_scaled_poles_variance_derivative ( const std::array< std::complex< double >, 4 > & poles,
double scale_factor )
static

Computes the partial derivative with respect to the scale factor at the given scale factor of the variance of the Gaussian filter represented by the given poles scaled by the given scale factor. This is based on the partial derivative with respect to the scale factor of Equation (20) in Van Vliet's paper.

The derivative is not listed in the paper, but was computed manually as the sum of the following for each of the poles:

\frac{
2a^\frac{1}{x}e^\frac{ib}{x} (e^\frac{ib}{x}+a^\frac{1}{x}) (\ln(a)-ib)
}{
x^2 (a^\frac{1}{x}-e^\frac{ib}{x})^3
}

Where "x" is the scale factor, "a" is the magnitude of the pole, and "b" is its phase.

Definition at line 101 of file van_vliet_gaussian_coefficients.cc.

References blender::math::square().

Referenced by find_scale_factor().

◆ compute_schedule()

◆ compute_second_order_section()

void blender::compositor::compute_second_order_section ( const std::complex< double > & pole,
const std::complex< double > & residue,
const std::complex< double > & transfer_value,
double2 & r_feedback_coefficients,
double2 & r_causal_feedforward_coefficients,
double2 & r_non_causal_feedforward_coefficients )
static

◆ compute_sigma_from_radius()

float2 blender::compositor::compute_sigma_from_radius ( float2 radius)
static

Definition at line 21 of file recursive_gaussian_blur.cc.

References blender::math::max().

Referenced by recursive_gaussian_blur().

◆ computed_scaled_poles()

std::array< std::complex< double >, 4 > blender::compositor::computed_scaled_poles ( const std::array< std::complex< double >, 4 > & poles,
float sigma )
static

◆ convolve()

◆ create_pixel_operation()

◆ deriche_gaussian_blur()

void blender::compositor::deriche_gaussian_blur ( Context & context,
const Result & input,
Result & output,
const float2 & sigma )

◆ detect_edges()

Result blender::compositor::detect_edges ( Context & context,
const Result & input,
const float threshold,
const float local_contrast_adaptation_factor )
static

Definition at line 1488 of file smaa.cc.

References detect_edges_cpu(), detect_edges_gpu(), and input.

Referenced by smaa().

◆ detect_edges_cpu()

Result blender::compositor::detect_edges_cpu ( Context & context,
const Result & input,
const float threshold,
const float local_contrast_adaptation_factor )
static

◆ detect_edges_gpu()

◆ encode_jump_flooding_value()

int2 blender::compositor::encode_jump_flooding_value ( const int2 & closest_seed_texel,
const bool is_flooded )
inline

◆ extract_alpha()

void blender::compositor::extract_alpha ( Context & context,
Result & input,
Result & output )

◆ extract_alpha_cpu()

void blender::compositor::extract_alpha_cpu ( Result & input,
Result & output )
static

Definition at line 32 of file extract_alpha.cc.

References input, output, and parallel_for().

Referenced by extract_alpha().

◆ extract_alpha_gpu()

void blender::compositor::extract_alpha_gpu ( Context & context,
Result & input,
Result & output )
static

◆ find_preview_output_socket()

DOutputSocket blender::compositor::find_preview_output_socket ( const DNode & node)

◆ find_scale_factor()

double blender::compositor::find_scale_factor ( const std::array< std::complex< double >, 4 > & poles,
double reference_sigma )
static

◆ find_viewer_node_in_context()

DNode blender::compositor::find_viewer_node_in_context ( const DTreeContext & tree_context)
static

◆ get_anti_diagonal_direction()

int2 blender::compositor::get_anti_diagonal_direction ( )
inline

◆ get_blend_shader_name()

const char * blender::compositor::get_blend_shader_name ( ResultType type)
static

Definition at line 1577 of file smaa.cc.

References BLI_assert_unreachable, Color, and Float.

Referenced by blend_neighborhood_gpu().

◆ get_blur_shader()

const char * blender::compositor::get_blur_shader ( const ResultType type)
static

Definition at line 49 of file symmetric_separable_blur.cc.

References BLI_assert_unreachable, Color, and Float.

Referenced by horizontal_pass_gpu(), and vertical_pass_gpu().

◆ get_compute_complete_blocks_shader()

const char * blender::compositor::get_compute_complete_blocks_shader ( SummedAreaTableOperation operation)
static

Definition at line 153 of file summed_area_table.cc.

References BLI_assert_unreachable, Identity, and Square.

Referenced by compute_complete_blocks().

◆ get_compute_incomplete_prologues_shader()

const char * blender::compositor::get_compute_incomplete_prologues_shader ( SummedAreaTableOperation operation)
static

Definition at line 33 of file summed_area_table.cc.

References BLI_assert_unreachable, Identity, and Square.

Referenced by compute_incomplete_prologues().

◆ get_diagonal_direction()

int2 blender::compositor::get_diagonal_direction ( )
inline

◆ get_domain_priority()

int blender::compositor::get_domain_priority ( const bNodeSocket * input,
const nodes::SocketDeclaration * socket_declaration )
static

◆ get_implicit_input()

ImplicitInput blender::compositor::get_implicit_input ( const nodes::SocketDeclaration * socket_declaration)
static

◆ get_implicit_input_result_type()

ResultType blender::compositor::get_implicit_input_result_type ( const ImplicitInput implicit_input)
static

◆ get_input_origin_socket()

DSocket blender::compositor::get_input_origin_socket ( DInputSocket input)

Get the origin socket of the given node input. If the input is not linked, the socket itself is returned. If the input is linked, the socket that is linked to it is returned, which could either be an input or an output. An input socket is returned when the given input is connected to an unlinked input of a group input node.

Definition at line 32 of file utilities.cc.

References input.

Referenced by get_output_linked_to_input().

◆ get_luminance_coefficients()

float3 blender::compositor::get_luminance_coefficients ( ResultType type)
static

◆ get_mask_raster_handles()

Vector< MaskRasterHandle * > blender::compositor::get_mask_raster_handles ( Mask * mask,
int2 size,
int current_frame,
bool use_feather,
int motion_blur_samples,
float motion_blur_shutter )
static

◆ get_movie_clip_size()

int2 blender::compositor::get_movie_clip_size ( MovieClip * movie_clip,
int frame_number )
static

◆ get_movie_clip_user()

MovieClipUser blender::compositor::get_movie_clip_user ( Context & context,
MovieClip * movie_clip )
static

◆ get_node_socket_result_type()

◆ get_output_linked_to_input()

DOutputSocket blender::compositor::get_output_linked_to_input ( DInputSocket input)

Get the output socket linked to the given node input. If the input is not linked to an output, a null output is returned.

Definition at line 52 of file utilities.cc.

References get_input_origin_socket(), and input.

Referenced by compute_number_of_needed_buffers(), and compute_schedule().

◆ get_pass_index()

int blender::compositor::get_pass_index ( const RenderResult * render_result,
const ImageUser & image_user,
const char * name )
static

◆ get_pixel_sampler_shader_name()

char const * blender::compositor::get_pixel_sampler_shader_name ( const Interpolation & interpolation)
static

Definition at line 20 of file sample_pixel.cc.

References Anisotropic, Bicubic, Bilinear, BLI_assert_unreachable, and Nearest.

Referenced by sample_pixel_gpu().

◆ get_regular_polygon_vertex_position()

float2 blender::compositor::get_regular_polygon_vertex_position ( const int vertex_index,
const float exterior_angle,
const float rotation )
static

Definition at line 123 of file bokeh_kernel.cc.

References angle(), blender::math::cos(), and blender::math::sin().

Referenced by bokeh().

◆ get_render_layer()

RenderLayer * blender::compositor::get_render_layer ( const RenderResult * render_result,
const ImageUser & image_user )
static

Definition at line 62 of file cached_image.cc.

References BLI_findlink(), ImageUser::layer, and RenderResult::layers.

Referenced by get_pass_index(), and get_result_type().

◆ get_render_pass()

RenderPass * blender::compositor::get_render_pass ( const RenderLayer * render_layer,
const ImageUser & image_user )
static

Definition at line 80 of file cached_image.cc.

References BLI_findlink(), ImageUser::pass, and RenderLayer::passes.

Referenced by get_result_type().

◆ get_result_data() [1/2]

GSpan blender::compositor::get_result_data ( const Result & result)
static

Definition at line 170 of file conversion_operation.cc.

References Color, blender::CPPType::get(), and result.

◆ get_result_data() [2/2]

GMutableSpan blender::compositor::get_result_data ( Result & result)
static

Definition at line 182 of file conversion_operation.cc.

References Color, blender::CPPType::get(), and result.

◆ get_result_single_value() [1/2]

GSpan blender::compositor::get_result_single_value ( const Result & result)
static

Definition at line 139 of file conversion_operation.cc.

References Color, blender::CPPType::get(), and result.

◆ get_result_single_value() [2/2]

GMutableSpan blender::compositor::get_result_single_value ( Result & result)
static

Definition at line 149 of file conversion_operation.cc.

References Color, blender::CPPType::get(), and result.

◆ get_result_type()

ResultType blender::compositor::get_result_type ( const RenderResult * render_result,
const ImageUser & image_user,
const ImBuf * image_buffer )
static

◆ get_set_function_name()

const char * blender::compositor::get_set_function_name ( const ResultType type)
static

◆ get_shader()

const char * blender::compositor::get_shader ( MorphologicalBlurOperation operation)
static

Definition at line 20 of file morphological_blur.cc.

References BLI_assert_unreachable, Dilate, and Erode.

Referenced by apply_morphological_operator_gpu().

◆ get_shader_name() [1/4]

const char * blender::compositor::get_shader_name ( const CoordinatesType type)
static

Definition at line 62 of file image_coordinates.cc.

References BLI_assert_unreachable, Normalized, Pixel, and Uniform.

◆ get_shader_name() [2/4]

const char * blender::compositor::get_shader_name ( const int distance)
static

◆ get_shader_name() [3/4]

const char * blender::compositor::get_shader_name ( const int distance)
static

Definition at line 132 of file morphological_distance_feather.cc.

References distance().

◆ get_shader_name() [4/4]

const char * blender::compositor::get_shader_name ( const ResultType type,
const PaddingMethod padding_method )
static

Definition at line 15 of file pad.cc.

References BLI_assert_unreachable, Color, Extend, Float, Float2, and Zero.

◆ get_shader_node_input()

GPUNodeStack & blender::compositor::get_shader_node_input ( const bNode & node,
GPUNodeStack inputs[],
StringRef identifier )

◆ get_shader_node_input_link()

GPUNodeLink * blender::compositor::get_shader_node_input_link ( const bNode & node,
GPUNodeStack inputs[],
StringRef identifier )

◆ get_shader_node_output()

GPUNodeStack & blender::compositor::get_shader_node_output ( const bNode & node,
GPUNodeStack outputs[],
StringRef identifier )

◆ get_store_function_name()

const char * blender::compositor::get_store_function_name ( ResultType type)
static

◆ get_view_index()

int blender::compositor::get_view_index ( const Context & context,
const RenderResult * render_result,
const ImageUser & image_user )
static

◆ glsl_store_expression_from_result_type()

const char * blender::compositor::glsl_store_expression_from_result_type ( ResultType type)
static

◆ glsl_swizzle_from_result_type()

const char * blender::compositor::glsl_swizzle_from_result_type ( ResultType type)
static

◆ glsl_type_from_result_type()

const char * blender::compositor::glsl_type_from_result_type ( ResultType type)
static

◆ gpu_image_type_from_result_type()

ImageType blender::compositor::gpu_image_type_from_result_type ( const ResultType type)
static

◆ gpu_type_from_socket()

◆ horizontal_pass() [1/3]

Result blender::compositor::horizontal_pass ( Context & context,
const Result & input,
const float radius,
const int filter_type )
static

Definition at line 140 of file symmetric_separable_blur.cc.

References horizontal_pass_cpu(), horizontal_pass_gpu(), and input.

◆ horizontal_pass() [2/3]

Result blender::compositor::horizontal_pass ( Context & context,
const Result & input,
const int distance,
const int falloff_type )
static

◆ horizontal_pass() [3/3]

Result blender::compositor::horizontal_pass ( Context & context,
const Result & input,
const Result & radius,
const int weights_resolution,
const int filter_type )
static

◆ horizontal_pass_cpu() [1/3]

Result blender::compositor::horizontal_pass_cpu ( Context & context,
const Result & input,
const float radius,
const int filter_type )
static

◆ horizontal_pass_cpu() [2/3]

Result blender::compositor::horizontal_pass_cpu ( Context & context,
const Result & input,
const int distance,
const int falloff_type )
static

◆ horizontal_pass_cpu() [3/3]

Result blender::compositor::horizontal_pass_cpu ( Context & context,
const Result & input,
const Result & radius,
const int weights_resolution,
const int filter_type )
static

◆ horizontal_pass_gpu() [1/3]

◆ horizontal_pass_gpu() [2/3]

◆ horizontal_pass_gpu() [3/3]

◆ initialize_input_stack_value()

◆ initialize_jump_flooding_value()

◆ input_descriptor_from_input_socket()

◆ is_compatible_texture()

bool blender::compositor::is_compatible_texture ( const blender::gpu::Texture * texture,
const Result & result )
static

◆ is_conversion_supported()

bool blender::compositor::is_conversion_supported ( const ResultType from_type,
const ResultType to_type )
static

◆ is_node_preview_needed()

bool blender::compositor::is_node_preview_needed ( const DNode & node)

◆ is_output_linked_to_node_conditioned()

bool blender::compositor::is_output_linked_to_node_conditioned ( DOutputSocket output,
FunctionRef< bool(DNode)> condition )

Returns true if any of the nodes linked to the given output satisfies the given condition, and false otherwise.

Definition at line 113 of file utilities.cc.

References output.

Referenced by compute_number_of_needed_buffers(), and blender::compositor::CompileState::compute_pixel_node_operation_outputs_count().

◆ is_pixel_node()

bool blender::compositor::is_pixel_node ( DNode node)

A node is a pixel node if it defines a method to get a pixel node operation.

Definition at line 143 of file utilities.cc.

References BLI_assert.

Referenced by compute_number_of_needed_buffers(), blender::compositor::Evaluator::evaluate(), and blender::compositor::CompileState::should_compile_pixel_compile_unit().

◆ is_socket_available()

◆ is_tree_context_muted()

bool blender::compositor::is_tree_context_muted ( const DTreeContext & tree_context)
static

◆ jump_flooding()

◆ jump_flooding_pass()

void blender::compositor::jump_flooding_pass ( Context & context,
Result & input,
Result & output,
int step_size )
static

◆ jump_flooding_pass_cpu()

void blender::compositor::jump_flooding_pass_cpu ( Result & input,
Result & output,
int step_size )
static

Definition at line 53 of file jump_flooding.cc.

References encode_jump_flooding_value(), input, output, and parallel_for().

Referenced by jump_flooding_pass().

◆ jump_flooding_pass_gpu()

void blender::compositor::jump_flooding_pass_gpu ( Context & context,
Result & input,
Result & output,
int step_size )
static

◆ map_extension_mode_to_extend_mode()

◆ map_extension_mode_to_wrap_mode()

math::InterpWrapMode blender::compositor::map_extension_mode_to_wrap_mode ( const ExtensionMode & mode)

◆ maximum_float()

◆ maximum_float2()

float2 blender::compositor::maximum_float2 ( Context & context,
const Result & result )

◆ maximum_float2_cpu()

float2 blender::compositor::maximum_float2_cpu ( const Result & result)
static

◆ maximum_float2_gpu()

float2 blender::compositor::maximum_float2_gpu ( Context & context,
const Result & result )
static

◆ maximum_float_cpu()

float blender::compositor::maximum_float_cpu ( const Result & result)
static

Definition at line 566 of file parallel_reduction.cc.

References b, float, maximum_float_cpu(), parallel_reduce(), and result.

Referenced by maximum_float(), and maximum_float_cpu().

◆ maximum_float_gpu()

float blender::compositor::maximum_float_gpu ( Context & context,
const Result & result )
static

◆ maximum_float_in_range()

float blender::compositor::maximum_float_in_range ( Context & context,
const Result & result,
const float lower_bound,
const float upper_bound )

◆ maximum_float_in_range_cpu()

float blender::compositor::maximum_float_in_range_cpu ( const Result & result,
const float lower_bound,
const float upper_bound )
static

◆ maximum_float_in_range_gpu()

float blender::compositor::maximum_float_in_range_gpu ( Context & context,
const Result & result,
const float lower_bound,
const float upper_bound )
static

◆ maximum_luminance()

float blender::compositor::maximum_luminance ( Context & context,
const Result & result,
const float3 & luminance_coefficients )

◆ maximum_luminance_cpu()

float blender::compositor::maximum_luminance_cpu ( const Result & result,
const float3 & luminance_coefficients )
static

◆ maximum_luminance_gpu()

float blender::compositor::maximum_luminance_gpu ( Context & context,
const Result & result,
const float3 & luminance_coefficients )
static

◆ minimum_float()

float blender::compositor::minimum_float ( Context & context,
const Result & result )

Definition at line 740 of file parallel_reduction.cc.

References minimum_float(), minimum_float_cpu(), minimum_float_gpu(), and result.

Referenced by minimum_float().

◆ minimum_float_cpu()

float blender::compositor::minimum_float_cpu ( const Result & result)
static

Definition at line 729 of file parallel_reduction.cc.

References b, float, minimum_float_cpu(), parallel_reduce(), and result.

Referenced by minimum_float(), and minimum_float_cpu().

◆ minimum_float_gpu()

float blender::compositor::minimum_float_gpu ( Context & context,
const Result & result )
static

◆ minimum_float_in_range()

float blender::compositor::minimum_float_in_range ( Context & context,
const Result & result,
const float lower_bound,
const float upper_bound )

◆ minimum_float_in_range_cpu()

float blender::compositor::minimum_float_in_range_cpu ( const Result & result,
const float lower_bound,
const float upper_bound )
static

◆ minimum_float_in_range_gpu()

float blender::compositor::minimum_float_in_range_gpu ( Context & context,
const Result & result,
const float lower_bound,
const float upper_bound )
static

◆ minimum_luminance()

float blender::compositor::minimum_luminance ( Context & context,
const Result & result,
const float3 & luminance_coefficients )

◆ minimum_luminance_cpu()

float blender::compositor::minimum_luminance_cpu ( const Result & result,
const float3 & luminance_coefficients )
static

◆ minimum_luminance_gpu()

float blender::compositor::minimum_luminance_gpu ( Context & context,
const Result & result,
const float3 & luminance_coefficients )
static

◆ morphological_blur()

void blender::compositor::morphological_blur ( Context & context,
const Result & input,
Result & output,
const float2 & radius,
const MorphologicalBlurOperation operation = MorphologicalBlurOperation::Erode,
const int filter_type = R_FILTER_GAUSS )

◆ morphological_distance()

◆ morphological_distance_cpu()

template<bool IsDilate>
void blender::compositor::morphological_distance_cpu ( const Result & input,
Result & output,
const int structuring_element_radius )
static

◆ morphological_distance_feather()

void blender::compositor::morphological_distance_feather ( Context & context,
const Result & input,
Result & output,
const int distance,
const int falloff_type = PROP_SMOOTH )

◆ morphological_distance_feather_pass()

◆ morphological_distance_gpu()

void blender::compositor::morphological_distance_gpu ( Context & context,
const Result & input,
Result & output,
const int distance )
static

◆ number_of_inputs_linked_to_output_conditioned()

int blender::compositor::number_of_inputs_linked_to_output_conditioned ( DOutputSocket output,
FunctionRef< bool(DInputSocket)> condition )

Returns the number of inputs linked to the given output that satisfy the given condition.

Definition at line 126 of file utilities.cc.

References count, and output.

Referenced by blender::compositor::NodeOperation::compute_results_reference_counts(), and blender::compositor::PixelOperation::compute_results_reference_counts().

◆ operator!=()

bool blender::compositor::operator!= ( const Domain & a,
const Domain & b )

Definition at line 51 of file domain.cc.

References b.

◆ operator==() [1/16]

◆ operator==() [2/16]

◆ operator==() [3/16]

◆ operator==() [4/16]

bool blender::compositor::operator== ( const CachedShaderKey & a,
const CachedShaderKey & b )

◆ operator==() [5/16]

bool blender::compositor::operator== ( const DericheGaussianCoefficientsKey & a,
const DericheGaussianCoefficientsKey & b )

◆ operator==() [6/16]

◆ operator==() [7/16]

bool blender::compositor::operator== ( const Domain & a,
const Domain & b )

◆ operator==() [8/16]

◆ operator==() [9/16]

bool blender::compositor::operator== ( const ImageCoordinatesKey & a,
const ImageCoordinatesKey & b )

◆ operator==() [10/16]

bool blender::compositor::operator== ( const KeyingScreenKey & a,
const KeyingScreenKey & b )

◆ operator==() [11/16]

◆ operator==() [12/16]

◆ operator==() [13/16]

◆ operator==() [14/16]

◆ operator==() [15/16]

◆ operator==() [16/16]

bool blender::compositor::operator== ( const VanVlietGaussianCoefficientsKey & a,
const VanVlietGaussianCoefficientsKey & b )

◆ pad()

void blender::compositor::pad ( Context & context,
const Result & input,
Result & output,
const int2 size,
const PaddingMethod padding_method )

Definition at line 107 of file pad.cc.

References input, output, size(), zero_pad_cpu(), and zero_pad_gpu().

◆ parallel_for()

template<typename Function>
void blender::compositor::parallel_for ( const int2 range,
const Function & function )
inline

Definition at line 90 of file COM_utilities.hh.

References blender::threading::parallel_for().

Referenced by blender::nodes::node_composite_glare_cc::GlareOperation::accumulate_ghosts_cpu(), blender::nodes::node_composite_glare_cc::GlareOperation::accumulate_streak_cpu(), apply_morphological_operator_cpu(), blender::nodes::node_composite_glare_cc::GlareOperation::apply_streak_filter_cpu(), blend_neighborhood_cpu(), blur_pass(), blur_pass(), blur_pass_cpu(), blur_pass_cpu(), blender::compositor::CachedImage::CachedImage(), blender::compositor::CachedMask::CachedMask(), calculate_blending_weights_cpu(), blender::nodes::node_composite_movieclip_cc::MovieClipOperation::compute_alpha(), blender::nodes::node_composite_displace_cc::DisplaceOperation::compute_anisotropic(), blender::nodes::node_composite_glare_cc::GlareOperation::compute_base_ghost_cpu(), blender::nodes::node_composite_glare_cc::GlareOperation::compute_bloom_downsample_chain(), blender::nodes::node_composite_glare_cc::GlareOperation::compute_bloom_downsample_cpu(), blender::nodes::node_composite_glare_cc::GlareOperation::compute_bloom_upsample_cpu(), blender::nodes::node_composite_bokehblur_cc::BokehBlurOperation::compute_blur_kernel(), blender::nodes::node_composite_double_edge_mask_cc::DoubleEdgeMaskOperation::compute_boundary_cpu(), blender::nodes::node_composite_kuwahara_cc::ConvertKuwaharaOperation::compute_classic(), blender::nodes::node_composite_defocus_cc::DefocusOperation::compute_defocus_radius_from_depth_cpu(), blender::nodes::node_composite_defocus_cc::DefocusOperation::compute_defocus_radius_from_scale_cpu(), blender::nodes::node_composite_double_edge_mask_cc::DoubleEdgeMaskOperation::compute_gradient_cpu(), blender::nodes::node_composite_movieclip_cc::MovieClipOperation::compute_image(), blender::nodes::node_composite_base_cryptomatte_cc::BaseCryptoMatteOperation::compute_image_cpu(), blender::nodes::node_composite_keying_cc::KeyingOperation::compute_image_cpu(), blender::nodes::node_composite_inpaint_cc::InpaintOperation::compute_inpainting_boundary_cpu(), blender::nodes::node_composite_inpaint_cc::InpaintOperation::compute_inpainting_region_cpu(), blender::nodes::node_composite_displace_cc::DisplaceOperation::compute_interpolation(), blender::nodes::node_composite_zcombine_cc::ZCombineOperation::compute_mask_cpu(), blender::nodes::node_composite_base_cryptomatte_cc::BaseCryptoMatteOperation::compute_matte_cpu(), blender::nodes::node_composite_keying_cc::KeyingOperation::compute_matte_cpu(), blender::nodes::node_composite_vec_blur_cc::compute_max_tile_velocity_cpu(), blender::nodes::node_composite_base_cryptomatte_cc::BaseCryptoMatteOperation::compute_pick_cpu(), blender::nodes::node_composite_cornerpin_cc::CornerPinOperation::compute_plane_cpu(), blender::nodes::node_composite_planetrackdeform_cc::PlaneTrackDeformOperation::compute_plane_cpu(), blender::nodes::node_composite_cornerpin_cc::CornerPinOperation::compute_plane_mask_cpu(), blender::nodes::node_composite_planetrackdeform_cc::PlaneTrackDeformOperation::compute_plane_mask_cpu(), blender::nodes::node_composite_kuwahara_cc::ConvertKuwaharaOperation::compute_structure_tensor_cpu(), blender::nodes::node_composite_keying_cc::KeyingOperation::compute_tweaked_matte_cpu(), convolve(), detect_edges_cpu(), blender::nodes::node_composite_vec_blur_cc::dilate_max_velocity_cpu(), blender::compositor::DistortionGrid::DistortionGrid(), blender::nodes::node_composite_denoise_cc::DenoiseOperation::execute(), blender::nodes::node_composite_crop_cc::CropOperation::execute_alpha_crop_cpu(), blender::nodes::node_composite_kuwahara_cc::ConvertKuwaharaOperation::execute_anisotropic_cpu(), blender::nodes::node_composite_zcombine_cc::ZCombineOperation::execute_anti_aliased_cpu(), blender::nodes::node_composite_glare_cc::GlareOperation::execute_bloom(), blender::nodes::node_composite_group_output_cc::GroupOutputOperation::execute_clear(), blender::nodes::node_composite_viewer_cc::ViewerOperation::execute_clear(), blender::nodes::node_composite_blur_cc::BlurOperation::execute_constant_size_cpu(), blender::nodes::node_composite_bokehblur_cc::BokehBlurOperation::execute_constant_size_cpu(), blender::nodes::node_composite_group_output_cc::GroupOutputOperation::execute_copy_cpu(), blender::nodes::node_composite_viewer_cc::ViewerOperation::execute_copy_cpu(), blender::nodes::node_composite_bilateralblur_cc::BilateralBlurOperation::execute_cpu(), blender::nodes::node_composite_boxmask_cc::BoxMaskOperation::execute_cpu(), blender::nodes::node_composite_convert_color_space_cc::ConvertColorSpaceOperation::execute_cpu(), blender::nodes::node_composite_convert_to_display_cc::ConvertToDisplayOperation::execute_cpu(), blender::nodes::node_composite_defocus_cc::DefocusOperation::execute_cpu(), blender::nodes::node_composite_despeckle_cc::DespeckleOperation::execute_cpu(), blender::nodes::node_composite_directionalblur_cc::DirectionalBlurOperation::execute_cpu(), blender::nodes::node_composite_ellipsemask_cc::EllipseMaskOperation::execute_cpu(), blender::nodes::node_composite_filter_cc::FilterOperation::execute_cpu(), blender::nodes::node_composite_flip_cc::FlipOperation::execute_cpu(), blender::nodes::node_composite_id_mask_cc::IDMaskOperation::execute_cpu(), blender::nodes::node_composite_moviedistortion_cc::MovieDistortionOperation::execute_cpu(), blender::nodes::node_composite_normalize_cc::NormalizeOperation::execute_cpu(), blender::nodes::node_composite_pixelate_cc::PixelateOperation::execute_cpu(), blender::nodes::node_composite_split_cc::SplitOperation::execute_cpu(), blender::nodes::node_composite_map_uv_cc::MapUVOperation::execute_cpu_anisotropic(), blender::nodes::node_composite_map_uv_cc::MapUVOperation::execute_cpu_interpolation(), blender::nodes::node_composite_dilate_cc::DilateErodeOperation::execute_distance_threshold_cpu(), blender::nodes::node_composite_glare_cc::GlareOperation::execute_highlights_cpu(), blender::nodes::node_composite_lensdist_cc::LensDistortionOperation::execute_horizontal_distortion_cpu(), blender::nodes::node_composite_crop_cc::CropOperation::execute_image_crop_cpu(), blender::nodes::node_composite_glare_cc::GlareOperation::execute_kernel(), blender::nodes::node_composite_glare_cc::GlareOperation::execute_mix_cpu(), blender::nodes::node_composite_group_input_cc::GroupInputOperation::execute_pass_cpu(), blender::nodes::node_composite_render_layer_cc::RenderLayerOperation::execute_pass_cpu(), blender::nodes::node_composite_tonemap_cc::ToneMapOperation::execute_photoreceptor_cpu(), blender::nodes::node_composite_lensdist_cc::LensDistortionOperation::execute_radial_distortion_cpu(), blender::nodes::node_composite_tonemap_cc::ToneMapOperation::execute_simple_cpu(), blender::nodes::node_composite_zcombine_cc::ZCombineOperation::execute_simple_cpu(), blender::nodes::node_composite_glare_cc::GlareOperation::execute_simple_star_anti_diagonal_pass_cpu(), blender::nodes::node_composite_glare_cc::GlareOperation::execute_simple_star_diagonal_pass_cpu(), blender::nodes::node_composite_glare_cc::GlareOperation::execute_simple_star_horizontal_pass_cpu(), blender::nodes::node_composite_glare_cc::GlareOperation::execute_simple_star_vertical_pass_cpu(), blender::nodes::node_composite_glare_cc::GlareOperation::execute_streaks(), blender::nodes::node_composite_glare_cc::GlareOperation::execute_sun_beams(), blender::nodes::node_composite_glare_cc::GlareOperation::execute_sun_beams_cpu(), blender::nodes::node_composite_blur_cc::BlurOperation::execute_variable_size_cpu(), blender::nodes::node_composite_bokehblur_cc::BokehBlurOperation::execute_variable_size_cpu(), blender::nodes::node_composite_scale_cc::ScaleOperation::execute_variable_size_cpu(), extract_alpha_cpu(), blender::nodes::node_composite_keying_cc::KeyingOperation::extract_input_chroma_cpu(), blender::nodes::node_composite_inpaint_cc::InpaintOperation::fill_inpainting_region_cpu(), blender::nodes::node_composite_file_output_cc::FileOutputOperation::float4_to_float3_image(), jump_flooding_pass_cpu(), morphological_distance_cpu(), morphological_distance_feather_pass(), blender::nodes::node_composite_keying_cc::KeyingOperation::replace_input_chroma_cpu(), sum_causal_and_non_causal_results_cpu(), sum_causal_and_non_causal_results_cpu(), blender::nodes::node_composite_glare_cc::GlareOperation::write_glare_output_cpu(), blender::nodes::node_composite_glare_cc::GlareOperation::write_highlights_output_cpu(), and zero_pad_cpu().

◆ parallel_reduce()

template<typename Value, typename Function, typename Reduction>
Value blender::compositor::parallel_reduce ( const int2 range,
const Value & identity,
const Function & function,
const Reduction & reduction )
static

Definition at line 94 of file parallel_reduction.cc.

References blender::threading::parallel_reduce(), and result.

◆ parallel_reduction_dispatch()

◆ populate_gpu_node_stack()

◆ recursive_gaussian_blur()

void blender::compositor::recursive_gaussian_blur ( Context & context,
const Result & input,
Result & output,
const float2 & radius )

◆ sample_ewa_extended_read_callback()

void blender::compositor::sample_ewa_extended_read_callback ( void * userdata,
int x,
int y,
float result[4] )
static

Given a Result as the userdata argument, sample it at the given coordinates using extended boundary condition and write the result to the result argument.

Definition at line 903 of file COM_result.hh.

References copy_v4_v4(), input, result, x, and y.

Referenced by blender::compositor::Result::sample_ewa_extended().

◆ sample_ewa_zero_read_callback()

void blender::compositor::sample_ewa_zero_read_callback ( void * userdata,
int x,
int y,
float result[4] )
static

Given a Result as the userdata argument, sample it at the given coordinates using zero boundary condition and write the result to the result argument.

Definition at line 940 of file COM_result.hh.

References copy_v4_v4(), input, result, x, and y.

Referenced by blender::compositor::Result::sample_ewa_zero().

◆ sample_pixel()

float4 blender::compositor::sample_pixel ( Context & context,
const Result & input,
const Interpolation & interpolation,
const ExtensionMode & extension_mode_x,
const ExtensionMode & extension_mode_y,
const float2 coordinates )

◆ sample_pixel_cpu()

float4 blender::compositor::sample_pixel_cpu ( const Result & input,
const Interpolation & interpolation,
const ExtensionMode & extension_mode_x,
const ExtensionMode & extension_mode_y,
const float2 coordinates )
static

Definition at line 82 of file sample_pixel.cc.

References input.

Referenced by sample_pixel().

◆ sample_pixel_gpu()

◆ smaa()

◆ SMAAArea()

float2 blender::compositor::SMAAArea ( SMAATexture2D(areaTex) ,
float2 dist,
float e1,
float e2,
float offset )
static

Ok, we have the distance and both crossing edges. So, what are the areas at each side of current edge?

Definition at line 1123 of file smaa.cc.

References mad, blender::math::round(), SMAA_AREATEX_MAX_DISTANCE, SMAA_AREATEX_PIXEL_SIZE, SMAA_AREATEX_SELECT, SMAA_AREATEX_SUBTEX_SIZE, and SMAASampleLevelZero.

Referenced by SMAABlendingWeightCalculationPS().

◆ SMAAAreaDiag()

float2 blender::compositor::SMAAAreaDiag ( SMAATexture2D(areaTex) ,
float2 dist,
float2 e,
float offset )
static

Similar to SMAAArea, this calculates the area corresponding to a certain diagonal distance and crossing edges 'e'.

Definition at line 875 of file smaa.cc.

References e, mad, SMAA_AREATEX_MAX_DISTANCE_DIAG, SMAA_AREATEX_PIXEL_SIZE, SMAA_AREATEX_SELECT, SMAA_AREATEX_SUBTEX_SIZE, and SMAASampleLevelZero.

Referenced by SMAACalculateDiagWeights().

◆ SMAABlendingWeightCalculationPS()

◆ SMAABlendingWeightCalculationVS()

void blender::compositor::SMAABlendingWeightCalculationVS ( float2 texcoord,
int2 size,
float2 & pixcoord,
float4 offset[3] )
static

Blend Weight Calculation Vertex Shader

Definition at line 692 of file smaa.cc.

References float, size(), SMAA_MAX_SEARCH_STEPS, w(), x, blender::VecBase< T, Size >::xy(), y, and z().

Referenced by calculate_blending_weights_cpu().

◆ SMAACalculateDiagWeights()

float2 blender::compositor::SMAACalculateDiagWeights ( SMAATexture2D(edgesTex) ,
SMAATexture2D(areaTex) ,
float2 texcoord,
float2 e,
float4 subsampleIndices,
int2 size )
static

◆ SMAADecodeDiagBilinearAccess() [1/2]

float2 blender::compositor::SMAADecodeDiagBilinearAccess ( float2 e)
static

Allows to decode two binary values from a bilinear-filtered access.

Definition at line 799 of file smaa.cc.

References blender::math::abs(), e, and blender::math::round().

Referenced by SMAACalculateDiagWeights(), and SMAASearchDiag2().

◆ SMAADecodeDiagBilinearAccess() [2/2]

float4 blender::compositor::SMAADecodeDiagBilinearAccess ( float4 e)
static

Definition at line 819 of file smaa.cc.

References blender::math::abs(), e, and blender::math::round().

◆ SMAADetectHorizontalCornerPattern()

void blender::compositor::SMAADetectHorizontalCornerPattern ( SMAATexture2D(edgesTex) ,
float2 & weights,
float4 texcoord,
float2 d,
int2 size,
int corner_rounding )
static

◆ SMAADetectVerticalCornerPattern()

void blender::compositor::SMAADetectVerticalCornerPattern ( SMAATexture2D(edgesTex) ,
float2 & weights,
float4 texcoord,
float2 d,
int2 size,
int corner_rounding )
static

◆ SMAAEdgeDetectionVS()

void blender::compositor::SMAAEdgeDetectionVS ( float2 texcoord,
int2 size,
float4 offset[3] )
static

Edge Detection Vertex Shader

Definition at line 679 of file smaa.cc.

References size(), and blender::VecBase< T, Size >::xy().

Referenced by detect_edges_cpu().

◆ SMAALumaEdgeDetectionPS()

float2 blender::compositor::SMAALumaEdgeDetectionPS ( float2 texcoord,
float4 offset[3],
SMAATexture2D(colorTex) ,
float edge_threshold,
float3 luminance_coefficients,
float local_contrast_adaptation_factor )
static

Luma Edge Detection

IMPORTANT NOTICE: luma edge detection requires gamma-corrected colors, and thus 'colorTex' should be a non-sRGB texture.

Definition at line 726 of file smaa.cc.

References blender::math::abs(), blender::math::dot(), L, blender::math::max(), SMAA_PREDICATION, SMAASamplePoint, SMAATexturePass2D, blender::math::step(), blender::VecBase< T, Size >::xy(), xy, and blender::VecBase< T, Size >::zw().

Referenced by detect_edges_cpu().

◆ SMAAMovc() [1/2]

void blender::compositor::SMAAMovc ( float2 cond,
float2 & variable,
float2 value )
static

Conditional move:

Definition at line 660 of file smaa.cc.

References blender::math::interpolate().

Referenced by SMAACalculateDiagWeights(), and SMAANeighborhoodBlendingPS().

◆ SMAAMovc() [2/2]

void blender::compositor::SMAAMovc ( float4 cond,
float4 & variable,
float4 value )
static

Definition at line 666 of file smaa.cc.

References blender::math::interpolate().

◆ SMAANeighborhoodBlendingPS()

◆ SMAANeighborhoodBlendingVS()

void blender::compositor::SMAANeighborhoodBlendingVS ( float2 texcoord,
int2 size,
float4 & offset )
static

Neighborhood Blending Vertex Shader

Definition at line 714 of file smaa.cc.

References size().

Referenced by blend_neighborhood_cpu().

◆ SMAASearchDiag1()

float2 blender::compositor::SMAASearchDiag1 ( SMAATexture2D(edgesTex) ,
float2 texcoord,
float2 dir,
int2 size,
float2 & e )
static

These functions allows to perform diagonal pattern searches.

Definition at line 829 of file smaa.cc.

References blender::math::dot(), e, mad, size(), SMAA_MAX_SEARCH_STEPS_DIAG, SMAASamplePoint, blender::VecBase< T, Size >::xy(), blender::VecBase< T, Size >::xyz(), and blender::VecBase< T, Size >::zw().

Referenced by SMAACalculateDiagWeights().

◆ SMAASearchDiag2()

◆ SMAASearchLength()

float blender::compositor::SMAASearchLength ( SMAATexture2D(searchTex) ,
float2 e,
float offset )
static

This allows to determine how much length should we add in the last step of the searches. It takes the bilinearly interpolated edge (see @PSEUDO_GATHER4), and adds 0, 1 or 2, depending on which edges and crossing edges are active.

Definition at line 1011 of file smaa.cc.

References e, mad, SMAA_SEARCHTEX_PACKED_SIZE, SMAA_SEARCHTEX_SELECT, SMAA_SEARCHTEX_SIZE, and SMAASampleLevelZero.

Referenced by SMAASearchXLeft(), SMAASearchXRight(), SMAASearchYDown(), and SMAASearchYUp().

◆ SMAASearchXLeft()

float blender::compositor::SMAASearchXLeft ( SMAATexture2D(edgesTex) ,
SMAATexture2D(searchTex) ,
float2 texcoord,
float end,
int2 size )
static

Horizontal/vertical search functions for the 2nd pass.

@PSEUDO_GATHER4 This texcoord has been offset by (-0.25, -0.125) in the vertex shader to sample between edge, thus fetching four edges in a row. Sampling with different offsets in each direction allows to disambiguate which edges are active from the four fetched ones.

Definition at line 1034 of file smaa.cc.

References e, mad, size(), SMAASampleLevelZero, SMAASearchLength(), and SMAATexturePass2D.

Referenced by SMAABlendingWeightCalculationPS().

◆ SMAASearchXRight()

float blender::compositor::SMAASearchXRight ( SMAATexture2D(edgesTex) ,
SMAATexture2D(searchTex) ,
float2 texcoord,
float end,
int2 size )
static

Definition at line 1070 of file smaa.cc.

References e, mad, size(), SMAASampleLevelZero, SMAASearchLength(), and SMAATexturePass2D.

Referenced by SMAABlendingWeightCalculationPS().

◆ SMAASearchYDown()

float blender::compositor::SMAASearchYDown ( SMAATexture2D(edgesTex) ,
SMAATexture2D(searchTex) ,
float2 texcoord,
float end,
int2 size )
static

Definition at line 1102 of file smaa.cc.

References e, mad, size(), SMAASampleLevelZero, SMAASearchLength(), and SMAATexturePass2D.

Referenced by SMAABlendingWeightCalculationPS().

◆ SMAASearchYUp()

float blender::compositor::SMAASearchYUp ( SMAATexture2D(edgesTex) ,
SMAATexture2D(searchTex) ,
float2 texcoord,
float end,
int2 size )
static

Definition at line 1085 of file smaa.cc.

References e, mad, size(), SMAASampleLevelZero, SMAASearchLength(), and SMAATexturePass2D.

Referenced by SMAABlendingWeightCalculationPS().

◆ socket_data_type_to_result_type()

ResultType blender::compositor::socket_data_type_to_result_type ( const eNodeSocketDatatype data_type,
const std::optional< int > dimensions = std::nullopt )

Get the result type that corresponds to the given socket data type. For vector sockets, the dimensions of the socket can be provided, but if not provided, 3 will be assumed.

Definition at line 68 of file utilities.cc.

References BLI_assert_unreachable, Bool, Color, Float, Float2, Float3, Float4, Int, Menu, SOCK_BOOLEAN, SOCK_FLOAT, SOCK_INT, SOCK_MENU, SOCK_RGBA, SOCK_STRING, SOCK_VECTOR, and String.

Referenced by get_node_socket_result_type(), and blender::nodes::node_geo_menu_switch_cc::node_declare().

◆ spectral_bokeh()

float4 blender::compositor::spectral_bokeh ( const int2 texel,
const int2 size,
const float exterior_angle,
const float rotation,
const float roundness,
const float catadioptric,
const float lens_shift )
static

Definition at line 219 of file bokeh_kernel.cc.

References blender::math::abs(), bokeh(), float, max, min, and size().

◆ sum_blue()

float blender::compositor::sum_blue ( Context & context,
const Result & result )

◆ sum_blue_cpu()

float blender::compositor::sum_blue_cpu ( const Result & result)
static

Definition at line 201 of file parallel_reduction.cc.

References b, float, parallel_reduce(), result, and sum_blue_cpu().

Referenced by sum_blue(), and sum_blue_cpu().

◆ sum_blue_gpu()

float blender::compositor::sum_blue_gpu ( Context & context,
const Result & result )
static

◆ sum_blue_squared_difference()

◆ sum_blue_squared_difference_cpu()

float blender::compositor::sum_blue_squared_difference_cpu ( const Result & result,
const float subtrahend )
static

◆ sum_blue_squared_difference_gpu()

◆ sum_causal_and_non_causal_results() [1/2]

void blender::compositor::sum_causal_and_non_causal_results ( Context & context,
const Result & causal_input,
const Result & non_causal_input,
Result & output )
static

◆ sum_causal_and_non_causal_results() [2/2]

void blender::compositor::sum_causal_and_non_causal_results ( Context & context,
const Result & first_causal_input,
const Result & first_non_causal_input,
const Result & second_causal_input,
const Result & second_non_causal_input,
Result & output )
static

◆ sum_causal_and_non_causal_results_cpu() [1/2]

void blender::compositor::sum_causal_and_non_causal_results_cpu ( const Result & causal_input,
const Result & non_causal_input,
Result & output )
static

◆ sum_causal_and_non_causal_results_cpu() [2/2]

void blender::compositor::sum_causal_and_non_causal_results_cpu ( const Result & first_causal_input,
const Result & first_non_causal_input,
const Result & second_causal_input,
const Result & second_non_causal_input,
Result & output )
static

◆ sum_causal_and_non_causal_results_gpu() [1/2]

◆ sum_causal_and_non_causal_results_gpu() [2/2]

void blender::compositor::sum_causal_and_non_causal_results_gpu ( Context & context,
const Result & first_causal_input,
const Result & first_non_causal_input,
const Result & second_causal_input,
const Result & second_non_causal_input,
Result & output )
static

◆ sum_color()

float4 blender::compositor::sum_color ( Context & context,
const Result & result )

◆ sum_color_cpu()

float4 blender::compositor::sum_color_cpu ( const Result & result)
static

Definition at line 316 of file parallel_reduction.cc.

References b, parallel_reduce(), result, and sum_color_cpu().

Referenced by sum_color(), and sum_color_cpu().

◆ sum_color_gpu()

float4 blender::compositor::sum_color_gpu ( Context & context,
const Result & result )
static

◆ sum_green()

float blender::compositor::sum_green ( Context & context,
const Result & result )

◆ sum_green_cpu()

float blender::compositor::sum_green_cpu ( const Result & result)
static

Definition at line 167 of file parallel_reduction.cc.

References b, float, parallel_reduce(), result, and sum_green_cpu().

Referenced by sum_green(), and sum_green_cpu().

◆ sum_green_gpu()

float blender::compositor::sum_green_gpu ( Context & context,
const Result & result )
static

◆ sum_green_squared_difference()

◆ sum_green_squared_difference_cpu()

float blender::compositor::sum_green_squared_difference_cpu ( const Result & result,
const float subtrahend )
static

◆ sum_green_squared_difference_gpu()

◆ sum_log_luminance()

float blender::compositor::sum_log_luminance ( Context & context,
const Result & result,
const float3 & luminance_coefficients )

◆ sum_log_luminance_cpu()

float blender::compositor::sum_log_luminance_cpu ( const Result & result,
const float3 & luminance_coefficients )
static

◆ sum_log_luminance_gpu()

float blender::compositor::sum_log_luminance_gpu ( Context & context,
const Result & result,
const float3 & luminance_coefficients )
static

◆ sum_luminance()

◆ sum_luminance_cpu()

float blender::compositor::sum_luminance_cpu ( const Result & result,
const float3 & luminance_coefficients )
static

Definition at line 239 of file parallel_reduction.cc.

References b, float, parallel_reduce(), result, and sum_luminance_cpu().

Referenced by sum_luminance(), and sum_luminance_cpu().

◆ sum_luminance_gpu()

float blender::compositor::sum_luminance_gpu ( Context & context,
const Result & result,
const float3 & luminance_coefficients )
static

◆ sum_luminance_squared_difference()

float blender::compositor::sum_luminance_squared_difference ( Context & context,
const Result & result,
const float3 & luminance_coefficients,
const float subtrahend )

◆ sum_luminance_squared_difference_cpu()

float blender::compositor::sum_luminance_squared_difference_cpu ( const Result & result,
const float3 & luminance_coefficients,
const float subtrahend )
static

◆ sum_luminance_squared_difference_gpu()

float blender::compositor::sum_luminance_squared_difference_gpu ( Context & context,
const Result & result,
const float3 & luminance_coefficients,
const float subtrahend )
static

◆ sum_red()

float blender::compositor::sum_red ( Context & context,
const Result & result )

◆ sum_red_cpu()

float blender::compositor::sum_red_cpu ( const Result & result)
static

Definition at line 133 of file parallel_reduction.cc.

References b, float, parallel_reduce(), result, and sum_red_cpu().

Referenced by sum_red(), and sum_red_cpu().

◆ sum_red_gpu()

float blender::compositor::sum_red_gpu ( Context & context,
const Result & result )
static

◆ sum_red_squared_difference()

float blender::compositor::sum_red_squared_difference ( Context & context,
const Result & result,
const float subtrahend )

◆ sum_red_squared_difference_cpu()

float blender::compositor::sum_red_squared_difference_cpu ( const Result & result,
const float subtrahend )
static

◆ sum_red_squared_difference_gpu()

◆ summed_area_table()

◆ summed_area_table_cpu()

void blender::compositor::summed_area_table_cpu ( Result & input,
Result & output,
SummedAreaTableOperation operation )
static

Definition at line 232 of file summed_area_table.cc.

References input, output, blender::threading::parallel_for(), and size().

Referenced by summed_area_table().

◆ summed_area_table_gpu()

void blender::compositor::summed_area_table_gpu ( Context & context,
Result & input,
Result & output,
SummedAreaTableOperation operation )
static

◆ summed_area_table_sum()

◆ symmetric_separable_blur()

◆ symmetric_separable_blur_variable_size()

void blender::compositor::symmetric_separable_blur_variable_size ( Context & context,
const Result & input,
const Result & radius,
Result & output,
const int weights_resolution = 128,
const int filter_type = R_FILTER_GAUSS )

◆ van_vliet_gaussian_blur()

void blender::compositor::van_vliet_gaussian_blur ( Context & context,
const Result & input,
Result & output,
const float2 & sigma )

◆ vertical_pass() [1/3]

void blender::compositor::vertical_pass ( Context & context,
const Result & original_input,
const Result & horizontal_pass_result,
const Result & radius,
Result & output,
const int weights_resolution,
const int filter_type )
static

◆ vertical_pass() [2/3]

void blender::compositor::vertical_pass ( Context & context,
const Result & original_input,
const Result & horizontal_pass_result,
Result & output,
const float2 & radius,
const int filter_type )
static

Definition at line 206 of file symmetric_separable_blur.cc.

References output, vertical_pass_cpu(), and vertical_pass_gpu().

◆ vertical_pass() [3/3]

void blender::compositor::vertical_pass ( Context & context,
const Result & original_input,
const Result & horizontal_pass_result,
Result & output,
const int distance,
const int falloff_type )
static

◆ vertical_pass_cpu() [1/3]

void blender::compositor::vertical_pass_cpu ( Context & context,
const Result & original_input,
const Result & horizontal_pass_result,
const Result & radius,
Result & output,
const int weights_resolution,
const int filter_type )
static

◆ vertical_pass_cpu() [2/3]

void blender::compositor::vertical_pass_cpu ( Context & context,
const Result & original_input,
const Result & horizontal_pass_result,
Result & output,
const float2 & radius,
const int filter_type )
static

◆ vertical_pass_cpu() [3/3]

void blender::compositor::vertical_pass_cpu ( Context & context,
const Result & original_input,
const Result & horizontal_pass_result,
Result & output,
const int distance,
const int falloff_type )
static

◆ vertical_pass_gpu() [1/3]

◆ vertical_pass_gpu() [2/3]

void blender::compositor::vertical_pass_gpu ( Context & context,
const Result & original_input,
const Result & horizontal_pass_result,
Result & output,
const float2 & radius,
const int filter_type )
static

◆ vertical_pass_gpu() [3/3]

◆ zero_pad_cpu()

void blender::compositor::zero_pad_cpu ( const Result & input,
Result & output,
const int2 size,
const PaddingMethod padding_method )
static

Definition at line 67 of file pad.cc.

References BLI_assert_unreachable, Color, Extend, Float, Float2, input, output, parallel_for(), blender::compositor::Domain::size, size(), and Zero.

Referenced by pad().

◆ zero_pad_gpu()

void blender::compositor::zero_pad_gpu ( Context & context,
const Result & input,
Result & output,
const int2 size,
const PaddingMethod padding_method )
static

Variable Documentation

◆ a0

double blender::compositor::a0 = 1.6797292232361107
inlinestaticconstexpr

◆ a1

double blender::compositor::a1 = 3.7348298269103580
inlinestaticconstexpr

◆ b0

double blender::compositor::b0 = 1.7831906544515104
inlinestaticconstexpr

◆ b1

◆ c0

double blender::compositor::c0 = -0.6802783501806897
inlinestaticconstexpr

◆ c1

double blender::compositor::c1 = -0.2598300478959625
inlinestaticconstexpr

◆ LOG

◆ transformation_tolerance

◆ w0

double blender::compositor::w0 = 0.6318113174569493
inlinestaticconstexpr

◆ w1

double blender::compositor::w1 = 1.9969276832487770
inlinestaticconstexpr