์ค๋ฅธ์ / ์ผ์ ์ขํ๊ณ
์๊ฐ๋ฝ ๋งจ๋ ํ๊ฐ๋ฆผ ์ด์ผ ์ธ์ฐ์.
X : ์์ง(์์ง๋ ํญ์ ์ค๋ฅธ์ชฝ๋ฐฉํฅ์ผ๋ก)
Y : ๊ฒ์ง(๊ฒ์ง๋ ํญ์ ์์ชฝ)
Z : ์ค์ง
X x Z = Y : ์ค๋ฅธ์ ์ขํ๊ณ - OpenGL(since 1992) '์ค'ํ ์ง์์ด๋(or ๋จผ์ ๋์์ผ๋) ์ค๋ฅธ์ชฝ.
/Z
/
+---- X
|
|
Y
Y
|
|
+---- X
/
/
Z
X x Z = Y : ์ผ์ ์ขํ๊ณ - DirectX(since 1995) ๋์ค์ ๋์์ผ๋ ์ผ์ชฝ.
Y
| /Z
|/
+---- X
Column Major vs Row Major
N x 1 matrix : column vector
1 x N matrix : row vector
๊ทธ๋ฌ๋ D3DX ๋ row-major ํ๋ ฌ์ ์ฌ์ฉํ๊ณ OpenGL์ column-major
https://docs.microsoft.com/en-us/windows/win32/dxmath/pg-xnamath-getting-started?redirectedfrom=MSDN#matrix_convention
Direct3D has historically used left-handed coordinate system, row-major matrices, row vectors
HLSL shaders default to consuming column-major matrices
https://docs.microsoft.com/en-us/windows/win32/direct3dhlsl/dx-graphics-hlsl-per-component-math
Matrix packing order for uniform parameters is set to column-major by default
#pragmapack_matrix directive, or with the row_major or the column_major keyword.
Row-Major
mul(v, TranslateMatrix) = float4
| 1 0 0 0 |
| 1 2 3 1 | | 0 1 0 0 | = | (1 + 5) 2 3 1 |
| 0 0 1 0 |
| 5 0 0 1 |
Colum-Major
mul(TranslateMatrix, v) = float4
| 1 0 0 5 | | 1 | | 1 + 5 |
| 0 1 0 0 | | 2 | = | 2 |
| 0 0 1 0 | | 3 | | 3 |
| 0 0 0 1 | | 1 | | 1 |
mul(v, TranslateMatrix) = float4
| 1 0 0 5 |
| 1 2 3 1 | | 0 1 0 0 | = | 1 2 3 (5 + 1) |
| 0 0 1 0 |
| 0 0 0 1 |
mul(TranslateMatrix, v) = float4
| 1 0 0 5 | | 1 | | 1 + 5 |
| 0 1 0 0 | | 2 | = | 2 |
| 0 0 1 0 | | 3 | | 3 |
| 0 0 0 1 | | 1 | | 1 |
๋์ผํ float4์ด๋ผ๋ ๊ณฑํ๋ ์์์ ๋ฐ๋ผ ๊ฐ์ด ๋ค๋ฅด๋ค.
๋
ธ๋ฉ๋งต ๊ฐ์ ๊ฒฝ์ฐ์๋ red์ฑ๋์ ๋ณํ๊ฐ ์ฌํ๊ธฐ ๋๋ฌธ์,
R์ฑ๋์ A์ฑ๋๋ก ๋ฐ๊พธ๊ณ DXT5๋ก ์ ์ฅํ ํ,
shader์์ AGB๋ก ์ ๊ทผํ์ฌ ์ํ๋งํ๋ฉด ์๋นํ ๊ด์ฐฎ์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ด๋ผ ์ ์์ต๋๋ค.
- https://gpgstudy.com/forum/viewtopic.php?t=24598
DXT5nm ํฌ๋งท์ ์ด์ฉ(ํ๋ฆฌํฐ ์
)
V
color
channel
bit
X
R
a0, a1
16
alpha indices
48
Y
G
color0,1
32
color indices
32
Z
B
x
0
xyzw, wy => _g_r => rg => xyn // r์ด ๋ค๋ก ์์ผ๋ฏ๋ก, ํ๋ฐํด ๋๋ ค์ค์ผํจ.
normal.xy = packednormal.wy * 2 - 1;
(0 ~ 1 => -1 ~ 1)
Z
๋ ์์ด๋์์ ๊ณ์ฐ. ๋จ์ ๋ฒกํฐ์ ํฌ๊ธฐ๋ 1์ธ๊ฒ์ ์ด์ฉ.(sqrt(x^2 + y^2 + z^2) = 1)
DXT1, (RGB 5:6:5), (RGBA 5:5:5:1)
color0
16
color1
16
color indices
4 * 4 * 2 = 32
(RGB)24 * 16 = 384
384 / 64 = 6
6๋ฐฐ๋ฅผ ์๋ ์ ์๋ค.
alpha
64
color0
16
color1
16
color indices
4 * 4 * 2 = 32
(RGBA)32 * 16 = 512
512 / 128 = 4
4๋ฐฐ๋ฅผ ์๋ ์ ์๋ค.
a0
8
a1
8
alpha indices
48
color0
16
color1
16
color indices
4 * 4 * 2 = 32
R4G4B4A4
R4G4B4A4 (์ถ๋ ฅ์ ๋ณด๊ฐ A8)
๊ธ์ด์ด: ๊ทธ๋ ์ด์ค๊ฑฐ ยป 2007-12-12 10:54
์ธ๊ณฝ์ ์ฒ๋ฆฌ ๋ฐฉ์์ ํฌ๊ฒ ๋๋๋ฉด,
1. ๋ฒํ
์ค์ ๋
ธ๋ฉ์ ๊ฐ์ง๊ณ ๋
ธ๋๊ฑฐ(VS)
2. ์ผ๋จ ๋ ๋๋ง ๊ฑด๋ค์ ์ด๋ฏธ์ง ํ๋ก์ธ์ฑ์ผ๋ก ์ธ๊ณฝ์ ์ ๋ฐ์ฃผ๋๊ฑฐ(PS)
3. ๋ฐ๋ก ์ ๋ง ๊ทธ๋ ค์ฃผ๋๊ฑฐ
๊ฑฐ์ ์ ์ธ๊ฐ์ง์ ์ํ๋๊ตฐ์.
1๋ฒ์ ๊ฒฝ์ฐ ๋น๊ต์ ๊ณ์ฐ๋น์ฉ์ด ์์ต๋๋ค. ๋ผ์ดํธ๋ฒกํฐ์์ ๋ด์ ์ ์ด์ฉํ ๋ฐฉ์์ ์๋ ์ง์กด์
๋๋ค๋ง ๋ก์ฐํด๋ฆฌ๊ณค์ด๋ ๋์์ด๋๊ฐ ์์ด์ดํ๋ ์ ๊ฐ๊ฐ์ด ์๋ ๊ฒฝ์ฐ ์ํ๋๋๋ง ๋ชปํ ํ๋ฆฌํฐ๊ฐ ๋์ค๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์ด ์ข ํ์ ์ ์
๋๋ค. ์ธ๊ณฝ์ ์ ํด๋ฆฌ๊ณค์ผ๋ก ๋ผ์ธ์ ์์ฑํด ์ฃผ๋ ๋ฐฉ์๋ ์์ต๋๋ค. ๊ฐ์ฅ ํํ๊ฒ ๋
ธ๋ง ๋ค์ง์ด ํ๋ํด ์ฐ์ด์ฃผ๋๊ฑฐ์ฃ . GPU์ ์ 2Pass์ด๊ธด ํ์ง๋ง ๊ฐ์ธ์ ์ผ๋ก๋ ๊ฐ๊ฒฉ๋ ํ๋ฆฌํฐ๋ฉด์์ ๊ฐ์ฅ ์ข๋ค๊ณ ๋ด
๋๋ค. ๊ฑ ์ ์์ฒด๋ ํด๋ฆฌ๊ณค์ด๋ค ๋ณด๋ ๊ฑฐ๋ฆฌ์ ๋ฐ๋ผ ์๋์ผ๋ก ์ธ๊ณฝ์ ๋๊ป๊ฐ ๋น๋ก์ ๋ง๊ฒ ์กฐ์ ๋ฉ๋๋ค. ํนํ ์ด๊ฑด ๋ง์ฝ ํ๋ก๊ทธ๋๋จธ๊ฐ ์์ด๋๋ฅผ ๋ชฐ๋ผ๋ ๋งฅ์ค์์ ๋ง๋ค์ด ์ค ์๋ ์์ต๋๋ค. ๋ค๋ง ์์ฃ๋ถ๋ค์ด ๋ง์ดํ์
จ๋ฏ, ์ค๋ณต ๋
ธ๋ฉ์ ๊ฐ์ง๊ณ ์์ ๊ฒฝ์ฐ ๋ณ๋์ฒ๋ฆฌ๋ฅผ ํด์ผ ํ๋ ๊ท์ฐฎ์์ด ์์ต๋๋ค.
2๋ฒ์ ๊ฒฝ์ฐ ์ธ๊ณฝ์ ๋๊ป๊ฐ ๊ท ์ผํ๊ณ ํ๋ฆฌํฐ ๋ฉด์์๋ ๊ฐ์ฅ ์ข์ต๋๋ค. ๊น์ด๊ฐ์ด ์๋ ์ธ๊ณฝ์ ๋ฌ์ฌ๋ ๊ฐ๋ฅํ๊ณ ์(์ผ๊ตด ์ธ๊ณฝ๋ผ์ธ์ ๋ฌ์ฌํ ๋ ํฑ์ ์ ์์ํ ์
์ด์ง๊ฒ๋ ํ ์ ์์ต๋๋ค. gooch shading๊ณผ ํจ๊ป ์ฐ๋ ์บ๋ฆญํฐ ์ผ๊ตด ์ง์ง ์ด์๊ฒ ๋์ค๋๋ผ๊ณ ์! >o<b), ๊น์ด, ์ปฌ๋ฌ, ๋
ธ๋ง๊ฐ ๋ฑ๋ฑ ์ค์์ ์ด๋๊ฑธ ๊ธฐ์ค์ผ๋ก ํ๋๋์ ๋ฐ๋ผ ๋ฌ๋ผ์ง์ง๋ง ๊ธฐ๋ณธ์ ์ผ๋ก ์ด๋ฏธ์ง ํ๋ก์ธ์ฑ์ ์ฐ๋ค๋ณด๋ ๋ค์ฑ๋ก์ด ํจ๊ณผ๊ฐ ๊ฐ๋ฅํฉ๋๋ค. ๋
ธ๋ฉ๋ฌธ์ , ์ํ๋ฌธ์ , ์คํค๋๋ ์๋ํด๊ฒฐ๋ฉ๋๋ค. ์ํฐ์๋ฆฌ์ด์ฑ๋ ๋ํดํธ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค. ๋ค๋ง PS์ ๋ค์ค์ํ๋ง์ด ํ์์ธ๋ฐ๋ค, ๊ฐ๊ฐ์ ๋ฐฉ์์ด ๋
์์ ์ผ๋ก๋ ์์ ํ์ง ๋ชปํด ๋ณด์์ ์ผ๋ก ์์ด์ฃผ์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ํผํฌ๋จผ์ค ์ข(...์ฌ์ค์ ๋ง์ด) ๋จน์ต๋๋ค. ๊ทธ๋์ ์ ๋ ๊ฒฐ๊ตญ ๋นผ๋ฒ๋ฆฌ๊ณ ๋
ธ๋ง๋ค์ง๊ธฐ๋ก ๊ฐ์ต๋๋ค(์ง๋ชป๋ฏธ... ใ
_ใ
);;
3. ๋ณดํต ๋ฉด๋จ์๋ก ๋
ธ๋ฉ์ ๊ณ์ฐํด ๊ฒฝ๊ณ์ ์ผ๋ก ํ๋จ๋๋ ๊ฒฝ์ฐ ๋ผ์ธ์ด๋ ํด๋ฆฌ๊ณค ๋ ๋ฅผ ๋ฐ๋ก ์์ฑํด ๊ทธ๋ ค์ฃผ๋ ๋ฐฉ์์
๋๋ค. 1๋ฒ ๋ฐฉ์๊ณผ ํก์ฌํ์ง๋ง ์ ๋๊ป๊ฐ ์ค๋ธ์ ํธ์ ํฌ๊ธฐ๋ ๊ฑฐ๋ฆฌ์ ์๊ด ์์ด ๊ท ์ผํ๊ฒ ์ ์ง๋ฉ๋๋ค. ์๋ง๋ ์ ์ํ์ ์ค์ท์์๋ ์ด ๋ฐฉ์์ผ๋ก ์ถ์ธก๋ฉ๋๋ค.
๋์ ํ๋ฆฌํฐ๋ณด๋ค๋ ๋ค์์ ์ค๋ธ์ ํธ ์ฒ๋ฆฌ๊ฐ ์ค์ํ ๊ฒฝ์ฐ 1๋ฒ์, ์์์ง๋ง ํ๋ฆฌํฐ๊ฐ ์ค์ํ ๊ฒฝ์ฐ 2๋ฒ์, ์ ์ ํ ๋ถํ์ ๊ท ์ผํ ์ ๋๊ป์ ์ํ ๊ฒฝ์ฐ 3๋ฒ์ ํํ๋ ๊ฒ ๊ฐ๋๊ตฐ์.
๊ฐ ์ ์ผ๋ก gooch + depth ๊ธฐ๋ฐ PS์ ๋ฐ๊ธฐ ์์ธ! ใ
ก_ใ
กb