Skip to main content

მოწყობილობაზე აჩქარებული სხივების მიდევნება

 Hardware accelerated ray tracing

        საუკინე გავიდა ჩემი ბოლო პოსტიდან ამ ბლოგზე. ვეცდები გავაცოცხლო ბლოგი ნელ-ნელა პატარა პოსტებით საინტერესო თემებზე :) ახლა რაც შეეხება უშუალოდ მოწყობილობაზე აჩქარებულ სხივების მიდევნებას. პარატა ისტორიულ შესავალს გავაკეთებ

        სხივების მიდევნების მეთოდი ახალი არაა, 60-იან წლებში მიიქცია ყურადღება, 80-იანებში ჯეიმს კაჯიამ რენდერის განტოლება დაწერა და პირველი ნათელი დემონსტრირება მოახდინა მეთოდის შესაძლებლობისა თუმცა მალევე ნათელი გახდა, რომ მეთოდს დიდი გამოთვლითი რესურსი სჭირდებოდა. რას იზამდნენ მოგეხსენებათ იმ დროინდელი კომპიუტერის შესაძლებლობები, ასე რომ ადგნენ და მეთოდი კარადის ზედა თაროზე შემოდეს და ცოტა ხნით დაივიწყეს. პერსონალური კომპიუტერის გამოჩენიდან მალევე გამოჩნდნენ ვიდეო ბარათები, რომლებიც ეხმარებოდნენ ცენტრალურ პროცესორს გრაფიკულ გამოსახულებასთან სამუშაოდ. ისტორიული მიზეზებიდან გამომდინარე იმ პერიოდისთვის არსებული აპლიკაციების დიდი ნაწილი არ მოითხოვდა საჭიროებას რეალისტირუ ვიზუალიზაციისა შესაბამისად შეიქმნა და დამუშავდა რასტერიზაციის გრაფიკული მეთოდები და შესაბამისი ბიბლიოთეკები openGL/DirectX. მათი პოპულარობის უპირველესი მიზეზი გახდა ის რომ იმ დროისათვის არსებულმა ვიდეო ბარათებმა მათი მხარდაჭერა დაიწყეს. ამ პერიოდისათვის არსებული ვიდეო ბარათები პროგრამირებადი არ იყო. გამოთვლების თანმიმდევრობა(rendering pipeline) მთლიანად წინასწარ იყო განსაზღვრული და შესაბამისად გამოთვლები მოწყობილობის დაბალ დონეზე ხდებოდა. შემდგომ დაემატა უკვე პროგრამირებადი შეიდერები, მიმდევრობა ისევ წინასწარ გამსაზღვრული დარჩა. ამან მეთოდს დიდი შესაძლებლობები მისცა და კიდევ უფრო პოპულარული გახადა. ბევრი რომ არ გავაგრძელო მთავარი ამ ყველაფრიდან არის ის რომ რასტერიზაციის მეთოდი მოწყობილების მწარმოებლებისათვის ძალიან ნაცნობი და კარგად შესწავლილი მეთოდი გახდა. ათწლეულების განმავლობაში დაიხვეწა და უზომოდ აჩქარდა როგორც ალგორითმულ დონეზე ასევე ქვედა დონეზე, მოწყობილობაზე გამოთვლების ეფექტურობის კუთხით. მთელი ამ ხნის განმავლობაში სხივების მიდევნების მეთოდი კარადიის ზედა თაროზე იდო და მტვერი ედებოდა.

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

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

Turing-ის არგიტექტურა

        ბევრს ალბათ ჰგონია რომ Nvidia იყო პირველი ვინც გადაწყვიტა ამ ნაბიჯის გადადგმა. ეს ასე არაა თუმცა სხვებმა ვერ მოახდინეს თავის დამკვიდრება ამ მიმართულებით. Nvidia ბაზარზე ყველაზე დიდი მოთამაშეა და მან უბრალოდ შეძლო ბაზრისთვის თავისი თამაშის წესები შეეთავაზებინა. მოკლედ Nvidia-მ ბოლოს და ბოლოს გადაწყვიტა გაეკეთებინა კარტა რომელიც სხივების მიდევნებისათვის საჭირო გამოთვლებს დაბალ დონეზე დაითვლიდა გრაფიკულ პროცესორზე. Turing არქიტექტურის კარტას გარდა ზოგადი cuda ბირთვებისა დაემატა RT(ray- tracing) ბირთვები რომლებიც. Turing-ის გამოშვებიდან უკვე 2 წელზე მეტი გავიდა და შეგვიძლია ვთქვათ რომ ნელა მაგრამ მაინც მოახდინა NVidia-მ ამ ტექნოლოგიის დამკვიდრება ბაზარზე. ეს არქიტექტურა ჯერ კიდევ ექსპერიმენტალური იყო, გასაკვირი არც არის რადგან პირველი იყო მის რანგში და შესაბამისად სხივების მიდევნების პროგრამულ ომპლემენტაციებს დიდად ვერ ჯობნიდა. მიუხედავად ამისა Nvidia-მ მოახერხა თამაშების ინდუსტრიაში დიდი მოთამაშეების დარწმუნება რომ ღირდა ამ მომავლის ტექნოლოგიის მოსინჯვა. გეიმერების დიდი უმრავლესობა რა თქმა უნდა ლანძღვით შეხვდა ამ ამბავს.

        ნათელი რომ გავხადოთ რატომ გადადგა nvidia-მ ეს ნაბიჯი. რა თქმა უნდა იმიტომ რომ დაინახა დიდი კომერციული სარგებელი რასაც აქამდე ვერ ხედავდა. ნვიდია ცდილობს ორივე ბაზარს გადასწვდეს. როგორც რეალურ დროში მომუშავე აპლიკაციებს იქნება ეს თამაშები თუ სხვა ასევე არარეალურ დროში მომუშავეებს როგორიც არის ზემოთხსენებული ფილმების ინდუსტრია, პროდუქტის ვიზუალიზაცია და ა.შ.

Ampere არქიტექტურა

        სულ ცოტა ხნის წინ nvidia-მ უკვე მეორე თაობის გრაფიკული პროცესური Ampere წარადგინა სხივების მიდევნების მხარდაჭერით. Ampere Turing-ისგან განსხვავებით საგრძნობლად წარმადია და ნაკლების შეზღუდვები აქვს ფუნქციონალის გამოყენების კუთხით. მე პირადად დარწმუნებული ვარ რომ მეთოდის მოწყობილობაზე აჩქარება ძალიან შეუწყობს ხელს მეთოდის მიმართ დამოკიდებულების შეცვლას. მომავალი 10 წლის განმავლობაში რამოდენიმეჯერ აჩქარდება გამოთვლები. ეს იმას არ ნიშნავს რომ რასტერიზაციის მეთოდი აღარავის დაჭირდება და არავინ გამოიყენებს. არა. უბრალოდ გვექნება საშუალება მოთხოვნებიდან გამომდინარე ავირჩიოთ მეთოდი.

        

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