[Unity] HDRP의 수동 카메라 렌더링 (Camera.Render() 사용금지)

2026. 6. 22. 20:30·게임개발/Unity

유니티에서 카메라는 성능을 많이 잡아먹기에 조심히 다뤄야한다.
나의 경우 카메라를 RenderTexture 용도로 사용했을 때 enable=false 후 Camera.Render()  수동 렌더 방식으로 구현을 했었다.
이렇게 했을 경우 카메라 센서가 하나일 때는 문제가 없지만, 카메라 센서가 여러 대 늘어날 수록 프레임이 급격하게 떨어졌다.

프로파일링을 통해 원인을 찾고 리서치 해본 결과, HDRP 같은 최신 SRP 환경에서는 Camera.Render()가 아닌 HDRenderPipeline.SubmitRenderRequest를 써야 한다는 것을 알았다.
 
1. Camera.Render()
Camera.Render()는 옛날 빌트인 파이프라인 시절의 함수이다.
이걸 호출하면 HDRP 렌더링 커맨드 전체를 메인 스레드에서 직접 동기적으로 제출하는 구조라, 그 작업이 끝날 때까지 다음 줄 코드로 못 넘어간다. 또한 HDRP는 그림자 맵이나 포스트 프로세싱 같은 글로벌 자원이 엄청 무거운데, 이걸 매번 강제로 리셋하고 다시 굽느라 비용이 매우 컸다.
 

 
프로파일링에서도 확인 가능하듯, 단순 Camera.Render는 병목이 컸다.
 
2. SubmitRenderRequest 
반면에 이 방식은 HDRP의 Render Graph에 렌더링 작업을 위임하는 방식이다.
직접 렌더 함수를 호출하는게 아니라 "이 카메라로 여기 RenderTexture에 그려줘"라는 요청서만 전달하는 식이다.
렌더링 커맨드들은 HDRP Render Graph가 GPU 타임라인에 맞게 조율해서 최적화된 순서로 처리해 준다.
 

 
프로파일링에서 확인해보면, HDRenderPipelineAllRenderRequest라는 항목 아래 렌더 요청이 순차적으로 쌓여있는 것을 볼 수 있다.
또한 소요시간이 단순 Camera.Render()에 비해 절반 이하정도만 걸렸음을 확인할 수 있다.
 
HDRP/URP의 환경에서 수동 카메라 렌더시, SubmitRenderRequest를 사용하는 것이 바람직하다.

저작자표시 변경금지 (새창열림)

'게임개발 > Unity' 카테고리의 다른 글

[Unity] Property 인스펙터에 표시하기  (0) 2026.04.03
[Unity] 변수 이름을 바꿔도 인스펙터 값을 유지하는 법(FormerlySerializedAs)  (0) 2026.03.24
[Unity] Debug.Log 커스터마이징  (0) 2025.07.12
[Unity] 안쓰는 함수 멋지게 표현하기 (System.Obsolete)  (0) 2025.06.12
[Unity] NetworkVariable, INetworkSerializable Synchronization Problem  (0) 2025.06.05
'게임개발/Unity' 카테고리의 다른 글
  • [Unity] Property 인스펙터에 표시하기
  • [Unity] 변수 이름을 바꿔도 인스펙터 값을 유지하는 법(FormerlySerializedAs)
  • [Unity] Debug.Log 커스터마이징
  • [Unity] 안쓰는 함수 멋지게 표현하기 (System.Obsolete)
깜냥c
깜냥c
게임 개발/클라이언트/AI/PS/기타 연구
  • 깜냥c
    Choice Program
    깜냥c
  • 전체
    오늘
    어제
    • 분류 전체보기 (66)
      • 언어 (12)
        • C,C++ (10)
        • C# (1)
        • Python (1)
      • PS (20)
        • 백준 문제 (19)
        • 알고리즘 (1)
      • 인공지능 (2)
      • 게임제작 (7)
      • 게임개발 (22)
        • Unity (11)
        • Unreal Engine (9)
        • Godot Engine (1)
      • 기타 (2)
  • 블로그 메뉴

    • 홈
    • 방명록
    • 블로그 소개
  • 링크

    • 김병장의 IT 블로그
    • 식품영양과 데이터사이언스
  • 공지사항

  • 인기 글

  • 태그

    C언어
    입출력
    UE5
    Unreal
    Godot
    C++
    unity
    배낭 문제
    BOJ
    백준
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
깜냥c
[Unity] HDRP의 수동 카메라 렌더링 (Camera.Render() 사용금지)
상단으로

티스토리툴바