Add D3D11 helper for making sampler objects

This commit is contained in:
baldurk
2018-12-10 12:01:11 +00:00
parent 38644934c5
commit 4c3d70b612
5 changed files with 89 additions and 6 deletions
+26
View File
@@ -815,3 +815,29 @@ D3D11ViewCreator::operator ID3D11DepthStencilViewPtr()
CHECK_HR(m_Test->dev->CreateDepthStencilView(m_Res, &desc.dsv, &dsv));
return dsv;
}
D3D11SamplerCreator::D3D11SamplerCreator(D3D11GraphicsTest *test)
{
m_Test = test;
m_Desc.Filter = D3D11_FILTER_MIN_MAG_MIP_LINEAR;
m_Desc.AddressU = D3D11_TEXTURE_ADDRESS_CLAMP;
m_Desc.AddressV = D3D11_TEXTURE_ADDRESS_CLAMP;
m_Desc.AddressW = D3D11_TEXTURE_ADDRESS_CLAMP;
m_Desc.MipLODBias = 0.0f;
m_Desc.MaxAnisotropy = 1;
m_Desc.ComparisonFunc = D3D11_COMPARISON_NEVER;
m_Desc.BorderColor[0] = 1.0f;
m_Desc.BorderColor[1] = 1.0f;
m_Desc.BorderColor[2] = 1.0f;
m_Desc.BorderColor[3] = 1.0f;
m_Desc.MinLOD = -FLT_MAX;
m_Desc.MaxLOD = FLT_MAX;
}
D3D11SamplerCreator::operator ID3D11SamplerStatePtr() const
{
ID3D11SamplerStatePtr samp;
CHECK_HR(m_Test->dev->CreateSamplerState(&m_Desc, &samp));
return samp;
}
+60
View File
@@ -159,6 +159,66 @@ protected:
UINT MiscFlags = 0;
};
class D3D11SamplerCreator
{
public:
D3D11SamplerCreator(D3D11GraphicsTest *test);
D3D11SamplerCreator &AddressU(D3D11_TEXTURE_ADDRESS_MODE addr)
{
m_Desc.AddressU = addr;
return *this;
}
D3D11SamplerCreator &AddressV(D3D11_TEXTURE_ADDRESS_MODE addr)
{
m_Desc.AddressV = addr;
return *this;
}
D3D11SamplerCreator &AddressW(D3D11_TEXTURE_ADDRESS_MODE addr)
{
m_Desc.AddressW = addr;
return *this;
}
D3D11SamplerCreator &Address(D3D11_TEXTURE_ADDRESS_MODE addr)
{
return AddressU(addr).AddressV(addr).AddressW(addr);
}
D3D11SamplerCreator &Filter(D3D11_FILTER filter)
{
m_Desc.Filter = filter;
return *this;
}
D3D11SamplerCreator &LODBias(float bias)
{
m_Desc.MipLODBias = bias;
return *this;
}
D3D11SamplerCreator &Aniso(UINT aniso)
{
m_Desc.MaxAnisotropy = aniso;
return *this;
}
D3D11SamplerCreator &Aniso(D3D11_COMPARISON_FUNC comp)
{
m_Desc.ComparisonFunc = comp;
return *this;
}
operator ID3D11SamplerStatePtr() const;
protected:
D3D11GraphicsTest *m_Test;
D3D11_SAMPLER_DESC m_Desc;
};
enum class ResourceType
{
Buffer,
+1 -3
View File
@@ -91,9 +91,7 @@ float4 main(v2f IN) : SV_Target0
ID3D11RenderTargetViewPtr rtv[NumMips];
ID3D11ShaderResourceViewPtr srv[NumMips];
CD3D11_SAMPLER_DESC sampdesc = CD3D11_SAMPLER_DESC(CD3D11_DEFAULT());
ID3D11SamplerStatePtr samp;
CHECK_HR(dev->CreateSamplerState(&sampdesc, &samp));
ID3D11SamplerStatePtr samp = MakeSampler();
D3D11_VIEWPORT views[NumMips];
+1
View File
@@ -98,6 +98,7 @@ struct D3D11GraphicsTest : public GraphicsTest
return D3D11TextureCreator(this, format, width, height, depth);
}
D3D11SamplerCreator MakeSampler() { return D3D11SamplerCreator(this); }
template <typename T>
D3D11ViewCreator MakeSRV(T res)
{
+1 -3
View File
@@ -74,9 +74,7 @@ float4 main(v2f IN) : SV_Target0
ID3D11VertexShaderPtr vs = CreateVS(vsblob);
ID3D11PixelShaderPtr ps = CreatePS(psblob);
CD3D11_SAMPLER_DESC sampdesc = CD3D11_SAMPLER_DESC(CD3D11_DEFAULT());
ID3D11SamplerStatePtr samp;
CHECK_HR(dev->CreateSamplerState(&sampdesc, &samp));
ID3D11SamplerStatePtr samp = MakeSampler();
ID3D11Texture3DPtr tex = MakeTexture(DXGI_FORMAT_R8_UNORM, 128, 128, 1024).Mips(8).SRV();