표면 셰이더 및 렌더링 경로
빌트인 렌더 파이프라인에서 표면 셰이더가 사용되는 시기, 조명이 적용되는 방법과 사용되는 셰이더의 패스는 사용되는 렌더링 경로에 따라 결정됩니다. 셰이더의 각 패스는 해당 조명 타입을 패스 태그를 통해 알립니다.
기능 이름 | 빌트인 렌더 파이프라인 | 유니버설 렌더 파이프라인(URP) | 고해상도 렌더 파이프라인(HDRP) | 커스텀 SRP |
---|---|---|---|---|
표면 셰이더 | 지원 | 지원 안 함 URP에서 셰이더 오브젝트를 보다 간단하게 만드는 방법을 알아보려면 셰이더 그래프를 참조하십시오. |
지원 안 함 HDRP에서 셰이더 오브젝트를 보다 간단하게 만드는 방법을 알아보려면 셰이더 그래프를 참조하십시오. |
지원 안 함 |
ForwardBase
및 ForwardAdd
패스가 사용됩니다.Deferred
패스가 사용됩니다.PrepassBase
및 PrepassFinal
패스가 사용됩니다.Vertex
, VertexLMRGBM
및 VertexLM
패스가 사용됩니다.ShadowCaster
패스가 사용됩니다.ForwardBase
패스는 앰비언트, 라이트맵, 주 방향 광원 및 중요하지 않은 (버텍스/SH) 광원을 동시에 렌더링합니다. ForwardAdd
패스는 추가 픽셀당 광원에 사용되며, 이러한 광원에 의해 비춰지는 오브젝트당 한 번의 호출이 수행됩니다. 자세한 내용은 포워드 렌더링을 참조하십시오.
포워드 렌더링을 사용하는 경우 셰이더에 포워드 적합 패스가 없으면(즉, ForwardBase
또는 ForwardAdd
패스 타입이 모두 없는 경우) 오브젝트가 아래와 같이 버텍스 릿 경로에서 렌더딩되는 것과 똑같이 렌더링됩니다.
Deferred
패스는 조명에 필요한 모든 정보(빌트인 셰이더에서는 디퓨즈 컬러, 스페큘러 컬러, 평활도, 월드 공간 노멀, 이미션)를 렌더링합니다.
또한 라이트맵, 반사 프로브 및 주변광을 이미션 채널에 추가합니다. 자세한 내용은 디퍼드 셰이딩을 참조하십시오.
PrepassBase
패스는 노멀 및 스페큘러 지수를 렌더링하고 PrepassFinal
패스는 텍스처, 조명 및 발광 머티리얼 프로퍼티를 결합하여 최종 컬러를 렌더링합니다. 모든 일반적인 씬의 조명은 스크린 공간에서 개별적으로 수행됩니다. 자세한 내용은 디퍼드 라이팅을 참조하십시오.
버텍스 조명은 프로그래밍 가능한 셰이더를 지원하지 않는 플랫폼에서 가장 많이 사용되기 때문에 Unity는 라이트맵이 적용되고 라이트맵이 적용되지 않는 사례를 처리하기 위해 내부적으로 여러 셰이더 배리언트를 생성할 수 없습니다. 따라서 라이트맵이 적용되고 라이트맵이 적용되지 않은 오브젝트를 처리하려면 여러 패스를 명시적으로 작성해야 합니다.
Vertex
패스는 라이트맵이 적용되지 않은 오브젝트에 사용됩니다. 모든 광원은 고정 기능 OpenGL/Direct3D 조명 모델(블린퐁)을 사용하여 동시에 렌더링됩니다.VertexLMRGBM
패스는 라이트맵이 RGBM으로 인코딩된 경우(PC 및 콘솔)에 라이트맵이 적용된 오브젝트에 사용됩니다. 실시간 조명은 적용되지 않고 패스는 텍스처를 라이트맵과 결합해야 합니다.VertexLM
패스는 라이트맵이 double-LDR로 인코딩된 경우(모바일 플랫폼)에 라이트맵이 적용된 오브젝트에 사용됩니다. 실시간 조명은 적용되지 않고 패스는 텍스처를 라이트맵과 결합해야 합니다.Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.