2012-06-08 4 views
1

그래서 Cg에서 픽셀/조각 쉐이더 내에서 텍스처를 구형으로 맵핑해야합니다.Cg 쉐이더에서 구형 텍스처링하기

모든 패스에서 "입력"으로 가지고있는 점은 텍스처를 샘플링하려는 구의 점에 대한 데카르트 좌표 x, y, z입니다. 그때 구형 좌표로 그 좌표를 변환하고, 각 피와 U와 같은 세타를 사용하고 V는 다음과 같이 각각 좌표

u = atan2(y, z) 
v = acos(x/sqrt(x*x + y*y + z*z)) 

나는이 간단한 매핑 구의 만에 극에 솔기를 생산 것이라는 점을 알고있다 순간, 내 문제는 텍스처가 구를 통해 여러 번 반복된다는 것입니다. 필자가 원하고 필요로하는 것은 전체 텍스처가 구 주위를 한 번 정확하게 감싸는 것입니다.

나는 셰이더를 시험해보고 몇 시간 동안 수색했지만 해결책을 찾지 못했습니다. 어딘가에 스케일링을 적용해야한다고 생각하지만 어디서? 또는 어쩌면 내가 완전히 잘못된 트랙에있어, 나는 Cg 및 쉐이더 프로그래밍 전반에 대해 매우 익숙하다. 어떤 도움을 주셔서 감사합니다! 역 삼각 함수의 결과가 각도이기 때문에 (학교에서 획득 한대로, trigonometrics의 적어도 기본 지식과 함께 시간 동안 검색 한 수는 없지만)

+0

StackOverflow에 오신 것을 환영합니다. [FAQ] (http://stackoverflow.com/faq#howtoask)를 읽어 보시기 바랍니다. –

답변

0

, 그들은 v에 대한 u[0, Pi]에 대한 [-Pi, Pi]에있을 것입니다. 그래서 당신은 그것들을 적절하게 스케일링해야합니다. (또는 D3D와 동등한)을 텍스쳐 좌표 랩핑 모드 (귀하의 설명처럼 들릴 수 있음)로 가정하면 u /= 2*Piv /= Pi이 수행해야합니다.

+0

그냥 명확히하기 위해 : 나는 실제로이 답변에 나를 가리키는 것을 찾지 못했을 것이다. (나는 삼각법에 대한 지식을 가지고 있으며, 나는 나무 숲을 볼 수 없다고 생각한다 ...) – Campusanis