TOOLS GAMES DEVLOG DOCS ABOUT CONTACT
HOME > DOCS > Shader / URP > 깊이(Depth) 및 노멀 텍스처 기반 URP 풀스크린 렌더 피처 아웃라인
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

SobelOutline.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);
}

참고자료 & 관련 링크