Skip to content

V4.4.0-Alpha

Latest

Choose a tag to compare

@redcamel redcamel released this 26 Oct 06:28

๐Ÿš€ 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: ์ง€ํ˜•ยท์‹์ƒ ์‹œ์Šคํ…œ๊ณผ ํ˜ธ์ˆ˜๋ฅผ ๊ฒฐํ•ฉํ•œ ์ˆ˜๋ณ€ ๊ฒฝ๊ณ„ ๋ฐ ๋ฌผ๊ฒฐ ์ƒํ˜ธ์ž‘์šฉ

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 ํŒจ๋”ฉ ์—…๋กœ๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • 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.js
      • https://unpkg.com/three@latest/examples/jsm/libs/basis/basis_transcoder.wasm
  • ๐Ÿ”— ๋ผ์ด๋ธŒ ์˜ˆ์ œ (์ „์ฒด ๋ณด๊ธฐ โ†’):

    • KTX2 Basic: ํ‘œ์ค€ KTX2 ์••์ถ• ํ…์Šค์ฒ˜(Raw / ๋ธ”๋ก ์••์ถ• / Basis ํŠธ๋žœ์Šค์ฝ”๋”ฉ) ๋กœ๋“œ ๋ฐ ๋ Œ๋”๋ง ์˜ˆ์ œ