[Unity] 그래픽-5. 여러 URP Asset 쓰기: XRay와 그레이스케일 포스트프로세싱
에셋 생성
- 이름 X-Ray로 해서 생성
- 우클릭 - Create - Rendering - URP Asset (With Universal Renderer)
- 파일 두개 나옴
렌더러 파일에 Add Renderer Feature - Render Objects 두 개 추가.
XRay Renderer
- Name: XRay Renderer 로 입력(자율)
- Event: AfterRenderingOpaques - 모든 opaques 그려진 이후에 그림. 먼저 그려진 opaques에 영향 준다는 뜻.
- Overrides-Depth: 뎁스 버퍼 기준 언제 그릴지.
- Write Depth: 아마 픽셀 하나에 뎁스가 하나밖에 없어서 비교가 불가할 때 그린다는 얘기인 듯?
- Depth Test 기준으로 렌더 여부 판단
- 마스크 씌워야됨

NonXRay Renderer

- 하나는 XRay: Depth가 더 클때(다른 것보다 뒤에 있을 때 그리기)
- 다른 하나는 NonXRay: Depth가 다른 것보다 작거나 같을 때(즉, XRay로 그리지 않을 때)
- 추가로, [Filtering]에서 Prepass와 Opaque 에서 XRay 제외. 디폴트로 그려주는 것에서 제외하여 성능 향상을 노림
만든 URP Asset을 사용하기
URP Asset 을 프로젝트 세팅 - Graphics 와 Quality에 넣기
URP Asset에 여러 Renderer들어감

- 동시는 아니고, 카메라 별 적용(이미지는 제일 위가 default. 옆에 버튼 누르면 바뀜)
- 카메라 Component에 Rendering 탭 보면 Renderer 선택할 수 있게 되어있음.
- ProjectSetting 한 URP Asset 참조
- 카메라 Component에 Rendering 탭 보면 Renderer 선택할 수 있게 되어있음.
Postprocessing의 구현 (grayscaling)
우클 - Create - Rendering - URP Universal Renderer 만들어서 위 이미지 두번째 칸에 느으
Add Renderer Feature에 아래 이미지와 같이 feature들이 있음. 여기서 Full Screen Pass Renderer Feature 선택


이제 저 마테리얼에 넣을 셰이더 그래프 마테리얼 만들어야됨
- 만들때 Lit/Unlit 같은거 말고 FullScreen 어쩌고 있음
화면을 그레이스케일 하는 공식이 있음.
- GrayScaledColor = Mathf.Dot(Color, LuminanceVector3)
- Luminance의 알려진 값은 (0.2126, 0.7152, 0.0722)
- 그래서 노드 구성 이렇게 하면 됨. URP Sample Buffer의 Blit Source는 화면 전체 컬러 버퍼임.
- Blit은 대충 Color로 해석하면 얼추 맞음



