셰이더 전치1 셰이더로 행렬을 전달하기 전에 전치를 취해야 하는 이유는? 셰이더에 행렬을 전달하기 전에 다음과 같이 보통 Transpose를 취해야 한다. 그 이유를 검색해 보면 DX는 행렬을 row-major로 다루고, HLSL에선 column-major로 다루기에 전치로 전달하여 맞춰줘야 하기 때문이라고 한다. 맞는 말이겠지만 실제로 디버깅을 해보고 셰이더에서 행렬을 계산하는 코드를 보면 더욱 수긍이 간다. 테스트를 위해 셰이더에 다음과 같은 행렬을 전치하여 전달하였다. 이 행렬과 전치를 취한 행렬은 다음과 같다. 셰이더에서 위의 전치 행렬을 World로 받고 벡터 input.Pos와 곱연산을 하는 코드는 다음과 같다. 아래 연산 결과의 첫 요소는 실제로 input.Pos(1,1,-1,1)과 전치 취하기 전 행렬의 첫 열벡터인 (1,0,0,4)의 곱이여야 한다. (실제로 .. 2021. 5. 7. 이전 1 다음