5 puan yazan GN⁺ 2024-07-29 | 1 yorum | WhatsApp'ta paylaş
  • Proje özeti

    • Birkaç yıldır tarayıcıda çalışan 3D sahneler ve seviyeler üzerinde çalışıyorum
    • Başlangıçta tekil demolar olarak başladı, ancak zamanla birbiriyle bağlantılı, oyunu andıran projelere dönüştü
    • Belirli öğeleri uygulamak için prosedürel ve üretici teknikler kullanıyorum
  • Shaders + Textures

    • Çoğu doku, geniş alanlarda bile desenler fark edilmesin diye dikişsiz olacak şekilde tasarlandı
    • Three.JS içinde ek işlevler sağlamak için özel shader'lar oluşturuyorum
  • Triplanar Mapping

    • UV map olmadan mesh'lere doku uygulanabilmesini sağlar; bu da prosedürel olarak üretilen araziler için kullanışlıdır
    • Basitçe uygulanabilir ve farklı mesh'lere uygulanabilir
    • pow() fonksiyonunu kullanarak ağırlıkları ayarlayıp kaliteyi artırıyor ve performansı optimize ediyorum
  • Hex Tiling

    • Dikişsiz dokuların tekrarını gizleyen bir algoritma
    • Three.JS projelerine kolayca entegre edilebilen bağımsız bir kütüphane olarak port ettim
    • UV map gerektirir ve performans yükü yüksektir
  • Depth Pre-Pass

    • Performansı artırmak için sahneyi iki kez render ederek piksellerin derinliğini kaydediyorum
    • Overdraw'un fazla olduğu sahnelerde performansı %30'dan fazla artırabilir
  • AI-Powered PBR Texture Synthesis

    • Yapay zeka ile üretilen dokuları kullanarak sahnenin kalitesini artırıyorum
    • PBR haritaları oluşturmak için DeepBump ve Materialize kullanıyorum
  • Volumetric Fog/Clouds

    • Sahneye bulut veya sis ekleyen shader'lar geliştirdim
    • Çeşitli özellikler eklemek için LoD noise lookup kullanıyorum
  • Meshes + Geometry

    • Çalışma anında mesh oluşturma ve dönüştürme tekniklerini araştırıyorum
    • Daha çok dekorasyon veya arka plan öğelerini prosedürel olarak üretiyorum
  • LoD Terrain

    • Noise fonksiyonlarıyla arazi üretiyor, kamera uzaklığına göre çözünürlüğü dinamik olarak ayarlıyorum
  • Procedural Mesh Processing + Manipulation Pipeline

    • Düşük poligonlu mesh'leri prosedürel olarak alt bölümlere ayıran ve dönüştüren bir işlem hattı kurdum
    • Normal işleme önemli ölçüde emek gerektiriyor
  • Future Work

    • Mesh'leri birleştirmek veya kesmek için Constructive Solid Geometry (CSG) kullanmayı planlıyorum
    • Daha iyi kavrayış kazanmak için Rust'a port etmeyi hedefliyorum

GN⁺ özeti

  • Bu yazı, prosedürel oyun geliştirmede faydalı olan çeşitli teknikleri ve araçları tanıtıyor
  • Triplanar Mapping ve Hex Tiling gibi kaplama teknikleriyle performans ve kalite aynı anda iyileştiriliyor
  • Yapay zeka destekli doku üretimi ve Volumetric Fog/Clouds shader'ları sahnenin gerçekçiliğini artırıyor
  • Constructive Solid Geometry gibi gelecekteki çalışmalar, mesh dönüşümü için büyük potansiyel taşıyor
  • Benzer özelliklere sahip projeler arasında Unity'nin ProBuilder'ı ve Houdini bulunuyor

1 yorum

 
GN⁺ 2024-07-29
Hacker News yorumu
  • Geçmişte prosedürel üretimi denemiştim

    • Özellikle havalı ağaçlar yapmak için uğraşmıştım
    • Geometriyi kolayca birleştirmenin iyi bir yolu eksik gibi gelmişti
    • İki silindir oluşturmak kolay, ama bunları birbirine bağlamak çok zor
    • Teorik olarak CSG bu boşluğu doldurabilir, ancak 3D biçimde modelleme gerektirdiği için zor
    • İki döngüyü birbirine bağlayan bir rutin yazmaya çalıştım, ama iyi çalışmadı
    • İleride modüler prosedürel üretim sisteminin kendiliğinden çalıştığı bir oyun yapmak istiyorum
  • İyi arazi üretimi basit değil

    • Hem dünya ölçeğinde hem de göz hizasında zor
    • Basit yaklaşımlar, gerçekliğe pek benzemeyen engebeli height map'ler üretiyor
    • Dwarf Fortress, temel midpoint displacement ile başlayıp üzerine çok sayıda özel işlem ekliyor
  • Web'deki prosedürel teknikler hakkında harika bir yazı

  • Depth prepass kullanımıyla ilgili karışık deneyimlerim oldu

    • Birkaç kez denediğimde, orta ve üst seviye masaüstü GPU'larda büyük bir performans artışı hissetmedim
    • Nedeninden emin değilim, ancak early Z rejection sayesinde pixel shader çağrılarının azalmasından kaynaklanıyor olabilir
    • Genellikle opak mesh'leri önden arkaya render ediyorum
    • Adil olmak gerekirse, deneylerim oyun değil CAD/CAM uygulamaları bağlamında yapıldı
    • Sahneler, tipik oyun ortamlarının aksine minimum doku ve çok yüksek poligonlu geometri içeriyordu
  • Bir 3D sanatçısı olarak çok ilginç bir makaleydi

    • Bu konuda iyi makaleler gerçekten çok nadir
    • Three.js denemeyi planlıyorum