From 4d3f6f1b421dda208b937f2ac78657c6753efccd Mon Sep 17 00:00:00 2001 From: Ariel Bernal Date: Tue, 15 Feb 2022 08:41:57 -0800 Subject: [PATCH] NVIDIA Image Scaling v1.0.2 - Added multiple performance optimizations Moved edge-map the interpolation and weight computation before the directional filter response generation Increased detection ratio by a factor of 2 - Fixed host and compute shader compilation warnings - Adjusted sharpness minimum value and normalization - Updated copyright notice --- NIS/NIS_Config.h | 278 ++++++++++---------- NIS/NIS_Main.glsl | 2 +- NIS/NIS_Main.hlsl | 4 +- NIS/NIS_Scaler.h | 347 ++++++++++++------------- README.md | 26 +- docs/NIS_SDK_Programming_Guide.pdf | Bin 499788 -> 507470 bytes licence.txt | 2 +- samples/DX11/include/AppRenderer.h | 2 +- samples/DX11/include/BilinearUpscale.h | 2 +- samples/DX11/include/DXUtilities.h | 2 +- samples/DX11/include/DeviceResources.h | 2 +- samples/DX11/include/NVScaler.h | 2 +- samples/DX11/include/NVSharpen.h | 2 +- samples/DX11/include/UIRenderer.h | 2 +- samples/DX11/src/AppRenderer.cpp | 2 +- samples/DX11/src/BilinearUpscale.cpp | 2 +- samples/DX11/src/DeviceResources.cpp | 2 +- samples/DX11/src/NVScaler.cpp | 2 +- samples/DX11/src/NVSharpen.cpp | 2 +- samples/DX11/src/Sample.cpp | 2 +- samples/DX11/src/UIRenderer.cpp | 2 +- samples/DX12/include/AppRenderer.h | 2 +- samples/DX12/include/BilinearUpscale.h | 2 +- samples/DX12/include/DXUtilities.h | 2 +- samples/DX12/include/DeviceResources.h | 2 +- samples/DX12/include/NVScaler.h | 2 +- samples/DX12/include/NVSharpen.h | 2 +- samples/DX12/include/UIRenderer.h | 2 +- samples/DX12/src/AppRenderer.cpp | 2 +- samples/DX12/src/BilinearUpscale.cpp | 2 +- samples/DX12/src/DeviceResources.cpp | 7 +- samples/DX12/src/NVScaler.cpp | 4 +- samples/DX12/src/NVSharpen.cpp | 4 +- samples/DX12/src/Sample.cpp | 2 +- samples/DX12/src/UIRenderer.cpp | 2 +- samples/DX12/src/bilinearUpscale.hlsl | 2 +- samples/VK/include/AppRenderer.h | 2 +- samples/VK/include/DeviceResources.h | 2 +- samples/VK/include/NVScaler.h | 2 +- samples/VK/include/NVSharpen.h | 2 +- samples/VK/include/UIRenderer.h | 2 +- samples/VK/include/VKUtilities.h | 2 +- samples/VK/src/AppRenderer.cpp | 2 +- samples/VK/src/DeviceResources.cpp | 2 +- samples/VK/src/NVScaler.cpp | 2 +- samples/VK/src/NVSharpen.cpp | 2 +- samples/VK/src/Sample.cpp | 2 +- samples/VK/src/UIRenderer.cpp | 2 +- samples/common/Image.cpp | 2 +- samples/common/Image.h | 2 +- samples/common/Utilities.h | 2 +- third_party_licenses.txt | 23 +- 52 files changed, 382 insertions(+), 397 deletions(-) diff --git a/NIS/NIS_Config.h b/NIS/NIS_Config.h index fa022b6..eba9394 100644 --- a/NIS/NIS_Config.h +++ b/NIS/NIS_Config.h @@ -1,6 +1,6 @@ // The MIT License(MIT) // -// Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright(c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files(the "Software"), to deal in @@ -86,7 +86,8 @@ enum class NISGPUArchitecture : uint32_t { NVIDIA_Generic = 0, AMD_Generic = 1, - Intel_Generic = 2 + Intel_Generic = 2, + NVIDIA_Generic_fp16 = 3 }; struct NISOptimizer @@ -104,6 +105,8 @@ struct NISOptimizer switch (gpuArch) { case NISGPUArchitecture::NVIDIA_Generic: return 32; + case NISGPUArchitecture::NVIDIA_Generic_fp16: + return 32; case NISGPUArchitecture::AMD_Generic: return 32; case NISGPUArchitecture::Intel_Generic: @@ -117,6 +120,8 @@ struct NISOptimizer switch (gpuArch) { case NISGPUArchitecture::NVIDIA_Generic: return isUpscaling ? 24 : 32; + case NISGPUArchitecture::NVIDIA_Generic_fp16: + return isUpscaling ? 32 : 32; case NISGPUArchitecture::AMD_Generic: return isUpscaling ? 24 : 32; case NISGPUArchitecture::Intel_Generic: @@ -130,6 +135,8 @@ struct NISOptimizer switch (gpuArch) { case NISGPUArchitecture::NVIDIA_Generic: return 128; + case NISGPUArchitecture::NVIDIA_Generic_fp16: + return 128; case NISGPUArchitecture::AMD_Generic: return 256; case NISGPUArchitecture::Intel_Generic: @@ -160,7 +167,7 @@ inline bool NVScalerUpdateConfig(NISConfig& config, float sharpness, const float MinScale = (sharpen_slider >= 0.0f) ? 1.25f : 1.0f; const float LimitScale = (sharpen_slider >= 0.0f) ? 1.25f : 1.0f; - float kDetectRatio = 1127.f / 1024.f; + float kDetectRatio = 2 * 1127.f / 1024.f; // Params for SDR float kDetectThres = 64.0f / 1024.0f; @@ -170,7 +177,7 @@ inline bool NVScalerUpdateConfig(NISConfig& config, float sharpness, float kSharpStartY = 0.45f; float kSharpEndY = 0.9f; float kSharpStrengthMin = std::max(0.0f, 0.4f + sharpen_slider * MinScale * 1.2f); - float kSharpStrengthMax = 1.6f + sharpen_slider * 1.8f; + float kSharpStrengthMax = 1.6f + sharpen_slider * MaxScale * 1.8f; float kSharpLimitMin = std::max(0.1f, 0.14f + sharpen_slider * LimitScale * 0.32f); float kSharpLimitMax = 0.5f + sharpen_slider * LimitScale * 0.6f; @@ -222,20 +229,21 @@ inline bool NVScalerUpdateConfig(NISConfig& config, float sharpness, config.kDstNormY = 1.f / outputTextureHeight; config.kScaleX = config.kInputViewportWidth / float(config.kOutputViewportWidth); config.kScaleY = config.kInputViewportHeight / float(config.kOutputViewportHeight); - if (config.kScaleX < 0.5f || config.kScaleX > 1.f || config.kScaleY < 0.5f || config.kScaleY > 1.f) - return false; config.kDetectRatio = kDetectRatio; config.kDetectThres = kDetectThres; config.kMinContrastRatio = kMinContrastRatio; config.kRatioNorm = kRatioNorm; config.kContrastBoost = 1.0f; - config.kEps = 1.0f; + config.kEps = 1.0f / 255.0f; config.kSharpStartY = kSharpStartY; config.kSharpScaleY = kSharpScaleY; config.kSharpStrengthMin = kSharpStrengthMin; config.kSharpStrengthScale = kSharpStrengthScale; config.kSharpLimitMin = kSharpLimitMin; config.kSharpLimitScale = kSharpLimitScale; + + if (config.kScaleX < 0.5f || config.kScaleX > 1.f || config.kScaleY < 0.5f || config.kScaleY > 1.f) + return false; return true; } @@ -258,137 +266,137 @@ namespace { constexpr size_t kFilterSize = 8; constexpr float coef_scale[kPhaseCount][kFilterSize] = { - {0.0, 0.0, 1.0000, 0.0, 0.0, 0.0, 0.0, 0.0}, - {0.0029, -0.0127, 1.0000, 0.0132, -0.0034, 0.0, 0.0, 0.0}, - {0.0063, -0.0249, 0.9985, 0.0269, -0.0068, 0.0, 0.0, 0.0}, - {0.0088, -0.0361, 0.9956, 0.0415, -0.0103, 0.0005, 0.0, 0.0}, - {0.0117, -0.0474, 0.9932, 0.0562, -0.0142, 0.0005, 0.0, 0.0}, - {0.0142, -0.0576, 0.9897, 0.0713, -0.0181, 0.0005, 0.0, 0.0}, - {0.0166, -0.0674, 0.9844, 0.0874, -0.0220, 0.0010, 0.0, 0.0}, - {0.0186, -0.0762, 0.9785, 0.1040, -0.0264, 0.0015, 0.0, 0.0}, - {0.0205, -0.0850, 0.9727, 0.1206, -0.0308, 0.0020, 0.0, 0.0}, - {0.0225, -0.0928, 0.9648, 0.1382, -0.0352, 0.0024, 0.0, 0.0}, - {0.0239, -0.1006, 0.9575, 0.1558, -0.0396, 0.0029, 0.0, 0.0}, - {0.0254, -0.1074, 0.9487, 0.1738, -0.0439, 0.0034, 0.0, 0.0}, - {0.0264, -0.1138, 0.9390, 0.1929, -0.0488, 0.0044, 0.0, 0.0}, - {0.0278, -0.1191, 0.9282, 0.2119, -0.0537, 0.0049, 0.0, 0.0}, - {0.0288, -0.1245, 0.9170, 0.2310, -0.0581, 0.0059, 0.0, 0.0}, - {0.0293, -0.1294, 0.9058, 0.2510, -0.0630, 0.0063, 0.0, 0.0}, - {0.0303, -0.1333, 0.8926, 0.2710, -0.0679, 0.0073, 0.0, 0.0}, - {0.0308, -0.1367, 0.8789, 0.2915, -0.0728, 0.0083, 0.0, 0.0}, - {0.0308, -0.1401, 0.8657, 0.3120, -0.0776, 0.0093, 0.0, 0.0}, - {0.0313, -0.1426, 0.8506, 0.3330, -0.0825, 0.0103, 0.0, 0.0}, - {0.0313, -0.1445, 0.8354, 0.3540, -0.0874, 0.0112, 0.0, 0.0}, - {0.0313, -0.1460, 0.8193, 0.3755, -0.0923, 0.0122, 0.0, 0.0}, - {0.0313, -0.1470, 0.8022, 0.3965, -0.0967, 0.0137, 0.0, 0.0}, - {0.0308, -0.1479, 0.7856, 0.4185, -0.1016, 0.0146, 0.0, 0.0}, - {0.0303, -0.1479, 0.7681, 0.4399, -0.1060, 0.0156, 0.0, 0.0}, - {0.0298, -0.1479, 0.7505, 0.4614, -0.1104, 0.0166, 0.0, 0.0}, - {0.0293, -0.1470, 0.7314, 0.4829, -0.1147, 0.0181, 0.0, 0.0}, - {0.0288, -0.1460, 0.7119, 0.5049, -0.1187, 0.0190, 0.0, 0.0}, - {0.0278, -0.1445, 0.6929, 0.5264, -0.1226, 0.0200, 0.0, 0.0}, - {0.0273, -0.1431, 0.6724, 0.5479, -0.1260, 0.0215, 0.0, 0.0}, - {0.0264, -0.1411, 0.6528, 0.5693, -0.1299, 0.0225, 0.0, 0.0}, - {0.0254, -0.1387, 0.6323, 0.5903, -0.1328, 0.0234, 0.0, 0.0}, - {0.0244, -0.1357, 0.6113, 0.6113, -0.1357, 0.0244, 0.0, 0.0}, - {0.0234, -0.1328, 0.5903, 0.6323, -0.1387, 0.0254, 0.0, 0.0}, - {0.0225, -0.1299, 0.5693, 0.6528, -0.1411, 0.0264, 0.0, 0.0}, - {0.0215, -0.1260, 0.5479, 0.6724, -0.1431, 0.0273, 0.0, 0.0}, - {0.0200, -0.1226, 0.5264, 0.6929, -0.1445, 0.0278, 0.0, 0.0}, - {0.0190, -0.1187, 0.5049, 0.7119, -0.1460, 0.0288, 0.0, 0.0}, - {0.0181, -0.1147, 0.4829, 0.7314, -0.1470, 0.0293, 0.0, 0.0}, - {0.0166, -0.1104, 0.4614, 0.7505, -0.1479, 0.0298, 0.0, 0.0}, - {0.0156, -0.1060, 0.4399, 0.7681, -0.1479, 0.0303, 0.0, 0.0}, - {0.0146, -0.1016, 0.4185, 0.7856, -0.1479, 0.0308, 0.0, 0.0}, - {0.0137, -0.0967, 0.3965, 0.8022, -0.1470, 0.0313, 0.0, 0.0}, - {0.0122, -0.0923, 0.3755, 0.8193, -0.1460, 0.0313, 0.0, 0.0}, - {0.0112, -0.0874, 0.3540, 0.8354, -0.1445, 0.0313, 0.0, 0.0}, - {0.0103, -0.0825, 0.3330, 0.8506, -0.1426, 0.0313, 0.0, 0.0}, - {0.0093, -0.0776, 0.3120, 0.8657, -0.1401, 0.0308, 0.0, 0.0}, - {0.0083, -0.0728, 0.2915, 0.8789, -0.1367, 0.0308, 0.0, 0.0}, - {0.0073, -0.0679, 0.2710, 0.8926, -0.1333, 0.0303, 0.0, 0.0}, - {0.0063, -0.0630, 0.2510, 0.9058, -0.1294, 0.0293, 0.0, 0.0}, - {0.0059, -0.0581, 0.2310, 0.9170, -0.1245, 0.0288, 0.0, 0.0}, - {0.0049, -0.0537, 0.2119, 0.9282, -0.1191, 0.0278, 0.0, 0.0}, - {0.0044, -0.0488, 0.1929, 0.9390, -0.1138, 0.0264, 0.0, 0.0}, - {0.0034, -0.0439, 0.1738, 0.9487, -0.1074, 0.0254, 0.0, 0.0}, - {0.0029, -0.0396, 0.1558, 0.9575, -0.1006, 0.0239, 0.0, 0.0}, - {0.0024, -0.0352, 0.1382, 0.9648, -0.0928, 0.0225, 0.0, 0.0}, - {0.0020, -0.0308, 0.1206, 0.9727, -0.0850, 0.0205, 0.0, 0.0}, - {0.0015, -0.0264, 0.1040, 0.9785, -0.0762, 0.0186, 0.0, 0.0}, - {0.0010, -0.0220, 0.0874, 0.9844, -0.0674, 0.0166, 0.0, 0.0}, - {0.0005, -0.0181, 0.0713, 0.9897, -0.0576, 0.0142, 0.0, 0.0}, - {0.0005, -0.0142, 0.0562, 0.9932, -0.0474, 0.0117, 0.0, 0.0}, - {0.0005, -0.0103, 0.0415, 0.9956, -0.0361, 0.0088, 0.0, 0.0}, - {0.0, -0.0068, 0.0269, 0.9985, -0.0249, 0.0063, 0.0, 0.0}, - {0.0, -0.0034, 0.0132, 1.0000, -0.0127, 0.0029, 0.0, 0.0} + {0.0f, 0.0f, 1.0000f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f}, + {0.0029f, -0.0127f, 1.0000f, 0.0132f, -0.0034f, 0.0f, 0.0f, 0.0f}, + {0.0063f, -0.0249f, 0.9985f, 0.0269f, -0.0068f, 0.0f, 0.0f, 0.0f}, + {0.0088f, -0.0361f, 0.9956f, 0.0415f, -0.0103f, 0.0005f, 0.0f, 0.0f}, + {0.0117f, -0.0474f, 0.9932f, 0.0562f, -0.0142f, 0.0005f, 0.0f, 0.0f}, + {0.0142f, -0.0576f, 0.9897f, 0.0713f, -0.0181f, 0.0005f, 0.0f, 0.0f}, + {0.0166f, -0.0674f, 0.9844f, 0.0874f, -0.0220f, 0.0010f, 0.0f, 0.0f}, + {0.0186f, -0.0762f, 0.9785f, 0.1040f, -0.0264f, 0.0015f, 0.0f, 0.0f}, + {0.0205f, -0.0850f, 0.9727f, 0.1206f, -0.0308f, 0.0020f, 0.0f, 0.0f}, + {0.0225f, -0.0928f, 0.9648f, 0.1382f, -0.0352f, 0.0024f, 0.0f, 0.0f}, + {0.0239f, -0.1006f, 0.9575f, 0.1558f, -0.0396f, 0.0029f, 0.0f, 0.0f}, + {0.0254f, -0.1074f, 0.9487f, 0.1738f, -0.0439f, 0.0034f, 0.0f, 0.0f}, + {0.0264f, -0.1138f, 0.9390f, 0.1929f, -0.0488f, 0.0044f, 0.0f, 0.0f}, + {0.0278f, -0.1191f, 0.9282f, 0.2119f, -0.0537f, 0.0049f, 0.0f, 0.0f}, + {0.0288f, -0.1245f, 0.9170f, 0.2310f, -0.0581f, 0.0059f, 0.0f, 0.0f}, + {0.0293f, -0.1294f, 0.9058f, 0.2510f, -0.0630f, 0.0063f, 0.0f, 0.0f}, + {0.0303f, -0.1333f, 0.8926f, 0.2710f, -0.0679f, 0.0073f, 0.0f, 0.0f}, + {0.0308f, -0.1367f, 0.8789f, 0.2915f, -0.0728f, 0.0083f, 0.0f, 0.0f}, + {0.0308f, -0.1401f, 0.8657f, 0.3120f, -0.0776f, 0.0093f, 0.0f, 0.0f}, + {0.0313f, -0.1426f, 0.8506f, 0.3330f, -0.0825f, 0.0103f, 0.0f, 0.0f}, + {0.0313f, -0.1445f, 0.8354f, 0.3540f, -0.0874f, 0.0112f, 0.0f, 0.0f}, + {0.0313f, -0.1460f, 0.8193f, 0.3755f, -0.0923f, 0.0122f, 0.0f, 0.0f}, + {0.0313f, -0.1470f, 0.8022f, 0.3965f, -0.0967f, 0.0137f, 0.0f, 0.0f}, + {0.0308f, -0.1479f, 0.7856f, 0.4185f, -0.1016f, 0.0146f, 0.0f, 0.0f}, + {0.0303f, -0.1479f, 0.7681f, 0.4399f, -0.1060f, 0.0156f, 0.0f, 0.0f}, + {0.0298f, -0.1479f, 0.7505f, 0.4614f, -0.1104f, 0.0166f, 0.0f, 0.0f}, + {0.0293f, -0.1470f, 0.7314f, 0.4829f, -0.1147f, 0.0181f, 0.0f, 0.0f}, + {0.0288f, -0.1460f, 0.7119f, 0.5049f, -0.1187f, 0.0190f, 0.0f, 0.0f}, + {0.0278f, -0.1445f, 0.6929f, 0.5264f, -0.1226f, 0.0200f, 0.0f, 0.0f}, + {0.0273f, -0.1431f, 0.6724f, 0.5479f, -0.1260f, 0.0215f, 0.0f, 0.0f}, + {0.0264f, -0.1411f, 0.6528f, 0.5693f, -0.1299f, 0.0225f, 0.0f, 0.0f}, + {0.0254f, -0.1387f, 0.6323f, 0.5903f, -0.1328f, 0.0234f, 0.0f, 0.0f}, + {0.0244f, -0.1357f, 0.6113f, 0.6113f, -0.1357f, 0.0244f, 0.0f, 0.0f}, + {0.0234f, -0.1328f, 0.5903f, 0.6323f, -0.1387f, 0.0254f, 0.0f, 0.0f}, + {0.0225f, -0.1299f, 0.5693f, 0.6528f, -0.1411f, 0.0264f, 0.0f, 0.0f}, + {0.0215f, -0.1260f, 0.5479f, 0.6724f, -0.1431f, 0.0273f, 0.0f, 0.0f}, + {0.0200f, -0.1226f, 0.5264f, 0.6929f, -0.1445f, 0.0278f, 0.0f, 0.0f}, + {0.0190f, -0.1187f, 0.5049f, 0.7119f, -0.1460f, 0.0288f, 0.0f, 0.0f}, + {0.0181f, -0.1147f, 0.4829f, 0.7314f, -0.1470f, 0.0293f, 0.0f, 0.0f}, + {0.0166f, -0.1104f, 0.4614f, 0.7505f, -0.1479f, 0.0298f, 0.0f, 0.0f}, + {0.0156f, -0.1060f, 0.4399f, 0.7681f, -0.1479f, 0.0303f, 0.0f, 0.0f}, + {0.0146f, -0.1016f, 0.4185f, 0.7856f, -0.1479f, 0.0308f, 0.0f, 0.0f}, + {0.0137f, -0.0967f, 0.3965f, 0.8022f, -0.1470f, 0.0313f, 0.0f, 0.0f}, + {0.0122f, -0.0923f, 0.3755f, 0.8193f, -0.1460f, 0.0313f, 0.0f, 0.0f}, + {0.0112f, -0.0874f, 0.3540f, 0.8354f, -0.1445f, 0.0313f, 0.0f, 0.0f}, + {0.0103f, -0.0825f, 0.3330f, 0.8506f, -0.1426f, 0.0313f, 0.0f, 0.0f}, + {0.0093f, -0.0776f, 0.3120f, 0.8657f, -0.1401f, 0.0308f, 0.0f, 0.0f}, + {0.0083f, -0.0728f, 0.2915f, 0.8789f, -0.1367f, 0.0308f, 0.0f, 0.0f}, + {0.0073f, -0.0679f, 0.2710f, 0.8926f, -0.1333f, 0.0303f, 0.0f, 0.0f}, + {0.0063f, -0.0630f, 0.2510f, 0.9058f, -0.1294f, 0.0293f, 0.0f, 0.0f}, + {0.0059f, -0.0581f, 0.2310f, 0.9170f, -0.1245f, 0.0288f, 0.0f, 0.0f}, + {0.0049f, -0.0537f, 0.2119f, 0.9282f, -0.1191f, 0.0278f, 0.0f, 0.0f}, + {0.0044f, -0.0488f, 0.1929f, 0.9390f, -0.1138f, 0.0264f, 0.0f, 0.0f}, + {0.0034f, -0.0439f, 0.1738f, 0.9487f, -0.1074f, 0.0254f, 0.0f, 0.0f}, + {0.0029f, -0.0396f, 0.1558f, 0.9575f, -0.1006f, 0.0239f, 0.0f, 0.0f}, + {0.0024f, -0.0352f, 0.1382f, 0.9648f, -0.0928f, 0.0225f, 0.0f, 0.0f}, + {0.0020f, -0.0308f, 0.1206f, 0.9727f, -0.0850f, 0.0205f, 0.0f, 0.0f}, + {0.0015f, -0.0264f, 0.1040f, 0.9785f, -0.0762f, 0.0186f, 0.0f, 0.0f}, + {0.0010f, -0.0220f, 0.0874f, 0.9844f, -0.0674f, 0.0166f, 0.0f, 0.0f}, + {0.0005f, -0.0181f, 0.0713f, 0.9897f, -0.0576f, 0.0142f, 0.0f, 0.0f}, + {0.0005f, -0.0142f, 0.0562f, 0.9932f, -0.0474f, 0.0117f, 0.0f, 0.0f}, + {0.0005f, -0.0103f, 0.0415f, 0.9956f, -0.0361f, 0.0088f, 0.0f, 0.0f}, + {0.0f, -0.0068f, 0.0269f, 0.9985f, -0.0249f, 0.0063f, 0.0f, 0.0f}, + {0.0f, -0.0034f, 0.0132f, 1.0000f, -0.0127f, 0.0029f, 0.0f, 0.0f} }; constexpr float coef_usm[kPhaseCount][kFilterSize] = { - {0, -0.6001, 1.2002, -0.6001, 0, 0, 0, 0}, - {0.0029, -0.6084, 1.1987, -0.5903, -0.0029, 0, 0, 0}, - {0.0049, -0.6147, 1.1958, -0.5791, -0.0068, 0.0005, 0, 0}, - {0.0073, -0.6196, 1.1890, -0.5659, -0.0103, 0, 0, 0}, - {0.0093, -0.6235, 1.1802, -0.5513, -0.0151, 0, 0, 0}, - {0.0112, -0.6265, 1.1699, -0.5352, -0.0195, 0.0005, 0, 0}, - {0.0122, -0.6270, 1.1582, -0.5181, -0.0259, 0.0005, 0, 0}, - {0.0142, -0.6284, 1.1455, -0.5005, -0.0317, 0.0005, 0, 0}, - {0.0156, -0.6265, 1.1274, -0.4790, -0.0386, 0.0005, 0, 0}, - {0.0166, -0.6235, 1.1089, -0.4570, -0.0454, 0.0010, 0, 0}, - {0.0176, -0.6187, 1.0879, -0.4346, -0.0532, 0.0010, 0, 0}, - {0.0181, -0.6138, 1.0659, -0.4102, -0.0615, 0.0015, 0, 0}, - {0.0190, -0.6069, 1.0405, -0.3843, -0.0698, 0.0015, 0, 0}, - {0.0195, -0.6006, 1.0161, -0.3574, -0.0796, 0.0020, 0, 0}, - {0.0200, -0.5928, 0.9893, -0.3286, -0.0898, 0.0024, 0, 0}, - {0.0200, -0.5820, 0.9580, -0.2988, -0.1001, 0.0029, 0, 0}, - {0.0200, -0.5728, 0.9292, -0.2690, -0.1104, 0.0034, 0, 0}, - {0.0200, -0.5620, 0.8975, -0.2368, -0.1226, 0.0039, 0, 0}, - {0.0205, -0.5498, 0.8643, -0.2046, -0.1343, 0.0044, 0, 0}, - {0.0200, -0.5371, 0.8301, -0.1709, -0.1465, 0.0049, 0, 0}, - {0.0195, -0.5239, 0.7944, -0.1367, -0.1587, 0.0054, 0, 0}, - {0.0195, -0.5107, 0.7598, -0.1021, -0.1724, 0.0059, 0, 0}, - {0.0190, -0.4966, 0.7231, -0.0649, -0.1865, 0.0063, 0, 0}, - {0.0186, -0.4819, 0.6846, -0.0288, -0.1997, 0.0068, 0, 0}, - {0.0186, -0.4668, 0.6460, 0.0093, -0.2144, 0.0073, 0, 0}, - {0.0176, -0.4507, 0.6055, 0.0479, -0.2290, 0.0083, 0, 0}, - {0.0171, -0.4370, 0.5693, 0.0859, -0.2446, 0.0088, 0, 0}, - {0.0161, -0.4199, 0.5283, 0.1255, -0.2598, 0.0098, 0, 0}, - {0.0161, -0.4048, 0.4883, 0.1655, -0.2754, 0.0103, 0, 0}, - {0.0151, -0.3887, 0.4497, 0.2041, -0.2910, 0.0107, 0, 0}, - {0.0142, -0.3711, 0.4072, 0.2446, -0.3066, 0.0117, 0, 0}, - {0.0137, -0.3555, 0.3672, 0.2852, -0.3228, 0.0122, 0, 0}, - {0.0132, -0.3394, 0.3262, 0.3262, -0.3394, 0.0132, 0, 0}, - {0.0122, -0.3228, 0.2852, 0.3672, -0.3555, 0.0137, 0, 0}, - {0.0117, -0.3066, 0.2446, 0.4072, -0.3711, 0.0142, 0, 0}, - {0.0107, -0.2910, 0.2041, 0.4497, -0.3887, 0.0151, 0, 0}, - {0.0103, -0.2754, 0.1655, 0.4883, -0.4048, 0.0161, 0, 0}, - {0.0098, -0.2598, 0.1255, 0.5283, -0.4199, 0.0161, 0, 0}, - {0.0088, -0.2446, 0.0859, 0.5693, -0.4370, 0.0171, 0, 0}, - {0.0083, -0.2290, 0.0479, 0.6055, -0.4507, 0.0176, 0, 0}, - {0.0073, -0.2144, 0.0093, 0.6460, -0.4668, 0.0186, 0, 0}, - {0.0068, -0.1997, -0.0288, 0.6846, -0.4819, 0.0186, 0, 0}, - {0.0063, -0.1865, -0.0649, 0.7231, -0.4966, 0.0190, 0, 0}, - {0.0059, -0.1724, -0.1021, 0.7598, -0.5107, 0.0195, 0, 0}, - {0.0054, -0.1587, -0.1367, 0.7944, -0.5239, 0.0195, 0, 0}, - {0.0049, -0.1465, -0.1709, 0.8301, -0.5371, 0.0200, 0, 0}, - {0.0044, -0.1343, -0.2046, 0.8643, -0.5498, 0.0205, 0, 0}, - {0.0039, -0.1226, -0.2368, 0.8975, -0.5620, 0.0200, 0, 0}, - {0.0034, -0.1104, -0.2690, 0.9292, -0.5728, 0.0200, 0, 0}, - {0.0029, -0.1001, -0.2988, 0.9580, -0.5820, 0.0200, 0, 0}, - {0.0024, -0.0898, -0.3286, 0.9893, -0.5928, 0.0200, 0, 0}, - {0.0020, -0.0796, -0.3574, 1.0161, -0.6006, 0.0195, 0, 0}, - {0.0015, -0.0698, -0.3843, 1.0405, -0.6069, 0.0190, 0, 0}, - {0.0015, -0.0615, -0.4102, 1.0659, -0.6138, 0.0181, 0, 0}, - {0.0010, -0.0532, -0.4346, 1.0879, -0.6187, 0.0176, 0, 0}, - {0.0010, -0.0454, -0.4570, 1.1089, -0.6235, 0.0166, 0, 0}, - {0.0005, -0.0386, -0.4790, 1.1274, -0.6265, 0.0156, 0, 0}, - {0.0005, -0.0317, -0.5005, 1.1455, -0.6284, 0.0142, 0, 0}, - {0.0005, -0.0259, -0.5181, 1.1582, -0.6270, 0.0122, 0, 0}, - {0.0005, -0.0195, -0.5352, 1.1699, -0.6265, 0.0112, 0, 0}, - {0, -0.0151, -0.5513, 1.1802, -0.6235, 0.0093, 0, 0}, - {0, -0.0103, -0.5659, 1.1890, -0.6196, 0.0073, 0, 0}, - {0.0005, -0.0068, -0.5791, 1.1958, -0.6147, 0.0049, 0, 0}, - {0, -0.0029, -0.5903, 1.1987, -0.6084, 0.0029, 0, 0} + {0.0f, -0.6001f, 1.2002f, -0.6001f, 0.0f, 0.0f, 0.0f, 0.0f}, + {0.0029f, -0.6084f, 1.1987f, -0.5903f, -0.0029f, 0.0f, 0.0f, 0.0f}, + {0.0049f, -0.6147f, 1.1958f, -0.5791f, -0.0068f, 0.0005f, 0.0f, 0.0f}, + {0.0073f, -0.6196f, 1.1890f, -0.5659f, -0.0103f, 0.0f, 0.0f, 0.0f}, + {0.0093f, -0.6235f, 1.1802f, -0.5513f, -0.0151f, 0.0f, 0.0f, 0.0f}, + {0.0112f, -0.6265f, 1.1699f, -0.5352f, -0.0195f, 0.0005f, 0.0f, 0.0f}, + {0.0122f, -0.6270f, 1.1582f, -0.5181f, -0.0259f, 0.0005f, 0.0f, 0.0f}, + {0.0142f, -0.6284f, 1.1455f, -0.5005f, -0.0317f, 0.0005f, 0.0f, 0.0f}, + {0.0156f, -0.6265f, 1.1274f, -0.4790f, -0.0386f, 0.0005f, 0.0f, 0.0f}, + {0.0166f, -0.6235f, 1.1089f, -0.4570f, -0.0454f, 0.0010f, 0.0f, 0.0f}, + {0.0176f, -0.6187f, 1.0879f, -0.4346f, -0.0532f, 0.0010f, 0.0f, 0.0f}, + {0.0181f, -0.6138f, 1.0659f, -0.4102f, -0.0615f, 0.0015f, 0.0f, 0.0f}, + {0.0190f, -0.6069f, 1.0405f, -0.3843f, -0.0698f, 0.0015f, 0.0f, 0.0f}, + {0.0195f, -0.6006f, 1.0161f, -0.3574f, -0.0796f, 0.0020f, 0.0f, 0.0f}, + {0.0200f, -0.5928f, 0.9893f, -0.3286f, -0.0898f, 0.0024f, 0.0f, 0.0f}, + {0.0200f, -0.5820f, 0.9580f, -0.2988f, -0.1001f, 0.0029f, 0.0f, 0.0f}, + {0.0200f, -0.5728f, 0.9292f, -0.2690f, -0.1104f, 0.0034f, 0.0f, 0.0f}, + {0.0200f, -0.5620f, 0.8975f, -0.2368f, -0.1226f, 0.0039f, 0.0f, 0.0f}, + {0.0205f, -0.5498f, 0.8643f, -0.2046f, -0.1343f, 0.0044f, 0.0f, 0.0f}, + {0.0200f, -0.5371f, 0.8301f, -0.1709f, -0.1465f, 0.0049f, 0.0f, 0.0f}, + {0.0195f, -0.5239f, 0.7944f, -0.1367f, -0.1587f, 0.0054f, 0.0f, 0.0f}, + {0.0195f, -0.5107f, 0.7598f, -0.1021f, -0.1724f, 0.0059f, 0.0f, 0.0f}, + {0.0190f, -0.4966f, 0.7231f, -0.0649f, -0.1865f, 0.0063f, 0.0f, 0.0f}, + {0.0186f, -0.4819f, 0.6846f, -0.0288f, -0.1997f, 0.0068f, 0.0f, 0.0f}, + {0.0186f, -0.4668f, 0.6460f, 0.0093f, -0.2144f, 0.0073f, 0.0f, 0.0f}, + {0.0176f, -0.4507f, 0.6055f, 0.0479f, -0.2290f, 0.0083f, 0.0f, 0.0f}, + {0.0171f, -0.4370f, 0.5693f, 0.0859f, -0.2446f, 0.0088f, 0.0f, 0.0f}, + {0.0161f, -0.4199f, 0.5283f, 0.1255f, -0.2598f, 0.0098f, 0.0f, 0.0f}, + {0.0161f, -0.4048f, 0.4883f, 0.1655f, -0.2754f, 0.0103f, 0.0f, 0.0f}, + {0.0151f, -0.3887f, 0.4497f, 0.2041f, -0.2910f, 0.0107f, 0.0f, 0.0f}, + {0.0142f, -0.3711f, 0.4072f, 0.2446f, -0.3066f, 0.0117f, 0.0f, 0.0f}, + {0.0137f, -0.3555f, 0.3672f, 0.2852f, -0.3228f, 0.0122f, 0.0f, 0.0f}, + {0.0132f, -0.3394f, 0.3262f, 0.3262f, -0.3394f, 0.0132f, 0.0f, 0.0f}, + {0.0122f, -0.3228f, 0.2852f, 0.3672f, -0.3555f, 0.0137f, 0.0f, 0.0f}, + {0.0117f, -0.3066f, 0.2446f, 0.4072f, -0.3711f, 0.0142f, 0.0f, 0.0f}, + {0.0107f, -0.2910f, 0.2041f, 0.4497f, -0.3887f, 0.0151f, 0.0f, 0.0f}, + {0.0103f, -0.2754f, 0.1655f, 0.4883f, -0.4048f, 0.0161f, 0.0f, 0.0f}, + {0.0098f, -0.2598f, 0.1255f, 0.5283f, -0.4199f, 0.0161f, 0.0f, 0.0f}, + {0.0088f, -0.2446f, 0.0859f, 0.5693f, -0.4370f, 0.0171f, 0.0f, 0.0f}, + {0.0083f, -0.2290f, 0.0479f, 0.6055f, -0.4507f, 0.0176f, 0.0f, 0.0f}, + {0.0073f, -0.2144f, 0.0093f, 0.6460f, -0.4668f, 0.0186f, 0.0f, 0.0f}, + {0.0068f, -0.1997f, -0.0288f, 0.6846f, -0.4819f, 0.0186f, 0.0f, 0.0f}, + {0.0063f, -0.1865f, -0.0649f, 0.7231f, -0.4966f, 0.0190f, 0.0f, 0.0f}, + {0.0059f, -0.1724f, -0.1021f, 0.7598f, -0.5107f, 0.0195f, 0.0f, 0.0f}, + {0.0054f, -0.1587f, -0.1367f, 0.7944f, -0.5239f, 0.0195f, 0.0f, 0.0f}, + {0.0049f, -0.1465f, -0.1709f, 0.8301f, -0.5371f, 0.0200f, 0.0f, 0.0f}, + {0.0044f, -0.1343f, -0.2046f, 0.8643f, -0.5498f, 0.0205f, 0.0f, 0.0f}, + {0.0039f, -0.1226f, -0.2368f, 0.8975f, -0.5620f, 0.0200f, 0.0f, 0.0f}, + {0.0034f, -0.1104f, -0.2690f, 0.9292f, -0.5728f, 0.0200f, 0.0f, 0.0f}, + {0.0029f, -0.1001f, -0.2988f, 0.9580f, -0.5820f, 0.0200f, 0.0f, 0.0f}, + {0.0024f, -0.0898f, -0.3286f, 0.9893f, -0.5928f, 0.0200f, 0.0f, 0.0f}, + {0.0020f, -0.0796f, -0.3574f, 1.0161f, -0.6006f, 0.0195f, 0.0f, 0.0f}, + {0.0015f, -0.0698f, -0.3843f, 1.0405f, -0.6069f, 0.0190f, 0.0f, 0.0f}, + {0.0015f, -0.0615f, -0.4102f, 1.0659f, -0.6138f, 0.0181f, 0.0f, 0.0f}, + {0.0010f, -0.0532f, -0.4346f, 1.0879f, -0.6187f, 0.0176f, 0.0f, 0.0f}, + {0.0010f, -0.0454f, -0.4570f, 1.1089f, -0.6235f, 0.0166f, 0.0f, 0.0f}, + {0.0005f, -0.0386f, -0.4790f, 1.1274f, -0.6265f, 0.0156f, 0.0f, 0.0f}, + {0.0005f, -0.0317f, -0.5005f, 1.1455f, -0.6284f, 0.0142f, 0.0f, 0.0f}, + {0.0005f, -0.0259f, -0.5181f, 1.1582f, -0.6270f, 0.0122f, 0.0f, 0.0f}, + {0.0005f, -0.0195f, -0.5352f, 1.1699f, -0.6265f, 0.0112f, 0.0f, 0.0f}, + {0.0f, -0.0151f, -0.5513f, 1.1802f, -0.6235f, 0.0093f, 0.0f, 0.0f}, + {0.0f, -0.0103f, -0.5659f, 1.1890f, -0.6196f, 0.0073f, 0.0f, 0.0f}, + {0.0005f, -0.0068f, -0.5791f, 1.1958f, -0.6147f, 0.0049f, 0.0f, 0.0f}, + {0.0f, -0.0029f, -0.5903f, 1.1987f, -0.6084f, 0.0029f, 0.0f, 0.0f} }; constexpr uint16_t coef_scale_fp16[kPhaseCount][kFilterSize] = { diff --git a/NIS/NIS_Main.glsl b/NIS/NIS_Main.glsl index b280e1c..0fdf4fb 100644 --- a/NIS/NIS_Main.glsl +++ b/NIS/NIS_Main.glsl @@ -1,6 +1,6 @@ // The MIT License(MIT) // -// Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright(c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files(the "Software"), to deal in diff --git a/NIS/NIS_Main.hlsl b/NIS/NIS_Main.hlsl index aa34c77..f881a17 100644 --- a/NIS/NIS_Main.hlsl +++ b/NIS/NIS_Main.hlsl @@ -1,6 +1,6 @@ // The MIT License(MIT) // -// Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright(c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files(the "Software"), to deal in @@ -79,7 +79,7 @@ NIS_BINDING(0) cbuffer cb : register(b0) NIS_BINDING(1) SamplerState samplerLinearClamp : register(s0); NIS_BINDING(2) Texture2D in_texture : register(t0); -NIS_BINDING(3) RWTexture2D out_texture : register(u0); +NIS_BINDING(3) RWTexture2D out_texture : register(u0); #if NIS_SCALER NIS_BINDING(4) Texture2D coef_scaler : register(t1); NIS_BINDING(5) Texture2D coef_usm : register(t2); diff --git a/NIS/NIS_Scaler.h b/NIS/NIS_Scaler.h index 5d51b4f..8d519c0 100644 --- a/NIS/NIS_Scaler.h +++ b/NIS/NIS_Scaler.h @@ -1,6 +1,6 @@ // The MIT License(MIT) // -// Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright(c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files(the "Software"), to deal in @@ -20,7 +20,7 @@ // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. //--------------------------------------------------------------------------------- -// NVIDIA Image Scaling SDK - v1.0 +// NVIDIA Image Scaling SDK - v1.0.2 //--------------------------------------------------------------------------------- // The NVIDIA Image Scaling SDK provides a single spatial scaling and sharpening algorithm // for cross-platform support. The scaling algorithm uses a 6-tap scaling filter combined @@ -154,6 +154,7 @@ #define NVI2 int2 #define NVU uint #define NVU2 uint2 +#define NVB bool #if NIS_USE_HALF_PRECISION #if NIS_HLSL_6_2 #define NVH float16_t @@ -194,6 +195,7 @@ #define NVI2 ivec2 #define NVU uint #define NVU2 uvec2 +#define NVB bool #if NIS_USE_HALF_PRECISION #define NVH float16_t #define NVH2 f16vec2 @@ -264,41 +266,26 @@ NVF4 GetEdgeMap(NVF p[5][5], NVI i, NVI j) NVF e_0_90 = 0; NVF e_45_135 = 0; - if ((g_0_90_max + g_45_135_max) != 0) + if (g_0_90_max + g_45_135_max == 0) { - e_0_90 = g_0_90_max / (g_0_90_max + g_45_135_max); - e_0_90 = min(e_0_90, 1.0f); - e_45_135 = 1.0f - e_0_90; + return NVF4(0, 0, 0, 0); } - NVF e = ((g_0_90_max > (g_0_90_min * kDetectRatio)) && (g_0_90_max > kDetectThres) && (g_0_90_max > g_45_135_min)) ? 1.f : 0.f; - NVF edge_0 = (g_0_90_max == g_0) ? e : 0.f; - NVF edge_90 = (g_0_90_max == g_0) ? 0.f : e; + e_0_90 = min(g_0_90_max / (g_0_90_max + g_45_135_max), 1.0f); + e_45_135 = 1.0f - e_0_90; - e = ((g_45_135_max > (g_45_135_min * kDetectRatio)) && (g_45_135_max > kDetectThres) && (g_45_135_max > g_0_90_min)) ? 1.f : 0.f; - NVF edge_45 = (g_45_135_max == g_45) ? e : 0.f; - NVF edge_135 = (g_45_135_max == g_45) ? 0.f : e; + NVB c_0_90 = (g_0_90_max > (g_0_90_min * kDetectRatio)) && (g_0_90_max > kDetectThres) && (g_0_90_max > g_45_135_min); + NVB c_45_135 = (g_45_135_max > (g_45_135_min * kDetectRatio)) && (g_45_135_max > kDetectThres) && (g_45_135_max > g_0_90_min); + NVB c_g_0_90 = g_0_90_max == g_0; + NVB c_g_45_135 = g_45_135_max == g_45; - NVF weight_0 = 0.f; - NVF weight_90 = 0.f; - NVF weight_45 = 0.f; - NVF weight_135 = 0.f; - if ((edge_0 + edge_90 + edge_45 + edge_135) >= 2.0f) - { - weight_0 = (edge_0 == 1.0f) ? e_0_90 : 0.f; - weight_90 = (edge_0 == 1.0f) ? 0.f : e_0_90; - - weight_45 = (edge_45 == 1.0f) ? e_45_135 : 0.f; - weight_135 = (edge_45 == 1.0f) ? 0.f : e_45_135; - } - else if ((edge_0 + edge_90 + edge_45 + edge_135) >= 1.0f) - { - weight_0 = edge_0; - weight_90 = edge_90; - weight_45 = edge_45; - weight_135 = edge_135; - } + NVF f_e_0_90 = (c_0_90 && c_45_135) ? e_0_90 : 1.0f; + NVF f_e_45_135 = (c_0_90 && c_45_135) ? e_45_135 : 1.0f; + NVF weight_0 = (c_0_90 && c_g_0_90) ? f_e_0_90 : 0.0f; + NVF weight_90 = (c_0_90 && !c_g_0_90) ? f_e_0_90 : 0.0f; + NVF weight_45 = (c_45_135 && c_g_45_135) ? f_e_45_135 : 0.0f; + NVF weight_135 = (c_45_135 && !c_g_45_135) ? f_e_45_135 : 0.0f; return NVF4(weight_0, weight_90, weight_45, weight_135); } @@ -339,7 +326,7 @@ void LoadFilterBanksSh(NVI i0, NVI di) { // The work is spread over (kPhaseCount * 2) threads for (NVI i = i0; i < kPhaseCount * 2; i += di) { - NVI phase = i / 2; + NVI phase = i >> 1; NVI vIdx = i & 1; NVH4 v = NVH4(NVTEX_LOAD(coef_scaler, NVI2(vIdx, phase))); @@ -366,7 +353,7 @@ void LoadFilterBanksSh(NVI i0, NVI di) { NVF CalcLTI(NVF p0, NVF p1, NVF p2, NVF p3, NVF p4, NVF p5, NVI phase_index) { - const bool selector = (phase_index <= kPhaseCount / 2); + const NVB selector = (phase_index <= kPhaseCount / 2); NVF sel = selector ? p0 : p3; const NVF a_min = min(min(p1, p2), sel); const NVF a_max = max(max(p1, p2), sel); @@ -444,120 +431,122 @@ NVF FilterNormal(const NVF p[6][6], NVI phase_x_frac_int, NVI phase_y_frac_int) return h_acc; } -NVF4 GetDirFilters(NVF p[6][6], NVF phase_x_frac, NVF phase_y_frac, NVI phase_x_frac_int, NVI phase_y_frac_int) +NVF AddDirFilters(NVF p[6][6], NVF phase_x_frac, NVF phase_y_frac, NVI phase_x_frac_int, NVI phase_y_frac_int, NVF4 w) { - NVF4 f; - // 0 deg filter - NVF interp0Deg[6]; + NVF f = 0; + if (w.x > 0.0f) { - NIS_UNROLL - for (NVI i = 0; i < 6; ++i) + // 0 deg filter + NVF interp0Deg[6]; { - interp0Deg[i] = lerp(p[i][2], p[i][3], phase_x_frac); + NIS_UNROLL + for (NVI i = 0; i < 6; ++i) + { + interp0Deg[i] = lerp(p[i][2], p[i][3], phase_x_frac); + } } + f += EvalPoly6(interp0Deg, phase_y_frac_int) * w.x; } - - f.x = EvalPoly6(interp0Deg, phase_y_frac_int); - - // 90 deg filter - NVF interp90Deg[6]; + if (w.y > 0.0f) { - NIS_UNROLL - for (NVI i = 0; i < 6; ++i) + // 90 deg filter + NVF interp90Deg[6]; { - interp90Deg[i] = lerp(p[2][i], p[3][i], phase_y_frac); + NIS_UNROLL + for (NVI i = 0; i < 6; ++i) + { + interp90Deg[i] = lerp(p[2][i], p[3][i], phase_y_frac); + } } - } - - f.y = EvalPoly6(interp90Deg, phase_x_frac_int); - //45 deg filter - NVF pphase_b45; - pphase_b45 = 0.5f + 0.5f * (phase_x_frac - phase_y_frac); - - NVF temp_interp45Deg[7]; - temp_interp45Deg[1] = lerp(p[2][1], p[1][2], pphase_b45); - temp_interp45Deg[3] = lerp(p[3][2], p[2][3], pphase_b45); - temp_interp45Deg[5] = lerp(p[4][3], p[3][4], pphase_b45); - { - pphase_b45 = pphase_b45 - 0.5f; - NVF a = (pphase_b45 >= 0.f) ? p[0][2] : p[2][0]; - NVF b = (pphase_b45 >= 0.f) ? p[1][3] : p[3][1]; - NVF c = (pphase_b45 >= 0.f) ? p[2][4] : p[4][2]; - NVF d = (pphase_b45 >= 0.f) ? p[3][5] : p[5][3]; - temp_interp45Deg[0] = lerp(p[1][1], a, abs(pphase_b45)); - temp_interp45Deg[2] = lerp(p[2][2], b, abs(pphase_b45)); - temp_interp45Deg[4] = lerp(p[3][3], c, abs(pphase_b45)); - temp_interp45Deg[6] = lerp(p[4][4], d, abs(pphase_b45)); + f += EvalPoly6(interp90Deg, phase_x_frac_int) * w.y; } + if (w.z > 0.0f) + { + //45 deg filter + NVF pphase_b45 = 0.5f + 0.5f * (phase_x_frac - phase_y_frac); + NVF temp_interp45Deg[7]; + temp_interp45Deg[1] = lerp(p[2][1], p[1][2], pphase_b45); + temp_interp45Deg[3] = lerp(p[3][2], p[2][3], pphase_b45); + temp_interp45Deg[5] = lerp(p[4][3], p[3][4], pphase_b45); + { + pphase_b45 = pphase_b45 - 0.5f; + NVF a = (pphase_b45 >= 0.f) ? p[0][2] : p[2][0]; + NVF b = (pphase_b45 >= 0.f) ? p[1][3] : p[3][1]; + NVF c = (pphase_b45 >= 0.f) ? p[2][4] : p[4][2]; + NVF d = (pphase_b45 >= 0.f) ? p[3][5] : p[5][3]; + temp_interp45Deg[0] = lerp(p[1][1], a, abs(pphase_b45)); + temp_interp45Deg[2] = lerp(p[2][2], b, abs(pphase_b45)); + temp_interp45Deg[4] = lerp(p[3][3], c, abs(pphase_b45)); + temp_interp45Deg[6] = lerp(p[4][4], d, abs(pphase_b45)); + } - NVF interp45Deg[6]; - NVF pphase_p45 = phase_x_frac + phase_y_frac; - if (pphase_p45 >= 1) - { - NIS_UNROLL - for (NVI i = 0; i < 6; i++) + NVF interp45Deg[6]; + NVF pphase_p45 = phase_x_frac + phase_y_frac; + if (pphase_p45 >= 1) { - interp45Deg[i] = temp_interp45Deg[i + 1]; + NIS_UNROLL + for (NVI i = 0; i < 6; i++) + { + interp45Deg[i] = temp_interp45Deg[i + 1]; + } + pphase_p45 = pphase_p45 - 1; } - pphase_p45 = pphase_p45 - 1; - } - else - { - NIS_UNROLL - for (NVI i = 0; i < 6; i++) + else { - interp45Deg[i] = temp_interp45Deg[i]; + NIS_UNROLL + for (NVI i = 0; i < 6; i++) + { + interp45Deg[i] = temp_interp45Deg[i]; + } } - } - - f.z = EvalPoly6(interp45Deg, NVI(pphase_p45 * 64)); - - //135 deg filter - NVF pphase_b135; - pphase_b135 = 0.5f * (phase_x_frac + phase_y_frac); - NVF temp_interp135Deg[7]; - - temp_interp135Deg[1] = lerp(p[3][1], p[4][2], pphase_b135); - temp_interp135Deg[3] = lerp(p[2][2], p[3][3], pphase_b135); - temp_interp135Deg[5] = lerp(p[1][3], p[2][4], pphase_b135); - - { - pphase_b135 = pphase_b135 - 0.5f; - NVF a = (pphase_b135 >= 0.f) ? p[5][2] : p[3][0]; - NVF b = (pphase_b135 >= 0.f) ? p[4][3] : p[2][1]; - NVF c = (pphase_b135 >= 0.f) ? p[3][4] : p[1][2]; - NVF d = (pphase_b135 >= 0.f) ? p[2][5] : p[0][3]; - temp_interp135Deg[0] = lerp(p[4][1], a, abs(pphase_b135)); - temp_interp135Deg[2] = lerp(p[3][2], b, abs(pphase_b135)); - temp_interp135Deg[4] = lerp(p[2][3], c, abs(pphase_b135)); - temp_interp135Deg[6] = lerp(p[1][4], d, abs(pphase_b135)); + f += EvalPoly6(interp45Deg, NVI(pphase_p45 * 64)) * w.z; } + if (w.w > 0.0f) + { + //135 deg filter + NVF pphase_b135 = 0.5f * (phase_x_frac + phase_y_frac); + NVF temp_interp135Deg[7]; + temp_interp135Deg[1] = lerp(p[3][1], p[4][2], pphase_b135); + temp_interp135Deg[3] = lerp(p[2][2], p[3][3], pphase_b135); + temp_interp135Deg[5] = lerp(p[1][3], p[2][4], pphase_b135); + { + pphase_b135 = pphase_b135 - 0.5f; + NVF a = (pphase_b135 >= 0.f) ? p[5][2] : p[3][0]; + NVF b = (pphase_b135 >= 0.f) ? p[4][3] : p[2][1]; + NVF c = (pphase_b135 >= 0.f) ? p[3][4] : p[1][2]; + NVF d = (pphase_b135 >= 0.f) ? p[2][5] : p[0][3]; + temp_interp135Deg[0] = lerp(p[4][1], a, abs(pphase_b135)); + temp_interp135Deg[2] = lerp(p[3][2], b, abs(pphase_b135)); + temp_interp135Deg[4] = lerp(p[2][3], c, abs(pphase_b135)); + temp_interp135Deg[6] = lerp(p[1][4], d, abs(pphase_b135)); + } - NVF interp135Deg[6]; - NVF pphase_p135 = 1 + (phase_x_frac - phase_y_frac); - if (pphase_p135 >= 1) - { - NIS_UNROLL - for (NVI i = 0; i < 6; ++i) + NVF interp135Deg[6]; + NVF pphase_p135 = 1 + (phase_x_frac - phase_y_frac); + if (pphase_p135 >= 1) { - interp135Deg[i] = temp_interp135Deg[i + 1]; + NIS_UNROLL + for (NVI i = 0; i < 6; ++i) + { + interp135Deg[i] = temp_interp135Deg[i + 1]; + } + pphase_p135 = pphase_p135 - 1; } - pphase_p135 = pphase_p135 - 1; - } - else - { - NIS_UNROLL - for (NVI i = 0; i < 6; ++i) + else { - interp135Deg[i] = temp_interp135Deg[i]; + NIS_UNROLL + for (NVI i = 0; i < 6; ++i) + { + interp135Deg[i] = temp_interp135Deg[i]; + } } - } - f.w = EvalPoly6(interp135Deg, NVI(pphase_p135 * 64)); + f += EvalPoly6(interp135Deg, NVI(pphase_p135 * 64)) * w.w; + } return f; } @@ -593,10 +582,10 @@ void NVScaler(NVU2 blockIdx, NVU threadIdx) // we use texture gather to get extra support necessary // to compute 2x2 edge map outputs too { - for (NVI i = NVI(threadIdx) * 2; i < numTilePixels / 2; i += NIS_THREAD_GROUP_SIZE * 2) + for (NVU i = threadIdx * 2; i < NVU(numTilePixels) >> 1; i += NIS_THREAD_GROUP_SIZE * 2) { - NVI py = (i / numTilePixelsX) * 2; - NVI px = i % numTilePixelsX; + NVU py = (i / numTilePixelsX) * 2; + NVU px = i % numTilePixelsX; // 0.5 to be in the center of texel // - (kSupportSize - 1) / 2 to shift by the kernel support size @@ -632,7 +621,7 @@ void NVScaler(NVU2 blockIdx, NVU threadIdx) } } #endif - const NVI idx = py * kTilePitch + px; + const NVU idx = py * kTilePitch + px; shPixelsY[idx] = NVH(p[0][0]); shPixelsY[idx + 1] = NVH(p[0][1]); shPixelsY[idx + kTilePitch] = NVH(p[1][0]); @@ -642,14 +631,14 @@ void NVScaler(NVU2 blockIdx, NVU threadIdx) GroupMemoryBarrierWithGroupSync(); { // fill in the edge map of 2x2 pixels - for (NVI i = NVI(threadIdx) * 2; i < numEdgeMapPixels / 2; i += NIS_THREAD_GROUP_SIZE * 2) + for (NVU i = threadIdx * 2; i < NVU(numEdgeMapPixels) >> 1; i += NIS_THREAD_GROUP_SIZE * 2) { - NVI py = (i / numEdgeMapPixelsX) * 2; - NVI px = i % numEdgeMapPixelsX; + NVU py = (i / numEdgeMapPixelsX) * 2; + NVU px = i % numEdgeMapPixelsX; - const NVI edgeMapIdx = py * kEdgeMapPitch + px; + const NVU edgeMapIdx = py * kEdgeMapPitch + px; - NVI tileCornerIdx = (py+1) * kTilePitch + px + 1; + NVU tileCornerIdx = (py+1) * kTilePitch + px + 1; NVF p[4][4]; NIS_UNROLL for (NVI j = 0; j < 4; j++) @@ -668,17 +657,26 @@ void NVScaler(NVU2 blockIdx, NVU threadIdx) } } LoadFilterBanksSh(NVI(threadIdx), NIS_THREAD_GROUP_SIZE); - GroupMemoryBarrierWithGroupSync(); - for (NVI k = NVI(threadIdx); k < NIS_BLOCK_WIDTH * NIS_BLOCK_HEIGHT; k += NIS_THREAD_GROUP_SIZE) + // output coord within a tile + const NVI2 pos = NVI2(NVU(threadIdx) % NVU(NIS_BLOCK_WIDTH), NVU(threadIdx) / NVU(NIS_BLOCK_WIDTH)); + // x coord inside the output image + const NVI dstX = dstBlockX + pos.x; + // x coord inside the input image + const NVF srcX = (0.5f + dstX) * kScaleX - 0.5f; + // nearest integer part + const NVI px = NVI(floor(srcX) - srcBlockStartX); + // fractional part + const NVF fx = srcX - floor(srcX); + // discretized phase + const NVI fx_int = NVI(fx * kPhaseCount); + + for (NVI k = 0; k < NIS_BLOCK_WIDTH * NIS_BLOCK_HEIGHT / NIS_THREAD_GROUP_SIZE; ++k) { - const NVI2 pos = NVI2(k % NIS_BLOCK_WIDTH, k / NIS_BLOCK_WIDTH); - - const NVI dstX = dstBlockX + pos.x; - const NVI dstY = dstBlockY + pos.y; - - const NVF srcX = (0.5f + dstX) * kScaleX - 0.5f; + // y coord inside the output image + const NVI dstY = dstBlockY + pos.y + k * (NIS_THREAD_GROUP_SIZE / NIS_BLOCK_WIDTH); + // y coord inside the input image const NVF srcY = (0.5f + dstY) * kScaleY - 0.5f; #if NIS_VIEWPORT_SUPPORT if (srcX > kInputViewportWidth || srcY > kInputViewportHeight || @@ -687,13 +685,30 @@ void NVScaler(NVU2 blockIdx, NVU threadIdx) return; } #endif - - const NVI px = NVI(floor(srcX) - srcBlockStartX); + // nearest integer part const NVI py = NVI(floor(srcY) - srcBlockStartY); + // fractional part + const NVF fy = srcY - floor(srcY); + // discretized phase + const NVI fy_int = NVI(fy * kPhaseCount); - const NVI startTileIdx = py * kTilePitch + px; + // generate weights for directional filters + const NVI startEdgeMapIdx = py * kEdgeMapPitch + px; + NVF4 edge[2][2]; + NIS_UNROLL + for (NVI i = 0; i < 2; i++) + { + NIS_UNROLL + for (NVI j = 0; j < 2; j++) + { + // need to shift edge map sampling since it's a 2x2 centered inside 6x6 grid + edge[i][j] = shEdgeMap[startEdgeMapIdx + (i * kEdgeMapPitch) + j]; + } + } + const NVF4 w = GetInterpEdgeMap(edge, fx, fy) * NIS_SCALE_INT; // load 6x6 support to regs + const NVI startTileIdx = py * kTilePitch + px; NVF p[6][6]; { NIS_UNROLL @@ -707,43 +722,23 @@ void NVScaler(NVU2 blockIdx, NVU threadIdx) } } - // compute discretized filter phase - const NVF fx = srcX - floor(srcX); - const NVF fy = srcY - floor(srcY); - const NVI fx_int = NVI(fx * kPhaseCount); - const NVI fy_int = NVI(fy * kPhaseCount); + // weigth for luma + const NVF baseWeight = NIS_SCALE_FLOAT - w.x - w.y - w.z - w.w; + + // final luma is a weighted product of directional & normal filters + NVF opY = 0; // get traditional scaler filter output - const NVF pixel_n = FilterNormal(p, fx_int, fy_int); + opY += FilterNormal(p, fx_int, fy_int) * baseWeight; // get directional filter bank output - NVF4 opDirYU = GetDirFilters(p, fx, fy, fx_int, fy_int); - - // final luma is a weighted product of directional & normal filters + opY += AddDirFilters(p, fx, fy, fx_int, fy_int, w); - // generate weights for directional filters - const NVI startEdgeMapIdx = py * kEdgeMapPitch + px; - NVF4 edge[2][2]; - NIS_UNROLL - for (NVI i = 0; i < 2; i++) - { - NIS_UNROLL - for (NVI j = 0; j < 2; j++) - { - // need to shift edge map sampling since it's a 2x2 centered inside 6x6 grid - edge[i][j] = shEdgeMap[startEdgeMapIdx + (i * kEdgeMapPitch) + j]; - } - } - const NVF4 w = GetInterpEdgeMap(edge, fx, fy) * NIS_SCALE_INT; - - // final pixel is a weighted sum filter outputs - const NVF opY = (opDirYU.x * w.x + opDirYU.y * w.y + opDirYU.z * w.z + opDirYU.w * w.w + - pixel_n * (NIS_SCALE_FLOAT - w.x - w.y - w.z - w.w)) * (1.0f / NIS_SCALE_FLOAT); // do bilinear tap for chroma upscaling #if NIS_VIEWPORT_SUPPORT - NVF4 op = NVTEX_SAMPLE(in_texture, samplerLinearClamp, NVF2((srcX + kInputViewportOriginX) * kSrcNormX, (srcY + kInputViewportOriginY) * kSrcNormY)); + NVF4 op = NVTEX_SAMPLE(in_texture, samplerLinearClamp, NVF2((srcX + kInputViewportOriginX + 0.5f) * kSrcNormX, (srcY + kInputViewportOriginY + 0.5f) * kSrcNormY)); #else - NVF4 op = NVTEX_SAMPLE(in_texture, samplerLinearClamp, NVF2((dstX + 0.5f) * kDstNormX, (dstY + 0.5f) * kDstNormY)); + NVF4 op = NVTEX_SAMPLE(in_texture, samplerLinearClamp, NVF2((srcX + 0.5f) * kSrcNormX, (srcY + 0.5f) * kSrcNormY)); #endif #if NIS_HDR_MODE == NIS_HDR_MODE_LINEAR const NVF kEps = 1e-4f; @@ -796,7 +791,7 @@ NVF CalcLTIFast(const NVF y[5]) const NVF a_cont = a_max - a_min; const NVF b_cont = b_max - b_min; - const NVF cont_ratio = max(a_cont, b_cont) / (min(a_cont, b_cont) + kEps * (1.0f / NIS_SCALE_FLOAT)); + const NVF cont_ratio = max(a_cont, b_cont) / (min(a_cont, b_cont) + kEps); return (1.0f - saturate((cont_ratio - kMinContrastRatio) * kRatioNorm)) * kContrastBoost; } @@ -883,7 +878,7 @@ void NVSharpen(NVU2 blockIdx, NVU threadIdx) for (NVI i = NVI(threadIdx) * 2; i < kNumPixelsX * kNumPixelsY / 2; i += NIS_THREAD_GROUP_SIZE * 2) { - NVU2 pos = NVU2(i % kNumPixelsX, i / kNumPixelsX * 2); + NVU2 pos = NVU2(NVU(i) % NVU(kNumPixelsX), NVU(i) / NVU(kNumPixelsX) * 2); NIS_UNROLL for (NVI dy = 0; dy < 2; dy++) { @@ -907,7 +902,7 @@ void NVSharpen(NVU2 blockIdx, NVU threadIdx) for (NVI k = NVI(threadIdx); k < NIS_BLOCK_WIDTH * NIS_BLOCK_HEIGHT; k += NIS_THREAD_GROUP_SIZE) { - const NVI2 pos = NVI2(k % NIS_BLOCK_WIDTH, k / NIS_BLOCK_WIDTH); + const NVI2 pos = NVI2(NVU(k) % NVU(NIS_BLOCK_WIDTH), NVU(k) / NVU(NIS_BLOCK_WIDTH)); // load 5x5 support to regs NVF p[5][5]; @@ -942,9 +937,9 @@ void NVSharpen(NVU2 blockIdx, NVU threadIdx) #endif #if NIS_VIEWPORT_SUPPORT - NVF4 op = NVTEX_SAMPLE(in_texture, samplerLinearClamp, NVF2((dstX + kInputViewportOriginX) * kSrcNormX, (dstY + kInputViewportOriginY) * kSrcNormY)); + NVF4 op = NVTEX_SAMPLE(in_texture, samplerLinearClamp, NVF2((dstX + kInputViewportOriginX + 0.5f) * kSrcNormX, (dstY + kInputViewportOriginY + 0.5f) * kSrcNormY)); #else - NVF4 op = NVTEX_SAMPLE(in_texture, samplerLinearClamp, NVF2((dstX + 0.5f) * kDstNormX, (dstY + 0.5f) * kDstNormY)); + NVF4 op = NVTEX_SAMPLE(in_texture, samplerLinearClamp, NVF2((dstX + 0.5f) * kSrcNormX, (dstY + 0.5f) * kSrcNormY)); #endif #if NIS_HDR_MODE == NIS_HDR_MODE_LINEAR const NVF kEps = 1e-4f * kHDRCompressionFactor * kHDRCompressionFactor; diff --git a/README.md b/README.md index b830419..2ca8b16 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ -# NVIDIA Image Scaling SDK v1.0.1 +# NVIDIA Image Scaling SDK v1.0.2 The MIT License(MIT) -Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +Copyright(c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files(the "Software"), to deal in @@ -84,7 +84,7 @@ The coefficients are included in NIS_Config.h file: fp32 format: coef_scaler, coef_USM -fp16 format: coef_scaler_fp16, coef_USM_fp16 +fp16 format: coef_scaler_fp16, coef_USM_fp16 ### Resource States, Buffers, and Sampler: @@ -96,7 +96,7 @@ the correct state. - The output texture must be in read/write state. Unordered Access View (UAV) in DirectX - The coefficients texture for NVScaler must be in read state. Shader Resource View (SRV) in DirectX - The configuration variables must be passed as constant buffer. Constant Buffer View (CBV) in DirectX -- The sampler for texture pixel sampling. Linear clamp SamplerState in Direct +- The sampler for texture pixel sampling must use linear filter interpolation and clamp to edge addressing mode @@ -144,14 +144,15 @@ values (NVScalerUpdateConfig, and NVSharpenUpdateConfig), and to access the algo ## Optimal shader settings -To get optimal performance of NvScaler and NvSharpen for current and future hardware, it is recommended that the following API is used to obtain the values for NIS_BLOCK_WIDTH, NIS_BLOCK_HEIGHT, and NIS_THREAD_GROUP_SIZE. +To get optimal performance of NVScaler and NVSharpen for current and future hardware, it is recommended that the following API is used to obtain the values for NIS_BLOCK_WIDTH, NIS_BLOCK_HEIGHT, and NIS_THREAD_GROUP_SIZE. These values can be used to compile permutations of NVScaler and NVSharpen offline. ``` enum class NISGPUArchitecture : uint32_t { NVIDIA_Generic = 0, AMD_Generic = 1, - Intel_Generic = 2 + Intel_Generic = 2, + NVIDIA_Generic_fp16 = 3, }; ``` @@ -191,16 +192,18 @@ The integration instructions in this section can be applied with minimal changes ### Compile the NIS_Main.hlsl shader -NIS_SCALER should be set to 1, and isUscaling should be pass as true. +NIS_SCALER should be set to 1, and the isUpscaling argument should set to true. ``` -NISOptimizer opt(true, NISGPUArchitecture::NVIDIA_Generic); +bool isUpscaling = true; +// Note: NISOptimizer is optional and these values can be cached offline +NISOptimizer opt(isUpscaling, NISGPUArchitecture::NVIDIA_Generic); uint32_t blockWidth = opt.GetOptimalBlockWidth(); uint32_t blockHeight = opt.GetOptimalBlockHeight(); uint32_t threadGroupSize = opt.GetOptimalThreadGroupSize(); Defines defines; -defines.add("NIS_SCALER", true); +defines.add("NIS_SCALER", isUpscaling); defines.add("NIS_HDR_MODE", hdrMode); defines.add("NIS_BLOCK_WIDTH", blockWidth); defines.add("NIS_BLOCK_HEIGHT", blockHeight); @@ -295,10 +298,11 @@ If your application requires upscaling and sharpening do not use NVSharpen use N ### Compile the NIS_Main.hlsl shader -NIS_SCALER should be set to 0 and the optimizer isUscaling argument should be set to false. +NIS_SCALER should be set to 0 and the optimizer isUpscaling argument should be set to false. ``` bool isUpscaling = false; +// Note: NISOptimizer is optional and these values can be cached offline NISOptimizer opt(isUpscaling, NISGPUArchitecture::NVIDIA_Generic); uint32_t blockWidth = opt.GetOptimalBlockWidth(); uint32_t blockHeight = opt.GetOptimalBlockHeight(); @@ -384,7 +388,7 @@ context->Dispatch(UINT(std::ceil(outputWidth / float(blockWidth))), - CMake 3.16 : https://cmake.org/download/ for building the Vulkan sample: -- Vulkan SDK 1.2.189.2 : https://vulkan.lunarg.com/ +- Vulkan SDK 1.2.189.2 : https://vulkan.lunarg.com/ ### Build diff --git a/docs/NIS_SDK_Programming_Guide.pdf b/docs/NIS_SDK_Programming_Guide.pdf index 14a92d34c3667060f6f6bcdcf8f28b12101387ed..1b202f149d730f5ec766e0eac81385b49650b328 100644 GIT binary patch delta 98532 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 Kr%tt4YWY8RZ#)hF delta 91564 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 diff --git a/licence.txt b/licence.txt index ba50525..68a4742 100644 --- a/licence.txt +++ b/licence.txt @@ -1,6 +1,6 @@ // The MIT License(MIT) // -// Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright(c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files(the "Software"), to deal in diff --git a/samples/DX11/include/AppRenderer.h b/samples/DX11/include/AppRenderer.h index 2c3c8d7..2ad1b1a 100644 --- a/samples/DX11/include/AppRenderer.h +++ b/samples/DX11/include/AppRenderer.h @@ -1,6 +1,6 @@ // The MIT License(MIT) // -// Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright(c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files(the "Software"), to deal in diff --git a/samples/DX11/include/BilinearUpscale.h b/samples/DX11/include/BilinearUpscale.h index 9acbde8..56c76fb 100644 --- a/samples/DX11/include/BilinearUpscale.h +++ b/samples/DX11/include/BilinearUpscale.h @@ -1,6 +1,6 @@ // The MIT License(MIT) // -// Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright(c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files(the "Software"), to deal in diff --git a/samples/DX11/include/DXUtilities.h b/samples/DX11/include/DXUtilities.h index bbf3806..92c9364 100644 --- a/samples/DX11/include/DXUtilities.h +++ b/samples/DX11/include/DXUtilities.h @@ -1,6 +1,6 @@ // The MIT License(MIT) // -// Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright(c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files(the "Software"), to deal in diff --git a/samples/DX11/include/DeviceResources.h b/samples/DX11/include/DeviceResources.h index 7e6481c..3f202d8 100644 --- a/samples/DX11/include/DeviceResources.h +++ b/samples/DX11/include/DeviceResources.h @@ -1,6 +1,6 @@ // The MIT License(MIT) // -// Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright(c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files(the "Software"), to deal in diff --git a/samples/DX11/include/NVScaler.h b/samples/DX11/include/NVScaler.h index 06cc187..1394714 100644 --- a/samples/DX11/include/NVScaler.h +++ b/samples/DX11/include/NVScaler.h @@ -1,6 +1,6 @@ // The MIT License(MIT) // -// Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright(c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files(the "Software"), to deal in diff --git a/samples/DX11/include/NVSharpen.h b/samples/DX11/include/NVSharpen.h index 55419c5..e2ca62a 100644 --- a/samples/DX11/include/NVSharpen.h +++ b/samples/DX11/include/NVSharpen.h @@ -1,6 +1,6 @@ // The MIT License(MIT) // -// Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright(c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files(the "Software"), to deal in diff --git a/samples/DX11/include/UIRenderer.h b/samples/DX11/include/UIRenderer.h index cf6187a..f9ff6c5 100644 --- a/samples/DX11/include/UIRenderer.h +++ b/samples/DX11/include/UIRenderer.h @@ -1,6 +1,6 @@ // The MIT License(MIT) // -// Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright(c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files(the "Software"), to deal in diff --git a/samples/DX11/src/AppRenderer.cpp b/samples/DX11/src/AppRenderer.cpp index 7cacb90..09d2853 100644 --- a/samples/DX11/src/AppRenderer.cpp +++ b/samples/DX11/src/AppRenderer.cpp @@ -1,6 +1,6 @@ // The MIT License(MIT) // -// Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright(c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files(the "Software"), to deal in diff --git a/samples/DX11/src/BilinearUpscale.cpp b/samples/DX11/src/BilinearUpscale.cpp index 8cbb254..95cfa35 100644 --- a/samples/DX11/src/BilinearUpscale.cpp +++ b/samples/DX11/src/BilinearUpscale.cpp @@ -1,6 +1,6 @@ // The MIT License(MIT) // -// Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright(c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files(the "Software"), to deal in diff --git a/samples/DX11/src/DeviceResources.cpp b/samples/DX11/src/DeviceResources.cpp index b287925..a10d3d1 100644 --- a/samples/DX11/src/DeviceResources.cpp +++ b/samples/DX11/src/DeviceResources.cpp @@ -1,6 +1,6 @@ // The MIT License(MIT) // -// Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright(c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files(the "Software"), to deal in diff --git a/samples/DX11/src/NVScaler.cpp b/samples/DX11/src/NVScaler.cpp index 23f27a2..c3a232e 100644 --- a/samples/DX11/src/NVScaler.cpp +++ b/samples/DX11/src/NVScaler.cpp @@ -1,6 +1,6 @@ // The MIT License(MIT) // -// Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright(c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files(the "Software"), to deal in diff --git a/samples/DX11/src/NVSharpen.cpp b/samples/DX11/src/NVSharpen.cpp index 11243bb..f47e89a 100644 --- a/samples/DX11/src/NVSharpen.cpp +++ b/samples/DX11/src/NVSharpen.cpp @@ -1,6 +1,6 @@ // The MIT License(MIT) // -// Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright(c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files(the "Software"), to deal in diff --git a/samples/DX11/src/Sample.cpp b/samples/DX11/src/Sample.cpp index ce03aa5..28dd40b 100644 --- a/samples/DX11/src/Sample.cpp +++ b/samples/DX11/src/Sample.cpp @@ -1,6 +1,6 @@ // The MIT License(MIT) // -// Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright(c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files(the "Software"), to deal in diff --git a/samples/DX11/src/UIRenderer.cpp b/samples/DX11/src/UIRenderer.cpp index 23134bb..8a2b479 100644 --- a/samples/DX11/src/UIRenderer.cpp +++ b/samples/DX11/src/UIRenderer.cpp @@ -1,6 +1,6 @@ // The MIT License(MIT) // -// Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright(c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files(the "Software"), to deal in diff --git a/samples/DX12/include/AppRenderer.h b/samples/DX12/include/AppRenderer.h index 640c07b..6bee256 100644 --- a/samples/DX12/include/AppRenderer.h +++ b/samples/DX12/include/AppRenderer.h @@ -1,6 +1,6 @@ // The MIT License(MIT) // -// Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright(c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files(the "Software"), to deal in diff --git a/samples/DX12/include/BilinearUpscale.h b/samples/DX12/include/BilinearUpscale.h index 3e1bd17..b3cc6ab 100644 --- a/samples/DX12/include/BilinearUpscale.h +++ b/samples/DX12/include/BilinearUpscale.h @@ -1,6 +1,6 @@ // The MIT License(MIT) // -// Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright(c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files(the "Software"), to deal in diff --git a/samples/DX12/include/DXUtilities.h b/samples/DX12/include/DXUtilities.h index f73b52a..a8f2d28 100644 --- a/samples/DX12/include/DXUtilities.h +++ b/samples/DX12/include/DXUtilities.h @@ -1,6 +1,6 @@ // The MIT License(MIT) // -// Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright(c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files(the "Software"), to deal in diff --git a/samples/DX12/include/DeviceResources.h b/samples/DX12/include/DeviceResources.h index d9ac64d..2a1819e 100644 --- a/samples/DX12/include/DeviceResources.h +++ b/samples/DX12/include/DeviceResources.h @@ -1,6 +1,6 @@ // The MIT License(MIT) // -// Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright(c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files(the "Software"), to deal in diff --git a/samples/DX12/include/NVScaler.h b/samples/DX12/include/NVScaler.h index 6acd32a..5ef62a3 100644 --- a/samples/DX12/include/NVScaler.h +++ b/samples/DX12/include/NVScaler.h @@ -1,6 +1,6 @@ // The MIT License(MIT) // -// Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright(c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files(the "Software"), to deal in diff --git a/samples/DX12/include/NVSharpen.h b/samples/DX12/include/NVSharpen.h index 6478963..c5443cf 100644 --- a/samples/DX12/include/NVSharpen.h +++ b/samples/DX12/include/NVSharpen.h @@ -1,6 +1,6 @@ // The MIT License(MIT) // -// Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright(c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files(the "Software"), to deal in diff --git a/samples/DX12/include/UIRenderer.h b/samples/DX12/include/UIRenderer.h index 8cd18c4..c4353d4 100644 --- a/samples/DX12/include/UIRenderer.h +++ b/samples/DX12/include/UIRenderer.h @@ -1,6 +1,6 @@ // The MIT License(MIT) // -// Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright(c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files(the "Software"), to deal in diff --git a/samples/DX12/src/AppRenderer.cpp b/samples/DX12/src/AppRenderer.cpp index 071a100..905d841 100644 --- a/samples/DX12/src/AppRenderer.cpp +++ b/samples/DX12/src/AppRenderer.cpp @@ -1,6 +1,6 @@ // The MIT License(MIT) // -// Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright(c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files(the "Software"), to deal in diff --git a/samples/DX12/src/BilinearUpscale.cpp b/samples/DX12/src/BilinearUpscale.cpp index 93da08a..765d7d9 100644 --- a/samples/DX12/src/BilinearUpscale.cpp +++ b/samples/DX12/src/BilinearUpscale.cpp @@ -1,6 +1,6 @@ // The MIT License(MIT) // -// Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright(c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files(the "Software"), to deal in diff --git a/samples/DX12/src/DeviceResources.cpp b/samples/DX12/src/DeviceResources.cpp index 3e0e315..43f8585 100644 --- a/samples/DX12/src/DeviceResources.cpp +++ b/samples/DX12/src/DeviceResources.cpp @@ -1,6 +1,6 @@ // The MIT License(MIT) // -// Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright(c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files(the "Software"), to deal in @@ -86,8 +86,7 @@ void DeviceResources::create(HWND hWnd, uint32_t adapterIdx) // Create device D3D_FEATURE_LEVEL featureLevel = D3D_FEATURE_LEVEL_12_0; - HRESULT hr = D3D12CreateDevice(nullptr, featureLevel, __uuidof(ID3D12Device), &m_device); - //m_device->SetStablePowerState(true); + HRESULT hr = D3D12CreateDevice(pAdapter.Get(), featureLevel, __uuidof(ID3D12Device), &m_device); // [DEBUG] Setup debug interface to break on any warnings/errors #ifdef DX12_ENABLE_DEBUG_LAYER @@ -253,7 +252,7 @@ void DeviceResources::Present(uint32_t SyncInterval, uint32_t Flags) { m_swapChain->Present(SyncInterval, Flags); m_timer.ReadBack(); - } + } MoveToNextFrame(); } diff --git a/samples/DX12/src/NVScaler.cpp b/samples/DX12/src/NVScaler.cpp index 5f1fdcd..999a382 100644 --- a/samples/DX12/src/NVScaler.cpp +++ b/samples/DX12/src/NVScaler.cpp @@ -1,6 +1,6 @@ // The MIT License(MIT) // -// Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright(c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files(the "Software"), to deal in @@ -45,7 +45,7 @@ NVScaler::NVScaler(DeviceResources& deviceResources, const std::vectorCreateIncludeHandler(&includeHandler); std::vector args{ L"-O3", L"-enable-16bit-types" }; ComPtr result; - HRESULT hr = compiler->Compile(sourceBlob.Get(), wShaderFilename.c_str(), L"main", L"cs_6_2", args.data(), uint32_t(args.size()), + HRESULT hr = compiler->Compile(sourceBlob.Get(), wShaderFilename.c_str(), L"main", L"cs_6_2", args.data(), uint32_t(args.size()), defines.data(), uint32_t(defines.size()), includeHandler.Get(), &result); if (SUCCEEDED(hr)) result->GetStatus(&hr); diff --git a/samples/DX12/src/Sample.cpp b/samples/DX12/src/Sample.cpp index 7a18d1d..40d6fef 100644 --- a/samples/DX12/src/Sample.cpp +++ b/samples/DX12/src/Sample.cpp @@ -1,6 +1,6 @@ // The MIT License(MIT) // -// Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright(c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files(the "Software"), to deal in diff --git a/samples/DX12/src/UIRenderer.cpp b/samples/DX12/src/UIRenderer.cpp index 907d244..f66f7bf 100644 --- a/samples/DX12/src/UIRenderer.cpp +++ b/samples/DX12/src/UIRenderer.cpp @@ -1,6 +1,6 @@ // The MIT License(MIT) // -// Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright(c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files(the "Software"), to deal in diff --git a/samples/DX12/src/bilinearUpscale.hlsl b/samples/DX12/src/bilinearUpscale.hlsl index bcee2f0..4e470be 100644 --- a/samples/DX12/src/bilinearUpscale.hlsl +++ b/samples/DX12/src/bilinearUpscale.hlsl @@ -1,6 +1,6 @@ // The MIT License(MIT) // -// Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright(c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files(the "Software"), to deal in diff --git a/samples/VK/include/AppRenderer.h b/samples/VK/include/AppRenderer.h index 5d80f14..9ed249e 100644 --- a/samples/VK/include/AppRenderer.h +++ b/samples/VK/include/AppRenderer.h @@ -1,6 +1,6 @@ // The MIT License(MIT) // -// Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright(c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files(the "Software"), to deal in diff --git a/samples/VK/include/DeviceResources.h b/samples/VK/include/DeviceResources.h index a7c141c..c8b00fd 100644 --- a/samples/VK/include/DeviceResources.h +++ b/samples/VK/include/DeviceResources.h @@ -1,6 +1,6 @@ // The MIT License(MIT) // -// Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright(c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files(the "Software"), to deal in diff --git a/samples/VK/include/NVScaler.h b/samples/VK/include/NVScaler.h index db571e8..0d38451 100644 --- a/samples/VK/include/NVScaler.h +++ b/samples/VK/include/NVScaler.h @@ -1,6 +1,6 @@ // The MIT License(MIT) // -// Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright(c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files(the "Software"), to deal in diff --git a/samples/VK/include/NVSharpen.h b/samples/VK/include/NVSharpen.h index aed15eb..e4a207e 100644 --- a/samples/VK/include/NVSharpen.h +++ b/samples/VK/include/NVSharpen.h @@ -1,6 +1,6 @@ // The MIT License(MIT) // -// Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright(c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files(the "Software"), to deal in diff --git a/samples/VK/include/UIRenderer.h b/samples/VK/include/UIRenderer.h index 0d675bc..87f9cb5 100644 --- a/samples/VK/include/UIRenderer.h +++ b/samples/VK/include/UIRenderer.h @@ -1,6 +1,6 @@ // The MIT License(MIT) // -// Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright(c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files(the "Software"), to deal in diff --git a/samples/VK/include/VKUtilities.h b/samples/VK/include/VKUtilities.h index 885d5c1..6379f81 100644 --- a/samples/VK/include/VKUtilities.h +++ b/samples/VK/include/VKUtilities.h @@ -1,6 +1,6 @@ // The MIT License(MIT) // -// Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright(c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files(the "Software"), to deal in diff --git a/samples/VK/src/AppRenderer.cpp b/samples/VK/src/AppRenderer.cpp index 72a60c2..a520a3a 100644 --- a/samples/VK/src/AppRenderer.cpp +++ b/samples/VK/src/AppRenderer.cpp @@ -1,6 +1,6 @@ // The MIT License(MIT) // -// Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright(c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files(the "Software"), to deal in diff --git a/samples/VK/src/DeviceResources.cpp b/samples/VK/src/DeviceResources.cpp index f4e657b..50647c3 100644 --- a/samples/VK/src/DeviceResources.cpp +++ b/samples/VK/src/DeviceResources.cpp @@ -1,6 +1,6 @@ // The MIT License(MIT) // -// Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright(c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files(the "Software"), to deal in diff --git a/samples/VK/src/NVScaler.cpp b/samples/VK/src/NVScaler.cpp index b8f79f5..04f2905 100644 --- a/samples/VK/src/NVScaler.cpp +++ b/samples/VK/src/NVScaler.cpp @@ -1,6 +1,6 @@ // The MIT License(MIT) // -// Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright(c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files(the "Software"), to deal in diff --git a/samples/VK/src/NVSharpen.cpp b/samples/VK/src/NVSharpen.cpp index c65390d..472c131 100644 --- a/samples/VK/src/NVSharpen.cpp +++ b/samples/VK/src/NVSharpen.cpp @@ -1,6 +1,6 @@ // The MIT License(MIT) // -// Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright(c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files(the "Software"), to deal in diff --git a/samples/VK/src/Sample.cpp b/samples/VK/src/Sample.cpp index 7b54999..ed40e61 100644 --- a/samples/VK/src/Sample.cpp +++ b/samples/VK/src/Sample.cpp @@ -1,6 +1,6 @@ // The MIT License(MIT) // -// Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright(c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files(the "Software"), to deal in diff --git a/samples/VK/src/UIRenderer.cpp b/samples/VK/src/UIRenderer.cpp index 4d7be43..c3d9818 100644 --- a/samples/VK/src/UIRenderer.cpp +++ b/samples/VK/src/UIRenderer.cpp @@ -1,6 +1,6 @@ // The MIT License(MIT) // -// Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright(c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files(the "Software"), to deal in diff --git a/samples/common/Image.cpp b/samples/common/Image.cpp index 847bade..1549321 100644 --- a/samples/common/Image.cpp +++ b/samples/common/Image.cpp @@ -1,6 +1,6 @@ // The MIT License(MIT) // -// Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright(c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files(the "Software"), to deal in diff --git a/samples/common/Image.h b/samples/common/Image.h index 019713c..c74ce84 100644 --- a/samples/common/Image.h +++ b/samples/common/Image.h @@ -1,6 +1,6 @@ // The MIT License(MIT) // -// Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright(c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files(the "Software"), to deal in diff --git a/samples/common/Utilities.h b/samples/common/Utilities.h index cb623c6..9af9566 100644 --- a/samples/common/Utilities.h +++ b/samples/common/Utilities.h @@ -1,6 +1,6 @@ // The MIT License(MIT) // -// Copyright(c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright(c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files(the "Software"), to deal in diff --git a/third_party_licenses.txt b/third_party_licenses.txt index 7730c57..e866b63 100644 --- a/third_party_licenses.txt +++ b/third_party_licenses.txt @@ -147,9 +147,7 @@ tinyexr tools uses stb, which is licensed under public domain: https://github.co ------------------------------------------------------------------------------ stb image ------------------------------------------------------------------------------ -This software is available under 2 licenses -- choose whichever you prefer. ------------------------------------------------------------------------------- -ALTERNATIVE A - MIT License +MIT License Copyright (c) 2017 Sean Barrett Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in @@ -166,25 +164,6 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ------------------------------------------------------------------------------- -ALTERNATIVE B - Public Domain (www.unlicense.org) -This is free and unencumbered software released into the public domain. -Anyone is free to copy, modify, publish, use, compile, sell, or distribute this -software, either in source code form or as a compiled binary, for any purpose, -commercial or non-commercial, and by any means. -In jurisdictions that recognize copyright laws, the author or authors of this -software dedicate any and all copyright interest in the software to the public -domain. We make this dedication for the benefit of the public at large and to -the detriment of our heirs and successors. We intend this dedication to be an -overt act of relinquishment in perpetuity of all present and future rights to -this software under copyright law. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN -ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - ------------------------------------------------------------------------------