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

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

3
สถานะของศิลปะใน LOD ทางเรขาคณิตในเกมคืออะไร
เกมสมัยใหม่ทำรายละเอียดระดับเรขาคณิตของวัตถุตาข่ายเช่นตัวละครภูมิประเทศและใบไม้ได้อย่างไร คำถามของฉันมีสองส่วน: ท่อส่งทรัพย์สินมีลักษณะอย่างไร ศิลปินสร้างแบบจำลองแบบโพลีสูงซึ่งจะถูกทำลายในภายหลังหรือไม่? ถ้าเป็นเช่นนั้นอัลกอริธึมการทำลายล้างใดที่ได้รับความนิยมมากที่สุด บางครั้ง LOD ทำตาข่ายด้วยมือหรือไม่? เอ็นจิ้นเปลี่ยนระหว่าง LOD ของวัตถุต่าง ๆ ในเวลาทำงานอย่างไร มีการเปลี่ยนแปลงที่ราบรื่นหรือมีความก้าวหน้า? คำตอบอาจเป็น "สตูดิโอต่าง ๆ ใช้เทคนิคต่างกัน" ถ้าเป็นเช่นนั้นโปรดระบุแนวทางปฏิบัติทั่วไปบางอย่าง มันจะเป็นการดีถ้าคุณสามารถชี้ให้ฉันเห็นเอกสาร / สไลด์ที่ครอบคลุมตัวอย่างเฉพาะ
15 geometry 

1
ระดับ mipmap คำนวณได้อย่างไรในโลหะ?
คำถามของฉันเกี่ยวกับโลหะโดยเฉพาะเนื่องจากฉันไม่รู้ว่าคำตอบจะเปลี่ยนไปสำหรับ API อื่นหรือไม่ สิ่งที่ฉันเชื่อว่าฉันเข้าใจคือ: พื้นผิวแบบ mipmapped ได้ทำการ "ระดับรายละเอียด" ไว้ล่วงหน้าซึ่งรายละเอียดระดับล่างถูกสร้างขึ้นโดยการสุ่มตัวอย่างพื้นผิวดั้งเดิมด้วยวิธีที่มีความหมายบางอย่าง ระดับ Mipmap ถูกอ้างถึงในรายละเอียดจากมากไปน้อยโดยที่ระดับ0คือพื้นผิวดั้งเดิมและระดับที่สูงกว่าเป็นการลดกำลังของสองระดับ GPU ส่วนใหญ่ใช้การกรอง trilinear ซึ่งเลือกสองระดับ mipmap ข้างเคียงสำหรับแต่ละตัวอย่างตัวอย่างจากแต่ละระดับโดยใช้การกรอง bilinear และจากนั้นผสมตัวอย่างเหล่านั้นเป็นเส้นตรง สิ่งที่ฉันไม่ค่อยเข้าใจคือเลือกระดับ mipmap เหล่านี้อย่างไร ในเอกสารสำหรับห้องสมุดมาตรฐานโลหะฉันเห็นว่าสามารถเก็บตัวอย่างได้โดยมีหรือไม่มีการระบุอินสแตนซ์ของlod_optionsประเภท ฉันสมมติว่าอาร์กิวเมนต์นี้เปลี่ยนวิธีการเลือกระดับ mipmap และดูเหมือนว่ามีlod_optionsพื้นผิวแบบ 2D สามแบบ: bias(float value) level(float lod) gradient2d(float2 dPdx, float2 dPdy) น่าเสียดายที่เอกสารไม่ได้อธิบายว่าตัวเลือกเหล่านี้มีอะไรบ้าง ฉันสามารถเดาได้ว่าbias()อคติบางระดับที่เลือกโดยอัตโนมัติ แต่แล้วความลำเอียงvalueหมายถึงอะไร มันใช้งานได้ในระดับใด? ในทำนองเดียวกันว่าเป็นlodของlevel()การแปลเป็นระดับมิพแมพที่ไม่ต่อเนื่อง? และการทำงานภายใต้สมมติฐานที่gradient2d()ใช้การไล่ระดับสีของพิกัดพื้นผิวการใช้การไล่ระดับสีนั้นเพื่อเลือกระดับ mipmap เป็นอย่างไร ที่สำคัญกว่านั้นถ้าฉันไม่ใช้lod_optionsระดับ mipmap จะถูกเลือกอย่างไร สิ่งนี้แตกต่างกันไปตามประเภทของฟังก์ชั่นที่ใช้งานหรือไม่ และหากการดำเนินการที่ไม่ได้ระบุตัวเลือกเริ่มต้นของsample()ฟังก์ชั่นนี้คือการทำบางสิ่งเช่นgradient2D()(อย่างน้อยก็ใน …

1
รับความยาวเวคเตอร์ด้วย GLM
ฉันค่อนข้างสับสนเกี่ยวกับวิธีการทำงานของไลบรารี GLM หรือฉันใช้งานไม่ถูกต้อง glm::vec2 testVec(6,-4); float len = testVec.length(); ฉันได้รับความคุ้มค่า2จากข้อมูลโค้ดข้างต้น testVecฉันเชื่อว่าฉันกำลังพยายามที่จะได้รับความยาวของเวกเตอร์ที่กำหนดโดย คุณรู้ดีว่ามันไม่ใช่ความยาวที่ถูกต้องของเวกเตอร์ ฉันหายไปนี่อะไร
14 c++  vectors  glm 

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

1
ทำไม GPU ถึงมีแรสเตอร์ไรเซอร์?
แม้จะมีความก้าวหน้าของ GPU สมัยใหม่ แต่ก็ยังคงมี rasterizers อยู่ ปรับแต่งได้สูงพร้อมตัวตั้งโปรแกรม แต่ก็ยังไม่สามารถตั้งโปรแกรมได้อย่างเต็มที่ ทำไมถึงเป็นอย่างนั้น? ทำไม GPU ถึงไม่สามารถเป็นอุปกรณ์คู่ขนานขนาดใหญ่ที่มีหน่วยประมวลผลแบบสากลที่แรสเตอร์เซอร์เป็นเพียงซอฟต์แวร์สำหรับอุปกรณ์ดังกล่าวที่ให้บริการโดยผู้ใช้ การมีฮาร์ดแวร์ของฟังก์ชั่นแบบตายตัวเป็นประโยชน์ต่อการทำงานอย่างชาญฉลาดหรือไม่
14 gpu  rasterizer 

2
ความแตกต่างระหว่างเส้นโค้งการเติมช่องว่างต่าง ๆ คืออะไร?
เส้นโค้งการเติมพื้นที่มีความสำคัญในแอปพลิเคชั่นกราฟิกจำนวนมากเพราะมันช่วยให้เห็นตำแหน่งเชิงพื้นที่ เรามักจะได้ยินเกี่ยวกับอัลกอริทึมที่แตกต่างกันโดยใช้ Z-curves, รหัสมอร์ตัน, Hilbert curves ฯลฯ อะไรคือความแตกต่างระหว่างบางส่วนของเส้นโค้งที่แตกต่างกันเหล่านี้และวิธีนำไปใช้กับแอปพลิเคชันต่างๆ

2
โดยทั่วไปแล้วการกรองแบบแอนไอโซทรอปิกจะนำไปใช้กับ GPU สมัยใหม่ได้อย่างไร?
การกรอง Anisotropic "รักษาความคมชัดของพื้นผิวที่สูญเสียไปตามปกติโดยความพยายามในการหลีกเลี่ยงการใช้นามแฝงของพื้นผิวแผนที่ MIP" บทความ Wikipedia ให้คำแนะนำเกี่ยวกับวิธีการนำไปใช้ ("ตรวจสอบพื้นผิว (... ) สำหรับการวางแนวของ Anisotropy") แต่มันไม่ได้อ่านอย่างชัดเจนสำหรับฉัน ดูเหมือนจะมีการใช้งานที่หลากหลายตามที่แนะนำโดยการทดสอบที่แสดงในบันทึกของงานนำเสนอแบบจำลองโดยประมาณสำหรับการแสดงผลตามร่างกาย : การคำนวณที่เป็นรูปธรรมดำเนินการโดย GPU (สมัยใหม่) ในการเลือกระดับ MIP ที่ถูกต้องเมื่อใช้ตัวกรอง anisotropic คืออะไร

1
เสียงรบกวนจากกริดเป็นเรื่องที่หลีกเลี่ยงไม่ได้ไหม?
ฉันสนใจที่จะใช้สิ่งนี้กับมิติที่สูงขึ้นเช่นกัน แต่สำหรับคำถามนี้ฉันจะเน้นเฉพาะที่กริด 2D เท่านั้น ฉันรู้ว่าเสียงเพอร์ลินไม่ได้เป็นแบบ isotropic (ทิศทางไม่แปรเปลี่ยน) และตารางกริดพื้นฐานแสดงขึ้นมามากพอที่จะระบุทิศทางได้ เสียงรบกวนจากซิมเพลคือการปรับปรุงในเรื่องนี้ แต่ตารางสามเหลี่ยมด้านเท่ากันของมันยังไม่ถูกบดบังอย่างสมบูรณ์ สัญชาตญาณของฉันคือความพยายามใด ๆ ที่ส่งเสียงของความถี่เฉพาะบนกริดจะส่งผลให้ความถี่ต่ำลงในทิศทางที่ไม่จัดแนวกับกริด ดังนั้นในขณะที่ความพยายามสามารถปลอมตัวได้เสียงดังกล่าวไม่สามารถที่จะเป็น isotropic ได้เว้นแต่ว่ามันจะถูกสร้างขึ้นโดยไม่มีการอ้างอิงกับกริดทำให้ความถี่เฉลี่ยนั้นเหมือนกันในทุกทิศทาง ยกตัวอย่างเช่นกับตารางสี่เหลี่ยมโดยไม่มีเสียงรบกวนด้วยความยาวด้านสี่เหลี่ยมความถี่ของจุดยอดแนวนอนหรือแนวตั้งคือในขณะที่ความถี่ของจุดยอดที่ 45 องศา (ผ่านมุมตรงข้ามของสี่เหลี่ยม) คือn}nnn1n1n\frac1n12√n12n\frac1{\sqrt{2}n} มีการกระจายแบบสุ่มที่สามารถนำมาใช้เพื่อชดเชยตำแหน่งจุดสุดยอดที่จะทำให้ความถี่กลายเป็นเหมือนกันในทุกทิศทางหรือไม่? ความสงสัยของฉันคือว่าไม่มีการแจกจ่ายดังกล่าว แต่ฉันไม่มีวิธีพิสูจน์ด้วยวิธีใดวิธีหนึ่ง ในระยะสั้นมีวิธีการทำเสียงกริดที่สมบูรณ์แบบของความถี่ที่กำหนดหรือฉันควรจะมุ่งเน้นไปที่วิธีการอื่น ๆ (เสียงที่ไม่ใช่กริดตามหรือวิธีการปลอมตัวสิ่งประดิษฐ์)?
14 noise  grid 

1
เงื่อนไขคงที่มีราคาแพงกว่าการเปลี่ยนเครื่องแต่ง
โดยทั่วไปแล้วการแตกแขนงในร่มเงาไม่ใช่ความคิดที่ดี แต่ตอนนี้ฉันมี shader ที่มีเงื่อนไขที่คงที่เกี่ยวกับการเรียกการดึงทั้งหมด ดังนั้นสาขาที่ดำเนินการจะเป็นแบบเดียวกันเสมอสำหรับการโทรแบบดึงครั้งเดียว การแตกแขนงแบบนี้ยังมีค่าใช้จ่ายสูงกว่าการมีหลายเฉดสีที่ไม่มีกิ่งเหล่านี้และสลับไปมาระหว่างกันหรือไม่?

1
ต้องการแหล่งที่เชื่อถือได้สำหรับสูตรสำหรับรูปร่างของขอบฟ้าของโลก
สิ่งที่ฉันขอ ฉันเน้นว่าฉันไม่ได้ขอสูตร --- ฉันรู้สูตรและวิธีการหามา มีการทำซ้ำหลายเวอร์ชันใกล้ถึงจุดสิ้นสุดของโพสต์ ในความเป็นจริงคนอื่นได้ไม่เพียง แต่ได้รับมาเป็นอย่างดี แต่ยังนำเสนออย่างหนึ่งในการพิสูจน์ที่นี่ สิ่งที่ฉันต้องการคือแหล่งที่มีชื่อเสียงสำหรับสูตรเพื่อยกตัวอย่างเช่นเราสามารถใส่ไว้ใน Wikipedia ได้โดยไม่ละเมิดการรายงานงานวิจัยต้นฉบับ [ผู้คนลองใช้จริง ... แต่บทความที่เกี่ยวข้องมีผู้แก้ไขที่พิถีพิถันมากซึ่งลบหัวข้อนี้เนื่องจากเป็นการวิจัยดั้งเดิม ... และโชคไม่ดีที่ผู้แก้ไขนั้นถูกต้องดังนั้นจึงไม่มีความพยายามมากนัก เพื่อต่อสู้] เหตุผลที่ฉันโพสต์ในการแลกเปลี่ยนกราฟิกคอมพิวเตอร์ เนื่องจากบางคนที่นี่อาจเป็นแบบอย่างที่โลกมองรูปแบบวงโคจรบางทีเขาหรือเธออาจรู้ว่าสูตรนี้ (หรือน่าจะเป็นลักษณะทั่วไปของมัน) ถูกตีพิมพ์ในหนังสือบางเล่มหรือวารสารหรือการประชุมทางวิชาการหรือบันทึกในชั้นเรียน ฯลฯ ฉันได้ทำ "ครบกำหนด googling" โปรดเข้าใจว่าฉันไม่ได้ขอให้ใครค้นหาคำตอบในนามของฉัน ฉันได้ทำจำนวนมากของ googling แล้วและกำลังเพียงโพสต์ที่นี่เป็นทางเลือกสุดท้าย ความหวังของฉัน (ลึกซึ้ง) คือใครบางคนที่นี่จะรู้การอ้างอิงทันทีจากค้างคาว; ถ้าไม่ ... ดีฉันหวังว่าอย่างน้อยคุณจะสนุกกับภาพสวยด้านล่าง (ถ้าฉันพูดอย่างนั้นกับตัวเองด้วยความตระหนักเต็มที่ฉันกำลังพูดคุยกับคนที่สนใจในคอมพิวเตอร์กราฟิกของทุกสิ่ง) ก่อนที่คุณจะย้ายไปที่ใหญ่ขึ้นและดีขึ้น สิ่ง สองแหล่งที่มาใกล้ DK Lynch "มองเห็นความโค้งของโลกอย่างเห็นได้ชัด" Applied Optics vol. 47, H39 (2008) มันมีอยู่ได้อย่างอิสระที่นี่ น่าเสียดายที่แทนที่จะทำอย่างถูกวิธี …

1
พื้นผิวการค้นหายังคงใช้เพื่ออะไรหรือไม่?
ฉันรู้เมื่อไม่นานมานี้ (5-10 ปี?) ว่ามันเป็นที่นิยม / มีประสิทธิภาพในการอบข้อมูลออกเป็นพื้นผิวแล้วอ่านข้อมูลจากพื้นผิวมักใช้การแก้ไขพื้นผิวในตัวเพื่อรับการแก้ไขเชิงเส้นของอบ ออกข้อมูล ตอนนี้เวลาในการคำนวณมีราคาถูกกว่าเมื่อเทียบกับเวลาในการค้นหาพื้นผิว คำถามของฉันคือพื้นผิวที่ถูกอบยังคงใช้สำหรับอะไร? ใครบ้างมีกรณีการใช้งานสำหรับพวกเขาในสถาปัตยกรรมสมัยใหม่? ดูเหมือนว่าพวกเขาจะกลับมาหรือไม่? (เช่นถ้าเทคโนโลยีหน่วยความจำหรือสถาปัตยกรรม GPU พื้นฐานเปลี่ยนแปลง)
14 texture  gpu  hardware 

1
ฉันจะสร้างแบบจำลองฝนที่ห่างไกลได้อย่างไร
ระยะใกล้ฝนสามารถจำลองเป็นลูกบอลน้ำใสที่มีการเคลื่อนไหวเบลอที่เหมาะสม ดูเหมือนว่าจะเป็นไปไม่ได้สำหรับไดรฟ์ข้อมูลขนาดใหญ่ซึ่งจำเป็นสำหรับฉากฝนในระยะไกล ในระยะทางที่ตามนุษย์ไม่สามารถแก้ไขเม็ดฝนแต่ละแบบได้ผลของบรรยากาศที่เต็มไปด้วยฝนจะเป็นอย่างไร สิ่งนี้ไม่จำเป็นต้องมีประสิทธิภาพเพียงพอสำหรับการใช้งานแบบเรียลไทม์ แต่มันก็จำเป็นที่จะต้องอนุญาตให้มีหลายเฟรมที่จะสร้างออฟไลน์สำหรับการเคลื่อนไหวโดยไม่กระทบต่อเนื่องหรือกะพริบ มีวิธีการใดบ้างสำหรับสิ่งนี้

6
วิธีการสร้างภาพประกอบ 2D อย่างง่ายเพื่อตอบคำตอบรูปทรงเรขาคณิต?
ในคำตอบของฉันเกี่ยวกับAffine Transformationsฉันทำภาพประกอบเล็กน้อยเพื่อช่วยอธิบาย คุณสร้าง PNG ที่สามารถอัปโหลดได้อย่างรวดเร็วซึ่งแสดงความคิดทางเรขาคณิตหรือคณิตศาสตร์ได้อย่างไร คำถามนี้ได้รับการออกแบบมาเพื่อรองรับคำตอบแบบโพสต์ของฉัน แต่มีจุดประสงค์เพื่อขอคำแนะนำอื่น ๆ ที่อาจเป็นประโยชน์ต่อเครือข่าย SE โดยทั่วไป แต่เพื่อความน่าเชื่อถือคำตอบต้องเชื่อมโยงไปยังโพสต์ที่ใช้เทคนิคนี้ในความเป็นจริงเช่นเดียวกับส่วน "howto" ที่เพียงพอหากเกี่ยวข้องมากกว่าสิ่งที่ชัดเจนเช่น "เลือกส่งออกจากเมนู" มีเมตาคำถามสองข้อที่นี่และที่นี่เกี่ยวกับวิธีการกำหนดขอบเขตคำถามนี้ตามลำดับความสำคัญที่อาจมีสำหรับไซต์ของเรา
14 2d 

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
การเลือกการสะท้อนหรือการหักเหในการติดตามเส้นทาง
ฉันพยายามที่จะใช้การหักเหและการส่งสัญญาณในเส้นทางของฉันและฉันไม่แน่ใจเกี่ยวกับวิธีการใช้ ครั้งแรกพื้นหลังบางส่วน: เมื่อแสงกระทบกับพื้นผิวส่วนหนึ่งของแสงจะสะท้อนกลับและส่วนหนึ่งจะหักเห: จำนวนเท่าใดแสงสะท้อนและการหักเหถูกกำหนดโดย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 …

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