Repository navigation
๐ง chore: ๋๋๋ฆด ๊ทผ๊ฑฐ๊ฐ ์ฌ๋ผ์ง @react-three/postprocessing ์์กด์ฑ ์ ๊ฑฐ - #101
Conversation
#69์์ outline์ declarative wrapper ๋์ postprocessing composer๋ก ์ง์ ๊ทธ๋ฆฌ๊ธฐ๋ก ํ๋ฉด์ @react-three/postprocessing ์ import ๋ ์ ๋ถ ์ฌ๋ผ์ก์ง๋ง, "์ธ์ ๊ฐ wrapper ๊ฐ ๊ณ ์ณ์ง๋ฉด ๋๋๋ฆฐ๋ค"๋ ์ ์ ๋ก ์์กด์ฑ์ ๋จ๊ฒจ ๋์๋ค. ๊ทธ ์ ์ ๋ฅผ ๋ค์ ํ์ธํ๋ค. ๋น์ ๊ทผ๊ฑฐ์๋ EffectComposer.tsx ์ `// TODO: rewrite all of this with R3F v9`(v3.0.4 L134)๋ v3.1.0 ์ pass lifecycle ์ฌ์์ฑ์ผ๋ก ์ฌ๋ผ์ก๊ณ , `__r3f` ์ ๊ทผ์ util.tsx ์ readGroupChildren ์ผ๋ก ๋ฌธ์ํ๋๋ค. ์ฆ wrapper ์ชฝ ์ฌ์ ์ ๋์์ก๋ค. ๊ทธ๋ผ์๋ ๋๋๋ฆฌ์ง ์๋๋ค. ์ง๊ธ ๊ตฌํ์ toneMapping ์ ์ฅยท๋ณต๊ตฌ, Canvas ์ antialias ๋ฅผ ๋์ฒดํ๋ multisampling, outline.dispose() ๋ฅผ composer ๋ณด๋ค ๋จผ์ ๋ถ๋ฅด๋ ์ ๋ฆฌ ์์๋ฅผ ๋ช ์์ ์ผ๋ก ์ก๊ณ ์๊ณ , wrapper ๋ก ๊ฐ๋ฉด ์ด ์ ์ด๊ฐ ๋ค์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ธฐ๋ณธ๊ฐ์ ๋ฌถ์ธ๋ค. ์ฌ์ฉ์์๊ฒ ๋ณด์ด๋ ๋ณํ๋ ์๋ค. ๋๋๋ฆด ๊ณํ์ด ์๋ ์์กด์ฑ์ ํธ๋ฆฌ(n8ao, maath ํฌํจ)๋ง ํค์ฐ๋ฏ๋ก ์ง์ด๋ค. ๊ฐ์ ์ด์ ๋ก outline-effect.tsx ์ "R3F v9 ํธํ์ฑ ๋ฌธ์ ๋ฅผ ์ฐํํ๋ค"๋ ์ฃผ์๋ ๊ต์ฒดํ๋ค โ ํด์๋ ๋ฌธ์ ๋ฅผ ๊ทผ๊ฑฐ๋ก ๋จ๊ฒจ ๋๋ฉด ๋ค์ ์ฌ๋์ด ์๋ ์ ์ฝ์ ๋ฏฟ๋๋ค. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
No actionable comments were generated in the recent review. ๐ โน๏ธ Recent review infoโ๏ธ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Team Run ID: โ Files ignored due to path filters (1)
๐ Files selected for processing (2)
๐ค Files with no reviewable changes (1)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. Walkthrough
ChangesOutlineEffect ์ ์ง๋ณด์
Estimated code review effort: 1 (Trivial) | ~2๋ถ Merge Risk: โช Minimal ยท up to This change removes an unused postprocessing wrapper dependency and updates its rationale comment without altering the outline rendering path. No current merge-readiness risk remains. ๐ฅ Pre-merge checks | โ 5โ Passed checks (5 passed)
โจ Finishing Touches๐ Generate docstrings
๐งช Generate unit tests (beta)
Warning Some tools did not complete. Review the errors below. ๐ง ESLint
src/features/interaction/ui/outline-effect.tsxESLint skipped: missing config or dependency (missing-dependency). The ESLint configuration references a package that is not available in the sandbox. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
๋ชฉ์
#69์์ outline ๋ ๋๋ฅผ imperative composer๋ก ์ฎ๊ธฐ๋ฉฐ
@react-three/postprocessing์ import 0๊ฑด์ด ๋์ง๋ง, "wrapper๊ฐ ๊ณ ์ณ์ง๋ฉด ๋๋๋ฆฐ๋ค"๋ ์ ์ ๋ก ์์กด์ฑ๋ง ๋จ์ ์์๋ค. ๊ทธ ์ ์ ๋ฅผ ๋ค์ ํ์ธํด ๋๋๋ฆฌ์ง ์๊ธฐ๋ก ํ์ ํ๊ณ , ๋จ์ ํ์ ์ ์ ๋ฆฌํ๋ค.@react-three/postprocessingn8ao,maathํธ๋ฆฌ๋ ๊ฐ์ด ๋น ์ง์ ์ฉ ๋ฒ์๋ ์์กด์ฑ 1๊ฐ์ ์ฃผ์ 2์ค. ๋ ๋ ๋์์ ๊ฑด๋๋ฆฌ์ง ์์๋ค.
์ค๊ณ
1. ๋๋๋ฆด ๊ทผ๊ฑฐ์๋ upstream TODO๋ ์ค์ ๋ก ์ฌ๋ผ์ก๋ค
#69๊ฐ declarative wrapper๋ฅผ ๋ฒ๋ฆฐ ๊ทผ๊ฑฐ ์ค ํ๋๊ฐ ์ด ์ฃผ์์ด์๋ค.
v3.1.1(3.1.0 2026-08-23, 3.1.1 2026-08-27)์์๋ ์ด๋ ๊ฒ ๋ฐ๋์๋ค.
__r3f์ ๊ทผ^9.0.0>=9.7.0(๋ ํฌ๋ lock 9.5.0)์ฆ "๋ฏธ์์ฑ์ด๋ผ ๋ชป ๋ฏฟ๊ฒ ๋ค"๋ ์ํ๋ ํด์๋๋ค. ๊ทผ๊ฑฐ๊ฐ ์ ํจํ์ง๋ถํฐ ํ์ธํ๊ณ ๊ฒฐ๋ก ์ ๋ธ ๊ฒ์ด์ง, ๊ฒฐ๋ก ์ ๋จผ์ ์ ํ ๊ฒ ์๋๋ค.
2. ๊ทธ๋ผ์๋ wrapper๋ก ๋๋๋ฆฌ์ง ์๋๋ค
๋๋๋ฆฌ๋ ค๋ฉด fiber lock 9.5.0 โ 9.7.0, wrapper 3.0.4 โ 3.1.1,
outline-effect.tsx์ ๊ทธ ํ ์คํธ ์ฌ์์ฑ์ด ํ์ํ๋ฐ ์ฌ์ฉ์์๊ฒ ๋ณด์ด๋ ๋ณํ๋ ์๋ค. ๋ฐ๋๋ก ์๋ ๊ฑด ๋ช ํํ๋ค.gl.toneMapping์ ์ฅ โNoToneMappingโ ์ธ๋ง์ดํธ ์ ๋ณต๊ตฌantialias: true๋ฅผ ๋์ฒดํ๋multisampling: min(4, maxSamples)outline.dispose()๋ฅผcomposer.dispose()๋ณด๋ค ๋จผ์ ํธ์ถํด object layer ๋ณต๊ตฌv3.1.0์ "internal rewrite" ๊ท๋ชจ์ ๋ฆด๋ฆฌ์ค์ด๊ณ ๋์จ ์ง 2์ฃผ๋ค. ๊ฐ์ํ ์ด์ ๊ฐ ์๋ ์์ ์ ๋จผ์ ์ฌ๋ผํ ์ด์ ๋ ์๋ค.
3. ๋๋๋ฆด ๊ณํ์ด ์์ผ๋ฉด ์์กด์ฑ๋ ๊ทผ๊ฑฐ๋ ๋จ๊ธฐ์ง ์๋๋ค
import 0๊ฑด์ธ ํจํค์ง๋ lock์์
n8ao,maath๊น์ง ๋๊ณ ์จ๋ค. ๋๋๋ฆด ๊ณํ์ด ์๋ค๊ณ ๊ฒฐ๋ก ๋ฌ์ผ๋ ๋จ๊ธธ ์ด์ ๊ฐ ์๋ค.postprocessing(์ง์ ์์กด,^6.39.0)์ ์ค์ ์ฌ์ฉ์ฒ๋ผ ์ ์งํ๋ค.Changes
f375957@react-three/postprocessing์์กด์ฑ ์ ๊ฑฐ์ ์ง / ์๋์ ์ ์ธ
@react-three/fiber^9.5.0: wrapper๋ฅผ ์ ์ฐ๊ธฐ๋ก ํ์ผ๋ฏ๋ก 9.7.0์ผ๋ก ์ฌ๋ฆด ์ด์ ๊ฐ ์ด๋ฒ ๋ฒ์์ ์๋ค. ๋ฌด๊ดํ 3D ํ๊ท ์ํ๋ง ์น๋๋คpostprocessing^6.39.0: ์ต์ 6.39.4์ง๋ง ์ด๋ฒ ๊ฒฐ์ ๊ณผ ๋ฌด๊ดํ ๋ฒํ๋ผ ์์ง ์์๋คeslintยทglobยท@ungap/structured-clone์deprecated๋ฉ์์ง๊ฐ ๊ฐฑ์ ๋๋ค.pnpm install --lockfile-only๊ฐ ๋ ์ง์คํธ๋ฆฌ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์๋ก ์ฝ์ด์์ ์๊ธด ๊ฒ์ผ๋ก ๋ฒ์ ๋ณํ๋ ์๋ค๋ฆฌ๋ทฐ ํฌ์ธํธ
grep -rn "react-three/postprocessing"๊ฒฐ๊ณผ๊ฐpackage.jsonํ ์ค๊ณผ ์ฃผ์ ํ ์ค๋ฟ์ด์๋ค. ๋น๋ ์ค์ (next.config.ts์ transpile ๋ชฉ๋ก ๋ฑ)์๋ ์๋คTest plan
pnpm install --frozen-lockfileโ ํต๊ณผpnpm run check-typesโ ์๋ฌ ์์pnpm run test:vitestโ ์ ๋ฒํท ํต๊ณผ (src/features/interaction/ui/outline-effect.test.tsx4 tests ํฌํจ)eslint+prettier --check(๋ณ๊ฒฝ ํ์ผ) โ ํต๊ณผpnpm test:browserโ ๋ฏธ์คํ. import 0๊ฑด ํจํค์ง ์ ๊ฑฐ๋ผ ๋ฐํ์ ๊ฒฝ๋ก ๋ณํ๊ฐ ์๋ค๊ณ ํ๋จํ์
@react-three/fiber๋ฅผ ๋ค๋ฅธ ์ด์ ๋ก 9.7.0 ์ด์์ผ๋ก ์ฌ๋ฆฌ๊ฒ ๋๊ณ , (b) v3.1.x๊ฐ ๋ช ๋ฆด๋ฆฌ์ค ๋ ์์ ํ๋์ ๋. ๊ทธ ์ ์ ์ฌ๊ฒํ ๋น์ฉ๋ง ๋ ๋คOutline requires <EffectComposer autoClear={false}> to render correctly.์ฝ์ ๊ฒฝ๊ณ ๋ฅผ ์ถ๊ฐํ๋ค. wrapper์autoClear๊ธฐ๋ณธ๊ฐ์ ์ง๊ธ๋true๊ณ , ์ด ์กฐ๊ฑด์์ outline์ ์๋ฌ ์์ด ์๋ฌด๊ฒ๋ ์ ๊ทธ๋ ค์ง๋ค. ํ HERO ์ธํฐ๋ ์ (์นด๋ฉ๋ผ, ๋ ธํธ๋ถ)ย #69 ๋น์ declarative ๊ฒฝ๋ก์์ outline์ด ์ ๋ณด์ด๋ ์ฆ์๊ณผ ์กฐ๊ฑด์ด ์ผ์นํ๋ค. ๋น์ ์ฝ๋๊ฐ ๋จ์ ์์ง ์์ ๋จ์ ํ ์๋ ์์ง๋ง, ์ธ์ ๊ฐ wrapper๋ฅผ ๋ค์ ๋ณผ ๋ ๊ฐ์ฅ ๋จผ์ ํ์ธํ ๊ฐ์ด๋คSummary by CodeRabbit
๋ฌธ์
OutlineEffect์ปดํฌ๋ํธ์ ์ฃผ์์ ํ์ฌ ๊ตฌํ ๋ฐฉ์์ ๋ง๊ฒ ์์ ํ์ต๋๋ค.์ ๋ฆฌ
@react-three/postprocessing์์กด์ฑ์ ์ ๊ฑฐํ์ต๋๋ค.