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

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

2
อาร์เรย์พิกเซลหกเหลี่ยมสามารถจัดเก็บภาพได้อย่างมีประสิทธิภาพมากขึ้นหรือไม่?
จอภาพคอมพิวเตอร์และโทรทัศน์ส่วนใหญ่มีพิกเซลเรียงกันเป็นสี่เหลี่ยมเรียงกันเป็นตารางสี่เหลี่ยม (หรือเกือบเป็นสี่เหลี่ยม) โครงตาข่ายหกเหลี่ยมจะให้คุณภาพของภาพดีขึ้นด้วยจำนวนพิกเซลเท่ากันหรือไม่ กล่าวอีกนัยหนึ่งจำนวนหน่วยความจำเท่ากันจะอนุญาตให้เก็บรายละเอียดเพิ่มเติมได้หรือไม่ ฉันมีความรู้สึกที่เข้าใจง่ายว่า (อย่างน้อยเล็กน้อย) รายละเอียดเพิ่มเติมควรเป็นไปได้จากจำนวนพิกเซลเดียวกันที่มีตาข่ายหกเหลี่ยมเพราะ (สำหรับภาพพื้นที่คงที่) ระยะทางเฉลี่ยถึงจุดศูนย์กลางพิกเซลที่ใกล้ที่สุดจะต่ำกว่าด้วยตารางสี่เหลี่ยม . ฉันต้องการเห็นความแตกต่างที่กำหนดไว้อย่างชัดเจนยิ่งขึ้น แม้ว่าคำตอบคือ "ใช่" ฉันไม่คาดหวังว่าผู้ผลิตจอภาพจะเริ่มทำพิกเซลที่จัดเรียงเป็นหกเหลี่ยมในทันที อย่างไรก็ตามฉันถามคำถามเพราะฉันสงสัยว่าจะมีอะไรที่จะได้รับจากการจัดเก็บภาพเป็นรูปสี่เหลี่ยมขนมเปียกปูนหกเหลี่ยมของพิกเซลหรือไม่แม้ว่าพวกเขาจะถูกแปลเป็นสี่เหลี่ยมจัตุรัสพิกเซลเพื่อจุดประสงค์ในการแสดงผลหรือไม่
11 pixels  memory 

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

1
การปรับเปลี่ยนพื้นผิว (การวาดภาพบนภาพ) ถือว่าเป็นการ“ เปลี่ยนสถานะ” หรือไม่?
ข้อตกลงในกราฟิกคือการดำเนินการเปลี่ยนแปลงสถานะน้อยกว่าดีกว่าดำเนินการเปลี่ยนแปลงสถานะเพิ่มเติม (เปลี่ยน shaders บัฟเฟอร์รวมผูกพันพื้นผิวที่ผูก ฯลฯ ) สำหรับพื้นผิวจะเร็วกว่าในการเรนเดอร์รูปหลายเหลี่ยมโดยใช้แผนที่เดี่ยว (สำหรับการแสดงผลสไปรต์ / ข้อความ) แทนที่จะผูกกับพื้นผิวแบบใหม่สำหรับแต่ละรูปหลายเหลี่ยม สิ่งนี้ถือเป็นจริงหรือไม่ถ้าฉันวาดภาพอย่างต่อเนื่องบนพื้นผิวผ่านglTexSubImage2D? ฉันมีกระแสข้อมูลที่เข้ามา (ผ่านเครือข่าย) ที่ผ่านการประมวลผลและถูกทาสีลงบนพื้นผิวทีละแถว ข้อมูลจะถูกแสดงด้วยการเลื่อนอย่างไม่มีที่สิ้นสุด ฉันจะดีกว่าการวาดภาพเป็นพื้นผิวหนึ่งที่แสดงบนสี่เหลี่ยมขนาดใหญ่เดียว (เลื่อนข้อมูลที่ทาสีไปสู่มุมมอง) หรือไม่ ความคิดที่นี่คือฉันจะมีพื้นผิวหนึ่ง (หรือสอง) ผูกพันในเวลาที่กำหนดในขณะที่ฉันเพิ่งจะทาสีมัน หรือฉันควรจะวาดรูปสี่เหลี่ยมเล็ก ๆ น้อย ๆ จำนวนมาก (เพียงเปิดเผยสี่เหลี่ยมผืนผ้าเมื่อเสร็จสิ้นการวาดภาพ)? ฉันคิดว่าฉันจะผูกหนึ่งพื้นผิวต่อสี่เหลี่ยม
11 opengl  texture 

2
เป็นไปได้หรือไม่ที่จะทราบว่ามีชิ้นส่วนกี่ชิ้นที่ทำผ่านการทดสอบลายฉลุ?
ฉันมีแอปพลิเคชัน OpenGL ซึ่งใช้การทดสอบลายฉลุค่อนข้างมากเพื่อแสดงรูปร่างที่ผิดปกติ (เช่นCSGแบบ 2 มิติอย่างง่าย) ถ้าฉันสามารถหาจำนวนชิ้นส่วนที่ผ่านการทดสอบลายฉลุและแสดงผลได้จริงสิ่งนี้จะมีประโยชน์มากในการทำให้การคำนวณง่ายขึ้น โดยเฉพาะมันจะช่วยให้ฉันสามารถกำหนดพื้นที่ของรูปร่างที่แสดงผลได้ฟรีแทนที่จะต้องประมาณมันด้วยการจำลอง Monte Carlo ในภายหลัง ฉันรู้ว่ามีแนวคิดที่คล้ายกันสำหรับวิทยาการปล่อยออกมาจากรูปทรงเรขาคณิต Shader ที่เรียกว่าเปลี่ยนข้อเสนอแนะ ฉันต้องการทราบว่ามีแนวคิดแบบเดียวกันนี้สำหรับการทดสอบเศษและการทดสอบลายฉลุหรือไม่

1
ผลิตภัณฑ์ลูกบาศก์เมตริกซ์การแก้ไขเมตริกซ์เป็นแบบเดียวกับการแก้ไข bicubic หรือไม่?
ฉันเพิ่งใช้การสุ่มตัวอย่างการประมาณค่าพื้นผิวโดยการสุ่มพิกเซลที่ใกล้ที่สุด 4x4 แล้วทำการแก้ไขลากรองจ์ข้ามแกน x เพื่อรับค่าสี่ค่าเพื่อใช้การแก้ไขลากรองจ์บนแกน y สิ่งนี้เหมือนกับการแก้ไขแบบ Bicubic หรือแตกต่างกันหรือไม่? หรือมีการแก้ไขต่าง ๆ bicubic และนี่เป็นเพียงหนึ่งในพวกเขาอาจ? การใช้งาน Webgl Shadertoy ที่นี่และรหัส GLSL (WebGL) ที่เกี่ยวข้องด้านล่าง: https://www.shadertoy.com/view/MllSzX ขอบคุณ! float c_textureSize = 64.0; float c_onePixel = 1.0 / c_textureSize; float c_twoPixels = 2.0 / c_textureSize; float c_x0 = -1.0; float c_x1 = 0.0; float c_x2 = 1.0; …

2
ควรแก้ไขช่องแกมมา
เรารู้ว่าใน PNG, BMP ฯลฯ ... ค่าพิกเซลที่เก็บไว้ไม่ได้อยู่ในพื้นที่ RGB เชิงเส้น แต่ฉันไม่พบเอกสารพูดอะไรเกี่ยวกับช่องอัลฟา ช่องอัลฟาถูกเก็บไว้ในไฟล์ภาพในพื้นที่เชิงเส้นหรือไม่?
11 gamma 

2
มีเหตุผลใดที่จะชอบ Direct3D เหนือ OpenGL ไหม
ดังนั้นฉันจึงอ่านสิ่งนี้ฉันได้รับเหตุผลว่าทำไมมีเกมบน Microsoft Windows มากกว่าในระบบปฏิบัติการอื่น ๆ ปัญหาหลักที่นำเสนอคือ Direct3D เป็นที่ต้องการมากกว่า OpenGL สิ่งที่ฉันไม่เข้าใจคือสาเหตุที่นักพัฒนาซอฟต์แวร์ใดจะเสียสละความเข้ากันได้ นั่นเป็นเพียงความสูญเสียทางการเงินของ บริษัท ฉันเข้าใจว่า OpenGL เป็นระเบียบ แต่ไม่ค่อยน่าจะเป็นปัญหาสำหรับผู้เชี่ยวชาญ แม้ว่ามันจะเป็นไปได้ก็ตามฉันคิดว่าผู้คนจะไปได้ไกลกว่าที่จะได้รับความเสียหายทางการเงิน นอกจากนี้ถ้าฉันไม่ผิดแล้วแอพพลิเคชั่นข้ามแพลตฟอร์มจำนวนมากใช้ทั้ง Direct3D และ OpenGL ฉันคิดว่าพวกเขาสลับไปมาระหว่าง API นี่เป็นเรื่องแปลกเพราะพวกเขาสามารถใช้ OpenGL ได้ทำไมถึงสนใจ Direct3D? ดังนั้นคำถามคือมีปัญหาทางเทคนิคกับ OpenGL หรือมีการสนับสนุนใด ๆ ที่ Direct3D ให้ OpenGL นั้นขาดหรือไม่ ฉันทราบว่าคำถามนี้อาจถูกปิดเนื่องจากเป็นการปิดหัวข้อหรือกว้างเกินไปฉันพยายามทำให้ดีที่สุดเพื่อ จำกัด ให้แคบลง
11 opengl  direct3d 

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 

2
บัฟเฟอร์ดัชนีคืออะไรและเกี่ยวข้องกับบัฟเฟอร์จุดสุดยอดอย่างไร
ฉันมีบัฟเฟอร์จุดสุดยอดเช่นนี้ 0.0, 0.0, 1.0, 0.0, 0.0, 0.6, 1.0, 0.6, 0.5, 1.0 ฉันมีบัฟเฟอร์ดัชนีต่อไปนี้: 0, 2, 2, 4, 4, 3, 3, 2, 2, 1, 1, 0, 0, 3, 3, 1 ฉันรู้ว่าฉันต้องการวาดgl.LINESโดยใช้ WebGL หมายถึงหลายส่วนของบรรทัดที่คั่น gl.drawElements(gl.LINES, 16, gl.UNSIGNED_SHORT, indexBuffer); ดูเหมือนว่าจะเปิดใช้งานการวาดภาพของส่วนของเส้นหลาย ๆ อันในการเรียกใช้การดึงครั้งเดียวใน WebGL ใครบางคนสามารถ ELI5 ให้ฉันสิ่งที่บัฟเฟอร์ดัชนีและวิธีการที่เกี่ยวข้องกับจุดสุดยอดบัฟเฟอร์? จะสร้างบัฟเฟอร์ดัชนีจากพื้นฐานได้อย่างไร

2
การเข้ารหัส JPEG ควรคำนึงถึงแกมม่าหรือไม่?
เมื่อรูปภาพถูกเข้ารหัสด้วย JPEG พิกเซล RGB จะถูกเข้ารหัสเป็น YUV ก่อนจากนั้นช่อง UV จะลดลง ก่อนทำการ DCT จริงและเข้ารหัสสัมประสิทธิ์ JPEG ไม่แกมมาแก้ไขช่องสัญญาณ Y ถูกต้องหรือไม่ เราไม่ควรกำหนดสัมประสิทธิ์ DCT ที่จะส่งผลต่อผลลัพธ์ที่เราดูมากที่สุด?

1
การสร้างบรรทัดฐานของจุดสุดยอดทางโปรแกรม
ฉันกำลังทำงานร่วมกับ Kinect face api มันมีอาร์เรย์ของจุดยอดและดัชนีสำหรับรูปสามเหลี่ยมซึ่งจะแสดงผลเพื่อสร้างภาพใบหน้า จำนวนจุดยอดและคำสั่งของพวกเขาในอาร์เรย์รวมถึงดัชนีที่ได้รับจาก kinect นั้นไม่เปลี่ยนแปลงตลอดเวลา อย่างไรก็ตาม api ไม่ได้ให้ข้อมูลเกี่ยวกับข้อมูล UV และบรรทัดฐานจุดสุดยอด แอปพลิเคชันต้องการให้ฉันรักษาจุดสุดยอดตามที่ไคเนกต์กำหนดให้เป็นตำแหน่งของพวกเขาในการเปลี่ยนแปลงพื้นที่ 3 มิติตามการเคลื่อนไหวของใบหน้าดังนั้นการสร้างยูวีและบรรทัดฐานในซอฟต์แวร์แก้ไขแบบสามมิตินั้นเป็นปัญหา ฉันสามารถสร้างรังสี UV โดยฉายตำแหน่งจุดยอดลงบนระนาบ 2D เนื่องจากมีจุดยอดน้อยมากบนระนาบเดียวกัน อย่างไรก็ตามฉันไม่ทราบวิธีสร้างบรรทัดฐานจุดสุดยอดสำหรับตาข่ายโดยไม่มีจุดสุดยอดปกติตาข่ายใบหน้าดึงโดยไม่มีความลึกของคุณสมบัติจากก่อนหน้าแม้ว่าเงาจะมองเห็นได้เนื่องจากตำแหน่งจุดยอดถูกต้อง ฉันเข้าใจว่าเนื่องจากไม่มีบรรทัดฐานของจุดสุดยอดแสงจะไม่ทำงานอย่างถูกต้องกับมันและด้วยเหตุนี้ตาข่ายที่ไม่มีสีซีดจึงดูเหมือนตอนนี้ ดังนั้นฉันจะสร้างบรรทัดฐานจุดสุดยอดได้อย่างไรเมื่อทั้งหมดที่ฉันมีเพียงแค่ตำแหน่งจุดสุดยอดและดัชนีของจุดยอดเพื่อสร้างรูปสามเหลี่ยมออกมาจากมัน?

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

3
ฉันจะทดสอบสามเหลี่ยมภายในการทดสอบในตาข่ายรูปหลายเหลี่ยมได้อย่างไร
ฉันมี 3 จุดยอด(V1, V2, V3)สุ่มเลือกบนตาข่ายสามเหลี่ยมปกติ สำหรับจุดยอดทั้งสามนี้ฉันได้คำนวณระยะทางทางมาตรวิทยาและเส้นทาง (โดยใช้ Dijkstra) ในหมู่พวกเขาและสร้างพื้นผิวที่มีลักษณะคล้ายรูปสามเหลี่ยมดังแสดงในรูปด้านบน ตอนนี้ฉันมีจุดยอดที่อยู่ในแต่ละเส้นทางและสามารถคำนวณระยะทางธรณีวิทยาจากจุดยอดที่กำหนด สิ่งที่ฉันอยากทำคือการหาจุดยอดหรือสามเหลี่ยมที่อยู่ในพื้นที่สามเหลี่ยม ฉันจะทำสิ่งนี้ได้อย่างไร

1
ทำไม AMD ถึงใส่ SSD ลงบนบอร์ด GPU เพื่อลดความล่าช้า
เมื่อไม่นานมานี้ AMD ได้มีข่าวกับบอร์ด Radeon Pro ที่น่าสนใจซึ่งมี M2 SSD อยู่สองตัว ตามที่มีรายละเอียดเพิ่มเติม (เช่นที่นี่หรือที่นี่ ) หมายเหตุประโยชน์ส่วนใหญ่อาจไม่ได้เกิดจากแบนด์วิดท์สูง (M2 นั้นอยู่ที่ PCIe 4 เลนต่อกันดังนั้นตัวเชื่อมต่อ 16 เลนของบอร์ดควรมีมากกว่า) จากเวลาแฝงต่ำ เรื่องนี้รวมถึงการอ้างสิทธิ์ "ผลลัพธ์นี้มีความล่าช้าในการเข้าถึงหน่วยความจำต่ำกว่า 10x" คำถามของฉันคือ: ทำไม SSD ที่เชื่อมต่อ PCIe บนบอร์ด GPU ควรมีความหน่วงแฝงน้อยกว่า GPU ที่เข้าถึง RAM ระบบหลักหรืออุปกรณ์เก็บข้อมูลบนบัส PCIe ระบบหรือไม่ มันเกี่ยวกับระบบหลักอะไรที่ "เข้ามาขวางทาง" และหมายความว่า SSD ของออนบอร์ดสามารถเข้าถึงได้เร็วกว่ามาก?

1
ทำไม BRDF ถึงไม่เป็นอัตราส่วนของความกระจ่างใส?
ฉันกำลังเรียนรู้เกี่ยวกับ BRDF และสงสัยว่าเหตุใด BRDF จึงถูกกำหนดให้เป็นอัตราส่วนของความกระจ่างใสที่ส่งออกไปยังทิศทางที่กำหนดและการฉายรังสีที่เข้ามาจากทิศทางอื่น เหตุใด BRDF จึงไม่ถูกกำหนดเป็นอัตราส่วนของความกระจ่าง
10 brdf 

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