OpenGL 응용 프로그램에서 탄젠트 공간 일반 매핑을 구현 중이며 몇 가지 질문이 있습니다.일반 매핑 질문
1) 텍스처 좌표가 기울어 져 있기 때문에 자연스럽게 TBN 행렬이 항상 직교가 아니라는 것을 알고 있습니다. Gramm-Schmidt 프로세스를 사용하여 다시 직교화할 수 있다는 것을 알고 있습니다. 내 질문은 이것이다. - Gramm-Schmidt 프로세스가 가시적 인 인공물을 도입 하는가? 수정되지 않은 순수한/접함/비트 탄젠트를 사용하여 최상의 시각적 품질을 얻을 수 있습니까?
2) 많은 튜토리얼에서 볼 공간 대신 접선 공간에서 조명 계산을 수행합니다. 왜 이런거야? 지연 렌더러를 사용할 계획이므로 내 법선을 버퍼에 저장해야합니다. 저장시 뷰 공간에 있어야한다는 점에서 맞습니까? 계산에서 접선 공간 대신 뷰 공간을 사용하여 무엇을 놓치고 싶습니까? 뷰 공간을 사용하는 경우 TBN 행렬의 역함이 필요합니까?
3) 조각 쉐이더에서 접선과 비트 탄젠트를 다시 정규화해야합니까? 들어오는 (정규화 된) 범프 맵 법선을 곱한 후에, 다시 정규화해야합니까? 직교성 (질문 1 참조)이 이에 영향을 줍니까? 프래그먼트 셰이더 내에서 벡터를 재 정규화 할 필요가 있습니까?
지연된 음영의 경우 일반적으로 일반 G- 버퍼를 쓸 때 접사 - 월드/뷰 공간 변환을 수행합니다. 일부 후 처리 알고리즘은 월드 공간에서 더 효율적이므로 일부 엔진은이를 월드 공간에 저장합니다. 뷰 공간은 정밀도면에서 몇 가지 장점이 있습니다. 따라서 수행해야 할 일에 대한 합의가 없습니다 ... 그러나 G-Buffer를 접선 공간에 저장할 수는 없습니다. 법선을 변형하는 데 필요한 누락 된 정보가 있기 때문입니다 조명 중. –
고맙습니다. 지금은보기 공간에 저장하고 있지만 향후에는 세계 공간으로 변경 될 수 있습니다. –