คอมพิวเตอร์กราฟฟิค

ถาม - ตอบสำหรับนักวิจัยคอมพิวเตอร์กราฟิกและโปรแกรมเมอร์

2
Fresnel reflectance ทองคำช่องสีแดงมากกว่า 1?
ฉันพยายามที่จะเข้าใจหลักการทางกายภาพบางอย่างที่อยู่เบื้องหลังแสงและการโต้ตอบกับวัตถุเมื่อเร็ว ๆ นี้ ในการพูดคุยเรื่องฟิสิกส์และคณิตศาสตร์เรื่องแรเงา Naty Hoffman อธิบายการสะท้อนของ Fresnel และกำหนดสีที่เป็นลักษณะเฉพาะของF 0ของวัสดุในการสะท้อนของ Fresnel ที่มุมของแสงที่ตกกระทบ 0 ° บนสไลด์ 65 ทองคำF 0ได้รับเป็น1.022, 0.782, 0.344 (เชิงเส้น) Hoffman เพิ่ม: ค่าช่องสีแดงมากกว่า 1 (อยู่นอกช่วง sRGB) ทั้งหมดนี้ไม่สมเหตุสมผลกับฉันมากเกินไป คุ้มค่ามากขึ้นกว่า 1 จะหมายถึงว่าในช่วงความยาวคลื่นที่เอื้อต่อการที่ช่องสีแดง, พลังงานมากขึ้นสะท้อนให้เห็นกว่าจะได้รับ สิ่งนี้เกิดขึ้นจริงและถ้าเป็นเช่นนั้นอย่างไรและทำไม? นอกจากนี้นี่คือเส้นโค้งการสะท้อนแสงจากWikipediaสำหรับวัสดุบางอย่างรวมถึงทองคำ (Au) ส่วนโค้งนั้นสูงสำหรับความยาวคลื่นสีแดงประมาณ 600nm แต่ดูเหมือนจะไม่เกิน 100%
13 physics  brdf 

1
เหตุใดจึงต้องการประสิทธิภาพการทำงานในการเขียนโปรแกรม GPU?
ฉันได้อ่านบทความต่อไปนี้เกี่ยวกับวิธีการสแกนแบบขนานใน CUDA: https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch39.html ในบทความมีความสำคัญในการทำให้การสแกน "ทำงานมีประสิทธิภาพ" กล่าวอีกนัยหนึ่งอัลกอริทึม GPU ไม่ควรทำการเพิ่มเติมนอกเหนือจากอัลกอริทึมของ CPU, O (n) ผู้แต่งนำเสนออัลกอริทึมสองอันหนึ่ง "ไร้เดียงสา" ที่เพิ่ม O (nlogn) และอีกหนึ่งพวกเขาคิดว่า "มีประสิทธิภาพในการทำงาน" อย่างไรก็ตามอัลกอริทึมที่มีประสิทธิภาพในการทำงานทำซ้ำสองเท่าของลูป จากความเข้าใจของฉัน GPUs เป็นเพียงโปรเซสเซอร์ SIMD ขนาดใหญ่และควรทำงานในขั้นตอนล็อค การวนซ้ำหลายครั้งในอัลกอริทึม "ประสิทธิภาพในการทำงาน" ดูเหมือนจะบอกเป็นนัยว่าเธรดจำนวนมากจะไม่ได้ทำงานและลดประสิทธิภาพในระยะยาว ฉันกำลังคิดถึงอะไร

2
วิธีการสร้างแบบจำลองวัตถุประสงค์เลนส์ / กล้องที่เหมาะสมสำหรับการติดตามเส้นทาง?
ฉันได้เขียนเส้นทางตามรอยเล็ก ๆ หลังจากเรียนรู้และทดลองกับเจ้าตัวเล็ก สิ่งเดียวที่ฉันไม่ได้เขียน (และเข้าใจ) ตัวฉันเองก็คือวิธีการคำนวณและยิงรังสีเริ่มต้นจากกล้อง ฉันได้รับหลักการที่ถูกต้อง แต่ฉันกำลังมองหาแหล่งข้อมูลที่อธิบายวิธีการ: คำนวณทิศทางเริ่มต้นของรังสี สร้างแบบจำลองเลนส์จริง (ตรงข้ามกับกล้องรูเข็ม) คาดว่าจะมีเอฟเฟกต์เช่นระยะชัดลึกหรือไม่ ไม่จำเป็นต้องใช้คณิตศาสตร์และฟิสิกส์อันทันสมัย ​​แต่ตกลงหากอธิบายอย่างละเอียด


3
ไม่ใช่ Raytracing ตามเวลาจริง
ฉันเล่นกับ raytracing แบบเรียลไทม์ (และ raymarching ฯลฯ ) ไม่น้อย แต่ไม่ได้ใช้เวลามากในการถ่ายทำแบบเรียลไทม์สำหรับภาพที่มีคุณภาพสูงขึ้นหรือสำหรับวิดีโอที่แสดงล่วงหน้าและสิ่งที่คล้ายกัน ฉันรู้เทคนิคทั่วไปหนึ่งอย่างในการปรับปรุงคุณภาพของภาพในกรณีที่ไม่ใช่แบบเรียลไทม์คือการฉายรังสีมากขึ้นต่อพิกเซลและให้ผลลัพธ์โดยเฉลี่ย มีเทคนิคอื่นใดบ้างที่โดดเด่นในเรื่องวิธีการที่ดีในการปรับปรุงคุณภาพของภาพในกรณีที่ไม่ใช่แบบเรียลไทม์มากกว่าปกติที่คุณทำในแบบเรียลไทม์?

4
ควรใช้ quaternions เพื่อแสดงการหมุนและการปรับสเกลใน 3D เมื่อใด
Quaternions (การขยายสี่มิติของจำนวนเชิงซ้อน) สามารถใช้เพื่อแสดงการหมุนและการปรับขนาดของเวกเตอร์ 3 มิติและการประยุกต์ใช้ quaternion บนเวกเตอร์ 3 มิติเกี่ยวข้องกับการคูณสองสี่ quaternion ดังนั้นจึงต้องดำเนินการน้อยกว่าการคูณ อย่างไรก็ตามเมทริกซ์การแปลงเชิงเส้นและเลียนแบบมักใช้แทนโดยเฉพาะในโค้ด shader เมื่อใดจึงเหมาะสมและเป็นที่นิยม (เนื่องจากความเร็วความเสถียร ฯลฯ ) เพื่อใช้ quaternion เพื่อแสดงการปรับขนาดและการหมุนในสามมิติแทนที่จะเป็นเมทริกซ์การแปลงที่สอดคล้องกัน?

3
“ Scanline Racing” คืออะไร
ฉันได้ยินผู้คนจำนวนมากที่ทำงานเกี่ยวกับ VR พูดคุยเกี่ยวกับการแข่งรถสแกนไลน์และมันควรจะช่วยปรับปรุงเวลาแฝงสำหรับการเคลื่อนไหวในโฟตอน อย่างไรก็ตามมันยังไม่ชัดเจนสำหรับฉันว่าจะสามารถทำสิ่งนี้กับ OpenGL ได้อย่างไร มีคนอธิบายได้ไหมว่าการแข่งรถสแกนไลน์ทำงานอย่างไรและสามารถนำไปใช้กับ GPU สมัยใหม่ได้อย่างไร

4
Anti Aliasing ถูกนำไปใช้ในการติดตาม Ray อย่างไร
หลังจากที่ได้อ่านบทความไม่กี่ออนไลน์ผมมั่นใจได้ว่าผม clueless เกี่ยวกับวิธีการทำงานป้องกันนามแฝงเมื่อใช้ Ray Tracing ทั้งหมดที่ฉันเข้าใจว่าโสดพิกเซล / เรย์ถูกแบ่งออกเป็น 4 ย่อยพิกเซลและ 4 รังสีมากกว่า 1 มีใครช่วยอธิบายวิธีการนี้ให้สำเร็จ (ควรมีรหัส)?


1
ทำไมมันแพงเป็นสองเท่าในการสร้างฟังก์ชั่นเสียงรบกวนที่สามารถปูกระเบื้องได้?
ฉันเคยเห็นในหลาย ๆ ที่ที่ทำเสียงรบกวน Perlin ต่อเนื่องต้องใช้การคำนวณสองครั้งในวิธีที่แตกต่างกันเล็กน้อยและรวมผลลัพธ์ทั้งสอง คำถามที่พบบ่อยเกี่ยวกับคณิตศาสตร์เรื่องเสียงรบกวน Perlin นี้มีสูตร: Floop(x,y,z)=(t−z)⋅F(x,y,z)+z⋅F(x,y,z−t)tFloop(x,y,z)=(t−z)⋅F(x,y,z)+z⋅F(x,y,z−t)tF_{loop}(x, y, z) = \frac{ (t - z) \cdot F(x, y, z) + z \cdot F(x, y, z - t) }{ t} เพื่อทำให้ฟังก์ชั่นสัญญาณรบกวนวนซ้ำในทิศทางนอกจากนี้ยังกล่าวถึงการขยายสิ่งนี้การวนซ้ำใน 2 มิติจะใช้การประเมิน 4 ครั้งและการวนซ้ำใน 3 มิติจะใช้การประเมิน 8 ครั้งFFFzzzFFFFFF ฉันเข้าใจว่าสิ่งนี้ให้การเชื่อมต่อที่ราบรื่นระหว่างกระเบื้องที่ไม่เพียง แต่ต่อเนื่อง แต่สามารถสร้างความแตกต่างได้อย่างต่อเนื่อง แต่ฉันคาดหวังอย่างสังหรณ์ใจว่าจะเป็นเช่นไรหากฟังก์ชั่นเสียงรบกวนถูกประเมินเพียงครั้งเดียว หากฟังก์ชั่นเสียงรบกวนนั้นขึ้นอยู่กับจุดกริดที่อยู่รอบ ๆ เท่านั้น (4 สำหรับเสียง 2 มิติ, …
13 algorithm  noise 

3
อะไรอธิบายถึงความสูงของโลหะ?
จากความเข้าใจของฉันสี specular มักจะหมายถึงปริมาณของแสงที่สะท้อนเมื่อพื้นผิวที่เป็นจุดที่อุบัติการณ์ปกติและตั้งข้อสังเกตหรือR_0ยิ่งไปกว่านั้นสำหรับวัสดุที่ไม่ใช่โลหะค่านี้คำนวณจากดัชนีหักเหของวัสดุด้วยสูตรที่หักจากสมการ Fresnel (ซึ่ง 1 คือดัชนีการหักเหของอากาศหรือโมฆะ): F0F0F_0R0R0R_0nnnF0=(n−1)2(n+1)2F0=(n−1)2(n+1)2F_0 = \frac{(n - 1)^2}{(n + 1)^2} จากรายการดัชนีหักเหในวิกิพีเดีย : วัสดุที่เป็นของแข็งมักจะมีระหว่าง 1.46 ( ควอตซ์ผสม ) และ 2.69 ( Moissanite ) นั่นหมายถึงค่าระหว่าง 0.03 ถึง 0.21nnnF0F0F_0 โดยปกติของเหลวจะมีระหว่าง 1.33 (น้ำ) และ 1.63 ( คาร์บอนไดซัลไฟด์ ) นั่นหมายถึงระหว่าง 0.02 ถึง 0.057 ถ้าฉันไม่ผิดnnnF0F0F_0 โดยทั่วไปแล้วก๊าซจะมีดังนั้นฉันคิดว่าเราสามารถสันนิษฐานได้ว่าเป็น0n≈1n≈1n \approx 1F0F0F_0 ค่าทั้งหมดเหล่านี้ต่ำมาก แม้กระทั่งผลึกที่มีดัชนีการหักเหของแสงสูงเช่นเพชร ( ) …

1
เมื่อใดจึงจะปิดใช้งานการแก้ไขมุมมองที่ถูกต้อง (ไม่มีตัวเลือก)
ใน GLSL มุมมองการแก้ไขที่ถูกต้องของยอดแอตทริบิวต์เป็นค่าเริ่มต้น - หนึ่งสามารถปิดการใช้งานที่เฉพาะเจาะจงสำหรับจุดสุดยอดแอตทริบิวต์โดยใช้noperspectiveรอบคัดเลือก นอกเหนือจากการใช้โพสต์โปรเซสซิ่งฉันไม่เคยเห็นมุมมองการแก้ไขที่ถูกต้องถูกปิดใช้งาน - มีกรณีการใช้งานอื่นอีกหรือไม่? นอกจากนี้มันยังสร้างความแตกต่างให้เกิดประสิทธิภาพ

2
ทำไมกราฟิกพูดถึง“ dielectrics” มากกว่าฉนวน?
ตัวอย่างเช่นเอกสารของ Filament ที่https://google.github.io/filament/Filament.md.htmlใช้คำว่า "dielectrics" เมื่อเปรียบเทียบกับตัวนำที่ไม่เป็นตัวนำกับตัวนำซึ่งเรียกว่า "metallics" และที่นี่ใน stackexchange, /computergraphics//search?page=2&tab=Relevance&q=dielectricยังผลิตเพลงฮิตจำนวนมากสำหรับ "dielectric" ฉันมักจะคาดหวังคำว่า "ฉนวน" ในกรณีเหล่านี้ "ไดอิเล็กตริก" เกิดขึ้นจากแหล่งประวัติศาสตร์บางแห่งหรือเป็นคำที่ถูกต้องที่จะใช้หรือไม่
12 material 

1
Path tracer - วัสดุหลายชั้นและการสุ่มตัวอย่างที่สำคัญ
ขณะนี้ฉันกำลังพยายามใช้ตัวติดตามเส้นทาง Monte Carlo ฉันได้ทำการวิจัยมาแล้วและดูเหมือนว่าวิธีการทั่วไปสำหรับวัสดุคือการใช้แบบจำลองแบบเลเยอร์ บางสิ่งเช่นนี้ เมื่อแสงกระทบกับพื้นผิว Fresnel จะบอกเราว่าแสงนั้นสะท้อนออกมาในชั้นแรกมากแค่ไหนและไปที่ชั้นที่สองเท่าใด ดังนั้นฉันจึงทำสิ่งที่คล้ายกัน แต่ง่ายกว่า: เพียงชั้นเดียวของ specular และชั้นหนึ่งของการกระจาย ยังไม่มีการส่งผ่าน จนถึงตอนนี้ฉันใช้brdf ที่มีน้ำหนักแบบโคไซน์เพื่อการกระจายของฉันและแบบจำลองขนาดเล็กของ Cook-Torrance สำหรับ specular ของฉัน ตอนนี้ส่วนที่ยากมา: ฉันควรทำอย่างไรเมื่อรังสีกระทบพื้นผิว? โดยปกติฉันจะเลือก brdf ที่สอดคล้องกับวัสดุพื้นผิวตัวอย่างทิศทางแสงตกกระทบประเมิน brdf และหารด้วยฟังก์ชันการแจกแจงความน่าจะเป็นที่ถูกต้อง แต่ที่นี่การตีพื้นผิวนั้นสอดคล้องกับวัสดุหลากหลาย วิธีที่ไร้เดียงสาในการจัดการสิ่งนี้คือการสุ่มตัวอย่างหนึ่งครั้งสำหรับการโจมตีแต่ละเลเยอร์ แต่สิ่งนี้ชัดเจนว่าเป็นแหล่งที่มาของการแสดงที่ยิ่งใหญ่ทำให้เส้นทางของฉันกลายเป็นต้นไม้ได้อย่างมีประสิทธิภาพ มีวิธีแก้ปัญหาที่ดีกว่านี้ไหม?

2
อะไรคือเหตุผลพื้นฐานในการต่อต้าน aliasing โดยใช้ตัวอย่างสุ่มจำนวนมากภายในพิกเซล
ในกราฟิกมันเป็นเรื่องธรรมดาที่จะเก็บตัวอย่างหลาย ๆ อันภายในขอบเขตของพิกเซลและรวมเข้าด้วยกัน (โดยทั่วไปแล้วจะทำการเฉลี่ย) สำหรับสีพิกเซลตัวอย่างสุดท้าย นี่เป็นผลของการต่อต้าน aliasing ภาพ ในแง่หนึ่งสิ่งนี้สมเหตุสมผลสำหรับฉันเพราะสิ่งที่คุณกำลังทำอย่างมีประสิทธิภาพคือการรวมสีของพิกเซลเหนือพื้นที่ที่พิกเซลแสดง ในแนวความคิดนี้การสุ่มตัวอย่างเฉลี่ย "สุ่ม" น่าจะเป็นการตั้งค่าที่เหมาะสำหรับการรวมกันของ monte carlo ("สุ่ม" อาจแบ่งเป็นชั้นเสียงตามสีน้ำเงินลำดับความคลาดเคลื่อนต่ำเป็นต้น) ในทางกลับกันสิ่งนี้รู้สึกผิด (หรืออย่างน้อยก็ไม่ถูกต้องเท่าที่ควร) จากมุมมองการประมวลผลสัญญาณดิจิตอล จากมุมมองดังกล่าวรู้สึกว่าเราได้รับตัวอย่างจำนวนมากจากนั้นลดขนาดตัวอย่างลงโดยใช้ตัวกรองกล่อง (เบลอกล่อง) เพื่อรับค่าพิกเซลสุดท้าย ในแง่นี้ดูเหมือนว่าสิ่งที่ดีที่สุดที่ควรทำคือใช้การกรองแบบ sinc แทนที่จะใช้ค่าเฉลี่ยตัวอย่าง ฉันเห็นว่าตัวกรองกล่องเป็นค่าประมาณที่ถูกกว่าในการคิดตามเส้นเหล่านี้ นี่ทำให้ฉันสับสนเล็กน้อย แนวคิดหลักที่เรากำลังรวมพื้นที่พิกเซลและค่าเฉลี่ยถูกต้องหรือไม่? หรือว่าเราเป็นกลุ่มตัวอย่างและควรใช้ sinc แต่ใช้ตัวกรองแบบกล่องเพราะรวดเร็ว หรือเป็นอย่างอื่นอย่างสิ้นเชิง? เกี่ยวข้องกับเล็กน้อย: การลบรอยหยัก / การกรองในการติดตามเรย์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.