2014-04-28 9 views
2

1 부 :간단한 평면 테셀레이션 쉐이더

그래서 내가 쿼드의 평면을 취하고 쿼드보다 잘 자세한/모자이크 비행기로 변환 기본 테셀레이션 프로그램을 만들려고합니다. 아래 그림과 같이. 테셀레이션 된 양은 사용자 컨트롤에 따라 다르며 균일 한 (처음에) 전달됩니다. 그러나 나는 이것을 수행하는 방법을 알지 못하는 테셀레이션 쉐이더에 익숙하지 않습니다.

방법이 일반적으로 이루어집니다 Flat plane tessellation ?

Quad tessellation

: 나의 이해 쿼드에서 대신은 아래 그림과 같은 방법으로 테셀레이션 얻을, 이런 식으로 짜여져되지 않으므로 반드시 실제로 셰이더 프로그램 이전에 쿼드의 평면을 그릴 안

대답은 점의 평면을 그리는 것이 될 수 있다고 생각합니다. 그리고이 점들을 더 많은 점으로 테셀레이션하고,이 점들을 생각하는 지오메트리 셰이더에서 적절한 크기의 쿼드로 변형시킵니다. 또는 포인트를 쿼드로 변환하는 대신에 가장 가까운 4 개의 포인트 사이에 쿼드를 그릴 수 있습니까? 예제는 대단히 감사합니다!

참고 : 사용 GLSL> 4.0 & C 전용 (C++/파이썬)

2 부 : 나는 1 부 작업을 진행 한 후

, 어떻게 그렇게 특정 쿼드 있는지 확인하지 않을 것이다 더이

enter image description here

내가 가까이 카메라에 부품을 원하는? : 같은, 다른 사람보다 테셀레이션된다 더 많이 모자이크 처리됩니다.

3 부 : 내가 멀리 얻을 수 있다면

, 다음 부분은 흥미로운 환경에 비행기를 만들기 위해 점의 z 축을 변경하는 것입니다. 이 작업은 2D 샘플러를 통해 수행 할 수 있습니다. 그러나 파트 1에서 점의 평면을 사용하는 것이 맞다면 쿼드로 변환되는 점을 변경하는 것보다 더 많은 작업을 수행해야합니다. 쿼드는 기본적으로 쿼드 사이에 간격이 없도록 꼭지점을 공유해야하기 때문입니다. 그게 어떻게 끝날까요? 또는 점 사이에 쿼드를 그리면 각 점은 적절한 높이가됩니다. 그러면 문제가되지 않습니다.

답변

0

1 부

예있어 올바른 : TES에서 정점 데이터를 TCS로 유니폼으로 다듬기 수준을 지정 (다듬기 제어 쉐이더) 및 생성 점의 간단한 그리드로 '패치'를 생성 (테셀레이션 평가 쉐이더).

소리가 복잡합니까? 2

는 당신이 여기에 대해 얘기하는 것은 LOD입니다 http://antongerdelan.net/opengl/tessellation.html

부 (또는 세부 사항의 수준) : 여기에 좋은 내가 내 일을 기준으로 튜토리얼입니다. 메쉬의 왼쪽 아래 모서리가 더 높은 다각형 수를 별도의 개체로 잘라서 렌더링해야합니다.

제안 된 접근 방식은 정확합니다. 전체 장면을 '청크'로 분리하고 대개 일부 거리 - 카메라 알고리즘을 사용하여 각 청크에 대한 LOD (즉, 텍스처 매개 변수)를 별도로 결정합니다.

3 부

정확히 내가 믿는 후에 무엇 않는 또 다른 훌륭한 튜토리얼 : http://codeflow.org/entries/2010/nov/07/opengl-4-tessellation/

나는 매우 매우 상세한하지만 메모리를 취득하고 효율적인 지형을 프레임에이 방법을 사용했다.

희망이 도움이됩니다.