[Unity] 그래픽-5. 여러 URP Asset 쓰기: XRay와 그레이스케일 포스트프로세싱

KYO
KYO
∙∙조회 9

에셋 생성

  • 이름 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 참조

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로 해석하면 얼추 맞음