안녕하세요... 그래픽스를 하고 있는데요. 오브젝트마다 트랜스폼을 가지는데 셰이더에 4x4 트랜스폼 매트릭스를 넘겨주기 위해, 오브젝트에 현재 트랜스폼 정보를 저장해두잖아요.
이때 트랜스폼 정보(T R S)를 벡터로 따로 저장해두시나요, 아니면 4X4 매트릭스 하나만 저장해두시나요?
전자로 하게 되면 셰이더에 전달할때 각 벡터 값 이용해서 매트릭스 3개 만들고 곱한다음 전달해야하고, 후자로 하게 되면 그냥 오브젝트가 들고있는 4X4 매트릭스만 전달하면 되는데요.
문제는 전자처럼 하면 셰이더에 전달할때 매트릭스 3개 만들고 곱해서 전달해야 한다는 점. 후자처럼 하면 각 트랜스폼 정보(T R S)의 값을 보기 위해 매트릭스에서 성분을 뽑아내야 한다는 점 입니다.
사람들은 뭘 선호하는지 궁금합니다...
내가본 vulkan 게임엔진은 전자였음
오홍 감사합니다
https://github.com/TheCherno/Hazel/blob/master/Hazel/src/Hazel/Scene/Components.h
이것도 전자네
게임 컨텐츠 개발자가 편하게 쓰려면 전자밖에 답 없음.
트랜스폼에서 Rotation을, Roll, Pitch Yaw로 뽑는 게 어려움
다렉이면 당연히 벡터. 산술 연산자도 오버로딩 되어있고 simd덕분에 빠르게 연산이 가능 해서
그리고 매트릭스 관련 함수 사용할 때 다 벡터형식으로 파라미터를 요구해서
그러면 전자처럼 사용해야겠네요. 감사합니다
다들 전자시네요. 여러 이유가 있네요. 감사합니다 ㅎㅎ
매트릭스로 저장하는게 편하고 스케일 로테이션 포지션등의 정보는 매트릭스에서 추출도 가능하니 매트릭스가 편하고 깔끔하더라