Refactor bloated AGENTS.md, CLAUDE.md, or similar agent instruction files to follow progressive disclosure principles. Splits monolithic files into organized, linked documentation.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Kern HDR/color pipeline contract: scene-referred linear working space, paper white units, radiance format rules, URP output transform ownership, DisplayFinal perceptual/linear space, UI brightness, HDR calibration screen, safe-start HDR switch, and HDROutputController usage. Use when touching lighting shaders, glow, bloom, tonemapping, post-processing, color grading, LUT, display output, UI colors, calibration, or any code with DisplaySettings / HDROutput / PaperWhite / Tonemapping / CompositeFinal / DisplayFinal / VisualTuning. Triggers on: saturate on radiance, clamp color, sRGB in shader, UNorm light buffer, ARGBHalf, paper white, HDROutputReconciler, VisualTuning, BT2390, detectPaperWhite, HDRCalibrationScreen, HDRSwitchPending, HDROutputSettings.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
실행 점수 미검증
설치 방법 보기설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.
This is a contract, not a recommendation. Every number in the render must have a known color space and a known unit.
The working color space of the scene is linear, scene-referred, with no upper bound. 1.0 is reference white, i.e. the display's paper white (DisplaySettings.PaperWhiteNits, 100–400, defaulting from PostProcessLook.DisplayCalibration). A lamp at 8.0 means eight paper-white units — not an error and not "needs clamping". The range above 1.0 belongs to light sources, fire, arcs, flashes, and specular highlights.
saturate, clamp(x, 0, 1), min(x, 1.0) on scene color, lighting, glow, bloom. saturate is permitted only on values that are by definition in 0..1: albedo, alpha, masks, coefficients, coordinates.ARGBHalf or higher (_RadianceDirect, _RadianceBounce, _WorldLightTexture, _StaticGlowField). ARGB32 is allowed only for masks and coefficients (_LightingMaterialField, AO).Done by URP, not us: HDROutputReconciler holds a runtime Volume with Tonemapping in Neutral mode, BT.2390 range compression, detectPaperWhite/detectBrightnessLimits disabled. The same Volume carries ColorAdjustments.postExposure (PostProcessLook.Exposure.Stops), so URP applies it right before its own curve. Adding a custom tone transform on top of URP produces double-mapping and is FORBIDDEN.
PostProcess.compute)scene → world-grid bloom (WorldBloom.compute + WorldBloomAdd.shader) → URP: ColorAdjustments.postExposure (+1 stop, PostProcessLook.Exposure) and Neutral tonemapping → DisplayFinal: divide by paper white → server LUT (ApplyCubeLut, HDR-normalized) → vignette → eigengrau → multiply by paper white in ToDisplayOutput → PQ/scRGB encoding done by URP.
With the world render grid active, DisplayFinal runs per world pixel: eigengrau stays on that lattice, but the vignette is applied by the URP final blit per screen pixel on the scene sample (WorldGridFinalVignette.hlsl), before UI composition; DisplayFinal only computes its mask for the debug view.
DisplayFinalAfter the paper-white division the frame is linear relative to screen white, not sRGB-encoded — URP encodes after us. Therefore:
#16161D) are converted to linear via PerceptualToLinear at the point of application.LinearToPerceptual.Pre-converting constants "forward" in C# is FORBIDDEN: #16161D must appear in code as #16161D.
Interface white equals paper white, not peak brightness. A menu at 1000 nits is a defect.
detectPaperWhite and detectBrightnessLimits are disabled; white point and peak come from user settings. Source is HDRCalibrationScreen with a pattern from the output pass (_CalibrationPattern in PostProcess.compute). Rendering calibration samples via UI is FORBIDDEN: UI white equals paper white and cannot represent peak brightness.
Switching output mode sets DisplaySettings.HDRSwitchPending and writes the file immediately (Save, not SaveDeferred). A flag found at startup means the switch was never confirmed — the game starts in SDR. Applying a saved output mode bypassing this check is FORBIDDEN: a user with an incompatible output would otherwise be stuck on a black screen.
Output state is read only via HDROutput / HDROutputController. Querying HDROutputSettings.main directly from game code is FORBIDDEN, as is calling RequestHDRModeChange outside the controller.
아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.
로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.
아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.
Refactor bloated AGENTS.md, CLAUDE.md, or similar agent instruction files to follow progressive disclosure principles. Splits monolithic files into organized, linked documentation.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Build and operate a live game using Unity Services. Use when the user needs to implement, connect, or debug backend-driven features — battle passes, achievements, player progression, cloud saves, leaderboards, matchmaking, virtual economies, server-authoritative logic, anti-cheat, player accounts and authentication, remote configuration, feature flags, A/B testing, analytics, or cloud resource deployment. Triggers on live-ops, live service, backend, server authority, cloud code, cloud save, remote config, player data, retention, monetization loop, season pass, ranking, multiplayer sessions, lobbies, or any Unity Services integration.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Kern engine critical invariants: coordinate system, UI Toolkit positioning, RenderTexture blit, LifetimeScope/scene structure, VolumeProfile editor API, camera pixel-grid alignment, performance analysis rules, profiler interpretation, and the no-fallback policy. Use when touching coordinates, WorldToScreen, UI element anchoring, RenderTexture, LifetimeScope, VolumeProfile, camera, FPS analysis, Profiler markers, or any code near an "invariant" comment. Triggers on: CoordinateUtils, MapManager.WorldHeight, RuntimePanelUtils, CameraTransformWorldToPanel, WorldToLocal, PositionWriteEpsilon, CameraPixelGridAligner, LifetimeScope, RegisterComponent, VolumeProfile, AssetDatabase.AddObjectToAsset, EditorLoop, VSync, fallback, paper white, FPS, frame time.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Kern project C# conventions, namespace rules, DI/VContainer patterns, and assembly layer boundaries. Use when writing, editing, or reviewing any C# file — MonoBehaviours, ScriptableObjects, services, contracts, factories, or editor scripts. Triggers on: namespace, nullable, asmdef, VContainer, RegisterComponent, IObjectResolver, composition root, Kern.Contracts, primary constructor, record struct, SA1513, _camelCase, PascalCase, asmref, MonoScript.GetClass.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Synchronize and compile FMOD Studio banks into StreamingAssets
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Implement, configure, and debug Unity In-App Purchases (IAP) — store connection, product catalog, consumable/non-consumable/subscription purchases, two-step pending-confirm flow, receipt validation, entitlement checking, restore transactions, Apple extensions (promotional purchases, Ask-to-Buy, code redemption), and Google Play extensions (subscription upgrade/downgrade), D2C Capabilities(direct to customer), 3rd party payment provider (Stripe/Coda) via Unity IAP/Unity Cloud. Use when the user needs to add, modify, debug, or migrate from native Android/iOS billing, 3rd party packages(RevenueCat/Adapty/Essential Kit/Unipay supported) to IAP. Triggers on microtransactions (MTX), monetization, real-money purchases, store purchases, buying items, support D2C, purchase via Stripe/Coda, migrate from native billing(Google's BillingClient or Apple's StoreKit/SKPaymentQueue/SKProduct)/RevenueCat/Adapty/EssentialKit/Unipay.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.