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

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 განსხვავებულ ფერს.