2014-04-24 2 views
1

OpenGL 응용 프로그램에서 탄젠트 공간 일반 매핑을 구현 중이며 몇 가지 질문이 있습니다.일반 매핑 질문

1) 텍스처 좌표가 기울어 져 있기 때문에 자연스럽게 TBN 행렬이 항상 직교가 아니라는 것을 알고 있습니다. Gramm-Schmidt 프로세스를 사용하여 다시 직교화할 수 있다는 것을 알고 있습니다. 내 질문은 이것이다. - Gramm-Schmidt 프로세스가 가시적 인 인공물을 도입 하는가? 수정되지 않은 순수한/접함/비트 탄젠트를 사용하여 최상의 시각적 품질을 얻을 수 있습니까?

2) 많은 튜토리얼에서 볼 공간 대신 ​​접선 공간에서 조명 계산을 수행합니다. 왜 이런거야? 지연 렌더러를 사용할 계획이므로 내 법선을 버퍼에 저장해야합니다. 저장시 뷰 공간에 있어야한다는 점에서 맞습니까? 계산에서 접선 공간 대신 ​​뷰 공간을 사용하여 무엇을 놓치고 싶습니까? 뷰 공간을 사용하는 경우 TBN 행렬의 역함이 필요합니까?

3) 조각 쉐이더에서 접선과 비트 탄젠트를 다시 정규화해야합니까? 들어오는 (정규화 된) 범프 맵 법선을 곱한 후에, 다시 정규화해야합니까? 직교성 (질문 1 참조)이 이에 영향을 줍니까? 프래그먼트 셰이더 내에서 벡터를 재 정규화 할 필요가 있습니까?

+0

지연된 음영의 경우 일반적으로 일반 G- 버퍼를 쓸 때 접사 - 월드/뷰 공간 변환을 수행합니다. 일부 후 처리 알고리즘은 월드 공간에서 더 효율적이므로 일부 엔진은이를 월드 공간에 저장합니다. 뷰 공간은 정밀도면에서 몇 가지 장점이 있습니다. 따라서 수행해야 할 일에 대한 합의가 없습니다 ... 그러나 G-Buffer를 접선 공간에 저장할 수는 없습니다. 법선을 변형하는 데 필요한 누락 된 정보가 있기 때문입니다 조명 중. –

+0

고맙습니다. 지금은보기 공간에 저장하고 있지만 향후에는 세계 공간으로 변경 될 수 있습니다. –

답변

3

눈에 보이는 아티팩트가 눈에 띄게 생깁니 까?

원하는 결과에 따라 다릅니다. 그러나 보통의 답은 예가 될 것입니다. 왜냐하면 법선 벡터가 접선 공간에 있기 때문입니다. 직교 공간을 직교 화하면 텍스처 좌표가 비 직교 기반을 정의하면 일반 매핑 계산이 왜곡됩니다.

많은 튜토리얼에서보기 공간 대신 ​​접선 공간에서 조명 계산을 수행합니다. 왜 이런거야?

뷰 공간에서 일반 매핑을 수행하려면 각 법선 맵 텍셀을 뷰 공간으로 변환해야합니다. 이것은 조명 벡터를 버텍스 쉐이더의 탄젠트 공간으로 변환하고보다 중립적 인 보간 단계를 수행하는 것보다 비용이 많이 듭니다.

프래그먼트 셰이더에서 접선과 비트 탄젠트를 다시 정규화해야합니까?

아니요. 개별 벡터를 변형 한 후 (노멀 맵, 광원 및 관측점 방향) 조명 계산을 수행하기 전에 정규화해야합니다.