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

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

1
ทำไมเงื่อนไขนี้ในส่วนย่อยของฉันจึงช้า
ฉันได้ตั้งค่ารหัสการวัด FPS บางอย่างใน WebGL (ตามคำตอบ SO นี้ ) และได้ค้นพบความแปลกประหลาดบางอย่างกับประสิทธิภาพของชิ้นส่วนของฉัน รหัสนี้แสดงเพียงรูปสี่เหลี่ยมจัตุรัสเดียว (หรือมากกว่าสองรูปสามเหลี่ยม) บนผืนผ้าใบขนาด 1024x1024 ดังนั้นเวทมนตร์ทั้งหมดจึงเกิดขึ้นในส่วนย่อย พิจารณา shader ง่าย ๆ นี้ (GLSL; vertex shader เป็นเพียงแค่ pass-through): // some definitions void main() { float seed = uSeed; float x = vPos.x; float y = vPos.y; float value = 1.0; // Nothing to see …

3
วิธีที่ง่ายที่สุดในการคำนวณความโค้งหลักสำหรับสามเหลี่ยมตาข่ายคืออะไร?
ฉันมีตาข่ายและในพื้นที่รอบ ๆ สามเหลี่ยมแต่ละรูปฉันต้องการคำนวณค่าประมาณของทิศทางความโค้งหลัก ฉันไม่เคยทำสิ่งนี้มาก่อนและWikipediaก็ไม่ได้ช่วยอะไรมากมาย คุณสามารถอธิบายหรือชี้ให้ฉันเป็นอัลกอริทึมแบบง่ายที่สามารถช่วยฉันคำนวณการประมาณนี้ได้หรือไม่? สมมติว่าฉันรู้ตำแหน่งและบรรทัดฐานของทุกจุด
19 mesh 

1
“ st” หมายถึงอะไรในบริบทของ OpenGL?
ฉันเคยเห็นคำนี้stมาสองสามครั้งเมื่อมองไปที่ชิ้นส่วน OpenGL อื่น ๆ อย่างไรก็ตามฉันไม่รู้ว่ามันหมายถึงอะไรหรือใช้เพื่ออะไร นี่คือตัวอย่าง: uniform vec2 u_resolution; vec2 st = gl_FragCoord.xy/u_resolution; ฉันสามารถเข้าใจได้ว่านี่เป็นการแปลงพิกัดพิกเซลเป็นพิกัดปกติที่ 0.0 - 1.0 แทนที่จะเป็น 640 x 480 (ตัวอย่าง) position.stผมเคยเห็นยังสิ่งที่ต้องการ มันหมายความว่าอะไร?
19 opengl 

1
โครงสร้างข้อมูลสำหรับการเรนเดอร์ที่อิงกับไทล์
การเรนเดอร์แบบเรียงต่อกันถูกใช้ในสถาปัตยกรรม GPU เคลื่อนที่ที่ทันสมัยเพื่อเพิ่มความต่อเนื่องของการเข้าถึงหน่วยความจำโดยแบ่งพื้นที่ภาพออกเป็นตารางย่อยขนาดเล็ก (เช่น 32x32 พิกเซล) ข้อมูลมีน้อยในประเภทของโครงสร้างข้อมูลที่ใช้ในการติดตาม primitives ที่เกี่ยวข้องกับไพ่แต่ละใบโดยพิจารณาว่า primitives พื้นฐานจำนวนมากโดยพลการอาจซ้อนทับไพ่ใด ๆ จากมุมมองของนักพัฒนาไดรเวอร์โครงสร้างข้อมูลใดที่ใช้เพื่อแสดงชุดดั้งเดิมที่เป็นของไทล์และโครงสร้างดังกล่าวจัดสรร / ปรับขนาดแบบไดนามิกตามเรขาคณิตที่ทับซ้อนไทล์เฉพาะหรือไม่

4
วิธีการ raytrace Bezier พื้นผิว?
ฉันลองคำถามนี้ในวิชาคณิตศาสตร์ SEและที่น่าประหลาดใจคำตอบคือ "สมการที่น่ารังเกียจเกินไปเพียงแค่ป้อนฟังก์ชั่นให้กับเครื่องมือค้นหารากตัวเลข" แต่ถ้าคุณพิจารณาตัวเองว่า "ผู้ชายกราฟิก" อย่างฉันและเล่นอย่างกว้างขวางกับ Bezier curves สำหรับงานออกแบบฉันต้องเชื่อว่าสามารถทำได้ดีกว่า มีอัลกอริทึมที่เผยแพร่โดย Kajiya ที่ฉันไม่มีพื้นหลังที่จะเข้าใจ (ซิลเวสเตอร์เมทริกซ์) แต่คำแนะนำที่เกี่ยวข้องกับคณิตศาสตร์คือว่าผลที่ได้คือพหุนาม -18 องศาใน t และคุณยังต้องแก้ ตัวเลข ฉันมีความคิดอื่นที่มีผลที่คล้ายกัน ดังนั้นมันเป็นความฝันที่เต็มไปด้วยท่อหรือเปล่าที่หวังว่าจะสามารถแก้จุดตัดของเรย์ / เบซิเยร์พีชคณิตได้ดังนั้นจึงเป็นไปได้ที่จะเขียนโค้ดอย่างชัดเจนและราบรื่นที่สุด นอกจากนี้วิธีที่เร็วที่สุดในการคำนวณนี้คืออะไร คุณสามารถ "ค้นหา wiggles" เพื่อรับขอบเขตที่แน่นหนา (และเป้าหมาย) สำหรับการจัดสรรซ้ำหรือไม่? หากคุณต้องใช้เครื่องมือค้นหารูทแบบตัวเลข (ถอนหายใจ) จำเป็นต้องใช้คุณสมบัติใดและมีตัวเลือกที่ดีที่สุดสำหรับความเร็วหรือไม่ ความคิดเดิมของฉันเป็นเรื่องเกี่ยวกับการเตรียมความพร้อมสำหรับผิวจำเพาะคล้ายกับการขยายตัวของ Laplace ที่อธิบายไว้ในคำตอบของฉันคำถามคณิตศาสตร์อื่น ๆ เกี่ยวกับรูปสามเหลี่ยม แต่ฉันก็สนใจวิธีการทั่วไปเช่นกัน ฉันแค่คิดว่าการกำหนดชุดของรูปทรงเหมือนกาน้ำชายูทาห์ แต่ฉันจะสนใจวิธีการปรับให้เหมาะสมสำหรับการเชื่อมโยงทางโลกในเฟรมภาพเคลื่อนไหว

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

2
กระบวนการแรสเตอร์ไรเซชันเวกเตอร์ของ Illustrator คืออะไร
ขณะนี้ฉันกำลังพยายามที่จะเข้าใจบางสิ่งเกี่ยวกับแรสเตอร์กราฟิกเวกเตอร์และวิธีการต่าง ๆ ที่นำไปใช้ในแอปพลิเคชันประเภทต่างๆ ฉันทดสอบและเปรียบเทียบโปรแกรมไม่กี่โปรแกรมและสังเกตว่ามีความแตกต่างที่สำคัญในวิธีการลดรอยหยักที่ทำงานในกระบวนการแรสเตอร์ไรเซชันฉันสนใจพฤติกรรมการแสดงผลใน Illustrator เป็นพิเศษ คุณจะเห็นว่าทำไมโดยการอ่านเพิ่มเติม สำหรับการทดสอบของฉันฉันใช้องค์ประกอบสามเหลี่ยมง่าย ๆ ที่จัดเป็นรูปหกเหลี่ยมผิดปกติด้วยสีที่แตกต่างกัน โปรแกรมกราฟิกแบบเวกเตอร์ ที่นี่มีกราฟิกแบบเวกเตอร์สามรายการใน Illustrator, Affinity และ Inkscape (ภาพที่สร้างใน Affinity และ Inkscape จะเหมือนกันทุกประการ) อย่างที่คุณเห็นมีเส้นสีขาวที่ไม่ต้องการบนแต่ละขอบในภาพที่แสดงด้วย Affinity และ Inkscape การลดรอยหยักไม่ได้ทำให้บริเวณนี้เต็มไปด้วยสีทึบซึ่งส่งผลให้เกิดช่องว่างเล็ก ๆ ระหว่างรูปร่างที่อยู่ติดกัน แม้ว่าจะไม่มีช่องว่างในการเรนเดอร์ Illustrator แต่ขอบของรูปร่างนั้นดูเรียบเนียนเหมือนกับ Affinity render นี่คือภาพที่แสดงพื้นที่เดียวกันของภาพแต่ละภาพที่มีการลดขนาด มีความแตกต่างที่ลึกซึ้งมากระหว่างสองภาพ การสร้าง Affinity นั้นเรียบเล็กน้อย แต่ก็แทบจะเป็นไปไม่ได้ที่จะเห็นความแตกต่างเมื่อมองภาพในขนาดดั้งเดิม เบราว์เซอร์ การแสดงผล SVG การแสดงกราฟิกเดียวกันที่ส่งออกเป็น SVG ในเบราว์เซอร์นั้นดูคล้ายกับภาพแรสเตอร์ที่เกิดจาก Affinity และ Inkscape มีความแตกต่างเล็ก ๆ …

2
"การประมาณค่าไดโพล" สำหรับการกระเจิงใต้ผิวดินคืออะไร?
หากคุณอ่านเอกสารเกี่ยวกับการกระเจิงใต้ผิวดินคุณจะพบการอ้างอิงถึงสิ่งที่เรียกว่า "การประมาณไดโพล" บ่อยครั้ง คำนี้ดูเหมือนจะย้อนกลับไปที่บทความแบบจำลองการปฏิบัติสำหรับการขนส่งแสงใต้ผิวดินโดย Henrik Wann Jensen et al แต่บทความนี้ค่อนข้างเข้าใจยาก ทุกคนสามารถอธิบายด้วยคำพูดที่ค่อนข้างง่ายว่าการประมาณไดโพลคืออะไรและใช้ในการเรนเดอร์ใต้ผิวดินอย่างไร?

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 * …

2
แบนด์วิดธ์คืออะไรและทำงานอย่างไร
เอกสาร OpenGLระบุ returns the sum of the absolute value of derivatives in x and yfwidth นี่หมายถึงอะไรในศัพท์ทางคณิตศาสตร์ที่น้อยกว่าและมีวิธีในการมองเห็นภาพหรือไม่? จากความเข้าใจในฟังก์ชั่นของฉันฉันfwidth(p)สามารถเข้าถึงค่าเป็นpพิกเซลใกล้เคียง สิ่งนี้ทำงานกับ GPU โดยไม่ส่งผลกระทบต่อประสิทธิภาพอย่างมากและทำงานได้อย่างน่าเชื่อถือและสม่ำเสมอในทุกพิกเซล
18 opengl 

1
เหตุใดจึงรวมกันเป็นซีกโลก (และไม่ใช่ทรงกลม) เพื่อแก้สมการเรนเดอร์?
ในหนังสือข้อความส่วนใหญ่ที่ฉันได้เห็นนี่คือวิธีการเขียนสมการเรนเดอร์: L0( ω0) = Lอี( ω0) + ∫Ωฉ( ωผม, ω0) ลผม( ωผม)d ωผมL0(ω0)=Lอี(ω0)+∫Ωฉ(ωผม,ω0)Lผม(ωผม)dωผมL_0( \omega_0)= L_e(\omega_0)+\int_{\Omega}{f(\omega_i, \omega_0)L_i(\omega_i)\,\mathrm{d}\omega_i} ที่ถูกกำหนดให้เป็นซีกโลก (และฟังก์ชั่นเหล่านั้นขึ้นอยู่กับตัวแปรมากขึ้นและถูกละไว้ที่นี่เพื่อประโยชน์ของความเรียบง่าย)ΩΩ\Omega ทีนี้สมมติว่าพื้นผิวที่ใช้เป็นแก้วบางชนิดหรือพลาสติกใส เหตุใดจึงสมเหตุสมผลที่จะรวมเข้ากับซีกโลกเท่านั้น ฉันคิดว่าอาจมีแสงเข้ามาจากทิศทางใดก็ได้และดังนั้นโดเมนการรวมเข้าด้วยกันจึงควรเป็นทรงกลมทั้งหมด แสงที่มาจากด้านหลังแก้วเป็นสาเหตุอย่างไร


4
VR แตกต่างจากจอภาพอย่างไร
เห็นได้ชัดว่าคอมพิวเตอร์ Macintosh ไม่สามารถจัดการ Oculus Rift ได้เพราะการ์ดแสดงผลที่ด้อยกว่า แต่ VR ควรจะไม่เหมือนเป็นจอมอนิเตอร์ภายนอกหรือไม่? และเกี่ยวกับคอมพิวเตอร์กราฟิกส์เกม VR ต่างจากเกมอื่น ๆ ที่ Macintosh สามารถทำงานได้อย่างง่ายดายได้อย่างไร? ปัญหาอยู่ที่ไหน

3
ฉันจะดีบักสิ่งที่แสดงผลกับ Frame Buffer Object ใน OpenGL ได้อย่างไร
ฉันมีคลาวด์จุดที่กำลังแสดงผลบนหน้าจอ แต่ละจุดมีตำแหน่งและสีรวมถึงรหัส ฉันถูกขอให้เรนเดอร์ ID สำหรับแต่ละจุดของพื้นผิวดังนั้นฉันจึงสร้าง FBO และแนบสองพื้นผิวหนึ่งสำหรับสีและหนึ่งสำหรับความลึก ฉันสร้าง VAO และ VBO ที่จำเป็นสำหรับการเรนเดอร์นอกจอและอัปโหลดตำแหน่งและ ID ของแต่ละจุด เมื่อทำการเรนเดอร์ไปยัง FBO เสร็จแล้วฉันอ่านพิกเซลของพื้นผิวสีด้วยglReadPixels()เพื่อดูว่าค่าคือglClearColor()อะไร มีวิธีที่ฉันสามารถดีบักสิ่งที่มันถูกแสดงกับพื้นผิวสีของ FBO ของฉัน? คำแนะนำใด ๆ ที่คุณอาจให้จะยินดีมาก
17 opengl  debugging 

1
อัลกอริธึมการจัดสรรแผนกใดที่เกิดขึ้นตั้งแต่ Catmull-Clark
ในปี 1978 Edwin Catmull และ Jim Clark ได้กำหนดกระบวนการแบ่งย่อยแบบเรียกซ้ำซึ่งมีชื่อของพวกเขาและแม้ว่าหลักการเหล่านั้นยังคงมีผลบังคับใช้ในทุกวันนี้มีความก้าวหน้าอะไรเกิดขึ้นเท่าการเพิ่มประสิทธิภาพและความแม่นยำ

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