Unity는 커스텀 렌더 텍스처를 업데이트할 때 기본적으로 머티리얼을 사용하여 전체 텍스처를 한 번에 업데이트합니다. 커스텀 렌더 텍스처를 사용하면 부분 업데이트 영역을 정의할 수 있습니다. 이를 사용하여 원하는 만큼 많은 영역과 해당 영역이 처리되는 순서를 정의할 수 있습니다.
다양한 목적으로 업데이트 영역을 사용할 수 있습니다. 예를 들어 텍스처에 물방울을 뿌리고 전체 패스를 수행하여 잔물결을 시뮬레이션할 수 있는 여러 개의 작은 영역을 지정할 수 있습니다. 전체 텍스처를 업데이트할 필요가 없다는 것을 알고 있는 경우에도 최적화로 사용할 수 있습니다.
업데이트 영역에는 고유한 프로퍼티 세트가 있습니다. Update Zone Space는 디스플레이에 표시됩니다. 좌표는 텍스처의 Dimension에 따라 달라집니다. 2D 및 큐브 텍스처의 경우 2D, 3D 텍스처의 경우 3D입니다.
스크립팅 API의 커스텀 렌더 텍스처 기능 대부분에 액세스할 수 있습니다. 스크립트를 사용하여 머티리얼 파라미터를 변경하고, 빈도를 업데이트하고, 영역을 업데이트하고, 업데이트를 요청하는 등의 작업을 수행할 수 있습니다.
Unity는 커스텀 렌더 텍스처를 업데이트하거나 초기화할 때 현재 프로퍼티를 사용하여 다음 프레임을 렌더링합니다. 이렇게 하면 이 텍스처를 사용하는 모든 머티리얼에 최신 결과가 보장됩니다. 예를 들어 다음 스크립트에서 Unity는 두 번째 업데이트 영역 배열을 사용하여 두 가지 업데이트를 수행합니다.
customRenderTexture.updateZones = updateZones1;
customRenderTexture.Update();
customRenderTexture.updateZones = updateZones2;
customRenderTexture.Update();
참고: Unity는 Update() 또는 Initialize()를 호출하는 동시에 커스텀 렌더 텍스처를 업데이트하거나 초기화하지 않습니다. 이는 Unity가 다음 프레임 시작 시 커스텀 렌더 텍스처를 항상 업데이트하고 초기화하기 때문입니다.
커스텀 렌더 텍스처를 이중 버퍼링할 수 있습니다. 이렇게 하려면 Custom Render Textures 컴포넌트에서 Double Buffered를 활성화하거나 CustomRenderTexture.doubleBuffered를 사용합니다.
이중 버퍼링은 한 커스텀 렌더 텍스처 내에 각 업데이트 후 Unity가 교체할 수 있는 두 개의 텍스처가 있다는 의미입니다. 이렇게 하면 커스텀 렌더 텍스처에 새 결과를 작성하는 동안 마지막 업데이트의 결과를 읽을 수 있습니다.
이중 버퍼링은 셰이더가 Unity가 텍스처에 이미 작성한 콘텐츠를 사용해야 하지만 클래식 블렌딩 모드로 값을 혼합할 수 없는 경우 특히 유용합니다. 또한 셰이더가 이전 결과와 다른 픽셀을 샘플링해야 하는 경우에도 필요합니다.
성능 경고: 현재 이중 버퍼링은 스왑 빈도와 텍스처 해상도에 따라 성능 저하를 초래할 수 있는 각 스왑에서의 텍스처 복사를 수반합니다.