2025-10-31 03:28:00 +09:00

39 lines
1.9 KiB
HLSL

// SPDX-License-Identifier: (Not available for this version, you are only allowed to use this software if you have express permission from the copyright holder and agreed to the latest NiloToonURP EULA)
// Copyright (c) 2021 Kuroneko ShaderLab Limited
// For more information, visit -> https://github.com/ColinLeung-NiloCat/UnityURPToonLitShaderExample
// #pragma once is a safe guard best practice in almost every .hlsl,
// doing this can make sure your .hlsl's user can include this .hlsl anywhere anytime without producing any multi include conflict
#pragma once
#ifndef NILO_SCALED_SCREEN_PARAM_UTIL_INCLUDED
#define NILO_SCALED_SCREEN_PARAM_UTIL_INCLUDED
// _ScaledScreenParams doesn't exist in URP10 (only exist in URP13 or higher),
// so for old URP versions, we use _CameraDepthTexture_TexelSize as a fallback
// _CameraDepthTexture_TexelSize is not the best fallback solution, but works for NiloToonURP for now
float2 GetScaledScreenWidthHeight()
{
// SHADER_LIBRARY_VERSION_MAJOR is deprecated for Unity2022.2 or later, so we will use UNITY_VERSION instead
// see -> https://github.com/Cyanilux/URP_ShaderCodeTemplates/blob/main/URP_SimpleLitTemplate.shader#L145
#if UNITY_VERSION >= 202210 // (for URP 13 or above)
return _ScaledScreenParams.xy;
#else
return _CameraDepthTexture_TexelSize.zw;
#endif
}
float2 GetScaledScreenTexelSize()
{
// SHADER_LIBRARY_VERSION_MAJOR is deprecated for Unity2022.2 or later, so we will use UNITY_VERSION instead
// see -> https://github.com/Cyanilux/URP_ShaderCodeTemplates/blob/main/URP_SimpleLitTemplate.shader#L145
#if UNITY_VERSION >= 202210 // (for URP 13 or above)
return 1.0/_ScaledScreenParams.xy;
// return _ScaledScreenParams.zw-float2(1.0,1.0); // this line will produce wrong result, due to precision?
#else
return _CameraDepthTexture_TexelSize.xy;
#endif
}
#endif // NILO_SCALED_SCREEN_PARAM_UTIL_INCLUDED