Skip to main content

ამაჩქარებელი სტრუქტურები

acceleration structures
სურათზე ნაჩვენებია სფეროს მეოთხედი ნაწილი რომელზეც აგებულია რვაობითი ხე(OcTree).
        გზების მიდევნების ამოცანის, ისევე როგორც სხივების მიდევნებაში ამოცანის ამოხსნის პროცესში მნიშვნელოვანი როლი უჭირავს სხივის გეომეტრიასთან თანაკვეთის ამოცანას, შესაბამისად მისი ოპტიმიზაცია მკვეთრად ამცირებს ამოცანის ამოხსნის საბოლოო დროს. სხივების ან სხივების პაკეტების მიდევნების პროცესში როგორც წესი სამკუთხედან თანაკვეთის ტესტების უმრავლესობა(80%-ზე მეტი) წარუმატებლად სრულდება. ასე რომ ჩვენი მიზანია დროულად დავადგინოთ ასეთი სხივები და დავაბრუნოთ უარყოფითი პასუხი. თუ სხივი/პაკეტი ყველა არსებულ ტესტს გაივლის მაშინ ხდება მისი შემოწმება მცირე რაოდენობის გეომეტრიულ პრიმიტივებთან. არსებული ამაჩქარებელი სტრუქტურები ახდენენ მოცემული გეომეტრიის საფუძველზე ხის აგებას, რომლის ფოთლებშიც ინახებიან გეომეტრიული პრიმიტივები. ხის აგების მეთოდებშიც გამოიყოფა 2 კატეგორია:
  1. სივრცის დანაწევრების მეთოდები - ახდენენ სივრცის დანაწევრებას და მათში არსებული გეომეტრიის ნაწილების ჩალაგებას ხის შვილობილ კვანძებში. მთავარი სისუსტეები ამ მეთოდის არის ის, რომ მაგალითად სივრცის თანაბარი დანაწევრება არ იწვევს გეომეტრიის(პრიმიტივების) თანაბარ დანაწილებას რაც გვაძლევს არაბალანსირებული ხეს(ocTree-ს შემთხვევა), ასევე გეომეტრიული პრიმიტივი შეიძლება ფარავდეს სივრცის სხვადასხვა ნაწილებს და შესაბამისად შეიძლება მოხვდეს ხის რამოდენიმე განშტოებაში ერთდროულად.
  2. გეომეტრიის დანაწევრება - ახდენენ გეომეტრიული პრიმიტივების დაყოფას და გადანაწილებას ხის შვილობილ კვანძებში. ასეთი ტიპის მეთოდებზე დაფუძნებული ამაჩქარებელი სტრუქტურები იღებენ უფრო ბალანსირებულ ხეს რაც საბოლოოდ გვაძლევს სტაბილურ წარმადობას. მთავარი სისუსტეები ასეთი მეთოდების არის ის, რომ ხის კვანძები რომლებიც წარმოადგენენ შემომსაზღვრელ ყუთებს(უმეტეს შემთხვევაში) ხშირად ფარავენ ერთმანეთს სივრცეში. ასეთი ამაჩქარებელი სტრუქტურების აგების დროს ერთ ერთი მთავარი მიზანი სწორედ ამ გადაფარვების მინიმიზაციაა.
        არსებული ამაჩქარებელი სტრუქტურებიდან გამოვყოთ ყველაზე გავრცელებული სტრუქტურები. ერთ-ერთი ყველაზე ძლიერი კანდიდატები არიან:

  1. k განზომილებიანი ხე (k-Tree) - ახდენს გეომეტრიის შემომსაზღვრელ ყუთში არსებული სივრცის დანაწევრებას რეკურსიულად და ალაგებს გეომეტრიას ხეში. ხის ყოველ სიმაღლეზე სივრცის დანაწევრება ხდება სხვადასხვა ღერძის მიმართ. 
  2. რვაობითი ხე (ocTree) - ახდენს გეომეტრიის შემომსაზღვრელ ყუთში არსებული სივრცის დანაწევრებას 8 თანაბარ ნაწილად შუაზე გაყოფის მეთოდით და ახდენს გეომეტრიის გადანაწილებას ხის შვილობის კვანძებში. შემდეგ ჩადის იმ შვილებში რომლებშიც მოხვდა გეომეტრია და იმეორებს პროცესს მანამ, სანამ ხის ფოთლებში არ დარჩება წინასწარ განსაზღვრული მცირე რაოდენობა პრიმიტივებისა, ან მივაღწევთ წინასწარ განსაზღვრულ მაქსიმალურ სიღრმეს.
  3. შემომსაზღვრელი ყუთების იერარქია (BVH) - მოყვანილი ორი ამაჩქარებელი სტრუქტურისგან განსხვავებით შემომსაზღვრელი ყუთების იერარქია განეკუთვნება გეომეტრიის დანაწევრების ჯგუქს. როგორც სახელწოდებიდან ჩანს ის არის შემომსაზღვრელი ყუთების იერარქია და რადგან მისი აგება ხდება გეომეტრიის დანაწევრებით ერთი კონკრეტული გეომეტრიული პრიმიტივი მხოლოდ ერთ ფოთოლში ხვდება. თუმცა მასაც, როგორც ყველა გეომეტრიის დანაწევრების მეთოდს აქვს ყუთების გადაფარვის პრობლემა. არსებობს როგორც ორობითი ასევე მრავლობითი შემომსაზღვრელი ყუთების იერარქიები(MBVH).
        

სურათზე ნაჩვენებია შემომსაზღვრელი ყუთების იერარქია(BVH) როგორც გეომეტრიული სახით ასევე ორობითი ხის სახით.


Comments

Popular posts from this blog

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

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

სინათლის ხილული სპექტრი და სხივის თვისებები

Visible Spectrum სურათზე ნაჩვენებია პრიზმაში გამავალი თეთრი სხივის სპექტრულად გაშლის პროცესი.         სინათლე წარმოადგენს ელექტრომაგნიტურ ტალღას, რომელსაც როგორც ყველა ელექტრომაგნიტურ ტალღას გააჩნია რამოდენიმე მნიშვნელოვანი მახასიათებელი. ერთერთი მნიშვნელოვანი მახასიათებელი არის ტალღის სიგრძე, რომელიც განსაზღვრავს სხივის სპექტრულ ფერს. ელექტრომაგნიტური ტალღები ბუნებაში და თანამედროვე სამყაროში მრავლად გვხვდები. სხვადასხვა ტალთის სიგრძის(სიხშირის) ტალღებს იყენებენ როგორც საყოფაცხოვრებო(რადიო, მობილური ტელეფონი) დანიშნულების, ასევე სამედიცინო(რენდგენის სხივები) და სამხედრო(რადარები) მოწყობილობებში. ადამიანის თვალისთვის ხილული სინათლის ელექტრომაგნიტური ტალღების ტალღის სიგრძე იწყება დაახლოებით 400 ნანომეტრიდან და მთავრდება 700 ნანომეტრზე. ამ დიაპაზონს ქვემოთ ექცევა ულტრაიისფერი ტალღები და დიაპაზონს ზემოთ ექცევა ინფრაწითელი, რომელსაც ადამიანის თვალი ვერ აღიქვამს(იხილეთ ქვემოთ მოცემული სურათი). სინათლის თეთრი სხივი შედგება სხვადასხვა სიხშირის ტალღების ერთობლიობისგან.        

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

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