--- id: wiki-2026-0508-webgl2 title: WebGL2 category: 10_Wiki/Topics status: needs_review canonical_id: self aliases: [P-Reinforce-AUTO-208D23] duplicate_of: none source_trust_level: A confidence_score: 0.9 tags: [auto-reinforced] raw_sources: [] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - [[WebGL|WebGL]]2" inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08) tech_stack: language: unspecified framework: unspecified --- # [[WebGL2|WebGL2]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > WebGL2λŠ” μ›Ή λΈŒλΌμš°μ € ν™˜κ²½μ—μ„œ 3D κ·Έλž˜ν”½μŠ€λ₯Ό λ Œλ”λ§ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ˜λŠ” κ·Έλž˜ν”½ APIμž…λ‹ˆλ‹€ [1, 2]. μ΅œμ‹  Three.js μƒνƒœκ³„μ—μ„œλŠ” μ°¨μ„ΈλŒ€ API인 [[WebGPU|WebGPU]]둜의 μ „ν™˜μ΄ 이루어지고 μžˆμœΌλ‚˜, WebGPUλ₯Ό μ§€μ›ν•˜μ§€ μ•ŠλŠ” λΈŒλΌμš°μ €μ—μ„œλŠ” WebGL 2κ°€ μžλ™ λŒ€μ²΄(Fallback) μˆ˜λ‹¨μœΌλ‘œμ„œ 핡심적인 역할을 μˆ˜ν–‰ν•©λ‹ˆλ‹€ [3, 4]. WebGL1κ³Ό λΉ„κ΅ν–ˆμ„ λ•Œ 데이터 λ°°μ—΄ ν…μŠ€μ²˜(Data Array Textures)λ₯Ό μ§€μ›ν•˜κ³  ν…μŠ€μ²˜ μ•„ν‹€λΌμŠ€μ˜ 블리딩(Bleeding) ν˜„μƒμ„ 더 μ‰½κ²Œ μ œμ–΄ν•  수 μžˆλŠ” λ“± μ§„λ³΄λœ κΈ°λŠ₯을 μ œκ³΅ν•˜μ§€λ§Œ, WebGPU와 달리 μ»΄ν“¨νŠΈ 셰이더([[Compute Shader|Compute Shader]]s)λ₯Ό μ§€μ›ν•˜μ§€ μ•ŠλŠ” ν•œκ³„κ°€ μžˆμŠ΅λ‹ˆλ‹€ [1, 5, 6]. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) - **WebGPU의 μžλ™ λŒ€μ²΄(Fallback) μ‹œμŠ€ν…œ:** Three.js(r171 버전 이후)μ—μ„œ μ œκ³΅ν•˜λŠ” `WebGPURenderer`λŠ” μ‚¬μš©μžμ˜ λΈŒλΌμš°μ €κ°€ WebGPUλ₯Ό μ§€μ›ν•˜μ§€ μ•Šμ„ 경우, λ³„λ„μ˜ μ½”λ“œ λΆ„κΈ° 없이 μžλ™μœΌλ‘œ WebGL 2 ν™˜κ²½μœΌλ‘œ μ „ν™˜ν•˜μ—¬ ν˜Έν™˜μ„±μ„ μœ μ§€ν•©λ‹ˆλ‹€ [3, 7]. κ°œλ°œμžλŠ” λ””λ²„κΉ…μ΄λ‚˜ 아직 WebGPUμ—μ„œ μ§€μ›ν•˜μ§€ μ•ŠλŠ” νŠΉμ • WebGL ν™•μž₯ κΈ°λŠ₯을 μ‚¬μš©ν•˜κΈ° μœ„ν•΄ `forceWebGL: true` μ˜΅μ…˜μœΌλ‘œ κ°•μ œ WebGL λ Œλ”λ§ λͺ¨λ“œλ₯Ό ν™œμ„±ν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [8, 9]. - **데이터 λ°°μ—΄ ν…μŠ€μ²˜(Data Array Textures) 및 λ Œλ”λ§ μ΅œμ ν™”:** WebGL2λŠ” 데이터 λ°°μ—΄ ν…μŠ€μ²˜ κΈ°μˆ μ„ μ§€μ›ν•˜μ—¬ μ—¬λŸ¬ ν…μŠ€μ²˜λ₯Ό 셰이더 λ‚΄μ—μ„œ 인덱슀둜 μ ‘κ·Όν•  수 μžˆλŠ” μŠ€νƒ ν˜•νƒœλ‘œ μ œκ³΅ν•©λ‹ˆλ‹€ [1, 10]. 이 방식은 ν…μŠ€μ²˜ μ•„ν‹€λΌμ‹±μ˜ μ£Όμš” 단점인 인접 ν…μŠ€μ²˜ κ°„μ˜ 경계선 블리딩([[Edge Bleeding|Edge Bleeding]]) 문제λ₯Ό ν•΄κ²°ν•˜κ³  λ„€μ΄ν‹°λΈŒ λž˜ν•‘(Wrapping)을 μ§€μ›ν•©λ‹ˆλ‹€ [1, 10]. λ˜ν•œ WebGL2 ν™˜κ²½μ—μ„œλŠ” WebGL1에 λΉ„ν•΄ μ•„ν‹€λΌμŠ€ 블리딩 μ²˜λ¦¬κ°€ 훨씬 μˆ˜μ›”ν•©λ‹ˆλ‹€ [6]. - **μ„±λŠ₯ 및 κΈ°λŠ₯적 ν•œκ³„:** WebGL2λŠ” ν˜„λŒ€ λ Œλ”λ§μ˜ ν•„μˆ˜ 기술둜 자리 μž‘μ€ μ»΄ν“¨νŠΈ 셰이더([[Compute Shaders|Compute Shaders]])λ₯Ό μ§€μ›ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€ [5]. λ”°λΌμ„œ GPU 병렬 처리λ₯Ό ν†΅ν•œ λ³΅μž‘ν•œ 물리 μ—°μ‚°, λŒ€κ·œλͺ¨ νŒŒν‹°ν΄ μ‹œμŠ€ν…œ μ—…λ°μ΄νŠΈ, GPU μ£Όλ„μ˜ μ •λ°€ν•œ 컬링(GPU-driven Culling) 등은 λΆˆκ°€λŠ₯ν•˜λ©°, μ΄λŸ¬ν•œ ν•œκ³„λ₯Ό κ·Ήλ³΅ν•˜κΈ° μœ„ν•΄ λŒ€κ·œλͺ¨ ν”„λ‘œμ νŠΈμ—μ„œλŠ” WebGPU둜의 μ•„ν‚€ν…μ²˜ μ „ν™˜μ΄ ꢌμž₯되고 μžˆμŠ΅λ‹ˆλ‹€ [2, 5, 11]. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & Updates) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** μžλ™ν™” 엔진에 μ˜ν•΄ λ§€ν•‘λœ μ§€μ‹μœΌλ‘œ, μΆ”ν›„ μ •λ°€ 검증 ν•„μš”. - **μ •μ±… λ³€ν™”:** Graphics & Performance λΆ„μ•Όμ˜ μžλ™ μžμ‚°ν™” μˆ˜ν–‰. ## πŸ”— 지식 μ—°κ²° (Graph) - **Related Topics:** [[WebGPU|WebGPU]], Three.js, Data Array Textures, [[Compute Shaders|Compute Shaders]] - **Projects/Contexts:** Three.js WebGPURenderer μžλ™ 폴백 지원, BatchedMesh 및 λ“œλ‘œμš° 콜 μ΅œμ ν™” νŒŒμ΄ν”„λΌμΈ - **Contradictions/Notes:** μ†ŒμŠ€μ— λ”°λ₯΄λ©΄ WebGL 2λŠ” ν˜„μž¬ 널리 μ§€μ›λ˜λŠ” κ°•λ ₯ν•œ κ·Έλž˜ν”½ APIμ΄μ§€λ§Œ, μ»΄ν“¨νŠΈ 셰이더λ₯Ό ν†΅ν•œ GPU 기반의 병렬 κ°€μ‹œμ„± μ—°μ‚°(Compute Culling)μ΄λ‚˜ λŒ€κ·œλͺ¨ κ°„μ ‘ λ“œλ‘œμš°([[Indirect Draw|Indirect Draw]]) λΆ€μž¬λ‘œ 인해 λ Œλ”λ§ μ„±λŠ₯ μ΅œμ ν™”μ˜ 기술적 ν•œκ³„μ μ— 도달해 μžˆμŠ΅λ‹ˆλ‹€ [2, 5, 11]. --- *Last updated: 2026-04-19* --- ## πŸ€– LLM ν™œμš© 힌트 (How to Use This Knowledge) **μ–Έμ œ 이 지식을 μ“°λŠ”κ°€:** - *(TODO)* **μ–Έμ œ μ“°λ©΄ μ•ˆ λ˜λŠ”κ°€:** - *(TODO)* ## πŸ§ͺ 검증 μƒνƒœ (Validation) - **정보 μƒνƒœ:** needs_review - **좜처 신뒰도:** A - **κ²€ν†  이유:** *(P-Reinforce Phase 1 μžλ™ μ •κ·œν™”. λ³Έλ¬Έ 검증 ν•„μš”.)* ## 🧬 쀑볡 검사 (Duplicate Check) - **κΈ°μ‘΄ μœ μ‚¬ λ¬Έμ„œ:** *(TODO: μΈλ±μ„œ ν΄λŸ¬μŠ€ν„° 리포트 μ°Έμ‘°)* - **처리 방식:** UPDATE (μžλ™ μ •κ·œν™”) - **처리 이유:** Phase 1 μ •κ·œν™” β€” μ˜› ν…œν”Œλ¦Ώ/λˆ„λ½ ν•„λ“œ 보강. ## πŸ•“ λ³€κ²½ 이λ ₯ (Changelog) | λ‚ μ§œ | λ³€κ²½ λ‚΄μš© | 처리 방식 | 신뒰도 | |------|-----------|-----------|--------| | 2026-05-08 | P-Reinforce Phase 1 μ •κ·œν™” (frontmatter + 헀더 ν‘œμ€€ν™”) | UPDATE | A | ## πŸ’» μ½”λ“œ νŒ¨ν„΄ (Code Patterns) **νŒ¨ν„΄ 1:** *(TODO: 이 ν”„λ‘œμ νŠΈ μ»¨λ²€μ…˜ λ°˜μ˜ν•œ ꡬ쑰 μŠ€μΌˆλ ˆν†€)* ```text # TODO ``` ## πŸ€” μ˜μ‚¬κ²°μ • κΈ°μ€€ (Decision Criteria) **선택 Aλ₯Ό 써야 ν•  λ•Œ:** - *(TODO)* **선택 Bλ₯Ό 써야 ν•  λ•Œ:** - *(TODO)* **κΈ°λ³Έκ°’:** > *(TODO)* ## ❌ μ•ˆν‹°νŒ¨ν„΄ (Anti-Patterns) - **[μ•ˆν‹°νŒ¨ν„΄]:** *(TODO: 무엇을 ν•˜λ©΄ μ•ˆ λ˜λŠ”κ°€ + 이유 + λŒ€μ‹  무엇을)*