๐Ÿ“˜ Phong Lighting

ํŒŒ์ธยท2022๋…„ 2์›” 28์ผ
0

Directx

๋ชฉ๋ก ๋ณด๊ธฐ
8/8

ํ ๋ชจ๋ธ์€ ๋ฌผ์ฒด ํ‘œ๋ฉด์—์„œ ๊ฐ์ง€๋˜๋Š” ์ƒ‰์ƒ์„ ๋””ํ“จ์ฆˆ(Diffuse), ์ŠคํŽ˜ํ˜๋Ÿฌ(Specular), ์•ฐ๋น„์–ธํŠธ(Ambient), ๋ฐœ์‚ฐ๊ด‘(Emissive Light) ์ด 4๊ฐ€์ง€ ํ•ญ๋ชฉ์œผ๋กœ ๋ถ„๋ฆฌํ•ด์„œ ์ฒ˜๋ฆฌํ•œ๋‹ค.

1) Diffuse

๋””ํ“จ์ฆˆ๋Š” ๋‚œ๋ฐ˜์‚ฌ๋ผ๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.
๋‚œ๋ฐ˜์‚ฌ๋Š” ๋””ํ“จ์ฆˆ ํ‘œ๋ฉด์ด๋ผ ๋ถˆ๋ฆฌ๋Š” ์ด์ƒ์ ์ธ ํ‘œ๋ฉด์œผ๋กœ ๋“ค์–ด์˜จ ๋น›์ด ๋ชจ๋“  ๋ฐฉํ–ฅ์œผ๋กœ, ๊ฐ™์€ ๊ฐ•๋„๋กœ ๋ฐ˜์‚ฌ๋˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.
๋ฌผ์ฒด ํ‘œ๋ฉด ์œ„ ์  p์— ๋“ค์–ด์˜ค๋Š” ๋น›์˜ ์–‘์„ ์ •์˜ํ•˜๋ ค๋ฉด ์  p์˜ ๋…ธ๋ฉ€๊ณผ ๋น› ๋ฒกํ„ฐ l์„ ๋‚ด์ ํ•˜๋ฉด ๋œ๋‹ค.

nยทl = |n||l|cosฮธ

๊ทผ๋ฐ ๋น›์ด ๋“ค์–ด์˜ค๋Š” ์ž…์‚ฌ๊ฐ์ด 90๋„ ๋ณด๋‹ค ํฌ๋ฉด ์ด๊ฒŒ ์Œ์ˆ˜๊ฐ€ ๋œ๋‹ค. ๋น›์˜ ์„ธ๊ธฐ๊ฐ€ ์Œ์ˆ˜๊ฐ€ ๋  ์ˆœ ์—†์œผ๋ฏ€๋กœ ์ด ๊ฒฝ์šฐ nยทl ์„ 0์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์ค€๋‹ค.

max(nยทl,0)

์œ„ ์‹์€ p์— ๋“ค์–ด์˜ค๋Š” ๋น›์˜ '๊ฐ•๋„'๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์‹์ด๋‹ค.

๋ฐ˜์‚ฌ๋˜๋Š” ๋น›์˜ ์ƒ‰์ƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

sd * md

sd : ๊ด‘์›์˜ ์ƒ‰์ƒ(RGB)
md : ๋ฌผ์ฒด์˜ ๋””ํ“จ์ฆˆ ๊ณ„์ˆ˜(diffuse reflectance)
(s : light source, m : material)

๊ด‘๋„์™€ ์ƒ‰์ƒ์„ ๊ณฑํ•˜๋ฉด ํ ๋ชจ๋ธ์˜ ๋””ํ“จ์ฆˆ ํ•ญ์ด ์™„์„ฑ๋œ๋‹ค.

max(nยทl,0) * (sd*md)


2) Specular

์ŠคํŽ˜ํ˜๋Ÿฌ๋Š” ์ •๋ฐ˜์‚ฌ๋‹ค. ์ด๋Š” ๋ฌผ์ฒด ํ‘œ๋ฉด์— ํ•˜์ด๋ผ์ดํŠธ๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.

์•„๊นŒ ๋””ํ“จ์ฆˆ์—์„œ ๋‚œ๋ฐ˜์‚ฌ๋Š” ๋ชจ๋“  ๋ฐฉํ–ฅ์œผ๋กœ ๋™์ผํ•˜๊ฒŒ ๋ฐ˜์‚ฌ๋˜๋ฏ€๋กœ ์นด๋ฉ”๋ผ์˜ ์œ„์น˜๋ฅผ ๊ณ ๋ คํ•  ํ•„์š”๊ฐ€ ์—†์—ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ์ •๋ฐ˜์‚ฌ์˜ ๊ฒฝ์šฐ ์นด๋ฉ”๋ผ์˜ ์œ„์น˜์— ๋”ฐ๋ผ ๋น›์ด ๋“ค์–ด์˜ค๊ณ  ์•ˆ๋“ค์–ด์˜ค๊ณ ๊ฐ€ ๋‹ฌ๋ผ์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ๊ณ ๋ คํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

๋น› ๋ฒกํ„ฐ l์ด ์ž…์‚ฌ๊ฐ = ๋ฐ˜์‚ฌ๊ฐ์œผ๋กœ ๋ฐ˜์‚ฌ๋˜๋Š”๋ฐ, ๊ทธ ๋ฐ˜์‚ฌ๋˜๋Š” ๋น›์ด r์ด๊ณ  p์—์„œ ์นด๋ฉ”๋ผ๋ฅผ ํ–ฅํ•˜๋Š” ๋ฒกํ„ฐ๊ฐ€ v๋‹ค.

์šฐ์„  ๋ฐ˜์‚ฌ ๋ฒกํ„ฐ r์„ ๊ณ„์‚ฐํ•ด๋ณด๋ฉด
r = 2n(nยทl)-l ์ด๋‹ค.

ํ•˜์ด๋ผ์ดํŠธ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์˜์—ญ์€ r์„ ์ค‘์‹ฌ์œผ๋กœ ํ•œ ์›๋ฟ” ๋ชจ์–‘์œผ๋กœ ๋ฌ˜์‚ฌํ•  ์ˆ˜์žˆ๋‹ค. v๊ฐ€ ์›๋ฟ” ์•ˆ์— ๋†“์ด๋ฉด ํ•˜์ด๋ผ์ดํŠธ๋ฅผ ๋ณผ ์ˆ˜ ์ž‡๋Š” ๊ฒƒ์ด๋‹ค.

์›๋ฟ” ์†์—์„œ ํ•˜์ด๋ผ์ดํŠธ๊ฐ€ ๊ฐ์†Œ๋˜๋Š” ์ •๋„๋Š” (rยทv)^sh ์ด๋‹ค.

sh : ๋งค๋ˆํ•จ์˜ ์ •๋„. r๊ณผ v๊ฐ€ ๋‹ค๋ฅธ ๊ฒฝ์šฐ sh๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ํ•˜์ด๋ผ์ดํŠธ๋Š” ๊ธ‰๊ฒฉํ•˜๊ฒŒ ๊ฐ์†Œํ•œ๋‹ค.

ํ ๋ชจ๋ธ์˜ ์ŠคํŽ˜ํ˜๋Ÿฌ ํ•ญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

(max(rยทv, 0))^sh * Ss * Ms

Ss : ๊ด‘์›์˜ ์ƒ‰์ƒ
Ms : ๋ฌผ์ฒด์˜ ์ŠคํŽ˜ํ˜๋Ÿฌ ๊ณ„์ˆ˜

Ss๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ Sd์™€ ๊ฐ™์€ ๊ฐ™์„ ๊ฐ€์ง€๊ณ  Ms๋Š” ๋ฌผ์ฒด ํ‘œ๋ฉด์˜ ํ•˜์ด๋ผ์ดํŠธ๊ฐ€ ๊ด‘์›์˜ ์ƒ‰์„ ๋ฐ˜์˜ํ•˜๊ธฐ ์œ„ํ•ด gray-scale๋กœ ํ‘œํ˜„๋œ๋‹ค.


3) Ambient

๊ณต๊ฐ„ ๋‚ด ๋‹ค์–‘ํ•œ ๋ฌผ์ฒด๋กœ๋ถ€ํ„ฐ ๋ฐ˜์‚ฌ๋œ ๋น›์„ ์•ฐ๋น„์–ธํŠธ ๋น› ์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ์ด๋Š” ๊ฐ„์ ‘ ์กฐ๋ช…์— ํ•ด๋‹นํ•œ๋‹ค.
์•ฐ๋น„์–ธํŠธ ๋ฐ˜์‚ฌ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๊ฐ„๋‹จํ•˜๊ฒŒ ์ •์˜๋œ๋‹ค.
Sa * Ma

Sa : ์•ฐ๋น„์–ธํŠธ ๋น›์˜ ์ƒ‰์ƒ(RGB)
Ma : ์•ฐ๋น„์–ธํŠธ ๊ณ„์ˆ˜

์ตœ์ข…์ ์œผ๋กœ ํ ๋ชจ๋ธ์€
์•ž์„œ ๋‹ค๋ฃฌ 3๊ฐ€์ง€ ํ•ญ์ธ ๋””ํ“จ์ฆˆ, ์ŠคํŒจํ˜๋Ÿฌ, ์•ฐ๋น„์–ธํŠธ๋ฅผ ๋ชจ๋‘ ๋” ํ•ด ์•„๋ž˜์™€ ๊ฐ™์ด ์ •์˜๋œ๋‹ค.

max(nยทl,0) (sdmd) + (max(rยทv, 0))^sh * Ss * Ms + Sa * Ma

profile
๊ณต๋ถ€์ •๋ฆฌ์šฉ

0๊ฐœ์˜ ๋Œ“๊ธ€