티스토리 뷰
Software skinning을 5분만에 짜고 그 느림을 감당하지 못하여
Stream Out 한 걸 돌려 쓰도록 바꾸었다
아예 너무 틀리면 debugger 가 작동을 중지하기
대략 눈으로 버그 잡고 드디어 결과가 놔왔는데
저 vertex와 edge는 왜 저런건지
debugger를 이용하니
float3 pos = BoneSkinning( input.position, input.boneWeight, input.boneID );
float3 normal = BoneSkinning( input.position, input.boneWeight, input.boneID );
위와 같은 오타는 쉽게 잡을 수 있었다
문제는 튀어나온 vertex
15분 동안 씨름한 끝에 문제의 vertex의 id는 알 수 있었다.
float3 pos = input.position;
float3 normal = input.normal;
위와 같이 적용하니 정상적으로 표시되었다.
software skinning 의 값은
초기값
- [21207] {m_vec={m128_f32=0x0000015f822f4dd0 {0.000000000, 12.6531086, 1.40510976, 0.000000000} m128_u64=0x0000015f822f4dd0 {...} ...} } Math::Vector3
약간 frame 진행 뒤,
- [21207] {m_vec={m128_f32=0x000001da287efeb0 {-0.0213458687, 12.4578867, -0.574098825, -2.98023224e-08} m128_u64=...} } Math::Vector3
OK.
VertexShader & StreamOut 모두
StreamOut 된 것을 읽었을 때,
Skinning matrix 가 짤렸는지 방황을 했는데
이유는
SkinningPSO->SetPrimitiveTopologyType( D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST );
3으로 나누면 딱 2가 남는데 저 점들이 그 점이다.
PointList로 바꾸어야 한다
지난번에도 그랬지만, Debugger는 거짓말쟁이이니 값을 볼땐 주의해야한다
'Game > MMD' 카테고리의 다른 글
Vertex에 여러 Skinning model 지원하기 (0) | 2017.11.12 |
---|---|
Stream Out - Skinned Data (0) | 2017.11.11 |
DirectX 에서 Right hand 를 쓰는 고통 (0) | 2017.11.10 |
CSM (1) (0) | 2017.11.08 |
LisPSM (3) (0) | 2017.11.08 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크