2012-09-06 2 views
1

현재 높이 맵에 의해 생성 된 원통형 지형에서 작업 중입니다. 프로그램에서 일어나는 일은 간단합니다. 영역의 알파 값을 가진 지형 색상이 보이지 않게하고 다른 텍스처 ARGB를 사용합니다. A는 높이와 RGB에 대한 그레이 스케일입니다. 빛에 대한 정상입니다. 텍스처는 A 값이 1에서 255 사이가되고 구멍이있는 영역에 대해 0을 예약합니다. 즉, 존재하지 않기를 의미합니다. 이론적으로 아무런 문제가 없지만 첫 번째 텍스처를 기반으로 보이지 않는 영역을 만들었지 만 실제로 어떤 일이 일어나는지는 프로그램이 0을 최소 높이로 간주하고 텍스처를 맨 위에 놓고도 이 영역은 삼각형을 만들려고 노력하는 것 같이 보이지만 보이지 않게 만들어서 다음 꼭지점을 자르기 때문에 거기에 도착하지 않는 것과 같은 0의 영역입니다. Notice the lines going to the center of the cylinder This is how it gets when i stop making those vertex invisibleDirectx11을 사용하는 Heightmap 기반 지형의 구멍

주의 실린더이 내가 눈에 보이지 않는 그 정점 그래서

, 단지 말을을 중지 할 때 얻는 방법이다 의 중심에가는 선, 나는에 함수 클립()를 사용 픽셀 쉐이더를 사용하여 보이지 않게합니다.

기본적으로 도움이 필요합니다 : 픽셀 쉐이더에서 clip()을 사용하는 것과 같은 방식으로 버텍스 쉐이더에서 그런 작업을 수행하고 원하지 않는 버텍스를 제거 할 수 있습니까? 기본적으로 값 0을 무시한다고 말할 수 있습니까? 해결 방법이 있습니까? 0 인 모든 꼭지점을 이웃 사람의 값으로 만드는 것을 생각합니다. 그런 식으로 그 선은 중심으로가 아니라 실린더 자체와 같은 평면으로 갈 것입니다. 또 다른 점은 프로그램이 하나의 꼭지점에서 다음 꼭지점까지 값을 보간한다는 것입니다. 그 이유는 보이지 않는 꼭지점을 중간에서 자른 이유입니다.

저는 C++ 및 DirectX11 API를 사용하여 작업하고 있습니다. Tessellation을 사용합니다.

시간을 내 주셔서 감사 드리며 입력하신 내용이 매우 유용 할 것입니다.

답변

0

글쎄, 나는이 문제를 약간 해결했다. 높이 값을 가진 텍스처를 0 값이 0이 아닌 다른 값으로 또는 128.0f로 변경된 값으로 대체하여 다른 텍스처를 만든 수정자를 통과 시켰습니다. 그것은 이상한 선 방향을 실린더의 중심으로가 아니라 선을 따라 더 정확하게 만들었습니다.