5 poin oleh GN⁺ 2024-07-29 | 1 komentar | Bagikan ke WhatsApp
  • Ringkasan proyek

    • Selama beberapa tahun, saya telah mengerjakan adegan dan level 3D yang berjalan di browser
    • Awalnya dimulai sebagai demo terpisah, tetapi secara bertahap berkembang menjadi proyek yang saling terhubung seperti game
    • Menggunakan teknik prosedural dan generatif untuk mengimplementasikan elemen tertentu
  • Shaders + Textures

    • Sebagian besar tekstur dirancang tanpa sambungan sehingga pola tidak terlihat bahkan di area yang luas
    • Membuat shader kustom di Three.JS untuk menyediakan fungsi tambahan
  • Triplanar Mapping

    • Dapat menerapkan tekstur ke mesh tanpa UV map, sehingga berguna untuk terrain yang dihasilkan secara prosedural
    • Dapat diimplementasikan dengan sederhana dan dapat diterapkan ke berbagai mesh
    • Menggunakan fungsi pow() untuk menyesuaikan bobot guna meningkatkan kualitas dan mengoptimalkan performa
  • Hex Tiling

    • Algoritme untuk menyembunyikan pengulangan tekstur tanpa sambungan
    • Di-porting sebagai pustaka mandiri yang dapat dengan mudah diintegrasikan ke proyek Three.JS
    • Memerlukan UV map dan memiliki overhead performa yang besar
  • Depth Pre-Pass

    • Merender adegan dua kali untuk mencatat kedalaman piksel demi meningkatkan performa
    • Dapat meningkatkan performa lebih dari 30% pada adegan dengan overdraw tinggi
  • AI-Powered PBR Texture Synthesis

    • Menggunakan tekstur yang dihasilkan AI untuk meningkatkan kualitas adegan
    • Menggunakan DeepBump dan Materialize untuk membuat peta PBR
  • Volumetric Fog/Clouds

    • Mengembangkan shader yang menambahkan awan atau kabut ke dalam adegan
    • Menggunakan lookup noise LoD untuk menambahkan berbagai fungsi
  • Meshes + Geometry

    • Meneliti teknik untuk membuat dan mengubah mesh saat runtime
    • Terutama menghasilkan dekorasi atau elemen latar belakang secara prosedural
  • LoD Terrain

    • Menghasilkan terrain menggunakan fungsi noise, dan menyesuaikan resolusi secara dinamis berdasarkan jarak ke kamera
  • Procedural Mesh Processing + Manipulation Pipeline

    • Membangun pipeline untuk menyubdivisi dan mengubah mesh low-poly secara prosedural
    • Penanganan normal membutuhkan banyak usaha
  • Future Work

    • Berencana menggunakan Constructive Solid Geometry(CSG) untuk menggabungkan atau memotong mesh
    • Menargetkan porting ke Rust untuk pemahaman yang lebih baik

Ringkasan GN⁺

  • Artikel ini memperkenalkan berbagai teknik dan alat yang berguna untuk pengembangan game prosedural
  • Teknik texturing seperti Triplanar Mapping dan Hex Tiling meningkatkan performa dan kualitas secara bersamaan
  • Pembuatan tekstur berbasis AI dan shader Volumetric Fog/Clouds meningkatkan realisme adegan
  • Pekerjaan mendatang seperti Constructive Solid Geometry memiliki potensi besar untuk transformasi mesh
  • Proyek dengan fungsi serupa mencakup Unity ProBuilder dan Houdini

1 komentar

 
GN⁺ 2024-07-29
Komentar Hacker News
  • Pernah mencoba procedural generation di masa lalu

    • Terutama mencobanya untuk membuat pohon yang keren
    • Merasa kurang ada cara yang mudah untuk menyambungkan geometri
    • Membuat dua silinder itu mudah, tetapi menghubungkannya sangat sulit
    • Secara teori CSG bisa mengisi celah ini, tetapi sulit karena harus dimodelkan dalam bentuk 3D
    • Pernah mencoba membuat rutinitas untuk menghubungkan dua loop, tetapi tidak berhasil dengan baik
    • Nantinya ingin membuat game dengan sistem procedural generation modular yang bisa bekerja secara spontan
  • Pembuatan terrain yang bagus tidaklah sederhana

    • Sulit baik pada skala dunia maupun dari sudut pandang setinggi mata
    • Pendekatan yang sederhana menghasilkan height map bergelombang yang hampir tidak mirip dunia nyata
    • Dwarf Fortress memulai dari midpoint displacement dasar lalu menambahkan banyak pengerjaan kustom
  • Ini tulisan yang sangat bagus tentang teknik prosedural di web

  • Memiliki pengalaman yang campur aduk saat menggunakan depth prepass

    • Saat mencobanya beberapa kali, saya tidak merasakan peningkatan performa yang besar pada GPU desktop kelas menengah hingga tinggi
    • Tidak yakin alasannya, tetapi mungkin karena early-Z rejection sudah menghemat pemanggilan pixel shader
    • Secara umum saya merender mesh opak dari depan ke belakang
    • Agar adil, eksperimen saya dilakukan dalam konteks aplikasi CAD/CAM, bukan game
    • Scene-nya memiliki tekstur minimal dan geometri poligon yang sangat tinggi, berbeda dari lingkungan game pada umumnya
  • Sebagai artis 3D, ini artikel yang sangat menarik

    • Artikel bagus tentang topik ini sangat jarang
    • Saya berencana mencoba Three.js