경로 추적에서 반사 또는 굴절 선택


14

경로 추적 프로그램에서 굴절 및 전송을 구현하려고하는데 어떻게 구현하는지 잘 모르겠습니다. 먼저 몇 가지 배경 :

빛이 표면에 닿으면 표면의 일부가 반사되고 일부가 굴절됩니다. 여기에 이미지 설명을 입력하십시오

프레 넬 방정식에 의해 주어진 빛과 굴절의 양 여기에 이미지 설명을 입력하십시오

재귀 광선 추적기에서 간단한 구현은 반사 광선과 굴절 광선을 촬영 한 다음 프레 넬을 사용하여 가중치 합을 수행하는 것입니다.

아르 자형=에프아르 자형이자형에스이자형()=1아르 자형영형=아르 자형난 반사+난 굴절

그러나 경로 추적에서는 하나의 경로 만 선택합니다. 이것은 나의 질문이다 :

  • 비 편향 방식으로 반사 또는 굴절 여부를 선택하는 방법

내 첫 번째 추측은 프레 넬을 기반으로 무작위로 선택하는 것입니다. 일명 :

float p = randf();
float fresnel = Fresnel();
if (p <= fresnel) {
    // Reflect
} else {
    // Refract
}

이것이 맞습니까? 아니면 어떤 종류의 보정 계수가 필요합니까? 나는 두 길을 모두 취하지 않기 때문에.


러시아어 룰렛
v.oddou 1

답변:


6

TL; DR

예, 그렇게 할 수 있습니다. 결과를 방향을 선택할 확률로 나누면됩니다.

전체 답변

반사와 굴절을 모두 갖는 재료를 허용하는 경로 추적기에서의 샘플링 주제는 실제로 약간 더 복잡합니다.

먼저 몇 가지 배경부터 시작하겠습니다. 경로 추적 프로그램에서 BRDF뿐만 아니라 BSDF를 허용하는 경우 양의 반구 대신 전체 구를 통합해야합니다. Monte Carlo 샘플은 다양한 전략으로 생성 할 수 있습니다. 직접 조명의 경우 BSDF 및 광 샘플링을 사용할 수 있습니다. 간접 조명의 경우 유일하게 의미있는 전략은 BSDF 샘플링입니다. 샘플링 전략 자체에는 일반적으로 샘플링 할 반구에 대한 결정이 포함됩니다 (예 : 반사 또는 굴절 계산 여부).

가장 간단한 버전에서, 광 샘플링은 일반적으로 반사 또는 굴절에 대해 많은주의를 기울이지 않습니다. 광원에 대한 광원 또는 환경 맵 (있는 경우)을 샘플링합니다. 재료가 0이 아닌 반구를 선택하여 환경 맵 샘플링을 향상시킬 수 있지만 나머지 재료 특성은 일반적으로 무시됩니다. 프레 넬 재질의 경우에는 매끄럽게 빛이 샘플링되지 않습니다.

BSDF 샘플링의 경우 상황이 훨씬 더 흥미 롭습니다. 당신이 묘사 한 사례는 두 가지 기여 방향이있는 이상적인 Fresnel 표면을 다루고 있습니다 (Fresnel BSDF는 실제로 두 델타 함수의 합이므로). 적분을 반사와 굴절의 두 부분으로 쉽게 나눌 수 있습니다. 언급했듯이 경로 추적 프로그램에서 양방향으로 가고 싶지 않기 때문에 하나를 선택해야합니다. 즉, 우리는 숫자 중 하나만 선택하여 숫자의 합계를 추정하려고합니다. 이것은 이산 몬테카를로 추정에 의해 수행 될 수있다 : 부가 물 중 하나를 무작위로 골라 그것을 골라 낼 확률로 나눈다. 이상적인 경우 샘플링 확률을 가산 값에 비례 시키려고하지만 값을 알지 못하므로 (알고 있으면 합계를 추정 할 필요가 없음), 우리는 단지 몇 가지 요소를 무시함으로써 그것들을 추정합니다. 이 경우 입사 광량을 무시하고 프레 넬 반사율 / 투과율 만 추정값으로 사용합니다.

따라서, 매끄러운 프레 넬 표면의 경우에 대한 BSDF 샘플링 루틴은 프레 넬 반사율에 비례하는 확률로 방향 중 하나를 무작위로 선택하고, 어느 시점에서 방향을 선택할 확률에 의해 그 방향에 대한 결과를 나눈다. 추정기는 다음과 같습니다.

나는(ω나는)에프(θ나는)(ω나는)=나는(ω나는)에프(θ나는)에프(θ나는)=나는(ω나는)

어디 ω나는=(ϕ나는,θ나는)나는(ω나는)에프(θ나는)(ω나는)에프(θ나는)

미세면 이론에 기초한 것과 같은보다 정교한 BSDF 모델의 경우 샘플링이 약간 더 복잡하지만 전체 적분을 유한 한 하위 적분으로 분할하고 나중에 이산 몬테 카를로를 사용하는 아이디어도 적용 할 수 있습니다.


1
이것은 흥미롭지 만 한 시점으로 혼란스러워합니다. "방향을 선택할 확률로 해당 방향에 대한 결과를 나눈다"는 것이 무엇을 의미하는지 명확히 할 수 있습니까? 이항 선택이 아니라 연속 분포에서 선택한 방향 인 경우 확률이 0이 아닙니까?
trichoplax

1
@trichoplax : 그렇습니다. 그러나 그 단락에서 나는 (유전체) Fresnel BSDF에 대한 샘플링 기법을 설명했습니다. 이상적인 표면은 두 개의 Dirac 델타 함수의 합입니다. 이 경우, 약간의 확률로 방향 중 하나를 선택합니다. 비 델타 (유한) BSDF의 경우 확률 밀도 함수에 따라 방향을 생성합니다. 불행히도 델타와 델타가 아닌 경우는 별도로 처리해야하므로 코드가 약간 지저분합니다. 미세면 BSDF 샘플링에 대한 자세한 내용은 예를 들어 Walter et. 알. [2007] 종이.
ivokabel

2
@RichieSams : Walter et. 알. [2007]은 기본적으로 여전히 유전체 거친 표면에 대한 최첨단 기술이지만 잘 작동하려면 최근에 Heitz와 D' Eon이 발표 한 좋은 샘플링이 필요합니다. 2014 년 논문 "중요도 샘플링 Microfacet 기반 BSDF 보이는 법선의 분포를 사용하여 " 또한 마이크로 패싯 사이의 상호 반사를 무시하는 단일 산란 모델이므로 거칠기 값이 높을수록 눈에 띄게 어둡습니다. 자세한 내용은 "단일 산란 마이크로 패싯 BSDF 모델의 에너지 손실에 대한 보상"질문을 참조하십시오.
ivokabel

5
질문에서 제안한대로 확률 = fresnel ()을 선택하면 확률로 나눌 때 일반적으로 곱할 프레 넬 인수를 취소한다는 점을 지적하고 싶었습니다. ) 프레 넬 팩터를 전혀 포함하지 않는 레이 기여로 끝납니다. 그것은 표준 중요성 샘플링 이론이지만, 잠재적으로 혼란스러운 문제라고 지적했습니다.
Nathan Reed

2
@Nathan, 귀하의 통지를 답변에 포함 시켰습니다.
ivokabel
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.