Version: Unity 6.0 (6000.0)
언어 : 한국어
URP의 모션 벡터 렌더 패스
URP에서 셰이더의 모션 벡터 샘플링

URP에서 커스텀 셰이더의 모션 벡터 텍스처 출력

URP가__ ShaderLab__셰이더 오브젝트의 구조를 정의하기 위한 Unity 언어입니다. 자세한 정보
See in Glossary
셰이더의 MotionVectors 패스를 렌더링하려면 활성 서브셰이더에 다음 LightMode 태그가 있는 패스가 포함되어 있는지 확인하십시오.

Tags { "LightMode" = "MotionVectors" }

예시:

Shader “Example/MyCustomShaderWithPerObjectMotionVectors"
{
    SubShader
    {
        // ...other passes, SubShader tags and commands
    
        Pass
        {
            Tags { "LightMode" = "MotionVectors" }
            ColorMask RG
            
            HLSLPROGRAM
            
            // Your shader code goes here.
            
            ENDHLSL
        }
    }
}

알파 클리핑, LOD 크로스 페이드, Alembic 애니메이션과 같은 기능에 대해 모션 벡터 패스 지원을 추가하는 예시는 URP 사전 빌드 ShaderLab 셰이더(예: Unlit.shader 파일)의 MotionVectors 패스 구현을 참고하십시오. MotionVectors 패스의 렌더링은 비모션 벡터 패스와 일치해야 하며, 패스가 수행하는 커스텀 변형 또는 버텍스 애니메이션을 반영해야 합니다.

커스텀 셰이더가 알파 클리핑, LOD 크로스 페이드, Alembic 애니메이션, 커스텀 변형 또는 버텍스 애니메이션을 사용하지 않으면서 변형 모션이나 스킨 애니메이션이 있는 오브젝트에만 적용되는 경우, URP가 제공하는 모션 벡터 폴백 셰이더로 충분할 수 있습니다. 사전 빌드된 폴백 셰이더를 추가하려면 다음 ShaderLab 커맨드를 서브셰이더 블록에 추가하십시오.

Shader “Example/MyCustomShaderWithPerObjectMotionVectorFallback"
{
    SubShader
    {
        // ...other passes, SubShader tags, and commands
    
        UsePass "Hidden/Universal Render Pipeline/ObjectMotionVectorFallback/MOTIONVECTORS"
    }
}

참고: 2023.2 이전 버전의 Unity는 URP가 MotionVectors LightMode 태그로 지정된 패스가 없는 모든 서브셰이더 블록에 대해 자동으로 폴백 패스를 사용합니다. Unity 2023.2부터 이 폴백 로직은 다음과 같은 이유로 비활성화됩니다.

  • 폴백 로직은 URP의 자체 머티리얼에 대한 초기 구현 세부 사항이었을 뿐입니다.
  • 이제 URP 머티리얼은 머티리얼 유형별 모션 벡터 패스를 사용하여 알파 클립, LOD 크로스 페이드, Alembic 애니메이션과 같은 기능을 지원하므로 폴백은 더 이상 사용되지 않습니다.
  • 폴백 로직은 해당 로직이 적용되지 않는 콘텐츠에 대해 의도치 않은 시각적 결함을 발생시켰습니다(예: 오브젝트 모션 벡터를 그려서는 안 되는 데칼).
URP의 모션 벡터 렌더 패스
URP에서 셰이더의 모션 벡터 샘플링