Render To Texture가 무엇일까?

박승우·2024년 6월 24일
0

자 쉰 여섯 번째 키워드인 'Render To Texture'를 알아 보았다.

이전 키워드에서 알아보았던 Rendering과 연관이 있는 키워드 인것같아서 이론과 사용하는 Unity로도 알아보았다.

Render To Texture가 무엇일까?

Render to Texture는 컴퓨터 그래픽스와 게임 개발에서 중요한 개념으로, 렌더링된 장면을 화면에 직접 출력하는 대신 텍스처로 렌더링하는 기술을 말한다. 위 사진처럼 카메라가 보여지는 장면을 텍스처화를 진행해서 메인 카메라에 보이게 할 수 있다. 관련된 기술을 다음 과 같다.

  1. 포스트 프로세싱 효과: 화면 전체에 다양한 시각적 효과를 적용할 때 사용된다. 예를 들어, 블러, 블룸, HDR (High Dynamic Range) 효과 등을 적용하기 위해 화면을 텍스처로 렌더링한 후 이 텍스처를 이용해 후처리 작업을 수행한다.

  2. 환경 맵핑: 반사 효과나 주변 환경을 텍스처에 미리 렌더링하여 이를 오브젝트에 적용하는 방식이다. 큐브 맵, 스피어 맵 등을 생성하는 데 사용된다.

  3. 쉐도우 맵핑: 그림자를 정확하게 표현하기 위해 사용된다. 광원의 관점에서 장면을 렌더링하여 그림자 맵을 생성하고, 이를 이용해 최종 렌더링에서 그림자를 투영한다.

  4. 동적 텍스처 생성: 실시간으로 변화하는 텍스처를 생성할 때 사용된다. 예를 들어, 화면의 일부를 확대하여 미니맵을 생성하거나, 동적인 UI 요소를 텍스처로 생성하는 경우이다.

구현 방법

  1. 프레임 버퍼 오브젝트(FBO) 생성: OpenGL이나 DirectX와 같은 그래픽스 API를 이용하여 프레임 버퍼 오브젝트를 생성한다. FBO는 렌더링 결과를 저장할 버퍼를 정의한다.

  2. 텍스처 생성 및 바인딩: 렌더링 결과를 저장할 텍스처를 생성하고, 이를 FBO에 바인딩한다.

  3. 렌더 타깃 설정: FBO를 현재 렌더 타깃으로 설정한다. 이 상태에서 렌더링된 결과는 화면 대신 텍스처에 저장된다.

  4. 렌더링 수행: 렌더링 작업을 수행한다. 이 때의 출력은 FBO에 연결된 텍스처에 저장된다.

  5. 텍스처 사용: 렌더링된 텍스처를 다양한 용도로 사용한다. 예를 들어, 다른 장면의 텍스처로 사용하거나, 포스트 프로세싱에 이용할 수 있다.

응용 예제

  • 포스트 프로세싱
    화면의 색상 데이터를 텍스처로 렌더링한 후, 이를 후처리 쉐이더에서 샘플링하여 다양한 시각 효과를 적용할 수 있다.
    - 예: 블러, 블룸, 그레이스케일 효과 등.

  • 쉐도우 맵핑
    빛의 시점에서 장면을 렌더링하여 깊이 정보를 저장한 텍스처를 생성하고, 이를 이용해 그림자를 정확하게 투영한다.
    - 예: 그림자가 있는 객체에 그림자를 드리우는 효과.

  • 환경 맵핑
    큐브 맵 텍스처를 생성하여 반사 효과를 구현할 수 있다. 이는 물체 표면에 반사되는 환경을 사실적으로 표현하는 데 사용된다.
    - 예: 물체 표면의 반사.

고급 주제

  • 멀티 타깃 렌더링
    여러 개의 색상 첨부물을 사용하여 동시에 여러 렌더링 출력을 생성할 수 있다.
    - 예: 디퍼드 셰이딩에서 색상, 법선, 깊이 정보를 동시에 렌더링.

  • 텍스처 배열 및 3D 텍스처
    여러 장면을 텍스처 배열이나 3D 텍스처에 렌더링하여 다양한 효과를 구현할 수 있다.
    - 예: 여러 뷰포트를 사용하는 멀티뷰 렌더링.

  • 큐브 맵 렌더링
    6개의 얼굴을 가지는 큐브 맵 텍스처에 렌더링하여 환경 반사나 스카이박스에 사용할 수 있다.
    - 예: 실시간 환경 반사.

결론 - 느낀 점

이게 확실히 예제를 보고 이론을 보니까 어떤 기술이고 어떻게 동작하는지 알게 되어서 이해하기 쉬웠다.

profile
게임을 좋아하는 사람 입니다!

0개의 댓글