Lighting Effect
Light Source Type
Point light
- ๊ด์ ์ง์ ์์ ์ ๋ฐฉํฅ์ผ๋ก ๋น์ ๋ฐ์ฌ
- ๊ด์์ผ๋ก๋ถํฐ ๋ฉ์ด์ง์๋ก attenuation ๊ณต์์ ๋ฐ๋ผ ๋ฐ๊ธฐ ์กฐ์
- lighting position์ ์์กด์
- constant, linear, quadratic, distance์ ๋ฐ๋ผ ์ฐ์ฐ
- ex) ์ ๊ตฌ
Directional light
- ๋น์ ๋ฐฉํฅ์ฑ๊ณผ ์๋ง์ ๊ฐ์ง๊ณ ์ฐ์ฐ
- ๊ด์๊ณผ์ ๊ฑฐ๋ฆฌ๊ฐ ๋ฌดํ์ ์ผ๋ก ๋ฉ๋ค๋ ๊ฐ์
- ๋ฌผ์ฒด ํ๋ฉด์ ๋๋ฌํ๋ ๋น์ ๋ฐฉํฅ์ ๋ชจ๋ ํํ
- attenuation์ ๊ณ ๋ คํ์ง ์์
- ex) ํ์๊ด
Spotlight
- ๊ด์์ง์ ์์ ํน์ ๋ฐฉํฅ์ผ๋ก๋ง ๋น์ ๋ฐ์ฌ
- cut off angle
- ๋น์ ์งํ ๋ชจํ์ cone๊ณผ ์ ์ฌ
- point light์ ๋ง์ฐฌ๊ฐ์ง๋ก attenuation ๊ณต์์ ๋ฐ๋ผ ๋ฐ๊ธฐ ์กฐ์
- ํน์ ๋ฐฉํฅ/๊ฐ๋์์์ ๋ผ์ดํ ์ดํํธ๊ฐ ๊ฐ์กฐ๋๋๋ก spotlightEffect ์ฐ์ฐ
- innerAngle
- ๊ฐ์กฐ๋๋ ๋ด๋ถ ์๋ฟ ์์ญ
- ๋น์ intensity๊ฐ ์ผ์
- outerAngle
- ์ ์ ํ๋ ค์ง๋ ์ธ๋ถ ์๋ฟ ์์ญ
- outerAngle์ ์ธ๋ถ ๋น์ intensity = 0
- ๋น ๊ฐ๋๋ฅผ 0 - 1์ฌ์ด๋ก clamp
Lighting and Material
- ๊ฐ lighting map์ ๋ชจ๋ ํฉ์ฐํ ๊ฒฐ๊ณผ ๊ฐ์ผ๋ก ๋น ํจ๊ณผ ์ฐ์ฐ
Ambient
- ์ฃผ๋ณ๊ด, ๊ด์์ด ๋ถ๋ถ๋ช
ํ ๋น
- Lighting Direction์ ์ ์ํ ์ ์์
- ์ผ์ ํ ๋ฐ๊ธฐ์ ์์ผ๋ก ํํ ๊ฐ๋ฅ
- I_ambient = I_a * K_a
- I_a: ambient lighting์ ์ธ๊ธฐ
- K_a: ambient lighting์ด ์ต์ข ํ๋ฉด์ ๋์ฐฉํ๊ธฐ ๊น์ง ๋ช ๋ฒ์ ๋ฐ์ฌ๋ฅผ ๊ฑฐ์ณค๋์ง์ coefficient
Diffuse
- ๋น์ผ๋ก๋ถํฐ ๊ณง์ฅ ๋ค์ด์ ๋ฌผ์ฒด ํ๋ฉด์ ๋ฟ๋ ค์ง
- ๊ฐ๋์ ๋ฐ๋ผ ๋ฐ๊ธฐ๊ฐ ๋ค๋ฆ
- I_diffuse = I_d * K_d * cosฮธ = I_d * K_d * (N*L)
- I_d: diffuse lighting์ ์ธ๊ธฐ
- K_d: ๋ฌผ์ฒด ํ๋ฉด ๋ฐ์ฌ์ ๋ํ coefficient
- N: face normal unit vector
- L: ๋ฌผ์ฒด ํ๋ฉด์์ ๊ด์ ๋ฐฉํฅ์ผ๋ก์ unit vector
- ฮธ: face normal๊ณผ L์ ์ฌ์ด๊ฐ
- N๊ณผ L์ ์ฌ์ด๊ฐ์ด 90๋ณด๋ค ์ปค์ง๋ฉด diffuse ์ ๊ฐ์ 0
- I_diffuse = I_d * K_d * max(N*L, 0) ๊ณผ ๊ฐ์ด ์กฐ์
- diffuse ๊ฐ์ ์ฐ์ฐ์ viewer๋ฅผ ๊ณ ๋ คํ์ง ์๊ณ ์ฐ์ฐํ๊ธฐ ๋๋ฌธ์ viewer์ ์์น ๋ฐ ๊ฐ๋๋ก๋ถํฐ ๋ ๋ฆฝ
Specular
- diffuse์ ๋์ผํ๊ฒ ๊ด์์์ ์ง์ ๋ค์ด์ค๋ ๋น
- ๊ทธ๋ฌ๋ ํน์ ํ ๋ฐฉํฅ์ผ๋ก ์์ ํ ๋ฐ์ฌ๋๋ ๋น
- viewer์ ์์น์ ๋ฐ๋ผ ๋ฌ๋ผ์ง
- ํฐ์์ ๊ด์ผ๋ก ํํ
- R๊ณผ V์ ์ฌ์ด๊ฐ์ด 90๋ณด๋ค ์ปค์ง๋ฉด specular ์ ๊ฐ์ 0
- diffuse๊ฐ 0์ด๋๋ฉด specular ์ญ์ 0
- I_specular = I_s * K_s * (R*V)^ns
- I_s: specular lighting์ ์ธ๊ธฐ
- K_s: ๋ฌผ์ฒด ํ๋ฉด ๋ฐ์ฌ์ ๋ํ coefficient
- R: reflection unit vector
- V: ๋ฌผ์ฒด ํ๋ฉด์์ viweer ๋ฐฉํฅ์ผ๋ก์ unit vector
- ns: ํ๋ฉด ์ง๊ฐ์ ๋ฐ๋ผ ๋ฐ์ฌ๋๋ ๊ด๋์ด๋ ๋ฒ์๋ฅผ ์กฐ์ ํ๋ index
- R = 2N - L = 2(N*L) * abs(N) - L
Emissive
- ์ค๋ธ์ ํธ๊ฐ ์ค์ค๋ก ๋ฐ์ฐํ๋ ๋น
- ๋ค๋ฅธ ๋น์ ์ํด ์ํฅ์ ๋ฐ์ง ์์
- Material์ ์์ฑ์ผ ๋ฟ, ๊ด์์ด ๋ฐ์ฐํ๋ ๋น์ด ์๋
Shading
Phong lighting
- ๋ผ์ดํ ์ดํํธ๋ฅผ ํฝ์ ์ด ์๋ ๋ฒํ ์ค ๋จ์๋ก ์ฐ์ฐ
Phong shading
- ๋ผ์ดํ ์ดํํธ๋ฅผ ํฝ์ ๋จ์๋ก ์ฐ์ฐ
- ๋ฆฌํ๋ ์
๋ฒกํฐ๋ฅผ ์ด์ฉ
- R = 2{(NL)*Norm(N)} - N
Blinn shading
- ํ ์์ด๋ฉ์์ ๋ฆฌํ๋ ์
๋ฒกํฐ๋ฅผ ์ด์ฉํ๋ ๋์ ํํ ๋ฒกํฐ๋ฅผ ์ด์ฉ
- Half Vector = Lighting Vector + Viewer Vector
- ๋ ๊ด๋ฒ์ํ๊ณ ํํํ ํ๋ฉด์ ๋ํด ์ฐ์ฐ์ด ํจ์จ์
- Reflection Vector(R)๋ฅผ ์ผ์ผ์ด ์ฐ์ฐํ ํ์ ์์
- ๊ด์๊ณผ viewer๊ฐ ๋ฌผ์ฒด๋ก๋ถํฐ ์ด๋ ์ ๋ ๋ฉ๋๋ผ๋, V์ L์ ์์
- specular ๊ฐ์ ์๊ณก์ ๋ฐฉ์ง
- Lighting Direction = -(Lighting Vector)
- ๊ด์์์ fragments๋ก ํฅํ๋ ๋ฒกํฐ