ピクセル シェーダーを作成しようとしています。Texture.Sample が使用されていないループ構成で使用できるので、Texture.SampleCmpLevelZero を使用したいと思います。
テクスチャを構築し、Texture.Sample で正常にサンプリングできますが、SampleCmpLevelZero への切り替えは最初の数フレームで機能し、その後空白になり、まれに断続的に正しくレンダリングされます。
私のシーンは静的です (テクスチャ データも) - 1 つのクワッドをレンダリングしていますが、カメラの動きは一切ありません - PS シェーダー関数の 1 行を変更するだけで、これを確実に再現できます。
誰もこれを見たことがありますか?
ありがとう
SamplerState sampPointClamp
{
Filter = MIN_MAG_MIP_POINT;
AddressU = Clamp;
AddressV = Clamp;
};
SamplerComparisonState ShadowSampler
{
// sampler state
Filter = MIN_MAG_MIP_POINT;
AddressU = Clamp;
AddressV = Clamp;
// sampler comparison state
ComparisonFunc = LESS;
//ComparisonFilter = COMPARISON_MIN_MAG_MIP_POINT;
};
texture2D tex;
//on the fly full screen quad
PS_IN VS(uint id : SV_VertexID)
{
PS_IN ret;
ret.uv = float2( id & 1, (id & 2) >> 1 );
ret.pos = float4( ret.uv * float2( 2.0f, -2.0f ) + float2( -1.0f, 1.0f), 0.0f, 1.0f );
return ret;
}
float4 PS( PS_IN input ) : SV_Target
{
//return float4(tex.SampleCmpLevelZero(ShadowSampler, input.uv, 0), 0, 0, 1); // Does not work properly
return float4(tex.Sample(sampPointClamp, input.uv).x, 0, 0, 1); // Works fine
}