๊ตฌํ๊ฒฐ๊ณผ
SNES์์ ๋ง๋ฆฌ์ค ์นดํธ ๊ฐ์ด ๋น์์์๋ ํ๊ธฐ์ ์ด๋ผ ํ ์ ์๋ ์คํ๋ผ์ดํธ์ ํ์ , ํ๋/์ถ์, 3Dํจ๊ณผ๋ค์ ๋ณผ ์ ์์๋๋ฐ
์ด๋ฐ ํจ๊ณผ๋ค์ ์ด๋ป๊ฒ ๊ตฌํํ์๊น ๊ถ๊ธํด์ ์ฐพ์๋ณธ๊ฑธ ๊ตฌํํ๊ณ ์ ๋ฆฌํด๋ณด์์
๊ฐ์ฉ๋ ๋ง๋ฆฌ์ค์นดํธ.
์ด๋ฐ ๊ฒ๋ค์ ์ด๋ป๊ฒ ๊ตฌํํ์์ง ๋ ๊ถ๊ธํ๋๋ฐ SNES์์ ๋ชจ๋7์ด๋ผ๋ ๊ธฐ๋ฅ์ ํ์ฉํ๋ค๋ ๊ฒ์ ์๊ฒ๋จ.
์๋๋ ๋ชจ๋7์ ํ์ฉํ ๊ฒ์๋ค์ ๋ชจ์๋์ ์์
์๋๋ ๋ชจ๋7์ ๋ํด์ ์์ธํ ์ค๋ช ํด๋์ ์์์ด์ผ.
์ ์์์ ์ฐธ๊ณ ํด๋ณด์๋ฉด ์ค์ ํ๋์จ์ด ๊ตฌํ์ ํ๋ ฌ์ ์ฌ์ฉํด์ ์คํ๋ผ์ดํธ์ ํ๋/์ถ์, ํ์ , ๊ธฐ์ธ๊ธฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒ์ ์ ์ ์์.
ํ์ง๋ง ์ด๊ฒ๋ง์ผ๋ก 3D ํจ๊ณผ๋ฅผ ๊ตฌํํ ์ ์๋๋ฐ, ์๋ํ๋ฉด ABCD๋ฅผ ๋ชจ๋ ์ ํ์ ์ผ๋ก ๋ณด๊ฐํ๋ฉด 3Dํจ๊ณผ๋ฅผ ์ ๋๋ก ๋ผ ์ ์๊ธฐ ๋๋ฌธ์.
์๋์ ๊ฐ์ด ์๊ณก๋์ ๋ณด์ด๊ฒ ๋จ.
์ ํํ๋ ์ํ๋งย ๊ฐ๊ฒฉ์ด ์นด๋ฉ๋ผ์ ๊ฐ๊น์์ง์๋กย ์ ์ ์์์ ธ์ผ ํด.
๊ทธ๋ผ ์ ๋ฌธ์ ๋ฅผ snes์์๋ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ์๊น?
https://en.wikipedia.org/wiki/Mode_7
์ ์ํคํ๋์ ๋ฌธ์๋ฅผ ๋ณด๋ฉด..
However, many games create additional effects by setting a different transformation matrix for each scanline. In this way, pseudo-perspective, curved surface, and distortion effects can be achieved.
์ ๋ฌธ๊ตฌ๋ฅผ ๋ณผ ์ ์๋๋ฐ, ํ๋ง๋๋ก ์ค์บ๋ผ์ธ๋ณ๋ก ๋ชจ๋7ํ๋ ฌ๊ฐ์ ๋ค๋ฅด๊ฒ ์ฃผ์ด์ ์ฒ๋ฆฌํ๋ค๋ ๊ฒ์ ์ ์ ์์.
์ ๋ฆฌํ๋ฉด,
๋ชจ๋7์์ 3Dํจ๊ณผ๋ ์๋์์ผ๋ก ์ค์บ๋ผ์ธ๋ง๋ค ๊ทธ ์ค์บ๋ผ์ธ์ ํด๋นํ๋ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๊ณ
dist = world_y / y_screen
๊ทธ๋ฆฌ๊ณ ํด๋นํ๋ ๊ฑฐ๋ฆฌ์์ ์ํ์ ์ ๊ธธ์ด๋ฅผ ๊ณ์ฐ.
horz_dist = horz_screen * dist
์ ๋ ์ ๋ณด๋ฅผ ์กฐํฉํ๋ฉด ๋งต์์ ์ํ๋งํด์ผํ๋ ์ค์บ๋ผ์ธ์ ์์ญ์ ๊ตฌํ ์ ์๊ณ ์ด๊ฒ์ผ๋ก 3D ํจ๊ณผ๋ฅผ ๋ผ ์ ์์.
๊ทธ๋ฆผ์ผ๋ก ํํํด๋ดค์.
๋ง์ง๋ง์ผ๋ก sdl๋ก ๊ตฌํํ ๊ฒฐ๊ณผ
๋ง์ ๋ํ ์ผ๋ค์ ๋ํ ์ค๋ช ์ ์๋ตํ๋๋ฐ, ๊ท์ฐฎ์์ ์ฌ๊ธฐ๊น์ง๋ง ํ ๊ป. ๋ค์์ ๊ธฐํ๊ฐ ๋๋ฉด ํ๋ฒ ๋ ๋ณด์ถฉํ๋๊ฑธ๋ก.
ํต์ฌ ์๊ณ ๋ฆฌ์ฆ์ด๋ผ๋ ์ ์ ๋ฌ๋ ์ง ๋ชจ๋ฅด๊ฒ ๋ค.
์์ผ๋ก ์ธํ์ํ์ธ, ๋ , ํ์ดํฌ๊น์ง ์ ๋ฆฌํด๋ณผ ์๊ฐ์ด์ผ. ์ค๋์ ์ฌ๊ธฐ๊น์ง.
ํ๋ก๊ฒ์ด์ถ
์ธ๊ณ์ธ์ถ
์ ๋ณด์ถ
์๋ ํฌ์ผ๋ชฌ๋ ์ด ๋๋์ด์๋ ๊ฑฐ ๊ฐ์ผ
ํ๋ฅญํ ๊ธ ๊ฐ์ฌํฉ๋๋ค!
์ ๊ธฐํ๋ค ใ ใ