คำถามติดแท็ก pbr

2
วิธีการรวมคำศัพท์การกระจายและ specular อย่างถูกต้อง?
เท่าที่ฉันเข้าใจใน BRDF คำว่า Fresnel กำลังบอกเราถึงความน่าจะเป็นที่โฟตอนจะสะท้อนหรือหักเหเมื่อมันกระทบกับพื้นผิว โฟตอนที่สะท้อนออกมาจะมีผลกับเทอม specular ในขณะที่โฟตอนที่หักเหจะมีส่วนทำให้เกิดระยะกระจาย ดังนั้นเมื่อพิจารณาตามลักษณะทางกายภาพการมีส่วนร่วมของแสงกับสีของวัสดุฉันรู้สึกอยากจะเขียนเพียงแค่: // Assuming for example: // diffuse = dot(L, N); // specular = pow(dot(H, N), alpha) * (alpha + 2.0) / 8.0; // fresnel = f0 + (1.0 - f0) * pow(1.0 - dot(E, H), 5.0); color = lightIntensity * Lerp(diffuse * …

1
สับสนกับการใช้งาน PBR
ฉันค้นพบโลกมหัศจรรย์ของคณิตศาสตร์และฉันกำลังชนกำแพงขนาดใหญ่ที่มี PBR และตั้งชื่อดังนั้นฉันจึงมีคำถามสองสามข้อ: เท่าที่ฉันเข้าใจ BRDF จะอธิบายว่าวัสดุตอบสนองต่อแสงอย่างไร (แสงเข้าและสะท้อนโดยตรง) แต่ใน "Cook-Torrance" ฉันไม่เห็นอะไรเลยเกี่ยวกับการสะท้อนฉันไม่เข้าใจว่าฉันรวมเข้ากับมันอย่างไรฉันจึงได้รับแสงและการสะท้อนแสงแบบกระจายเท่านั้น ฉันได้อ่าน "คำกระจาย" ที่แตกต่างกันมากมายเช่น "โอเรน - นายาร์" มันเป็นส่วนหนึ่งของ Cook-Torrance เหมือน "D" ที่แตกต่างกันในผู้เสนอชื่อ DFG หรือไม่ มันจะแทนที่โดยไม่ต้องคำนวณ specular? ฉันอ่านมากเกี่ยวกับ "GGX" จากพื้นหลังศิลปินปั่นฉันคิดว่ามันเป็นสิ่งที่ทำให้ภาพสะท้อนพร่ามัว แต่ดูเหมือนว่าฉันผิดและตอนนี้ฉันพบคำศัพท์ GGX ในสถานการณ์ที่แตกต่างกันมากมายเช่นใน micro-facet ปกติ การกระจายในบทช่วยสอนนี้ คำถามสั้น ๆ ก็คือ: "Oren-Nayar" และ "GGX" และ "Cook-Torrance" เกี่ยวข้องกันอย่างไร (ถ้าเป็น) และฉันจะรวม "การสะท้อน vec3" ในอัลกอริทึมเหล่านั้นได้อย่างไร อย่างที่ฉันพูดก่อนที่ฉันจะเป็นมือใหม่ในวิชาคณิตศาสตร์ดังนั้นหากคำตอบของคุณคือ "คณิตศาสตร์หนัก" …
14 glsl  pbr 

1
วิธีการที่ยอมรับได้ของการเปลี่ยนความเงางามให้เป็นความหยาบและในทางกลับกันคืออะไร?
เครื่องมือสร้างภาพที่ทันสมัยส่วนใหญ่ใช้วัสดุที่มีคุณสมบัติทางกายภาพ เนื่องจากสิ่งนี้ไม่ได้เกิดขึ้นกับตัวเรนเดอร์บ่อยครั้งสินทรัพย์แบบดั้งเดิมมักไม่มีความหยาบ แต่เรากลับเห็นว่า "ความมัน" หรือ "พลังงานแบบ specular" เป็นพารามิเตอร์วัสดุทั่วไป ฉันเข้าใจว่าไม่มีการแปลงที่แน่ชัดระหว่างสองสิ่งนี้ แต่มีวิธีที่ใช้กฎง่ายๆ / โดยประมาณในการรับความหยาบสำหรับวัสดุที่รู้จักพลังพิเศษหรือความมันวาวหรือไม่?
12 specular  brdf  pbr 

2
ใน BRDF ที่มีพื้นฐานมาจากร่างกายเวกเตอร์ชนิดใดที่ควรใช้ในการคำนวณสัมประสิทธิ์ Fresnel?
การประมาณ Schlick ที่รู้จักกันดีของสัมประสิทธิ์ Fresnel ให้สมการ: F= F0+ ( 1 - F0) ( 1 - c o s ( θ ) )5F=F0+(1−F0)(1−cos(θ))5F=F_0+(1 - F_0)(1 - cos(\theta))^5 และเท่ากับผลคูณของจุดของเวกเตอร์ปกติผิวและมุมมองเวกเตอร์c o s ( θ )cos(θ)cos(\theta) มันยังไม่ชัดเจนสำหรับฉันแม้ว่าเราควรใช้พื้นผิวปกติหรือเวกเตอร์ครึ่งจริง ควรใช้อะไรใน BRDF ที่มีพื้นฐานทางร่างกายและทำไมHยังไม่มีข้อความNNHHH ยิ่งกว่านั้นเท่าที่ฉันเข้าใจค่าสัมประสิทธิ์ Fresnel ให้ความน่าจะเป็นของรังสีที่กำหนดเพื่อสะท้อนหรือหักเห ดังนั้นฉันจึงมีปัญหาในการดูว่าทำไมเรายังสามารถใช้สูตรนั้นใน BRDF ซึ่งควรจะประมาณค่าอินทิกรัลของซีกโลกทั้งหมด การสังเกตนี้มีแนวโน้มที่จะทำให้ฉันคิดว่านี่เป็นที่ที่จะมา แต่ฉันไม่เห็นชัดเจนว่า Fresnel ของตัวแทนปกติเทียบเท่ากับการบูรณาการ Fresnel ของบรรทัดฐานที่เกิดขึ้นจริงทั้งหมดHHH
11 brdf  pbr  integral  fresnel 

1
แสดงผลในหน่วย radiometric หรือ photometric?
ในการเรนเดอร์แบบดั้งเดิมมันเป็นเรื่องปกติที่จะทำการคำนวณทั้งหมดด้วยหน่วยคลื่นวิทยุไม่ว่าจะเป็นการเรนเดอร์สเปกตรัมแบบเต็มหรือองค์ประกอบที่ชาญฉลาด (XYZ, RGB, ฯลฯ ) อย่างไรก็ตามในขณะที่การเรนเดอร์ที่ทันสมัยเพิ่มแบบจำลองทางกายภาพมากขึ้นจึงสะดวกสำหรับศิลปินที่จะสามารถระบุค่าในหน่วยวัดแสงที่คุ้นเคยมากขึ้นเช่นความเข้มของแสงเป็นลูเมน ในการเก็บรักษาท่อทั้งหมดในหน่วยประเภทเดียวคุณสามารถทำอย่างใดอย่างหนึ่งต่อไปนี้: แปลงหน่วยวัดความเข้มแสงเป็นหน่วยวัดความเข้มแสงโดยใช้ประสิทธิภาพการส่องสว่าง เก็บไปป์ไลน์การเรนเดอร์ทั้งหมดในหน่วยวัดแสง Sébastian Lagarde นำเสนอความคิดนี้เป็นอย่างดีในบันทึกหลักสูตรของการนำเสนอ Siggraph 2014 การนำเสนอการย้าย Frostbite ไปยัง PBR คำถามของฉันคือคำถามเหล่านี้: มีข้อเสียใด ๆ ในการเรนเดอร์เฉพาะในหน่วยวัดความเข้มแสงหรือไม่? เท่าที่ฉันสามารถบอกได้หน่วยวัดความเข้มแสงเป็นเพียงหน่วยความเข้มแสงที่มีความลำเอียงต่อสายตามนุษย์ เมื่อพิจารณาว่าเราจะดูภาพสุดท้ายด้วยตาของฉันฉันไม่เห็นว่าเป็นปัญหา Frostbite เป็นเครื่องมือที่ชาญฉลาดสำหรับส่วนประกอบ RGB Spectre renderer จะมีข้อเสียเพิ่มเติมใด ๆ โดยการเรนเดอร์เฉพาะในหน่วยวัดแสงหรือไม่?

3
ภาพ HDR แบบ 16 บิตครึ่งลอยเป็นพื้นผิว (กระจาย / อัลเบโด้)?
ดังนั้นฉันจึงคิดถึงเรื่องนี้ซักพักหนึ่งแล้วลอง google เพื่อหาคำตอบ แต่ก็ไม่ประสบความสำเร็จ หากพื้นผิวทั้งหมดของคุณเป็นภาพ 8 บิต LDR เช่น JPEG ไม่สามารถทำให้เกิดความขัดแย้งกับการควบคุมการเปิดรับแสง / การทำแผนที่โทนเมื่อแสดงผล นั่นคือถ้าคุณปรับการแสดงผลการรับแสงของภาพของคุณที่ควรเปิดเผยรายละเอียดในพื้นผิวที่ไม่ได้มีจริงเพราะพวกเขาถูกยึดโดยช่วงไดนามิกต่ำ ดังนั้นจึงไม่มีเหตุผลที่จะมีพื้นผิวเป็นภาพ HDR ที่บันทึกเป็น. exr ในพื้นที่สีเชิงเส้นด้วย 16 บิตครึ่งลอยเพื่อให้ได้สีที่ดี (32 บิต "เต็ม" ลอยอาจเกินหรือไม่) เพื่อให้มีรายละเอียดและค่าสีที่ถูกต้องฉันอาจคิดว่ามีผลกระทบต่อ GI และคำนวณการตกเลือดของสีอย่างไร หรือมันไม่จำเป็นเพียงเพราะผลลัพธ์สุดท้ายของการเรนเดอร์ที่เราต้องการนั้นอาจจะคล้ายกับระดับการเปิดรับแสงของพื้นผิวเมื่อถ่ายภาพด้วยวิธีใด? และเนื่องจากกล้องส่วนใหญ่ถ่ายภาพที่ 12-14 บิตคุณจะต้องใช้การเปิดรับแสงหลาย ๆ พื้นผิวและทำงานพิเศษทั้งหมดเพื่อรวมเข้าด้วยกันเป็นหนึ่ง HDRI แก้ไข: เพื่อความกระจ่างฉันส่วนใหญ่สนใจในเรื่องนี้จากมุมมองการเรนเดอร์ภาพถ่ายจริงด้วยเรย์เรนเดอร์เรกเกอร์ (เช่นจิตเรย์, วีเรย์, อาร์โนลด์ ฯลฯ ) ด้วยการจำลองแสงเต็มรูปแบบ เอ็นจินเกมแบบเรียลไทม์

1
รูปแบบที่ถูกต้องของคำศัพท์เรขาคณิต GGX
ฉันกำลังพยายามนำ BRDF ของ microfacet ไปใช้ใน raytracer ของฉัน แต่ฉันพบปัญหาบางอย่าง เอกสารและบทความจำนวนมากที่ฉันได้อ่านให้นิยามคำเรขาคณิตบางส่วนเป็นฟังก์ชันของมุมมองและเวกเตอร์ครึ่งหนึ่ง: G1 (v, h) อย่างไรก็ตามเมื่อใช้งานนี้ฉันได้รับผลลัพธ์ดังต่อไปนี้: (แถวล่างเป็นฉนวนความหยาบ 1.0 - 0.0, แถวบนสุดเป็นโลหะที่มีความหยาบ 1.0 - 0.0) มีไฮไลท์แปลก ๆ อยู่รอบ ๆ ขอบและตัดรอบ ๆ nl == 0 ฉันไม่สามารถเข้าใจได้ว่ามันมาจากไหน ฉันใช้ Unity เป็นข้อมูลอ้างอิงในการตรวจสอบการแสดงผลของฉันดังนั้นฉันจึงตรวจสอบแหล่งที่มาของ shader เพื่อดูว่าพวกเขาใช้อะไรและจากสิ่งที่ฉันสามารถบอกได้ว่าเทอมเรขาคณิตของพวกเขานั้นไม่ได้ถูกพาราเมท ดังนั้นฉันจึงลองใช้รหัสเดียวกัน แต่ใช้กับพื้นผิวมาโครปกติแทนที่จะเป็นครึ่งเวคเตอร์และได้ผลลัพธ์ดังนี้ สำหรับดวงตาที่ไม่ผ่านการฝึกฝนของฉันสิ่งนี้ดูเหมือนจะใกล้เคียงกับผลลัพธ์ที่ต้องการ แต่ฉันมีความรู้สึกว่ามันไม่ถูกต้อง? บทความที่ฉันอ่านส่วนใหญ่ใช้เวกเตอร์ครึ่งตัว แต่ไม่ใช่ทั้งหมด มีเหตุผลสำหรับความแตกต่างนี้หรือไม่? ฉันใช้รหัสต่อไปนี้เป็นคำเรขาคณิตของฉัน: float RayTracer::GeometryGGX(const Vector3& v, const Vector3& …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.