Skip to main content

Posts

Showing posts from 2014

მრავალი მნიშვნელოვნობით შერჩევა *

Multiple Importance Sampling         ჩემი იმპლემენტაცია პირდაპირი განათების ინტეგრირებისა მრავალი მნიშვნელოვნობის მეთოდით Shadertoy-ზე. :)         პირდაპირი განათების დასათვლელად ხდება განათების გამოთვა 2 მეთოდით: BRDF -ის შერჩევით და განათების წყაროების შერჩევით , და მიღებული შედეგების შეზავება ხდება MIS-ის საშუალებით :)

მხები სივრცე

Tangent Space სურათზე ნაჩვენებია სფერო, მისი ზედაპირის წერტილში ნორმალი(ლურჯი) და მხები(წითელი).         მანამ სანამ განვმარტავთ მხებ სივრცეს კარგად უნდა გვესმოდეს თუ რას ნიშვანს სივრცე და საკოორდინატო სისტემები. 3 განზომილებიანი საკოორდინატო სისტემაში განზაზღვრულია ცენტრი და 3 ძირითადი მიმართულება, პირობითად ამ მიმართულებებს X, Y და Z-ით აღნიშნავენ. ასეთ სისტემაში ნებისმიერ წერტილი შეგვიძლია აღვწეროთ (x,y,z) სამეულით. თუ ეს 3 მიმართულება არის ერთმანეთის მიმართ მართობული მაშინ ასეთ საკოორდინატო სისტემას ეწოდება მართკუთხა კოორდინატთა სისტემა. იმისათვის რომ ადვილად დავიმახსოვროთ ვექტორების დასახელებელი არსებობს მარჯვენა და მარცხენა ხელის წესი, რომელიც განსაზღვრავს საკოორდინატო სისტემის ვექტორებს სხვადასხვანაირად. წესის თანახმად თუ ჩვენ გავშლით 3 თითს: ცერას, საჩვენებელს და შუას, ხოლო 2-ს(ნეკას და არათითს) მოვხრით მაშინ X-ს ვუწოდებთ მიმართულებას, რომელსაც უთითებს საჩვენებელი, Y-ს უთითებს  შუა და Z-ს უთითებს ცერა. (იხილეთ ქვედა სურათი) სურათზე ნაჩვენებია საკოორდინატო სისტემა განმა

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

Packet based coherent ray tracing სურათზე ნაჩვენებია მსგავსი სხივები და მათი შემომსაზღვრელი ფრუსტუმი.         საწარმოო რენდერერებში, მაშინ, როდესაც პროექტში არსებული სცენის მოცულობა იზრდება, იზრდება სცენაში არსებული ობიექტების რაოდენობა, იზრდება სენსორის გარჩევადობა, ... , საჭირო ხდება დამატებითი ოპტიმიზაციების გაკეთება რათა რენდერერი დასმულ ამოცანებს ადვილად გაუმკლავდეს. წინა პოსტებში ჩვენს მიერ განხილული რენდერის პროცესში ხდებოდა ციფრულ გამოსახულების თითოეული პიქსელისთვის აღდგენილი კამერიდან მიმართული პირველადი სხივების მიდევნება სათითაოდ. ამ დროს ხდებოდა თითოეული სხივისათვის თანაკვეთის შემოწმება სცენასთან, რომელიც გულისხმობს თანაკვეთების შემოწმებას სცენის შესაბამისი ხის( BVH -ის) კვანძებთან რეკურსიულად, ძირიდან ფოთლებისკენ. შესაბამისად ყოველი სხივს თავიდან უწევს ხეში ჩასვლა შესაბამის ფოთლებამდე სადაც უკვე ხდება უშუალოდ პრიმიტივებთან თანაკვეთის გამოთვლა. სცენაში არსებული ობიექტების რაოდენობის ზრდა იწვევს ხის ზრდას სიმაღლეში და შესაბამისად თანაკვეთის დათვლის პროცესში სხივს უხდე

გარემომცველი წინაღობა

Ambient Occlusion სურათზე ნაჩვენებია საკლასო ოთახი გარემომცველი წინაღობით და მის გარეშე(გაბნეული განათებით). სურათი აღებულია aaa-studio-ს საიტიდან.           როგორც ვიცით გლობალური განათების დათვლის პროცესში მთავარ პრობლემას ირიბი განათების დათვლა წარმოადგენს. ირიბი ეწოდება იმ განათებას, რომელიც პირდაპირ სინათლის წყაროდან არ მოდის. მაშინ, როდესაც რენდერის დრო უფრო მნიშვნელოვანია ვიდრე ხარისხი ცდილობენ ირიბი განათების კორექტულ დათვლას თავი აარიდონ. ამ პრობლემის ერთ-ერთ გადაწყვეტას წარმოადგენს გაბნეული განათება (Ambient Light), რომელიც შემოგვაქვს სცენაში და ვიძახით, რომ ის ყველგანაა, მას არ გააჩნია პოზიცია და მიმართულება. გაბნეული განათების შემოღება დაგვეხმარება გავანათოთ სცენის ის წერტილები, სადაც სინათლის წყაროდან წამსული განათება პირდაპირ ვერ აღწევს, თუმცა მათი განათება მოხდება თანაბრად, ყველგან ერთნაირად, რაც რა თქმა უნდა რეალობისგან შორსაა.         გარემომცველი წინაღობა(თარგმანი შესაძლოა არ იყოს სწორი, ინგლისურად A mbient O cclusion) წარმოადგენს ირიბი განათების მიახლოვების კი

მეტროპოლისის სინათლის ტრანსპორტირება

Metropolis Light Transport         1997 წელს ერიკ ვიჩმა( Eric Veach ) თავის სადოქტორო ნაშრომში წარმოადგინა რენდერის განტოლების ამოხსნის ახალი მეთოდი "მეტროპოლისის სინათლის ტრანსპორტირება"(MLT). როგორც სახელწოდებიდან ჩანს მეთოდი დაფუძნებულია მეტროპოლისის ალგორითმზე , რომელიც თავისმხრივ არის მარკოვის ჯაჭვებზე დაფუძნებული მონტე-კარლოს ინტეგრირების მეთოდი და რომელიც შეიქმნა 50-იან წლებში, თუმცა გრაფიკაში ამ დრომდე მისი გამოყენება არ მომხდარა.         მეტროპოლისის მეთოდის მთავარი იდეა მდგომარეობს იმაში, რომ მას შემდეგ რაც მოხდება სინათლის გადამტანი გზის(გზა რომელიც აერთებს განათებას სენსორთან) პოვნა, მეთოდი არსებული გზის მუტაციის გზით იღებს მსგავს გზებს, რომელთა მიღების ფასიც ბევრად დაბალია. გზების ორმხრივი მიდევნების მეთოდისგან განსხვავებით ის ბევრად უფრო ადვილად უმკლავდება SDS(სპეკულარული->დიფუზიური->სპეკულარული) გზებს, მწველ სხივებს(caustics). თავად ვიჩი აღნიშნავს მის ნაშრომში, რომ პირდაპირი განათების დათვლისთვის ალტერნატიული მეთოდები ჯობნის მეტროპოლისს, რის გამ

სხივის თანაკვეთა AABB-სთან

Ray AABB Intersection         სხივების მიდევნების მეთოდში AABB-სთან სხივის თანაკვეთის ამოცანა უდაოდ ერთერთი უმნიშვნელოვანესია და შესაბამისამ მისი ოპტიმალური გადაჭრა ძალიან მნიშვნელოვანი საკითხია. როგორც ვიცით AABB ( A xis A ligned B ounding B ox) წარმოადგენს პარალელეპიპედს, რომლის წახნაგებიც საკოორდინატო სიბრტყეების პარალელურია.         პირველ ეტაპზე განვიხილოთ სწორედ სხივის საკოორდინატო სიბრტყის პარალელურ სიბრტყესთან თანაკვეთის ამოცანა.         როგორც სურათზე ჩანს თანაკვეთის წერტილამდე მანძილი არის (y' - y)/sin(α). ნორმალიზებული (dx,dy,dz) ვექტორის შემთხვევაში sin(α) ტოლი იქნება dy-ის.         მივუბრუნდეთ aabb-სთან თანაკვეთას ამოცანას. სიმარტივისათვის განვიხილავთ შემთხვევას 2 განზომილებაში სადაც aabb მოცემულია [min, max] დიაპაზონით თითოეული განზომილების მიმართ, რომლებიც ჩვენს შემთხვევაში გვაძლევს 4 წრფეს. შესაბამისად თითოეულ ამ წრფესთან თანაკვეთას ვიპოვით შემდეგნაირად: t0x = (aabb.min.x - ray.origin.x) / ray.dir.x  t1x = (aabb.max.x - ray.origin.x) / ray.dir

Intel SPMD Program Compiler

        Intel SPMD Program Compiler, შემოკლებით ISPC, არის C-ს სტილის SPMD(ერთი პროგრამა მრავალი მონაცემი) პროგრამირების ენა, რომელიც პარალელური გამოთვლების მარტივად ჩატარების კარგ საშუალებას იძლევა. ISPC ახდენს თქვენს მიერ მიცემული კოდის გაპარალელებას პროცესორის ბირთვებში არსებულ SIMD(ერთი ინსტრუქცია მრავალი მონაცემი) გამომთვლელებზე და 3-ჯერ ან უფრო მეტჯერ ახდენს გამოთვლების აჩქარებას.         ISPC ძალიან ამარტივებს პარალელური გამოთვლების კეთების პროცესს და შესაბამისად ზრდის პროდუქტიულობას. ის არა მხოლოდ ინტერპრეტატორია კოდის არამედ შეიცავს რიგ კოდის ოპტიმიზატორებს რათა მაქსიმალურად გაზარდოს პროგრამის ეფექტურობა. თუმცა დოკუმენტაციის თანახმად დიდი ყურადღება უნდა მიექცეს მონაცემებზე წვდომას, რათა მივიღოთ ადვილად და მეტად ეფექტურად გაპარალელებადი პროგრამული კოდი. მონაცემების შეგროვება/გაბნევა( gather/scatter ) პროგრამაში ართულებს მის გაპარალელებას რაც ამცირებს ეფექტურობას. მონაცემებზე წვდომა მკვეთრად მოქმედებს წარმადობაზე, რადგან პირდაპირ არის დამოკიდებული პროცესორის კეშის მოქმედებ

რენდერის განტოლება 2

Rendering Equation Area Formulation         ჩვენ უკვე ნაცნობია რენდერის განტოლების ერთი სახე, სადაც განტოლების ფორმულირება ხდება ინტეგრალის ნახევარსფეროზე(Ω-ზე, იხილეთ ქვემოთ მოცემული განტოლება), რაც იმას ნიშნავს, რომ ინტეგრირებას ვახდენთ x წერტილში ნახევარსფეროს სხვადასხვა მიმართულებიდან მოსული განათებებისა.         მოცემულ განტოლებაში L i ასახავს x წერტილში w i მიმართულებიდან მოსულ განათებას, რაც განტოლებაში მთავარ უცნობ სიდიდეს წარმოადგენს. თუ ჩვენ გვეცოდინება ზედაპირის y წერტილი, რომელიც x წერტილიდან w i მიმართულებით ჩანს შეგვიძლია დავწეროთ:         რაც იმას ნიშნავს, რომ x წერტილში w i მიმართულებიდან მოსული განათება ტოლია იმ განათებისა, რომელსაც y წერტილი ასხივებს -w i მიმართულებით. ვგულისხმობთ რომ y-დან x-სკენ გზაში ენერგია არ იკარგება(იხილეთ პირველი სურათი). ლამბერტის კოსინუსის წესის თანახმად y წერტილიდან(მცირე მიდამოდან) -w i მიმართულებით წამოსული ინტენსივობა N y ნორმალთან არსებული კოთხის კოსინუსზეა დამოკიდებული. ასევე x წერტილში მოსული ინტენსივობა w

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

YUV color model         პირველ ეტაპზე, როდესაც მხოლოდ  შავთეთრი ვიდეოგამოსახულება არსებობდა მონაცემების შენახვა/გადაცემას ახდენდნენ ინტენსივობების ბუფერის სახით. ამის შემდეგ, როცა უკვე შესაძლებელი გახდა ფერადი ვიდეოგამოსახულების მიღება დადგა მისი შენახვისა და გადაცემის საკითხი. ტელევიზიისთვის მნიშვნელოვანი იყო, რომ მონაცემთა შენახვის ახალი მექანიზმი ძველთან მაქსიმალურად თავსებადი ყოფილიყო. ამ ყველაფრის გათვალისწინებით მოხდა ახალი მოდელის შემუშავება, სადაც განსხვავებით ფერების RGB  მოდელი საგან, ფერის ინფორმაცია ინტენსივობის ინფორმაციისგან გამიჯნულია. ახალ მოდელში ინტენსივობის Y სიგნალი შენარჩუნდა უცვლელად და მას დაემატა UV სიგალი, რომელიც განსაზღვრავს ფერს(იხილეთ ქვემოთ მოცემული სურათი).         Y-ის მნიშვნელობის მიღება ხდება RGB მოდელში R, G, და B კომპონენტების აწონილი ჯამით. სადაც         მარტივი გარდაქმნებით ხდება ასევე მონაცემების Y'UV მოდელიდან RGB მოდელში გადაყვანა. ასევე შესწავლილი და დადგენილია ის ფაქტი, რომ ადამიანის თვალი ინტენსივობის მიმართ უფრო მქრძნობია

განათების გავრცელების სიმულაცია რეალისტური გამოსახულების მისაღებად

Light Transport Simulation for Realistic Images         დღეს უკვე აღარავის უკვირს ფილმებში ის დაუჯერებელი კადრები და ეფექტები, რისი ნახვაც 20 წლის წინ გააოგნებდა მაყურებელს.  ფილმების დიდ ნაწილში, კომპიუტერული დამუშავების სტადიაზე, გამოსახულების ნაწილობრივი ან/და სრული ჩანაცვლება ხდება. ჩანაცვლებული გამოსახულება კომპიუტერულად მუშავდება მაღალი სიზუსტის გამოთვლითი მეთოდებით და ერგება არსებულ კადრს ისე, რომ ეს პროცესი მაყურებლისთვის შეუმჩნეველი რჩება.  არსებული ან/და ვირტუალური გარემოს გამოსახულების კომპიუტერული შექმნის და დამუშავების პროცესი თავის მხრივ საკმაოდ რთული და კომპლექსური ამოცანების გადაჭრას გულისხმობს.  კინოინდუსტრია ერთ-ერთი ყველაზე ძვირადღირებული ინდუსტრიაა მსოფლიოში. თანამედროვე ფილმების ბიუჯეტი ასეულ მილიონებსაც კი აღწევს, რაც განპირობებულია ძვირადღირებული ტექნოლოგიებით, მაღალკვალიფიციური და მაღალანაზღაურებადი კადრებით და ფილმზე მუშაობის პროცესის სირთულით. როგორც ვთქვით ამ პროცესში კომპიუტერულ გრაფიკას დიდი როლი უკავია. მეორე, არანაკლებ დიდი, ძვირ

შემომსაზღვრელი ყუთების იერარქია

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

შემომსაზღვრელი ფიგურები

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

რვაობითი ხე

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

სივრცული დაყოფა და ობიექტებად დაყოფა

spatial and object partitioning სურათზე ნაჩვენებია შემთხვევა, როდესაც მოცემული 2 სამკუთხედის(პრიმიტივის) დაყოფა ხდება ობიექტებად(მარცხენა) და სივრცულად(მარჯვენა).           ამაჩქარებელი სტრუქტურის (ხის) აგების პროცესი გულისხმობს პრიმიტივების გადანაწილებას ხის შიდა და გარე კვანძებში, მთავარია შევიმუშავოთ გადანაწილების ისეთი მეთოდი რომელიც მოქვცემს უკეთეს შედეგს. განვიხილოთ ხის აგების ორი ტიპის მეთოდი: სივრცული დაყოფა - სივრცული დაყოფის დროს შემოგვაქვს რაიმე სივრცული გამყოფი(მაგალითად სიბრტყე) და იმის მიხედვით, თუ გამყოფის რომელ მხარეს ექცევა პრიმიტივი, ვანაწილებთ შვილობილ კვანძებში. ასეთ შემთხვევაში ერთი პრიმიტივი შეიძლება რამოდენიმე კვანძში მოხვდეს. სხვა სიტყვებით რომ ვთქვათ, ერთ პრიმიტივს შესაძლოა რამოდენიმე კვანძი უთითებდეს. ობიექტების დაყოფა - ობიექტების დაყოფის დროს ხდება პრიმიტივების გადანაწილება შვილობილ კვანძებში ისე, რომ ყოველი პრიმიტივი ხვდება ერთ რომელიმე კვანძში, სხვა სიტყვებით რომ ვთქვათ: ნებისმიერ პრიმიტივს უთუთებს მხილოდ ერთი კვანძი.         ხეები, რომელთა ა

პუასონის დისკის შერჩევა

Poisson disk sampling სურათზე ნაჩვენებია 3 კვადრატი, რომელშიც არის დასმული  64 წერტილი  თანაბარი შერჩევით(მარცხენა), შრეებად შერჩევით(შუა) და პუასონის დისკის შერჩევით(მარჯვენა).         მაგალითად გვსურს მოვახდინოთ n წერტილის თანაბარი შერჩევა კვადრატში ამისთვის ყველაზე მარტივი გზა არის, რომ ერთმანეთისგან დამოუკიდებლად მოვახდინოთ n ცალი შერჩევა და თითოეული შერჩევაზე x და y კოორდინათები შევარჩიოთ განსაზღვრულ დიაპაზონში თანაბრად(შემთხვევითად). ასეთი შერჩევა ადვილი ჩასატარებელია და კორელაციასაც არ განიცდის, თუმცა განაწილება თანაბარს მიუახლოვდება უსასრულობაში და არცერთი ფიქსირებული დროიდ მომენტისთვის ჩვენ არ შეგვიძლია დარწმუნებით ვთქვათ რაიმე ქვემიდამოში არის თუ არა მოხვედრილი შერჩევები. ერთერთი მეთოდი, რომელიც ამ პრობლემას მეტნაკლებად ჭრის არის შრეებად შერჩევა , თუმცა არსებობს მეთოდები რომლებიც კიდევ უფრო კარგ შედეგს იძლევა.         პუასონის დისკის შერჩევა გვეხმარება შერჩევების ფიქსირებული რაოდენობისთვის მოვახდინოთ შერჩევა სასურველ განაწილებასთან უფრო მიახლოვებული ვიდრე თანაბარი ან

ნორმალური განაწილება

Normal Distribution სურათზე ნაჩვენებია ნორმალური განაწილების გრაფიკები განსხვავებული  μ  და  σ  პარამეტრებით.         ნორმალური განაწილება არის ერთ-ერთი ყველაზე ხშირად გამოყენებადი განაწილება სტატისტიკაში. ნორმალური განაწილების სიმკვრივის ფუნქცია მოიცემა შემდეგი სახით:         ფუნქცია განსაზღვრულია მთელ ღერძზე და ორივე მიმართულებით მიისწრაფვის 0-სკენ(იხილეთ პირველი სურათი). განაწილება ხასიათდება 2 პარამეტრით  μ  და  σ .   μ  არის ფუნქციის საშუალო, რომელზეც სიმკვრივის ფუნქცია იღებს მაქსიმალურ მნიშვნელობას ხოლო  σ  არის საშუალო კვადრატული გადახრა, რომელიც განსაზღვრავს ფუნქციის გრაფიკის გაშლილობას.         ნორმალურ განაწილებას უწოდებენ სტანდარტულს თუ მისი  μ =0 და  σ=1 .

ლამბერტის დიფუზიური არეკვლის მოდელი

Lambertian diffuse reflection model         ლამბერტის დიფუზიური არეკვლის მოდელი არის ფიზიკურად სწორი მოდელი, რომელიც აღწერს იდეალურ დიფუზიურ ზედაპირზე არეკვლას. მეთოდი დაფუძნებულია მთლიანად ლამბერტის კოსინუსის წესზე და ამბობს, რომ განათების ინტენსივობის ცვლილება დიფუზიურ ზედაპირის წერტილში დამოკიდბულია განათების მიმართულებასა და ზედაპირის ნორმალს შორის არსებული კუთხის კოსინუსზე. double LambertianShading ( const Vector3 & N , const Vector3 & L ) { return max ( 0.0 , dot ( L , N ) ); }         ლამბერტის არეკვლის მოდელი არის ყველაზე მეტად გამოყენებადი. მეთოდი ასევე ითხოვს ძალიან მცირე გამოთვლით რესურსს.

ლამბერტის კოსინუსის წესი

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

შემთხვევითი წერტილი წრეწირში

Random point in circle შერჩევა პოლარული კოორდინატთა სისტემის დახმარებით. მარცხენა: r-ის თანაბარი შერჩევა. მარჯვენა: r-ის გასწორებული შერჩევა           იმისათვის რომ მივიღოთ თანაბრად განაწილებული შემთხვევითი წერტილები წრეწირში არსებობს რამოდენიმე მეთოდი. პირველი ყველაზე მარტივი მეთოდი არის დაწუნებით შერჩევის გამოყენებით, რაც გულისხმობს, რომ შერჩევა გავაკეთოთ უფრო დიდ არეზე მარტივი ფორმით და მათში ამოვარჩიოთ მხოლოდ ის ელემენტები რომლებიც ექცევიან სასურველ არეში(წრეწირში).         იმისთვის რომ თავიდან ავიცილოთ გამოუყენებელი შერჩევები ყველაზე მარტივი მეთოდი არის შერჩევა პოლარულ კოორდინატთა სისტემაში შესაბამისად 2 პარამეტრით: Θ-ს და r-ის გამოყენებით. თუ ჩვენ Θ და r-ს შევარჩევთ შემთხვევითად, ამ მეთოდით მიღებული წერტილები ცენტრთან იქნებიან კონცენტრირებული და შერჩევა თანაბარი არ იქნება. ცხარია რომ არათანაბარ შერჩევას იწვევს r და უნდა მოვახდინოთ r-ის სწორი შერჩევა, რათა წრეწირში მიღებული წერტილების განაწილება გახდეს თანაბარი. void randomPointWithinCircle ( double & x , double

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

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