Silverlight は初めてで、ポリゴンと組み合わせたエフェクトで小さな問題が発生しました。シェーダーのレンダリングがエッジの外側ではなく、エッジの内側のみになるようにしたいと考えています。ご覧のとおり、ブラシはこれを行っていますが、シェーダーの出力ではありません。これを修正する解決策を知っている人はいますか?ピクセル シェーダーの出力を取得し、それをポリゴンの塗りつぶしプロパティにプッシュする方法はありますか?
結果: http://img64.imageshack.us/img64/2831/achieve.jpg
これは私のxamlコードです:
<Polygon Name="TestPolygonWithEffect" Stroke="Black" StrokeThickness="1">
<Polygon.Points>
<Point X="100" Y="0"></Point>
<Point X="0" Y="200"></Point>
<Point X="200" Y="200"></Point>
</Polygon.Points>
<Polygon.Fill>
<ImageBrush ImageSource="Roof.jpg"></ImageBrush>
</Polygon.Fill>
<Polygon.Effect>
<f:TestShaderEffect>
<f:TestShaderEffect.Overlay>
<ImageBrush ImageSource="OverlayTest.png"></ImageBrush>
</f:TestShaderEffect.Overlay>
</f:TestShaderEffect>
</Polygon.Effect>
</Polygon>
これはHLSLの私のシェーダーです
sampler2D input : register(s0);
sampler2D overlay : register(s1);
float4 main(float2 uv : TEXCOORD) : COLOR
{
float4 returnColor = tex2D(overlay, uv);
if(returnColor.a == 0.0f)
return tex2D(input, uv);
else
return returnColor;
}