การทำแผนที่ mip ทำงานอย่างไรกับพื้นผิวที่ไม่ได้ทรงพลัง?


12

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

คำตอบ:


13

กฎคือการคำนวณขนาด mipmap ถัดไปคุณหารด้วยสองและปัดเศษเป็นจำนวนเต็มที่ใกล้ที่สุด (เว้นแต่ว่าจะปัดเศษลงเป็น 0 ซึ่งในกรณีนี้คือ 1 แทน) ตัวอย่างเช่นภาพ 57x43 น่าจะมี mipmaps เช่น:

level 0: 57x43
level 1: 28x21
level 2: 14x10
level 3: 7x5
level 4: 3x2
level 5: 1x1

การทำแผนที่ UV การเลือก LOD และการกรองใช้งานได้ในลักษณะเดียวกับขนาดพื้นผิวที่มีกำลังสอง

การสร้าง mips ที่มีคุณภาพดีสำหรับพื้นผิวที่ไม่ได้ทรงพลังนั้นเป็นเรื่องยุ่งยากเล็กน้อยเนื่องจากคุณไม่สามารถเฉลี่ยพิกเซลกล่อง 2x2 ให้เหลือตัวอย่างน้อยในทุกกรณี อย่างไรก็ตามตัวกรองกล่อง 2x2 นั้นไม่ค่อยดีนักดังนั้นควรใช้ตัวกรอง downsampling ที่ดีกว่าเช่น Mitchell-Netravali โดยไม่คำนึงถึงขนาดพื้นผิว


1
คำตอบนี้ขัดแย้งกับคำตอบของ John Calsbeek หรือไม่? การติดตั้งใช้งานไม่ตรงกับคำอธิบายทั้งสอง? ถ้าไม่เช่นนั้นจะมีประโยชน์หากมีการอ้างอิงสำหรับหนึ่งหรืออื่น ๆ (หรือทั้งสองอย่างหากพวกเขาเป็นสองเทคนิคที่แตกต่างกันทั้งในการใช้งาน)
trichoplax

4

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

หากดำเนินการเช่นนั้นจะเห็นได้ชัดว่าจะทำแผนที่อย่างไร: ไม่มีอะไรเปลี่ยนแปลง แม้ว่าคุณจะมี GPU ที่รองรับพื้นผิวที่ไม่ได้พลังงานก็ตามโดยไม่ต้องแพ็ดดิ้งระดับ mipmap ก็จะจบลงด้วย "padding" เช่น 3x3 texture จะมี 2x2 texture เป็น Lod 1


คำตอบนี้ขัดแย้งกับคำตอบของ Nathan Reed หรือไม่? การติดตั้งใช้งานไม่ตรงกับคำอธิบายทั้งสอง? ถ้าไม่เช่นนั้นจะมีประโยชน์หากมีการอ้างอิงสำหรับหนึ่งหรืออื่น ๆ (หรือทั้งสองอย่างหากพวกเขาเป็นสองเทคนิคที่แตกต่างกันทั้งในการใช้งาน)
trichoplax

1
@trichoplax ฉันคิดว่านาธานยืนยันว่า "การสร้าง mips ที่มีคุณภาพดีสำหรับพื้นผิวที่ไม่ได้ใช้พลังงานของสองเป็นเรื่องเล็กน้อย" ทำให้คำตอบของเราไม่เห็นด้วยอย่างน้อย เพียงอย่างเดียวนั่นอาจจะเป็นการทำรายละเอียดเพิ่มเติม
John Calsbeek

1
ฉันคิดว่าปัญหาที่นี่คือเรากำลังสับสนตำแหน่งตรรกะของ texels ด้วยการจัดวาง "ทางกายภาพ" ในหน่วยความจำ 1) Pixels เป็นรายการที่ไม่ต่อเนื่องนั่นคือคุณต้องมีมิติจำนวนเต็มเสมอและการลดขนาดให้เป็นขนาดที่แปลกหมายความว่าเราต้องปัดเศษขึ้นหรือปัดลง เนื่องจากเราต้องปัดเศษขึ้นเมื่อเราไปถึงพื้นผิว Nx1 หรือ 1xN มันสมเหตุสมผลที่จะปัดเศษขึ้นเสมอ 2) เมื่อวางในที่อยู่ทางกายภาพไม่ใช่เรื่องผิดปกติที่จะวางพื้นผิวออกเป็นขนาด "สะดวก" "กางเกง" สิ่งนี้อาจทำได้ด้วยเหตุผล 2 ประการ: ก) มันอาจทำให้ HW ถูก & b) ถ้า P.of.2 การสั่งมอร์ตันเป็นเรื่องง่าย
Simon F
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.