나는 작은 경로 추적 프로그램을 가지고 있으며 몇 가지 기본 BRDF를 구현하는 방법을 찾으려고합니다.BRDF는 일반적으로 어떻게 구현됩니까?
1) For each pixel:
1.1) For each sample:
1.1.1) I construct a path.
1.1.2) I calculate the contribution of this path.
1.1.3) I calculate the "probability" of this path.
1.1.4) Finally, I calculate the overall color value(taking into account number of samples, "probability" and contribution of the path).
1.2) Take the sum of all samples' values and write it to the pixel.
그래서, 내가 단계 1.1.1) I construct a path
에 반영 광선의 방향을 계산 : 는 여기에 내가 (재귀없이)를 사용하여 파이프 라인에 대한 간략한 설명입니다.
지금까지는 확산 반사, 정반사, 광택 반사, 굴절을 구현했습니다. 이제는 복잡한 BRDF를 구현하고자합니다. Cook-Torrance BRDF를 예로 들어 봅시다. 여러 구성 요소가 포함되어 있습니다 (확산 반사 및 정반사). 조합을 얻기 위해 광선을 어떻게 추적해야합니까? 내가 diffuse_ray/specular_ray 사이에서 임의로 선택하고 평소와 같이 값을 쌓아 두어야합니까? (무작위 값이 0.5 이상이면 확산 광선, 그렇지 않으면 - 반사를 추적 할 때처럼) 또는 여러 광선을 추적해야합니까? 각 교차로에서?
일반적으로 물리적 기반 렌더러에서 어떻게 구현됩니까?
P. 누군가이 주제에 대한 좋은 기사를 알고 있다면 나는 그것을 보게되어 기쁘다. 나는 pbrt를 읽으려고했지만 아주 복잡하고 거대한 것처럼 보입니다. 그리고 카메라 모델과 다른 것들처럼 다르게 구현되는 것들이 있습니다.
내 추측 적 추적자에서 나는 반사 및 확산 반사에 대해 별도의 광선을 생성하지만 위에 설명한 방법으로 광선 트리를 더 작게 유지하고 계산 복잡성을 줄여야합니다. 나는 그 방법을 사용하는 것을 고려해 보았지만, "색상"무작위 계수를 갖는 방법을 이해할 수 없기 때문에 확산과 반사 사이의 구분이 표면색에 따라 달라질 수 있습니다 (플라스틱 대 금속 재료에서 일어난다 고 생각합니다) – Alnitak