Apa yang Perlu Dipelajari untuk Menjadi Programmer Grafis
(blog.demofox.org)- Kompetensi perekrutan untuk grafis real-time menuntut kombinasi API grafis eksplisit di sisi CPU dan pencahayaan serta shading di sisi GPU, dan sulit untuk mempelajari keduanya secara mendalam pada saat yang sama
- Sisi CPU mencakup API modern seperti DirectX12, Vulkan, dan Metal, serta pemuatan aset dan pekerjaan pendukung engine; sisi GPU mencakup bayangan, ambient occlusion, post-processing, dan karakteristik performa GPU
- Fokus pembelajaran GPU adalah menulis path tracer dan memahami PBR; Ray Tracing in One Weekend, LearnOpenGL PBR, dokumentasi Filament, dan PBRT bisa menjadi titik awal
- Portofolio yang ideal menunjukkan pengetahuan melalui renderer real-time berbasis C++, path tracer yang menghasilkan gambar fotorealistis, serta kode yang membandingkan dan memverifikasi hasil kedua rendering tersebut
- Matematika yang dibutuhkan terutama aljabar linear, trigonometri dasar, dan sedikit kalkulus; bahasa sisi CPU untuk pengembangan game adalah C++, dan bahasa shader yang paling umum adalah HLSL
Grafis real-time mencakup dua area: CPU dan GPU
- Rendering modern pada dasarnya lebih mirip gabungan dua jenis pekerjaan
- Pembelajaran sisi CPU: API eksplisit modern seperti DirectX12, Vulkan, dan Metal, serta pemrograman engine untuk pemuatan aset dan pekerjaan pendukung lainnya
- Pembelajaran sisi GPU: matematika pencahayaan dan shading modern, bayangan, ambient occlusion, efek post-processing, serta perbedaan antara pekerjaan yang cepat dan lambat di GPU
- Sangat sulit mempelajari kedua area ini secara bersamaan
- Jika ingin fokus pada sisi GPU, Anda bisa memakai alat dengan beban sisi CPU lebih rendah seperti OpenGL, WebGL, DirectX11, atau engine yang sudah ada
- Jika ingin fokus pada sisi CPU, mulailah dengan menampilkan segitiga di layar, lalu lanjutkan dengan menampilkan mesh, tanpa perlu terlalu memikirkan apakah hasilnya terlihat indah
Path tracing dan PBR
- Pembelajaran sisi GPU mencakup penulisan path tracer
- Path tracing adalah metode yang digunakan dalam rendering film, dan menjadi target yang berusaha didekati oleh teknik rendering real-time modern
- Sebagai materi awal, buku online gratis Ray Tracing in One Weekend cocok digunakan; materinya mudah didekati dan menunjukkan proses membuat rendering yang tampak seperti foto
- Physically Based Rendering(PBR) adalah cara penerapan pencahayaan, khususnya specular
- PBR adalah pendekatan berbasis prinsip: jika aturannya diikuti, hasilnya akan bagus
- Sebelum PBR, pencahayaan banyak menggunakan rumus, penyesuaian, dan hack yang arbitrer, sehingga aset yang terlihat bagus di satu lingkungan pencahayaan bisa terlihat terlalu gelap atau terlalu mengilap di lingkungan lain
- Akibatnya, perlu dibuat versi aset yang berbeda untuk tiap kondisi pencahayaan, yang memakan banyak waktu dan usaha
- PBR membuat aset tampak lebih konsisten di berbagai kondisi pencahayaan, serta mengurangi waktu dan usaha untuk membuat aset per versi
- Meski begitu, waktu, biaya, dan usaha pembuatan aset masih menjadi bottleneck besar dalam pengembangan game
Materi belajar yang direkomendasikan
- Untuk pengantar PBR, bagian PBR Theory dari LearnOpenGL beserta subbagiannya cocok digunakan
- Untuk masuk lebih dalam, dokumentasi Filament bisa menjadi langkah berikutnya
- Semakin mendalam mempelajari PBR, semakin banyak kalkulus dan statistik yang muncul
- Lebih jauh lagi, ada buku online gratis Physically Based Rendering: From Theory To Implementation
- Machine learning saat ini dipandang belum akan memberikan hasil sebesar hype-nya, tetapi tetap berharga untuk mempelajari teknik fitting dan optimisasi sebagai bagian dari perangkat ilmu komputer
- Sebagai materi terkait, Anda bisa merujuk video Machine Learning For Game Developers
Kode yang layak ditampilkan sebagai portofolio
- Untuk membuktikan pengetahuan kepada perekrut, idealnya sediakan source code yang bisa dibagikan di tempat seperti GitHub dan tautkan dari CV
- Contoh portofolio:
- Renderer bergaya engine yang memuat aset seperti model dan tekstur, lalu merendernya secara real-time di layar
- Mencakup beberapa efek seperti pencahayaan dan bayangan, depth of field, area lights, tone mapping, dan ray traced shadows
- Jika memungkinkan, gunakan pencahayaan berbasis PBR, kamera yang bisa dikendalikan pengguna, API seperti DX12 atau Vulkan, dan C++
- Path tracer yang menghasilkan gambar seperti foto
- Jika memungkinkan, C++ lebih baik, tetapi program tanpa jendela yang hanya menghasilkan PNG juga tidak masalah
- Tidak perlu berjalan real-time
- Akan lebih baik jika path tracer menjadi mode terpisah dari renderer bergaya engine
- Anda dapat membandingkan hasil path traced dengan rendering PBR real-time untuk memverifikasi akurasinya
- Jika Anda bisa menunjukkan titik di mana kedua rendering tidak cocok, menjelaskan alasannya, dan memikirkan cara membuatnya lebih mendekati sambil tetap mempertahankan real-time, nilainya akan lebih tinggi
- Renderer bergaya engine yang memuat aset seperti model dan tekstur, lalu merendernya secara real-time di layar
Matematika, algoritme, dan pilihan bahasa
- Jika mencoba langsung hal-hal di atas, Anda akan secara alami bertemu matematika yang dibutuhkan
- Pada dasarnya yang diperlukan adalah perkalian matriks dalam aljabar linear, cross product, dot product, trigonometri dasar, dan sedikit kalkulus
- Dalam grafis dan pengembangan game, kebutuhan minimum matematikanya relatif kecil, tetapi ruang lingkup matematika yang bisa dimanfaatkan pada dasarnya tidak terbatas
- Algoritme juga serupa
- Anda perlu memahami tipe data abstrak dan algoritme dasar seperti linked list, hash table, sorting, dan searching
- Algoritme tercepat sering kali sederhana, dan array jauh lebih cepat daripada linked list
- Konsep algoritme yang lebih lanjut akan membantu ketika benar-benar diperlukan sesuatu yang baru dan khusus
- Bahasa yang perlu dipelajari untuk pengembangan game adalah C++
- Ada orang yang memakai Rust dan ada sebagian pangsanya, tetapi itu bukan bahasa standar yang diharapkan orang
- WebGPU memiliki banyak fitur yang tidak ada di WebGL dan sedang menjadi platform yang lebih serius, serta memungkinkan pekerjaan sisi CPU dilakukan dengan JavaScript
- Namun, belum banyak terlihat lowongan WebGPU dan konten WebGPU di web
- Bahasa shader yang paling umum adalah HLSL
- Sebagian menggunakan GLSL
- Dalam game multiplatform, shader sering dikonversi ke bahasa shader lain
Ruang lingkup penggunaan LLM dan ML
- Teknologi ML saat ini dipandang belum cukup baik untuk sebagian besar penggunaan yang dijual kepadanya
- Claude berguna untuk membicarakan matematika, makalah, dan algoritme yang belum familier
- Dalam situasi seperti ini, lebih mudah memeriksa apakah ia mengarang, dan juga lebih mudah memeriksa validitasnya dengan sumber lain
- Untuk pemrograman, tidak terlalu berguna
- Bahkan jika menghasilkan kode yang berjalan sesuai keinginan, tetap perlu meluangkan waktu untuk memahami kode tersebut
- Jika begitu, lebih baik menulisnya sendiri
- Penggunaan kecil bisa berguna
- Misalnya, jika bertanya “apakah terlihat ada bug di file ini?”, saat jawabannya ya Anda bisa menyelidikinya, dan kalau jawabannya tidak biaya untuk bertanya hampir nol
- Diyakini bahwa suatu hari umat manusia akan membuat kecerdasan buatan setingkat manusia dan melampauinya, tetapi tidak diketahui apakah momen itu akan terjadi semasa hidup kita
- Era LLM saat ini lebih mirip latihan awal untuk saat ketika yang “sebenarnya” nanti hadir
1 komentar
Pendapat Hacker News
Pertama-tama harus dibedakan dulu apakah yang ingin dilakukan adalah membuat game, atau melakukan pemrograman engine 3D
Jika ingin membuat game, lebih baik memakai engine yang sudah ada seperti Unreal Engine, Unity, Godot, atau Bevy, dan yang dipelajari pun akan lebih ke persoalan grafis tingkat tinggi daripada cara mendorong piksel secara langsung. Bagian yang benar-benar sulit adalah membuatnya menjadi menyenangkan
Jika ingin membuat engine 3D, perlu disadari bahwa sudah terlalu banyak game engine buruk di luar sana. Bahkan di ekosistem Rust saja, proyek utamanya adalah 3 renderer yang gagal, 1 renderer yang belum selesai, dan renderer di dalam Bevy, sementara proyek dengan slogan “akan membuat game engine” jauh lebih banyak. Bahkan untuk mencapai level “renderer pertama” saja butuh sekitar 2 tahun, dan untuk sampai ke adegan yang besar, detail, dan dinamis, skalanya jauh lebih besar lagi
Jika tujuannya mencari kerja, industri game punya gaji dan jam kerja yang kurang baik, dan ketika proyek selesai, pekerjaannya juga sering ikut selesai, sementara seperti Hollywood, jumlah orang yang ingin masuk sangat banyak. Ditambah lagi, setelah runtuhnya Metaverse, sekarang bahkan tenaga berpengalaman pun berlebih
Mobile adalah pekerjaan kompresi serba terbatas: layar, daya komputasi, GPU, dan baterai semuanya kurang, jadi kebanyakan game indie belakangan ini adalah 2D. Itu yang paling memungkinkan, dan sering juga dibuat dengan HTML/JavaScript
Tetapi membuat renderer dasar dan game loop sebenarnya tidak sesulit itu, dan kemungkinan besar juga bukan menjadi mayoritas kode game. Untuk game sederhana, cukup dengan
forloop dandrawObject()saja pun bisa, dan kekhawatiran seperti streaming resource, optimasi binding, atau paralelisme bisa dipikirkan nanti saat memang diperlukanSaya penasaran titik awal dan syarat keberhasilan seperti apa yang diasumsikan oleh patokan “2 tahun sampai renderer pertama”. Sekitar setahun yang lalu, saya membuat deferred renderer dengan pencahayaan dinamis, shadow mapping, dan beberapa post-processing dalam waktu sekitar satu bulan waktu luang, atau bahkan kurang dari satu minggu jika dihitung sebagai kerja penuh waktu
Tidak ada alasan untuk memandang rendah 2D. Banyak pekerjaan serius justru dilakukan di antarmuka 2D, dan WebGL maupun canvas 2D lama pun sekarang cukup kuat. Banyak game indie yang sukses juga merupakan game 2D
Benar bahwa industri game kurang bagus, tetapi sekarang hampir semua hal memakai GPU. Menulis dan men-debug pekerjaan machine learning, visualisasi data, HUD, maupun antarmuka pengguna umum juga sering membutuhkan pemahaman grafis
Selain game, ada jauh lebih banyak bidang yang memakai grafis, seperti visualisasi dan simulasi, dan programmer grafis yang bagus sangat langka, jadi ini justru karier yang lumayan baik secara tak terduga. Ini cukup kontras dengan kesan bahwa jauh lebih sulit bagi game developer atau artis untuk mendapatkan pekerjaan yang bagus. Hanya saja, karena baik permintaan maupun pasokannya kecil, pindah kerja mungkin tidak semudah itu
Jika dilihat dari stabilitas karier semata, saya tidak ingin menyarankan pengembangan game sebagai karier, tetapi pemrograman grafis berbeda
Dalam beberapa tahun terakhir, game yang saya mainkan dengan masalah performa berat antara lain Core Keeper (Unity), WORMHOLE (Unity, terutama lag di mode tak terbatas), dan Crab Champions (UE4, harus memakai upscaling yang membuat tampilannya jelek agar tetap 60fps di 1920x1200)
Sebaliknya, Terraria, Necesse, dan Barony memakai engine buatan sendiri dan berjalan sangat baik, bahkan terasa makin bagus seiring usia
Agar adil, Tiny Rogues (Unity) setidaknya dalam ingatan saya kebanyakan berjalan baik, tetapi developernya sedang berupaya keluar dari Unity ke depannya, jadi tampaknya mereka sendiri juga menemukan masalah
Saya paham perbedaan antara membuat game dan membuat engine, serta pentingnya benar-benar menyelesaikan dan merilis sesuatu, tetapi kalau yang dirilis adalah sampah, sulit meninggalkan warisan yang baik. Menurut saya lebih baik mengambil jalan memutar sejauh apa pun asalkan kualitas pada tingkat tertentu bisa terjamin. Game kadang dimainkan sampai puluhan tahun setelah rilis, dan jika ada bug atau lag, orang-orang akan terus mengalaminya
“Saya akan membuat engine untuk game saya sendiri dulu agar game berikutnya lebih mudah dibuat” adalah jebakan yang luar biasa kuat. Soalnya kita benar-benar belajar hal penting dan mendapat kemenangan kecil setiap hari. Menambah satu unroll lagi agar adegan tampak mulus, menambah satu lapisan logika lagi pada format konfigurasi agar adegan lebih mudah dibuat, lalu membaca satu makalah SIGGRAPH lagi
Selalu ada hal penting yang bisa diperbaiki, tetapi semua itu tidak pernah benar-benar menyatu menjadi game yang selesai. Kalau dipikir-pikir, memakai engine buatan sendiri adalah cara sempurna bagi orang teknis untuk menunda bagian sulit namun perlu dari game impiannya, yaitu “membuatnya menyenangkan”. Kita memang belajar keterampilan untuk mengoding video game yang mengesankan, tetapi tidak belajar cara membuat game
Ada juga jebakan turunannya. Kita bisa belajar seratus cara membuat efek visual indah yang berjalan mulus secara real-time, tetapi tidak belajar cara memakainya sebagai seni
Ini juga sangat mirip dengan jebakan “Enterprise Java”. Hanya saja, karena berurusan dengan istilah yang konkret, jebakannya lebih licik. Kita mungkin merasa sudah lolos dari peluru itu karena Scene Graph tidak punya Factory Factory Interface, tetapi justru luput melihat bahwa untuk sekadar menampilkan bitmap di layar dan membuatnya merespons tombol, semua itu sebenarnya tidak perlu
Terutama di 2D, hal ini terasa benar. Misalnya saya sedang membuat game dengan engine buatan sendiri, dengan fokus pada performa dan kompresi, serta arsitektur tanpa server atau database
Engine ini memiliki struktur dan asumsi yang sangat spesifik tentang struktur game demi mencapai performa dan kompresi ekstrem di dalam batasan yang saya tetapkan. Saya berencana menulis posting Hacker News terkait ini sebentar lagi, semoga minggu depan
Sebelumnya saya juga beberapa kali mencoba membuat game browser dengan Unity, Godot, dan React, tetapi mempelajari API-nya terasa menyiksa, dan engine-engine itu tidak memenuhi batasan ekstrem yang saya butuhkan. Tentu saja mungkin itu juga karena saya kurang mahir memakainya, tetapi kalau melihat kembali, saya rasa apa yang berhasil saya capai secara internal memang mustahil tanpa engine kustom yang dibuat dari nol
Dengan membuat engine dan game sendiri, saya belajar sangat banyak, dan khususnya sekarang, berkat LLM, saya merasa bagi developer berpengalaman, membuat game engine yang benar-benar disesuaikan sendiri tiba-tiba menjadi sesuatu yang realistis untuk dijangkau oleh kebanyakan developer
Kalau sekarang, saya tidak akan merekomendasikan siapa pun untuk masuk ke pemrograman grafis
Saya mulai saat GeForce 1 pertama dari Nvidia, yang disebut “Gigatexel shader card”, diumumkan pada 2001, dan sejak itu kecepatan perkembangan serta inovasi di bidang ini benar-benar mencengangkan. Dibandingkan 25 tahun lalu, teknologi sekarang benar-benar luar biasa
Tapi ada satu “tetapi” besar dalam kekaguman itu. Bidang ini berkembang dengan kecepatan yang nyaris menakutkan. Nvidia bahkan sudah merilis efek berbasis AI yang memengaruhi adegan dan aset, dan dulu saya sama sekali tidak membayangkan hal seperti ini bisa dilakukan secara real-time
Sekarang saya bahkan tidak tahu apakah masih mungkin menjadi “ahli yang lumayan” di bidang ini. Dengan kata lain, pertanyaannya adalah “di mana John Carmack zaman sekarang?” Dia terkenal karena memeras kemampuan hardware sampai batasnya dan memakai ide-ide yang tersembunyi di komunitas, tetapi sekarang tampaknya tidak ada parit pertahanan kompetitif bagi orang seperti itu. Bidangnya terlalu luas dan berubah terlalu cepat, sehingga tidak ada kesempatan untuk menjadi Carmack berikutnya
Ada sudut pandang lain juga. Kalau sejauh ini Anda hanya pernah mengerjakan web app dan Kubernetes, justru bagus mencoba pemrograman grafis. Feedback loop-nya sangat memacu adrenalin, dan Anda jadi benar-benar merasakan betapa tidak masuk akalnya cepatnya komputer biasa. Pada akhirnya Anda mungkin tetap melakukan optimisasi yang sebenarnya tidak penting, tetapi itu tetap bernilai karena Anda belum pernah belajar seberapa cepat benda-benda bekerja di level rendah
Materinya juga banyak, dan matematikanya tidak terlalu sulit. Pemodelan 3D juga bisa menjadi jalur kreatif yang sebelumnya tidak Anda sadari. Meskipun sama sekali tidak terpakai di pekerjaan utama, Anda akan mengapresiasi kembali seni pemrograman komputer, dan mungkin memutuskan untuk tidak pernah menyentuh Kubernetes lagi lalu menghabiskan 5 tahun waktu luang untuk menulis game engine sendiri
Orang-orang segila itu cukup banyak, dan komunitas pengembang hobi yang belum habis digerus oleh pengembangan game profesional lebih besar daripada yang dibayangkan. Graphics Programming Discord juga ruang yang ramah dan layak dicek. Coba saja
Bagi orang yang tidak peduli benar-benar mengerjakan apa dan hanya ingin pindah karier, saran untuk menghindarinya mungkin benar. Tapi hidup dengan cara seperti itu bukanlah pendekatan yang baik. Lebih baik mengikuti hal yang menurut Anda menarik dan bernilai, terus belajar hal-hal baru, dan menantang diri sendiri. Dengan begitu, keputusan apakah Anda perlu belajar grafika komputer atau tidak akan menjadi relatif jelas, dan bagi orang yang cocok itu akan memberi manfaat bersih. Walaupun tidak menjadi profesi, keterampilannya sangat mudah ditransfer ke banyak bidang lain
Tidak apa-apa kalau Anda tidak seterkenal salah satu orang paling dikenal di suatu bidang; Anda juga boleh melakukannya hanya karena menyenangkan. Matematika dan seni dalam pemrograman grafis serta game itu indah dengan sendirinya
Alasan saya untuk menyarankan agar tidak masuk ke pemrograman grafis berbeda. Apakah engine 3D dengan vertex dan tekstur masih akan ada beberapa tahun lagi? Atau akankah semuanya dirender langsung oleh model dunia AI? Akan ada berapa banyak kode di dalam game, atau apakah game akan hadir sebagai rangkaian prompt yang ditulis dengan cerdik?
Jika Anda butuh tutorial singkat aljabar linear, Anda bisa melihat versi cetak 4 halaman yang saya tulis: https://minireference.com/static/tutorials/linear_algebra_in...
Ada juga notebook dengan contoh kode SymPy di sini: https://github.com/minireference/noBSLAnotebooks
Berkat visualisasinya, hal-hal yang dulu tidak saya pahami di kelas Linear 101 jadi langsung terasa masuk akal
Agak mengejutkan bahwa tidak ada pembahasan tentang memahami prinsip desain dasar atau karakteristik persepsi manusia
Kakak saya adalah production artist untuk game komputer terkenal pada era 90-an hingga 2000-an, dan dia terus mengeluhkan para programmer dan manajer yang tidak punya selera visual dan tidak punya rasa ingin tahu untuk memahami sisi artis
Grafis bukan keahlian saya, tetapi sebagai musisi, sound designer, dan produser, para coder audio DSP paling efektif dan paling berpengaruh yang saya kenal memahami dasar-dasar musik, fisika suara dan akustik, pemrosesan digital diskret, serta jebakan antara cara kita mempersepsikan dan menafsirkan rangsangan
Akan membantu jika programmer grafis punya pola pikir artistik, tetapi karena mereka biasanya bekerja di level yang cukup rendah, itu umumnya bukan syarat mutlak untuk sukses
AI mungkin sudah sedikit mengubah hitung-hitungan itu, atau setidaknya punya potensi untuk mengubahnya, tetapi saya rasa gelombang “ayo belajar coding” pada pertengahan 2000-an juga sebagian besar didorong alasan ini. Itu adalah gerakan untuk memperlakukan pengembangan software bukan sebagai “produk melainkan fitur” dari para pakar bidang yang sudah ada, sehingga orang-orang yang paling memahami domain bisa langsung membuat software sendiri alih-alih menerjemahkan kebutuhan kepada tim pengembang
Sejujurnya, pemrograman grafis pada umumnya lebih mirip peran layanan untuk memungkinkan apa yang ingin mereka lakukan, atau membantu mereka mewujudkan apa yang mereka bayangkan
Inigo Quilez sering disebut sebagai contoh orang yang sekaligus programmer grafis dan artis, dan dia memang sosok yang sangat kuat, nyaris seperti unicorn
Secara pribadi, saya lebih menyukai bermain musik dan pemrograman audio, dan itu menjadi dasar yang baik untuk mempelajari DSP. Misalnya, jika noise rendering didorong ke frekuensi tinggi, terkadang filter low-pass lebih efektif untuk menghilangkan noise
Jika Anda penasaran dan punya waktu, ini bagus untuk dipelajari. Benar-benar menyenangkan, Anda akan belajar banyak, dan itu juga membuat Anda menjadi engineer yang lebih baik di banyak bidang lain dalam ilmu komputer. Anda jadi memahami hardware, system programming, model mesin bagi programmer, dan sebagainya
Tapi jika tujuan akhir Anda adalah uang, lebih baik jangan mempelajarinya. Di zaman sekarang, imbalannya fana, sementara, dan tidak terjamin
Saya sudah lama tertarik pada pemrograman grafis dan mulai belajar Vulkan secara otodidak beberapa tahun lalu. Saya tidak tahu total berapa lama, tapi kira-kira enam bulan waktu luang di malam hari, mungkin sedikit kurang dari itu. Saya berhasil membuat sesuatu yang lebih mirip framework rendering
Tapi ini jenis pekerjaan yang semakin didalami, semakin sadar betapa banyak hal yang belum diketahui. Saat Anda merasa strukturnya sudah lumayan, Anda menemukan bahwa itu bukan arsitektur yang benar
Pada akhirnya, pekerjaan ini pada dasarnya adalah matematika pencahayaan terapan, dan sisanya adalah plumbing. Anda melihat “kenapa spotlight ini tidak menembus kubus begitu saja?” lalu sadar bahwa Anda harus menghitung bayangan, dan kemudian Anda menghabiskan beberapa minggu mendalami cara memasukkannya ke render pipeline. Tetap saja, kalau Anda menyukai hal seperti ini, ini cukup “menyenangkan”
Misalnya, bahkan untuk membuat bayangan pun Anda harus menulis kode 10 kali lebih banyak daripada yang secara esensial dibutuhkan oleh teknik itu sendiri
Kalau ingin belajar pemrograman grafis, menurut saya jauh lebih menyenangkan menulis software renderer. Kodenya lebih sedikit, dan kode yang Anda tulis menyentuh inti, bukan boilerplate. Kekurangannya, Anda kehilangan hardware acceleration sehingga menjadi lebih lambat
Kalau cuma ingin membuat game, gunakan saja game engine seperti Unity, Godot, atau Unreal
Kalau ingin mengerjakan grafis seperti engine, simulasi, atau renderer, Anda perlu mempelajari bahasa tingkat rendah dan graphics API. Untuk bahasa, saya merekomendasikan C++, dan C atau Rust juga bisa dipakai, tetapi C agak sulit, dan graphics API sendiri sudah sulit, jadi Anda mungkin tidak ingin juga harus bertarung dengan bahasanya. Rust juga bisa menjadi pilihan bagus, tetapi secara pribadi saya merasa waktu kompilasinya sangat lambat dan sintaksnya jelek
Untuk API, saya merekomendasikan OpenGL. Ini lintas platform, sudah tua, dan itu sekaligus kelebihan dan kekurangannya, serta yang paling mudah di antaranya
learnopengl.com sejauh ini adalah tutorial OpenGL terbaik, jadi saya sarankan untuk mengikutinya
Setelah memakai OpenGL selama beberapa waktu, Anda bisa meluas ke Vulkan atau library grafis yang mengimplementasikan beberapa API, dan kalau cocok, Anda juga bisa terus memakai OpenGL
Jelas ini tidak mudah, tetapi menurut saya ini salah satu bidang paling memikat dalam ilmu komputer
Agak canggung mengatakan ini sendiri, tapi komunitasnya juga keren. Web adalah cara yang bagus untuk belajar sambil membagikan apa yang Anda buat, mengumpulkan umpan balik, dan mendapatkan visibilitas. Di dalam komunitas juga ada banyak contoh orang yang akhirnya menekuni grafis 3D secara profesional
Kadang saya melihat kembali repositorinya dan malu karena kode saya saat itu benar-benar berantakan, tetapi rasanya tanpa proyek itu saya tidak akan berada di posisi saya sekarang
Mulailah dengan tag sederhana, tambahkan animasi, lalu kalau kurang tambahkan komponen komunitas. Kalau masih kurang, ubah dengan ThreeJS, dan Anda bahkan bisa sampai ke shader. A-Frame luar biasa
Selain itu, Anda juga bisa membuat AR dan VR
Daripada “menjadi programmer grafis”, bagaimana kalau sekadar melakukan pemrograman grafis? Coba mulai dari hal sederhana, lalu ketika mulai terasa masuk akal dan Anda melihat bahwa pada akhirnya ini adalah soal mengirim logistik ke GPU, Anda bisa menumpuk berbagai konsep rumit di atasnya
Rasanya seperti mendaki bukit kecil lalu tiba-tiba semuanya pas dan Anda berpikir “wah…”. Anda mulai melihat berbagai kemungkinan dan hal-hal untuk dieksperimenkan
Kalimat seperti “saya pemanjat tebing”, “saya gamer”, “saya seniman”, “saya ibu”, “saya ayah”, “saya penghuni tetap gym”, “saya programmer grafis” tidak selalu berarti profesi, tetapi menyiratkan sesuatu yang lebih dalam daripada keterlibatan ringan yang sekilas lewat
Hari ini saya belajar format gambar PPM, dan untuk kegunaan seperti ini format itu sangat mudah diakses. Menulis bitmap bukanlah ilmu roket yang luar biasa, tetapi PPM bahkan lebih mudah daripada itu