나는 이것에 대한 좋은 이유를 찾을 수 없습니다. phong에 사용 된 반사 벡터는 물리학에서 간단한 기초를 가지고 있습니다. 그러나 blinn에 사용 된 반 벡터는 겉보기에 합리적인 근거가 없으며 적절한 반사를 구성하지 않습니다. 그럼에도 불구하고 그것은 모든 소위 "물리 기반"쉐이딩 기능에서 사용됩니다. 그것에 대한 좋은 물리적 근거가 있다면 알고 싶습니다.
내가 찾은 것은 몇 가지 이유입니다.
더 빠릅니다 . 이것에 대한 정보가 혼합되어 있지만 1998 년에 큰 이유가 있었을 것입니다.
90도 이상의 각도를 더 잘 처리 합니다. 단, 이유는 phong 항이 잘못 사용 되었기 때문입니다. 반사와 시야의 내적은 -1과 +1 사이의 각도를 제공합니다. 일반적으로이 각도는 0에서 1로 고정되며 이것이 90도 문제의 직접적인 원인입니다. 고정하는 대신 각도를 다시 정규화하면 전체 180도 범위를 확보 할 수 있습니다. 나는 단순한 x * 0.5 + 0.5 작업이 40 년 동안 그래픽 세계를 뛰어 넘었다 고 믿지 않습니다.
가장자리를 더 잘 처리합니다 . 가장자리 "문제"는 블린 솔루션에도 존재합니다. 주요 원인은 터미네이터에서 영역 조명의 부적절한 시뮬레이션으로, "물리 기반"쉐이더에 필수적입니다. 그러나 간단한 상황에서도 S 자형 함수는 소프트 터미네이터 라인을 정확하게 근사 할 수 있습니다. 램버트 항에 곱하면 정반사 항을 부적절하게 감쇠시키기 때문에 부정확하며, 이는 프레 넬 항을 상쇄하고 추가 오류를 야기 할 수 있습니다.
가장자리에 긴 반사가 있습니다 -비 등방성 반사는 현실적 일 수 있지만, blinn은 가장자리에만 나타나기 때문에이를 구현하는 올바른 방법이 아닙니다. H 항의 오류가 현실적으로 보이는 것은 단지 우연의 일치 일뿐입니다.
이 이유들 중 어느 것도 만족스럽지 않습니다. 나는이 광기를 정리하고 싶습니다.
나는 blinn과 phong에 대해 구체적으로 이야기하는 것이 아니라 대신 이러한 셰이더와 다른 것들의 기초로 사용되는 벡터 구성 요소 H와 R에 대해 이야기하고 싶습니다 .