bate's blog

調べたこと実装したことなどを取りとめもなく書きます。

射影テクスチャ

お仕事で使いそうなので実装テストしてみた。
tex2DProjが使えないので自分でwで割ることになる。

カメラから四角形にテクスチャを投影。

//--------------------------------------------------------------------------------------
// Vertex Shader
//--------------------------------------------------------------------------------------
PS_INPUT VS(VS_INPUT input)
{
	PS_INPUT output = (PS_INPUT)0;
	output.Pos = mul(input.Pos, World);
	output.Pos = mul(output.Pos, View);
	output.Pos = mul(output.Pos, Projection);
	output.Tex = output.Pos;
	
	return output;
}


//--------------------------------------------------------------------------------------
// Pixel Shader
//--------------------------------------------------------------------------------------
float4 PS(PS_INPUT input) : SV_Target
{
	float2 projTexCoord = float2(input.Tex.x/input.Tex.w*0.5f+0.5f, -input.Tex.y/input.Tex.w*0.5f+0.5f);
	projTexCoord = 5.0f*projTexCoord;// 模様を細かくするために
	return Texture0.Sample(SamplerLinear0, projTexCoord);
}