์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- Unity
- Modeling
- ๋ฆฌ๊น
- rendering
- smilegate
- ์ญํ
- ์ง๋ธ๋ฌ์ฌ
- Blender
- ๊ฒ์์์ง
- 3d
- ๊ทธ๋ํฝ์ค
- opengles
- ๊ฒ์
- ๊ฒ์์ํ
- ๋ธ๋๋
- ์ค๋ง์ผ๊ฒ์ดํธ
- CG
- ์ปดํจํฐ๊ทธ๋ํฝ์ค
- Shader
- ์ค๋ง์ผ๊ฒ์ดํธ์ฅํํ
- opengl
- ๋ฒกํฐ
- ๋ํ์
- game
- ๊ทธ๋ํฝ์คAPI
- ์ ๋ํฐ
- ์์
- ๋ชจ๋ธ๋ง
- zbrush
- ๊ฒ์๊ฐ๋ฐ
- Today
- Total
๐ฅํธ์์์ GamLog
[Unity][Shader] ์ ๋ํฐ์์ด๋ ์คํํธ์ : ch10.๋์งํธ๋ผ์ดํธ ์ด๋ก ๋ณธ๋ฌธ
[Unity][Shader] ์ ๋ํฐ์์ด๋ ์คํํธ์ : ch10.๋์งํธ๋ผ์ดํธ ์ด๋ก
์ฅ์ฒ์งํฅ์ฌ 2023. 9. 5. 23:16
์ค๋์ [์ ๋ํฐ ์์ด๋ ์คํํธ์ ]์ ์ฝ๊ณ ๊ณต๋ถํ ๋ด์ฉ์ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํฉ๋๋ค.
ํน์ ๋ชฐ๋ผ ์ฐธ๊ณ ๊ต์ฌ ์๋์ ์ฒจ๋ถํด ๋๋๋ก ํจ ๐
[์ ๋ํฐ ์์ด๋ ์คํํธ์ ]
๐ช ๋ชฉ์ฐจ
- ๋์งํธ ๋ผ์ดํธ์ ๋ถ๋ฅ์ ์๋ฆฌ
- ๋ฒกํฐ์ ๊ฐ๋ ๊ณผ ํน์ฑ
- ๋ ธ๋ฉ๋ฒกํฐ
- ๋ฒกํฐ์ ์ฐ์ฐ
- ๋ฒกํฐ ์ฐ์ฐ์ ์ด์ฉํ ๋์งํธ ์กฐ๋ช ์ฐ์ฐ
๋์งํธ ๋ผ์ดํธ์ ๋ถ๋ฅ์ ์๋ฆฌ
๋จผ์ ์์ง์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ๋ 3๊ฐ์ง์ ๋ผ์ดํธ๋ฅผ ์์๋ณด๊ฒ ์ต๋๋ค.
1. ์คํ ๋ผ์ดํธ
: ํน์ ๋ถ๋ถ์ ๊ฐ์กฐํ ๋ ์ฌ์ฉํ๋ ์กฐ๋ช
2. ํฌ์ธํธ ๋ผ์ดํธ
: ๋ฅ๊ทผ๋ชจ์์ ์กฐ๋ช ๋๋ ์ ๋ ๋ผ์ดํธ๋ณด๋ค ๋ฌด๊ฒ๋ค.
3. ๋๋ ์ ๋ ๋ผ์ดํธ
: ์ง์ง์ฑ์ ๊ฐ์ง ์กฐ๋ช range๊ฐ ์๊ณ '๋ฐฉํฅ'๋ง์ด ์กด์ฌ, ๊ฐ์ฅ ๊ฐ๋ฒผ์ด ๋ผ์ดํธ, ํ์๋์ ์ฌ์ฉ
๋ผ์ดํธ๊ฐ ์๋ ๋ทฐํฌํธ์ Plane์ ํ๋ ์ถ๊ฐํด ์ค๋๋ค.
์ฐ๋ฆฌ๋ Directional Light๋ฅผ ํ์ ํด๋ณด๋ฉฐ ์์ ๊ฐ์ ์ํฉ์ ๋ฐ๊ฒฌํ ์ ์์ต๋๋ค.
์ฐ๋ฆฌ๋ ์ด๋ฅผ ํตํด "๋ฉด๊ณผ ๋น์ ๋ฐฉํฅ์ด ๋ง์ฃผ๋ณผ๋ ๊ฐ์ฅ ๋ฐ๊ณ , ๋ช ๊ณผ ๋น์ ๋ฐฉํฅ์ด 90๋์ ๊ฐ๊น์์ง ์๋ก ์ ์ ์ด๋์์ง๋ค"๋ ์ฌ์ค์ ๋์ถํ ์ ์์ต๋๋ค.
๋ฒกํฐ์ ๊ฐ๋ ๊ณผ ํน์ฑ
์์ ๋งํ ๋ฐฉํฅ์ ์ฐ๋ฆฌ๋ ์์ผ๋ก ๋ฒกํฐ๋ผ๋ ๊ฐ๋ ์ผ๋ก ๋งํ๊ฒ ๋ ๊ฒ ์ ๋๋ค.
( ๋ฒกํฐ ) = ( ๋ฐฉํฅ ) + ( ํฌ๊ธฐ )
* ๋จ์ ๋ฒกํฐ = ํฌ๊ธฐ๊ฐ 1์ธ ๋ฒกํฐ
์์ ๋ผ์ดํธ ํํธ์์ ํ๋ ๋ง์ ์ฐ๋ฆฌ๋ ๋์ผํ ์๋ฏธ๋ก ๋ค๋ฅด๊ฒ ๋งํ ์ ์์ต๋๋ค.
"ํ๋ฉด๋ฒกํฐ์ ์กฐ๋ช ๋ฒกํฐ๊ฐ ์๋ก ๋ง์ฃผ๋ณผ๋ ๊ฐ์ฅ ๋ฐ๊ณ , ๋ ๋ฒกํฐ์ ๊ฐ๋๊ฐ ๋ฒ์ด์ง ์๋ก ์ ์ ์ด๋์์ง๋ค"
๋ฒกํฐ๋ ๋ฐฉํฅ๊ณผ ํฌ๊ธฐ๊ฐ ๊ฐ์ผ๋ฉด ๋์ผ ๋ฒกํฐ๋ก ๋ณผ ์ ์์ต๋๋ค. ์ด๋ ์์น๊ฐ์ด ์๋ฏธ๊ฐ ์๋ค๋ ๋ง์ ๋๋ค.
๊ทธ๋ ๋ค๋ฉด ๋ฒกํฐ๋ ์ด๋ป๊ฒ ํ์ํ ์ ์์๊น?
์์์ ์ค๋ช ํ๋ฏ, ๋ฒกํฐ๋ ์์น๊ฐ์ด ๋ฌ๋ผ๋ ๋์ผ ๋ฒกํฐ๋ก ๋ณด๊ธฐ ๋๋ฌธ์ ์์ ์ผ๋ก ํํ์ด๋ ์ํจ ๋ค ๋ฐฉํฅ๊ณผ ํฌ๊ธฐ๋ฅผ ํ์ธํ๋ค.
์ฐ๋ฆฌ๋ ์ข์ธก์ ๋ฒกํฐ๋ฅผ ํํ์ด๋์์ผ ์ฐ์ธก์ ๋ฒกํฐ์ ๊ฐ์ด ๋ง๋ค์ด ์ค ๋ค ๋ฒกํฐ๊ฐ์ด float2( 0.5, 0.5 ) ๋ผ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
๋ฌผ๋ก ์ด๋ 2์ฐจ์ ๋ฒกํฐ๊ฐ์ด๊ณ 3์ฐจ์์ด๋ ์์๊ฐ์ ์๋์ ๊ฐ์ด ํ์ํ ์ ์๋ค.
์ข(3์ฐจ์) : float3 ( x, y, z) / ์ฐ(์์) : float2 ( -0.5, -0.5 )
๋ ธ๋ง ๋ฒกํฐ
์์ ์ด์ผ๊ธฐ ํ ๋ด์ฉ ์ค [์กฐ๋ช ๋ฒกํฐ]์ [ํ๋ฉด๋ฒกํฐ]์ ๋ํ ์ด์ผ๊ธฐ๊ฐ ๋์๋๋ฐ ํ๋ฉด๋ฒกํฐ๋ ๋ฉด์ ๋ฐฉํฅ์ ํํํ๋ ๋ ธ๋ง๋ฒกํฐ๋ก๋ ๋ถ๋ฅผ ์ ์๋ค.
์์ฆ์ ๋ ธ๋ฉ๋ฒกํฐ๋ ๋ฉด์ด ์๋๋ผ ๋ฒํ ์ค๊ฐ ๊ฐ๊ณ ์์ด ํ ๋ฒํ ์ค๋ ๊ฐ์ง ๋ฉด๋ค์ ํํํ๊ธฐ ์ํด ๋ค์์ ๋ฒกํฐ๊ฐ์ ๊ฐ์ง๋ค.
๋ฒกํฐ์ ์ฐ์ฐ
(์์ฑ์ค)
๋ฒกํฐ ์ฐ์ฐ์ ์ด์ฉํ ๋์งํธ ์กฐ๋ช ์ฐ์ฐ
์์ ๋ฐฐ์ด ๋ด์ฉ์ ๋ฐ๋ผ ์ฐ๋ฆฌ๋ ๋ ธ๋ง ๋ฒกํฐ์ ์กฐ๋ช ๋ฒกํฐ๊ฐ ๋ง์ฃผ๋ณด๋ ์ํฉ, ์ฆ ๋น์ด ๊ฐ์ฅ ๋ฐ์ ๊ฒฝ์ฐ๋ฅผ ๊ณ์ฐํด๋ณด๋ ค๊ณ ํฉ๋๋ค.
๋ ๋ฒกํฐ๋ 180๋๋ก ๋ง๋๋ ๊ด๊ณ์ด๋ฏ๋ก -1์ ๊ฐ์ ๊ฐ์ต๋๋ค.
๊ฐ์ฅ ๋ฐ์ ์ํฉ์ ๊ฐ์ด -1์ด๋ผ๋ ์ด์ํฉ๋๋ค.
๊ทธ๋์ ์ฐ์ฐํ๊ธฐ ์ ์กฐ๋ช ๋ฒกํฐ์ ๊ฐ์ ๋ฐ๋๋ก ํด์ค๋๋ค.
์ด์ ์กฐ๋ช ์ ์ ํฐ๊ฐ ๊ฐ์์ก๊ณ ๋ ๋ฒกํฐ๋ฅผ ๋ด์ ํ๋ฉด 1์ด ๋์ค๊ฒ ๋ฉ๋๋ค.
์๋ ์ด๋ฏธ์ง๋ ์ด๋ฅผ 3D ์ค๋ธ์ ํธ ์ค Sphere์ ์ ์ฉํด ๋ณธ ๊ฒฝ์ฐ๋ฅผ ๊ทธ๋ฆฐ ๊ฒ์ ๋๋ค.
๊ฐ ๋ฒํ ์ค๋ ๋ด์ ๊ฐ์ ๋ฐ๋ผ ๋ค๋ฅธ ๊ฐ์ ๊ฐ๊ฒ๋ฉ๋๋ค.
์์ด๋ ์ค์ต์ ์์ ํด๋ณธ ๋ค ์ด๋ก ๊ณต๋ถ๋ฅผ ํ๊ฒ ๋๋๋ฐ
์กฐ๋ช /๋ ธ๋ฉ ๋ฒกํฐ์ ๋ํด ๋ช ํํ ์๊ณ ๋๋ ํ์ดํ ๋ผ์ธ์ ์ฐ๊ฒฐํ๋ฉฐ ๊ฐ์ก๋ ๊ถ๊ธ์ฆ์ด ํ๋ฆฌ๋ ๊ฒ ๊ฐ๋ค.
ํ์คํ ์ค์ต์ ๋ณํํ๋ฉฐ ์ด๋ก ์ ๋ชฉ์ ์ฑ์ ์์์ผ ํธ๊ธฐ์ฌ์ ๊ฐ๊ณ ๊น๊ฒ ๊ณต๋ถํ๊ฒ ๋๋ ๋ฏ ํ๋ค.