2013-08-17 2 views
0

나는 점과 원점 사이의 거리에 대한 지식이 필요한 쉐이더를 작성 중이다.거리 계산을위한 GLSL 라인이 왜 예상대로 작동하지 않는 이유는 무엇입니까?

float distanceToOrigin = sqrt((pow(a_Position.x,2.0)+pow(a_Position.y,2.0)+pow(a_Position.z,2.0)); 

그러나 일이 그 정점이 장면의 특정 지역에 dissappear 원인 : 이것은 내가 원래 있던 라인이다.

유클리드 거리 대신 맨하탄을 계산하기 위해이 행을 바꾸면 맨해튼 거리에 대한 결과가 나옵니다.

float distanceToOrigin = a_position.x + a_position.y + a_position.z; 

왜 첫 번째 줄에서 예기치 않은 결과가 나올 수 있습니까?

답변

1

pow 함수의 경우 x < 또는 x = 0 및 y = 0 인 경우 결과가 정의되지 않습니다. 일반 제곱보다 훨씬 느립니다.

왜 길이 (a_Position)를 사용하지 않으십니까?

관련 문제