Code Snippet: Clipping Planes in Shader [HLSL]



In the XNA 4.0 we dont have anymore the Fixed function that let us specify a clipping plane. Now we have to do this in shaders =P. In this post i will show how to do this !

The following code shows how to implement ONE clipping plane in Projection Space. (same as the fixed pipeline)

If you want more than one plane, just use the Y,Z,W coordinates from the clipping variable to put the others values. If you want to use the plane in World or View space, just make the “dot” with the position in the right space.

The theory for this is simple. The dot operation evaluates the plane equation and the result give us in what side of the plane the position is. For more info check this.

float4x4 WVP;
float4 clippingPlane;
bool isClip;

Texture diffuse;
sampler DiffuseSampler = sampler_state
{
texture =  ;
magfilter = ANISOTROPIC;
minfilter = ANISOTROPIC;
mipfilter = LINEAR;
AddressU = wrap;
AddressV = wrap;
};

struct VertexShaderInput
{
float3 Position : POSITION0;
float4 texturecoord :  TEXCOORD0;
};

struct VertexShaderOutput
{
float4 Position : POSITION0;
float4 texturecoord :  TEXCOORD0;
float4 clipping :  TEXCOORD1;
};

VertexShaderOutput VertexShaderFunction(VertexShaderInput input)
{
VertexShaderOutput output;
output.Position = mul(float4(input.Position,1), WVP);
output.texturecoord = input.texturecoord;
output.clipping = 0;
float4 clp = output.Position;
output.clipping.x = dot(clp,clippingPlane) ;
return output;
}

float4 PixelShaderFunction(VertexShaderOutput input) : COLOR0
{
if(isClip)
clip(input.clipping.x);

return tex2D(DiffuseSampler, input.texturecoord);
}

technique Technique1
{
pass Pass1
{
VertexShader = compile vs_2_0 VertexShaderFunction();
PixelShader = compile ps_2_0 PixelShaderFunction();
}
}

, , , , , ,

  1. #1 by Brody on 31 de agosto de 2016 - 3:25 pm

    I’m retired

  2. #2 by Free Games download on 31 de agosto de 2016 - 4:28 pm

    Every once inside a while we pick blogs that we read. Listed beneath would be the most recent internet sites that we pick out

  3. #3 by corevly on 31 de agosto de 2016 - 5:09 pm

    2012年にロッキード・マーティン社にその技術を売却した。 下家には佐々木健介クリソツで笑顔がナイスな左利きのマッチョな兄貴。 [url=http://morimajo.org/60830/office2016_1/index.html]office 激安[/url]
    非常に似た振り易いドライバーなので、スイングは変えずにしっかり打てる! アイアンはやはり8本全部を使うつもりだ!当然、ショートコースを想定してティーは2個持って行くつもりだ。 タイでのこの支援は、インフラ整備の一環となるだろう。
    [url=http://gau.xsrv.jp/60825/office2016_1/index.html]office2016 ダウンロード[/url] すべてのクラ゗ゕントコンピュータはローカルエリゕネットワーク上にあります。 JPexamはあなたが100% で70-411試験解答に合格させるの保証することができてまたあなたのために一年の無料の試験の練習問題と解答の更新サービス提供して、もし試験に失敗したら、弊社はすぐ全額で返金を保証いたします。
    [url=http://www.osaka-daishin.com/gesspe/office2016_1/index.html]office2016 ライセンス認証[/url]
    「操作は正常に完了しました」と表示されたら再起動すると再インストールも必要なく簡単にエラーが修復されました。 8mのスライスラインをガツンと入れて、  ナイスパー。 [url=http://redbrass-10×10.sakura.ne.jp/60822/office2013_1/index.html]office2010[/url]
    要するにこのURLのページって先に私が試した「ディスクの管理」画面です。 この試験では、ID とアクセス、高可用性、サーバー インフラストラクチャなど、Windows Server 2012 サービスの計画、構成、および管理について検証します。
    [url=http://www.mediacom-21.net/60830/windows10_1/index.html]windows10[/url] シャワーを浴びた後でエアコンのスイッチをいれてからは汗が引いてきた。 2人で何語かわからん会話をし終えた頃にはこのタワーが組まれてましたさ。
    [url=http://atlaas.eu/wp-content/60809/windows10_1/index.html]windows10 認証[/url]

  4. #4 by SEO in Pakistan on 31 de agosto de 2016 - 6:55 pm

    Fantastic blog you have here but I was wanting to know if you knew of any message boards that cover the same topics discussed here? I’d really like to be a part of group where I can get comments from other knowledgeable people that share the same interest. If you have any suggestions, please let me know. Many thanks!

  5. #5 by SEO Company in Pakistan on 31 de agosto de 2016 - 7:16 pm

    I like what you guys are up too. Such smart work and reporting! Keep up the excellent works guys I have incorporated you guys to my blogroll. I think it’ll improve the value of my website :)

  6. #6 by handmade swords on 31 de agosto de 2016 - 7:38 pm

    Great communication with seller.

1 111 112 113
(não será publicado)