1
การเลือกการสะท้อนหรือการหักเหในการติดตามเส้นทาง
ฉันพยายามที่จะใช้การหักเหและการส่งสัญญาณในเส้นทางของฉันและฉันไม่แน่ใจเกี่ยวกับวิธีการใช้ ครั้งแรกพื้นหลังบางส่วน: เมื่อแสงกระทบกับพื้นผิวส่วนหนึ่งของแสงจะสะท้อนกลับและส่วนหนึ่งจะหักเห: จำนวนเท่าใดแสงสะท้อนและการหักเหถูกกำหนดโดยFresnel Equations ในการติดตามเรย์แบบเรียกซ้ำการใช้งานง่าย ๆ คือการถ่ายภาพรังสีเพื่อการสะท้อนและรังสีสำหรับการหักเหของแสง RTLo=Fresnel()=1−R=R⋅Li,reflection+T⋅Li,refractionR=Fresnel()T=1−RLo=R⋅Li,reflection+T⋅Li,refraction\begin{align*} R &= Fresnel()\\ T &= 1 - R\\ L_{\text{o}} &= R \cdot L_{\text{i,reflection}} + T \cdot L_{\text{i,refraction}} \end{align*} อย่างไรก็ตามในการติดตามเส้นทางเราเลือกเส้นทางเดียวเท่านั้น นี่คือคำถามของฉัน: ฉันจะเลือกว่าจะสะท้อนหรือหักเหในทางที่ไม่ลำเอียงได้อย่างไร การเดาครั้งแรกของฉันคือการสุ่มเลือกตาม Fresnel aka: float p = randf(); float fresnel = Fresnel(); if (p <= fresnel) { // Reflect } else …