Repository navigation
๐ RedGPU V4.4.0-Alpha Release Note
RedGPU V4.4.0-Alpha๋ ๋๊ท๋ชจ ์คํ์๋ ํ๊ฒฝ ๊ตฌ์ถ์ ์ํ ์งํ(Landscape), ์์(Foliage & Grass), ์๋ฉด(Water.Lake), ์ ์ญ ๋ฐ๋(WindManager), ๊ทธ๋ฆฌ๊ณ BitmapTexture์ KTX2 ์์ถ ํ
์ค์ฒ ์ง์์ ์๋กญ๊ฒ ์ ๋ณด์
๋๋ค.
โจ ์ ๊ท ๊ธฐ๋ฅ (New Features)
1. ๋๊ท๋ชจ ์งํ ์์คํ
(RedGPU.Landscape)
RedGPU_examples_openWorld.mp4
๊ดํํ ์คํ์๋ ์งํ์ ์ค์๊ฐ์ผ๋ก ์คํธ๋ฆฌ๋ฐํ๊ณ ๋ ๋๋งํ๋ GPU-Driven ์งํ ์์คํ ์ ๋๋ค.
-
ํต์ฌ ํน์ง:
- ๋น๋๊ธฐ ํ์ผ ์คํธ๋ฆฌ๋ฐ: ์นด๋ฉ๋ผ ์ฃผ๋ณ์ ๊ณ ํด์๋ 16๋นํธ ํ์ดํธ๋งต ํ์ผ๋ง ๋์ ์ผ๋ก ๋ก๋ยท์บ์ฑํ๋ฉฐ, ์๊ฑฐ๋ฆฌ๋ ๊ธ๋ก๋ฒ ํ์ดํธ๋งต์ผ๋ก ๋๊น ์์ด ํํํฉ๋๋ค.
- ์ฐ์ LOD ๋ฐ GPU ์ปฌ๋ง: ์นด๋ฉ๋ผ ๊ฑฐ๋ฆฌ์ ๋ฐ๋ฅธ ๋ถ๋๋ฌ์ด ์ง์ค๋ชจํ(Geomorphing)์ผ๋ก ํํ ํ์์ ๋ฐฉ์งํ๊ณ , GPU ์ ๋์ฒดยท์คํด๋ฃจ์ ์ปฌ๋ง์ผ๋ก ๊ฐ์ ์์ญ๋ง ๊ณ ์ ๋ ๋๋งํฉ๋๋ค.
- ๋ฉํฐ ๋ ์ด์ด ์คํ๋ซ ๋จธํฐ๋ฆฌ์ผ (
LandscapeMaterial): ์คํ๋ซ๋งต ๊ฐ์ค์น, ๊ณ ๋, ๊ฒฝ์ฌ๋์ ๋ฐ๋ผ ์ฌ๋ฌ PBR ์ฌ์ง์ ๋ธ๋ ๋ฉํ๋ฉฐ, ์คํ ์บ์คํฑ ํ์ผ๋ง(stochasticTiling)์ผ๋ก ํ ์ค์ฒ ๋ฐ๋ณต ํจํด์ ์ ๊ฑฐํฉ๋๋ค. - ๊ฐ์ ํ ์ค์ฒ ์ํ๋ผ์ค ๋ฒ ์ดํน: ๋ค์ค ๋ ์ด์ด ์ฌ์ง๊ณผ ๋ฒ์ ์ ๊ฐ์ ํ ์ค์ฒ ์ํ๋ผ์ค๋ก ์๋ ๋ฒ ์ดํฌํ์ฌ ์๊ฑฐ๋ฆฌ ๋ ๋๋ง ๋น์ฉ์ ์ต์ํํฉ๋๋ค.
-
๐ ๋ผ์ด๋ธ ์์ (์ ์ฒด ๋ณด๊ธฐ โ):
- Basic Terrain: ๋จ์ผ 16๋นํธ ํ์ดํธ๋งต ๊ธฐ๋ฐ ๊ธฐ๋ณธ ์งํ ์์ฑ ๋ฐ LODยท๊ทธ๋ฆผ์ ์ ์ด
- Multi-Layer Splatting: 4์ฑ๋ ์คํ๋ซ๋งต ๊ธฐ๋ฐ ๋ค์ค PBR ๋ ์ด์ด ๋ฐ ์คํ ์บ์คํฑ ํ์ผ๋ง
- Tile Streaming: 16ร16 ํ์ผ ๋ถํ ๋น๋๊ธฐ ํ์ดํธ๋งต ์คํธ๋ฆฌ๋ฐ ๋ฐ ๋๋ฒ๊ฑฐ
- Landscape & Water System: ๊ณ๊ณก ์งํ๊ณผ ํธ์(
Lake) ์์ฒด ๋ฐ ๋ณดํ ๋ฌผ๊ฒฐ ์ํธ์์ฉ ํตํฉ
2. ๋๊ท๋ชจ ์์ ๋ฐ ์ด๋ชฉ ์์คํ
(Foliage & Grass)
์งํ์ ๊ณ ๋, ๊ฒฝ์ฌ๋, ์คํ๋ซ ๋ ์ด์ด ๊ฐ์ค์น๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๋ง~์์ญ๋ง ๊ฐ์ ๋๋ฌด์ ์๋๋ฅผ GPU์์ ์๋ ๋ฐฐ์นํ๊ณ ๋ ๋๋งํฉ๋๋ค.
-
์๋ชฉ ๋ฐ ํ๋กญ (
RedGPU.Landscape.Foliage):- ์คํ๋ซ ๋ ์ด์ด(
targetLayer) ๋ฐ ๊ฒฝ์ฌ๋ ์กฐ๊ฑด์ ๋ฐ๋ฅธ GPU ์๋ ์ฐํฌ(foliageManager.addType) - 3๋จ๊ณ ๋ฉ์ฌ LOD(
LOD0~LOD2) ๋ฐ ์๊ฑฐ๋ฆฌ ์ฅํํค๋๋ด ์ํฌ์คํฐ(Octahedral Impostor) ์๋ ๋ฒ ์ดํนยท๋๋๋ง ์ ํ
- ์คํ๋ซ ๋ ์ด์ด(
-
๊ณ ๋ฐ๋ ์ด๋ชฉ (
RedGPU.Landscape.Grass):- ์นด๋ฉ๋ผ ์ฃผ๋ณ ์ฒญํฌ ๋จ์ ์ค์๊ฐ ์๋ ์ธ์คํด์ค ์คํธ๋ฆฌ๋ฐ(
grassManager.addType) - ์งํ ๋ฐ๋ฅ ์์๊ณผ ์๋ ํ๋จ๋ถ๋ฅผ ์์ฐ์ค๋ฝ๊ฒ ์ผ์ฒดํํ๋ ์งํ๋ฉด ์์ ๋ธ๋ ๋ฉ(
groundBlendStrength) ์ง์
- ์นด๋ฉ๋ผ ์ฃผ๋ณ ์ฒญํฌ ๋จ์ ์ค์๊ฐ ์๋ ์ธ์คํด์ค ์คํธ๋ฆฌ๋ฐ(
-
๐ ๋ผ์ด๋ธ ์์ :
- Procedural Grass Field: ์งํ ๊ฐ์ค์นยท๊ฒฝ์ฌ๋ ๊ธฐ๋ฐ GPU ์ ์ฐจ์ ์๋ ๋ฐฐ์น
- Foliage & Impostors: ๋ค๋จ๊ณ ๋ฉ์ฌ LOD ๋ฐ ์ฅํํค๋๋ด ์ํฌ์คํฐ ์๋ชฉ ๋ ๋๋ง
- Open World Integration: ํ์ผ ์คํธ๋ฆฌ๋ฐ ์งํ, ์๋, ์๋ชฉ, ์บ๋ฆญํฐ ์ปจํธ๋กค๋ฌ ์คํ์๋ ํตํฉ
3. ํธ์ ๋ฐ ์๋ฉด ์์คํ
(RedGPU.Water.Lake)
์์ฌ ๊ธฐ๋ฐ ๊ดํ ํจ๊ณผ์ ์ค์๊ฐ ๋ฌผ๊ฒฐ ์ํธ์์ฉ์ ์ง์ํ๋ ์๋ฉด ๋ ๋๋ง ์์คํ ์ ๋๋ค.
-
ํต์ฌ ํน์ง:
- ์์ฌ ๊ดํ ๋ฐ ํด์์ ํ์ด๋: ์์ฌ์ ๋ฐ๋ฅธ ์์ ๊ฐ์ (
shallowColorโdeepColor)์ ์งํ ๊ฒฝ๊ณ์ ๋ถ๋๋ฌ์ด ํด์์ ํ์ด๋(shoreFadeDistance)๋ฅผ ์ ๊ณตํฉ๋๋ค. - ๋ฐ์ฌยท๊ตด์ ๋ฐ ์ปค์คํฑ์ค: ํ๋ฉด ๊ณต๊ฐ ๋ฐ์ฌ(SSR), ๋์ผ ๋ ธ๋ฉ ๋ฌผ๊ฒฐ ๊ตด์ , ์์ค ๋ฐ๋ฅ์ ๋งบํ๋ ํ์๊ด ์ปค์คํฑ์ค(Caustics) ํจ๊ณผ๋ฅผ ํํํฉ๋๋ค.
- ์ค์๊ฐ ๋ฌผ๊ฒฐ ์ํธ์์ฉ: ์บ๋ฆญํฐ๋ ์ค๋ธ์ ํธ(
enableWaterInteraction = true) ์ด๋์ ๋ฐ์ํ์ฌ ํผ์ ธ๋๊ฐ๋ 2D ํ๋ ์๋ฎฌ๋ ์ด์ ์ ์ง์ํฉ๋๋ค.
- ์์ฌ ๊ดํ ๋ฐ ํด์์ ํ์ด๋: ์์ฌ์ ๋ฐ๋ฅธ ์์ ๊ฐ์ (
-
๐ ๋ผ์ด๋ธ ์์ (์ ์ฒด ๋ณด๊ธฐ โ):
- Basic Lake: ๊ธฐ๋ณธ ํธ์ ์์ฑ(
scene.addWater), ์์ ๋ฐ ๋์ธ ํ๋ ์ ์ด - Lake Material: ๋์ผ ๋ ธ๋ฉ, ๊ตด์ ยท๊ฐ์ , ์ปค์คํฑ์ค, SSR ๋ฑ ์์ธ ๊ดํ ์์ฑ ์ ์ด
- Object Interaction: ์์ง์ด๋ ์ค๋ธ์ ํธ(
enableWaterInteraction)์ ์๋ฉด์ ์ค์๊ฐ ๋ฌผ๊ฒฐ ๊ฐ์ญ - Character Walking: ์บ๋ฆญํฐ ์ด๋ ์ถ์ (
interactionFollowTarget) ๊ธฐ๋ฐ ์ค์๊ฐ ๋ณดํ ๋ฌผ๊ฒฐ - Multi Lake: ์๋ก ๋ค๋ฅธ ์์ยท์์นยท์์์ ๊ฐ์ง ๋ค์ค ํธ์ ๋์ ๋ ๋๋ง
- Lake with Landscape: ์งํยท์์ ์์คํ ๊ณผ ํธ์๋ฅผ ๊ฒฐํฉํ ์๋ณ ๊ฒฝ๊ณ ๋ฐ ๋ฌผ๊ฒฐ ์ํธ์์ฉ
- Basic Lake: ๊ธฐ๋ณธ ํธ์ ์์ฑ(
4. ์ ์ญ ๋ฐ๋ ์์คํ
(scene.windManager)
์ฌ ๋ด ์๋ชฉ ์์(Foliage)์ ํ๋ค๋ฆผ๊ณผ ํธ์ ์๋ฉด(Water.Lake)์ ๋์ธยท๋ฌผ๊ฒฐ ๋ฐฉํฅ ๋ฐ ๊ฐ๋๊ฐ ๋์ผํ ํํฅ๊ณผ ํ์์ ๋๊ธฐํ๋์ด ๋ฐ์ํ๋๋ก ์ ์ดํ๋ ์ ์ญ ๋ฐ๋ ๋งค๋์ ์
๋๋ค.
scene.windManager๋ฅผ ํตํด ํ์ฑํ ์ฌ๋ถ(enabled), ํํฅ ๊ฐ๋(directionAngle), ์๋(speed), ์ธ๊ธฐ(strength)๋ฅผ ์ค์๊ฐ์ผ๋ก ์ ์ดํฉ๋๋ค.
5. BitmapTexture KTX2 ์์ถ ํ
์ค์ฒ ์ง์
๊ธฐ์กด RedGPU.Resource.BitmapTexture์์ ์ผ๋ฐ ์ด๋ฏธ์ง(PNG, JPG, WebP, SVG)๋ฟ๋ง ์๋๋ผ **KTX2 ์์ถ ํ
์ค์ฒ(.ktx2)**๋ฅผ ๋ฐ๋ก ๋ก๋ํ์ฌ ์ฌ์ฉํ ์ ์์ต๋๋ค.
-
RedGPU ์์ฒด KTX2 ํ์ดํ๋ผ์ธ:
- ์ปจํ
์ด๋ ํ์ฑ ๋ฐ ์ง์ ์
๋ก๋: KTX2 ํค๋ยทDFDยท๋ฉํ๋ฐ์ดํฐ ํ์ฑ, Zstandard(
ZSTD) ์ด๊ณ ์์ถ ํด์ , ๊ทธ๋ฆฌ๊ณ ๋ค์ดํฐ๋ธ ๋ธ๋ก ์์ถ(BC1~BC7,ETC2/EAC,ASTC) ๋ฐ ๋น์์ถ ํฌ๋งท์ WebGPU ์ง์ ๋งคํ์ ์์ฒด ์ฒ๋ฆฌํฉ๋๋ค. - ๋๋ฐ์ด์ค ์ต์ ํฌ๋งท ํ์ ๋ฐ ๋ฉ๋ชจ๋ฆฌ ์ ๋ ฌ: ์คํ ํ๊ฒฝ์ GPU ์ง์ ํผ์ฒ(
astc,bc,etc2)์ ํ ์ค์ฒ ํน์ฑ(HDR, ์ํ, sRGB)์ ๋ถ์ํด ์ต์ ์ ํ๊ฒ ํฌ๋งท(๋ฏธ์ง์ ์ ํด๋ฐฑ ํฌํจ)์ ๊ฒฐ์ ํ๊ณ , WebGPU ๊ท๊ฒฉ์ ๋ง์ถ ๋ธ๋ก ํฌ๊ธฐ ์ ๋ ฌ ๋ฐ 256๋ฐ์ดํธ Row ํจ๋ฉ ์ ๋ก๋๋ฅผ ์ํํฉ๋๋ค.
- ์ปจํ
์ด๋ ํ์ฑ ๋ฐ ์ง์ ์
๋ก๋: KTX2 ํค๋ยทDFDยท๋ฉํ๋ฐ์ดํฐ ํ์ฑ, Zstandard(
-
Basis Universal WASM ํธ๋์ค์ฝ๋ ์ฐ๋:
ETC1S,UASTC LDR,UASTC HDRํฌ๋งท์ ํธ๋์ค์ฝ๋ฉ ์์๋ ์ฝ์ด ๋ฒ๋ค ๊ฒฝ๋ํ ๋ฐ ๊ฒ์ฆ๋ ์์ ์ WASM ๋ฐ์ด๋๋ฆฌ ํ๋ณด๋ฅผ ์ํด Three.js CDN์ ๊ณต์ ํธ๋์ค์ฝ๋๋ฅผ ์จ๋๋งจ๋(On-Demand)๋ก ๋ก๋ํ์ฌ ์ฌ์ฉํฉ๋๋ค.https://unpkg.com/three@latest/examples/jsm/libs/basis/basis_transcoder.jshttps://unpkg.com/three@latest/examples/jsm/libs/basis/basis_transcoder.wasm
-
๐ ๋ผ์ด๋ธ ์์ (์ ์ฒด ๋ณด๊ธฐ โ):
- KTX2 Basic: ํ์ค KTX2 ์์ถ ํ ์ค์ฒ(Raw / ๋ธ๋ก ์์ถ / Basis ํธ๋์ค์ฝ๋ฉ) ๋ก๋ ๋ฐ ๋ ๋๋ง ์์