2013-10-21 1 views
5

프래그먼트 셰이더를 사용하여 특정 너비 (또는 여러 줄)의 선을 그리는 방법에 관심이있었습니다. 나는 그것을 설명하는 것처럼 보이는 this post을 우연히 발견했다.조각 쉐이더 - 선 그리기?

내가 가진 도전은 그 배후의 논리를 이해하는 것입니다.

몇 가지 질문 :

  1. 우리는이 예에서 좌표 공간이 정확, (0.0-1.0,0.0-1.0)인가?
  2. 그렇다면 "uv"변수의 용도는 무엇입니까? 두께가 500이므로 "uv"변수는 매우 작습니다. 그러므로 그것으로부터 거리 1과 2까지 (a와 b 변수에 저장 됨)?
  3. 마지막으로 h 변수의 논리는 무엇입니까?

답변

2

내가 하나 하나 귀하의 모든 질문에 대답하려고합니다

1) 예, 이것은 정확한 사실입니다.

2) 3 차원 컴퓨터 그래픽에서는 0과 1 사이 (또는 -1과 1 사이)의 부동 소수점 값으로 좌표를 표현하는 것이 일반적입니다 (특정 경계 내에서). 우선, 이것은 주어진 값이 경계를 넘나 드는 지 여부를 결정하는 것을 아주 쉽게 만들어 주며, 추상화는 이산 이미지 단위 인 "픽셀"의 개념에서 벗어납니다. 또한이 일반적인 관행은 다른 모든 곳에서 찾을 수 있습니다 (장치 좌표 또는 텍스처 좌표를 생각하십시오)

작업중인 값이 1보다 작지 않도록주의하십시오. 실제로 컴퓨터 그래픽에서는 보통 부동 소수점 연산을 처리하며 FLOAT 유형은 "1"점 주위의 실수 값 행을 표현하는 데 아주 적합합니다.

3) h에 대한 공식은 2 부분 : 제곱근 부분과 2/c 계수로 구성됩니다. 제곱근 부분은 scholl 수학 수업에서 잘 알려 져야합니다. 이것은 삼각형 영역에 대한 헤론 수식입니다 (a, b, c 사이). 2/c는 상기 삼각형의 높이를 추출하며, 이는 h에 저장되고 점 uv와 삼각형의 "접지선"사이의 거리이다. 그런 다음이 거리를 사용하여 p1-p2 선과 관련하여 uv가 결정됩니다.