I need to create color filters based on RGBA values. It's fine for me to either Core Image or Metal Performance Shaders. Core Image providing some default filters. But I need filters with RGBA color codes. Is it possible to create filters like that?
I tried this, but it's not expected result. I am expecting like Sepia Tone Filter with different colors. (Filter should apply to entire frame)
@interface CustomFilterByColor : CIFilter @property(nonatomic, retain) CIImage *inputImage; @end #import "CustomFilterByColor.h" @implementation CustomFilterByColor -(CIColorKernel*)kernel { static CIColorKernel *kernel = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ kernel = [CIColorKernel kernelWithString: @"kernel vec4 CustomFilter1 ( __sample s ) \ \n { \n if ( s.r + s.g + s.b < 0.1 ) \n \ { return s.rgba = vec4(1.0, 1.0, 0.0, 0.5); } \ \n else \n { return s.rgba; } \n }"]; }); return kernel; } -(CIImage*)outputImage { return [[self kernel] applyWithExtent:_inputImage.extent arguments:@[_inputImage]]; } It's working for me. Getting result image like this

But this is not expected filter. I am expecting just color filters. like

Hope you got my point.
Источник: https://stackoverflow.com/questions/543 ... ance-shade
Мобильная версия