๊ฒŒ์ž„ ์—”์ง„์€ ์ธ๊ฐ„์ด ๋งŒ๋“  ๊ทน๋„๋กœ ๋ณต์žกํ•œ ์‹œ์Šคํ…œ ์ค‘ ํ•˜๋‚˜๋กœ,ย 

์ธ๊ณต์ ์ธ ์ปดํ“จํ„ฐ์—์„œ ์ž์—ฐ์Šค๋Ÿฌ์šด ์„ธ๊ณ„๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ์—ญ์„ค์ ์ธ ์กด์žฌ์ž…๋‹ˆ๋‹ค.


์„ธ์ƒ์„ ํ‘œํ˜„ํ•˜๋ ค๋Š” ์‹œ๋„๋Š” ๊ณตํ•™์ด ์•„๋‹Œ ๋ฏธ์ˆ ์—์„œ ์ด์–ด์ ธ ์™”์œผ๋ฉฐ,

์šฐ๋ฆฌ๋Š” ๊ฒŒ์ž„ ์—”์ง„์˜ ์ตœ์ ํ™” ๋ฐฉ์‹์—์„œ ๊ทธ ์ฒ ํ•™์„ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.



์ด๋ฒˆ์— ๋ถ„์„ํ•  ๊ฒŒ์ž„ ์—”์ง„์€ ๋„ค๋œ๋ž€๋“œ์˜ Decima ์—”์ง„๊ณผ ๋Œ€ํ•œ๋ฏผ๊ตญ์˜ Black Space ์—”์ง„์ž…๋‹ˆ๋‹ค.

Decima ์—”์ง„์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ๋Œ€ํ‘œ์ ์ธ ๊ฒŒ์ž„์€ ํ˜ธ๋ผ์ด์ฆŒ ์ œ๋กœ ๋˜, ๋ฐ์Šค ์ŠคํŠธ๋žœ๋”ฉ ์ž…๋‹ˆ๋‹ค.


24b0d121e09c28a8699fe8b115ef0468e3aaefb26524b0d121e09c28a8699fe8b115ef046f59489f9da9



Black Space ์—”์ง„์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ์œ ์ผํ•œ ๊ฒŒ์ž„์€ ๋ถ‰์€์‚ฌ๋ง‰์ž…๋‹ˆ๋‹ค.ย 


24b0d121e09c28a8699fe8b115ef0469933af3bef724b0d121e09c28a8699fe8b115ef046ecc41caf321



๋‘ ์—”์ง„ ๋ชจ๋‘ ์˜คํ”ˆ ์›”๋“œ์— ํŠนํ™”๋œ ์ตœ๊ฐ•์˜ ์—”์ง„๋“ค์ž…๋‹ˆ๋‹ค. (ํ‚ค์•ผ~)

์•„๋ฆ„๋‹ค์šด ์„ธ๊ณ„๋ฅผ ๋ณด์—ฌ์ฃผ๋ฉด์„œ๋„ ์ตœ์ ํ™”๋ฅผ ๊ทนํ•œ์œผ๋กœ ๊นŽ์•„ ์˜ˆ์ˆ ๊ณผ ๊ธฐ์ˆ ์˜ ์ง„์ •ํ•œ ์œตํ•ฉ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.



์ด ์ •๋„ ๊ฒฐ๊ณผ๋ฌผ์—๋Š” ์ œ์ž‘์ž๋“ค์˜ ํ™•๊ณ ํ•œ ์ฒ ํ•™์ด ๋…น์•„์žˆ๊ธฐ ๋งˆ๋ จ์ž…๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ํ”ํžˆ ์ƒ๊ฐ๋˜๋Š” ๊ฒŒ์ž„ ์ปจ์…‰์ด ์•„๋‹Œ ์ตœ์ ํ™”๋ผ๋‹ˆ, ์—ฌ๊ธฐ์— ์–ด๋–ป๊ฒŒ ์ฒ ํ•™์ด ๋‹ด๊ธธ ์ˆ˜ ์žˆ์„๊นŒ์š”?

๋ฐ”๋กœ ์ „ํ†ต์ ์ธ ๋ฏธ์ˆ , ์„ธ์ƒ์„ ๋ฌด์—‡์œผ๋กœ ์ดํ•ดํ•˜๊ณ  ํ‘œํ˜„ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์ฒ ํ•™์ž…๋‹ˆ๋‹ค.



๋™์„œ์–‘ ์ฒ ํ•™์˜ ์ฐจ์ด๋Š” ์ผ์›๋ก ๊ณผ ์ด์›๋ก ์—์„œ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

๋™์–‘์€ ๋งŒ๋ฌผ์ด ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์œผ๋ฉฐ ๊ทธ ์ˆœํ™˜๊ณผ ๊ด€๊ณ„์— ์˜๋ฏธ๋ฅผ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

์„œ์–‘์€ ๊ด€์ฐฐ์ž์™€ ๋Œ€์ƒ์€ ๋ถ„๋ฆฌ๋˜๋ฉฐ ๊ฐ๊ด€์ ์ด๊ณ  ๋…๋ฆฝ์ ์ธ ๋Œ€์ƒ์„ ์ฐพ์•„๋ƒ…๋‹ˆ๋‹ค.



์ด๋Š” ๋Œ€ํ‘œ์ ์ธ ๋ฏธ์ˆ  ์ž‘ํ’ˆ์—๋„ ๋ช…ํ™•ํžˆ ๋“œ๋Ÿฌ๋‚ฉ๋‹ˆ๋‹ค.

์ด์ค‘์„ญ์˜ <ํฐ ์†Œ>์—์„œ๋Š” '์†Œ'๋ผ๋Š” ๋Œ€์ƒ์„ ์œ ๊ธฐ์ ์œผ๋กœ ์—ฎ์ธ ์„ ์œผ๋กœ ํ•ด์„ํ–ˆ์Šต๋‹ˆ๋‹ค.


24b0d121e09c28a8699fe8b115ef046c61f6284899


๋Œ€์ƒ์„ ๋ถ„ํ•ดํ•œ๋‹ค๋Š” ์‹œ๋„๋Š” ์„œ์–‘์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ, ๊ฒฐ๊ตญ ํ•ด์„ํ•˜๋Š” ์ฒ ํ•™์€ ์ „ํ†ต์ ์ธ ํ•œ๊ตญํ™”์™€ ํฌ๊ฒŒ ๋‹ค๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.


24b0d121e09c28a8699fe8b115ef046c64f829489beb24b0d121e09c28a8699fe8b115ef046ec24acbff2587



๊ทธ๋ฆฌ๊ณ  ๋ถ‰์€์‚ฌ๋ง‰์˜ ๋ฐฐ๊ฒฝ์ด ์„œ์–‘์ž„์—๋„ ์›๊ฒฝ์˜ ์‹ค๋ฃจ์—ฃ์€, ์–ด์งธ ์ต์ˆ™ํ•ด ๋ณด์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.


๋ชฌ๋“œ๋ฆฌ์•ˆ์˜ De Stijl(์‹ ์กฐํ˜•์ฃผ์˜)๋Š” ๊ณต๊ฐ„์ด ๋ช…ํ™•ํ•˜๊ฒŒ ์ง๊ฐ์œผ๋กœ ๋ถ„๋ฆฌ๋˜๋Š” ๊ด€์ ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.


24b0d121e09c28a8699fe8b115ef046c64f92b4f9c


์ด๋Š” ๋นˆ์„ผํŠธ ๋ฐ˜ ๊ณ ํ๋กœ ๋Œ€ํ‘œ๋˜๋Š” ์ ๋ฌ˜ํ™” ๊ธฐ๋ฒ•์—์„œ ์œ ๋ž˜ํ•˜์˜€์Šต๋‹ˆ๋‹ค.


24b0d121e09c28a8699fe8b115ef046c66f2284c9bea24b0d121e09c28a8699fe8b115ef046eca4dc9f02584



ํ˜ธ๋ผ์ด์ฆŒ ์ œ๋กœ ๋˜์˜ ๋ฐฐ๊ฒฝ์€ ๋™์–‘ํ™”๋ณด๋‹จ ์„œ์–‘ํ™”์— ๊ฐ€๊นŒ์šด ๋А๋‚Œ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค.

๋…๋ฆฝ๋œ ๊ฐ์ฒด์— ์ง‘์ค‘ํ•˜๋Š”์ง€, ์•„๋‹ˆ๋ฉด ๊ทธ๊ฒƒ๋“ค์ด ๋ฐฐ๊ฒฝ์— ๋…น์•„๋“ค์–ด ์ž์—ฐ์Šค๋Ÿฌ์šด ํ•˜๋‚˜๋ฅผ ๊ตฌ์„ฑํ•˜๋Š”์ง€์˜ ์ฐจ์ด์ž…๋‹ˆ๋‹ค.ย 



์˜คํ”ˆ ์›”๋“œ๋Š” ์„ธ๊ณ„ ์ž์ฒด๊ฐ€ ๋„ˆ๋ฌด๋‚˜ ๋ฐฉ๋Œ€ํ•ฉ๋‹ˆ๋‹ค.

๋ฌผ์ฒด๋“ค์˜ ์ •๋ณด๋ฅผ SSD์— ์ €์žฅํ•ด๋‘๊ณ , ๋ณด์ผ๋งŒํ•œ ๋‚ด์šฉ๋งŒ ๋น ๋ฅด๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ ค์ฃผ๋Š” '์ŠคํŠธ๋ฆฌ๋ฐ' ๊ธฐ์ˆ ์ด ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ํšจ๊ณผ์ ์ธ ์ŠคํŠธ๋ฆฌ๋ฐ์„ ์œ„ํ•ด์„ , ์„ธ๊ณ„์— ํฌํ•จ๋œ ๋ฌผ์ฒด๋ฅผ ์ •์˜ํ•˜๋Š” ๊ฒƒ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

De Stijl(์‹ ์กฐํ˜•์ฃผ์˜)์ด ์ˆ˜ํ‰ยท์ˆ˜์ง์˜ ์—„๊ฒฉํ•œ ๊ธฐํ•˜์™€ ๋ช…ํ™•ํ•œ ๋ฉด ๋ถ„ํ• ๋กœ ์„ธ๊ณ„๋ฅผ ์žฌ๊ตฌ์„ฑํ•˜๋ ค ํ–ˆ๋˜ ๋ฏธํ•™์ด๋ผ๋ฉด, Decima๋Š” ์˜คํ”ˆ์›”๋“œ๋ฅผ ๋จผ์ € ํƒ€์ผ ๊ฐ™์€ ๋ถ„์ ˆ๋œ ๋‹จ์œ„๋กœ ํ™˜์›ํ•œ ๋’ค ๋‹ค์‹œ ํ™”๋ฉด์œผ๋กœ ํ•ฉ์„ฑํ•˜๋Š” ์—”์ง„์— ๊ฐ€๊น์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ BlackSpace๋Š” ๊ณต์‹์ ์œผ๋กœ๋„ seamless open world๋ฅผ ์ „๋ฉด์— ๋‚ด์„ธ์šฐ๋ฉฐ, ์„ธ๊ณ„๋ฅผ ์ž˜๊ฒŒ ์ž˜๋ผ ๋ถ„์„ํ•˜๊ธฐ๋ณด๋‹ค ํ•˜๋‚˜์˜ ๊ฑฐ๋Œ€ํ•œ ์—ฐ์†์ฒด๋ฅผ ๊ฑฐ๋ฆฌ์™€ ์—ญํ• ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ํ‘œํ˜„์œผ๋กœ ์œ ์ง€ํ•˜๋Š” ์—”์ง„์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.



1. Decima: ์„ธ๊ณ„๋ฅผ ๋จผ์ € ๊ตฌํšํ•˜๊ณ , ๊ทธ๋‹ค์Œ ๋ Œ๋”๋งํ•œ๋‹ค


Decima๋ฅผ De Stijl์— ๋น„์œ ํ•  ์ˆ˜ ์žˆ๋Š” ์ด์œ ๋Š” ๊ณต๊ฐ„์„ ๋‹ค๋ฃจ๋Š” ๋…ผ๋ฆฌ์ž…๋‹ˆ๋‹ค. De Stijl์˜ ํ•ต์‹ฌ์ด ์—ฐ์†์  ์ž์—ฐ์„ ๊ทธ๋Œ€๋กœ ๋ฌ˜์‚ฌํ•˜๊ธฐ๋ณด๋‹ค ์ง์„ , ์ง๊ฐ, ๋ฉด, ๋น„์œจ๋กœ ์„ธ๊ณ„๋ฅผ ๋‹ค์‹œ ์งˆ์„œํ™”ํ•˜๋Š” ๋ฐ ์žˆ์—ˆ๋‹ค๋ฉด, Decima๋„ ์˜คํ”ˆ์›”๋“œ๋ฅผ โ€œ์žˆ๋Š” ๊ทธ๋Œ€๋กœ์˜ ์—ฐ์†์ฒดโ€๋กœ ๋ฐ›์•„๋“ค์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ๊ทธ๊ฒƒ์„ streaming strategies๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” subgraph, ๋„ค ํ•ด์ƒ๋„ ๊ณ„์ธต์˜ tile ring, ์ ˆ์ฐจ ๋ฐฐ์น˜๋ฅผ ์œ„ํ•œ 2D world maps, ๊ฐ€์‹œ์„ฑ ์งˆ์˜๋ฅผ ์œ„ํ•œ StaticTile/cluster/QueryInstance์˜ ์ธต์œ„๋กœ ๋‚˜๋ˆ•๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋งํ•ด Decima๋Š” ์„ธ๊ณ„๋ฅผ ๋จผ์ € ๋ถ„ํ•  ๊ฐ€๋Šฅํ•œ ์งˆ์„œ๋กœ ๋ฐ”๊พผ ๋’ค, ๊ทธ ์งˆ์„œ๋ฅผ GPU๊ฐ€ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•œ ๋ Œ๋” ์ž…๋ ฅ์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.


์ด ์—”์ง„์—์„œ ์ŠคํŠธ๋ฆฌ๋ฐ์€ ๋‹จ์ˆœํ•œ ๋ฐฑ๊ทธ๋ผ์šด๋“œ I/O๊ฐ€ ์•„๋‹ˆ๋ผ, ์˜คํ”ˆ์›”๋“œ ์กด์žฌ๋ก ์˜ ์ฒซ ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค. Guerrilla์˜ ๊ณต์‹ ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐœํ‘œ์— ๋”ฐ๋ฅด๋ฉด streaming links๋Š” tiles, characters, weapons ๊ฐ™์€ subgraph์˜ ๋ฃจํŠธ์ด๋ฉฐ, streaming strategies๋Š” ์ด subgraph๋“ค์„ ํ”„๋ ˆ์ž„๋งˆ๋‹ค ํ•œ ๋ฒˆ ํ‰๊ฐ€ํ•ด load/unload๋ฅผ ํ์ž‰ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ์ค‘ tile-based strategy๋Š” ํ”Œ๋ ˆ์ด์–ด ์ฃผ๋ณ€์„ 9๊ฐœ์˜ high, 9๊ฐœ์˜ medium, 9๊ฐœ์˜ low, 12๊ฐœ์˜ very-low ํƒ€์ผ๋กœ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— area-based strategy๋Š” ํ€˜์ŠคํŠธ๋‚˜ ๋™์  encounter๋ฅผ, program-based strategy๋Š” ๋””์ž์ด๋„ˆ๊ฐ€ ์ž‘์„ฑํ•œ ๊ทœ์น™ ๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆฌ๋ฐ์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰ Decima์—์„œ โ€œ์„ธ๊ณ„๊ฐ€ ์กด์žฌํ•œ๋‹คโ€๋Š” ๋ง์€ ๊ณง โ€œ์ด ํ”„๋ ˆ์ž„์— ์–ด๋–ค subgraph์™€ ์–ด๋–ค ํ•ด์ƒ๋„ ํƒ€์ผ์ด ํ™œ์„ฑ ์ƒํƒœ์ธ๊ฐ€โ€๋ผ๋Š” ๋œป์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋ฉ€๋ฆฌ ์žˆ๋Š” ์„ธ๊ณ„๋ฅผ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ด์–ด ๋ณด์ด๊ฒŒ ํ•˜๋ฉด์„œ๋„, ๋‚ด๋ถ€์ ์œผ๋กœ๋Š” ๋งค์šฐ ํ•ฉ๋ฆฌ์ ์œผ๋กœ ๋ถ„ํ• ๋œ ๋„ค๋œ๋ž€๋“œ์‹ ํ‰๋ฉด ๊ตฌ์„ฑ์ฒ˜๋Ÿผ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.ย 


์ด ๊ณต๊ฐ„ ๋ถ„ํ• ์€ PCG์—์„œ๋„ ๊ทธ๋Œ€๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค. Guerrilla์˜ ๊ณต์‹ ์„ค๋ช…๋Œ€๋กœ Decima์˜ GPU-based procedural placement๋Š” ํ”Œ๋ ˆ์ด์–ด ์ฃผ๋ณ€ ์„ธ๊ณ„๋ฅผ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•˜๋ฉฐ, ๋ฐ”์œ„์™€ ๋‚˜๋ฌด๋ฟ ์•„๋‹ˆ๋ผ sound, effects, wildlife, gameplay elements๊นŒ์ง€ ํฌํ•จํ•œ ํ™˜๊ฒฝ์„ ์กฐ๋ฆฝํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ์˜ Decima ๋ถ„์„ ๋ฌธ์„œ๊ฐ€ ์ •๋ฆฌํ•˜๋“ฏ, ์ด ์‹œ์Šคํ…œ์˜ ์ €์ž‘ ๋‹จ์œ„๋Š” ecotope์™€ WorldData์ด๋ฉฐ, WorldData๋Š” ํ”Œ๋ ˆ์ด์–ด ์ฃผ๋ณ€์œผ๋กœ ์ŠคํŠธ๋ฆฌ๋ฐ๋˜๋Š” 2D ๋งต ์ง‘ํ•ฉ์ด๊ณ , ๋Ÿฐํƒ€์ž„์—์„œ๋Š” DensityMap โ†’ Generate โ†’ Placement ์ˆœ์œผ๋กœ GPU๊ฐ€ ๋ฐ€๋„์™€ ์ƒ˜ํ”Œ๋ง, ์›”๋“œ ํ–‰๋ ฌ ์ƒ์„ฑ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ํฐ ์ž์‚ฐ์€ 128ร—128m, grass๋Š” 32ร—32m ๋‹จ์œ„์ฒ˜๋Ÿผ footprint๋ณ„ ๋ธ”๋ก ํฌ๊ธฐ๋„ ๋‹ค๋ฅด๊ฒŒ ๊ด€๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰ Decima์˜ PCG๋Š” โ€œ๋‚˜๋ฌด๋ฅผ ๋ช‡ ๊ฐœ ๋žœ๋ค ๋ฐฐ์น˜ํ•œ๋‹คโ€๊ฐ€ ์•„๋‹ˆ๋ผ, ๋” ์Šคํ‹ธ์˜ ํ™”๋ฉด์ฒ˜๋Ÿผ ๋จผ์ € ์žฅ(field) ์„ ์ •์˜ํ•œ ๋‹ค์Œ, ๊ทธ ์žฅ ์œ„์— ์ž์‚ฐ์˜ ๋ถ„ํฌ์™€ ๋ฆฌ๋“ฌ์„ ์–น๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.


Decima์˜ HLOD๋„ ๊ฐ™์€ ๋งฅ๋ฝ์—์„œ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์—”์ง„์€ Unreal์‹ ์šฉ์–ด๋กœ HLOD๋ฅผ ํฌ๊ฒŒ ๋‚ด์„ธ์šฐ์ง„ ์•Š์ง€๋งŒ, ํ”„๋กœ์ ํŠธ ๋ถ„์„ ๋ฌธ์„œ๊ฐ€ ์ •๋ฆฌํ•œ ๊ณต๊ฐœ ๋ฐœํ‘œ ๋‚ด์šฉ๋Œ€๋กœ ๋†’์€ LOD๋Š” ์•„ํ‹ฐ์ŠคํŠธ๊ฐ€ ๋ฐฐ์น˜ํ•œ building blocks, ๋‚ฎ์€ LOD๋Š” ๊ทธ building blocks๋ฅผ ํ•ฉ์นœ collapsed geometry์ž…๋‹ˆ๋‹ค. ๋” ์ค‘์š”ํ•œ ๊ฑด ์ด collapsed geometry๊ฐ€ ๋‹จ์ˆœํ•œ ์›๊ฑฐ๋ฆฌ ํ”„๋ก์‹œ๊ฐ€ ์•„๋‹ˆ๋ผ, visibility query์˜ ์ž…๋ ฅ ํ˜•์‹์ด๋ผ๋Š” ์ ์ž…๋‹ˆ๋‹ค. static resource tree๋Š” compute ์นœํ™”์ ์œผ๋กœ parent/child ๋‘ LOD ๋ ˆ๋ฒจ๋กœ ํ‰ํƒ„ํ™”๋˜๊ณ , QueryInstance๋Š” parent/child bounds์™€ LOD range๋ฅผ ์กฐ๋ฐ€ํ•˜๊ฒŒ ๋“ค๊ณ  ๋‹ค๋‹™๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ Decima์˜ HLOD๋Š” ํ™”๋ฉด ๋’ค์ชฝ์— ์ˆจ์–ด ์žˆ๋Š” ์žฅ์‹ ๊ธฐ๋Šฅ์ด ์•„๋‹ˆ๋ผ, โ€œ์–ด๋А ์Šค์ผ€์ผ์—์„œ ๋ฉˆ์ถœ์ง€โ€๋ฅผ ์งˆ์˜ ๋‹จ๊ณ„์—์„œ ๊ณง์žฅ ํŒ๋‹จํ•˜๋„๋ก ๋งŒ๋“œ๋Š” ๋‚ด๋ถ€ ๋ฌธ๋ฒ•์ž…๋‹ˆ๋‹ค. ํƒ€์ผ ๊ธฐ๋ฐ˜ ๋ฉ€ํ‹ฐํ•ด์ƒ๋„ ์ŠคํŠธ๋ฆฌ๋ฐ๊นŒ์ง€ ๊ฒน์น˜๋ฉด, Decima์˜ HLOD๋Š” ์‚ฌ์‹ค์ƒ collapsed geometry + tile resolution hierarchy์˜ ์ด์ค‘ ๊ตฌ์กฐ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.


๊ทธ๋ž˜์„œ Decima์˜ ์ปฌ๋ง์€ ๋ณด์ด๋Š” ๊ฒƒ์„ ๋ฒ„๋ฆฌ๋Š” ์†Œ๊ทน์  ๊ณผ์ •์ด ์•„๋‹ˆ๋ผ, ์„ธ๊ณ„๋ฅผ ๋ Œ๋”๋Ÿฌ๊ฐ€ ์†Œ๋น„ํ•  ์ˆ˜ ์žˆ๋Š” ์งˆ์„œ๋กœ ๋ฐ”๊พธ๋Š” ์ ๊ทน์  ๊ณผ์ •์ž…๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ๋ฌธ์„œ๊ฐ€ ์ •๋ฆฌํ•œ ๊ณต๊ฐœ ์ž๋ฃŒ ๊ธฐ์ค€์œผ๋กœ StaticScene์€ ์ •์  ์ฝ˜ํ…์ธ ๋ฅผ StaticTile๊ณผ cluster๋กœ ๋‚˜๋ˆ„๊ณ , CPU๊ฐ€ ๋จผ์ € ํƒ€์ผ๊ณผ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ coarse cullํ•œ ๋’ค visible cluster๋งˆ๋‹ค compute job์„ ๋„์›๋‹ˆ๋‹ค. ์ดํ›„ GPU์˜ ๊ฐ thread๋Š” QueryInstance ํ•˜๋‚˜์”ฉ ๋งก์•„ `filter โ†’ parent LOD โ†’ child LOD โ†’ frustum โ†’ size threshold โ†’ (camera only) occlusion` ์ˆœ์œผ๋กœ ๊ฒ€์‚ฌํ•˜๊ณ , visible์ด๋ฉด ๋‹จ์ˆœ visible list๊ฐ€ ์•„๋‹ˆ๋ผ batch์— ๊ฐ€๊นŒ์šด ์ถœ๋ ฅ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. Guerrilla์˜ ๊ณต์‹ visibility ์†Œ๊ฐœ๋„ ์ด ์‹œ์Šคํ…œ์˜ ํ•ต์‹ฌ์ด โ€œlarge and dense environmentsโ€๋ฅผ ์œ„ํ•œ fast visibility queries์™€ query ์ค‘ batch ์ˆ˜์ง‘์— ์žˆ๋‹ค๊ณ  ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. Decima์˜ ์„ธ๊ณ„๊ฐ€ ๋ชฌ๋“œ๋ฆฌ์•ˆ์ ์ธ ์ด์œ ๋Š” ์—ฌ๊ธฐ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์—”์ง„์€ ์ž์—ฐ์„ ๋จผ์ € ์ž˜๊ฒŒ ์ฐข์–ด์„œ ์žƒ์–ด๋ฒ„๋ฆฌ๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ, ์งˆ์„œํ™”๋œ ๋ฉด๊ณผ ๋ธ”๋ก์œผ๋กœ ํ™˜์›ํ•ด ๋” ์‹ธ๊ฒŒ ๋‹ค๋ฃจ๋Š” ๊ฒƒ์— ๋Šฅํ•ฉ๋‹ˆ๋‹ค.ย ย 


๊ทธ๋ฆผ์ž๋„ ๋ณ„๋„ ์„ธ๊ณ„๊ฐ€ ์•„๋‹ˆ๋ผ ๊ฐ™์€ ์งˆ์„œ์˜ ๋‹ค๋ฅธ ํˆฌ์˜์ž…๋‹ˆ๋‹ค. Guerrilla์˜ ๊ณต์‹ visibility ์„ค๋ช…์— ๋”ฐ๋ฅด๋ฉด ๊ธฐ์กด ์‹œ์Šคํ…œ์€ ๋งค ํ”„๋ ˆ์ž„ player camera, sunlight shadow map, other shadow maps๋ฅผ ์œ„ํ•œ query๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ๋Œ๋ ธ๊ณ , ํ”„๋กœ์ ํŠธ ๋ฌธ์„œ๋„ ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ Decima์˜ shadow path๋ฅผ ๊ฐ™์€ visibility infrastructure์˜ ๋‹ค๋ฅธ query mode๋กœ ํ•ด์„ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰ Decima๋Š” ๊ทธ๋ฆผ์ž๋ฅผ ์œ„ํ•ด ์„ธ๊ณ„๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“œ๋Š” ๋Œ€์‹ , ์ด๋ฏธ ๋ถ„ํ• ๋œ StaticTile/QueryInstance ๊ตฌ์กฐ๋ฅผ ๋ผ์ดํŠธ ๋ทฐ๋กœ ๋‹ค์‹œ ์ฝ์–ด ๋ƒ…๋‹ˆ๋‹ค. camera query์—๋Š” previous-frame depth ๊ธฐ๋ฐ˜ ์˜คํด๋ฃจ์ „์ด ๋ถ™์ง€๋งŒ, shadow queries์—๋Š” ๊ทธ๊ฒƒ์ด ๋น ์ง€๊ณ  ๋‹ค๋ฅธ frustum๊ณผ ์™„ํ™”๋œ ๊ธฐ์ค€์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. HFW์— ์™€์„œ๋Š” foliage/alpha-tested geometry๊ฐ€ visibility buffer pre-pass์™€ compute shading ๊ฒฝ๋กœ๋กœ ๋น ์ ธ G-buffer์™€ cascaded shadow maps ๋ Œ๋”๋ง์— ๊ฒน์ณ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์š”์ปจ๋Œ€ Decima์˜ shadow๋Š” ๋ณ„๋„ ์‹ฌ๋ฏธ์  ์ธต์ด ์•„๋‹ˆ๋ผ, ๊ฐ™์€ ํ•ฉ๋ฆฌ์ฃผ์˜์  ๊ณต๊ฐ„ ๋ถ„ํ• ์ด ๋ผ์ดํŠธ ์‹œ์•ผ์—์„œ ๋‹ค์‹œ ๊ณ„์‚ฐ๋œ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค.


ํ”„๋ ˆ์ž„ ๋‹จ์œ„๋กœ ๋ณด๋ฉด Decima์˜ ๋” ์Šคํ‹ธ์  ์„ฑ๊ฒฉ์€ ๋” ๋˜๋ ทํ•ด์ง‘๋‹ˆ๋‹ค. ๋จผ์ € streaming strategies๊ฐ€ ํ•œ ํ”„๋ ˆ์ž„์— ํ•œ ๋ฒˆ ํ‰๊ฐ€๋˜์–ด ์–ด๋–ค subgraph์™€ ์–ด๋–ค ํƒ€์ผ ๊ณ„์ธต์ด ํ™œ์„ฑ์ธ์ง€ ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋‹ค์Œ PCG๊ฐ€ ํ”Œ๋ ˆ์ด์–ด ์ฃผ๋ณ€ WorldData๋ฅผ ์ฝ์–ด ๋ฐ€๋„์™€ placement๋ฅผ ๊ฐฑ์‹ ํ•˜๊ณ , StaticTile ์ชฝ ์ค€๋น„๊ฐ€ ๋๋‚œ ๋ฐ์ดํ„ฐ๊ฐ€ ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค. ์ด์–ด์„œ player/shadow visibility query๊ฐ€ ์‹œ์ž‘๋˜๊ณ , CPU๊ฐ€ tile/cluster๋ฅผ coarse cullํ•œ ๋’ค GPU๊ฐ€ QueryInstance๋ฅผ ๋ณ‘๋ ฌ๋กœ ๊ฑธ๋Ÿฌ batch์„ฑ ์ถœ๋ ฅ๊นŒ์ง€ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด ์•ž๋‹จ์ด ๋๋‚˜๊ณ  ๋‚˜์„œ์•ผ geometry pass, shadow pass, foliage compute path, lighting, post-processing์ด ๋’ค๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ์ฆ‰ Decima๋Š” ๋จผ์ € ์„ธ๊ณ„๋ฅผ ๋ถ„ํ• ํ•˜๊ณ  ๊ณต๊ธ‰ํ•œ ๋’ค, ๋‚˜์ค‘์— ๊ทธ๋ฆฌ๋Š” ์—”์ง„์ž…๋‹ˆ๋‹ค.ย 



2. Black Space: ์„ธ๊ณ„๋ฅผ ๋Š๊ธฐ์ง€ ์•Š๋Š” ์—ฐ์†์ฒด๋กœ ์œ ์ง€ํ•˜๋ ค๋Š” ์—”์ง„


BlackSpace๋ฅผ ์ดํ•ดํ•  ๋•Œ๋Š” ๊ฐ™์€ ์งˆ๋ฌธ์„ ๋ฐ˜๋Œ€๋กœ ๋˜์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์—”์ง„์€ ์„ธ๊ณ„๋ฅผ ๋จผ์ € ํƒ€์ผ๊ณผ ๊ทธ๋ž˜ํ”„๋กœ ์งˆ์„œํ™”ํ•œ ๋’ค ํ™”๋ฉด์œผ๋กœ ํ•ฉ์„ฑํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค, ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ๋ณด๋Š” ์„ธ๊ณ„๊ฐ€ ํ•˜๋‚˜์˜ ๊ฑฐ๋Œ€ํ•œ ์—ฐ์†์ฒด์ฒ˜๋Ÿผ ๋Š๊ธฐ์ง€ ์•Š๊ฒŒ ์œ ์ง€๋˜๋Š” ๊ฒƒ์„ ์•ž์„ธ์›๋‹ˆ๋‹ค. Pearl Abyss๋Š” ๊ณต์‹์ ์œผ๋กœ BlackSpace Engine์ด seamless open world๋ฅผ ์ œ๊ณตํ•œ๋‹ค๊ณ  ๋งํ•˜๊ณ , Dev Archives์—์„œ๋Š” water flow, volumetric fog with fluid simulation, atmospheric scattering, GPU-based cloth and hair simulation, ray tracing ๊ฐ™์€ ์š”์†Œ๋ฅผ ํ†ตํ•ด ๊ทธ ์—ฐ์†์ฒด์˜ ๊ฐ๊ฐ์„ ๊ฐ•์กฐํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ์ค‘์š”ํ•œ ๊ฒƒ์€ โ€œ์—ฐ์†์ฒดโ€๊ฐ€ ๊ธฐ์ˆ ์ ์œผ๋กœ ๋ถ„ํ• ์ด ์—†๋‹ค๋Š” ๋œป์ด ์•„๋‹ˆ๋ผ, ๋‚ด๋ถ€์˜ ๋ถ„ํ• ์ด ํ”Œ๋ ˆ์ด์–ด์—๊ฒŒ ์ง€ํ‰์„ ์˜ ๋Š๊น€์œผ๋กœ ๋“œ๋Ÿฌ๋‚˜์ง€ ์•Š๊ฒŒ ๊ด€๋ฆฌ๋œ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์ œ๊ฐ€ โ€˜๋™์–‘์ โ€™์ด๋ผ๋Š” ๋ง์„ ์“ฐ๋Š” ์ด์œ ๋„ ๋ฐ”๋กœ ์—ฌ๊ธฐ์— ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์‚ฌ๋ฌผ์„ ๊ฐœ๋ณ„ ๋‹จ์œ„๋กœ ๋ถ„์„ํ•˜๊ธฐ๋ณด๋‹ค, ์•ˆ๊ฐœยท์‚ฐยท๋‚˜๋ฌดยท๋„์‹œ๊ฐ€ ํ•œ ํ˜ธํก์˜ ์žฅ์œผ๋กœ ์ด์–ด์ง€๋Š” ์‹์˜ ์—ฐ์†์  ๊ณต๊ฐ„ ๊ฐ๊ฐ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋น„์œ ์ž…๋‹ˆ๋‹ค.


๊ทธ๋ž˜์„œ BlackSpace์˜ ํ•ต์‹ฌ ๋‹จ์œ„๋Š” Decima์˜ ํƒ€์ผ์ด๋‚˜ ecotope๊ฐ€ ์•„๋‹ˆ๋ผ, ๊ฑฐ๋ฆฌ์™€ ์—ญํ• ์— ๋”ฐ๋ฅธ ํ‘œํ˜„ ์ƒํƒœ์ž…๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ์˜ BlackSpace ๋ถ„์„ ๋ฌธ์„œ๋Š” ๊ณต๊ฐœ ์งˆ์˜์‘๋‹ต ์žฌํ˜„๋ณธ์„ ๋ฐ”ํƒ•์œผ๋กœ, ๋‚˜๋ฌด๊ฐ€ ๊ฐ€๊นŒ์ด์—์„œ๋Š” ์›๋ณธ ๋ฉ”์‹œ, ๋ฉ€์–ด์ง€๋ฉด 8ร—8 ๋ฐฉํ–ฅ์˜ 3D impostor, ๋” ๋ฉ€์–ด์ง€๋ฉด Proxy LOD๋กœ ๋„˜์–ด๊ฐ€๋Š” ๊ตฌ์กฐ๋ฅผ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์„œ์˜ ํ•ต์‹ฌ ํ†ต์ฐฐ์€ Proxy LOD๊ฐ€ ๋‹จ์ˆœํžˆ ์ €ํด๋ฆฌ ๋ชจ๋ธ์ด ์•„๋‹ˆ๋ผ, ์„ธ๊ณ„์˜ ์™ธ๊ณฝ์„ ๊ณ„์† ๋ถ™์žก์•„ ๋‘๋Š” ์žฅ๊ฑฐ๋ฆฌ ์กด์žฌ ํ˜•์‹์ด๋ผ๋Š” ์ ์ž…๋‹ˆ๋‹ค. ์ฆ‰ BlackSpace์—์„œ LOD๋Š” โ€œ๋ฉ€๋ฆฌ ์žˆ๋Š” ๊ฒƒ์„ ์ค„์ธ๋‹คโ€๋Š” ์กฐ์ • ์žฅ์น˜๊ฐ€ ์•„๋‹ˆ๋ผ, ๊ฐ™์€ ์„ธ๊ณ„๊ฐ€ ๋‹ค๋ฅธ ๊ฑฐ๋ฆฌ์—์„œ ์–ด๋–ค ๋ชธ์„ ๊ฐ€์งˆ ๊ฒƒ์ธ๊ฐ€๋ฅผ ์ •ํ•˜๋Š” ์กด์žฌ๋ก ์  ๊ณ„๋‹จ์ž…๋‹ˆ๋‹ค.ย 


์ด ์ฐจ์ด๋Š” ์ปฌ๋ง์—์„œ๋„ ๋“œ๋Ÿฌ๋‚ฉ๋‹ˆ๋‹ค. Decima์˜ ์ปฌ๋ง์ด StaticTile/QueryInstance๋ฅผ ๋”ฐ๋ผ ๋ Œ๋”๋Ÿฌ ์ž…๋ ฅ์„ ์ •๋ฆฌํ•˜๋Š” ๋ฐ ์ค‘์‹ฌ์ด ์žˆ๋‹ค๋ฉด, BlackSpace์˜ ์ปฌ๋ง์€ ๋ฌด์—‡์„ ๋ฒ„๋ฆฌ๋А๋ƒ๋ณด๋‹ค ๋ฌด์—‡์„ ์–ด๋–ค ํ˜•์‹์œผ๋กœ ๋‚จ๊ธฐ๋А๋ƒ์— ๋” ๊ฐ€๊นŒ์›Œ ๋ณด์ž…๋‹ˆ๋‹ค. PlayStation Blog๊ฐ€ ์ „ํ•œ Pearl Abyss์˜ ์„ค๋ช…์— ๋”ฐ๋ฅด๋ฉด PS5์—์„œ๋Š” ๊ฑฐ๋Œ€ํ•œ ์Šค์ผ€์ผ์˜ ๋””ํ…Œ์ผ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด SSD streaming, High CPU Frequency Mode, Geometry Shader Oversubscription, NGG Culling์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ๋ฌธ์„œ๋Š” ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ, BlackSpace์˜ ์ผ๋ถ€ ๊ฒฝ๋กœ๊ฐ€ GPU ์ง€์˜ค๋ฉ”ํŠธ๋ฆฌ ๋‹จ๊ณ„์—์„œ ์›๋ณธ / impostor / Proxy LOD ์ค‘ ์–ด๋–ค ํ‘œํ˜„์„ ๋‚ผ์ง€ ๊ณ ๋ฅด๋Š” ๊ตฌ์กฐ๋กœ ์žฌ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰ ์ด ์—”์ง„์˜ ์ตœ์ ํ™”๋Š” ํƒ€์ผ์„ ์ค„์ด๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์‹œ์ ์œผ๋กœ๋ถ€ํ„ฐ ๋ฉ€์–ด์งˆ์ˆ˜๋ก ๊ฐ™์€ ์„ธ๊ณ„๋ฅผ ๋” ๊ฐ€๋ฒผ์šด ๋ชธ์œผ๋กœ ๋ฐ”๊ฟ” ์—ฐ์†์„ฑ์„ ๋ณด์กดํ•˜๋Š” ๊ฒƒ์— ๊ฐ€๊น์Šต๋‹ˆ๋‹ค.


๊ทธ๋ฆผ์ž์—์„œ๋„ BlackSpace๋Š” Decima์™€ ๋ฐ˜๋Œ€๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ๋ฌธ์„œ๊ฐ€ ์ •๋ฆฌํ•œ ๊ณต๊ฐœ ์งˆ์˜์‘๋‹ต ๊ธฐ์ค€์œผ๋กœ BlackSpace๋Š” ๊ทธ๋ฆผ์ž๋ฅผ ํ•˜๋‚˜์˜ CSM ๊ณ„์—ด๋กœ ๋ญ‰๋šฑ๊ทธ๋ฆฌ์ง€ ์•Š๊ณ , ์ •์  2์บ์Šค์ผ€์ด๋“œ, ์ง€ํ˜• 1์บ์Šค์ผ€์ด๋“œ, ๋™์  2์บ์Šค์ผ€์ด๋“œ, ๊ทผ๊ฑฐ๋ฆฌ ์บ๋ฆญํ„ฐ 1์บ์Šค์ผ€์ด๋“œ๋กœ ๋‚˜๋ˆ•๋‹ˆ๋‹ค. ์ •์  ๊ทธ๋ฆผ์ž๋Š” progressive update, ๋™์  ๊ทธ๋ฆผ์ž๋Š” every frame, ๋ฏธ์„ธ ๋””ํ…Œ์ผ์€ contact shadows๊ฐ€ ๋ณด๊ฐ•ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ BlackSpace๊ฐ€ ๊ทธ๋ฆผ์ž์—์„œ๋„ ์„ธ๊ณ„๋ฅผ ๋™์ผํ•œ ๋น„์šฉ์œผ๋กœ ๋‹ค์‹œ ๊ทธ๋ฆฌ์ง€ ์•Š๋Š”๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค. ๋ฉ€๊ณ  ๊ฑฐ์˜ ๋ณ€ํ•˜์ง€ ์•Š๋Š” ์„ธ๊ณ„๋Š” ์ฒœ์ฒœํžˆ ๊ฐฑ์‹ ๋˜๋Š” shadow shell๋กœ, ๊ฐ€๊นŒ์ด์—์„œ ๊ณ„์† ํ”๋“ค๋ฆฌ๋Š” ์‹์ƒ๊ณผ ์บ๋ฆญํ„ฐ๋Š” ๋น ๋ฅด๊ฒŒ ๊ฐฑ์‹ ๋˜๋Š” ๋™์  shadow shell๋กœ, ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ธ๋ฌผ์€ ๋ณ„๋„ ๊ทผ์ ‘ shadow shell๋กœ ๋ฐฐ๋‹น๋ฉ๋‹ˆ๋‹ค. ๊ฐ™์€ ๋‚˜๋ฌด๋ผ๋„ beauty pass์—์„œ๋Š” Proxy LOD์ผ ์ˆ˜ ์žˆ๊ณ , shadow ์ชฝ์—์„œ๋Š” ์ •์  ํ˜น์€ ๋™์  ์บ์Šคํ„ฐ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์ด ๋‹ค์ธต์„ฑ ๋•Œ๋ฌธ์— BlackSpace๋Š” โ€œ์—ฐ์†์ฒดโ€์˜ ์—”์ง„์ฒ˜๋Ÿผ ๋А๊ปด์ง‘๋‹ˆ๋‹ค. ์ž˜๊ฒŒ ์ฐข๊ธฐ๋ณด๋‹ค, ๊ฑฐ๋ฆฌ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์ธต์˜ ๊ป์งˆ์„ ์ž…ํ˜€ ํ•˜๋‚˜์˜ ์„ธ๊ณ„๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.ย 


์ด ๋…ผ๋ฆฌ๋Š” RT์—์„œ๋„ ๋ฐ˜๋ณต๋ฉ๋‹ˆ๋‹ค. Dev Archives๋Š” BlackSpace๊ฐ€ ray tracing์„ ์ค‘์š”ํ•œ ํ‘œํ˜„ ์ถ•์œผ๋กœ ์‚ผ๊ณ  ์žˆ์Œ์„ ๋ณด์—ฌ ์ฃผ์ง€๋งŒ, ํ”„๋กœ์ ํŠธ ๋ฌธ์„œ๋Š” ๊ณต๊ฐœ ์งˆ์˜์‘๋‹ต ์žฌํ˜„๋ณธ์„ ๊ทผ๊ฑฐ๋กœ RT๊ฐ€ ๋ฌดํ•œ์ • ์ •๋ฐ€ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ๋Š” ์ ์„ ๊ฐ•์กฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ๋ฌธ์„œ์— ๋”ฐ๋ฅด๋ฉด BlackSpace๋Š” BVH๋ฅผ ๊ฑฐ์˜ ๋ชจ๋“  ํฐ ์˜ค๋ธŒ์ ํŠธ์— ์ ์šฉํ•˜๋˜ ์•ฝ 100~150m๊นŒ์ง€๋งŒ ์œ ์ง€ํ•˜๊ณ , ๊ทธ ๋ฐ”๊นฅ์€ ์•ฝ 2km๊นŒ์ง€ SDF๋กœ ๋ฐ›์นฉ๋‹ˆ๋‹ค. ์žฌ์งˆ๋„ hit shader divergence๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ๋‹จ์ˆœํ™”๋˜๊ณ , ์บ๋ฆญํ„ฐ์˜ ๋ณต์žกํ•œ ํ…์Šค์ฒ˜๋„ RT ๊ฒฝ๋กœ์—์„œ๋Š” ๋” ์••์ถ•๋œ ํ‘œํ˜„์œผ๋กœ ๋„˜์–ด๊ฐ‘๋‹ˆ๋‹ค. ์ด๊ฑด ์ค‘์š”ํ•œ ๋‹จ์„œ์ž…๋‹ˆ๋‹ค. BlackSpace์˜ ์ฒ ํ•™์€ โ€œ์ •ํ™•ํ•œ ์„ธ๊ณ„๋ฅผ ์–ด๋””๊นŒ์ง€ ์œ ์ง€ํ•  ๊ฒƒ์ธ๊ฐ€โ€๊ฐ€ ์•„๋‹ˆ๋ผ, ์ •ํ™•ํ•œ ์„ธ๊ณ„๋ฅผ ๊ทผ๊ฑฐ๋ฆฌ๋กœ ๊ตญ์†Œํ™”ํ•˜๊ณ , ๊ทธ ๋ฐ–์˜ ์—ฐ์†์„ฑ์€ ๋Œ€๋ฆฌ ํ‘œํ˜„์œผ๋กœ ์ด์–ด ๋ถ™์ด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.


๊ทธ๋ž˜์„œ BlackSpace์˜ ํ”„๋ ˆ์ž„์€ Decima์ฒ˜๋Ÿผ ํƒ€์ผ ๊ณต๊ธ‰๋ง์—์„œ ์‹œ์ž‘ํ•œ๋‹ค๊ธฐ๋ณด๋‹ค, ๊ฑฐ๋ฆฌ๊ถŒ๋ณ„ ํ‘œํ˜„ ๋ฐฐ์ •์—์„œ ์‹œ์ž‘ํ•œ๋‹ค๊ณ  ๋ณด๋Š” ํŽธ์ด ๋” ๋งž์Šต๋‹ˆ๋‹ค. ์ •ํ™•ํ•œ ์ „์ฒด ํ”„๋ ˆ์ž„ ๊ทธ๋ž˜ํ”„๋Š” ๊ณต์‹ ๊ณต๊ฐœ๊ฐ€ ์—†์ง€๋งŒ, ๊ณต์‹ Dev Archives์™€ PlayStation ์„ค๋ช…, ๊ทธ๋ฆฌ๊ณ  ํ”„๋กœ์ ํŠธ ๋ถ„์„ ๋ฌธ์„œ๋ฅผ ํ•ฉ์น˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์žฌ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋จผ์ € ์นด๋ฉ”๋ผ ์ฃผ๋ณ€ ์—ฐ์†์ฒด๋ฅผ ๋Š์ง€ ์•Š๊ธฐ ์œ„ํ•œ SSD ๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆฌ๋ฐ์ด ๋Œ์•„๊ฐ€๊ณ , ๊ณง์ด์–ด ์˜ค๋ธŒ์ ํŠธ๋งˆ๋‹ค `์›๋ณธ ๋ฉ”์‹œ / 3D impostor / Proxy LOD`, `๋™์  shadow / ์ •์  shadow / ์ง€ํ˜• shadow / near-character shadow`, `BVH / SDF` ์ค‘ ์–ด๋–ค ํ‘œํ˜„์ด ํ˜„์žฌ ๊ฑฐ๋ฆฌ์™€ ์—ญํ• ์— ๋งž๋Š”์ง€๊ฐ€ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋’ค GPU ์ง€์˜ค๋ฉ”ํŠธ๋ฆฌ ๋‹จ๊ณ„์˜ ์ปฌ๋ง๊ณผ representation selection์ด ์‹ค์ œ ์ œ์ถœ์„ ์ค„์ด๊ณ , lighting/RT/post๊ฐ€ ์ด์–ด์ง‘๋‹ˆ๋‹ค. ์ด ์—”์ง„์—์„œ ์ตœ์ ํ™”์˜ ๊ธฐ๋ณธ ๋ฌธ์žฅ์€ โ€œ๋ฌด์—‡์„ tile๋กœ ํ™œ์„ฑํ™”ํ• ๊นŒโ€๋ณด๋‹ค "์ด ์—ฐ์†์ ์ธ ์„ธ๊ณ„๋ฅผ ์ง€๊ธˆ ์–ด๋–ค ํ‘œํ˜„ ์ƒํƒœ๋กœ ์ด์–ด ๋‘˜๊นŒโ€์ž…๋‹ˆ๋‹ค.ย 



3. ๋‘ ์—”์ง„์˜ ์ง„์งœ ์ฐจ์ด: ๋ถ„ํ• ์„ ์ž˜ํ•˜๋Š” ์—”์ง„๊ณผ, ์—ฐ์†์„ ์ž˜ ์œ ์ง€ํ•˜๋Š” ์—”์ง„


์ด์ œ ๋‘ ์—”์ง„์„ ๊ฐ™์€ ํ‰๋ฉด์— ์˜ฌ๋ ค๋†“๊ณ  ๋ณด๋ฉด ์ฐจ์ด๋Š” ํ›จ์”ฌ ๋ช…๋ฃŒํ•ด์ง‘๋‹ˆ๋‹ค. Decima๋„ ๋ฌผ๋ก  ๊ฑฐ๋ฆฌ ๊ธฐ๋ฐ˜ LOD๋ฅผ ์“ฐ๊ณ , BlackSpace๋„ ๋‚ด๋ถ€์ ์œผ๋กœ๋Š” ์ˆ˜๋งŽ์€ ๋ถ„ํ• ๊ณผ ์ŠคํŠธ๋ฆฌ๋ฐ ๋‹จ์œ„๋ฅผ ๊ฐ–๊ณ  ์žˆ์„ ๊ฒ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฌด์—‡์ด ์ตœ์ ํ™”์˜ ์ค‘์‹ฌ์ถ•์ธ๊ฐ€๋Š” ๋‹ค๋ฆ…๋‹ˆ๋‹ค. Decima์—์„œ ๊ธฐ๋ณธ ๋‹จ์œ„๋Š” tile, streaming link, StaticTile, ecotope, QueryInstance์ž…๋‹ˆ๋‹ค. ์ฆ‰ ์„ธ๊ณ„๋Š” ๋จผ์ € ๋ถ„์ ˆ๋œ ์šด์˜ ๋‹จ์œ„๊ฐ€ ๋˜๊ณ , ๋ Œ๋”๋ง์€ ๊ทธ ๋‹จ์œ„๋“ค์ด ์–ผ๋งˆ๋‚˜ ํšจ์œจ์ ์œผ๋กœ ์งˆ์˜๋˜๊ณ  ๋ฐฐ์น˜๋˜๋Š”์ง€์˜ ๋ฌธ์ œ๋กœ ๋ฐ”๋€๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ BlackSpace์—์„œ ์ค‘์‹ฌ ๋‹จ์œ„๋Š” distance band, representation band, update cadence์ž…๋‹ˆ๋‹ค. ๊ฐ™์€ ์„ธ๊ณ„๊ฐ€ ํ•œ ๋ฉ์–ด๋ฆฌ์˜ horizon์œผ๋กœ ์œ ์ง€๋˜์–ด์•ผ ํ•˜๋ฉฐ, ์ตœ์ ํ™”๋Š” ๊ทธ horizon์„ ๊นจ์ง€ ์•Š๊ณ  ์–ด๋–ค ํ‘œํ˜„์„ ์–ผ๋งˆ๋‚˜ ๋ฉ€๋ฆฌ๊นŒ์ง€ ์œ ์ง€ํ• ์ง€์˜ ๋ฌธ์ œ๋กœ ๋ฐ”๋€๋‹ˆ๋‹ค.


๊ฐ™์€ HLOD๋ผ๋Š” ๋ง์„ ์จ๋„ ๊ธฐ๋Šฅ์  ์œ„์น˜๊ฐ€ ๋‹ค๋ฅธ ์ด์œ ๋„ ์—ฌ๊ธฐ ์žˆ์Šต๋‹ˆ๋‹ค. Decima์˜ HLOD๋Š” visibility query๋ฅผ ์‹ธ๊ฒŒ ๋งŒ๋“œ๋Š” ๋‚ด๋ถ€ ๊ตฌ์กฐ์— ๊ฐ€๊น์Šต๋‹ˆ๋‹ค. building blocks์™€ collapsed geometry, parent/child flattened tree, tile resolution hierarchy๊ฐ€ ๋ชจ๋‘ ๋ Œ๋”๋Ÿฌ ์•ž๋‹จ์˜ ์งˆ์˜๋ฅผ ์œ„ํ•ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด BlackSpace์˜ Proxy LOD๋Š” ๋ฉ€๋ฆฌ ์žˆ๋Š” ์„ธ๊ณ„๊ฐ€ ์‹ค์ œ๋กœ ์–ด๋–ค ๋ชจ์Šต์œผ๋กœ ๋‚จ์•„ ์žˆ์„์ง€๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ์™ธ๊ณฝ ํ‘œํ˜„์ธต์— ๊ฐ€๊น์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋งํ•ด Decima์˜ HLOD๋Š” ์—”์ง„ ๋‚ด๋ถ€์˜ ํ•ฉ๋ฆฌ์  ๋ฌธ๋ฒ•์ด๊ณ , BlackSpace์˜ HLOD ๊ณ„์—ด์€ ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ๋ณด๋Š” ์—ฐ์†์ฒด๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ์ง€ํ‰์„ ์˜ ๊ป์งˆ์ž…๋‹ˆ๋‹ค.


๊ทธ๋ฆผ์ž๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. Decima์˜ shadow๋Š” ๊ฐ™์€ visibility system์˜ ๋‹ค๋ฅธ query์ž…๋‹ˆ๋‹ค. BlackSpace์˜ shadow๋Š” ๊ฐ™์€ ์—ฐ์†์ฒด์˜ ๋‹ค๋ฅธ ๊ฑฐ๋ฆฌ์ธต์ž…๋‹ˆ๋‹ค. ์ „์ž๋Š” ๋ถ„ํ• ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฅธ ๋ทฐ์—์„œ ๋‹ค์‹œ ์ฝ๋Š” ๊ฒƒ์ด๊ณ , ํ›„์ž๋Š” ๊ฐ™์€ ์„ธ๊ณ„๋ฅผ ์ •์ /์ง€ํ˜•/๋™์ /๊ทผ์ ‘ ์ธ๋ฌผ์ด๋ผ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐฑ์‹  ๋ฆฌ๋“ฌ์œผ๋กœ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜๋‚˜๋Š” ์งˆ์˜ ์ค‘์‹ฌ์ด๊ณ , ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ์—ฐ์†์„ฑ ์œ ์ง€ ์ค‘์‹ฌ์ž…๋‹ˆ๋‹ค.



4. ๊ฒฐ๋ก : ๋ฐ์‹œ๋งˆ๋Š” ๋ชฌ๋“œ๋ฆฌ์•ˆ์ ์ด๊ณ , ๋ธ”๋ž™์ŠคํŽ˜์ด์Šค๋Š” ์‚ฐ์ˆ˜ํ™”์ ์ด๋‹ค


๊ทธ๋ž˜์„œ ์ด๋ฒˆ ๋น„๊ต์˜ ๊ฒฐ๋ก ์€ ๋ฏธ์ˆ ๋กœ ์„ค๋ช…๋ฉ๋‹ˆ๋‹ค. Decima๋Š” ์„ธ๊ณ„๋ฅผ ํƒ€์ผ๊ณผ PCG ์žฅ, ๊ฐ€์‹œ์„ฑ ์งˆ์˜, HLOD ๊ตฌ์กฐ๋กœ ๋จผ์ € ์งˆ์„œํ™”ํ•œ ๋’ค ๋ Œ๋”๋งํ•˜๋Š” ์—”์ง„์ž…๋‹ˆ๋‹ค. ๋” ์Šคํ‹ธ์˜ ํ‰๋ฉด์ฒ˜๋Ÿผ, ์„ธ๊ณ„๋Š” ๋ช…ํ™•ํžˆ ๊ตฌํš๋œ ๋ฉด๊ณผ ์Šค์ผ€์ผ๋กœ ๋‹ค์‹œ ์“ฐ์ด๊ณ , ๊ทธ ์œ„์—์„œ ์ŠคํŠธ๋ฆฌ๋ฐ๊ณผ ๋ฐฐ์น˜, shadow query๊ฐ€ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ BlackSpace๋Š” ์„ธ๊ณ„๋ฅผ ํ•˜๋‚˜์˜ ๊ฑฐ๋Œ€ํ•œ seamless horizon์œผ๋กœ ์œ ์ง€ํ•˜๋ฉด์„œ, ๊ฑฐ๋ฆฌ์™€ ์—ญํ• ์— ๋”ฐ๋ผ ์›๋ณธยท์ž„ํฌ์Šคํ„ฐยทProxy LODยทshadow layerยทBVHยทSDF ์‚ฌ์ด๋ฅผ ์ด๋™์‹œํ‚ค๋Š” ์—”์ง„์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ „์ž๋Š” โ€œ์„ธ๊ณ„๋ฅผ ์–ผ๋งˆ๋‚˜ ์ž˜ ๋‚˜๋ˆ„์–ด ๋ Œ๋”๋Ÿฌ์— ๊ณต๊ธ‰ํ•˜๋А๋ƒโ€๊ฐ€ ํ•ต์‹ฌ์ด๊ณ , ํ›„์ž๋Š” โ€œ์„ธ๊ณ„๋ฅผ ์–ผ๋งˆ๋‚˜ ๋Š๊ธฐ์ง€ ์•Š๊ฒŒ ๋‹ค๋ฅธ ํ‘œํ˜„์œผ๋กœ ์ด์–ด ๋ถ™์ด๋А๋ƒโ€๊ฐ€ ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค. ์ด ์˜๋ฏธ์—์„œ Decima๋Š” ๋ชฌ๋“œ๋ฆฌ์•ˆ์ ์ด๊ณ , BlackSpace๋Š” ์‚ฐ์ˆ˜ํ™”์ ์ž…๋‹ˆ๋‹ค. ํ•˜๋‚˜๋Š” ๋ถ„ํ• ์˜ ๋ฏธํ•™์œผ๋กœ ๊ฐ•ํ•˜๊ณ , ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ์—ฐ์†์˜ ๋ฏธํ•™์œผ๋กœ ๊ฐ•ํ•ฉ๋‹ˆ๋‹ค.



[1]: https://www.tate.org.uk/art/art-terms/d/de-stijl "De Stijl"

[2]: https://d3d3g8mu99pzk9.cloudfront.net/AstridHuntjens/Streaming%20the%20world%20of%20Horizon%20Zero%20Dawn.pdf "PowerPoint Presentation"

[3]: https://www.guerrilla-games.com/read/gpu-based-procedural-placement-in-horizon-zero-dawn "GPU-Based Procedural Placement in Horizon Zero Dawn - Guerrilla Games"

[4]: https://www.guerrilla-games.com/read/decima-engine-visibility-in-horizon-zero-dawn "Decima Engine: Visibility in Horizon Zero Dawn - Guerrilla Games"

[5]: https://crimsondesert.pearlabyss.com/en-us/News/Notice/Detail?_boardNo=40 "[Notices] Dev Archives: A Look into Pearl Abyssโ€™ BlackSpace Engine | Crimson Desert"

[6]: https://blog.playstation.com/2026/03/04/crimson-desert-hands-on-report-four-hours-in-the-rpgs-massive-open-world/ "Crimson Desert hands-on report: four hours in the RPGโ€™s massive open world โ€“ PlayStation.Blog"

[7]: https://www.britannica.com/biography/Piet-Mondrian "Piet Mondrian | Biography, Paintings, Style, & Facts"