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부터 이 폴백 로직은 다음과 같은 이유로 비활성화됩니다.