이전 fix는 cullResults 기반 DrawRendererList + manual DrawRenderer 둘 다
호출해서 캐릭터가 frustum 안에 있을 때 shadow map에 두 번 그려졌음.
manual draw가 cullResults에 의존하지 않으므로 DrawRendererList 자체가
불필요. 제거하여 GPU 부하 ~절반 감소 + 코드 단순화.
- RG path: PassData.rendererListHandle, RendererListParams,
CreateRendererList, UseRendererList, DrawRendererList 모두 제거
- Legacy path: cullingParameters/cullResults 계산, context.Cull,
context.DrawRenderers 모두 제거 (terrainCrashSafeGuard 분기 자체가
무의미해짐)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Unity 6 RG path가 main camera cullResults만 사용하여 카메라가 캐릭터를
프러스텀 밖으로 두면 shadow map RT에 캐릭터가 안 그려져 바닥 그림자가
사라지던 문제 해결.
- Pass.cs ExecutePass(RG)/Execute(Legacy) 에 manual cmd.DrawRenderer
추가하여 NiloToonAllInOneRendererFeature.characterList 의 모든
활성 캐릭터를 cullResults 의존성 없이 직접 그림
- shader 별 NiloToonSelfShadowCaster pass index 캐싱
- validCharList의 frustum AABB 필터 제거하여 키워드/ortho box 항상 유지
- SkinnedMeshRenderer.updateWhenOffscreen 강제로 카메라 밖에서도
본 매트릭스 갱신 (localBounds는 GetCharacterBoundCenter에 영향 주므로
건드리지 않음)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Initialize 시 transform.localScale을 Vector3.one으로 강제
- 비-1 scale prefab의 경우 LogWarning 출력
- avatarScale=1이 모든 캐릭터에서 일관되게 시각적 1배를 의미
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- m_dataDescs null 체크 추가: SkipDataDescriptions=true 시 NatNet 스레드 크래시 방지
- m_dataDescs를 NatNet 콜백에서 로컬 변수로 캡처: UpdateDefinitions() 중 참조 교체 레이스 방지
- m_assetIdToNameCache 클리어를 락으로 보호: NatNet 스레드와의 동시 접근 방지
- _EnterFrameDataUpdateLock/_ExitFrameDataUpdateLock을 internal+Obsolete로 변경: 데드락 위험 차단
- OptitrackRawDataReceiver를 FillBoneSnapshot 패턴으로 변경: torn read 방지
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- SetProperty 원격 명령을 최초 연결에서만 전송, 재연결 시 스킵
- 정의 재조회(UpdateDefinitions) 쿨다운 5초→15초, 최대 10회 제한
- DrawMarkers/DrawTMarkersetMarkers/DrawCameras/DrawForcePlates 락 범위 축소
- RecordOnPlay 재연결 루프에서 녹화 시작/종료 스킵, 성공 후에만 재시작
- SubscribeMarkers 실패 시 10초 쿨다운 (매 프레임 재시도 방지)
- OnNatNetFrameReceived 내 GetSkeletonDefinitionById를 본 루프 밖으로 이동
- GetMarkerName assetID→이름 캐시 도입 (3중 선형 탐색 제거)
- OptitrackRigidBody Update+OnBeforeRender 이중 NatNet 호출 제거 (캐싱)
- OptitrackSkeletonAnimator_Mingle 스켈레톤 체크 주기 0.1초→1초+지수 백오프
- ToggleRecording 녹화 상태 추적으로 2중 명령 제거
- ResetStreamingSubscriptions 중복 명령 축소
- GetLatestTMarkMarkerStates 디버그 로그 잔재 제거
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- AvatarOutfitController: 의상 변경 시 NiloToon renderCharacter 토글 + VFX/SFX/컬러 플래시 연출
- TransformEffectPreset ScriptableObject 로 프리셋 공유
- 아바타별 isTransforming 플래그로 동시 변신 지원
- 의상 리스트 순서 변경 (▲▼) 기능
- Piloto Studio 파티클 번들 추가
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- FilterStrength 열거형 및 관련 필드/메서드 전체 삭제
- Update() two-pass 구조를 single-pass로 단순화
- 에디터 인스펙터의 필터 강도 UI 제거
- 프레임 보간 및 어깨 증폭 기능은 유지
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>