태그 보관물: shading

shading

정반사 음영에서 R (퐁) 대신 H (blinn)가 사용되는 이유는 무엇입니까? 반 벡터는 겉보기에 합리적인

나는 이것에 대한 좋은 이유를 찾을 수 없습니다. phong에 사용 된 반사 벡터는 물리학에서 간단한 기초를 가지고 있습니다. 그러나 blinn에 사용 된 반 벡터는 겉보기에 합리적인 근거가 없으며 적절한 반사를 구성하지 않습니다. 그럼에도 불구하고 그것은 모든 소위 “물리 기반”쉐이딩 기능에서 사용됩니다. 그것에 대한 좋은 물리적 근거가 있다면 알고 싶습니다.

내가 찾은 것은 몇 가지 이유입니다.

더 빠릅니다 . 이것에 대한 정보가 혼합되어 있지만 1998 년에 큰 이유가 있었을 것입니다.

90도 이상의 각도를 더 잘 처리 합니다. 단, 이유는 phong 항이 잘못 사용 되었기 때문입니다. 반사와 시야의 내적은 -1과 +1 사이의 각도를 제공합니다. 일반적으로이 각도는 0에서 1로 고정되며 이것이 90도 문제의 직접적인 원인입니다. 고정하는 대신 각도를 다시 정규화하면 전체 180도 범위를 확보 할 수 있습니다. 나는 단순한 x * 0.5 + 0.5 작업이 40 년 동안 그래픽 세계를 뛰어 넘었다 고 믿지 않습니다.

가장자리를 더 잘 처리합니다 . 가장자리 “문제”는 블린 솔루션에도 존재합니다. 주요 원인은 터미네이터에서 영역 조명의 부적절한 시뮬레이션으로, “물리 기반”쉐이더에 필수적입니다. 그러나 간단한 상황에서도 S 자형 함수는 소프트 터미네이터 라인을 정확하게 근사 할 수 있습니다. 램버트 항에 곱하면 정반사 항을 부적절하게 감쇠시키기 때문에 부정확하며, 이는 프레 넬 항을 상쇄하고 추가 오류를 야기 할 수 있습니다.

가장자리에 긴 반사가 있습니다 -비 등방성 반사는 현실적 일 수 있지만, blinn은 가장자리에만 나타나기 때문에이를 구현하는 올바른 방법이 아닙니다. H 항의 오류가 현실적으로 보이는 것은 단지 우연의 일치 일뿐입니다.

이 이유들 중 어느 것도 만족스럽지 않습니다. 나는이 광기를 정리하고 싶습니다.

나는 blinn과 phong에 대해 구체적으로 이야기하는 것이 아니라 대신 이러한 셰이더와 다른 것들의 기초로 사용되는 벡터 구성 요소 H와 R에 대해 이야기하고 싶습니다 .



답변

완벽하게 반사되는 표면의 경우 Phong 모델이 적합합니다. 그러나 거친 표면을 근사화하기위한 Phong 모델의 n in (RV) ^ n은 어디에서 오는가? 내적 결과가 적절한 결과를 제공하는 것만 제외하고 내적 결과를 거듭 제곱해야한다는 이론은 어디에 있습니까?

Blinn 모델의 경우 방정식의 모든 구성 요소를 지원하는 물리적 기반의 마이크로 패싯 이론 이 있으며 모델이 실제 표면을 더 가깝게 근사함을 보여주는 경험적 증거도 있습니다 (완벽하지는 않지만). Blinn 모델의 반 벡터는 정규 분포 함수 (NDF)에 대한 입력으로 사용되며, 표면 거칠기의 함수로 미세면이 표면 법선에 대해 분포되는 방법과 비슷합니다. 즉, H- 벡터가 법선 방향을 가리키면 대부분의 미세면이 그 방향을 가리 키기 때문에 값이 가장 높으며 법선과 H- 벡터 사이의 각도가 증가하면 확률이 감소합니다.

Blinn-model은 어떤 방법으로도 완벽하지는 않으며, 예를 들어 microfacet 모델의 지오메트리 항을 고려하지 않습니다 (예 : 방목 각도에서 중요성이 증가하는 microfacet의 그림자 및 마스킹).


답변

실제로 Blinn이 Phong의 기본이 아닌 이유를 직접 나열했다고 생각합니다.

당신이 거기에 올린 모든 이유는 사실 Blinn이 Phong보다 우월한 지역입니다.

전체적으로 볼 때, 이러한 모든 것은 Blinn이 Phong보다 더 나은 채무 불이행으로 이어집니다.

Blinn은 완벽합니까? Phong보다 낫습니까?

아니.

그러나 그것은 이다 합리적인 기본. 작성한 렌더러 / 셰이더에서 Plin을 Blinn으로 자유롭게 대체하십시오.


답변

H 벡터가 사용되는 이유를 발견했습니다. 불행히도 대부분의 쉐이딩 모델에서 사용되는 방식이 아니므로 잘못된 것으로 결론을 내릴 수 있습니다.

물리적으로 음영 처리를하려면 반사광이 프레 넬 방정식을 따라야합니다. (대부분의 “물리적 기반”쉐이더는 그렇지 않습니다.) 마이크로 패싯은 프레 넬 방정식을 준수해야합니다. 프레 넬 방정식은 빛의 입사각과 인터페이스의 굴절률에 따라 정확한 결과를 생성해야합니다.

반사 법칙에 따라 입사각은 표면 법선을 따른 반사각과 미러링되어야합니다. 빛의 광선이 카메라에 닿게하려면 (우리가 알고있는) 빛의 방향으로 반사되어야합니다. 따라서 표면 법선은이 두 방향에 대한 거울 축이어야합니다. 이것은 그들 사이에있는 반 벡터 H를 제공합니다. 두 합계를 정규화하여 계산합니다.

이제 빛 방향 L과 반 벡터 H 사이의 각도를 계산하여 미세면의 정반사에 대한 입사각을 획득하고 프레 넬 항을 사용하여 정확하게 감쇠시킬 수 있습니다.

마이크로 패싯에 대한 뷰 방향은 R과 동일하며, H는 반사 항이 아닙니다. Blinn, Cook, Torrance 및 Sparrow가이를 흡입 할 수 있습니다. Phong과 Fresnel이 옳았습니다.


답변