[G1-Sync] Manual knowledge update
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
---
|
||||
id: P-REINFORCE-AUTO-FF2C8C
|
||||
id: [[P-Reinforce]]-AUTO-FF2C8C
|
||||
category: "10_Wiki/💡 Topics/Graphics & Performance"
|
||||
confidence_score: 0.90
|
||||
tags: [auto-reinforced]
|
||||
@@ -10,12 +10,12 @@ github_commit: "[P-Reinforce] Continuous Worker - UV Offset"
|
||||
# [[UV Offset]]
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> UV Offset(UV 오프셋)은 3D 모델에 텍스처의 특정 영역을 매핑하기 위해 UV 좌표를 조정하거나 계산하는 기법입니다 [1, 2]. 실시간 렌더링 최적화 환경에서는 여러 텍스처를 하나로 합친 텍스처 아틀라스(Texture Atlas)와 함께 주로 사용됩니다 [3, 4]. 특히 수많은 인스턴스를 렌더링할 때 각 인스턴스의 속성으로 UV 오프셋을 전달함으로써, 단일 드로우 콜(Draw Call) 내에서 개별 인스턴스마다 다른 텍스처 이미지를 적용할 수 있게 해줍니다 [5, 6].
|
||||
> UV Offset(UV 오프셋)은 3D 모델에 텍스처의 특정 영역을 매핑하기 위해 UV 좌표를 조정하거나 계산하는 기법입니다 [1, 2]. 실시간 렌더링 최적화 환경에서는 여러 텍스처를 하나로 합친 텍스처 아틀라스([[Texture Atlas]])와 함께 주로 사용됩니다 [3, 4]. 특히 수많은 인스턴스를 렌더링할 때 각 인스턴스의 속성으로 UV 오프셋을 전달함으로써, 단일 드로우 콜([[Draw Call]]) 내에서 개별 인스턴스마다 다른 텍스처 이미지를 적용할 수 있게 해줍니다 [5, 6].
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
* **텍스처 아틀라스 매핑 (Texture Atlas Mapping):** 텍스처 바인딩 횟수와 드로우 콜을 줄이기 위해 여러 텍스처를 단일 텍스처 아틀라스로 병합할 때, 개발자는 메쉬 영역이 아틀라스의 올바른 위치를 참조하도록 UV 좌표를 조정(UV Offset 계산)해야 합니다 [1-4].
|
||||
* **InstancedMesh에서의 구현 방식:** `InstancedMesh`를 통해 수천 개의 개별 인스턴스에 각기 다른 텍스처를 부여하기 위해서는 단일 재질(Material)의 확산 맵(Diffuse map)으로 텍스처 아틀라스를 지정해야 합니다 [5, 7]. 이후 각 인스턴스마다 텍스처 오프셋을 정의하는 추가적인 인스턴스 버퍼 속성(예: `uvOffsets`)을 기하구조(Geometry)에 주입합니다 [5, 6, 8]. 구체적으로는 `Float32Array`를 사용해 각 인스턴스의 x/y 오프셋 좌표 배열을 생성한 뒤, 셰이더를 수정하여 이 `uvOffsets` 속성을 기반으로 각 인스턴스의 텍스처 위치를 이동(Offset)시키도록 렌더링합니다 [8-10].
|
||||
* **한계 및 현대적 대안:** 텍스처 아틀라스를 위한 복잡한 UV 오프셋 계산 알고리즘은 까다로울 뿐만 아니라, 인접한 텍스처 간에 픽셀이 섞이는 경계선 블리딩(Edge Bleeding) 현상을 유발할 수 있습니다 [2, 6]. 이러한 단점을 극복하기 위해 WebGL2부터 지원되는 데이터 배열 텍스처(Data Array Textures)를 활용하면, 복잡한 UV 오프셋 연산이나 패킹 없이 인덱스 접근만으로 다중 텍스처를 처리할 수 있습니다 [2, 11].
|
||||
* **[[InstancedMesh]]에서의 구현 방식:** `InstancedMesh`를 통해 수천 개의 개별 인스턴스에 각기 다른 텍스처를 부여하기 위해서는 단일 재질(Material)의 확산 맵(Diffuse map)으로 텍스처 아틀라스를 지정해야 합니다 [5, 7]. 이후 각 인스턴스마다 텍스처 오프셋을 정의하는 추가적인 인스턴스 버퍼 속성(예: `uvOffsets`)을 기하구조(Geometry)에 주입합니다 [5, 6, 8]. 구체적으로는 `Float32Array`를 사용해 각 인스턴스의 x/y 오프셋 좌표 배열을 생성한 뒤, 셰이더를 수정하여 이 `uvOffsets` 속성을 기반으로 각 인스턴스의 텍스처 위치를 이동(Offset)시키도록 렌더링합니다 [8-10].
|
||||
* **한계 및 현대적 대안:** 텍스처 아틀라스를 위한 복잡한 UV 오프셋 계산 알고리즘은 까다로울 뿐만 아니라, 인접한 텍스처 간에 픽셀이 섞이는 경계선 블리딩([[Edge Bleeding]]) 현상을 유발할 수 있습니다 [2, 6]. 이러한 단점을 극복하기 위해 [[WebGL]]2부터 지원되는 데이터 배열 텍스처([[Data Array Textures]])를 활용하면, 복잡한 UV 오프셋 연산이나 패킹 없이 인덱스 접근만으로 다중 텍스처를 처리할 수 있습니다 [2, 11].
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
|
||||
Reference in New Issue
Block a user