Z-buffer หรือที่รู้จักในชื่อ depth-buffer เป็นวิธีการที่ใช้สำหรับการตรวจจับพื้นผิวที่ถูกบัง (hidden surface detection)
การตรวจจับพื้นผิวที่ถูกบัง
สำหรับภาพใดๆ ที่มีวัตถุและพื้นผิวที่โปร่งแสง ในกรณีนี้ วัตถุที่อยู่ด้านหลังวัตถุอื่นๆ จะถูกบัง เพื่อให้ได้ภาพที่ถูกต้อง เราจำเป็นต้องกำจัดพื้นผิวที่ถูกบังเหล่านี้ การระบุนี้เรียกว่า hidden surface problem
ใน z-buffer เราจะเปรียบเทียบพื้นผิวในแกน z เป็นความลึก (depth)
อัลกอริทึม
ขั้นตอนที่ 1: เริ่มต้นความลึกของพิกเซลทั้งหมดเป็นค่าสูงสุด d(i,j) = infinity
ขั้นตอนที่ 2: เริ่มต้นสีสำหรับพิกเซลทั้งหมด c(i,j) = background-color
ขั้นตอนที่ 3: สำหรับแต่ละพิกเซลในการฉายภาพของพอลิゴน ทำ
ขั้นตอนที่ 3.1: หา z คือความลึกของพิกเซล (i,j) ของการฉายภาพ
ขั้นตอนที่ 3.2: หาก z < d(i,j) ทำ
ขั้นตอนที่ 3.2.1: d(i,j) = z และ c(i,j) = สีของพอลิ곤
ด้วยวิธีนี้ เราจะหาความลึกของแต่ละพิกเซลของระนาบทีละพิกเซล พื้นผิวที่มีความลึกน้อยที่สุดจะกำหนดสีของบัฟเฟอร์ โดยทั่วไป ค่า z ทั้งหมดจะอยู่ใกล้ช่วง [0,1]
z=0 คือ back clipping plane และ z=1 คือ front clipping plane
จุดสำคัญของ z-buffer
ไม่ต้องการการเรียงลำดับพอลิโกน (planes) ล่วงหน้าในการใช้วิธี z-buffer
Z-buffer ให้ผลลัพธ์รวดเร็วแม้จำนวน planes จะมาก
ไม่ต้องการการเปรียบเทียบวัตถุในวิธี z-buffer
วัตถุที่ถูกบังที่ไม่ใช่พอลิโกนก็สามารถตรวจจับได้ด้วยวิธีนี้
ไม่ต้องการโครงสร้างข้อมูลเพิ่มเติมสำหรับการจัดเก็บและแก้ไข
สามารถนำไปใช้ในฮาร์ดแวร์เพื่อเร่งกระบวนการ และใช้งานจริงในกราฟิกเวิร์กสเตชัน
วิธีนี้ใช้ได้เฉพาะเมื่อวัตถุที่พิจารณาเป็นทึบ (opaque) คือวัตถุโปร่งแสงอาจให้ข้อผิดพลาด
การวาดพื้นผิวที่ถูกบังอาจเป็นกระบวนการที่ใช้เวลานาน