MCPcopy Create free account
hub / github.com/Aleksoid1978/VideoRenderer / SetHDR10ShaderParams

Method SetHDR10ShaderParams

Source/DX11VideoProcessor.cpp:907–952  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

905}
906
907void CDX11VideoProcessor::SetHDR10ShaderParams(float masteringMinLuminanceNits, float masteringMaxLuminanceNits,
908 float maxCLL, float maxFALL,
909 float displayMaxNits, int toneMappingType)
910{
911 if (masteringMinLuminanceNits <= 0.f) masteringMinLuminanceNits = 0.f;
912 if (masteringMaxLuminanceNits <= 10.f) masteringMaxLuminanceNits = 1000.f;
913 if (maxCLL <= 10.f) maxCLL = masteringMaxLuminanceNits;
914 if (maxFALL <= 1.f) maxFALL = maxCLL;
915 if (displayMaxNits < 100.f || displayMaxNits > 10000.f) displayMaxNits = 1000.f;
916 if (toneMappingType < 1 || toneMappingType > 6) toneMappingType = 1;
917
918 const HDRParamsConstantBuffer_t cbuffer = {
919 masteringMinLuminanceNits, masteringMaxLuminanceNits,
920 maxCLL, maxFALL,
921 displayMaxNits, static_cast<UINT>(toneMappingType)
922 };
923
924 if (!m_pPSHDR10ToneMapping) {
925 EXECUTE_ASSERT(S_OK == CreatePShaderFromResource(&m_pPSHDR10ToneMapping, IDF_PS_11_HDR10_TONEMAP));
926 DLogIf(m_pPSHDR10ToneMapping, L"CDX11VideoProcessor::SetHDR10ShaderParams() : m_pPSHDR10ToneMapping({}) created", m_iHdrLocalToneMappingType);
927
928 UpdatePostScaleTexures();
929 }
930
931 if (m_pHDR10ToneMappingConstants) {
932 if (memcmp(&m_lastHDRParamsConstantBuffer, &cbuffer, sizeof(cbuffer)) == 0) {
933 return;
934 }
935
936 m_pDeviceContext->UpdateSubresource(m_pHDR10ToneMappingConstants, 0, nullptr, &cbuffer, 0, 0);
937 } else {
938 D3D11_BUFFER_DESC BufferDesc = {
939 .ByteWidth = sizeof(cbuffer),
940 .Usage = D3D11_USAGE_DEFAULT,
941 .BindFlags = D3D11_BIND_CONSTANT_BUFFER,
942 };
943 D3D11_SUBRESOURCE_DATA InitData = { &cbuffer, 0, 0 };
944 HRESULT result = m_pDevice->CreateBuffer(&BufferDesc, &InitData, &m_pHDR10ToneMappingConstants);
945 if (FAILED(result)) {
946 DLog(L"SetHDR10ShaderLuminanceParams() failed to create m_pHDR10ToneMappingConstants. Error: {}", result);
947 }
948 EXECUTE_ASSERT(S_OK == result);
949 }
950
951 m_lastHDRParamsConstantBuffer = cbuffer;
952}
953
954void CDX11VideoProcessor::SetDolbyVisionDynamicParams()
955{

Callers

nothing calls this directly

Calls 1

DLogFunction · 0.85

Tested by

no test coverage detected