User Defined Filter

Filter

RIF_IMAGE_FILTER_USER_DEFINED

Description

An arbitrary user defined filter. Can be used to add missing image processing tools to the library.

Parameters

Parameter

Type

Input/Output

Description

code

string

input

User defined code.

declarations

string

input

User defined declarations.

Usage Example

rif_image_filter filter = nullptr;
rifContextCreateImageFilter(nullptr, RIF_IMAGE_FILTER_USER_DEFINED, &filter);
const rif_char declarations[] =
                  "__constant vec4 const_v4[] = { (vec4)(0.0f, 0.0f, 0.0f, 0.0f) };"
                  "vec4 func() { return const_v4[0]; }";
const rif_char code[] =
                  "int2 coord;"
                  "GET_COORD_OR_RETURN(coord, GET_BUFFER_SIZE(outBuf));"
                  "vec4 pixel = ReadPixelTyped(inBuf, coord.x, coord.y);"
                  "pixel.xy += convert_vec2(coord.xy) * 0.01f;"
                  "pixel      += func()     ;"
                  "WritePixelTyped(outBuf, coord.x, coord.y, pixel);";

rifImageFilterSetParameterString(filter, "code", code);
rifImageFilterSetParameterString(filter, "declarations", declarations);
rifCommandQueueAttachImageFilter(queue, filter, inputImage, outputImage);
rifContextExecuteCommandQueue(context, queue, nullptr, nullptr, nullptr);

Results

Input image

Output image