45 lines
1.6 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
half NiloAvg3(half3 inputColor)
{
// Using dot product should be efficient on the GPU due to vectorization and SIMD.
return dot(half3(1.0h/3.0h, 1.0h/3.0h, 1.0h/3.0h), inputColor);
// Direct average calculation might be slightly faster on the CPU,
// especially if SIMD optimizations are not in use.
//return (inputColor.r + inputColor.g + inputColor.b) / 3.0h;
}
float NiloGetFacing(FRONT_FACE_TYPE IsFrontFace)
{
return IS_FRONT_VFACE(IsFrontFace, 1.0, -1.0);
}
// TODO: revisit when min version is URP14, where sampler_PointClamp is defined by URP already
/*
struct NiloPrepassBufferRTData
{
half materialID; // r
half characterVisibleArea; // g
};
TEXTURE2D_X(_NiloToonPrepassBufferTex);
NiloPrepassBufferRTData NiloSamplePrepassBufferRT(float2 normalizeScreenSpaceUV)
{
half4 sample = SAMPLE_TEXTURE2D_X(_NiloToonPrepassBufferTex, sampler_PointClamp, normalizeScreenSpaceUV);
NiloPrepassBufferRTData data;
data.materialID = sample.r * 255.0;
data.characterVisibleArea = sample.g;
return data;
}
*/