티스토리 뷰

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
링크