๋ด ์ง๋ฌธ์ https://gall.dcinside.com/m/game_dev/155287 ์ด๊ฑฐ์ฟ์
์คํ์ต์ค์ฒด์ธ์ง์ ๋ฌผ์ด๋ฐง๋๋ ๋ต๋ณ ์์ ์ฌ๋ฐ๊ฐ๋ ๊ณต์ ํ๋ค.
์ ๋ฒ์ ๋ ๋์ ์ฑ์งํผํฐ์ ๋ฌผ์ด๋ด์ค ๊ฒ์ดํํ ๋ ๊ณ ๋ง๋ค.

๊ทธ๋ฆผ์์ ๋ ธ๋ ์์ ๋ฐ๊ฒฝ์ด 1์ธ ์์ด๋ผ๊ณ ๊ฐ์ ํ๋ค.
h๊ฐ ๋ฐ๊ฒฝ์ 1/X๋ฐฐ๋ผ๊ณ ํ๋ฉด h = 1/X ร 1 ์ด๋ฐ์์ผ๋ก ํํ ๊ฐ๋ฅํ๋ค.
๋๋ ๊ธฐ๋ฆฐ ๊ทธ๋ฆผ์ด ์๊ณก๋์ง ์๊ณ ์ผ์ ํ๊ฒ ์ปค์ง๊ฑฐ๋ ์์์ง๊ฒ ๋ง๋ค๊ณ ์ถ๋ค.
์์์ง๊ฒ ๋ง๋ ๋ค๊ณ ๊ฐ์ ํ๋ฉด 2๋ฒ์งธ ๊ธฐ๋ฆฐ(์นผ๋ผ ๋ถ๋ถ ๋ฐ๋ก ์๋)์ ํฌ๊ธฐ๋ 1๋ฒ์งธ(์นผ๋ผ ๋ถ๋ถ)์๋ค๊ฐ 1/X๋ฐฐ๋ฅผ ๋ ํ๋ฉด ๋๋ค.
๋น์จ์๋ง ์ง์คํ๋ฉด ๋๋๊น 2๋ฒ์งธ ๊ธฐ๋ฆฐ๊ณผ 1๋ฒ์งธ ๊ธฐ๋ฆฐ์ ๊ด๊ณ๋ 1/X ร 1/X : 1/X ์ด๋ ๊ฒ ํํ ๊ฐ๋ฅํ๋ค.
2๋ฒ์งธ ๊ธฐ๋ฆฐ์ 1๋ฒ์งธ ๊ธฐ๋ฆฐ์ 1/X^2๋ฐฐ, 3๋ฒ์งธ ๊ธฐ๋ฆฐ์ 1๋ฒ์งธ ๊ธฐ๋ฆฐ์ 1/X^3๋ฐฐ .......
๊ทธ๋ฌ๋ฉด n๋ฒ์งธ ๊ธฐ๋ฆฐ์ ์ฌ์ด์ฆ๋ 1๋ฒ์งธ ๊ธฐ๋ฆฐ์ 1/X^n ๋ฐฐ๊ฐ ๋๊ฒ๋ค.
๋ณด๊ธฐ ํธํ๊ฒ 1/X = a ๋ผ๊ณ ํ๋ฉด h(n) = a^n ์ด๋ค.
๊ทผ๋ ๋๋ ๋ฐ๋๋ก ํ๋ค.
์๋ํ๋ฉด ์ด๋ฏธ์ง๋ฅผ ์กฐ์ํ๋๊ฒ ์๋๊ณ uv๊ฐ์ ์กฐ์ํ๊ธฐ ๋๋ฌธ์ด๋ค.
๋ก๊ทธ ํจ์์ h์ ๊ธธ์ด๋ฅผ ๋ฃ์ผ๋ฉด ์ด๊ฒ ๋ช ๋ฒ์งธ ๊ธฐ๋ฆฐ์ธ์ง ์๋ ค์ค๋ค.
์๋ฅผ ๋ค์ด์ log(a^8) ํ๋ฉด 8์ด ๊ฒฐ๊ณผ๋ก ๋์ค๊ณ ์ด๊ฒ์ ํตํด ๋๋ ๊ธฐ๋ฆฐ์ด 8๋ฒ์งธ ๊ธฐ๋ฆฐ์ด๋ผ๋ ์ฌ์ค์ ์ ์ ์๋ค.
float2 polar = float2(
atan2(i.uv.y, i.uv.x) / (2.0f * 3.141592653589f), // angle
log(dot(i.uv, i.uv)) * 0.5f // log-radius
);
์ด ์์ด๋ ์ฝ๋์์ ์ฌ์ฉํ๋ ๊ทน ์ขํ๋ (๊ฐ๋, ๊ธธ์ด)์ธ๋ฐ
์์ (0, 0)์์ ์ด๋ ์์์ ์ (u, v) ๊น์ง์ ๊ฑฐ๋ฆฌ๋ โ((u-0)^2 + (v-0)^2) = โ(u^2 + v^2)์ด๋ค.
๊ทผ๋ (u, v)ํ๊ณ (u, v)๋ฅผ ๋ด์ ํ๋ฉด ๊ทธ ๊ฒฐ๊ณผ๊ฐ (u^2 + v^2)์์ผ๋ก dot() ํจ์๋ฅผ ์ฌ์ฉํ๋ค.
์ฌ๊ธฐ์ ๋ฐฉ๊ธ ๊ตฌํ (u^2 + v^2)๋ฅผ d๋ผ๊ณ ํ๋ฉด โ(u^2 + v^2) = โd = d^1/2 ์ด๋ค.
log(d^1/2) = log(sqrt(d))์ ๊ฒฐ๊ณผ๋ 1/2 ์ด๋ค
๊ทผ๋ ์ด ๊ฒฐ๊ณผ๋ log(d) ร 1/2 ์ด๋ ๊ฒ ํด๋ ๋์ผํ๊ฒ ๊ตฌํ ์ ์๋ค.
log(d) = 1 ์ด๊ณ 1ร 1/2 = 1/2 ์ด๋ค.
ํ์๋ sqrt() ํจ์๋ฅผ ์ฌ์ฉํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ ํจ์จ์ ์ด๋ค.
๋
์ค ์ํ์ ์ธ ์๋ฆฌ๊ฐ ์์๋ค ์๋ก์ด ์ง์์ด ๋์๋ค