5 पॉइंट द्वारा GN⁺ 2024-07-29 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • प्रोजेक्ट अवलोकन

    • कई वर्षों से ब्राउज़र में चलने वाले 3D scenes और levels पर काम कर रहा हूँ
    • शुरुआत में यह अलग-अलग demos के रूप में शुरू हुआ था, लेकिन धीरे-धीरे यह आपस में जुड़े game-जैसे projects में विकसित हुआ
    • कुछ खास elements को लागू करने के लिए procedural और generative techniques का उपयोग किया गया
  • Shaders + Textures

    • ज़्यादातर textures को seamless बनाया गया है ताकि बड़े क्षेत्रों में भी pattern दिखाई न दे
    • Three.JS में custom shaders बनाकर अतिरिक्त functionality दी गई
  • Triplanar Mapping

    • UV map के बिना mesh पर texture लागू किया जा सकता है, इसलिए यह procedural रूप से generated terrain के लिए उपयोगी है
    • इसे सरलता से implement किया जा सकता है और यह अलग-अलग meshes पर लागू हो सकता है
    • pow() function का उपयोग करके weights को समायोजित किया गया, जिससे quality बेहतर हुई और performance optimize हुई
  • Hex Tiling

    • seamless textures की repetition को छिपाने वाला algorithm
    • इसे एक standalone library के रूप में port किया गया, जिसे Three.JS projects में आसानी से integrate किया जा सकता है
    • इसके लिए UV map की आवश्यकता होती है, और performance overhead काफ़ी अधिक है
  • Depth Pre-Pass

    • performance सुधारने के लिए scene को दो बार render करके pixels की depth रिकॉर्ड की जाती है
    • अधिक overdraw वाले scenes में यह performance को 30% से अधिक तक सुधार सकता है
  • AI-Powered PBR Texture Synthesis

    • scene की quality बढ़ाने के लिए AI-generated textures का उपयोग किया गया
    • DeepBump और Materialize का उपयोग करके PBR maps बनाए गए
  • Volumetric Fog/Clouds

    • scene में clouds या fog जोड़ने वाले shaders विकसित किए गए
    • अलग-अलग features जोड़ने के लिए LoD noise lookup का उपयोग किया गया
  • Meshes + Geometry

    • runtime पर meshes को generate और deform करने की तकनीकों का अध्ययन किया गया
    • मुख्य रूप से decoration या background elements को procedural रूप से generate किया गया
  • LoD Terrain

    • noise functions का उपयोग करके terrain generate किया जाता है, और camera से दूरी के अनुसार resolution को dynamic रूप से adjust किया जाता है
  • Procedural Mesh Processing + Manipulation Pipeline

    • low-poly meshes को procedural रूप से subdivide और deform करने के लिए एक pipeline बनाई गई
    • normals को संभालने में काफ़ी मेहनत लगती है
  • Future Work

    • Constructive Solid Geometry(CSG) का उपयोग करके meshes को merge या cut करने की योजना है
    • बेहतर समझ के लिए इसे Rust में port करने का लक्ष्य है

GN⁺ का सारांश

  • यह लेख procedural game development के लिए उपयोगी विभिन्न techniques और tools का परिचय देता है
  • Triplanar Mapping और Hex Tiling जैसी texturing techniques के जरिए performance और quality दोनों में सुधार किया जाता है
  • AI-आधारित texture generation और Volumetric Fog/Clouds shaders scene की realism को बढ़ाते हैं
  • Constructive Solid Geometry जैसे future work में mesh deformation के लिए बड़ी संभावनाएँ हैं
  • समान functionality वाले projects में Unity का ProBuilder और Houdini शामिल हैं

1 टिप्पणियां

 
GN⁺ 2024-07-29
Hacker News राय
  • पहले procedural generation में हाथ आज़माने का अनुभव रहा है

    • खासकर शानदार पेड़ बनाने की कोशिश की थी
    • लगा कि geometry को आसानी से जोड़ने का तरीका कम है
    • दो cylinder बनाना आसान है, लेकिन उन्हें जोड़ना बहुत मुश्किल है
    • सैद्धांतिक रूप से CSG इस कमी को पूरा कर सकता है, लेकिन 3D shape में model करना पड़ता है, इसलिए यह कठिन है
    • दो loop को जोड़ने का routine बनाने की कोशिश की, लेकिन वह ठीक से काम नहीं किया
    • बाद में ऐसा गेम बनाना चाहता/चाहती हूँ जिसमें modular procedural generation system अपने-आप काम करे
  • अच्छा terrain generation आसान नहीं है

    • world scale पर भी मुश्किल है और eye level पर भी
    • साधारण approach ऐसा ऊबड़-खाबड़ height map बनाती है जो वास्तविकता से लगभग मेल नहीं खाता
    • Dwarf Fortress basic midpoint displacement से शुरू करके बहुत-सा custom काम करता है
  • वेब पर procedural techniques पर यह एक शानदार लेख है

  • depth prepass के इस्तेमाल को लेकर मिला-जुला अनुभव रहा है

    • कुछ बार आज़माने पर mid-range से high-end desktop GPU पर performance improvement खास महसूस नहीं हुआ
    • वजह पक्की नहीं है, लेकिन शायद early Z rejection की वजह से pixel shader invocation बच गए हों
    • आम तौर पर opaque mesh को front-to-back render करता/करती हूँ
    • निष्पक्ष रूप से कहूँ तो, मेरे प्रयोग game नहीं बल्कि CAD/CAM application के संदर्भ में थे
    • scene में सामान्य game environment के विपरीत बहुत कम texture और बहुत high-polygon geometry थी
  • 3D artist के तौर पर यह लेख बहुत दिलचस्प लगा

    • इस विषय पर अच्छे लेख बहुत कम मिलते हैं
    • Three.js को आज़माने का इरादा है