0
私は、ステンシルバッファを使用してアプリケーションでマウスピッキングを実装しました。いくつかのIntel GPUでマルチサンプルテクスチャからのロードが失敗する
Texture2DMS<uint2> depthStencilTexture : register(t0);
cbuffer ReadDepthInput : register(b2)
{
int2 readPosition;
}
// Produces vector3(x, y, stencilValue)
float4 main() : SV_Target0
{
uint2 res = depthStencilTexture.Load(readPosition, 1);
float stencil = res.y;
// Scale the result from integers to 0..1
stencil /= 255.0f;
return float4(float(readPosition.x)/65535.0f, float(readPosition.y)/65535.0f, stencil, 0);
}
をコードは、NVIDIAとAMDのGPU上で動作インテル(Intelのアイリスに550
を動作するコードは、インテルハスウェルGPU上で失敗し、:ここで
は、マウスの下に値を読み込み、ピクセルシェーダですHD 5000、インテルHD 4600)。 Texture2DMS.Loadはただ0を返します。何が間違っているかもしれませんか?
更新: 8x MSAAでのみ発生します。影響を受けるインテルGPUであっても、4倍にすることは問題ありません。
ドライバは、 '' CheckFormatSupport''とその形式の '' CheckMultisampleQualityLevels''を使った8x MSAAを使って '' D3D11_FORMAT_SUPPORT_MULTISAMPLE_LOAD''をサポートしていることを確認しましたか? –
@ChuckWalbournはい、私のアプリは起動時に両方を呼び出し、MSAAを無効にしたり、レベルを下げたりします。 – Soonts