| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- #include "CmD3D11RenderSystem.h"
- #include "CmRenderSystem.h"
- #include "CmException.h"
- namespace CamelotEngine
- {
- D3D11Device& D3D11RenderSystem::getPrimaryDevice()
- {
- CM_EXCEPT(NotImplementedException, "Not implemented");
- }
- void D3D11RenderSystem::determineFSAASettings(UINT32 fsaa, const String& fsaaHint, DXGI_FORMAT format, DXGI_SAMPLE_DESC* outFSAASettings)
- {
- CM_EXCEPT(NotImplementedException, "Not implemented");
- /*
- bool ok = false;
- bool qualityHint = fsaaHint.find("Quality") != String::npos;
- size_t origFSAA = fsaa;
- bool tryCSAA = false;
- // NVIDIA, prefer CSAA if available for 8+
- // it would be tempting to use getCapabilities()->getVendor() == GPU_NVIDIA but
- // if this is the first window, caps will not be initialised yet
-
- if (mActiveD3DDriver->getAdapterIdentifier().VendorId == 0x10DE &&
- fsaa >= 8)
- {
- tryCSAA = true;
- }
- while (!ok)
- {
- // Deal with special cases
- if (tryCSAA)
- {
- // see http://developer.nvidia.com/object/coverage-sampled-aa.html
- switch(fsaa)
- {
- case 8:
- if (qualityHint)
- {
- outFSAASettings->Count = 8;
- outFSAASettings->Quality = 8;
- }
- else
- {
- outFSAASettings->Count = 4;
- outFSAASettings->Quality = 8;
- }
- break;
- case 16:
- if (qualityHint)
- {
- outFSAASettings->Count = 8;
- outFSAASettings->Quality = 16;
- }
- else
- {
- outFSAASettings->Count = 4;
- outFSAASettings->Quality = 16;
- }
- break;
- }
- }
- else // !CSAA
- {
- outFSAASettings->Count = fsaa == 0 ? 1 : fsaa;
- outFSAASettings->Quality = 0;
- }
- HRESULT hr;
- UINT outQuality;
- hr = mDevice->CheckMultisampleQualityLevels(
- format,
- outFSAASettings->Count,
- &outQuality);
- if (SUCCEEDED(hr) && (!tryCSAA || outQuality > outFSAASettings->Quality))
- {
- ok = true;
- }
- else
- {
- // downgrade
- if (tryCSAA && fsaa == 8)
- {
- // for CSAA, we'll try downgrading with quality mode at all samples.
- // then try without quality, then drop CSAA
- if (qualityHint)
- {
- // drop quality first
- qualityHint = false;
- }
- else
- {
- // drop CSAA entirely
- tryCSAA = false;
- }
- // return to original requested samples
- fsaa = static_cast<UINT32>(origFSAA);
- }
- else
- {
- // drop samples
- --fsaa;
- if (fsaa == 1)
- {
- // ran out of options, no FSAA
- fsaa = 0;
- ok = true;
- }
- }
- }
- } // while !ok
- */
- }
- }
|