- Unity 6.2 → 6.3 업그레이드 - Beautify URP 에셋 업데이트 - Stylized Water 3 에셋 제거 - PIDI Planar Reflections shadergraph 업데이트 - 각종 메타파일 및 에셋 파일 Unity 6.3 호환 업데이트 - lilToon, AmplifyShaderEditor 등 외부 에셋 설정 변경 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
158 lines
6.1 KiB
HLSL
158 lines
6.1 KiB
HLSL
#ifndef __BEAUTIFY_COMMON_INCLUDE
|
|
#define __BEAUTIFY_COMMON_INCLUDE
|
|
|
|
// Set to 1 to support orthographic mode
|
|
#define BEAUTIFY_ORTHO 0
|
|
|
|
// Set to 1 to enable Sobel outline
|
|
#define BEAUTIFY_OUTLINE_SOBEL 0
|
|
|
|
// Set to 1 to enable alternate chromatic aberration method
|
|
#define BEAUTIFY_CABERRATION_ALT 0
|
|
|
|
// Set to 1 to use legacy eye adaptation mode
|
|
#define BEAUTIFY_EA_LEGACY_MODE 0
|
|
|
|
TEXTURE2D(_BlueNoise);
|
|
float4 _BlueNoise_TexelSize;
|
|
|
|
TEXTURE2D_X_FLOAT(_CameraDepthTexture);
|
|
SAMPLER(sampler_CameraDepthTexture);
|
|
|
|
float HighPrecisionSampleSceneDepth(float2 uvStereo)
|
|
{
|
|
return SAMPLE_TEXTURE2D_X(_CameraDepthTexture, sampler_CameraDepthTexture, uvStereo).r;
|
|
}
|
|
|
|
|
|
#if BEAUTIFY_ORTHO
|
|
#if UNITY_REVERSED_Z
|
|
#define BEAUTIFY_GET_DEPTH_01(x) (1.0-x)
|
|
#define BEAUTIFY_GET_DEPTH_EYE(x) ((1.0-x) * _ProjectionParams.z)
|
|
|
|
#define BEAUTIFY_GET_SCENE_DEPTH_01(x) (1.0 - HighPrecisionSampleSceneDepth(x))
|
|
#define BEAUTIFY_GET_SCENE_DEPTH_EYE(x) ((1.0 - HighPrecisionSampleSceneDepth(x)) * _ProjectionParams.z)
|
|
|
|
#define BEAUTIFY_GET_CUSTOM_DEPTH_01(s, x) (1.0 - SAMPLE_TEXTURE2D_X(s, sampler_PointClamp, x).r)
|
|
#else
|
|
#define BEAUTIFY_GET_DEPTH_01(x) (x)
|
|
#define BEAUTIFY_GET_DEPTH_EYE(x) (x * _ProjectionParams.z)
|
|
|
|
#define BEAUTIFY_GET_SCENE_DEPTH_01(x) HighPrecisionSampleSceneDepth(x)
|
|
#define BEAUTIFY_GET_SCENE_DEPTH_EYE(x) (HighPrecisionSampleSceneDepth(x) * _ProjectionParams.z)
|
|
|
|
#define BEAUTIFY_GET_CUSTOM_DEPTH_01(s, x) SAMPLE_TEXTURE2D_X(s, sampler_PointClamp, x).r
|
|
#endif
|
|
#else
|
|
#define BEAUTIFY_GET_DEPTH_01(x) Linear01Depth(x, _ZBufferParams)
|
|
#define BEAUTIFY_GET_DEPTH_EYE(x) LinearEyeDepth(x, _ZBufferParams)
|
|
|
|
#define BEAUTIFY_GET_SCENE_DEPTH_01(x) Linear01Depth(HighPrecisionSampleSceneDepth(x), _ZBufferParams)
|
|
#define BEAUTIFY_GET_SCENE_DEPTH_EYE(x) LinearEyeDepth(HighPrecisionSampleSceneDepth(x), _ZBufferParams)
|
|
|
|
#define BEAUTIFY_GET_CUSTOM_DEPTH_01(s, x) Linear01Depth(SAMPLE_TEXTURE2D_X(s, sampler_PointClamp, x).r, _ZBufferParams)
|
|
#endif
|
|
|
|
|
|
// Base for COC - required for Android
|
|
#define COC_BASE 128
|
|
|
|
|
|
// Optimization for SSPR
|
|
#define uvN uv1
|
|
#define uvE uv2
|
|
#define uvW uv3
|
|
#define uvS uv4
|
|
|
|
|
|
#if defined(UNITY_STEREO_INSTANCING_ENABLED) || defined(UNITY_STEREO_MULTIVIEW_ENABLED) || defined(SINGLE_PASS_STEREO)
|
|
#define BEAUTIFY_VERTEX_CROSS_UV_DATA
|
|
#define BEAUTIFY_VERTEX_OUTPUT_CROSS_UV(o)
|
|
#define BEAUTIFY_VERTEX_OUTPUT_GAUSSIAN_UV(o)
|
|
|
|
#define BEAUTIFY_FRAG_SETUP_CROSS_UV(i) float3 uvInc = float3(_MainTex_TexelSize.x, _MainTex_TexelSize.y, 0); float2 uvN = i.uv + uvInc.zy; float2 uvE = i.uv + uvInc.xz; float2 uvW = i.uv - uvInc.xz; float2 uvS = i.uv - uvInc.zy;
|
|
|
|
#if defined(BEAUTIFY_BLUR_HORIZ)
|
|
#define BEAUTIFY_FRAG_SETUP_GAUSSIAN_UV(i) float2 inc = float2(_MainTex_TexelSize.x * 1.3846153846 * _BlurScale, 0); float2 uv1 = i.uv - inc; float2 uv2 = i.uv + inc; float2 inc2 = float2(_MainTex_TexelSize.x * 3.2307692308 * _BlurScale, 0); float2 uv3 = i.uv - inc2; float2 uv4 = i.uv + inc2;
|
|
#else
|
|
#define BEAUTIFY_FRAG_SETUP_GAUSSIAN_UV(i) float2 inc = float2(0, _MainTex_TexelSize.y * 1.3846153846 * _BlurScale); float2 uv1 = i.uv - inc; float2 uv2 = i.uv + inc; float2 inc2 = float2(0, _MainTex_TexelSize.y * 3.2307692308 * _BlurScale); float2 uv3 = i.uv - inc2; float2 uv4 = i.uv + inc2;
|
|
#endif
|
|
|
|
#else
|
|
#define BEAUTIFY_VERTEX_CROSS_UV_DATA float2 uvN : TEXCOORD1; float2 uvW: TEXCOORD2; float2 uvE: TEXCOORD3; float2 uvS: TEXCOORD4;
|
|
|
|
#define BEAUTIFY_VERTEX_OUTPUT_CROSS_UV(o) float3 uvInc = float3(_MainTex_TexelSize.x, _MainTex_TexelSize.y, 0); o.uvN = o.uv + uvInc.zy; o.uvE = o.uv + uvInc.xz; o.uvW = o.uv - uvInc.xz; o.uvS = o.uv - uvInc.zy;
|
|
#define BEAUTIFY_FRAG_SETUP_CROSS_UV(i) float2 uv1 = i.uv1; float2 uv2 = i.uv2; float2 uv3 = i.uv3; float2 uv4 = i.uv4;
|
|
|
|
#if defined(BEAUTIFY_BLUR_HORIZ)
|
|
#define BEAUTIFY_VERTEX_OUTPUT_GAUSSIAN_UV(o) float2 inc = float2(_MainTex_TexelSize.x * 1.3846153846 * _BlurScale, 0); o.uv1 = o.uv - inc; o.uv2 = o.uv + inc; float2 inc2 = float2(_MainTex_TexelSize.x * 3.2307692308 * _BlurScale, 0); o.uv3 = o.uv - inc2; o.uv4 = o.uv + inc2;
|
|
#else
|
|
#define BEAUTIFY_VERTEX_OUTPUT_GAUSSIAN_UV(o) float2 inc = float2(0, _MainTex_TexelSize.y * 1.3846153846 * _BlurScale); o.uv1 = o.uv - inc; o.uv2 = o.uv + inc; float2 inc2 = float2(0, _MainTex_TexelSize.y * 3.2307692308 * _BlurScale); o.uv3 = o.uv - inc2; o.uv4 = o.uv + inc2;
|
|
#endif
|
|
#define BEAUTIFY_FRAG_SETUP_GAUSSIAN_UV(i) float2 uv1 = i.uv1; float2 uv2 = i.uv2; float2 uv3 = i.uv3; float2 uv4 = i.uv4;
|
|
|
|
#endif
|
|
|
|
|
|
#if BEAUTIFY_TURBO
|
|
#define GAMMA_TO_LINEAR(x) FastSRGBToLinear(x)
|
|
#define LINEAR_TO_GAMMA(x) FastLinearToSRGB(x)
|
|
#else
|
|
#define GAMMA_TO_LINEAR(x) SRGBToLinear(x)
|
|
#define LINEAR_TO_GAMMA(x) LinearToSRGB(x)
|
|
#endif
|
|
|
|
|
|
// Common functions
|
|
|
|
float _FlipY;
|
|
|
|
struct AttributesSimple
|
|
{
|
|
float4 positionOS : POSITION;
|
|
float2 uv : TEXCOORD0;
|
|
UNITY_VERTEX_INPUT_INSTANCE_ID
|
|
};
|
|
|
|
|
|
struct VaryingsSimple
|
|
{
|
|
float4 positionCS : SV_POSITION;
|
|
float2 uv : TEXCOORD0;
|
|
UNITY_VERTEX_OUTPUT_STEREO
|
|
};
|
|
|
|
VaryingsSimple VertOS(AttributesSimple input) {
|
|
VaryingsSimple output;
|
|
UNITY_SETUP_INSTANCE_ID(input);
|
|
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output);
|
|
output.positionCS = input.positionOS;
|
|
output.positionCS.y *= _ProjectionParams.x * _FlipY;
|
|
output.uv = input.uv;
|
|
return output;
|
|
}
|
|
|
|
|
|
inline float getLuma(float3 rgb) {
|
|
//const float3 lum = float3(0.2627, 0.6780, 0.0593); // Rec.2020 (HDR/wide gamut)
|
|
//const float3 lum = float3(0.2126, 0.7152, 0.0722); // Rec709 (sRGB/HD)
|
|
const float3 lum = float3(0.299, 0.587, 0.114); // Rec601 (SD/broadcast)
|
|
return dot(rgb, lum);
|
|
}
|
|
|
|
|
|
inline float3 getNormal(float depth, float depth1, float depth2, float2 offset1, float2 offset2) {
|
|
float3 p1 = float3(offset1, depth1 - depth);
|
|
float3 p2 = float3(offset2, depth2 - depth);
|
|
float3 normal = cross(p1, p2);
|
|
return normalize(normal);
|
|
}
|
|
|
|
inline float getSaturation(float3 rgb) {
|
|
float maxVal = max(max(rgb.r, rgb.g), rgb.b);
|
|
float minVal = min(min(rgb.r, rgb.g), rgb.b);
|
|
float delta = maxVal - minVal;
|
|
return delta / max(maxVal, 0.0001);
|
|
}
|
|
|
|
#endif // __BEAUTIFY_COMMON_INCLUDE |