Я хочу применить шейдер к растровому изображению (автономная обработка) с Sharpdx. Я нашел образец на домашней странице SharpDX, чтобы применить эффект к изображению с автономной обработкой. Теперь я хочу применить к нему shader.fx, но не знаю, как это сделать. Может кто-нибудь мне помочь?
Вот фрагмент кода:
// Effect 1 : BitmapSource - take decoded image data and get a BitmapSource from it
var bitmapSourceEffect = new d2.Effects.BitmapSource(d2dContext);
bitmapSourceEffect.WicBitmapSource = formatConverter;
// Effect 2 : GaussianBlur - give the bitmapsource a gaussian blurred effect
var gaussianBlurEffect = new d2.Effects.GaussianBlur(d2dContext);
gaussianBlurEffect.SetInput(0, bitmapSourceEffect.Output, true);
gaussianBlurEffect.StandardDeviation = 5f;
d2dContext.BeginDraw();
d2dContext.DrawImage(gaussianBlurEffect);
d2dContext.EndDraw();
Вот шейдер.fx
vec2 Warp(vec2 Tex)
{
vec2 newPos = Tex;
float c = -81.0/20.0;
float u = Tex.x * 2.0 - 1.0;
float v = Tex.y * 2.0 - 1.0;
newPos.x = c*u/((v*v) + c);
newPos.y = c*v/((u*u) + c);
newPos.x = (newPos.x + 1.0)*0.5;
newPos.y = (newPos.y + 1.0)*0.5;
return newPos;
}
void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
vec2 uv = fragCoord.xy / iResolution.xy;
if (uv.x < 0.5)
{
uv.x = uv.x * 2.0;
fragColor = texture2D(iChannel0, Warp(uv));
}
else
{
uv.x = (uv.x - 0.5) * 2.0;
fragColor = texture2D(iChannel0, Warp(uv));
}
}