Z-ბუფერი

ინფოგრაფიაში Z-ბუფერი, იგივე სიღრმული ტამპონი — მეთოდი, რომელიც გამოიყენება 3D სცენების გამოსასახად. Z-ბუფერი საშუალებას იძლევა გადავწყვიტოტ 3D სცენის განლაგება. უფრო კონკრეტულად: რომელი საგანი უნდა ჩანდეს, რომელს სხვა საგანი უნდა ფარავდეს, რა თანმიმდევრობით უნდა მოხდეს საგანთა ჩვენება სცენაზე. 3D დაჩქარებულ ანგარიშში სწორედ ზემოთ ხსენებული მეთოდი გამოიყენება. იმავე მეთოდს გამოიყენებს მრავალი სხვა 3D პროგრამაც. მხატვრის ალგორითმი ხილვადობის პრობლემის გადაწყვწტის განსხვავებულ გზას წარმოადგენს. როდესაც საგანი გამოისახება აჩქარებული ანგარიშის 3D პლატის საშუალებით, პიქსელის სიღრმის შესაბამისი კოორდინატი (Z) მოთავსებულია ტამპონში (ინგლისურად "buffer"-ში, საიდანაც აწარმოეს სახელწოდება Z-buffer -Z-ბუფერი). ეს ტამპონი წარმოადგენს ორგანზომილებიან ცხრილს(X და Y), და მისი თითოეული ელემენტი არის ეკრანის ერთი პიქსელი. თუ სცენის რომელიმე ელემენტი უნდა გამოისახოს რომელიმე (X,Y) კოორდინატზე, სადაც უკვე სხვა ელემენტია გამოსახული, 3D პლატა ადარებს ორივე ელემენტის სიღრმეების შესაბამის კოორდინატებს(Z) და გამოსახავს დაკვირვების წერტილიდან უახლოეს პიქსელს. შემდეგ ამ პიქსელის Z მნიშვნელობა თავსდება სიღრმულ ტამპონში, იცვლებარა Z -ის ძველი მნიშვნელობა. საბოლოო ჯამში ვღებულობთ სურათს, რომელშიც უფრო ახლო მდებარე ობიექტები ფარავენ უშორესთ. სცენის ხარისხს დიდად განაპირობებს სიღრმული ტამპონის გრანულირებულობა. როცა ობიეატები მეტად ახლოა ერთმანეთთან, ტამპონმა, რომელშიც მნიშვნელობები 16 ბიტშია წარმოდგენილი, შესაძლოა წარმოქმნას გრაფიკული კონფლიქტები(Z-buffer fighting). 32 ბიტიანი Z-ბუფერი უფრო კორექტულად მოქმედებს. 8 ბიტიანი Z-ბუფერი კი თითქმის არ გამოიყენება მისი დაბალი ხარისხის სიზუსტის გამო. ჩვეულებრივ, Z-ბუფერის სიზუსტე არ არის წრფიული. ანუ ახლოს მყოფი საგნები უფრო მკაფიოდ ჩანს ვიდრე შორს მყოფი საგნები. ეს არის კიდეც სასურველი შედეგი, მაგრამ მან შეიძლება გამოიწვიოს ხილვადობის კონფლიქტები სცენის სიღრმეში. Z-ბუფერის ტექნიკის ვარიაციით მიიღება ახალი ტექნიკა(W-buffer) რომელიც ამ პრობლემას აგვარებს. ყოველი ახალი სცენის ჩვენებისას Z-ბუფერს უნდა მიენიჭოს საწყისი მნიშვნელობა რომელიც მაქსიმალურ სირრმეს შეესაბამება. ჩვეულებრივ, ეს საჭყისი მნიშვნელობა ნულია ხოლმე. გამომსახველი კამერის სიღრმის მნიშვნელობათ არე ხშირად განსაზღვრულია near(მინ. მნიშვნელობა) და far(მაქს. მნიშვნელობა) მნიშვნელობათა შორის. პროექციის ცვლილებისას z-ის ახალი მნიშვნელობა გამოითვლება ფორმულით: z ′ = f a r + n e a r f a r − n e a r + 1 z ( − 2 ⋅ f a r ⋅ n e a r f a r − n e a r ) {\displaystyle z'={\frac {{\mathit {far}}+{\mathit {near}}}{{\mathit {far}}-{\mathit {near}}}}+{\frac {1}{z}}\left({\frac {-2\cdot {\mathit {far}}\cdot {\mathit {near}}}{{\mathit {far}}-{\mathit {near}}}}\right)} სადაც z {\displaystyle z} არის z {\displaystyle z} -ის ძველი მნიშვნელობა, და მას ზოგჯერ w {\displaystyle w} ან w ′ {\displaystyle w'} -ით აღნიშნავენ. z' -ის განსაზღვრის არეა [-1;1] და near=-1, ხოლო far=1. მნიშვნელობები, რომლებიც ამ ინტერვალის გარეთ იმყოფებიან, გამოსახვის პროცესში არ მონაწილეობენ, რადგანაც ისინი მხედველობის მიღმა მყოფ არეს გულისხმობენ. Z-ბუფერი გამოიყენება ასევე ისეთი გრაფიკული ეფექტების შესაქმნელად, როგორიცაა ბუნდოვანება(მაგალითად მინდვრის სიღრმის სიმულაცია). ამ ბუნდოვანების ინტენსიურობა სიღრმის მიხედვით იცვლება. თითოელი პიქსელის სიღრმის ცოდნა ნისლი ეფექტის შექმნის საშუალებას იძლევა. Tomas Akenine-Möller, Eric Haines: Real-Time Rendering. AK Peters, Natick Mass 2002, ISBN 1-56881-182-9 James D. Foley u. a.: Computer Graphics: Principles and Practice. Addison-Wesley, Reading 1995, ISBN 0-201-84840-6 David F. Rogers: Procedural Elements for Computer Graphics. WCB/McGraw-Hill, Boston 1998, ISBN 0-07-053548-5 Alan Watt: 3D Computer Graphics. Addison-Wesley, Harlow 2000, ISBN 0-201-39855-9 Learning to Love your Z-buffer Alpha-blending and the Z-buffer