2017-10-21 26 views
0

Blender에서 Collada 형식을 내보내고 더 복잡한 오브젝트와 텍스처를 사용하여 인덱스 "p"섹션에서 동일한 정점 정보이지만 다른 법선과 uv 좌표를 사용합니다.3D 모델에서 서로 다른 uv 좌표로 정점 위치가 중복되는 이유

중요한 두 가지 질문이 있습니다.

1 : 왜? 그 위치에 오직 1 개의 꼭지점 위치와 1 개의 UV 좌표 만 있어야합니까?

2 (가장 중요한 질문) :이 버텍스 정보가 버텍스 쉐이더에 고장 나면 어떻게 될까요? 예를 들어, 인덱스 1 정점과 인덱스 10 정점은 동일한 위치를 공유하지만 다른 법선 및 UV 좌표를 갖습니다. 인덱스 10이 먼저 나온 다음 인덱스 1이되면 어떻게 될까요? 그리고 그 반대의 경우에도 Pixel Shader 내부에서 변경되는 사항이 있습니까? 이것은 어떻게 나머지 파이프 라인에 영향을 줍니까?

감사합니다.

답변

1

정점은 그것을 정의하는 모든 정보의 조합으로 정의됩니다. 따라서 정점은 5 차원입니다 : (x, y, z, u, v). 어떤 두 정점에서, u1! = u2 또는 v1! = v2이면 그들은 같은 정점이 아닙니다. 고정 파이프 라인 GPU는 "정점이 위치 A와 텍스쳐 위치 B에 정상 C 플러스를 더한 것입니다."라고 말하고 싶을 때 간접적으로 추가 수준을 지원하지 않았습니다. 보통 프로그래밍 가능한 GPU를 사용하여 간접적으로 처리 할 수 ​​있습니다. 할 수는 있지만 사람들은 일반적으로 그렇게하지 않습니다.

버텍스 쉐이더는 처리중인 버텍스가 어디에서 정렬되었는지 개념이 없습니다. 기하학 파이프 라인이 계속 추적되는 한 문제는 발생하지 않습니다.

+0

위대한 답변이지만 질문 1은 어떻게됩니까? – Mike5050

+0

GPU는 '인터리브 된 버텍스 데이터'와 함께 작동합니다. 즉, 버텍스마다 모든 데이터가 형식 및 스트라이드로 정의 된 동일한 블록에 압축됩니다. 다른 법선, UV, 뼈 인덱스 또는 다른 정점 데이터를 사용하여 동일한 위치를 유지하려면 복제해야합니다 ('분할'이라고도 함). GPU는 "배열 구조"가 아닌 "구조체 배열"을 사용합니다. 여러 버텍스 버퍼 스트림을 사용하는 경우에도 버텍스 당 모든 버퍼에 대해 단일 인덱스 만 있습니다. –

+0

오른쪽. 질문 1에 대한 나의 대답은 : 정점이 복제되지 않는다는 것입니다. 버텍스 (x, y, z, u1, v1)와 버텍스 (x, y, z, u2, v2)는 서로 다른 (u, v)이기 때문에 서로 다른 버텍스입니다. – Tommy