คุณต้องคูณด้วยเทอมโคไซน์เสมอ (ซึ่งเป็นส่วนหนึ่งของสมการเรนเดอร์) แต่เมื่อคุณทำกระจายทางอ้อมโดยใช้ ray ติดตามและบูรณาการจึง Monte-Carol (ซึ่งเป็นเทคนิคที่พบมากที่สุดในกรณีนี้) คุณจะต้องแบ่งส่วนร่วมของแต่ละตัวอย่างโดยคุณPDF นี่เป็นตัวอย่างที่ดี
โปรดทราบว่าในการอ้างอิงดังกล่าวหาก PDF มีเงื่อนไขที่คุณพบในสมการเรนเดอร์คุณสามารถเพิ่มประสิทธิภาพโค้ดได้หากต้องการโดยการยกเลิกข้อกำหนดเหล่านี้
อย่าลืมว่า BRDF ของพื้นผิวแบบกระจายคือρ / πโดยที่ρหมายถึง albedo พื้นผิว ดังนั้นเราต้องหารผลลัพธ์ด้วยπ แม้ว่าในกรณีขององค์ประกอบกระจายทางอ้อมอย่าลืมว่าเราควรแบ่งผลลัพธ์ของ castRay ด้วย PDF ของตัวแปรสุ่มซึ่งดังที่เราแสดงไว้ก่อนหน้าในบทนี้คือ 1 / (2 () การแบ่งทางอ้อมการแจกแจงโดย 1 / (2π) ผิดเหมือนกับการคูณค่านี้ด้วย2π และเนื่องจากอัลเบโดหารด้วยπเราจึงสามารถทำให้รหัสง่ายขึ้น ...
คุณมีสถานการณ์ที่คล้ายกัน หากคุณดู PDF สำหรับการสุ่มตัวอย่างโคไซน์คุณจะทราบว่าสามารถยกเลิกข้อกำหนดได้ ซึ่งไม่ได้หมายความว่าพวกเขาไม่จำเป็นอย่างยิ่ง พวกเขาเป็นพวกเขาเพียงแค่ยกเลิกซึ่งกันและกันซึ่งช่วยให้การปรับรหัสเล็กน้อย คุณอยู่ในการเพิ่มประสิทธิภาพขนาดเล็กที่นี่ ... ซึ่งอาจสร้างความสับสนหากคุณพยายามเรียนรู้ทฤษฎีโดยเพียงแค่ดูโค้ดที่ปรับให้เหมาะสม
( C o s ( θ ) . . . )PD F= ( C o s ( θ ) . . . )c o s ( θ )π= . . .