REZA FUAD RACHMADI 2208 205 740
DOSEN PEMBIMBING:
Prof. Dr. Ir. Mauridhi Hery P., MEng.
PROGRAM MAGISTER
BIDANG KEAHLIAN JARINGAN CERDAS MULTIMEDIA JURUSAN TEKNIK ELEKTRO
FAKULTAS TEKNOLOGI INDUSTRI
INSTITUT TEKNOLOGI SEPULUH NOPEMBER SURABAYA
2010
RANCANG BANGUN RAY TRACING PIPELINE PADA PLATFORM CUDA
Tesis ini disusun untuk memenuhi salah satu syarat memperoleh gelar Magister Teknik (MT)
di
Institut Teknologi Sepuluh Nopember oleh:
REZA FUAD RACHMADI NRP. 2208 205 740
Tanggal Ujian : 23 Januari 2010 Periode Wisuda : Maret 2010 Disetujui oleh :
1. Prof. Dr. Ir. Mauridhi Hery Purnomo, M.Eng. NIP: 195809161986011001
(Pembimbing)
2. Mochamad Hariadi, ST., MSc., PhD. NIP: 196912091997031002
(Penguji)
3. Dr. I Ketut Eddy Purnama, ST., MT. NIP: 196907301995121001
(Penguji)
4. Ahmad Zaini, ST., MT. NIP: 197504192002121003
(Penguji)
5. Diah Puspito Wulandari, ST., MSc. NIP: 198012192005012001
(Penguji)
Direktur Program Pasca Sarjana,
Prof. Dr. Ir. Suparno, MSIE NIP: 194807101976031002
RANCANG BANGUN RAY TRACING PIPELINE PADA
PLATFORM CUDA
Nama Mahasiswa : Reza Fuad Rachmadi
NRP : 2208205740
Pembimbing :Prof. Dr. Ir. Mauridhi Hery Purnomo, M.Eng. Co-Pembimbing :
-ABSTRAK
Penggambaran dengan menggunakan algoritma ray tracingbanyak digunakan untuk pembuatan film-film animasi, desain arsitektur, dan simulasi teknik. Per-masalahan terbesar pada penggambaran dengan algoritma ray tracing adalah ke-butuhan daya komputasi yang sangat besar sehingga membutuhkan struktur data tambahan untuk menurunkan daya komputasi yang digunakan. Salah satu struk-tur data yang dapat mempercepat proses penggambaran pada algoritma ray tra-cingadalah strukturuniform grid. Pada penelitian ini akan dilakukan perancangan sistem penggambaran dengan menggunakan algoritma ray tracing pada platform CUDA dengan menggunakan struktur uniform grid sebagai strultur pemercepat. Platform CUDA merupakan standarparallel processingpada GPU dan dapat digu-nakan untuk berbagai keperluan komputasi. Hasil akhir penelitian berupa sistem penggambaran dengan menggunakan algoritma ray tracing yang dapat berjalan pa-da GPU pa-dan lebih cepat 2 sampai 6 kali pa-daripapa-da sistem yang sama yang dijalankan pada CPU.
DESIGN AND IMPLEMENTATION RAY TRACING
PIPELINE ON CUDA PLATFORM
Student Name : Reza Fuad Rachmadi
NRP : 2208205740
Supervisor : Prof. Dr. Ir. Mauridhi Hery Purnomo, M.Eng. Co-Supervisor :
-ABSTRACT
Rendering an image using ray tracing algorithm had been widely used for ani-mation movie, architecture design, and simulation. Huge computational resource becomes the biggest and most challenging problem on implementing ray tracing algorithm, so it needs additional data structure to lower the resources needed. One of the data structure that mainly used to accelerate ray tracing algorithm is uniform grid. This research will develop a rendering system using ray tracing algorithm on CUDA platform and using uniform grid as accelerating structure. CUDA is a parallel processing standart in GPU and can be use to compute anything (general purpose). The research result is a 3d rendering system using ray tracing algorithm that run on GPU and run 2 to 6 time faster than other similiar system that run on CPU.
KATA PENGANTAR
Segala puji kahadirat Allah SWT karena hanya dengan rahmat-NYA-lah penyu-sunan tesis dengan judul “Rancang BangunRay Tracing PipelinePadaPlatform
CUDA” ini dapat berjalan dengan lancar dan tanpa halangan yang berarti. Tesis ini disusun guna memenuhi persyaratan untuk memperoleh gelar magister teknik pada bidang konsentrasi Teknologi Permainan, bidang studi Jaringan Cerdas Multimedia, jurusan Teknik Elektro, Institut Teknologi Sepuluh Nopember Surabaya. Penentuan metode dan perancangan tesis menggunakan pedoman teori dan literatur penunjang pada beberapa konferensi internasional sehingga diharapkan dapat melahirkan tesis yang baik dan dapat dipertanggungjawabkan.
Penulis memahami bahwa penyusunan tesisi tidak lepas dari bantuan pihak-pihak tertentu, oleh karena itu penulis mengucapkan banyak terima kasih kepada seluruh pihak yang telah membantu proses penyuisunan tesisi ini, diantara:
1. Bapak Menteri Pendidikan Indonesia dan seluruh jajaran Depdiknas yang telah memberikan kesempatan kepada penulis untuk menerima beasiswa BU (Beasiswa Unggulan) dan menempuh kuliah magister di jurusan Teknik Elek-tro ITS hingga lulus.
2. Orang tuaku tercinta yang telah dengan sabar membimbing dan membesarkan penulis selama ini.
3. Anggit tercinta yang telah memberikan support dan semangat kepada penulis dalam proses penyusunan tesis ini.
4. Seluruh jajaran dosen lab B-201; pak Hariadi, pak Uki, pak Akok, pak Surya, dan pak Ketut; yang telah memberikan bimbingan dan pencerahan dalam penyusunan tesis ini.
5. Seluruh warga lab Common Computing yang telah memberikan semangat kebersamaan dan banyak berdiskusi sehingga menambah pengetahuan dari berbagai disiplin ilmu.
6. Warga lab B-201 yang telah meluangkan waktunya untuk kebutuhan maha-siswa S2 gamtech.
Penulis menyadari bahwa masih banyak kekurangan dalam penyusunan tesis ini. Saran dan kritik yang membangun dari para pembaca sangat penulis hargai agar dapat dilakukan perbaikan di waktu yang akan datang, Selain itu, penulis meng-harapkan akan ada mahasiswa lain yang akan melanjutkan penelitian ini sehingga
didapatkan hasil yang lebih bagus lagi. Akhir kata, semoga tesis ini dapat menam-bah pemahaman dan pengetahuan pembaca tentang komputer grafik, khususnya ray tracing.
Penulis
PENGHARGAAN
Modelbunny,happy budha,dragon, danxyzrgb_dragonadalah milik dari stan-ford university (stanford 3d scanning repository). Model hand, horse, dan blade adalah milik dari georgia institute of technology (large geometric model reposi-tory). Model wooddoll dan fairy forest adalah milik dari SCI Institute (the utah 3d animation repository). Modelconference adalah milik dari Anat Grynberg dan Greg Ward. Modelsponzaatrium adalah milik dari Marko Dabrovic.
DAFTAR ISI
ABSTRAK i KATA PENGANTAR v PENGHARGAAN vii 1 PENDAHULUAN 1 1.1 Latar Belakang . . . 1 1.2 Perumusan Masalah . . . 1 1.3 Tujuan . . . 2 1.4 Batasan Masalah . . . 2 1.5 Relevansi Penelitian . . . 2 1.6 Metodologi Penelitian . . . 3 1.7 Sistematika Penulisan . . . 4 2 TEORI PENUNJANG 7 2.1 Metode Penggambaran Tiga Dimensi . . . 72.1.1 Rasterization . . . 7
2.1.2 Physically Based Rendering Technique . . . 11
2.2 Shading . . . 15
2.2.1 Diffuse . . . 15
2.2.2 Ambient . . . 16
2.2.3 Specular . . . 18
2.3 Persamaan ParametrikRay . . . 18
2.3.1 PerpotonganRay-AABB . . . 18
2.3.2 PerpotonganRay-Segitiga . . . 19
2.4 Ray Tracing . . . 21
2.4.1 JenisRay Tracing . . . 22
2.4.2 Tahapan Proses PadaRay Tracing . . . 24
2.5 StrukturUniform Grid . . . 29
2.5.1 ResolusiUniform Grid . . . 29
2.5.2 KonstruksiUniform Grid . . . 30
2.5.3 Uniform Grid Traversal . . . 31
2.6.1 NVIDIA CUDA . . . 31
2.6.2 SIMT Programming . . . 32
2.7 Parallel Random Access Machine . . . 34
2.7.1 Dasar Desain Algoritma Pada PRAM . . . 35
2.7.2 Parallel Prefix Sum . . . 36
3 RANCANGAN SISTEM 41 3.1 Rancangan Struktur Data . . . 41
3.2 Konstruksi StrukturUniform Grid . . . 44
3.2.1 Inisialisasi . . . 44
3.2.2 Overlapped Polygon . . . 44
3.2.3 Paralel Prefix Sum . . . 45
3.2.4 Perhitungan PerpotonganCell . . . 45
3.2.5 ParalelSort . . . 45
3.2.6 Scanning Data . . . 46
3.2.7 FlowchartKonstruksi StrukturUniform Grid . . . 46
3.3 Ray Tracing Traversal . . . 48
3.3.1 Inisialisasi . . . 48
3.3.2 PerpotonganRay-AABB Scene . . . 50
3.3.3 Traversal . . . 50
3.4 Shadow Ray . . . 51
4 PENGUJIAN SISTEM 53 4.1 Evaluasi Kinerja Pembuatan StrukturUniform Grid . . . 53
4.1.1 Spesifikasi Pengujian . . . 53
4.1.2 Hasil Pengujian . . . 54
4.1.3 Diskusi dan Evaluasi . . . 54
4.2 Evaluasi KinerjaRay Tracing Traversal . . . 58
4.2.1 Spesifikasi Pengujian . . . 58
4.2.2 Hasil Pengujian . . . 58
4.2.3 Diskusi dan Evaluasi . . . 60
4.3 Optimasi Sistem . . . 62
4.3.1 Hasil Pengujian . . . 64
4.3.2 Diskusi dan Evaluasi . . . 64
5 PENUTUP 69 5.1 Kesimpulan . . . 69
5.2 Pengembangan Lebih Lanjut . . . 69 x
DAFTAR REFERENSI 71
DAFTAR GAMBAR
2.1 Penggambaran denganrasterization . . . 8
2.2 Tipe proyeksi padarasterization1 . . . 9
2.3 Clippingdengan metodesutherland-hodgeman2 . . . 10
2.4 Klasifikasi pada konstruksiphoton map[Jen96] . . . 11
2.5 Ilustrasi BRDF secara geometri3 . . . 12
2.6 Persamaan penggambaran secara goemetri sederhana4 . . . 13
2.7 Perbandingan radiosity dengan penggambaran dengan direct illu-mination5 . . . 14
2.8 Pendekatandiffusedanspecular[SKSS08] . . . 15
2.9 Hasil penggambaran pendekatan cahayadiffuse6 . . . 16
2.10 Penggambaran dengan cahayadiffusedanambient7 . . . 17
2.11 Penggambaran dengan cahayadiffuse,ambient, danspecular7 . . . 17
2.12 PerpotonganRay-AABB dengan metodeslabs . . . 19
2.13 Koordinatbarycentricpada segitiga . . . 21
2.14 Proses perhitungan perpotonganray-segitiga secara geometri [MT97] 22 2.15 Skemaray tracing. . . 23
2.16 Forward ray tracing . . . 24
2.17 Super samplingpadabackward ray tracing8 . . . 25
2.18 Shadow ray . . . 27
2.19 Refleksi dan refraksiray . . . 28
2.20 Strukturuniform grid . . . 29
2.21 Uniform grid traversal . . . 30
2.22 Operasifloating pointantara CPU dan GPU [Nvi09a] . . . 33
2.23 Thread, block, dangrid [Nvi09a] . . . 33
2.24 Hirarki memori pada CUDA [Nvi09a] . . . 34
2.25 Contoh aliran data pada PRAMbalanced trees[CP09] . . . 37
2.26 Tahapanup-sweeppada algoritmascan[HSO07] . . . 39
2.27 Tahapandown-sweeppada algoritmascan[HSO07] . . . 39
3.1 Flowchartsistem secara sederhana . . . 42
3.2 Rancangan struktur data . . . 43
3.3 Flowchartkonstruksi strukturuniform grid . . . 47
3.5 Perhitungan vektor arahray. . . 49
3.6 Ray tracingdenganshadow ray9 . . . 51
4.1 Visualisasi hasil konstruksi strukturuniform grid . . . 55
4.2 Perbandingan jumlahpolygondengan besartriangle offset . . . 57
4.3 Beberapa hasil penggambaran . . . 59
4.4 Perbandingan waktu penggambaran . . . 60
4.5 Persentase waktu yang digunakan pada GPU . . . 63
4.6 Grafik penggambaran denganthreadperblockyang bervariasi . . . 65
4.7 Model eksekusi CUDA [Nvi09a] . . . 67
DAFTAR TABEL
4.1 Hasil Pengujian Pembuatan StrukturUniform Grid . . . 55
4.2 StrukturTriangle Offset . . . 56
4.3 Besar data paralel yang ditangani setiap tahapan . . . 56
4.4 Perbandingan waktu konstruksi dengan sistem lain . . . 56
4.5 Hasil pengujianray tracing traversal . . . 61
4.6 Perbandingan besartriangle offsetdengan waktu penggambaran . . 61
4.7 Perbandingan dengan sistem lainnya (dalam fps) . . . 61
DAFTAR ALGORITMA
2.1 MetodeSlabs [KK86] . . . 20
2.2 Algoritmaray tracing[Hav00] . . . 26
2.3 Voxel traversal, diambil dari [AW87] . . . 32
2.4 Algoritma paralel sederhana untuksum scan[SHG08] . . . 37
2.5 Prefix sumdengandouble buffer [SHG08] . . . 38
2.6 Up-sweep pseudocode[HSO07] . . . 39
2.7 Down-sweep pseudocode[HSO07] . . . 39
3.1 Pemetaan AABB ke koordinatuniform grid . . . 44
3.2 Perhitungan perpotongancell . . . 45
3.3 Scanning data . . . 46
BAB I
PENDAHULUAN
Teknik penggambaran tiga dimensi telah menjadi ilmu yang sangat populer ser-ta banyak diteliti oleh berbagai kalangan, insser-tansi pendidikan maupun perusahaan. Hal terebut dikarenakan penggunaan teknologi penggambaran tiga dimensi diper-lukan di hampir seluruh bidang-bidang keilmuan seperti arsitektur, grafik desain, CAD, film, game, dan simulasi teknik. Rasterization dan ray tracing merupakan dua buah jenis penggambaran tiga dimensi yang banyak digunakan untuk membu-at gambar tiga dimensi. Teknikrasterization digunakan untuk penggambaran tiga dimensi yang membutuhkan waktu penggambaran yang minimal atau biasa disebut dengan penggambaran secarareal-timesedangkan teknikray tracingdigunakan un-tuk penggambaran yang membutuhkan kualitas yang sama dengan foto (foto realis-tik) dan banyak digunakan untuk pembuatan film tiga dimensi serta aplikasi CAD dan arsitektur.
1.1 Latar Belakang
Grafik tiga dimensi adalah bidang penelitian yang akan terus berkembang seir-ing dengan berkembangnya perangkat keras. Para peneliti maupun praktisi industri menggunakan grafik tiga dimensi untuk menvisualisasikan data yang ada sehingga lebih mudah untuk dianalisa. Selain untuk visualisasi data, grafik tiga dimensi juga banyak digunakan untuk efek film, simulasi, dan game.
Ray tracingmerupakan metode penggambaran tiga dimensi yang banyak digu-nakan untuk menvisualisasikan suatu bentuk atau objek sehingga mende-kati kual-itas foto (foto realistik). Ray tracingmerupakan metode penggambaran yang mu-dah dipahami secara konseptual tetapi pada implementasinya terdapat kelemahan. Salah satu kelemahan padaray tracingadalah daya komputasi yang dibutuhkan un-tuk perhitungan sangat besar sehingga diperlukan metode-metode tambahan unun-tuk mempercepat proses perhitungan.
1.2 Perumusan Masalah
Permasalahan utama dalam melakukan penggambaran dengan menggunakan metode ray tracing adalah daya komputasi yang dibutuhkan sehingga dibutuhkan tambahan metode tertentu untuk dapat memperkecil daya komputasi yang
dibu-tuhkan. Dilain segi, perkembangan perangkat keras komputer sangat pesat terutama pada perangkat GPU (Graphics Processing Unit). Pada tahun 2008, NVIDIA men-geluarkan standar CUDA (Compute Unified Device Architecture) yang digunakan untuk melakukan perhitunganfloting-pointpada perangkat GPU sehingga dapat di-gunakan untuk berbagai keperluan komputasi.
Pada penelitian ini, permasalahan yang diangkat adalah bagaimana menurunk-an daya komputasi ymenurunk-ang dibutuhkmenurunk-an oleh algoritmaray tracingdan bagaimana re-alisasi program penggambaran dengan menggunakan algoritma ray tracing pada lingkungan proses paralel dengan standar CUDA. Penyelesain kedua permasalahan tersebut menghasilkan eksekusi algoritmaray tracingyang cepat dan dapat berjalan pada interaktifframe ratedenganshadingsederhana.
1.3 Tujuan
Penelitian ini bertujuan untuk merancang ray tracing pipeline pada platform NVIDIA CUDA.Ray tracing pipelineyang dihasilkan adalahframeworkdasar un-tuk penggambaran tiga dimensi sehingga diharapkan dapat digunakan unun-tuk meng-hasilkan penelitian-penelitian lanjutan untuk membuat efek tambahan yang mem-buat hasil penggambaran menjadi sama dengan kualitas foto, dari segi pencahayaan sampai efek lensa pada kamera.
1.4 Batasan Masalah
Batasan masalah atau ruang lingkup yang digunakan selama penelitian berlang-sung didefinisikan sebagai berikut.
1. Penelitian ini merancang dan mengimplementasikan framework dasar untuk melakukan penggambaran tiga dimensi dengan mengunakan metoderay trac-ingpadaplatformCUDA.
2. Media komputasi yang digunakan adalahplatformNVIDIA CUDA.
3. Model tiga dimensi yang digunakan masih sederhana dan tidak menggunakan material apapun.
4. Metodeshadingyang digunakan adalahdiffusedanambient.
1.5 Relevansi Penelitian
Relevansi penelitian adalah industri-industri yang bergerak dibidang kreatif seperti pembuatan film tiga dimensi, arsitektur, dan simulasi CAD. Penelitian ini diharapkan dapat menumbuhkan sistem penggambaran tiga dimensi versi Indonesia
dimana tidak kalah cepat dengan sistem penggambaran yang dimiliki oleh studio-studio terkenal seperti Pixar, Dimension, dan Lucas Arts.
1.6 Metodologi Penelitian
Metodologi penelitian pada penelitian ini dapat dibagi menjadi beberapa bagian, yaitu studi literatur, pemilihan perangkat keras, implementasi sistem, pemilihan model tiga dimensi yang dipakai untuk pengujian, dan pengujian.
Studi Literatur
Studi literatur digunakan untuk memahami teori-teori yang digunakan dalam penelitian ini. Literatur yang digunakan banyak berupa makalah-makalah yang diterbitkan pada beberapa seminar internasional yang berhubungan dengan bidang komputer grafik maupun bidangparallel processing. Penulis mengambil 2 makalah sebagai referensi utama dari seluruh referensi yang telah didapat, yaitu makalah La-gae [LD08] dan makalah Kolojanov [KS09]. Kedua makalah tersebut melakukan penelitian yang mirip dengan penelitian ini sehingga dapat dibandingkan kinerja antara sistem yang telah dirancang dengan sistem yang dijabarkan pada makalah tersebut.
Selain studi literatur tentang komputer grafik danparallel processing, literatur terakhir yang perlu dipelajari adalah user manual dan programming guide dari stan-dar CUDA yang diterbitkan oleh NVIDIA. Pada makalah tersebut dijelaskan secara gamblang tentang teknik-teknik pemrograman dan batasannya untuk membuat pro-gram dengan menggunakan standar CUDA.
Pemilihan Perangkat Keras
Pemilihan perangkat keras menjadi pertimbangan mutlak karena menyangkut performansi dari sistem. Perangkat keras yang bagus akan meningkat performa sistem sehingga didapatkan hasil pengujian yang optimal. Pertimbangan utama pemilihan perangkat keras yang digunakan adalah versi dari standar CUDA yang didukung oleh perangkat keras tersebut. Pada penelitian ini, digunakan perangkat keras GPU NVDIA GTX 260 dengan memori 896 MB. Besar memori yang terbatas menyebabkan beberapa model atau scene yang mempunyai banyak polygontidak dapat digambar karena keterbatasan memori.
Implementasi Sistem
Implementasi sistem dilakukan dengan menggunakan beberapa pustaka lain, yaitu CUDPP, standar C++0.x (boost library), dan pustakaAntTweakBar. CUDPP digunakan untuk melakukan pengurutan danprefix sumsecara paralel pada standar CUDA. CUDPP sendiri merupakan singkatan dari CUDAData Parallel Primitive. Boost librarypada program digunakan untuk pengolahan parameter masukan dari user. Pustaka terakhir yaitu AntTweakBar digunakan untuk interaksi antara user dengan program pada saat program berjalan.
Pemilihan Model Tiga Dimensi Yang Digunakan
Pemilihan model tiga dimensi yang digunakan berhubungan dengan pengujian yang dilakukan pada sistem. Model tiga dimensi yang diujikan diambil dari be-berapa repositori model tiga dimensi yang terkenal, yaitu stanford 3d repository, georgia university large goemetric repository, dan utah 3d animation repository. Beberapa model lain, yaitu conference room dan sponza atrium, digunakan untuk membandingkan antara sistem yang dirancang dengan sistem yang dijabarkan pada makalah lain yang menjadi referensi utama penulis.
Pengujian
Pengujian pada sistem yang dirancang dilakukan pada beberapa model tiga di-mensi yang telah dipilih secara selektif agar kinerja sistem dapat dibandingkan den-gan sistem lain yang dijabarkan pada beberapa makalah. Pengujian dibagi menjadi tiga yaitu pengujian waktu eksekusi untuk pembuatan strukturuniform grid, pengu-jian waktu eksekusi untukray tracing traversal, dan pengujian pengaruh konfigurasi thread per block pada sistem. Dua pengujian pertama merupakan pengujian yang dilakukan tanpa melakukan perubahan pada konfigurasi eksekusi dari sistem sedan-gkan pengujian terakhir dilakukan dengan melakukan perubahan terhadap konfig-urasi sistem serta pengaruhnya terhadap hasil penggambaran.
1.7 Sistematika Penulisan
Penulisan buku tesis ini terbagi menjadi 5 bab yaitu pendahuluan, teori pe-nunjang, perancangan sistem, pengujian sistem, serta penutup. Penjelasan singkat tentang masing-masing bab adalah sebagai berikut.
BAB 1 PENDAHULUAN.
Pada bab 1 diuraikan permasalahan yang menjadi landasan untuk melakukan penelitian serta tujuan dan batasan dari penlitian yang dilakukan. Selain itu, dije-laskan pula metodologi penelitian yang digunakan serta sistematik penulisan lapo-ran ini.
BAB 2 TEORI PENUNJANG.
Bab 2 berisi tentang teori-teori dasar yang digunakan sebagai landasan dalam melakukan penelitian sepertiray traciug, GPGPU, PRAM, dan persamaan parame-trik ray. Teori tentang parametrik raydigunakan antara lain, deteksi perpotongan raydengan AABB (Axis Align Bounding Box) dan deteksi perpotonganraydengan segitiga. Teori tentang PRAM (Parallel Random Access Machine) merupakan teori tentang perancangan suatu algoritma paralel dengan metode-metode tertentu.
BAB 3 RANCANGAN SISTEM.
Pada bab ini akan dibahas perancangan dari sistem penggambaran dengan meng-gunakan metoderay tracingserta teori-teori tambahan yang digunakan untuk meng-implementasikannya. Rancangan sistem dibagi menjadi dua yaitu rancangan sistem untuk pembentukan strukturuniform griddanray tracing traversal.
BAB 4 PENGUJIAN SISTEM.
Pengujian sistem dilakukan untuk melihat kehandalan serta evaluasi kinerja dari sistem yang telah dirancang dan diimplementasikan. Selain itu, pada pengujian juga dibandingkan antara sistem yang dirancang dengan sistem lain yang dijabarkan pada beberapa makalah.
BAB 5 PENUTUP.
Bab terakhir, dirumuskan beberapa kesimpulan yang didapatkan setelah mela-kukan pengujian pada sistem serta penelitian lanjutan yang disarankan untuk di-lakukan.
BAB II
TEORI PENUNJANG
Penggambaran grafik tiga dimensi telah menjadi tulang punggung untuk be-berapa bidang seperti film, arsitektur, grafik desain, dan game. Penggambaran grafik tiga dimensi terdiri dari dua jenis yaitu rasterization dan PBRT (Physically Based RenderingTechnique). Teknikrasterizationbiasa digunakan pada game dan aplikasi yang bersifat real-time sedangkan PBRT lebih digunakan untuk aplikasi yang membutuhkan ketepatan penggambaran sesuai dengan sifat-sifat cahaya yang ada di alam. Salah satu contoh aplikasi yang menggunakan PBRT adalah [JC07] yang menggunakan metode ray tracing untuk penggambaran film “Cars”. Teknik PBRT dibagi menjadi beberapa jenis, diantaranya adalahray tracing,radiosity, dan photon-mapping. Pada bab ini akan dijelaskan semua teori tentang penggambaran tiga dimensi, persamaan parametrik ray, ray tracing, GPGPU (General Purpose GPU), dan PRAM (Parallel Random Access Machine) yang digunakan sebagai media komputasi pada lingkungan paralel yang digunakan untuk perhitungan ray tracing.
2.1 Metode Penggambaran Tiga Dimensi
Seperti yang telah disinggung pada tulisan sebelumnya, metode penggambaran tiga dimensi dibagi menjadi dua jenis yaiturasterization dan PBRT. Implementasi metoderasterizationyang terkenal adalah OpenGL, Direct3D, danReyes. OpenGL dan Direct3D merupakan standar yang digunakan untuk pembuatan aplikasi-aplikasi yang berjalan secara real-time, sedangkan penggambaran dengan standar Reyes banyak diimplementasikan pada program-program permodelan tiga dimensi seperti Mental Ray,Pixar Render Man, dan NVIDIAGelato. Implementasi PBRT banyak digunakan untuk pembuatan spesial efek seperti modeltransparant,subscattering, dan refleksi. PBRT dibagi menjadi beberapa jenis metode, antara lain ray tracing, photon mapping,dan radiosity.
2.1.1 Rasterization
Metode rasterization merupakan metode penggambaran dengan mengasum-sikan suatu objek merupakan vektor grafik. Proses-proses yang terjadi pada ras-terizationadalah melakukan transformasi objek dalam dunia tiga dimensi, proyeksi
Gambar 2.1: Penggambaran denganrasterization
objek dari koordinat tiga dimensi ke koordinat dua dimensi,clipping, dan yang ter-akhir adalah melakukan scan conversionuntuk mengisi objek sesuai dengan hasil proyeksi dua dimensi yang telah dilakukan dan warna yang telah ditentukan. Gam-bar 2.1 merupakan contoh penggamGam-baran dengan menggunakan teknikrasterization pada sebuah segitiga.
Transformasi
Proses transformasi terbagi menjadi beberapa bagian yaitu transformasi lokal, transformasi global, transformasi camera, dan proyeksi. Transformasi lokal meru-pakan transformasi yang dilakukan pada suatu objek dengan orientasi pada pusat lokal koordinat dari objek. Transformasi global merupakan transformasi yang di-lakukan objek dengan orientasi pada titik pusat (0,0) dariscene. Proses transformasi objek yang dapat dilakukan adalah translasi, rotasi, dan dilatasi. Transformasi kam-era merupakan transformasi yang dilakukan untuk membentuk suatu kamkam-eravirtual sehingga penglihat seperti melihat pada suaturegion tertentu saja. Proyeksi meru-pakan transformasi spesial yang digunakan untuk memproyeksikan suatu benda dari sistem koordinat satu ke sistem koordinat yang lain. Pada metode rasterzation, proyeksi digunakan untuk melakukan proyeksi dari sistem koordinat tiga dimensi ke sistem koordinat dua dimensi. Banyak sekali teori-teori tentang proyeksi, tetapi metode proyeksi yang paling banyak digunakan adalah metodeorthogonaldan per-spective. Ilustrasi dari kedua tipe proyeksi tersebut dapat dilihat pada gambar 2.2.
Gambar 2.2: Tipe proyeksi padarasterization1
Clipping
Setelah semua objek diproyeksikan ke dalam koordinat dua dimensi, maka ada sebagai dari objek tersebut yang berada diluar bidang lihat dariwindow atau area dari layar dimana setiap titik akan ditulis. Clippingmerupakan proses pemotongan objek yang berada diluar bidang lihat. Metode clippingyang paling banyak digu-nakan adalah metodesutherland-hodgeman. Prosesclippingdengan menggunakan metodesutherland-hodgemandapat dilihat pada gambar 2.3.
1Diambil dari http://goanna.cs.rmit.edu.au/~gl/teaching/Interactive3D/2009/
Gambar 2.3:Clippingdengan metodesutherland-hodgeman2
Scan Conversion
Scan Conversionmerupakan proses pengisian objek yang telah diproyeksikan dan telah melalui prosesclippingsesuai dengan warna yang diinginkan. Permasala-han yang timbul pada prosesscan conversionadalah mengetahui apakah suatu titik yang akan dituliskan mempunyai nilai kedalaman yang lebih kecil daripada titik yang telah dituliskan. Metode yang banyak digunakan untuk mengatasi permasala-han tersebut adalah menggunakan algoritmaz-bufferdimana setiap titik yang ditulis dilayar akan disimpan kedalamannya pada suatubufferyang disebut denganz-buffer dan jika ada titik yang sama yang akan ditulis dilayar maka perlu dibandingkan kedalamannya dengan kedalaman yang telah disimpan padaz-buffer.
2Diambil darihttp://en.wikipedia.org/wiki/Sutherland-Hodgeman
Gambar 2.4: Klasifikasi pada konstruksiphoton map[Jen96]
2.1.2 Physically Based Rendering Technique
Perbedaan mendasar antara PBRT danrasterizationadalah penurunan dan asum-si yang digunakan. Padarasterizationproses penggambaran dilakukan setelah selu-ruh objek dipeta dari koordinat tiga dimensi ke koordinat dua dimensi. Hal tersebut sangat berbeda dengan PBRT, dimana pada PBRT dilakukan perancangan algoritma sesuai dengan fenomena yang terjadi pada keadaan nyata. Metode-metode PBRT yang ada sekarang merupakan simulasi sederhana tentang bagaimana suatu partikel cahaya melakukan perjalanan dari sumber cahaya menuju mata penglihat. Beber-apa metode PBRT yang banyak digunakan adalah ray tracing, photon mapping, danradiosity. Ray tracingakan dibahas pada sub bab tersendiri, sedangkanphoton mappingdanradiosityakan dibahas secara sederhana pada sub bab ini.
Photon Mapping
Photon mapping merupakan metode penggambaran PBRT yang cukup baru dan dikembangkan oleh Henrik Wann Jensen dari University of California San Diego. Photon mappingmulai diperkenal pada makalah [Jen96] pada tahun 1996. Perkembangan metode penggambaran denganphoton mappingcukup banyak dikem-bangkan oleh beberapa peneliti sampai sekarang seperti pada makalah-makalah [JJD08, HOJ08, HJ09]. Metode penggambaran dengan menggunkanphoton map-pingterbagi menjadi dua tahapan yaitu konstruksiphoton mapdanrendering.
Tahapan konstruksiphoton mapdilakukan dengan menembakkanphoton(paket energi) yang sangat banyak dari sumber cahaya ke dalam scene. Setiap photon ditelusuri ke dalam scene dengan menggunakan metode yang mirip dengan path
Gambar 2.5: Ilustrasi BRDF secara geometri3
tracing. Pada saatphotonmenabrak suatu permukaan objek, maka parameter pho-tonakan disimpan padaphoton mapdan dilakukan algoritmarussian rouletteuntuk memutuskan apakahphotontersebut diserap atau direfleksikan. Gambar 2.4 meru-pakan jenis-jenisphotonyang digunakan pada photon map. Arah perjalanan pho-ton yang baru akan dihitung dengan menggunakan persamaan BRDF (Bidirectional Reflectance Distribution Function) dari permukaan objek. BRDF adalah suatu per-samaan yang merepresentasikan pemantulan cahaya pada suatu permukaan objek. Ilustrasi persamaan BRDF secara geometri dapat dilihat pada gambar 2.5. Pho-ton mappingyang dipaparkan pada makalah [Jen96] menggunakan dua buah jenis photon mapyaitucaustic photon mapdanglobal photon map. Caustic photon map digunakan untuk menyimpanphoton yang berhubungan dengan causticdan pem-buatannya dilakukan dengan memancarkanphotonpada objek-objekspecularserta menyimpan sebagaimana suatuphotonmenabrak suatu permukaandiffuse.
Tahapan terakhir yang dilakukan pada metodephoton mapping adalah render-3Diambil darihttp://www.vetscite.org/publish/articles/000063/print.html
Gambar 2.6: Persamaan penggambaran secara goemetri sederhana4
ing. Rendering dilakukan dengan menggunakan metode ray tracing monte carlo dimana setiap radiasi cahaya pada suatu titik akan dihitung berdasarkan rata-rata dari beberapa estimasi sampling. Setiap sampling merepresentasikan sebuah ray yang ditembakkan dari mata penglihat ke titik pada bidang gambar lalu masuk ke dalam scene. Setiap titik pada bidang gambar dihitung dengan menggunakan persamaan penggambaran dan dihitung pada saat pertama kali ray menabrak su-atu permukaan objek pada scene. Persamaan penggambaran yang dipaparkan pada makalah [Kaj86] dapat dilihat pada persamaan 2.1.
Ls(x,ω) =Le(x,ω) +
´ Ω
fr(x,ω0,ω)Li(x,ω0)cosθidω0 (2.1)
DimanaLs(x,ω)adalah radiasi cahaya yang terlihat oleh mata penglihat pada titik
dimana pertama kali ray menabrak permukaan suatu objek dengan x adalah titik tempat pertama kali ray menabrak suatu permukaan objek dan ω adalah arah dari
ray yang ditembakkan, Le(x,ω) adalah radiasi cahaya yang di permukaan objek,
Li adalah radiasi cahaya yang datang dari arahω0, fr adalah fungsi BRDF, dan Ω
adalah permukaan sphere yang menjadi arah dari radiasi cahaya yang lain. Ilus-trasi dari persamaan penggambaran pada suatu permukaan objek dapat dilihat pada gambar 2.6.
Radiosity
Radiositymerupakan algoritma penggambaranglobal illuminationyang digu-nakan untuksceneyang bersifatdiffusemeterial saja.DIffusematerial berarti suatu
Gambar 2.7: Perbandinganradiositydengan penggambaran dengandirect illumination5
permukaan dari suatu objek akan memantulkan energi dari partikel cahaya dan per-mukaan suatu objek dianggap tidak dapat meneruskan energi cahaya (objek diang-gap sebagai objek transparan).
Metode radiositypertama kali dikembangkan pada tahun 1950 sebagai solusi dari permasalahan pengantaran panas pada suatu objek dan mulai dikembangkan untuk memecahkan persamaan penggambaran pada bidang komputer grafik pada tahun 1984 oleh peneliti dariCornell University. Perbandingan antara penggam-baran denganradiositydan penggambaran dengandirect illuminationdapat dilihat pada gambar 2.7. Persamaan dasar dariradiositydiambil dari model sederhana dari transfer energi, persamaannya adalah sebagai berikut
Bj=ρjHj+Ej (2.2)
dimanaBjadalah totalradiositypada suatu permukaan objek,ρjadalah tingkat
pe-mantulan permukaan dari objek, Hj adalah energi lain yang berasal dari pantulan cahaya dari permukaan-permukaan objek yang lain, danEj adalah energi yang
di-pantulkan oleh permukaan objek yang sedang dihitung.Hjadalah suatu persamaan
yang dapat didefiniskan sebagai berikut
Hj= N
∑
i=1
BiFi j, j=1..N (2.3)
5Diambil darihttp://en.wikipedia.org/wiki/Radiosity_(3D_computer_graphics)
Gambar 2.8: Pendekatandiffusedanspecular[SKSS08]
dimanaBiadalahradiositydari permukaanipada suatu objek danFi j adalah faktor dimana energi yang meninggalkan permukaanidapat sampai ke permukaan jyang bernilai antara 0 sampai 1. Makalah-makalah tentangradiositycukup banyak seper-ti pada makalah [Kel97, GSCH93, GTGB84], Masing-masing membahasradiosity dan metode untuk mempercepat perhitunganradiosity.
2.2
Shading
Shadingadalah suatu metode yang dilakukan untuk penggambaran dalam hal melakukan pendekatan implementasi dari persamaan penggambaran yang telah di-jelaskan sub bab sebelumnya. Pada pendekatannya, shading membagi permodelan cahaya menjadi tiga jenis yaitu diffuse, ambient, dan specular. Pada sub bab ini ketiga jenis tersebut akan dibahas secara sederhana. Gambar 2.8 merupakan pen-dekatan cahayadiffusedanspecular.
2.2.1 Diffuse
Diffusemerupakan permodelan dari cahaya yang didasarkan pada pemantulan diffuse. Persamaan sederhana dari cahayadiffusesesuai dengan ilustrasi pada gam-bar 2.8 adalah sebagai berikut
di f f use=kdcosθ =kd(N·L) (2.4)
dimankd adalah faktordiffuseyang digunakan (pada aplikasinya biasa direpresen-tasikan dengan warna),θ adalah sudut antara vektor normal dari permukaan objek
Gambar 2.9: Hasil penggambaran pendekatan cahayadiffuse6
dan vektor yang mengarah pada sumber cahaya.
Pemodelan cahaya dengandiffusemenghasilkan sebagai darisceneakan berwar-na gelap dan sebagai darisceneterlihat terang. Hal tersebut karena jika faktor sudut
θ dimana ketika sudut bernilai 90 derajat maka diffuseakan menghasilkan nilai 0 atau permukaan tersebut tidak terkena cahaya sama sekali. Hasil penggambaran dari cahaya diffuse dapat dilihat pada gambar 2.9.
2.2.2 Ambient
Pemodelan cahaya dengan ambient adalah diumpamakan bahwa suatu per-mukaan pada suatu objek akan selalu memancarkan suatu cahaya dengan intensitas tertentu. Cahaya ambient digunakan agar hasil penggambaran tidak hanya gelap dan terang tetapi ada faktor tambahan yang membuat warna dari hasil penggam-baran akan menjadi lebih baik. Hasil penggampenggam-baran dengan menggunakan cahaya ambientdandiffusedapat dilihat pada gambar 2.10.
6Diambil dari http://www.directxtutorial.com/Tutorial9/B-Direct3DBasics/
dx9B3.aspx)
Gambar 2.10: Penggambaran dengan cahayadiffusedanambient7
Gambar 2.11: Penggambaran dengan cahayadiffuse,ambient, danspecular7
7Diambil dari http://www.directxtutorial.com/Tutorial9/B-Direct3DBasics/
2.2.3 Specular
Specular atau bisa disebut dengan specular highlight merupakan pendekatan cahaya pada suatu permukaan yang mengkilat. Persamaan yang digunakan pada cahaya specular adalah sebagai berikut
specular=ks(N·H)n (2.5)
dimana ks adalah faktor specular yang ada pada permukaan pada suatu objek, N
adalah normal vektor, n adalah faktor exponesial dari cahaya specular yang di-inginkan, dan H adalah halfway vektor dari permukaan. Persamaan dari halfway vektor sendiri adalah sebagai berikut
H= V+L
|V+L| (2.6)
dimanaV adalah vektor yang menuju ke mata penglihat, danLadalah vektor yang menuju ke sumber cahaya. Hasil penggambaran dengan menggunakan ketiga pen-dekatan cahaya tersebut dapat dilihat pada gambar 2.11.
2.3 Persamaan Parametrik
Ray
Persamaan parametrik raymerupakan persamaan garis yang dinotasikan den-gan titik dan arah bergeraknya titik tersebut. Persamaan parametrikray2.7, digu-nakan untuk merepresentasikan ray yang digunakan untuk melakukan perjalanan partikel cahaya pada metode penggambaranray tracing.
r(t) =o+td (2.7)
Persamaan 2.7 dibagi menjadi dua buah vektor, vektor oadalah vektor posisi awal dari ray sedangkan vektor d adalah vektor normal arah dari perjalanan ray yang berorientasi terhadap vektoro. Variabel skalart merupakan skala perpindahan vektor o dengan besaran unit d. Ada beberapa metode mendeteksi perpotongan yang digunakan pada penelitian ini yaitu perpotongan antara ray dengan AABB (Axis Aligned Bounding Box) dan perpotongan antara raydengan segitiga. Kedua metode tersebut akan dijelaskan secara sederhana pada sub bab 2.3.1 dan 2.3.2.
2.3.1 PerpotonganRay-AABB
AABB (Axis Align Bounding Box) merupakan suatu jenis bangun ruang berben-tuk kubus dan sejajar dengan sumbu koordinat. Perhitungan perpotongan antararay
Gambar 2.12: PerpotonganRay-AABB dengan metodeslabs
dengan AABB dapat dilakukan salah satunya dengan menggunakan metodeslabs. Metode slabs diperkenalkan pada makalah [KK86] dan digunakan untuk perpo-tongan dengan bangun bounding volume. Gambar 2.12 merupakan ilustrasi dua dimensi untuk metodeslabs.
Pada gambar 2.12 dilakukan perhitungan apakah ray R berpotongan dengan AABB dengan koordinat minimum (xi,yi)dan maksimum (xh,yh). Metodeslabs menggunakan variabel skalart, yang terdapat pada rumus 2.7, untuk menentukan tneardant f ar. Variabeltneardant f ar yang dihasilkan oleh metodeslabsadalah perpotongan minimum (saatraymemasuki AABB) dan maksimum (saatraykeluar dari AABB).
Algoritma 2.1 adalah penggunaan metodeslabsuntuk mencari titik perpoton-gan antara ray dengan AABB pada koordinat dua dimensi. Variabel xo dan yo adalah titik awal ray, sedangkanxd dan yd adalah vektor arah ternormalisasi dari rayrelatif terhadapxodanyo. Titik hasil perpotongan pada metodeslabsdihasilkan pada variabel tnear dan t f ar serta dikatakan berpotongan jika tnear<t f ar dan t f ar>0.
2.3.2 PerpotonganRay-Segitiga
Algoritma perpotonganraydengan segitiga tidak kalah penting dibandingkan dengan algoritma perpotonganray dengan AABB. Banyak metode yang dapat di-gunakan untuk mengimplementasikan algoritma perpotonganraydengan segitiga, salah satunya dipublikasi pada makalah [MT97] oleh Moller dan Trumbore. Pa-da makalah tersebut, metode yang digunakan dengan menurunkan persamaan Pa-dari koordinatbarycentricpada suatu segitiga. Gambar 2.13 merupakan skematik dari
Algoritma 2.1MetodeSlabs [KK86]
tnear = -infinity; tfar = infinity; T1 = (xi - xo) / xd;
T2 = (yi - yo) / yd;
if T1 > T2 then swap(T1,T2); if T1 > tnear then tnear = T1; if T2 < tfar then tfar = T2;
if tnear > tfar then return false; // ray miss the box if tfar < 0 then return false; // box behind the ray return true;
sistem koordinat barycentricpada sebuah segitiga. Pada bidang komputer grafik, selain untuk perhitungan perpotongan antararaydengan segitiga, sistem koordinat barycentricjuga bisa digunakan untuk texture mapping, interpolasi normal vektor, dan interpolasi warna.
Suatu titik pada segitiga dapat direpresentasikan dengan menggunakan sistem koordinatbarycentricyaitu dengan menggunakan persamaan sebagai berikut
T(u,v) = (1−u−v)V0+uV1+vV2 (2.8) dimana(u,v)adalah koordinatbarycentric, dengan syaratu≥0,v≥0, danu+ v≤1. UntukV0,V1, danV2adalah titik-titik koordinat katersian yang membentuk segitiga. Untuk mengetahui apakah suaturay berpotongan dengan segitiga maka diperlukan persamaanr(t) =T(u,v) sehingga persamaan 2.8 dapat ditulis sebagai berikut
o+td= (1−u−v)V0+uV1+vV2 (2.9) dengan sedikit modifikasi maka persamaan tersebut dapat juga dituliskan seba-gai berikut h −d, V1−V0, V2−V0 i t u v =o−V0 (2.10)
Dengan mencari penyelesain sistem persamaan linier yang ada pada persamaan 2.10, barycentric koordinat (u,v) dan jarak dari pusatray ke titik perpotongan (t) dapat ditentukan. Persamaan 2.10 dapat diselesaikan dengan menggunakan aturan Cramersehingga didapatkan persamaan sebagai berikut
Gambar 2.13: Koordinatbarycentricpada segitiga t u v = 1 |−d,E1, E2| |T, E1, E2| |−d, T, E2| |−d, E1, T| (2.11)
dimanaE1=V1−V0, E2=V2−V0, danT =o−V0. Dari aturan aljabar linier, diketahui bahwa|A, B,C|=−(A×C)·B=−(C×B)·Asehingga persamaan diatas dapat ditulis ulang sebagai berikut
t u v = 1 (d×E2)·E1 (T×E1)·E2 (d×E2)·T (T×E1)·D = 1 P·E1 Q·E2 P·T Q·d (2.12)
dimanaP= (d×E2)danQ=T×E1. Pada implementasinya, variabelPdanQ dapat digunakan kembali dalam perhitungan untuk mempercepat proses perhitun-gannya. Gambar 2.14 merupakan proses perhitungan perpotonganraydan segitiga dilihat secara geometri denganM= [−d,V1−V0,V2−V0].
2.4
Ray Tracing
Ray tracing merupakan suatu metode penggambaran dengan cara mensimu-lasikan perjalanan partikel cahaya dari sumber cahaya ke mata penglihat. Pada perkembangannya metode ray tracing kemudian sedikit berubah dari pengertian asalnya yaitu mensimulasikan perjalanan partikel cahaya dari mata penglihat ke sumber cahaya. Perubahan tersebut digunakan untuk mengefisienkan proses
perhi-Gambar 2.14: Proses perhitungan perpotonganray-segitiga secara geometri [MT97]
tungan dan pengertian tersebut hanya digunakan pada bidang keilmuan komputer grafik.Ray tracingdiperkenalkan pada makalah [Whi80] dan masih dilakukan den-gan bentuk-bentuk geometri yang sederhana seperti bidang datar dan bola.
Gambar 2.15 merupakan skema dasar dari ray tracing, dimana dalam per-jalanan partikel sinar dari mata penglihat ke sumber cahaya terdapat dua pros-es yang mensimulasikan sifat-sifat dari cahaya yaitu refraksi dan refleksi. Garis berwarna biru pada gambar 2.15 merupakan partikel sinar yang langsung menuju ke sumber cahaya sedangkan garis berwarna hijau dan biru merupakan partikel ca-haya yang melalui proses refleksi dan refraksi untuk dapat mencapai sumber caca-haya. Pengertian refleksi adalah pemantulan sinar oleh suatu medium tertentu sedangkan refraksi merupakan penyerapan cahaya pada medium yang berbeda. Jika suatu ap-likasi penggambaran tiga dimensi yang mengunakanray tracingtelah mempunyai fungsi untuk menghitung refraksi dan refleksi maka aplikasi tersebut dikatakan telah menerapkan teknik global illumination dalam pengambarannya. Pengertian glob-al illuminationberarti perhitungan pencahayaannya tidak hanya berasal hanya dari satu titik saja tetapi merupakan campuran cahaya dari titik tersebut dengan efek ca-haya yang ditimbulkan dari lingkungan di sekitarnya.
2.4.1 JenisRay Tracing
tesSimulasi partikel cahaya padaray tracing dapat dilakukan dengan dua cara berbeda, yaitu dengan menembakkanray dari sumber cahaya ke dalam scenedan berakhir pada mata penglihat (seperti yang terjadi di alam) atau dengan menem-bakkanray dari bidang gambar dan berakhir pada sumber cahaya. Walaupun ide dari kedua metode tersebut sama, tetapi kedua metode tersebut menghasilkan hasil
Gambar 2.15: Skemaray tracing
penggambaran yang berbeda, efisiensi yang berbeda, serta tingkat kesusahan imple-mentasi yang berbeda.
Forward Ray Tracing
Forward ray tracingmerupakan tiperay tracingdengan metode menembakkan ray dari sumber cahaya ke dalamscenedan berakhir pada mata penglihat. Forward ray tracing mensimulasikan ray sebagai partikel cahaya seperti pada dunia nya-ta sehingga dibutuhkan banyak sekali rayuntuk menghasilkan gambar yang baik. Gambar 2.16 merupakan ilustrasi metodeforward ray tracing. Pada gambar terse-but, terlihat bahwa tidak semuaray yang ditembakkan dan ditelusuri dari sumber cahaya sampai ke mata penglihat, pada gambarrayyang sampai ke mata penglihat berwarna biru sedangkanrayyang tidak sampai ke mata penglihat berwarna merah, sehingga pada hasil penggambarannya akan menghasilkan banyaknoiseyang san-gat mengganggu. Satu-satu penyelesaian untuk menghilangkannoisepada gambar hasil adalah dengan menembakkan ray lebih banyak lagi sampai noise tidak ter-lihat sehingga untuk mendapatkan hasil penggambaran yang baik dibutuhkan daya komputasi yang sangat tinggi. Kelebihan dariforward ray tracingadalah mendekati perumusan dari persamaanglobal illuminationdengan syaratrayyang ditembakkan dari sumber cahaya ke dalamscenesangat banyak.
Backward Ray Tracing
Backward ray tracing menggunakan analogi yang berkebalikan dengan for-ward ray tracing, yaitu dengan menembakkan ray dari mata penglihat ke bidang
Gambar 2.16:Forward ray tracing
gambar lalu masuk ke scene dan berakhir pada sumber cahaya. Backward ray tracingmenghasilkan gambar yang kurang lebih sama denganforward ray tracing tetapi mengefisienkan ray yang ditelusuri pada scene dan mengurangi daya kom-putasi untuk prosesnya. Kekurangan dari metode backward ray tracing adalah adanya efekaliasing yang menghasilkan gambar yang sedikit kabur. Efek alias-ingterjadi karena sampling setiap titik pada gambar hasil pada dasarnya merupakan suatu bidang besar yang terdiri dari gabungan beberapa sampling tetapi pada back-ward ray tracing hanya direpesentasikan oleh satu ray sehingga warna yang di-hasilkan tidak sesuai dengan kondisiscene. Pada metodebackward ray tracing, so-lusi untuk menghilangkan efekaliasingadalah dengan menggunakan metodesuper sampling dimana setiap titik pada gambar hasil tidak direpresentasikan sebagai satu raytetapi sebagai 9 ray yang berjarak seragam dan hasilnya merupakan rata-rata warna yang dihasilkan oleh kesembilanraytersebut sehingga menghasilkan perpin-dahan warna yang lebih halus. Gambar 2.17 merupakan ilustrasi penembakan ray pada satu titik pada gambar hasil dengan menggunakansupersampling.
2.4.2 Tahapan Proses PadaRay Tracing
Tahapan proses yang dilakukan pada ray tracing ada 5 buah yaitu persiapan scene, membangunprimary ray, menembakkan ray serta melakukan deteksi perpo-tongan ray dengan objek yang ada discene, membangunshadow, dan menentukan refleksi atau refraksiray. Algoritma 2.2 merupakan algoritma dasar untuk proses ray tracing.
Gambar 2.17:Super samplingpadabackward ray tracing8
PersiapanScene
Persiapan scene merupakan tahapan dimana program menginisialisasi semua struktur data dan memuat model atau scene ke dalam memori komputer untuk diproses lebih lanjut. Selain itu, program juga melakukan konfigurasi terhadap rameter kamera yang digunakan untuk penggambaran. Proses lain yang terjadi pa-da tahapan ini apa-dalah mengorganisasi pa-data objek ataupolygon padascene dengan struktur data tertentu seperti arraydan tree. Sebagian struktur data tersebut tidak hanya menyimpan pointer ke datapolygontetapi bisa menyimpan partisi-partisi dari sceneatau membuat objek-objek bayangan untuk meningkatkan efisiensi penggam-baran. Struktur data yang dapat meningkatkan efisiensi penggambaran disebut den-ganaccelerated structure(struktur pemercepat), contohaccelerated structureadalah kd-tree,uniform grid, BVH (Bounding Volume Hierarchy) danhybrid. Pada sub bab berikutnya akan dipaparkan salah satuaccelerated structureyang digunakan dalam tesis ini yaituuniform grid.
MembangunPrimary Ray
Tahapan pembangunanprimary raydilakukan untuk menentukanray-rayyang akan ditembakkan ke dalamscenedari mata penglihat untuk setiap titik pada bidang gambar. Primary ray dipengaruhi oleh beberapa faktor yaitu parameter kamera yang digunakan, resolusi bidang gambar yang digunakan, dan metode anti-aliasing yang digunakan bila menggunakan anti-aliasingdalam penggambarannya.
Algoritma 2.2Algoritmaray tracing[Hav00]
1>> Preparing scene
2>> Generating primary ray 3>> Shooting ray to the scene
>> Find the nearest intersection point in scene >> If not found fill color with background color
>> Calculating the direct lighting of the intersection point >> Check if point under shadow or not
>> Creating a reflection and refraction ray for next trace >> Go to step 3 and repeat the step
MenembakkanRay
Penembakan ray dilakukan untuk mencari titik perpotongan terdekat antara ray dengan objek yang ada pada scene. Metode pendeteksian apakah suatu ray berpo-tongan dengan suatu objek tergantung pada bentuk geometri objeknya. Sebagai contoh jika objek berupa segitiga maka dapat digunakan metode yang dipaparkan pada makalah [MT97] sedangkan jika objek berupa AABB maka dapat digunakan metode “slabs” yang dipaparkan pada makalah [KK86]. Proses penembakan ray dan pendeteksian perpotongan ray dengan objek pada scene merupakan tahapan yang paling banyak membutuhkan daya komputasi dibandingkan pada tahapan-tahapan yang lain, sebagai gambaran saja jika padasceneterdapat 10 ribu objek dan resolusi bidang gambar yang digunakan adalah 512 x 512 maka pendeteksian yang harus dilakukan adalah 10 ribu x 512 x 512 = 2.621.440.000 pendeteksian dengan asumsi bahwa tidak ada metode anti-aliasingdanaccelerated structureyang digu-nakan pada sistem.
Setelah mendapatkan titik perpotongan yang paling minimum dariraydan ob-jek yang ada padascene, maka proses selanjutnya adalah menghitungdirect light-ing sesuai dengan sumber cahaya yang didefinisikan. Direct lighting merupakan gabungan dariambient lighting,diffuse lighting, danspecular lighting.
MembangunShadow
Shadowmerupakan salah satu efek yang dapat diimplementasikan dengan mu-dah padaray tracing. Setelah melakukan menembakkanraydan pendeteksian per-potongan antararaydengan objek-objek padascene, tahapan selanjutnya yang bisa dilakukan adalah melakukan perhitunganshadow. Ada beberapa jenisshadow ter-gantung dari berapa sumber cahaya yang ada serta bentuk sumber cahaya yang digu-nakan (uniformatau non-uniform). Jika digunakan sumber cahaya berbentuk titik, hanya berjumlah satu buah, dan memancarkan cahaya secara uniform ke segala arah maka akan didapatkan efekhard shadowtetapi jika sumber cahaya lebih dari
Gambar 2.18:Shadow ray
satu atau bentuk dari sumber cahaya tidak berupa titik (memancarkan cahaya secara tidakuniform) maka akan terbentuk efeksoft shadow.
Penentuan apakah suatu titik perpotongan antararaydengan objek yang ada pa-dasceneberada pada daerahshadowatau tidak dengan menembakkan dan menelu-suriraytambahan yang dinamakanshadow rayke masing-masing sumber cahaya. Jikashadow raymenambrak suatu objek padascenemaka titik perpotongan antara raydengan objek padasceneyang telah didapatkan diawal berada pada daerah shad-owtetapi jikashadow rayberhasil mencapai sumber cahaya tanpa menabrak objek lain padascene maka titik perpotongan antara raydengan objek pada sceneyang telah didapatkan diawal tidak berada pada daerahshadow. Gambar 2.18 merupakan gambaran penembakan dan penelusuranshadow rayterhadap tiga sumber cahaya.
Membangun Refleksi dan RefraksiRay
Tahapan proses yang terakhir pada ray tracing adalah membuat refleksi dan re-fraksi ray dan setelah itu program akan melakukan penelusuran ulang sesuai dengan refleksi dan refraksi ray yang telah dibuat. Pembangunan refleksi dan refraksi ray adalah membuat hasil penggambaran menjadi lebih realistik tetapi yang perlu diin-gat adalah refleksi dan refraksi maksimum yang bisa dilakukan oleh ray dari titik
Gambar 2.19: Refleksi dan refraksiray
awal perpotongan antara ray dengan objek pada scene. Semakin banyak refleksi dan refraksi yang dilakukan maka hasil penggambaran akan semakin bagus tetapi akan membutuhkan daya komputasi yang lebih tinggi karena program harus melakukan penelusuran tambahan beberapa kali.
Gambar 2.19 merupakan ilustrasi pembentukan refleksi dan refraksi ray dari suaturayinput yang berpotongan dengan permukaan suatu objek padascene. Per-hitungan refleksirayadalah dengan menggunakan persamaan sebagai berikut
Rf=2N·cos(θ)−Rin (2.13)
dimanaRf adalah vektor arah dari refleksi ray yang dihasilkan, N adalah normal vektor pada permukaan objek,θ adalah sudutincident, danRinadalahinverse
vek-tor arah padaincident ray. Untuk perhitungan refraksiraydigunakan aturansnell untuk penurunannya dan menghasilkan persamaan sebagai berikut
Rfr= η(N·Rin)− q 1−η2(1−(N·Rin)) N−ηRin (2.14) dimanaRfradalah vektor arah dari refraksirayyang dihasilkan, sedangkanNdan
Rinsama seperti pada persamaan untuk perhitungan refleksi ray, dan η =η1/η2 dimanaη1 adalah refraksi index pada medium pada saat ray berpotongan dengan permukaan objek sedangkan η2 adalah refraksi index pada medium yang meng-hasilkan refraksiray.
Gambar 2.20: Strukturuniform grid
2.5 Struktur
Uniform Grid
Permasalahan utama pada metode ray tracing adalah kebutuhan komputasi yang sangat besar untuk dapat menggambar satu gambar dengan jumlah polygon yang banyak. Salah satu cara untuk mempercepat penggambaran adalah dengan menggunakan accelerated structure yang membagi scene menjadi kumpulan da-ta spasial. Salah satu accelerated structure yang banyak digunakan adalah uni-form grid. Gambar 2.20 merupakan gambaran struktur uniform grid yang digu-nakan. Uniform gridtelah dikembangkan dan dipublikasikan pada makalah [Chr05, IDC09, KS09, LD08]. Secara sederhana strukturuniform griddapat diumpamakan sebagai sebuah bidang koordinat baru dengan skala satu pixelnya adalah sama den-gan besar satucellpadauniform grid.
Perhitungan ray tracing dengan menggunakan struktur uniform grid memer-lukan dua tahapan dasar yaitu konstruksi strukturuniform griddantraversing struk-turuniform grid. Tahapan pertama diperlukan untuk membentuk struktur uniform grid sesuai dengan keadaan scene sedangkan tahapan kedua dilakukan pada saat penggambaran yaitu bagaimana program secara selektif melakukan perhitungan perpotongan antara garis perjalanan partikel cahaya denganpolygonyang ada pada scene.
2.5.1 ResolusiUniform Grid
Resolusi pada struktur uniform grid menjadi faktor yang cukup krusial un-tuk menenun-tukan kecepatan penggambaran. Hal tersebut dikarenakan jika struk-tur terlalu rapat atau terlalu renggang maka akan menghasilkan waktu
penggam-Gambar 2.21:Uniform grid traversal
baran yang lebih lama. Pada makalah [WIK+06] digunakan persamaan 2.15 untuk menentukan resolusi dari strukturuniform grid.
Nx=dx3 r kP V Ny=dy 3 r kP V Nz=dz 3 r kP V (2.15)
VariabelNx,Ny, danNz adalah resolusiuniform gridpada setiap axis. Variabel kadalah user konstanta yang bisa berubah sesuai dengan keinginan, nilaik menen-tukan apakah strukturuniform gridyang dihasilkan akan renggang atau rapat. Vari-abelPadalah jumlahpolygonpadascenesedangkan variabelV adalah volume dari scene. Terakhir, variabel dx, dy, dan dz adalah diagonal dari masing-masing axis padascene. Pada makalah [WIK+06], melalui beberapa percobaan maka diambil kesimpulan bahwa nilaikyang paling optimal adalah disekitar nilai 5.
2.5.2 KonstruksiUniform Grid
Setelah menentukan resolusi yang digunakan untuk pembentukan struktur uni-form grid, langkah berikutnya adalah memetakan seluruh polygonyang ada pada scene untuk dimasukkan padacell-cell yang ada pada uniform grid. Tahapan ini disebut dengan konstruksi struktur uniform grid serta menghasilkan struktur uni-form grid yang pada cell-cellnya tercatat index daripolygon-polygon yang berpo-tongan dengancell. Pada tahap ini digunakan metode pemetaan dari AABB sebuah polygonke koordinatuniform grid dengan titik (0,0,0) berada di koordinat paling minimum pada AABBscene.
2.5.3 Uniform Grid Traversal
Prosesuniform grid traversalmerupakan proses yang dilakukan pada saat peng-gambaran, yaitu melakukan perjalanan partikel cahaya (ray) dengan posisi koor-dinat voxel dari uniform grid. Proses traversal dilakukan dengan menggunakan metode 3D-DDA (3D Digital Differential Analyzer), yaitu suatu metode pemben-tukan garis pada suatu bidang koordinat. Pada makalah [AW87] diperkenal metode increment 3D-DDA, yaitu metode 3D-DDA dengan melakukan penambahan ter-hadap variabel tertentu untuk setiap tahapannya. Secara skematik dua dimensi, uniform grid traversal dapat digambarkan pada gambar 2.21. Algoritma traver-sal yang digunakan harus memproses semuacell dariuniform grid yang dilewati, dan ini sedikit berbeda dengan algoritma pembentukan garis biasa yang tidak mem-perhitungkan ketelitian setiap pixel yang dilewati.
Algoritma 3D-DDA yang diperkenalkan oleh [AW87] bisa disebut dengan al-goritma 3D-DDA dengan koneksi 6, yaitu alal-goritma 3D-DDA yang tidak menggu-nakan koordinat tengah daricelltetapi menggunakan koordinat yang asli dari garis tersebut sehingga tidak ada cell yang terlewatkan pada saat melakukan traversal. Algoritma 2.3 merupakan psedo code dari algoritma 3D-DDA. Pada psedu code tersebut variabelX,Y, danZadalah koordinatcelldariuniform gridsedangkan vari-abelstepX, stepY, danstepZ merupakan kenaikan setiap koordinatcell(nilai -1 atau 1 tergantung vektor arah pada ray). Variabel tMaxX, tMaxY, dan tMaxZ di-gunakan untuk menyimpan nilai t (nilai t digunakan sebagai media pembanding untuk memutuskan koordinat cell mana yang akan ditambah). Tiga variabel ter-akhir adalahtDeltaX, tDeltaY, dan tDeltaZdigunakan untuk penambahan nilai tpada masing-masing axis koordinat.
2.6 GPGPU
GPGPU adalah singkatan dari general purpose GPU yaitu dimana GPU di-gunakan sebagai media komputasi paralel. Perkembangan GPU sangat signifikan dengan kebutuhan kualitas penggambaran grafik padagamedan desain grafik. Pada awalnya, peneliti GPGPU menggunakan GPU shader untuk melakukan perhitun-gan tetapi seiring denperhitun-gan berkembangnya perangkat keras GPU (kartu grafik) maka muncul standar yang mengatur pemakaian GPU sebagai media komputasi paralel.
2.6.1 NVIDIA CUDA
NVIDIA CUDA adalah salah satu standar komputasi paralel pada GPU. CU-DA (Compute Unified Device Architecture) dikeluarkan oleh NVIDIA pada tahun
Algoritma 2.3Voxel traversal, diambil dari [AW87] list= NIL; do { if(tMaxX < tMaxY) { if(tMaxX < tMaxZ) { X=X+stepX;tMaxX=tMaxX+tDeltaX; if(X==justOutX)return(NIL); } else { Z=Z+stepZ;tMaxZ=tMaxZ+tDeltaZ; if(Z==justOutZ)return(NIL); } } else { if(tMaxY < tMaxZ) { Y=Y+stepY;tMaxY=tMaxY+tDeltaY; if(Y==justOutY)return(NIL); } else {
Z=Z+stepZ;tMaxZ=tMaxZ+tDeltaZ; if(Z == justOutZ)return(NIL); }
}
list= ObjectList[X][Y][Z]; } while(list == NIL);
return(list);
2007 dan banyak digunakan untuk penelitian-penelitian yang membutuhkan daya komputasi yang besar. Perkembangan kartu grafik / GPU sangat pesat dan men-galahkan perkembangan yang dicapai oleh CPU. Perbandingan perkembangan daya komputasi GPU dengan CPU dapat dilihat pada gambar 2.22.
Desain arsitektur perangkat keras GPU adalah multiprosessor SIMT (Single In-struction Multiple Thread) dengan menggunakan sejumlah SM (Stream Multipro-cessor). Pada manul [Nvi09a, Nvi09b] dijelaskan bahwa setiap SM akan bertang-gung jawab untuk mengeksekusi setiapblockdari instruksi yang dijalankan. Setiap SM akan mempunyai on-chip shared memory, 32-bit register, dan instruksi unit untuk menjalankan suatublock thread.
2.6.2 SIMT Programming
SIMT programming yang diperkenalkan oleh NVIDIA menggunakan beberapa istilah penting yaitukernel, block, grid, dan thread. Kernel merupakan kode pro-gram yang akan dijalankan secara paralel pada GPU.Block,grid, danthreadadalah manajemen yang digunakan untuk mengeksekusi suatu instruksi.Threadadalah in-struksi yang dikerjakan pada satu prosessor sedangkanblockadalah kumpulan dari threadyang dieksekusi secara bersama-sama. Resolusi dariblockbisa berupa satu dimensi atau dua dimensi. Grid adalah kumpulan dari block dan mempunyai reso-lusi yang bisa berupa satu dimensi maupun dua dimensi. Satublockakan dieksekusi oleh satu SM (pada standar lama 1 SM = 8 prosessor dan pada standar baru 1 SM = 16 prosessor) dan satugridakan dieksekusi di beberapa SM secara bersama-sama
Gambar 2.22: Operasifloating pointantara CPU dan GPU [Nvi09a]
Gambar 2.24: Hirarki memori pada CUDA [Nvi09a]
maupun bergantian. GPU mempunyaithread schedularyang berfungsi untuk men-gatur eksekusi yang dilakukan. Istilahthread, block, dangrid dapat divisualisasi secara sederhana pada gambar 2.23.
Mekanisme lain yang perlu diperhatikan adalah hirarki memori pada standar CUDA. Terdapat 3 jenis hirarki memori pada CUDA yaitu perthread local memo-ry, perblock shared memory, danglobal memory. Perthread local memoryadalah registeryang digunakan setiapthreaduntuk menampung nilai sementara pada per-hitungan dan scope aksesnya hanya pada satu thread. Per block shared memory digunakan untuk menampung sementara nilai yang akan diakses olehthread lain yang berada pada satu block dan scope aksesnya adalah semua thread yang ada pada satublock. Hirarki terakhir adalah global memory yaitu memori yang bera-da pabera-da GPU bera-dan bera-dapat diakses oleh seluruhthread yang sedang dieksekusi tanpa kecuali. Skema hirarki memori pada CUDA dapat dilihat pada gambar 2.24.
2.7
Parallel Random Access Machine
PRAM (Parallel Random Access Machine) merupakan metode perancangan al-goritma paralel yang digunakan untuk lingkunganmultiprocessoratau multithread-ing. Model PRAM menfokuskan pada permasalahan pengaksesan suatu resource secara bersama-sama dengan tidak memperhatikan permasalahan sinkronisasi dan
komunikasi antar proses paralel. Dengan kata lain, jika tidak dapat menghasilkan algoritma paralel yang baik pada model PRAM, maka tidak akan didapatkan algo-ritma paralel yang baik pada dunia nyata. Pemrosesan pada model PRAM dapat menyebabkan akses data yang dilakukan secara simultan oleh beberapa prosessor pada lokasi memori yang sama. Pada model PRAM dilihat dari aturan simultan akses sesuai dengan makalah [CP09] dapat dibedakan sebagai berikut.
1. Exclusive Read Exclusive Write (EREW): Pada model PRAM ini, tidak diperbolehkan untuk menulis atau membaca pada lokasi memori yang sama atau dapat dikatakan bahwa pada model PRAM ini dua atau lebih prosessor yang berbeda tidak akan mengakses, menulis dan membaca, lokasi memori yang sama.
2. Concurrent Read Exclusive Write (CREW): Pada model PRAM ini, dua atau lebih prosessor dapat membaca dari satu lokasi memori yang sama tetapi tidak boleh menulis pada lokasi memori yang sama.
3. Exclusive Read Concurrent Write (ERCW): Pada model PRAM ini, dua atau lebih prosessor tidak boleh membaca pada lokasi memori yang sama tetapi dapat menulis pada lokasi memori yang sama.
4. Concurrent Read Concurrent Write(CRCW): Pada model PRAM ini, dua atau lebih prosessor dapat menulis dan membaca pada lokasi memori yang sama. Terdapat beberapa jenis CRCW diantaranya adalah:
(a) CommonCRCW: Pada model ini, dua atau lebih prosessor dapat menulis pada lokasi memori yang sama jika data yang ditulis sama.
(b) Arbitary CRCW: Pada model ini, data yang dituliskan dipilih secara acak dari data yang dituliskan oleh prosessor pada lokasi memori yang sama.
(c) PriorityCRCW: Pada model ini, data yang dituliskan adalah data yang dituliskan oleh prosessor dengan prioritas yang paling tinggi.
(d) CombiningCRCW: Pada model ini, data yang akan dituliskan meru-pakan kombinasi perhitungan (biasanya menggunakan operator asisiatif dan mutatif, + atau max) dari seluruh data yang dituliskan prosessor pada lokasi memori yang sama.
2.7.1 Dasar Desain Algoritma Pada PRAM
Perancangan suatu algoritma dengan model PRAM, biasanya menggunakan paradigma WT (Work-Time) dimana pada WT, setiap tahapan proses dari algoritma dapat mengandung jumlah instruksi yang arbitari serta dilakukan secara simultan sehingga penjadwalan algoritma pada prosessor menjadi lebih mudah.
Terdapat dua kompleksitas yang diukur pada WT yaitu kompleksitas dari al-goritma dan kompleksitas dari setiap tahapan pada alal-goritma. Kompleksitas dari algoritma, dilambangkan denganW(n), adalah total operasi yang dilakukan untuk mengeksekusi algoritma sedangkan kompleksitas setiap tahapan algoritma, dilam-bangkan dengan S(n), adalah total tahapan yang dilakukan untuk mengeksekusi algoritma. JikaWi(n)adalah jumlah operasi yang dilakukan pada setiap proses par-alel maka, W(n) = S(n)
∑
i=1 Wi(n) (2.16)Beberapa metode perancangan algoritma pada PRAM model adalah dengan menggunakanbalanced treesdanpointer jumping. Pada sub bab ini akan dijelaskan kedua teknik perancangan tersebut.
Balanced Trees
Istilah balanced trees yang digunakan pada PRAM hanya berupa konseptual saja dan tidak berhubungan dengan struktur data tetapi lebih kepada aliran datanya. Metodebalanced treesdigunakan untuk merancang work-efficient algoritma pada kasus-kasus sepertiprefix sum, broadcast, dan perhitungan matrik. Gambar 2.25 merupakan salah satu contoh aliran data pada algoritma prefix sum yang bentuk aliran datanya mirip denganbalanced trees.
Pointer Jumping
Pointer jumping atau pointer doubling adalah metode pada PRAM yang digu-nakan untuk melakukan suatu proses komputasi pada struktur data linked list atau tree. Salah satu aplikasi dari pointer jumping adalah mencari jalan dari leaf ter-bawah ke root dari suatu struktur data tree.
2.7.2 Parallel Prefix Sum
Parallel prefix sumadalah suatu algoritma paralel yang digunakan untuk menam-bahkan isi dari seluruh komponenarraysatu dimensi. Aplikasi pengembangan dari prefix sum sangatlah banyak dan merupakan metode dasar yang biasa digunakan untuk merancang algoritma paralel yang lain.Prefix sum, biasa juga disebut dengan scan, mempunyai dua jenis variasi yaitu metode inclusive scandan metode exclu-sive scan. Inclusive scan merupakanprefix sumdimana setiap elemen pada index jakan ditambahkan dengan elemen pada index dibawahnya termasuk elemen pada
Gambar 2.25: Contoh aliran data pada PRAMbalanced trees[CP09]
Algoritma 2.4Algoritma paralel sederhana untuksum scan[SHG08]
for d := 1 to log2n do
forall k in parallel do
if k ≥ 2d then x[k] =x[k−2d−1] +x[k];
index j, sedangkan exclusive scan mempunyai pengertian yang sama dengan in-clusive scan tetapi elemen pada index j tidak ikut ditambahkan. Persamaan 2.17 merupakan persamaan dari metodeinclusive scan.
[a0,a1, . . . ,an−1]⇒[a0,(a0+a1), . . . ,(a0+a1+. . .+an−1)] (2.17)
Algoritma 2.4 merupakan algoritma sederhana dan tidak work-efficient untuk melakukanprefix sumpadaarray xdengan jumlah elemen ndan jumlah prosessor adalah k. Algoritma tersebut menganggap bahwa jumlah prosessor sama dengan jumlah elemen yang ada padaarray. Pada mesin yang mengolah data lebih banyak dari jumlah prosessor, maka akan terjadi kondisi race, yaitu kondisi dimana hasil perhitungan suatuthread ditimpa dengan hasil perhitunganthread yang lain, yang terjadi karena eksekusi paralel yang dilakukan tidak secara simultan. Untuk mengu-rangi jumlah prosessor yang dibutuhkan untuk melakukan perhitungan pada suatu array dengan besar n, buffer tambahan digunakan dalam algoritma. Penggunaan double buffermemang mengurangi jumlah prosessor yang dibutuhkan untuk suatu data array dengan jumlah elemen n, tetapi tidak menyelesaikan permasalahan
ji-Algoritma 2.5Prefix sumdengandouble buffer[SHG08] for d := 1 to log2n do forall k in parallel do if k ≥ 2d then x[out][k] =x[in][k−2d−1] +x[in][k] else x[out][k] =x[in][k] swap(in, out)
ka data array masukan sangat besar. Algoritma 2.5 merupakan pseudocode dari algoritmascandengan menggunakandouble buffer.
AlgoritmaScanYangWork-Efficient
Perancangan algoritmascanyangwork-efficientdiambil dari makalah [Ble90] dan dikembangkan pada makalah [HSO07]. Pada makalah tersebut digunakan bal-anced treesuntuk melakukan penambahan setiap elemen dariarray. Balanced trees yang dimaksud dari algoritma ini adalah aliran data untuk setiap proses dan bukan struktur datatree.Binary treeyang digunakan pada algoritma ini adalahbinary tree dengann leaf, mempunyai d=log2n level, dan setiap levelmempunyai 2d node. Terdapat dua tahapan dalam algoritma yang dijabarkan pada makalah [HSO07], yaitu tahapan up-sweep (tahapan ini diambil dari makalah [Ble90]) dan tahapan down-sweep.
Tahapan up-sweep merupakan tahapan untuk mencari nilai penambahan dari masing-masing elemen padaarraysecara parsial. Tahapanup-sweepdiilustrasikan pada gambar 2.26 dan implementasinya padapseudocode 2.6. Hasil dari tahapan ini adalah jumlah masing-masing parsial data (disimpan pada akhir elemen untuk setiap parsial data) dan hasil penambahan total (disimpan pada elemen terakhir pada array) seperti yang terlihat pada gambar 2.26. Tahapan selanjutnya adalah down -sweep, yaitu tahapan untuk mengisi seluruh nilai pada elemen lain yang bukan merupakan elemen terakhir dari parsial data dengan menggunakan hasil yang telah didapatkan pada tahapan sebelumnya. Ilustrasi dari tahapan down-sweepterdapat pada gambar 2.27 danpseudocodedari tahapan tersebut dapat dilihat pada algorit-ma 2.7. Tahapandown-sweepmerupakan tahapan traversal menurun untuk men-empatkan nilai-nilai penjumlahan yang tepat untuk setiap elemen padaarray.
Gambar 2.26: Tahapanup-sweeppada algoritmascan[HSO07]
Algoritma 2.6Up-sweep pseudocode[HSO07]
for d=0 to log2n−1 do
forall k=0 to n−1 by 2d+1 in parallel do
x[k+2d+11] =x[k+2d1] +x[k+2d+11]
Gambar 2.27: Tahapandown-sweeppada algoritmascan[HSO07]
Algoritma 2.7Down-sweep pseudocode[HSO07]
x[n−1] =0
for d=log2n−1 down to 0 do
forall k=0 to n−1 by 2d+1 in parallel do
t=x[k+2d−1]
x[k+2d−1] =x[k+2d+1−1]
BAB III
RANCANGAN SISTEM
Sistem penggambaran tiga dimensi yang dirancang, menggunakan metoderay tracinguntuk penggambarannya dan struktur datauniform griduntuk mempercepat proses perhitungannya. Gambar 3.1 merupakan flowchart sederhana dari sistem. Ada empat tahapan yang diimplementasikan pada sistem yaitu load model atau scene, konstruksi strukturuniform grid, inisialisasi kamera, danuniform grid traver-sal.
Permasalahan utama pada pemrograman SIMT pada pemrograman paralel den-gan menggunakan standar CUDA adalah kebutuhan memori yang harus tetap dan tidak bisa berubah pada saatkerneldieksekusi pada media. Metode umum yang di-gunakan untuk penggambaran dengan mengdi-gunakanray tracingdanuniform grid sebagaiaccelerated structure adalah dengan menggunakan STL vektor danlinked list. Pada pemrogram SIMT pada CUDA, STL maupunlinked list tidak bisa digu-nakan kerena memiliki memori yang tidak tetap sehingga diperlukan metode tam-bahan untuk mengimplementasikan sistem.
Tahapan pertama dan ketiga dilakukan dengan eksekusiserialpada CPU sedan-gkan tahapan kedua dan keempat dilakukan dengan eksekusi paralel padaplatform CUDA dan pada tahapan inilah pembahasan akan lebih mendetail pada sub bab berikutnya. Sebelum membahas permasalahan sistem, perlu dirancang suatu skema struktur data yangrobust dan mudah diakses secara random dan paralel. Rancan-gan struktur data nantinya akan menentukan kecepatan pembentukan struktur data itu sendiri dan prosesuniform grid traversal yang akan banyak mengambil infor-masi dari struktur data yang dibentuk.
3.1 Rancangan Struktur Data
Permasalahan utama yang ada pada strukturuniform gridadalah setiapcell pa-dauniform grid mungkin akan memotong lebih dari satupolygon sehingga diper-lukan struktur tambahan yang menghubungkan antara strukturuniform griddengan struktur datapolygon. Pada penelitian digunakan satu struktur tambahan yang dina-makantriangle offsetdan digunakan untuk menghubungkan antara strukturuniform griddengan strukturtriangle data(datapolygon).