Skip to main content

მსგავსი სხივების პაკეტებად მიდევნება

Packet based coherent ray tracing
სურათზე ნაჩვენებია მსგავსი სხივები და მათი შემომსაზღვრელი ფრუსტუმი.
        საწარმოო რენდერერებში, მაშინ, როდესაც პროექტში არსებული სცენის მოცულობა იზრდება, იზრდება სცენაში არსებული ობიექტების რაოდენობა, იზრდება სენსორის გარჩევადობა, ... , საჭირო ხდება დამატებითი ოპტიმიზაციების გაკეთება რათა რენდერერი დასმულ ამოცანებს ადვილად გაუმკლავდეს. წინა პოსტებში ჩვენს მიერ განხილული რენდერის პროცესში ხდებოდა ციფრულ გამოსახულების თითოეული პიქსელისთვის აღდგენილი კამერიდან მიმართული პირველადი სხივების მიდევნება სათითაოდ. ამ დროს ხდებოდა თითოეული სხივისათვის თანაკვეთის შემოწმება სცენასთან, რომელიც გულისხმობს თანაკვეთების შემოწმებას სცენის შესაბამისი ხის(BVH-ის) კვანძებთან რეკურსიულად, ძირიდან ფოთლებისკენ. შესაბამისად ყოველი სხივს თავიდან უწევს ხეში ჩასვლა შესაბამის ფოთლებამდე სადაც უკვე ხდება უშუალოდ პრიმიტივებთან თანაკვეთის გამოთვლა. სცენაში არსებული ობიექტების რაოდენობის ზრდა იწვევს ხის ზრდას სიმაღლეში და შესაბამისად თანაკვეთის დათვლის პროცესში სხივს უხდება უფრო ღრმად ჩასვლა ხეში, რომ მივიდეს იმ გეომეტრიასთან რომელსაც კვეთს რეალურად.
        თუ დავაკვირდებით კამერიდან წამოსულ პირველად სხივებს ადვილად შევამჩნევთ, რომ მეზობლად მყოფი სხივები(ახლომდებარე პიქსელების შესაბამისი) მსგავს გზას გადიან როგორც სივრცეში ასევე BVH-თან თანაკვეთის ძებნისას.
        ჩვენ შეგვიძლია თანამკვეთი სხივების ეს მსგავსება ჩვენს სასარგებლოდ გამოვიყენოთ და გავზარდოთ გამოთვლითი პროცესის ეფექტურობა. ამისათვის იყენებენ სხივების პაკეტებად მიდევნების მეთოდს.  სხივების პაკეტებად მიდევნების მეთოდი პირველად გამოიყენა Ingo Wald-მა, 2001-ში. თუკი ჩვენ მოვახდენთ მსგავსი სხივების განსაზღვრას და მათ შევკრავთ პაკეტებად, მაშინ შევძლებთ სხივის სცენასთან თანაკვეთის მაგივრად დავითვალოთ პაკეტის თანაკვეთა სცენასთან. ამით ჩვენ თავიდან ავიცილებთ იმ მსგავს გამოთვლებს, რომელიც თან ახლავს მსგავი სხივების მიდევნების პროცესს. ხშირად იყენებენ 4x4, 8x8, 16x16, 32x32 ზომის პაკეტებს. პაკეტში არსებული სხივების მსგავზება(coherence) პაკეტის კორექტულობას არ არღვევს თუმცა მკვეთრად მოქმედებს მის ეფექტურობაზე. უმსგავსი(incoherent) სხივების პაკეტებად მიდევნებამ, შესაძლოა გამოიწვიოს წარმადობის ვარდნა გაზრდის ნაცვლად. ასევე პაკეტის მიდევნების ეფექტურობა ეცემა მაშინ, როდესაც პაკეტი სცენის სხვადასხვა ობიექტებს ხვდება.

        სხივების  პაკეტებად მიდევნების პროცესში დამატებით ოპტიმიზაციას წარმოადგენს სხივების თანაკვეთის დათვლამდე მათი შემომსაზღვრელი ფრუსტუმის  შემოწმება თანაკვეთაზე, რაც თავიდან აგვაცილებს ტყუილ შემოწმებებს, მაშინ როდესაც პაკეტი ცდება ობიექტს(იხილეთ პირველი სურათი). ფრუსტუმი(ინგლისურად "frustum") წარმოადგენს 6 სიბრტყით შემოსაზღვრულ ფიგურას რომელიც გარს ეკვრის სხივებს. დამატებითი ტესტისათვის შეიძლება ნებისმიერი სხვა ფიგურის გამოყენება რომელიც გარს ეკვრის სხივებს, მაგალითად კონუსი. შემომსაზღვრელი ფიგურის ფორმა მეთოდის კორექტულობას არ არღვევს, შერჩეული შემომსაზღვრელი ფიგურის ეფექტურობაზე მოქმედებს 2 ფაქტორი: ფიგურა მჭიდროდ უნდა ეკვროდეს სხივებს და მისი თანაკვეთის შემოწმება BVH-ის კვანძის შემომსაზღვრელ ფიგურასთან(როგორც წესი AABB-სთან) უნდა იყოს მსუბუქი ოპერაცია.
        რენდერის პროცესში მსგავსი სხივები გვხვდება ბევრგან თუმცა ხშირ შემთხვევაში რთულია მათი თავმოყრა ერთად და პაკეტებად მიდევნების ორგანიზება. პაკეტში შეიძლება შევკრათ მაგალითად განათების შერჩევისას ერთი განათებისკენ მიმართული სხივები, ასეთ შემთხვევაში განათება რაც უფრო დიდია ჩვენი სხივები მეტად გაშლილი იქნება და შესაბამისად პაკეტებად მიდევნება ნაკლებად ეფექტური. კამერიდან წამოსული სხივების მიდევნების შემთხვევაში, სხივების გაშლას იწვევს მაგალითად ლინზის ზომის ზრდა, რაც ასევე ამცირებს პაკეტების მიდევნების ეფექტურობას. არის მეთოდბები, რომლებიც ახდენებ სხივების პაკეტებად მიდევნებას სპეკულარული არეკვლის შემდგომაც, როდესაც მათი გაშლა არ ხდება დიდად. ასევე ახდენენ უმსგავსი(incoherent) სხივების დაჯგუფებას მსგავსი სხივების პაკეტებად თუმცა დამატებითი გამოთვლითი რესურსის ხარჯზე რაც საბოლოოდ ისევ ამცირებს მეთოდის ეფექტურობას.
კამერიდან წამოსული პირველადი სხივების 8x8 პაკეტებად მიდევნება. რეზოლუცია: 1920x1080. სცენა: დრაკონის 256 ინსტენსი, თითოეული 100000 სამკუთხედით. რენდერის დრო 13 წამი.  CPU : Intel® Pentium® Dual CPU E2180. 2.0GHz.


Comments

Popular posts from this blog

რუსული რულეტკის მეთოდი

Russian Roulette Technique რუსული რულეტკის მეთოდი არის ფართოდ გავრცელებული ტექნიკა მონტე-კარლოს ინტეგრირების პროცესის შესაწყვეტად(სახელწოდება მოდის ცნობილი რუსული თამაშიდან). იმის მაგივრად, რომ პროცესი შევწყვითოთ ხისტად, მაგალითად შერჩევების რაოდენობის რაიმე მაქსიმალურ რაოდენობაზე, რუსული რულექტკის მეთოდი გვეხმარება ინტეგრირების პროცესის მიუკერძოვებლად შეწყვეტაში. მთავარი იდეა რუსული რულეტკის მეთოდისა არის ის, რომ რუსული რულეტკა წყვეტს მონტე კარლოს მეთოდს რაიმე არანულოვანი p ალბათობით(ალბათობა შეიზლება შეირჩეს ერთხელ ან მონტე კარლოს მეთოდის ყოველ ბიჯზე სათითაოდ რაიმე მნიშვნელოვნობით) ან აგრძელებს მას და შემდგომი პროცესიდან მიღებულ შედეგს ამრავლებს 1/p - ზე. რადგან რუსული რულეტკის მეთოდი პროცესის შეწყვეტას ახდენს რაიმე არანულოვანი p ალბათობით ყოველთვის რჩება იმის შანსი, რომ პროცესი გაგრძელდეს რაც იმას ნიშნავს, რომ მონტე კარლოს ინტეგრირების პროცესისათვის ნებისმიერი სიღრმე მიღწევადი ხდება. სწორედ ამიტომ ხისტი შეზღუდვით მიღებული მიკერძოება( სისტემატიური შეცდომა ) ქრება რუსული რ...

ფერების RGB მოდელი

RGB Color Model         ფერების RGB მოდელი წარმოადგენს ისეთ მოდელს რომელშიც სამი ძრირითადი ფერის წითელი, მწვანე და ლურჯის საშუალებით მიიღება ფერების ფართო სპექტრი. მისი დასახელებაც მოდის სწორედ ძირითადი ფერების ინგლისური სახელწოდების ინიციალებიდან(Red, Green, Blue).         ფერთა სპექტრის ამდაგვარი წარმოდგენა დაკავშირებულია იმასთან, რომ გამოსახულების გამოტანის მოწყობილობებში რომელიც გააჩნიათ კომპიუტერებს, ტელევიზორებს ფერის მიღება ფიზიკურად ხდება სწორედ ამ სამი ძირითადი ფერის შეზავებით. დღესდღეობით ყველაზე გავრცელებული არის 24 ბიტიანი RGB მოდელი, სადაც თითოეულ კომპონენტს ეთმობა ერთი ბაიტი და შესაბამისად შეუძლია მიიღოს ნებისმიერი მნიშვნელობა [0, 255] დიაპაზონში, რაც საბოლოოდ გვაძლევს 16777216 განსხვავებულ ფერს.

CPU GPU და ჰიბრიდული რენდერერები

წყარო         დღემდე აქტუალურია თემა CPU რენდერერი ჯობია თუ GPU . იმისათვის რომ ამ კითხვას მეტნაკლებად ამომწურავი პასუხი გავცეთ განვიხილოთ რენდერერის სტრუქტურა და მოცემულ პლათფორმებზე იპმლემენტაციასთან დაკავშირებული პრობლემები. რენდერერი შედგება რამოდენიმე დიდი კომპონენტისგან როგორიცაა ხილვადობის ამოცანა შეფერადება ინტეგრატორები ფუნქციონალი ხილვადობის ამოცანა         ხილვადობის ამოცანა ერთერთი ყველაზე რთულია გამოთვლითი რესურსის კუთხით. გარდა იმისა, რომ სხივის გეომეტრიასთან თანაკვეთის დათვლას საკმაოდ დიდი დრო ჭირდება, ასევე საჭიროა ამაჩქარებელ სტრუქტურების განახლება კადრიდან კადრზე დინამიური სცენებისათვის. კარგი ისაა, რომ რენდერერის ეს ნაწილი საკმაოდ ადვილად ენკაპსულირებადია და შესაბამისად გვხვდება ბიბლიოთეკები მაგალითად embree(intel), fireRays(AMD), OptiX prime(nvidia), ... რომლებიც ამ ამოცანას საკმაოდ ეფექტურად ხსნიან და რენდერერებშიც მეტნაკლებად ადვილად ინტეგრირდებიან.  სხივების მიდევნების პროცესში ძალიან მნიშვნელოვანია მსგ...