Streamingle_URP/Assets/Scripts/NiloToon_PlanarReflection_사용법.md

6.0 KiB (Stored with Git LFS)

NiloToon Environment + PIDI Planar Reflections 5 통합 사용법

개요

이 패치는 NiloToon Environment 셰이더에 PIDI Planar Reflections 5의 실시간 반사 기능을 통합합니다.

설치 및 설정

1. 기본 설정

  1. Tools > NiloToon > Create Planar Reflection Bridge 메뉴를 사용하여 브리지 오브젝트를 생성합니다.
  2. 생성된 오브젝트를 반사면이 될 위치에 배치합니다. (예: 바닥, 물 표면)
  3. Transform의 Y축(up)이 반사면의 법선 방향을 향하도록 조정합니다.

2. NiloToonPlanarReflectionBridge 컴포넌트 설정

Reflection Control

  • Reflection Intensity: 반사 강도 (0~1)
  • Reflection Tint Color: 반사 색상 틴트
  • Fresnel Power: 프레넬 효과 강도 (0.1~5)
  • Distortion Strength: 반사 왜곡 강도 (0~0.1)
  • Depth Fade: 깊이 페이드 효과 (0~10)
  • Blur Radius: 반사 블러 반경 (0~2)

Advanced

  • Enable Reflection: 반사 효과 활성화/비활성화
  • Use Depth Fade: 깊이 기반 페이드 사용
  • Reflection Layers: 반사에 포함할 레이어

3. PlanarReflectionRenderer 설정

기본 PIDI Planar Reflections 5 설정:

  • Reflect Layers: 반사될 오브젝트의 레이어 마스크
  • Output Resolution Multiplier: 반사 텍스처 해상도 배율
  • Reflection Framerate: 반사 업데이트 프레임레이트 (0 = 매 프레임)
  • Render Shadows: 반사에 그림자 포함 여부

사용 방법

Unity Inspector에서 직접 설정 (권장)

  1. NiloToon Environment 셰이더를 사용하는 재질을 선택합니다.
  2. Inspector에서 "Planar Reflection" 섹션을 펼칩니다.
  3. "Enable Reflection" 체크박스를 활성화합니다.
  4. "Auto-Setup Planar Reflection" 버튼을 클릭하여 자동 설정합니다.
  5. 반사 설정을 조절합니다:
    • Intensity: 반사 강도
    • Tint Color: 반사 색상 틴트
    • Fresnel Power: 프레넬 효과 강도
    • Distortion: 반사 왜곡
    • Depth Fade: 깊이 페이드
    • Blur Radius: 블러 반경

스크립트를 통한 설정

특정 재질에만 적용하려면:

NiloToonPlanarReflectionBridge bridge = FindObjectOfType<NiloToonPlanarReflectionBridge>();
bridge.ApplyToMaterial(yourMaterial);

모든 재질에 적용

bridge.ApplyToAllNiloToonMaterials();

셰이더 수정 사항

NiloToonEnvironment_LitInput.hlsl

  • 반사 관련 프로퍼티 추가
  • 반사 텍스처 및 매트릭스 정의

NiloToonEnvironment_ExtendFunctionsForUserCustomLogic.hlsl

  • 반사 계산 함수 추가
  • SurfaceData 및 색상에 반사 적용

PlanarReflectionRenderer.cs

  • NiloToon 셰이더와의 글로벌 프로퍼티 연동
  • 반사 매트릭스 자동 계산

성능 최적화 팁

  1. Reflection Framerate 설정으로 반사 업데이트 빈도 조절
  2. Output Resolution Multiplier로 반사 텍스처 해상도 조절
  3. Reflect Layers로 불필요한 오브젝트 제외
  4. 정적 환경에서는 Update On Cast Only 활성화

문제 해결

반사가 보이지 않는 경우

  1. Enable Reflection이 활성화되어 있는지 확인
  2. Reflection Intensity가 0이 아닌지 확인
  3. 반사면 위치와 방향이 올바른지 확인
  4. Reflect Layers에 반사될 오브젝트가 포함되어 있는지 확인
  5. 재질의 Metallic 또는 Smoothness 값이 적절한지 확인 (반사는 매끄러운 표면에서 더 잘 보임)

셰이더 컴파일 오류

  • redefinition of '_ReflectionTex' 오류 발생 시:
    • 이미 수정되었으며, 반사 텍스처는 NiloToonEnvironment_LitInput.hlsl에서만 정의됩니다.
    • 사용자 정의 셰이더에서 NiloToon 셰이더를 include할 때는 글로벌 프로퍼티를 사용하세요.

"PlanarReflectionRenderer not found" 오류

이 오류는 PIDI Planar Reflections 5 플러그인이 아직 컴파일되지 않았거나 어셈블리에 포함되지 않았을 때 발생합니다.

해결 방법:

  1. 플러그인 재컴파일:

    • Unity에서 Assets > Reimport All 실행
    • 또는 Assets/External/PIDI Game Development Framework/ 폴더 우클릭 > Reimport
  2. Unity 재시작:

    • Unity 에디터를 완전히 종료하고 다시 시작
  3. 어셈블리 정의 확인:

    • Assets/External/PIDI Game Development Framework/Planar Reflections 5/Source Code/ 폴더에 .asmdef 파일이 있는지 확인
    • 있다면 Assets > External > PIDI Game Development Framework > Planar Reflections 5 > Source Code 폴더 우클릭 > Reimport
  4. 디버그 정보 확인:

    • Inspector에서 "Debug: Check Available Types" 버튼 클릭
    • Console에서 사용 가능한 타입들 확인
  5. 수동 설정:

    • Tools > NiloToon > Create Planar Reflection Bridge 메뉴 사용
    • 또는 씬에 빈 GameObject 생성 후 PlanarReflectionRenderer 컴포넌트 수동 추가

일반적인 원인:

  • 플러그인이 아직 컴파일 중
  • 어셈블리 정의 파일 문제
  • Unity 버전 호환성 문제
  • 플러그인 파일 손상

성능 문제

  1. Reflection Framerate를 낮춤 (30fps 이하)
  2. Output Resolution Multiplier를 0.5로 설정
  3. Render Shadows 비활성화
  4. Use Post FX 비활성화

반사 품질 개선

  1. Output Resolution Multiplier를 1.0 이상으로 설정
  2. Use Anti-aliasing 활성화
  3. Use Mip Maps 활성화
  4. Accurate Matrix 활성화
  5. 재질의 Metallic 값을 높여서 더 강한 반사 효과 적용

호환성

  • Unity 2022.3 이상
  • URP (Universal Render Pipeline) 14.0 이상
  • NiloToon Environment 셰이더
  • PIDI Planar Reflections 5

주의사항

  • 이 패치는 NiloToon Environment 셰이더의 사용자 확장 기능을 사용합니다.
  • SRP Batcher 호환을 위해 일부 프로퍼티는 글로벌로 설정됩니다.
  • 다중 반사면 사용 시 성능에 주의하세요.