mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-29 21:30:53 +00:00
Add D3D11 helper for making sampler objects
This commit is contained in:
@@ -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;
|
||||
}
|
||||
@@ -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,
|
||||
|
||||
@@ -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];
|
||||
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user