곡선 모양의 하드웨어 가속 도면


11

곡선 모양을 빠르게 그리는 방법?

  • "신속하게"나는 가능한 한 많은 하드웨어 기능을 사용해야한다고 가정한다

  • "곡선"은 2 차 또는 3 차 베 지어 곡선으로 정의 된 경계를 의미합니다.

  • "모양"이란 필자는 "뚱뚱한"스트로크 (예 : 1px 이상) 또는 홀수 / 짝수로 채워진 "2D 곡선 다각형"을 의미하며 구멍이있을 수 있습니다 (예 : 문자 "O").

내가 알고있는 옵션에는 몇 가지 단점이 있기 때문에 묻습니다.

  • 셰이프를 삼각 측량하여 OpenGL로 전송-CPU에서 가장 어려운 작업을 수행하고 너무 많거나 적은 삼각형을 사용할 수 있습니다 (예 : 낭비 적 / 거친)

  • 텍스처 아틀라스-모든 변경 (모양, 스케일, 회전 등)마다 텍스처를 재 계산 / 업로드해야합니다.

  • 부호있는 거리 필드-대규모에서는 디테일이 예쁘지 않거나 텍스처를 다시 계산 / 업로드해야합니다.

  • NV_path_rendering-엔비디아 카드에서만 작동하지 않는 경우 가능

  • OpenVG-모바일에서만 작동하지 않는 경우 가능

  • ?


* OpenVG가 정확히 앞으로 나아가는 것은 아니라고 생각합니다. 미래의 전망에 대해 아는 사람이 있습니까? 오늘날에도 계속 주목할 가치가 있습니까?

** OpenGL 4+는 다각형의 테셀레이션을 즉시 제공합니다. 모양 경계가 최소한 "각도"가되지 않도록 "triangulating"옵션에서 메쉬를 미세 조정하는 데 어떻게 사용할 수 있습니까?


2
이 GPU Gems 기사는 구부러진 선체 부분을 식별하고 픽셀 쉐이더에서 커버리지를 분석적으로 계산하여 2 차 곡선을 래스터 화합니다. developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch25.html
yuriks

2
@yuriks 그래, Loop & Blinn은 완전히 잊어 버렸습니다. 하지만 특허가 없습니까?
Ecir Hana

SIGGRAPH Asia 2014에 게시 된 대규모 병렬 벡터 그래픽을 참조하십시오 .
lhf

귀하의 질문에 나열된 옵션과 Loop and Blinn 논문 사이에서 모든 가능성을 거의 다 사용했다고 생각합니다.
Nathan Reed

여기에 설명 된대로 줄을 테셀 레이트 할 수 있습니다 . 또는 계산 셰이더에서 삼각 측량 할 수 있습니다.
nikitablack

답변:


2

OpenGl 4.x 테셀레이션 셰이더를 사용하여 베 지어 제어점을 다각형으로 변환 할 수 있습니다.

"테셀레이션 셰이더 베 지어"에 대한 Google 검색에서 베 지어 표면 및 커브의 테셀레이션을 설명하는이 개요를 찾았습니다.

http://web.engr.oregonstate.edu/~mjb/cs519/Handouts/tessellation.1pp.pdf

이것은 Bezier 평가를 CPU에서 GPU로 오프로드하고 버스를 통한 데이터 흐름을 줄입니다.


3
조금 더 정교하게 설명하거나 추가 설명이 포함 된 내용을 연결하여이 답변을 개선 할 수 있습니다.
Nathan Reed

1
이 답변을 확장하는 한 가지 방법은 저자가 언급 한 단점을 해결하고 사용자의 접근 방식이 어떻게 도움이되는지 설명하는 것입니다.
trichoplax

0

하드웨어로 곡선 그리기를 할 수 있습니다. 에 기재된 방법이있다 GPU 보석 3 이 작업을 수행하는 방법에 대해 설명합니다. 사용자 @yuriks는 실제로 이것을 언급합니다. 나는 실제로 당신이 볼 수있는 더러운 데모를 빠르게 만들었습니다.

곡선

이미지 1 : HW 가속 곡선 모양 (삼각형으로 그린) 및 webgl 소스

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.