Skip to content

Scaler 레퍼런스

Web Adaptive Performance에는 특수 Scaler(최적화 모듈) 세트가 포함되어 있습니다. Indexer는 시각적 영향(Visual Impact)과 현재 병목 현상 유형(Target: CPU 또는 GPU)에 따라 구현할 Scaler를 자동으로 선택합니다.

호환성 매트릭스

다음은 호환성 매트릭스와 사용 가능한 모든 모듈에 대한 설명입니다.

Scaler파이프라인Target설명
ResolutionBiRP URPGPU렌더링 해상도를 낮추어 GPU Fillrate에 대한 부하를 근본적으로 줄입니다. 아래 세부 사항을 확인하세요.
Shadows QualityBiRP URPGPU그림자를 단계적으로 비활성화합니다.
URP에서는 먼저 부드러운 그림자를 비활성화한 다음, 추가 조명 그림자를 비활성화하고, 마지막으로 주 그림자를 비활성화합니다.
BiRP에서는 완전히 비활성화하기 전에 그림자를 Hard Only 모드로 전환합니다.
Shadow CascadesBiRP URPCPU/GPU그림자 캐스케이드 수를 줄입니다. CPU의 Draw Call과 GPU의 부하를 줄입니다.
Shadow DistanceBiRP URPGPU그림자가 그려지는 거리를 줄입니다.
Shadow ResolutionBiRP URPGPU섀도우 맵(Shadow Maps) 해상도를 줄입니다.
Anti AliasingBiRP URPGPU안티앨리어싱(MSAA) 품질을 완전히 비활성화될 때까지 줄입니다.
LOD BiasBiRP URPGPU카메라에서 더 짧은 거리에 있는 로우 폴리(Low-poly) LOD 모델로 전환하도록 Unity에 강제합니다.
Camera ClipBiRP URPGPU타겟 카메라의 Far Clip Plane 매개변수를 줄여 렌더링에서 멀리 있는 개체를 제거합니다.
Layer CullingBiRP URPCPU특정 개체 레이어의 컬링 거리(Culling Distance)를 비례적으로 줄입니다.
Physics StepBiRP URPCPU물리 계산의 빈도를 줄입니다. 브라우저에서 무거운 물리 부하가 발생할 때 성능을 보호합니다.
LUTURP 전용GPUColor Grading LUT 테이블 크기를 최소로 줄입니다.
Mesh LOD ThresholdUnity 6+GPU공격적인 LOD 변경을 위해 Unity 6.2에 도입된 meshLodThreshold 매개변수를 변경합니다.

Physics Step Scaler 주의사항

물리 Scaler는 Time.fixedDeltaTime 매개변수를 직접 변경합니다. 캐릭터 컨트롤러나 게임 메커니즘이 보간(Interpolation) 없이 고정된 물리 프레임에 엄격하게 의존하는 경우 품질 수준이 낮아지면 개체의 움직임이 끊길(더듬거릴) 수 있습니다.

Scaler 설정 초기화

Scaler 매개변수(예: Min Bound 또는 Max Level 수정)를 실험해 본 후 기본값으로 되돌리려면 Project Settings 창에서 스위치를 껐다가 켜면 됩니다. 플러그인이 기본 설정으로 모듈을 자동으로 다시 만듭니다.

심층 분석: Resolution Scaler

이것은 플러그인에서 가장 강력한 도구로 FPS를 가장 크게 높여줍니다. 활성 파이프라인에 따라 작동 방식이 크게 다릅니다.

URP (Universal Render Pipeline) 모드

URP에서는 스케일링이 완벽하게 작동합니다. 플러그인은 UniversalRenderPipelineAssetrenderScale 속성에 직접 개입합니다. URP는 스케일링된 3D 세계 위에 캔버스(Canvas)를 렌더링할 수 있으므로 인터페이스(UI)는 선명하게 유지됩니다.

BiRP (Built-in Render Pipeline) 모드

역사적으로 BiRP에는 인터페이스를 깨뜨리거나 결함(FBO Feedback Loop)을 일으키지 않고 WebGL에서 작동하는 기본 Render Scale 설정이 없습니다. WebAP는 두 가지 독점 전략을 제공하여 이 문제를 해결합니다.

모드 1: NativeBrowserScaling (네이티브 브라우저 스케일링)

플러그인은 네이티브 루프 스푸핑(브라우저의 devicePixelRatio 매개변수 주입)을 통해 <canvas> HTML 요소를 직접 스케일링합니다.

  • 장점: 최고의 성능, GPU 측 오버헤드 제로.
  • 단점: 게임 인터페이스가 3D 그래픽과 함께 흐려집니다. 이 모드는 컴파일된 WebGL 빌드에서만 작동합니다(Unity 에디터에서는 변경 사항이 표시되지 않음).

모드 2: RenderTextureScaling

플러그인은 대상 카메라의 렌더링을 압축된 공유 텍스처로 리디렉션하고 숨겨진 합성 카메라(Compositor Camera)를 사용하여 이미지를 표시합니다.

  • 장점: 3D 세계는 스케일링되는 반면 UI(텍스트, 버튼)는 수정처럼 선명하게 유지됩니다.
  • 단점: Blit 작업(텍스처를 화면에 복사)으로 인해 GPU에 약간의 부하가 추가됩니다.

마우스 클릭 수정 (Raycasts)

RenderTextureScaling을 사용하면 가상 화면 좌표가 압축됩니다. 3D 개체의 마우스 클릭이 계속해서 올바르게 작동하도록 하기 위해 플러그인은 대상 카메라의 표준 PhysicsRaycasterPhysics2DRaycaster 구성 요소를 맞춤형 WebScaledPhysicsRaycaster 구성 요소로 자동 교체합니다. 광선(ray)의 정확성은 어떤 스케일에서도 완벽하게 유지됩니다.

UI 선명도를 유지하는 방법? (BiRP RenderTextureScaling용)

RenderTextureScaling을 사용하는 BiRP에서 3D 그래픽을 스케일링하는 동안 선명한 인터페이스를 유지하려면 Canvas를 올바르게 구성해야 합니다. 두 가지 옵션 중 하나를 선택하세요:

옵션 1: Screen Space - Overlay (권장)

가장 간단하고 안정적인 방법입니다. 플러그인이 자동으로 모든 작업을 처리합니다.

  1. 씬의 계층 구조에서 Canvas를 선택합니다.
  2. Canvas 구성 요소에서 Render ModeScreen Space - Overlay로 설정합니다.
    결과: Unity는 압축된 3D 세계 위에 100% 네이티브 해상도로 인터페이스를 렌더링합니다.

옵션 2: Screen Space - Camera (복잡한 레이어의 경우)

3D 모델, 입자 및 UI를 혼합해야 하는 경우에 사용됩니다. 렌더링을 두 대의 카메라로 분리해야 합니다.

  1. 기본 카메라(3D): 태그가 Scaler의 Target Tags 배열에 지정되어 있는지 확인하세요. Culling Mask 필드에서 UI 레이어의 선택을 취소합니다. Depth0으로 설정합니다.
  2. UI 카메라(새 카메라): 인터페이스를 렌더링할 새 카메라를 만듭니다. 해당 태그를 Scaler 설정에 추가하지 마십시오.
    • Clear FlagsDepth Only로 설정합니다(카메라가 3D 배경을 지우지 않도록).
    • Culling Mask를 오직 UI 레이어로 설정합니다.
    • Depth1로 설정합니다(기본 카메라보다 크게).
  3. Canvas 설정: Render ModeScreen Space - Camera로 설정하고 새 UI 카메라를 Render Camera 슬롯으로 드래그합니다.