๐ ๊ฐ์ (Overview)
RedGPU ํ๋ฆฌ๋ฏธํฐ๋ธ ์์คํ
์ ๊ณ ์ง์ ์ธ ์ค๋ณต ๋ก์ง์ ์ ๊ฑฐํ๊ณ , ๊ธฐํํ์ ์์ ๋ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ํ๋ก์ธ์ค๋ฅผ PrimitiveUtils๋ก ์ค์ ์ง์คํํ์ฌ ์์คํ
๊ตฌ์กฐ๋ฅผ ๊ทผ๋ณธ์ ์ผ๋ก ๊ฐ์ ํ์ต๋๋ค.
๐ฏ ํต์ฌ ๋ฆฌํฉํ ๋ง ๋ชฉํ (Strategic Goals)
| ๋ถ๋ฅ |
ํต์ฌ ์ ๋ต |
์ฑ๊ณผ ์งํ |
| ์ํคํ
์ฒ |
๋ฒ ์ด์ค ํด๋์ค ์ค์ฌ์ ๋ฆฌ์์ค ์บ์ฑ ๋ฐ ์์ ์ ํธ๋ฆฌํฐํ |
ํด๋์ค ์ฝ๋๋ 65% ์ ๊ฐ |
| ๋ฐ์ดํฐ ๋ ์ด์์ |
P3, N3, U2, T4 (12 floats) ์ธํฐ๋ฆฌ๋ธ ํฌ๋งท ์ ์ญ ์ ์ฉ |
๋
ธ๋ฉ๋งต ์ ํ๋ ๋ฐ ์ฐ์ฐ ์ฑ๋ฅ ํฅ์ |
| ์ธํฐํ์ด์ค |
์
๊ณ ํ์ค ๋ช
๋ช
๊ท์น ๊ธฐ๋ฐ์ ์์ฑ์ ์ธ์ ๋ง์ด๊ทธ๋ ์ด์
|
๊ฐ๋ฐ์ ๊ฐ๋
์ฑ ๋ฐ ํ์ต ๊ณก์ ์ต์ ํ |
| ์์คํ
๊ฒฌ๊ณ ํจ |
0๊ฐ ์์ธ ์ฒ๋ฆฌ ๋ฐ EPSILON ๊ธฐ๋ฐ ์์น ์ ์ด ๋ก์ง ํตํฉ |
๋ฐํ์ ์๋ฌ ์ ๋กํ ๋ฐ ์์ ์ฑ ํ๋ณด |
๐ ํ๋ฆฌ๋ฏธํฐ๋ธ ๋ฌผ๋ฆฌ ํ์ค ๊ฐ์ด๋ (Geometric Standards)
1. ์์ฑ ์์์ ๋ฐ ํ์ ๋ฐฉํฅ (Rotation Standard)
| ํญ๋ชฉ |
ํ์ค ์ ์ |
์๊ฐ์ ์ค๋ช
|
| 0๋ ์์์ |
12์ ๋ฐฉํฅ (-Z์ถ) |
[์
๊ณ ํ์ค] ํ
์ค์ฒ ์ด์์(Seam)๋ฅผ ๋ค๋ก ์จ๊ธฐ๊ธฐ ์ํด ๋ค์ชฝ(-Z)์์ ์์ํฉ๋๋ค. |
| ํ์ ๋ฐฉํฅ |
์๋จ ์กฐ๊ฐ ๊ธฐ์ค ๋ฐ์๊ณ ํ์ (CCW) |
์ ์ ์ด ์์ฑ๋๋ ๊ถค์ ์ 12์(-Z) โ 9์(-X) โ 6์(+Z) โ 3์(+X) ์์์
๋๋ค. |
| ์ ๋ฉด ์์น |
u = 0.5 ์ง์ |
[์
๊ณ ํ์ค] ํ
์ค์ฒ ๊ฐ๋ก์ถ(U)์ ์ค์์ธ 50% ์ง์ ์ด ์นด๋ฉ๋ผ๋ฅผ ๋ณด๋ ์ ๋ฉด(+Z์ถ)์
๋๋ค. |
2. ์๋ฉด ์ ์ ๋ฐ ์ปฌ๋ง (Winding & Culling)
| ํญ๋ชฉ |
ํ์ค ์ ์ |
์์ธ ์ค๋ช
|
| ์๋ฉด (Front) |
๋ฐ์๊ณ ๋ฐฉํฅ (CCW) |
์ ์ ์ธ ๊ฐ๋ฅผ ๋ฐ์๊ณ ๋ฐฉํฅ์ผ๋ก ์ฐ๊ฒฐํ๋ ๋ฉด์ด ์๋ฉด์
๋๋ค. |
| ์์ ํ ๋ก์ง |
CCW ์์ฑ + ํ์ค ์ธ๋ฑ์ค |
๋ฐ์๊ณ ๋ฐฉํฅ ์ ์ ๋ฐฐ์น ํ ํ์ค ์ธ๋ฑ์ค๋ก ์ฐ๊ฒฐํ์ฌ ๋ฐ๊นฅ์ชฝ์ CCW๋ก ๊ตฌํํฉ๋๋ค. |
| ๊ฐ์์ฑ |
๋ท๋ฉด ์ ๊ฑฐ (Back-face) |
์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ํด ๋ํ์ ์์ชฝ๋ฉด(๋ท๋ฉด)์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ ๋๋งํ์ง ์์ต๋๋ค. |
3. UV ๋งคํ ๋ฐ ํ
์ค์ฒ ๋ฐฉํฅ (UV Standard)
| ํญ๋ชฉ |
ํ์ค ์ ์ |
์์ธ ์ค๋ช
|
| UV ์์ |
์๋จ ์ข์ธก (Top-Left) |
ํ
์ค์ฒ์ (0,0)์ ๋ํ์ ์ผ์ชฝ ์๋จ์ ๋งคํ๋ฉ๋๋ค. (V-Down ํ์ค) |
| ์์ง ํ๋ฆ |
์ โ ์๋ |
V=0์ ๋ํ์ ๊ฐ์ฅ ๋์ ๊ณณ, V=1์ ๊ฐ์ฅ ๋ฎ์ ๊ณณ์ ์๋ฏธํฉ๋๋ค. |
| ์ํ ํ๋ฆ |
์ข์ธก โ ์ ๋ฉด โ ์ฐ์ธก |
๋ฐ์๊ณ ๋ฐฉํฅ ํ์ ์ ๋ฐ๋ผ ํ
์ค์ฒ๊ฐ ์ผ์ชฝ(U=0)์์ ์ ๋ฉด(U=0.5)์ ๊ฑฐ์ณ ์ค๋ฅธ์ชฝ(U=1)์ผ๋ก ๊ฐ์๋๋ค. |
์ํ ๋จ๋ฉด(Cap) ๋ฐ Circle UV ์ต์
Circle ๋ฐ ์ํ ๋จ๋ฉด์ ๊ฐ์ง ํ๋ฆฌ๋ฏธํฐ๋ธ(Cylinder, Torus)๋ isRadial ๊ณ์ด ์ต์
์ ํตํด ๋ ๊ฐ์ง ๋งคํ ๋ฐฉ์์ ์ง์ํฉ๋๋ค:
-
Planar (isRadial: false, ๊ธฐ๋ณธ๊ฐ):
- ํ
์ค์ฒ๋ฅผ ๋จ๋ฉด ์์ ๊ทธ๋๋ก ์ฌ๋ ค๋์ ํํ์
๋๋ค. (์ค์ฌ: UV 0.5, 0.5)
- ์ผ๋ฐ์ ์ธ ๋ฌผ์ฒด ํํ์ด๋ ๋๊ป ๋ก๊ณ ํฌ์ ๋ฑ์ ์ฌ์ฉ๋ฉ๋๋ค.
-
Radial (isRadial: true):
-
์ฑ์ฅํ/ํฝ์ฐฝํ(Expansion) ๋งคํ: U์ถ์ ๊ฐ๋($0 \rightarrow 1$), V์ถ์ ์ค์ฌ์์์ ๊ฑฐ๋ฆฌ($0 \rightarrow 1$)์ ๋งคํ๋ฉ๋๋ค.
- ํ
์ค์ฒ์ V ์คํ์
(V-Offset) ์ ๋๋ฉ์ด์
์ ํตํด ์์ด ์ค์ฌ์์ ๋ฐ์ผ๋ก ์ปค์ง๋ VFX ํจ๊ณผ๋ฅผ ๊ตฌํํ ์ ์์ต๋๋ค.
์ ์ฉ ๋์:
- Circle:
isRadial
- Cylinder:
isRadialTop, isRadialBottom
- Torus:
isRadialCapStart, isRadialCapEnd (Partial ๋ชจ๋ ์)
4. ๋จ๋ฉด ์ ์ด ํ์ค (Capping)
| ํญ๋ชฉ |
๋ช
์นญ ํ์ค |
์ ์ฉ ๋์ ๋ฐ ํน์ง |
| ์์ง ๊ธฐ๋ฅ |
capTop, capBottom |
Cylinder: ์(+Y)์ ์๋(-Y) ๋จ๋ฉด์ ๊ฐ๋ณ์ ์ผ๋ก ์ ์ด ๊ฐ๋ฅํฉ๋๋ค. |
| ํ์ ๊ณ ๋ฆฌ |
capStart, capEnd |
Torus: ์์ ๊ฐ๋์ ๋ ๊ฐ๋์ ๋จ๋ฉด์ ๊ฐ๋ณ์ ์ผ๋ก ์ ์ด ๊ฐ๋ฅํฉ๋๋ค. |
๐ ๏ธ ๋ฆฌํฉํ ๋ง ๋ฐ ์์ ์ฑ ์๋ฃ ํํฉ (Execution Status)
1. ๋ก์ง ๋ฐ ์ฝ์ด ์์คํ
๊ฐ์
| ํญ๋ชฉ |
๋ฆฌํฉํ ๋ง ๋ฐ ๊ณ ๋ํ ๋ด์ฉ |
์ํ |
| PrimitiveUtils |
ํ๋ฉด/์ํ/๋ชธํต ์์ฑ, ๊ทธ๋ฆฌ๋ ์ธ๋ฑ์ค, ํ์ ํธ ๊ณ์ฐ ์ ํธ๋ฆฌํฐํ |
๐ข |
| Architecture |
๋ฒ ์ด์ค ํด๋์ค uniqueKey ๊ธฐ๋ฐ ์๋ ์บ์ฑ ๋ฐ makeData ์ธ๋ถํ |
๐ข |
| Data Layout |
์ ํ๋ฆฌ๋ฏธํฐ๋ธ 12-ํ๋กํธ(Tangent ํฌํจ) ์คํธ๋ผ์ด๋ ์ ์ฉ |
๐ข |
| Robustness |
0๊ฐ ์ "1์ ์ + ๋น ์ธ๋ฑ์ค" ์ ๋ต ๋ฐ EPSILON ์ฒดํฌ ๋ฐ์ |
๐ข |
| Tooling |
์ ์์ ํจ๋ ๊ณ ๋ํ (์ ์์ฑ ์ ์ด ๋ฐ cullMode ํ ๊ธ ์ถ๊ฐ) |
๐ข |
2. ์์ฑ์ ์ธ์๋ช
ํ์ค ๋ง์ด๊ทธ๋ ์ด์
๊ฒฐ๊ณผ
| ํด๋์ค |
์ด์ ์ธ์๋ช
|
ํ์คํ๋ ์ธ์๋ช
|
์ํ |
| Box |
wSegments, hSegments, dSegments |
widthSegments, heightSegments, depthSegments |
๐ข |
| Circle |
segments |
radialSegments, isRadial |
๐ข |
| Plane / Ground |
wSegments, hSegments |
widthSegments, heightSegments |
๐ข |
| Cylinder |
openEnded |
capTop, capBottom, isRadialTop, isRadialBottom |
๐ข |
| Torus |
radialSubv, bodySubv |
radialSegments, tubularSegments |
๐ข |
| Torus |
start/endAngle, capped |
thetaStart, thetaLength, capStart, capEnd, isRadialCapStart, isRadialCapEnd |
๐ข |
| TorusKnot |
tube, p, q |
tubeRadius, windingsAroundAxis, windingsAroundCircle |
๐ข |
| Capsule |
cylinderHeight |
height |
๐ข |
๐ ํฅํ ๋ก๋๋งต (Roadmap)
| ๊ตฌ๋ถ |
๋์ ํญ๋ชฉ |
ํ์์ฑ ๋ฐ ๊ธฐ๋ ํจ๊ณผ |
์ฐ์ ์์ |
| ๊ณ ๋ํ |
๊ทน์ ํ ํด๋ก์ง ์ต์ ํ |
์ค๋ณต ์ ์ ์ ๊ฑฐ๋ฅผ ํตํ ๋ ๋๋ง ํจ์จ ํฅ์ |
๐ข ๋ณดํต |
| ๊ณ ๋ํ |
6๋ฉด ๊ฐ๋ณ UV ์ ์ด |
Box ๊ฐ ๋ฉด๋ณ ๋
๋ฆฝ์ ํ
์ค์ฒ๋ง ์ ์ฐ์ฑ ํ๋ณด |
๐ข ๋ณดํต |
| ์ ๊ท |
Cone (์๋ฟ) |
ํผ๋ผ๋ฏธ๋, ์กฐ๋ช
๋ฒ์ ์๊ฐํ ๋ฑ์ ํ์์ |
๐ฅ ๋์ |
| ์ ๊ท |
Ring (๊ณ ๋ฆฌ) |
UI, ํฌํ ํจ๊ณผ, ๊ถค๋ ์๊ฐํ ๋ฑ์ ํ์ฉ |
๐ฅ ๋์ |
| ์ ๊ท |
Polyhedrons |
์ ํด๋ฆฌ๊ณค ๊ตฌ์ฒด ๋์ฒด ๋ฐ ์ถ์ ์ํธ ๊ตฌ์ฑ |
๐ข ๋ณดํต |
๋์ ๋ฒ์ : V4.1.0-Alpha
๐ ๊ฐ์ (Overview)
RedGPU ํ๋ฆฌ๋ฏธํฐ๋ธ ์์คํ ์ ๊ณ ์ง์ ์ธ ์ค๋ณต ๋ก์ง์ ์ ๊ฑฐํ๊ณ , ๊ธฐํํ์ ์์ ๋ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ํ๋ก์ธ์ค๋ฅผ
PrimitiveUtils๋ก ์ค์ ์ง์คํํ์ฌ ์์คํ ๊ตฌ์กฐ๋ฅผ ๊ทผ๋ณธ์ ์ผ๋ก ๊ฐ์ ํ์ต๋๋ค.๐ฏ ํต์ฌ ๋ฆฌํฉํ ๋ง ๋ชฉํ (Strategic Goals)
๐ ํ๋ฆฌ๋ฏธํฐ๋ธ ๋ฌผ๋ฆฌ ํ์ค ๊ฐ์ด๋ (Geometric Standards)
1. ์์ฑ ์์์ ๋ฐ ํ์ ๋ฐฉํฅ (Rotation Standard)
2. ์๋ฉด ์ ์ ๋ฐ ์ปฌ๋ง (Winding & Culling)
3. UV ๋งคํ ๋ฐ ํ ์ค์ฒ ๋ฐฉํฅ (UV Standard)
์ํ ๋จ๋ฉด(Cap) ๋ฐ Circle UV ์ต์
Circle๋ฐ ์ํ ๋จ๋ฉด์ ๊ฐ์ง ํ๋ฆฌ๋ฏธํฐ๋ธ(Cylinder,Torus)๋isRadial๊ณ์ด ์ต์ ์ ํตํด ๋ ๊ฐ์ง ๋งคํ ๋ฐฉ์์ ์ง์ํฉ๋๋ค:์ ์ฉ ๋์:
isRadialisRadialTop,isRadialBottomisRadialCapStart,isRadialCapEnd(Partial ๋ชจ๋ ์)4. ๋จ๋ฉด ์ ์ด ํ์ค (Capping)
๐ ๏ธ ๋ฆฌํฉํ ๋ง ๋ฐ ์์ ์ฑ ์๋ฃ ํํฉ (Execution Status)
1. ๋ก์ง ๋ฐ ์ฝ์ด ์์คํ ๊ฐ์
2. ์์ฑ์ ์ธ์๋ช ํ์ค ๋ง์ด๊ทธ๋ ์ด์ ๊ฒฐ๊ณผ
๐ ํฅํ ๋ก๋๋งต (Roadmap)
๋์ ๋ฒ์ : V4.1.0-Alpha