2013-05-18 1 views
4

테셀레이션 쉐이더를 사용하여 쿼드에 구멍을 뚫어서 삼각 분할 할 수 있습니까? 예를 들어, enter image description here테셀레이션을 사용하여 쿼드에 구멍이있는 삼각형을 만듭니다.

  1. enter image description hereenter image description here 내가 쿼드을 상상해보십시오.

  2. 그러면 쿼드의 중앙에 구멍을 만들고 싶습니다.
  3. 구멍을 만들기 위해 더 많은 꼭지점이 필요합니다.

그리고 질문 :

  • 내가 할 수있는 테셀레이션 쉐이더를 사용하여 해당? 그렇다면 어떻게?
  • Geometry 셰이더 대신 사용해야합니까?
+0

고려해야 할 가치가있는 또 다른 변형은 프래그먼트 셰이더를 사용하는 것입니다. 단 "구멍"의 조각을 버리는 것입니다. 이를 위해 텍스처를 사용할 수 있습니다. 우리는 일부 매개 변수를 사용하여 구멍의 위치와 크기를 설명합니다. "오래된"GL은 또한 그런 일을 할 수있는 알파 테스트를 가지고 있습니다. – derhass

+0

@derhass 코멘트를 주셔서 감사합니다. 거대한 쿼드에서 이루어지기 때문에 텍스처를 수정하는 것은 불가능합니다. 메쉬를 더 만들어야합니다. – Veehmot

답변

2

이것은 테셀레이션 쉐이더의 일반적인 응용 프로그램이 아니며, 수행되는 작업도 아닙니다. 기본적으로, 당신은 그래픽 카드로 전달되는 거친 3D 모델을 가지고 있습니다. 그래픽 카드는 실제로 테셀레이션 알고리즘을 구현합니다.이 알고리즘은 프리미티브를 테셀레이션하여 더 세련된 3D 모델을 만듭니다.

당신은 두 개의 쉐이더를 제공해야 : (OpenGL을 기준) 테셀레이션 제어 - 평가 쉐이더 테셀레이션 제어 쉐이더에서

당신이 테셀레이션 알고리즘 (내부 및 외부 테셀레이션 요인 등)을 "매개 변수화"할 수 있습니다. 그런 다음 테셀레이션 알고리즘이 적용됩니다. 그 후, 테셀레이션 평가 쉐이더는 예를 들어. 정점의 정점 속성을 보간합니다.

당신이하고 싶은 것은 CSG (http://en.wikipedia.org/wiki/Constructive_solid_geometry)를 생각 나게합니다. 테셀레이션 쉐이더가 새로운 데이터를 생성하는 것은 사실이지만 알고리즘을 매개 변수화 할 수 있습니다. 테셀레이션 알고리즘을 "구현"할 수 없습니다. 광고 기하학 쉐이더 : 새로운 프리미티브를 (제한된 양의) 방출 할 수 있지만 사실은 귀하의 문제에는 적용되지 않습니다.

관련 문제