๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Unity

Culling (์ตœ์ ํ™”)

by LemongO 2024. 5. 9.

๐Ÿ“Œ์ปฌ๋ง(Culling)์ด๋ž€?

์นด๋ฉ”๋ผ์— ๋ณด์ด์ง€ ์•Š๋Š” ๊ฒƒ์€ ๊ทธ๋ฆฌ์ง€ ์•Š๋Š”๋‹ค.

1. ํ”„๋Ÿฌ์Šคํ…€ ์ปฌ๋ง (Frustum Culling)

๊ธฐ๋ณธ์ ์œผ๋กœ ์œ ๋‹ˆํ‹ฐ ์—”์ง„ ์ž์ฒด์—์„œ ํ”„๋Ÿฌ์Šคํ…€(Frustum) ์ปฌ๋ง์œผ๋กœ ์นด๋ฉ”๋ผ์— ์žกํžˆ์ง€ ์•Š๋Š” ๋ฌผ์ฒด๋Š” ๊ทธ๋ฆฌ์ง€ ์•Š์•„ ๋“œ๋กœ์šฐ ์ฝœ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.

  • [์‚ฌ์ง„ 1] Batches = 15

  • [์‚ฌ์ง„ 3] Batches = 134

์œ„ ์˜ˆ์‹œ์™€ ๊ฐ™์ด ์”ฌ ๋ทฐ์—์„œ ๋ชจ๋“  ์˜ค๋ธŒ์ ํŠธ๋“ค์ด ๋‹ค ๋ณด์ด์ง€๋งŒ ๋ทฐ ํ”„๋Ÿฌ์Šคํ…€(View Frustum) ๋‚ด์— ๋“ค์–ด์˜ค์ง€ ์•Š์€ ๋ฌผ์ฒด๋“ค์€ ๊ทธ๋ฆฌ์ง€ ์•Š์•„
์‚ฌ์ง„1์˜ Batches๊ฐ€ ํ›จ์”ฌ ์ž‘์€ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

2. ์˜คํด๋ฃจ์ „ ์ปฌ๋ง (Occlusion Culling)

ํ•˜์ง€๋งŒ ๋‹ค์Œ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด A ๋ฌผ์ฒด ๋’ค์— ๊ฐ€๋ ค์ง€๋Š” B ๋ฌผ์ฒด๋Š” ๊ฒŒ์ž„ ๋ทฐ์—์„œ ๋ณด์ด์ง€๋Š” ์•Š์ง€๋งŒ
๋ทฐ ํ”„๋Ÿฌ์Šคํ…€ ๋‚ด์— ๋“ค์–ด์™€ ์žˆ๋‹ค๋ฉด ๋“œ๋กœ์šฐ ์ฝœ์ด ๋ฐœ์ƒํ•œ๋‹ค.

  • [์‚ฌ์ง„ 5] Batches = 94

  • [์‚ฌ์ง„ 7] Batches = 95

์œ„์™€๊ฐ™์ด ๊ฐ€๋ ค์ ธ ์žˆ๋”๋ผ๋„ ๋ทฐ ํ”„๋Ÿฌ์Šคํ…€ ๋‚ด์— ๋“ค์–ด์˜ค๋Š” ์˜ค๋ธŒ์ ํŠธ๋“ค์€ ๋ชจ๋‘ ๋“œ๋กœ์šฐ ์ฝœ์ด ๋ฐœ์ƒํ•œ๋‹ค.
๋น„๊ต๋ฅผ ์œ„ํ•ด [์‚ฌ์ง„ 7]์˜ ์ƒํ™ฉ์—์„œ ํ๋ธŒ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋น„ํ™œ์„ฑํ™” ํ•ด๋ณด์•˜๋‹ค.

  • [์‚ฌ์ง„ 9] Batches = 49

ํ™•์‹คํ•˜๊ฒŒ ์ค„์–ด๋“  ๋ชจ์Šต์„ ๋ณด์•„ ์นด๋ฉ”๋ผ์— ์žกํžˆ์ง€ ์•Š์•„๋„ ๋“œ๋กœ์šฐ ์ฝœ์ด ๋ฐœ์ƒํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

์ด๋ ‡๊ฒŒ ์นด๋ฉ”๋ผ์— ์žกํžˆ์ง€ ์•Š๋Š” ์˜ค๋ธŒ์ ํŠธ์˜ ๋ Œ๋”๋ง์„ ํ”ผํ•˜๋Š” ์ตœ์ ํ™” ๊ธฐ๋ฒ•์œผ๋กœ ์˜คํด๋ฃจ์ „ ์ปฌ๋ง(Occlusion Culling) ์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ
๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

๐Ÿ“Œ Map๊ณผ ๊ฐ™์€ ์ •์ ์ธ ์˜ค๋ธŒ์ ํŠธ์— Occulder ๋ฐ Occuldee Static ์ฒดํฌ๋ฅผ ํ•œ๋‹ค.

๐Ÿ“Œ Occulsion ์œˆ๋„์šฐ๋ฅผ ์—ด๊ณ  Bake๋ฅผ ํ•œ๋‹ค.

  • Smallest Occluder : ๋‹ค๋ฅธ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๊ฐ€๋ฆฌ๋Š” ๊ฐ€์žฅ ์ž‘์€ ์˜ค๋ธŒ์ ํŠธ์˜ ํฌ๊ธฐ
  • Smallest Hole : ์นด๋ฉ”๋ผ๊ฐ€ ๋“ค์—ฌ๋‹ค ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ์ž‘์€ ๊ฐ„๊ฒฉ

์œ„ ํ”„๋กœํผํ‹ฐ๋“ค์€ ๋งค์ง๋„˜๋ฒ„๋ฅผ ์ฐพ์•„์•ผ ํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.

Unity Document : ์˜คํด๋ฃจ์ „ ์ปฌ๋ง URL

๐Ÿ“Œ ์ปฌ๋ง ๋Œ€์ƒ ์˜ค๋ธŒ์ ํŠธ์˜ Dynamic Occlusion ํ•ญ๋ชฉ์„ ์ฒดํฌํ•œ๋‹ค.

Cube์˜ Mesh Renderer - Dynamic Occlusion ์ฒดํฌ๋ฐ•์Šค๋ฅผ ์ฒดํฌํ•œ๋‹ค.

  • ๊ธฐ๋ณธ๊ฐ’์€ ์ฒดํฌ๋˜์–ด์žˆ๋Š” ์ƒํƒœ๋‹ค.

๐Ÿ” ๋ณ€ํ™”๋ฅผ ํ™•์ธํ•ด๋ณด์ž.

Batches๊ฐ€ 25๋กœ ์ ˆ๋ฐ˜ ๊ฐ€๊นŒ์ด ๋” ์ค„์—ˆ๋‹ค. Cube ์˜ค๋ธŒ์ ํŠธ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ด์ „์— ๋ Œ๋”๋ง ์ค‘์ด๋˜ ๋ฒฝ๋ฉด๋“ฑ๋„ ํ•จ๊ป˜ ์ปฌ๋ง์ด ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๋‹ค๋งŒ ํ‰์•ผ์™€ ๊ฐ™์€ ์‹ค์™ธ ๋งต์—์„œ ์‚ฌ์šฉํ•˜๋ฉด ์˜คํžˆ๋ ค ์—ฐ์‚ฐ๋น„์šฉ์ด ์ฆ๊ฐ€ํ•˜๋‹ˆ ์‹ค๋‚ด ๋งต์—์„œ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•˜๊ณ  ์žˆ๋‹ค.

[์œ ๋‹ˆํ‹ฐ TIPS] ์•Œ์“ธ์œ ์žก | ์นด๋ฉ”๋ผ์™€ ์ปฌ๋ง ์™„๋ฒฝ ์ดํ•ด URL

'Unity' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[RequireComponent]  (0) 2024.06.06
[RuntimeInitializeOnLoadMethod]  (0) 2024.06.05
Addressable (๋กœ์ปฌ)  (0) 2024.05.31