Shader / URP
Advanced
Unity 2021.3+ / Unity 6 (URP)
깊이(Depth) 및 노멀 텍스처 기반 URP 풀스크린 렌더 피처 아웃라인
소벨 필터(Sobel Filter)를 카메라 Depth/Normal 텍스처에 적용해 메시 지오메트리 변형 없이 깨끗한 외곽선을 추출하는 URP 스크린 스페이스 셰이더.
#Shader #URP #RenderFeature #Outline #PostProcessing
핵심 개념지오메트리를 뒤집어 확장하는 전통적인 역노멀 아웃라인(Inverted Hull)은 모서리가 갈라지거나 하드 엣지에서 끊기는 한계가 있습니다. 화면 전체의 카메라 깊이 버퍼(
_CameraDepthTexture)와 뷰 공간 노멀(_CameraNormalsTexture)에 소벨 필터(Sobel Filter)를 적용하면 모든 메시와 배경의 경계면에 완벽한 만화풍 외곽선이 생성됩니다.1. 소벨 필터 깊이/노멀 델타 추출 HLSL
float SampleDepthDiff(float2 uv, float2 offset)
{
float d0 = SampleSceneDepth(uv + float2(-offset.x, -offset.y));
float d1 = SampleSceneDepth(uv + float2( offset.x, -offset.y));
float d2 = SampleSceneDepth(uv + float2(-offset.x, offset.y));
float d3 = SampleSceneDepth(uv + float2( offset.x, offset.y));
float edgeX = d1 - d0;
float edgeY = d3 - d2;
return sqrt(edgeX * edgeX + edgeY * edgeY);
}