Skip to content

Standardize DirectTexture and DirectCubeTexture Architectureย #681

@redcamel

Description

@redcamel

๐Ÿ“ Context

RedGPU๋Š” ํŒŒ์ผ ๊ฒฝ๋กœ(URL)๋ฅผ ํ†ตํ•œ ์ž์‚ฐ ๋กœ๋“œ ๊ณผ์ •(BitmapTexture, CubeTexture) ์—†์ด, ์‹œ์Šคํ…œ ๋‚ด๋ถ€์—์„œ ๋™์ ์œผ๋กœ ์ƒ์„ฑ๋˜๊ฑฐ๋‚˜ ๊ณ„์‚ฐ๋œ GPU ๋ฆฌ์†Œ์Šค๋ฅผ ์ฆ‰์‹œ ์ฃผ์ž…ํ•˜์—ฌ ๊ด€๋ฆฌํ•˜๋Š” ์ „์šฉ ํด๋ž˜์Šค์ธ **DirectTexture**์™€ **DirectCubeTexture**๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

โŒ Problem

  1. ํŒŒํŽธํ™”๋œ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ: IBLCubeTexture, SkyAtmosphereLUTTexture ๋“ฑ ํŠน์ • ๋ชจ๋“ˆ์— ์ข…์†๋œ ๋ช…์นญ๊ณผ ์œ„์น˜๋กœ ์ธํ•ด ๋ฒ”์šฉ์ ์ธ ๋ฆฌ์†Œ์Šค ์ฃผ์ž…์ด ์–ด๋ ค์› ์Œ.
  2. ์ฝ”๋“œ ์ค‘๋ณต: ์ฃผ์ž…๋œ ํ…์Šค์ฒ˜์˜ ์บ์‹ฑ, ๋ฉ”๋ชจ๋ฆฌ ํŠธ๋ž˜ํ‚น, ๋ผ์ดํ”„์‚ฌ์ดํด ๊ด€๋ฆฌ ๋กœ์ง์ด ์—ฌ๋Ÿฌ ํด๋ž˜์Šค์— ์ค‘๋ณต ๊ตฌํ˜„๋˜์–ด ์œ ์ง€๋ณด์ˆ˜ ํšจ์œจ ์ €ํ•˜.
  3. ๋ถˆ๋ถ„๋ช…ํ•œ ์˜๋„: "ํŒŒ์ผ ๋กœ๋”ฉ ๊ธฐ๋ฐ˜" ๋ฆฌ์†Œ์Šค์™€ "์‹œ์Šคํ…œ ์ฃผ์ž… ๊ธฐ๋ฐ˜" ๋ฆฌ์†Œ์Šค ๊ฐ„์˜ ๋„ค์ด๋ฐ ๋Œ€์นญ์„ฑ์ด ๋ถ€์กฑํ•˜์—ฌ ๊ฐœ๋ฐœ์ž ํ˜ผ์„  ์ดˆ๋ž˜.

โœ… Solution: Unified Direct Resource Architecture

  1. ํด๋ž˜์Šค ์ •๊ทœํ™” ๋ฐ ์Šน๊ฒฉ:
    • DirectTexture: ํŒŒ์ผ ๋กœ๋”ฉ ์—†์ด 2D GPU ๋ฆฌ์†Œ์Šค๋ฅผ ์ง์ ‘ ์ œ์–ดํ•˜๋Š” ๋ฒ”์šฉ ์ปจํ…Œ์ด๋„ˆ.
    • DirectCubeTexture: ํŒŒ์ผ ๋กœ๋”ฉ ์—†์ด 3D ๋ฐ Cube GPU ๋ฆฌ์†Œ์Šค๋ฅผ ์ง์ ‘ ์ œ์–ดํ•˜๋Š” ๋ฒ”์šฉ ์ปจํ…Œ์ด๋„ˆ.
  2. ์ถ”์ƒ ํด๋ž˜์Šค ADirectTexture ๋„์ž…:
    • ๋ฆฌ์†Œ์Šค ์ฃผ์ž…์˜ ๊ณตํ†ต ๋ฉ”์ปค๋‹ˆ์ฆ˜(์‹ฑ๊ธ€ํ†ค ์บ์‹ฑ, # ํ•„๋“œ ๊ธฐ๋ฐ˜ ์บก์Аํ™”, ๋ฉ”๋ชจ๋ฆฌ ํ†ต๊ณ„ ๋™๊ธฐํ™”)์„ ์ถ”์ƒํ™”ํ•˜์—ฌ ๊ตฌ์กฐ์  ์ผ๊ด€์„ฑ ํ™•๋ณด.
  3. ์•„ํ‚คํ…์ฒ˜ ๋Œ€์นญ์„ฑ ์™„์„ฑ:
    • ์ž์‚ฐ ๋กœ๋“œํ˜•: BitmapTexture (2D), CubeTexture (Cube)
    • ์‹œ์Šคํ…œ ์ฃผ์ž…ํ˜•: DirectTexture (2D), DirectCubeTexture (3D/Cube)
  4. ๊ธ€๋กœ๋ฒŒ ์ ‘๊ทผ์„ฑ:
    • src/resources/index.ts๋ฅผ ํ†ตํ•ด ๊ณต์‹ ๋…ธ์ถœํ•˜์—ฌ ์™ธ๋ถ€์—์„œ๋„ ํ‘œ์ค€ํ™”๋œ ๋ฐฉ์‹์œผ๋กœ ์ปค์Šคํ…€ ํ…์Šค์ฒ˜๋ฅผ ์—”์ง„์— ์ฃผ์ž… ๊ฐ€๋Šฅํ•˜๋„๋ก ๊ฐœ์„ .

๐Ÿ›  Task List

  • Standardize DirectTexture and DirectCubeTexture APIs
  • Implement ADirectTexture abstract base class
  • Use # (Private fields) for enhanced resource security
  • Update all engine generators (IBL, SkyAtmosphere) to new standards
  • Export classes via RedGPU.Resource namespace

๐Ÿ“Š Impact

  • Developer Experience: ํด๋ž˜์Šค ์ด๋ฆ„๋งŒ์œผ๋กœ ๋ฆฌ์†Œ์Šค ๊ณต๊ธ‰ ๋ฐฉ์‹(Load vs Direct)์„ ์ฆ‰์‹œ ํŒŒ์•… ๊ฐ€๋Šฅ.
  • Maintainability: ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ์˜ ํ•ต์‹ฌ ๋กœ์ง์ด ๋‹จ์ผ ์ƒ์† ๊ตฌ์กฐ(ADirectTexture) ํ•˜์— ๋†“์—ฌ ๊ด€๋ฆฌ๊ฐ€ ์šฉ์ดํ•จ.
  • Robustness: 3D์™€ Cube ์ฐจ์›์— ๋”ฐ๋ฅธ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋กœ์ง(ViewDescriptor) ๋‚ด์žฌํ™”๋กœ ๋Ÿฐํƒ€์ž„ ์˜ค๋ฅ˜ ๋ฐฉ์ง€.

Status: Completed
Milestone: V4.1.0-Alpha
Labels: architecture, textures, standardization

Metadata

Metadata

Assignees

Labels

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions