오프스크린 렌더링용 RenderTexture를 다루는 방법
업데이트: 2025/10/14
이 페이지에는 베타 버전에 관한 설명이 포함되어 있습니다.
Cubism 5 SDK for Unity R5 beta2 및 Cubism 5 SDK for Web R5 beta2 이상에서는 오프스크린 렌더링에 이용하는 RenderTexture(RenderTarget)를 사용하여 메모리의 압박을 억제하는 구조를 적용하고 있습니다.
오프스크린 렌더링의 흐름
Cubism SDK for Unity와 Cubism SDK for Web에서 오프스크린 렌더링의 흐름은 다음과 같습니다.

RenderTexture 재사용 구조

RenderTexture를 재사용할 수 있는 모델 구조 패턴
RenderTexture를 재사용할 수 있는 모델 구조, 재사용할 수 없는 모델 구조
부모의 오프스크린 렌더링의 RenderTexture는 자식의 계층에 있는 모든 렌더링 오브젝트(Drawable·오프스크린 렌더링)의 렌더링이 완료될 때까지 RenderTexture를 계속 유지합니다.
이 때문에 오프스크린 렌더링이 부모자식 계층으로 되어 있는 경우 최대로 부모자식 계층에 있는 오프스크린 렌더링의 수만큼 RenderTexture가 확보됩니다.
예를 들어 아래와 같은 구조의 모델은 최대 3개의 RenderTexture를 확보합니다.

같은 계층에 오프스크린 렌더링이 병렬로 존재하는 경우 그 계층에서 이용되는 RenderTexture는 1개입니다.
예를 들어 아래와 같은 구조의 모델은 4개의 오프스크린 렌더링을 가지지만 부모자식 계층으로 되어 있는 오프스크린 렌더링이 존재하지 않기 때문에 생성 및 이용되는 RenderTexture는 1개입니다.

이들이 조합된 아래와 같은 구조의 모델인 경우 부모자식 계층으로 되어 있는 오프스크린 렌더링의 최대 수는 3개(PartA~PartD 부분)이므로 생성되는 RenderTexture의 수 및 이용되는 최대 RenderTexture 수는 3개가 됩니다.

이전 프레임에서 사용되지 않은 RenderTexture 수를 해제
Unity의 경우 이미 생성된 RenderTexture 중에서 불필요하게 된 RenderTexture만 해제하고 싶으면 이전 프레임에서 사용되지 않은 수의 RenderTexture를 해제하는 함수 CubismOffscreenRenderTextureManager.ReleaseStaleRenderTextures()
를 호출하여 실시할 수 있습니다.
CubismOffscreenRenderTextureManager.GetInstance().ReleaseStaleRenderTextures();
장면 전환 시에 해제할 경우(Unity)
SceneManager.sceneLoaded += OnSceneLoaded(); ~~~ private void OnSceneLoaded() { CubismOffscreenRenderTextureManager.GetInstance().ReleaseStaleRenderTextures(); }