I want to create a GPUImageTwoInputFilter with custom shader file in xamarin.iOS. I am using GPUImage component.
var stillCamera = new GPUImageStillCamera ();
var filter1 = new GPUImageTwoInputFilter();
stillCamera.AddTarget(filter1);
var internalSourcePicture1 = new GPUImagePicture(UIImage.FromFile("image.png").CGImage,true);
internalSourcePicture1.AddTarget(filter1);
internalSourcePicture1.ProcessImage();
but don't know how do we pass shader file in GPUImageTwoInputFilter
Add your custom fragment shader ( .fsh
) to your Xamarin.iOS
app bundle as a build type of BundleResource
.
Then load it via GPUImageFilter.FromFragmentShaderFile
:
Note: Do not include the file extension or you will get a "Failed to load vertex shader" in the app output/log
var filter = GPUImageFilter.FromFragmentShaderFile ("StackOverflowShader");
or embed the fragment shader as a string:
fragShaderString = @"
varying highp vec2 textureCoordinate;
varying highp vec2 textureCoordinate2;
uniform sampler2D inputImageTexture;
uniform sampler2D inputImageTexture2;
void main()
{
lowp vec4 base = texture2D(inputImageTexture, textureCoordinate);
lowp vec4 overlayer = texture2D(inputImageTexture2, textureCoordinate2);
gl_FragColor = vec4(min(overlayer.rgb * base.a, base.rgb * overlayer.a) + overlayer.rgb * (1.0 - base.a) + base.rgb * (1.0 - overlayer.a), 1.0);
}
";
And load it via FromFragmentShaderString
:
var filter = GPUImageFilter.FromFragmentShaderString(fragShaderString);
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.